123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #!/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 = 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)
|