about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPaweł Jastrzębski <pawelj@vulturis.eu>2013-10-08 17:30:47 +0200
committerPaweł Jastrzębski <pawelj@vulturis.eu>2013-10-08 17:30:47 +0200
commit1d0498fdceb7f8e762c5935ebac9621e9d2a62b6 (patch)
treec0fc891cabd4e10b93ffaeae2e463e2e08d2070a
parentMerge remote-tracking branch 'origin/master' (diff)
downloadkcc-1d0498fdceb7f8e762c5935ebac9621e9d2a62b6.tar.gz
kcc-1d0498fdceb7f8e762c5935ebac9621e9d2a62b6.tar.bz2
kcc-1d0498fdceb7f8e762c5935ebac9621e9d2a62b6.zip
Fix for fix for access denied errors
-rwxr-xr-xkcc/comic2ebook.py24
-rw-r--r--kcc/comic2panel.py15
2 files changed, 11 insertions, 28 deletions
diff --git a/kcc/comic2ebook.py b/kcc/comic2ebook.py
index 408b470..deb4be8 100755
--- a/kcc/comic2ebook.py
+++ b/kcc/comic2ebook.py
@@ -332,7 +332,7 @@ def dirImgProcess(path):
                     pass
                 if not GUI.conversionAlive:
                     pool.terminate()
-                    rmtree(os.path.join(path, '..', '..'), onerror=fixReadOnly)
+                    rmtree(os.path.join(path, '..', '..'), True)
                     raise UserWarning("Conversion interrupted.")
                 GUI.emit(QtCore.SIGNAL("progressBarTick"))
         pool.join()
@@ -340,7 +340,7 @@ def dirImgProcess(path):
         try:
             splitpages = splitpages.get()
         except:
-            rmtree(os.path.join(path, '..', '..'), onerror=fixReadOnly)
+            rmtree(os.path.join(path, '..', '..'), True)
             raise RuntimeError("One of workers crashed. Cause: " + str(sys.exc_info()[1]))
         splitpages = filter(None, splitpages)
         splitpages.sort()
@@ -349,7 +349,7 @@ def dirImgProcess(path):
                 pagenumbermodifier += 1
             pagenumbermodifier += 1
     else:
-        rmtree(os.path.join(path, '..', '..'), onerror=fixReadOnly)
+        rmtree(os.path.join(path, '..', '..'), True)
         raise UserWarning("Source directory is empty.")
 
 
@@ -557,13 +557,13 @@ def getWorkFolder(afile):
             sanitizeTreeBeforeConversion(fullPath)
             return workdir
         except OSError:
-            rmtree(workdir, onerror=fixReadOnly)
+            rmtree(workdir, True)
             raise
     elif afile.lower().endswith('.pdf'):
         pdf = pdfjpgextract.PdfJpgExtract(afile)
         path, njpg = pdf.extract()
         if njpg == 0:
-            rmtree(path, onerror=fixReadOnly)
+            rmtree(path, True)
             raise UserWarning("Failed to extract images.")
     else:
         workdir = tempfile.mkdtemp('', 'KCC-TMP-')
@@ -573,11 +573,11 @@ def getWorkFolder(afile):
             try:
                 path = cbx.extract(workdir)
             except OSError:
-                rmtree(workdir, onerror=fixReadOnly)
+                rmtree(workdir, True)
                 print 'UnRAR/7za not found or file failed to extract!'
                 sys.exit(21)
         else:
-            rmtree(workdir, onerror=fixReadOnly)
+            rmtree(workdir, True)
             raise TypeError
     move(path, path + "_temp")
     move(path + "_temp", os.path.join(path, 'OEBPS', 'Images'))
@@ -908,7 +908,7 @@ def main(argv=None, qtGUI=None):
                 filepath.append(getOutputFilename(args[0], options.output, '.epub', ''))
             make_archive(tome + '_comic', 'zip', tome)
         move(tome + '_comic.zip', filepath[-1])
-        rmtree(tome, onerror=fixReadOnly)
+        rmtree(tome, True)
     return filepath
 
 
@@ -981,14 +981,6 @@ def checkOptions():
     options.profileData = image.ProfileData.Profiles[options.profile]
 
 
-#noinspection PyUnusedLocal
-def fixReadOnly(func, path, exc_info):
-    if not os.access(path, os.W_OK):
-        os.chmod(path, stat.S_IWUSR)
-        func(path)
-    else:
-        raise
-
 if __name__ == "__main__":
     freeze_support()
     Copyright()
diff --git a/kcc/comic2panel.py b/kcc/comic2panel.py
index c5ae4db..e719f33 100644
--- a/kcc/comic2panel.py
+++ b/kcc/comic2panel.py
@@ -25,7 +25,6 @@ __docformat__ = 'restructuredtext en'
 
 import os
 import sys
-import stat
 from shutil import rmtree, copytree, move
 from optparse import OptionParser, OptionGroup
 from multiprocessing import Pool, Queue, freeze_support
@@ -258,15 +257,15 @@ def main(argv=None, qtGUI=None):
                 try:
                     workers.get()
                 except:
-                    rmtree(options.targetDir, onerror=fixReadOnly)
+                    rmtree(options.targetDir, True)
                     raise RuntimeError("One of workers crashed. Cause: " + str(sys.exc_info()[1]))
                 if GUI:
                     GUI.emit(QtCore.SIGNAL("progressBarTick"), 1)
                 if options.inPlace:
-                    rmtree(options.sourceDir, onerror=fixReadOnly)
+                    rmtree(options.sourceDir, True)
                     move(options.targetDir, options.sourceDir)
             else:
-                rmtree(options.targetDir, onerror=fixReadOnly)
+                rmtree(options.targetDir, True)
                 raise UserWarning("Source directory is empty.")
         else:
             raise UserWarning("Provided path is not a directory.")
@@ -274,14 +273,6 @@ def main(argv=None, qtGUI=None):
         raise UserWarning("Target height is not set.")
 
 
-#noinspection PyUnusedLocal
-def fixReadOnly(func, path, exc_info):
-    if not os.access(path, os.W_OK):
-        os.chmod(path, stat.S_IWUSR)
-        func(path)
-    else:
-        raise
-
 if __name__ == "__main__":
     freeze_support()
     Copyright()