diff --git a/src/calibre/devices/cybookg3/driver.py b/src/calibre/devices/cybookg3/driver.py index d367a23fc4..ed0891f256 100644 --- a/src/calibre/devices/cybookg3/driver.py +++ b/src/calibre/devices/cybookg3/driver.py @@ -7,9 +7,8 @@ Device driver for Bookeen's Cybook Gen 3 import os, fnmatch from calibre.devices.usbms.driver import USBMS -from calibre.devices.usbms.cli import CLI -class CYBOOKG3(USBMS, CLI): +class CYBOOKG3(USBMS): MIME_MAP = { 'mobi' : 'application/mobi', 'prc' : 'application/prc', @@ -28,6 +27,9 @@ class CYBOOKG3(USBMS, CLI): VENDOR_NAME = 'BOOKEEN' PRODUCT_NAME = 'CYBOOK_GEN3' + OSX_NAME_MAIN_MEM = 'Bookeen Cybook Gen3 -FD Media' + OSX_NAME_CARD_MEM = 'Bookeen Cybook Gen3 -SD Media' + MAIN_MEMORY_VOLUME_LABEL = 'Cybook Gen 3 Main Memory' STORAGE_CARD_VOLUME_LABEL = 'Cybook Gen 3 Storage Card' diff --git a/src/calibre/devices/kindle/driver.py b/src/calibre/devices/kindle/driver.py index 29152c4186..06c3b1cf27 100755 --- a/src/calibre/devices/kindle/driver.py +++ b/src/calibre/devices/kindle/driver.py @@ -7,9 +7,8 @@ Device driver for Amazon's Kindle import os, fnmatch from calibre.devices.usbms.driver import USBMS -from calibre.devices.usbms.cli import CLI -class KINDLE(USBMS, CLI): +class KINDLE(USBMS): MIME_MAP = { 'azw' : 'application/azw', 'mobi' : 'application/mobi', diff --git a/src/calibre/devices/usbms/cli.py b/src/calibre/devices/usbms/cli.py deleted file mode 100644 index 35a3a84824..0000000000 --- a/src/calibre/devices/usbms/cli.py +++ /dev/null @@ -1,16 +0,0 @@ -__license__ = 'GPL v3' -__copyright__ = '2009, John Schember 1: - self._card_prefix = drives[1][1] - - def open_osx(self): - raise NotImplementedError() + self._card_prefix = drives[1][1] + @classmethod + def get_osx_mountpoints(cls, raw=None): + if raw is None: + ioreg = '/usr/sbin/ioreg' + if not os.access(ioreg, os.X_OK): + ioreg = 'ioreg' + raw = subprocess.Popen((ioreg+' -w 0 -S -c IOMedia').split(), stdout=subprocess.PIPE).stdout.read() + lines = raw.splitlines() + names = {} + + def get_dev_node(lines, loc): + for line in lines: + line = line.strip() + if line.endswith('}'): + break + match = re.search(r'"BSD Name"\s+=\s+"(.*?)"', line) + if match is not None: + names[loc] = match.group(1) + break + + for i, line in enumerate(lines): + if line.strip().endswith('') and OSX_NAME_MAIN_MEM in line: + get_dev_node(lines[i+1:], 'main') + if line.strip().endswith('') and OSX_NAME_CARD_MEM in line: + get_dev_node(lines[i+1:], 'card') + if len(names.keys()) == 2: + break + return names + + def open_osx(self): + mount = subprocess.Popen('mount', shell=True, stdout=subprocess.PIPE).stdout.read() + names = self.get_osx_mountpoints() + dev_pat = r'/dev/%s(\w*)\s+on\s+([^\(]+)\s+' + if 'main' not in names.keys(): + raise DeviceError(_('Unable to detect the %s disk drive. Try rebooting.')%self.__class__.__name__) + main_pat = dev_pat%names['main'] + self._main_prefix = re.search(main_pat, mount).group(2) + os.sep + card_pat = names['card'] if 'card' in names.keys() else None + if card_pat is not None: + card_pat = dev_pat%card_pat + self._card_prefix = re.search(card_pat, mount).group(2) + os.sep + def open_linux(self): import dbus bus = dbus.SystemBus() diff --git a/src/calibre/devices/usbms/driver.py b/src/calibre/devices/usbms/driver.py index a91ce10425..733ce76ae7 100644 --- a/src/calibre/devices/usbms/driver.py +++ b/src/calibre/devices/usbms/driver.py @@ -16,6 +16,7 @@ from calibre.devices.errors import FreeSpaceError class USBMS(Device): EBOOK_DIR = '' MIME_MAP = {} + FORMATS = [] def __init__(self, key='-1', log_packets=False, report_progress=None): pass @@ -141,3 +142,5 @@ class USBMS(Device): return book_title, book_author, book_mime +# ls, rm, cp, mkdir, touch, cat +