diff options
Diffstat (limited to 'copy-deviceids.py')
-rwxr-xr-x | copy-deviceids.py | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/copy-deviceids.py b/copy-deviceids.py new file mode 100755 index 0000000..c27a06b --- /dev/null +++ b/copy-deviceids.py @@ -0,0 +1,75 @@ +#!/usr/bin/python3 +import os +import re +import sys +if len (sys.argv) < 3: + print ("Specify hpcups.drv and hpijs.drv pathnames") + sys.exit (1) + +hpcups_drv = sys.argv[1] +hpijs_drv = sys.argv[2] + +# Match e.g. Model "ModelName" +# and catch 'ModelName' in group 0 +mn_re = re.compile ('^\s*ModelName\s+"(.*)"\s*$') + +# Match e.g. Attribute "1284DeviceID" "" "blah" +# and catch everything before 'blah' in group 0, 'blah' in group 1, +# trailing characters in group 2 +devid_re = re.compile ('^(\s*Attribute\s+"1284DeviceID"\s+""\s+")(.*)("\s*)$') + +# Match e.g. } +end_re = re.compile ('^\s*}') + +devid_by_mn = dict() + +hpcups_lines = open (hpcups_drv, "r").readlines () +current_mn = None +for line in hpcups_lines: + if current_mn == None: + match = mn_re.match (line) + if match == None: + continue + + current_mn = match.groups ()[0] + else: + match = devid_re.match (line) + if match: + devid_by_mn[current_mn] = match.groups ()[1] + continue + + if end_re.match (line): + current_mn = None + +print("%d IEEE 1284 Device IDs loaded from %s" % (len (devid_by_mn), + os.path.basename (hpcups_drv)), + file=sys.stderr) + +replaced = 0 +hpijs_lines = open (hpijs_drv, "r").readlines () +current_mn = None +for line in hpijs_lines: + if current_mn == None: + match = mn_re.match (line) + if match: + current_mn = match.groups ()[0] + if current_mn.endswith (" hpijs"): + current_mn = current_mn[:-6] + else: + match = devid_re.match (line) + if match: + devid = devid_by_mn.get (current_mn) + if devid: + line = (match.groups ()[0] + devid + match.groups ()[2]) + replaced += 1 + else: + print ("Not matched: %s" % current_mn, file=sys.stderr) + + if end_re.match (line): + current_mn = None + + print (line.rstrip ("\n")) + +print("%d IEEE 1284 Device IDs loaded in %s" % (replaced, + os.path.basename (hpijs_drv)), + file=sys.stderr) |