fpdpbuilder_pel7x64builder0
6 years ago
1 changed files with 75 additions and 0 deletions
@ -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)) |
Loading…
Reference in new issue