aboutsummaryrefslogtreecommitdiffstats
path: root/icecompr
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2017-01-15 10:05:03 +0100
committerClifford Wolf <clifford@clifford.at>2017-01-15 10:05:13 +0100
commit31cc8a1ab94137079c5e0adc722a45900b093762 (patch)
tree7f6eaddfefff76a43166015ae3b9f40038e8cda1 /icecompr
parentb1c4784c8ebee596a708f4ecc769aeb87431ebfe (diff)
downloadicestorm-31cc8a1ab94137079c5e0adc722a45900b093762.tar.gz
icestorm-31cc8a1ab94137079c5e0adc722a45900b093762.tar.bz2
icestorm-31cc8a1ab94137079c5e0adc722a45900b093762.zip
Cleanup icecompr code
Diffstat (limited to 'icecompr')
-rw-r--r--icecompr/.gitignore1
-rw-r--r--icecompr/Makefile10
-rwxr-xr-x[-rw-r--r--]icecompr/icecompr.py38
3 files changed, 30 insertions, 19 deletions
diff --git a/icecompr/.gitignore b/icecompr/.gitignore
index 1ebf48a..bb7a7ef 100644
--- a/icecompr/.gitignore
+++ b/icecompr/.gitignore
@@ -1,5 +1,6 @@
icecompr
iceuncompr
example_?k.compr
+example_?k.compr_py
example_?k.ok
example_?k.uncompr
diff --git a/icecompr/Makefile b/icecompr/Makefile
index c98f5d3..b230ffa 100644
--- a/icecompr/Makefile
+++ b/icecompr/Makefile
@@ -11,18 +11,22 @@ iceuncompr: iceuncompr.c
%.compr: %.bin icecompr
./icecompr -v $< $@
-
+
+%.compr_py: %.bin icecompr.py
+ ./icecompr.py < $< > $@
%.uncompr: %.compr iceuncompr
./iceuncompr $< $@
-%.ok: %.uncompr %.bin
- cmp $^
+%.ok: %.compr %.compr_py %.uncompr %.bin
+ cmp $(basename $@).compr $(basename $@).compr_py
+ cmp $(basename $@).uncompr $(basename $@).bin
touch $@
clean:
rm -f icecompr iceuncompr *.d
rm -f example_1k.compr example_8k.compr
+ rm -f example_1k.compr_py example_8k.compr_py
rm -f example_1k.uncompr example_8k.uncompr
rm -f example_1k.ok example_8k.ok
diff --git a/icecompr/icecompr.py b/icecompr/icecompr.py
index 886c1a9..2e2bdaf 100644..100755
--- a/icecompr/icecompr.py
+++ b/icecompr/icecompr.py
@@ -7,14 +7,13 @@
# binary, for any purpose, commercial or non-commercial, and by any
# means.
-
def make_int_bits(value, nbits):
bits = list()
for i in range(nbits-1, -1, -1):
bits.append((value & (1 << i)) != 0)
return bits
-def ice_compress(inbits):
+def ice_compress_bits(inbits):
outbits = list()
outbits += make_int_bits(0x49434543, 32)
outbits += make_int_bits(0x4f4d5052, 32)
@@ -107,23 +106,30 @@ def ice_compress(inbits):
return outbits
+def ice_compress_bytes(inbytes):
+ inbits = list()
+ for byte in inbytes:
+ for i in range(7, -1, -1):
+ inbits.append((byte & (1 << i)) != 0)
-# ------------------------------------------------------
-# Usage example:
-# python3 icecompr.py < example_8k.bin > example_8k.compr
+ outbits = ice_compress_bits(inbits)
-import sys
+ outbytes = list()
+ for i in range(0, len(outbits), 8):
+ byte = 0
+ for k in range(i, min(i+8, len(outbits))):
+ if outbits[k]: byte |= 1 << (7-(k-i))
+ outbytes.append(byte)
-inbits = list()
-for byte in sys.stdin.buffer.read():
- for i in range(7, -1, -1):
- inbits.append((byte & (1 << i)) != 0)
+ return bytes(outbytes)
-outbits = ice_compress(inbits)
+# ------------------------------------------------------
+# Usage example:
+# python3 icecompr.py < example_8k.bin > example_8k.compr
-for i in range(0, len(outbits), 8):
- byte = 0
- for k in range(i, min(i+8, len(outbits))):
- if outbits[k]: byte |= 1 << (7-(k-i))
- sys.stdout.buffer.write(bytes([byte]))
+if __name__ == '__main__':
+ import sys
+ inbytes = sys.stdin.buffer.read()
+ outbytes = ice_compress_bytes(inbytes)
+ sys.stdout.buffer.write(outbytes)