diff options
author | Guido van Rossum <guido@python.org> | 1992-03-02 16:17:31 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1992-03-02 16:17:31 (GMT) |
commit | fcd1e6ed4d774c35cc3bce5494cfba1c2d8d315f (patch) | |
tree | ad5baeb5aa6cf4c2ba13b4114cd6f6edad220fa2 | |
parent | 8b83bce883553dd89ec29475ec3d7eb573f57aa5 (diff) | |
download | cpython-fcd1e6ed4d774c35cc3bce5494cfba1c2d8d315f.zip cpython-fcd1e6ed4d774c35cc3bce5494cfba1c2d8d315f.tar.gz cpython-fcd1e6ed4d774c35cc3bce5494cfba1c2d8d315f.tar.bz2 |
Added '-l[flags]' option.
-rwxr-xr-x | Tools/scripts/which.py | 41 |
1 files changed, 25 insertions, 16 deletions
diff --git a/Tools/scripts/which.py b/Tools/scripts/which.py index 24071f4..94c7556 100755 --- a/Tools/scripts/which.py +++ b/Tools/scripts/which.py @@ -2,6 +2,7 @@ # Variant of "which". # On stderr, near and total misses are reported. +# '-l<flags>' argument adds ls -l<flags> of each file found. import sys, posix, string, path from stat import * @@ -12,6 +13,11 @@ def msg(str): pathlist = string.splitfields(posix.environ['PATH'], ':') sts = 0 +longlist = '' + +if sys.argv[1:] and sys.argv[1][:2] == '-l': + longlist = sys.argv[1] + del sys.argv[1] for prog in sys.argv[1:]: ident = () @@ -19,24 +25,27 @@ for prog in sys.argv[1:]: file = path.join(dir, prog) try: st = posix.stat(file) - if S_ISREG(st[ST_MODE]): - mode = S_IMODE(st[ST_MODE]) - if mode % 2 or mode/8 % 2 or mode/64 % 2: - if ident: - if st[:3] == ident: - s = ': same as ' - else: - s = ': also ' - msg(prog + s + file) - else: - print file - ident = st[:3] + except posix.error: + continue + if not S_ISREG(st[ST_MODE]): + msg(file + ': not a disk file') + else: + mode = S_IMODE(st[ST_MODE]) + if mode & 0111: + if not ident: + print file + ident = st[:3] else: - msg(file + ': not executable') + if st[:3] == ident: + s = 'same as: ' + else: + s = 'also: ' + msg(s + file) else: - msg(file + ': not a disk file') - except posix.error: - pass + msg(file + ': not executable') + if longlist: + sts = posix.system('ls ' + longlist + ' ' + file) + if sts: msg('"ls -l" exit status: ' + `sts`) if not ident: msg(prog + ': not found') sts = 1 |