From 08327a14ce1bcbc1cd4dd8650f5bbacb4e137b2e Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 3 Jun 2009 16:27:32 -0700 Subject: [PATCH 1/2] Fix the BeBook driver to work with the new linux device detection code --- src/calibre/devices/bebook/driver.py | 8 ++++++++ src/calibre/devices/prs500/cli/main.py | 2 +- src/calibre/devices/usbms/device.py | 9 +++++++-- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/calibre/devices/bebook/driver.py b/src/calibre/devices/bebook/driver.py index b6655d37ec..32d7554c5d 100644 --- a/src/calibre/devices/bebook/driver.py +++ b/src/calibre/devices/bebook/driver.py @@ -43,6 +43,14 @@ class BEBOOK(USBMS): return drives + def linux_swap_drives(self, drives): + if len(drives) < 2: return drives + drives = list(drives) + t = drives[0] + drives[0] = drives[1] + drives[1] = t + return tuple(drives) + class BEBOOK_MINI(BEBOOK): name = 'BeBook Mini driver' diff --git a/src/calibre/devices/prs500/cli/main.py b/src/calibre/devices/prs500/cli/main.py index 53431f69af..74529c6d58 100755 --- a/src/calibre/devices/prs500/cli/main.py +++ b/src/calibre/devices/prs500/cli/main.py @@ -217,7 +217,7 @@ def main(): if command == "df": total = dev.total_space(end_session=False) free = dev.free_space() - where = ("Memory", "Stick", "Card") + where = ("Memory", "Card A", "Card B") print "Filesystem\tSize \tUsed \tAvail \tUse%" for i in range(3): print "%-10s\t%s\t%s\t%s\t%s"%(where[i], human_readable(total[i]), human_readable(total[i]-free[i]), human_readable(free[i]),\ diff --git a/src/calibre/devices/usbms/device.py b/src/calibre/devices/usbms/device.py index 4ae8ecdd8a..510de94603 100644 --- a/src/calibre/devices/usbms/device.py +++ b/src/calibre/devices/usbms/device.py @@ -1,5 +1,6 @@ __license__ = 'GPL v3' -__copyright__ = '2009, John Schember ' +__copyright__ = '''2009, John Schember + and Kovid Goyal ''' ''' Generic device driver. This is not a complete stand alone driver. It is intended to be subclassed with the relevant parts implemented for a particular @@ -367,7 +368,11 @@ class Device(DeviceConfig, DevicePlugin): if ok[node]: devnodes.append(node) devnodes += list(repeat(None, 3)) - return tuple(['/dev/'+x if ok.get(x, False) else None for x in devnodes[:3]]) + ans = tuple(['/dev/'+x if ok.get(x, False) else None for x in devnodes[:3]]) + return self.linux_swap_drives(ans) + + def linux_swap_drives(self, drives): + return drives def node_mountpoint(self, node): for line in open('/proc/mounts').readlines(): From af73248fabd90906ff6cde95e0e68acd73b26fd8 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 3 Jun 2009 17:14:01 -0700 Subject: [PATCH 2/2] Handle octal escaping in parsing /proc/mounts --- src/calibre/devices/usbms/device.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/calibre/devices/usbms/device.py b/src/calibre/devices/usbms/device.py index 510de94603..f8136c307e 100644 --- a/src/calibre/devices/usbms/device.py +++ b/src/calibre/devices/usbms/device.py @@ -375,10 +375,14 @@ class Device(DeviceConfig, DevicePlugin): return drives def node_mountpoint(self, node): + + def de_octal(raw): + return re.sub(r'\\0\d+', lambda m: chr(int(m.group()[1:], 8)), raw) + for line in open('/proc/mounts').readlines(): line = line.split() if line[0] == node: - return line[1] + return de_octal(line[1]) return None def find_largest_partition(self, path):