]> arthur.barton.de Git - bup.git/blobdiff - lib/bup/hashsplit.py
Use absolute_import from the __future__ everywhere
[bup.git] / lib / bup / hashsplit.py
index 33e91a64ba0830cb4d7e837312d54708b314efcb..3cbcfc981b4e1280604712b2b0ffe2fbeff9411e 100644 (file)
@@ -1,4 +1,6 @@
-import math, os
+
+from __future__ import absolute_import
+import io, math, os
 
 from bup import _helpers, helpers
 from bup.helpers import sc_page_size
@@ -11,10 +13,9 @@ MAX_PER_TREE = 256
 progress_callback = None
 fanout = 16
 
-GIT_MODE_FILE = 0100644
-GIT_MODE_TREE = 040000
-GIT_MODE_SYMLINK = 0120000
-assert(GIT_MODE_TREE != 40000)  # 0xxx should be treated as octal
+GIT_MODE_FILE = 0o100644
+GIT_MODE_TREE = 0o40000
+GIT_MODE_SYMLINK = 0o120000
 
 # The purpose of this type of buffer is to avoid copying on peek(), get(),
 # and eat().  We do copy the buffer contents on put(), but that should
@@ -95,13 +96,17 @@ def readfile_iter(files, progress=None):
         b = ''
         fd = rpr = rstart = rlen = None
         if _fmincore and hasattr(f, 'fileno'):
-            fd = f.fileno()
-            mcore = _fmincore(fd)
-            if mcore:
-                max_chunk = max(1, (8 * 1024 * 1024) / sc_page_size)
-                rpr = _nonresident_page_regions(mcore, helpers.MINCORE_INCORE,
-                                                max_chunk)
-                rstart, rlen = next(rpr, (None, None))
+            try:
+                fd = f.fileno()
+            except io.UnsupportedOperation:
+                pass
+            if fd:
+                mcore = _fmincore(fd)
+                if mcore:
+                    max_chunk = max(1, (8 * 1024 * 1024) / sc_page_size)
+                    rpr = _nonresident_page_regions(mcore, helpers.MINCORE_INCORE,
+                                                    max_chunk)
+                    rstart, rlen = next(rpr, (None, None))
         while 1:
             if progress:
                 progress(filenum, len(b))