48,10 → 48,7 |
print "<PATH> must be a directory" |
return |
|
header_size = 18 |
payload_size = 0 |
outf = file(sys.argv[2], "w") |
outf.write(struct.pack("<" + ("%d" % header_size) + "x")) |
outf = file(sys.argv[2], "w"); |
|
for root, dirs, files in os.walk(path): |
relpath = root[len(path):len(root)] |
58,19 → 55,16 |
for name in files: |
canon = os.path.join(relpath, name) |
outf.write(struct.pack("<BL" + ("%d" % len(canon)) + "s", 1, len(canon), canon)) |
payload_size += 5 + len(canon) |
|
fn = os.path.join(root, name) |
size = os.path.getsize(fn) |
rd = 0; |
outf.write(struct.pack("<L", size)) |
payload_size += 4 |
|
inf = file(fn, "r") |
while (rd < size): |
data = inf.read(4096); |
outf.write(data) |
payload_size += len(data) |
rd += len(data) |
inf.close() |
|
77,10 → 71,7 |
for name in dirs: |
canon = os.path.join(relpath, name) |
outf.write(struct.pack("<BL" + ("%d" % len(canon)) + "s", 2, len(canon), canon)) |
payload_size += 5 + len(canon) |
|
outf.seek(0) |
outf.write(struct.pack("<4sBBLQ", "HORD", 1, 1, header_size, payload_size)) |
outf.close() |
|
if __name__ == '__main__': |