/usr/lib/cups/driver/splix is in printer-driver-splix 2.0.0+svn300-1.1ubuntu2.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | #!/usr/bin/env python
# compressor.py
from subprocess import Popen, PIPE
def compress(value):
"""Compresses a string with the xz binary"""
process = Popen(["xz", "--compress", "--force"], stdin=PIPE, stdout=PIPE)
return process.communicate(value)[0]
def decompress(value):
"""Decompresses a string with the xz binary"""
process = Popen(["xz", "--decompress", "--stdout", "--force"],
stdin=PIPE, stdout=PIPE)
return process.communicate(value)[0]
def compress_file(path):
"""Compress the file at 'path' with the xz binary"""
process = Popen(["xz", "--compress", "--force", "--stdout", path], stdout=PIPE)
return process.communicate()[0]
# compressor.py
from optparse import OptionParser
from sys import argv
import base64
import cPickle
from cStringIO import StringIO
from os.path import basename
def load():
ppds_compressed = base64.b64decode(ppds_compressed_b64)
ppds_decompressed = decompress(ppds_compressed)
ppds = cPickle.loads(ppds_decompressed)
return ppds
def ls():
binary_name = basename(argv[0])
ppds = load()
for key, value in ppds.iteritems():
if key == 'ARCHIVE': continue
for ppd in value[2]:
print ppd.replace('"', '"' + binary_name + ':', 1)
def cat(ppd):
# Ignore driver's name, take only PPD's
ppd = ppd.split(":")[-1]
# Remove also the index
ppd = "0/" + ppd[ppd.find("/")+1:]
ppds = load()
ppds['ARCHIVE'] = StringIO(decompress(ppds['ARCHIVE']))
if ppds.has_key(ppd):
start = ppds[ppd][0]
length = ppds[ppd][1]
ppds['ARCHIVE'].seek(start)
return ppds['ARCHIVE'].read(length)
def main():
usage = "usage: %prog list\n" \
" %prog cat URI"
version = "%prog 0.4.9\n" \
"Copyright (c) 2010 Vitor Baptista.\n" \
"This is free software; see the source for copying conditions.\n" \
"There is NO warranty; not even for MERCHANTABILITY or\n" \
"FITNESS FOR A PARTICULAR PURPOSE."
parser = OptionParser(usage=usage,
version=version)
(options, args) = parser.parse_args()
if len(args) == 0 or len(args) > 2:
parser.error("incorrect number of arguments")
if args[0].lower() == 'list':
ls()
elif args[0].lower() == 'cat':
if not len(args) == 2:
parser.error("incorrect number of arguments")
ppd = cat(args[1])
if not ppd:
parser.error("Printer '%s' does not have default driver!" % args[1])
print ppd
else:
parser.error("argument " + args[0] + " invalid")
# PPDs Archive
ppds_compressed_b64 = "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"
if __name__ == "__main__":
try:
main()
except (IOError, KeyboardInterrupt):
# We don't want neither IOError nor KeyboardInterrupt throwing a
# traceback into stdout.
pass
|