diff options
author | Alec Murphy <alec@checksum.fail> | 2017-04-29 13:05:10 -0400 |
---|---|---|
committer | Alec Murphy <alec@checksum.fail> | 2017-04-29 13:05:10 -0400 |
commit | 702c25458a2bb5aec9d72cc34a7a62f31ae3fcf5 (patch) | |
tree | c7c75a03ed49d8d43b9c44e803b70346c1b54284 | |
parent | 0a90280b15b8a2515f6d55718ed9df362817f308 (diff) |
Added --2k: 2048 byte padding for VirtualBox
-rwxr-xr-x | isoc-mount | 13 | ||||
-rwxr-xr-x | isoc.py | 11 |
2 files changed, 19 insertions, 5 deletions
@@ -1,18 +1,27 @@ #!/usr/bin/env python import os, sys +pad = "0" rw = "" ctr = 0 while ctr < len(sys.argv): - if sys.argv[ctr] == "--rw": + if sys.argv[ctr].lower() == "--rw": rw = "rw" del(sys.argv[ctr]) ctr += 1 +ctr = 0 +while ctr < len(sys.argv): + if sys.argv[ctr].lower() == "--2k": + pad = "1" + del(sys.argv[ctr]) + ctr += 1 if len(sys.argv) < 3: print "Usage: " + sys.argv[0] + " [--rw] <filename.ISO.C> <mount_point>" print " --rw: commit writes to ISO.C file, otherwise discarded on unmount." print " If the ISO.C file does not exist, a new one will be created." + print " --2k: Pad ISO.C to multiple of 2048 bytes " + print " (for VirtualBox or physical disk only) " sys.exit() -os.system('"' + sys.argv[0][:sys.argv[0].rfind("/")+1] + 'isoc.py" "' + sys.argv[1] + '" "' + sys.argv[2] + '" "' + rw + '" &') +os.system('"' + sys.argv[0][:sys.argv[0].rfind("/")+1] + 'isoc.py" "' + sys.argv[1] + '" "' + sys.argv[2] + '" "' + rw + '" "' + pad + '" &') @@ -54,7 +54,9 @@ mon_start_days1=[ mon_start_days2=[ 0,31,60,91,121,152,182,213,244,274,305,335] -def write_iso_c(self, iso_c_file): +def roundup(x): return x if x % 2048 == 0 else x + 2048 - x % 2048 + +def write_iso_c(self, iso_c_file, pad): dirs = [] dir_entries = {} @@ -191,7 +193,10 @@ def write_iso_c(self, iso_c_file): file.write(self.data[(d+'/'+f['filename']).replace("//","/")]) # Write to EOF - file.seek(RS_DRV_OFFSET+int(de_clus_ctr*RS_BLK_SIZE)) + if int(pad) == 1: + file.seek(roundup(RS_DRV_OFFSET+int(de_clus_ctr*RS_BLK_SIZE))-1) + else: + file.seek(RS_DRV_OFFSET+int(de_clus_ctr*RS_BLK_SIZE)-1) file.write(chr(0)) # Write boot sector @@ -453,7 +458,7 @@ class RedSea(LoggingMixIn, Operations): def destroy(self, d): if self.modified and argv[3] == "rw": - write_iso_c(self, argv[1]) + write_iso_c(self, argv[1], argv[4]) def u16(s): u = ord(s[0]) |