mirror of
https://github.com/ksherlock/hystricomorph.git
synced 2024-06-02 20:41:29 +00:00
add -c flag to add implicit 0-terminator (c-string) to input strings.
0-terminator is NOT considered part of the length for -l purposes.
This commit is contained in:
parent
c6e494622d
commit
2edc3e4dd2
|
@ -13,6 +13,7 @@ flag_l = False
|
||||||
flag_v = False
|
flag_v = False
|
||||||
flag_o = None
|
flag_o = None
|
||||||
flag_E = False
|
flag_E = False
|
||||||
|
flag_c = False
|
||||||
|
|
||||||
|
|
||||||
def str_to_int(cc):
|
def str_to_int(cc):
|
||||||
|
@ -160,7 +161,7 @@ def usage(ex=1):
|
||||||
|
|
||||||
|
|
||||||
def read_data(f, name):
|
def read_data(f, name):
|
||||||
global flag_i, flag_l
|
global flag_i, flag_l, flag_c
|
||||||
|
|
||||||
data = {}
|
data = {}
|
||||||
ln = 0
|
ln = 0
|
||||||
|
@ -176,20 +177,25 @@ def read_data(f, name):
|
||||||
err = "{}:{}: Bad data: {}".format(name,ln,line)
|
err = "{}:{}: Bad data: {}".format(name,ln,line)
|
||||||
raise Exception(err)
|
raise Exception(err)
|
||||||
k = orig_k = m[1]
|
k = orig_k = m[1]
|
||||||
if flag_i:
|
|
||||||
k = k.lower()
|
|
||||||
k = decode_string(k)
|
|
||||||
|
|
||||||
|
k = decode_string(k)
|
||||||
|
if flag_i: k = k.lower()
|
||||||
|
len_k = len(k)
|
||||||
|
if flag_c: k = k + "\x00"
|
||||||
tmp = m[2]
|
tmp = m[2]
|
||||||
base = 10
|
base = 10
|
||||||
if tmp.startswith("0x"): base = 16
|
if tmp.startswith("0x"): base = 16
|
||||||
v = int(tmp, base)
|
v = int(tmp, base)
|
||||||
|
|
||||||
|
if v > 65535:
|
||||||
|
err = "{}:{} Value too large: {}".format(name, ln, v)
|
||||||
|
raise Exception(err)
|
||||||
|
|
||||||
if flag_l:
|
if flag_l:
|
||||||
if v > 255 or len(orig_k) > 255:
|
if v > 255 or len_k > 255:
|
||||||
err = "{}:{} Value too large: {}".format(name, ln, v)
|
err = "{}:{} Value too large: {}".format(name, ln, v)
|
||||||
raise Exception(err)
|
raise Exception(err)
|
||||||
v = (v << 8) + len(orig_k)
|
v = (v << 8) + len_k
|
||||||
|
|
||||||
if k in data:
|
if k in data:
|
||||||
err = "{}:{}: Duplicate string: {}".format(name,ln,orig_k)
|
err = "{}:{}: Duplicate string: {}".format(name,ln,orig_k)
|
||||||
|
@ -255,13 +261,13 @@ def init_maps():
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
global flag_i, flag_l, flag_E
|
global flag_i, flag_l, flag_E, flag_c
|
||||||
|
|
||||||
init_maps()
|
init_maps()
|
||||||
|
|
||||||
|
|
||||||
argv = sys.argv[1:]
|
argv = sys.argv[1:]
|
||||||
opts, args = getopt.getopt(argv, "ivo:leE")
|
opts, args = getopt.getopt(argv, "ivo:leEc")
|
||||||
|
|
||||||
# flags = {}
|
# flags = {}
|
||||||
# for k, v in opts: flags[k] = v
|
# for k, v in opts: flags[k] = v
|
||||||
|
@ -275,6 +281,7 @@ def main():
|
||||||
elif k == '-v': flag_v = True
|
elif k == '-v': flag_v = True
|
||||||
elif k == '-l': flag_l = True
|
elif k == '-l': flag_l = True
|
||||||
elif k == '-E': flag_E = True
|
elif k == '-E': flag_E = True
|
||||||
|
elif k == '-c': flag_c = True
|
||||||
else:
|
else:
|
||||||
usage()
|
usage()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user