From c8438cc296daf331d5d868c49b1610e27cde4a36 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 9 Jul 2010 10:45:07 -0600 Subject: [PATCH] EPUB Input: Fix bug in unzipping EPUB files that have been zipped in depth first order. Fixes #6127 (Cannot open or convert News Feed "books" - problems with path in Windows) --- src/calibre/devices/kindle/driver.py | 5 ++++- src/calibre/utils/zipfile.py | 9 +++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/calibre/devices/kindle/driver.py b/src/calibre/devices/kindle/driver.py index c3e7bb190d..98e16bd207 100644 --- a/src/calibre/devices/kindle/driver.py +++ b/src/calibre/devices/kindle/driver.py @@ -213,7 +213,7 @@ class KINDLE_DX(KINDLE2): PRODUCT_ID = [0x0003] BCD = [0x0100] -class Bookmark(): +class Bookmark(): # {{{ ''' A simple class fetching bookmark data Kindle-specific @@ -517,3 +517,6 @@ class Bookmark(): else: print "unsupported bookmark_extension: %s" % self.bookmark_extension + +# }}} + diff --git a/src/calibre/utils/zipfile.py b/src/calibre/utils/zipfile.py index 71eccc7543..50d621a986 100644 --- a/src/calibre/utils/zipfile.py +++ b/src/calibre/utils/zipfile.py @@ -1071,8 +1071,13 @@ class ZipFile: # Create all upper directories if necessary. upperdirs = os.path.dirname(targetpath) - if upperdirs and os.path.exists(upperdirs) and not os.path.isdir(upperdirs): - os.unlink(upperdirs) + while upperdirs: + if os.path.exists(upperdirs): + if os.path.isdir(upperdirs): + break + os.remove(upperdirs) + upperdirs = os.path.dirname(upperdirs) + upperdirs = os.path.dirname(targetpath) if upperdirs and not os.path.exists(upperdirs): os.makedirs(upperdirs)