diff options
author | Rangi <remy.oukaour+rangi42@gmail.com> | 2020-09-16 12:15:10 -0400 |
---|---|---|
committer | Rangi <remy.oukaour+rangi42@gmail.com> | 2020-09-16 12:15:10 -0400 |
commit | 331c9043d2d6d39cb71d4460de97f22fb5ebab3c (patch) | |
tree | 7e907694ae3fa085ebe9a63adb23024790e633a9 /tools/xor_compress.py | |
parent | 0f5510b72ea8843d54ffaaf1c70c24d271f5dc67 (diff) |
tools/xor_compress revisions:
- C outputs bc run count to stdout
- Python supports -v to output bc run count
- Add Rust rewrite
Diffstat (limited to 'tools/xor_compress.py')
-rw-r--r-- | tools/xor_compress.py | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/tools/xor_compress.py b/tools/xor_compress.py index b3bf317..015c80e 100644 --- a/tools/xor_compress.py +++ b/tools/xor_compress.py @@ -1,11 +1,22 @@ #!/usr/bin/env python3 -# Usage: ./xor_compress.py sources.bin... > dest.bin.xor - import sys +sys.argv.pop(0) + +verbose = False +if sys.argv and sys.argv[0] == '-v': + verbose = True + sys.argv.pop(0) + +if len(sys.argv) < 2: + print('Usage: xor_compress.py [-v] file... files.xor', file=sys.stderr) + exit(1) + +out_filename = sys.argv.pop() + data = bytearray() -for filename in sys.argv[1:]: +for filename in sys.argv: with open(filename, 'rb') as f: data.extend(f.read()) @@ -13,10 +24,12 @@ n = len(data) output = bytearray() v = 0x00 i = 0 +runs = 0 while i < n: byte = data[i] i += 1 + runs += 1 if data[i] == v: # Alternating (>= 0x80) @@ -44,4 +57,8 @@ while i < n: output.append(len(buffer) - 1) output.extend(buffer) -sys.stdout.buffer.write(output) +with open(out_filename, 'wb') as f: + f.write(output) + +if verbose: + print('%s: ld bc, $%x' % (out_filename, runs)) |