Device sync: Only fail if we can determine free disk space (bug 2052)

This commit is contained in:
Thomas Perl 2015-12-16 09:33:21 +01:00
parent db7d9bc925
commit 169102de09
3 changed files with 11 additions and 5 deletions

View File

@ -179,7 +179,7 @@ class Exporter(object):
FREE_DISK_SPACE_AFTER = 1024*512
path = os.path.dirname(self.filename) or os.path.curdir
available = util.get_free_disk_space(path)
if available < 2*len(data)+FREE_DISK_SPACE_AFTER:
if available != -1 and available < 2*len(data)+FREE_DISK_SPACE_AFTER:
# On Windows, if we have zero bytes available, assume that we have
# not had the win32file module available + assume enough free space
if not gpodder.ui.win32 or available > 0:

View File

@ -281,7 +281,11 @@ class iPodDevice(Device):
def get_free_space(self):
# Reserve 10 MiB for iTunesDB writing (to be on the safe side)
RESERVED_FOR_ITDB = 1024*1024*10
return util.get_free_disk_space(self.mountpoint) - RESERVED_FOR_ITDB
result = util.get_free_disk_space(self.mountpoint)
if result == -1:
# Can't get free disk space
return -1
return result - RESERVED_FOR_ITDB
def open(self):
Device.open(self)
@ -565,7 +569,9 @@ class MP3PlayerDevice(Device):
# verify free space
needed = util.calculate_size(from_file)
free = self.get_free_space()
if needed > free:
if free == -1:
logger.warn('Cannot determine free disk space on device')
elif needed > free:
d = {'path': self.destination, 'free': util.format_filesize(free), 'need': util.format_filesize(needed)}
message =_('Not enough space in %(path)s: %(free)s available, but need at least %(need)s')
raise SyncFailedException(message % d)

View File

@ -453,7 +453,7 @@ def get_free_disk_space_win32(path):
"""
if win32file is None:
# Cannot determine free disk space
return 0
return -1
drive, tail = os.path.splitdrive(path)
userFree, userTotal, freeOnDisk = win32file.GetDiskFreeSpaceEx(drive)
@ -470,7 +470,7 @@ def get_free_disk_space(path):
"""
if not os.path.exists(path):
return 0
return -1
if gpodder.ui.win32:
return get_free_disk_space_win32(path)