From 36a771c7f1565e0fda3e4986b8b8c478e5d3c1b5 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 6 Mar 2009 12:46:30 -0800 Subject: [PATCH] Fix calibre.app to work correctly even when it is moved into a path that has spaces in it --- installer/osx/freeze.py | 5 +++-- src/calibre/ebooks/mobi/reader.py | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/installer/osx/freeze.py b/installer/osx/freeze.py index dbaad72748..ff1684bb04 100644 --- a/installer/osx/freeze.py +++ b/installer/osx/freeze.py @@ -34,8 +34,8 @@ python = os.path.join(base_dir, 'MacOS', 'python') loader_path = os.path.join(dirpath, base_name+'.py') loader = open(loader_path, 'w') site_packages = glob.glob(resources_dir+'/lib/python*/site-packages.zip')[0] -print >>loader, '#!'+python print >>loader, 'import sys' +print >>loader, 'sys.argv[0] =', repr(os.path.basename(path)) print >>loader, 'if', repr(dirpath), 'in sys.path: sys.path.remove(', repr(dirpath), ')' print >>loader, 'sys.path.append(', repr(site_packages), ')' print >>loader, 'sys.frozen = "macosx_app"' @@ -49,7 +49,8 @@ os.environ['PYTHONHOME'] = resources_dir os.environ['FC_CONFIG_DIR'] = os.path.join(resources_dir, 'fonts') os.environ['MAGICK_HOME'] = os.path.join(frameworks_dir, 'ImageMagick') os.environ['DYLD_LIBRARY_PATH'] = os.path.join(frameworks_dir, 'ImageMagick', 'lib') -os.execv(loader_path, sys.argv) +args = [path, loader_path] + sys.argv[1:] +os.execv(python, args) ''' CHECK_SYMLINKS_PRESCRIPT = \ r''' diff --git a/src/calibre/ebooks/mobi/reader.py b/src/calibre/ebooks/mobi/reader.py index 8898798c34..2c80cc1c8c 100644 --- a/src/calibre/ebooks/mobi/reader.py +++ b/src/calibre/ebooks/mobi/reader.py @@ -140,6 +140,8 @@ class MobiReader(object): def __init__(self, filename_or_stream, verbose=False): self.verbose = verbose + self.embedded_mi = None + if hasattr(filename_or_stream, 'read'): stream = filename_or_stream stream.seek(0) @@ -216,7 +218,6 @@ class MobiReader(object): guides = root.xpath('//guide') guide = guides[0] if guides else None metadata_elems = root.xpath('//metadata') - self.embedded_mi = None if metadata_elems and self.book_header.exth is None: self.read_embedded_metadata(root, metadata_elems[0], guide) for elem in guides + metadata_elems: