7
from optparse import OptionParser
11
from cStringIO import StringIO
12
from os.path import basename
15
ppds_compressed = base64.b64decode(ppds_compressed_b64)
16
ppds_decompressed = decompress(ppds_compressed)
17
ppds = cPickle.loads(ppds_decompressed)
21
binary_name = basename(argv[0])
23
for key, value in ppds.iteritems():
24
if key == 'ARCHIVE': continue
26
print ppd.replace('"', '"' + binary_name + ':', 1)
29
# Ignore driver's name, take only PPD's
30
ppd = ppd.split(":")[-1]
31
# Remove also the index
32
ppd = "0/" + ppd[ppd.find("/")+1:]
35
ppds['ARCHIVE'] = StringIO(decompress(ppds['ARCHIVE']))
40
ppds['ARCHIVE'].seek(start)
41
return ppds['ARCHIVE'].read(length)
44
usage = "usage: %prog list\n" \
46
version = "%prog 0.4.9\n" \
47
"Copyright (c) 2010 Vitor Baptista.\n" \
48
"This is free software; see the source for copying conditions.\n" \
49
"There is NO warranty; not even for MERCHANTABILITY or\n" \
50
"FITNESS FOR A PARTICULAR PURPOSE."
51
parser = OptionParser(usage=usage,
53
(options, args) = parser.parse_args()
55
if len(args) == 0 or len(args) > 2:
56
parser.error("incorrect number of arguments")
58
if args[0].lower() == 'list':
60
elif args[0].lower() == 'cat':
61
if not len(args) == 2:
62
parser.error("incorrect number of arguments")
65
parser.error("Printer '%s' does not have default driver!" % args[1])
68
parser.error("argument " + args[0] + " invalid")
71
ppds_compressed_b64 = "@ppds_compressed_b64@"
73
if __name__ == "__main__":
76
except (IOError, KeyboardInterrupt):
77
# We don't want neither IOError nor KeyboardInterrupt throwing a
78
# traceback into stdout.