From deec260eba05c56c6e6fa976b885cf0d2ddb58de Mon Sep 17 00:00:00 2001 From: fpdpbuilder_pel7x64builder0 Date: Mon, 10 Dec 2018 10:10:05 +0100 Subject: [PATCH] hplip add missing source Signed-off-by: fpdpbuilder_pel7x64builder0 --- SOURCES/copy-deviceids.py | 75 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100755 SOURCES/copy-deviceids.py diff --git a/SOURCES/copy-deviceids.py b/SOURCES/copy-deviceids.py new file mode 100755 index 0000000..6be4a5f --- /dev/null +++ b/SOURCES/copy-deviceids.py @@ -0,0 +1,75 @@ +#!/usr/bin/python +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 = file (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 >>sys.stderr, \ + "%d IEEE 1284 Device IDs loaded from %s" % (len (devid_by_mn), + os.path.basename (hpcups_drv)) + +replaced = 0 +hpijs_lines = file (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 >>sys.stderr, "Not matched: %s" % current_mn + + if end_re.match (line): + current_mn = None + + print line.rstrip ("\n") + +print >>sys.stderr, \ + "%d IEEE 1284 Device IDs replaced in %s" % (replaced, + os.path.basename (hpijs_drv))