mirror of
https://abf.rosa.ru/djam/hplip.git
synced 2025-02-23 16:32:58 +00:00
75 lines
2.1 KiB
Python
Executable file
75 lines
2.1 KiB
Python
Executable file
#!/usr/bin/python2
|
|
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))
|