X7ROOT File Manager
Current Path:
/usr/lib/rpm
usr
/
lib
/
rpm
/
📁
..
📄
appdata.prov
(333 B)
📄
brp-compress
(1.41 KB)
📄
brp-java-gcjcompile
(1.38 KB)
📄
brp-python-bytecompile
(2.96 KB)
📄
brp-python-hardlink
(658 B)
📄
brp-strip
(509 B)
📄
brp-strip-comment-note
(741 B)
📄
brp-strip-shared
(706 B)
📄
brp-strip-static-archive
(411 B)
📄
check-buildroot
(1.21 KB)
📄
check-files
(1.02 KB)
📄
check-prereqs
(418 B)
📄
check-rpaths
(1.01 KB)
📄
check-rpaths-worker
(4.93 KB)
📄
config.guess
(44.24 KB)
📄
config.sub
(34.62 KB)
📄
debugedit
(33.01 KB)
📄
desktop-file.prov
(602 B)
📄
elfdeps
(15.31 KB)
📁
fileattrs
📄
find-debuginfo.sh
(14.42 KB)
📄
find-lang.sh
(5.77 KB)
📄
find-provides
(1.52 KB)
📄
find-requires
(3.43 KB)
📄
fontconfig.prov
(489 B)
📄
gstreamer1.prov
(954 B)
📄
javadoc.req
(76 B)
📄
kabi.sh
(428 B)
📄
libtooldeps.sh
(718 B)
📄
macros
(37.33 KB)
📁
macros.d
📄
macros.perl
(473 B)
📄
macros.php
(192 B)
📄
macros.python
(906 B)
📄
maven.prov
(3.67 KB)
📄
maven.req
(7.75 KB)
📄
mkinstalldirs
(3.41 KB)
📄
mono-find-provides
(1.08 KB)
📄
mono-find-requires
(1.87 KB)
📄
ocaml-find-provides.sh
(1.62 KB)
📄
ocaml-find-requires.sh
(2.08 KB)
📄
osgi.prov
(3.51 KB)
📄
osgi.req
(3.79 KB)
📄
osgideps.pl
(10.33 KB)
📄
perl.prov
(5.72 KB)
📄
perl.req
(11.48 KB)
📄
perldeps.pl
(32.13 KB)
📄
pkgconfigdeps.sh
(1.25 KB)
📁
platform
📄
postscriptdriver.prov
(7.08 KB)
📄
pythondeps.sh
(875 B)
📁
redhat
📄
rpm.daily
(296 B)
📄
rpm.log
(61 B)
📄
rpm.supp
(688 B)
📄
rpm2cpio.sh
(1.3 KB)
📄
rpmdb_dump
(15.33 KB)
📄
rpmdb_load
(27.51 KB)
📄
rpmdb_loadcvt
(1.43 KB)
📄
rpmdb_recover
(11.33 KB)
📄
rpmdb_stat
(15.26 KB)
📄
rpmdb_upgrade
(11.23 KB)
📄
rpmdb_verify
(11.25 KB)
📄
rpmdeps
(11.52 KB)
📄
rpmpopt-4.11.3
(9.51 KB)
📄
rpmrc
(15.01 KB)
📄
script.req
(322 B)
📄
sepdebugcrcfix
(15.24 KB)
📄
tcl.req
(2.02 KB)
📄
tgpg
(929 B)
Editing: postscriptdriver.prov
#!/usr/bin/python ## Copyright (C) 2009, 2010 Red Hat, Inc. ## Author: Tim Waugh <twaugh@redhat.com> ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. import sys try: import cups CAN_EXAMINE_PPDS = True except: CAN_EXAMINE_PPDS = False from getopt import getopt import errno import os import posix import re import shlex import signal import subprocess import sys import tempfile if len (sys.argv) > 1: RPM_BUILD_ROOT = sys.argv[1] else: RPM_BUILD_ROOT = os.environ.get ("RPM_BUILD_ROOT") class TimedOut(Exception): def __init__ (self): Exception.__init__ (self, "Timed out") class DeviceIDs: def __init__ (self): self.ids = dict() def get_dict (self): return self.ids def get_tags (self): ret = [] for mfg, mdlset in self.ids.iteritems (): mfgl = mfg.lower ().replace (" ", "_") for mdl in mdlset: mdll = mdl.lower ().replace (" ", "_") ret.append ("postscriptdriver(%s;%s;)" % (mfgl, mdll)) return ret def __add__ (self, other): if isinstance(other, DeviceIDs): for omfg, omdlset in other.ids.iteritems (): try: mdlset = self.ids[omfg] except KeyError: mdlset = set() self.ids[omfg] = mdlset mdlset.update (omdlset) return self pieces = other.split (';') mfg = mdl = None for piece in pieces: s = piece.split (":") if len (s) != 2: continue key, value = s key = key.upper ().strip () if key in ["MFG", "MANUFACTURER"]: mfg = value.strip () elif key in ["MDL", "MODEL"]: mdl = value.strip () if mfg and mdl: try: mdlset = self.ids[mfg] except KeyError: mdlset = set() self.ids[mfg] = mdlset mdlset.add (mdl) return self class Driver: def __init__ (self): self.ids = DeviceIDs() def list (self): return self.ids class PPDDriver(Driver): def __init__ (self, pathname=None): Driver.__init__ (self) self.pathname = pathname def list (self): if self.pathname != None: self.examine_file (self.pathname) return Driver.list (self) def examine_file (self, path): try: ppd = cups.PPD (path) except RuntimeError, e: # Not a PPD file. Perhaps it's a drv file. drv = DrvDriver (path) self.ids += drv.list () return attr = ppd.findAttr ('1284DeviceID') while attr: self.ids += attr.value attr = ppd.findNextAttr ('1284DeviceID') class DynamicDriver(Driver): def __init__ (self, driver): Driver.__init__ (self) self.driver = driver signal.signal (signal.SIGALRM, self._alarm) def _alarm (self, sig, stack): raise TimedOut def list (self): signal.alarm (180) env = os.environ.copy () if RPM_BUILD_ROOT: buildroot = RPM_BUILD_ROOT if not buildroot.endswith (os.path.sep): buildroot += os.path.sep env["DESTDIR"] = RPM_BUILD_ROOT env["LD_LIBRARY_PATH"] = "%susr/lib64:%susr/lib" % (buildroot, buildroot) p = subprocess.Popen ([self.driver, "list"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=env) try: (stdout, stderr) = p.communicate () signal.alarm (0) except TimedOut: posix.kill (p.pid, signal.SIGKILL) raise if stderr: print >> sys.stderr, stderr ppds = [] lines = stdout.split ('\n') for line in lines: l = shlex.split (line) if len (l) < 5: continue self.ids += l[4] return Driver.list (self) class DrvDriver(PPDDriver): def __init__ (self, pathname): PPDDriver.__init__ (self) self.drv = pathname def _alarm (self, sig, stack): raise TimedOut def list (self): tmpdir = os.environ.get ("TMPDIR", "/tmp") + os.path.sep outputdir = tempfile.mkdtemp (dir=tmpdir) argv = [ "ppdc", "-d", outputdir, "-I", "/usr/share/cups/ppdc", self.drv ] signal.alarm (60) try: p = subprocess.Popen (argv, stdout=subprocess.PIPE, stderr=subprocess.PIPE) except OSError: # ppdc not available. os.rmdir (outputdir) return Driver.list (self) try: (stdout, stderr) = p.communicate () signal.alarm (0) except TimedOut: posix.kill (p.pid, signal.SIGKILL) raise os.path.walk (outputdir, self.examine_directory, None) os.rmdir (outputdir) return Driver.list (self) def examine_directory (self, unused, dirname, fnames): for fname in fnames: path = dirname + os.path.sep + fname self.examine_file (path) os.unlink (path) class TagBuilder: def __init__ (self, filelist=None): if filelist == None: filelist = sys.stdin paths = map (lambda x: x.rstrip (), filelist.readlines ()) self.ids = DeviceIDs () for path in paths: if path.find ("/usr/lib/cups/driver/") != -1: try: self.ids += DynamicDriver (path).list () except TimedOut: pass except OSError, (e, s): if e == errno.EACCES or e == errno.ENOENT: # Not executable pass else: raise if CAN_EXAMINE_PPDS: for path in paths: try: self.ids += PPDDriver (path).list () except TimedOut: pass def get_tags (self): return self.ids.get_tags () if __name__ == "__main__": builder = TagBuilder () tags = builder.get_tags () for tag in tags: print tag
Upload File
Create Folder