From 85f21f629c918764ceb5635e39adbc2250c10fab Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 5 Jun 2010 16:27:31 -0600 Subject: [PATCH] Fix SONY driver in linux --- src/calibre/devices/prs505/driver.py | 37 ++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/src/calibre/devices/prs505/driver.py b/src/calibre/devices/prs505/driver.py index bd06d2d7e1..6f8f9de6df 100644 --- a/src/calibre/devices/prs505/driver.py +++ b/src/calibre/devices/prs505/driver.py @@ -6,8 +6,7 @@ __docformat__ = 'restructuredtext en' Device driver for the SONY devices ''' -import os -import re +import os, time, re from calibre.devices.usbms.driver import USBMS from calibre.devices.prs505 import MEDIA_XML @@ -66,6 +65,40 @@ class PRS505(USBMS): def windows_filter_pnp_id(self, pnp_id): return '_LAUNCHER' in pnp_id + def open(self): + self.report_progress = lambda x, y: x + USBMS.open(self) + + def write_cache(prefix): + try: + cachep = os.path.join(prefix, *(self.CACHE_XML.split('/'))) + if not os.path.exists(cachep): + dname = os.path.dirname(cachep) + if not os.path.exists(dname): + try: + os.makedirs(dname, mode=0777) + except: + time.sleep(5) + os.makedirs(dname, mode=0777) + with open(cachep, 'wb') as f: + f.write(u''' + + + '''.encode('utf8')) + return True + except: + import traceback + traceback.print_exc() + return False + + if self._card_a_prefix is not None: + if not write_cache(self._card_a_prefix): + self._card_a_prefix = None + if self._card_b_prefix is not None: + if not write_cache(self._card_b_prefix): + self._card_b_prefix = None + + def get_device_information(self, end_session=True): return (self.gui_name, '', '', '')