aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlec Murphy <alec@checksum.fail>2017-04-29 13:05:10 -0400
committerAlec Murphy <alec@checksum.fail>2017-04-29 13:05:10 -0400
commit702c25458a2bb5aec9d72cc34a7a62f31ae3fcf5 (patch)
treec7c75a03ed49d8d43b9c44e803b70346c1b54284
parent0a90280b15b8a2515f6d55718ed9df362817f308 (diff)
Added --2k: 2048 byte padding for VirtualBox
-rwxr-xr-xisoc-mount13
-rwxr-xr-xisoc.py11
2 files changed, 19 insertions, 5 deletions
diff --git a/isoc-mount b/isoc-mount
index 8155840..d382797 100755
--- a/isoc-mount
+++ b/isoc-mount
@@ -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 + '" &')
diff --git a/isoc.py b/isoc.py
index 1fcb426..87f530e 100755
--- a/isoc.py
+++ b/isoc.py
@@ -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])