]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Restructured main, use getopt, use regular expression search instead
authorGuido van Rossum <guido@python.org>
Fri, 21 Jan 1994 15:47:00 +0000 (15:47 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 21 Jan 1994 15:47:00 +0000 (15:47 +0000)
of prefix match

Tools/scripts/findlinksto.py

index 6fb5cd7d9605cb98b89ed4541e2630b6df2f653c..d2fc430b282fd1a8ed98de2485cf99777a1c9a8e 100755 (executable)
@@ -2,28 +2,41 @@
 
 # findlinksto
 #
-# find symbolic links to a given path
+# find symbolic links to a path matching a regular expression
 
-import os, sys
+import os
+import sys
+import regex
+import getopt
 
-def visit(pattern, dirname, names):
+def main():
+       try:
+               opts, args = getopt.getopt(sys.argv[1:], '')
+               if len(args) < 2:
+                       raise getopt.error, 'not enough arguments'
+       except getopt.error, msg:
+               sys.stdout = sys.stderr
+               print msg
+               print 'usage: findlinksto pattern directory ...'
+               sys.exit(2)
+       pat, dirs = args[0], args[1:]
+       prog = regex.compile(pat)
+       for dirname in dirs:
+               os.path.walk(dirname, visit, prog)
+
+def visit(prog, dirname, names):
        if os.path.islink(dirname):
                names[:] = []
                return
        if os.path.ismount(dirname):
                print 'descend into', dirname
-       n = len(pattern)
        for name in names:
                name = os.path.join(dirname, name)
                try:
                        linkto = os.readlink(name)
-                       if linkto[:n] == pattern:
+                       if prog.search(linkto) >= 0:
                                print name, '->', linkto
                except os.error:
                        pass
 
-def main(pattern, args):
-       for dirname in args:
-               os.path.walk(dirname, visit, pattern)
-
-main(sys.argv[1], sys.argv[2:])
+main()