summaryrefslogtreecommitdiff
path: root/dedup/compression.py
diff options
context:
space:
mode:
authorHelmut Grohne <helmut@subdivi.de>2015-04-16 17:46:07 +0200
committerHelmut Grohne <helmut@subdivi.de>2015-04-16 17:46:07 +0200
commitff6ed4554a712bab5c93d15f1c556bed9df9632d (patch)
tree02ec0da9608122bd2d9cf89347c120800820bc67 /dedup/compression.py
parentc96530adeec7b72b34d0069e1aa8473b3994e801 (diff)
downloaddebian-dedup-ff6ed4554a712bab5c93d15f1c556bed9df9632d.tar.gz
zlib.crc32 behaves inconsistently on py2 vs py3
zlib.crc32 returns a int32_t on py2 and a uint32_t on py3.
Diffstat (limited to 'dedup/compression.py')
-rw-r--r--dedup/compression.py5
1 files changed, 4 insertions, 1 deletions
diff --git a/dedup/compression.py b/dedup/compression.py
index 4385f1d..cc65bbf 100644
--- a/dedup/compression.py
+++ b/dedup/compression.py
@@ -1,6 +1,9 @@
import struct
+import sys
import zlib
+crc32_type = "L" if sys.version_info.major >= 3 else "l"
+
class GzipDecompressor(object):
"""An interface to gzip which is similar to bz2.BZ2Decompressor and
lzma.LZMADecompressor."""
@@ -60,7 +63,7 @@ class GzipDecompressor(object):
elif not self.sawheader:
return self.inbuffer
else:
- expect = struct.pack("<ll", self.crc, self.size)
+ expect = struct.pack("<" + crc32_type + "L", self.crc, self.size)
if self.inbuffer.startswith(expect) and \
self.inbuffer[len(expect):].replace(b"\0", b"") == b"":
return b""