Mercurial > cpython-lru_cache-weakref
annotate Tools/scripts/which.py @ 5817:48b94de85bf3 legacy-trunk
Extensive changes by AMK.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Thu, 17 Jul 1997 16:29:42 +0000 |
| parents | 73758db2f464 |
| children | df6dfaac2d0b |
| rev | line source |
|---|---|
|
4573
73758db2f464
/usr/local/bin/python -> /usr/bin/env python
Guido van Rossum <guido@python.org>
parents:
1269
diff
changeset
|
1 #! /usr/bin/env python |
| 274 | 2 |
| 3 # Variant of "which". | |
| 4 # On stderr, near and total misses are reported. | |
|
685
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
5 # '-l<flags>' argument adds ls -l<flags> of each file found. |
| 274 | 6 |
| 755 | 7 import sys, os, string |
| 274 | 8 from stat import * |
| 9 | |
| 10 def msg(str): | |
| 11 sys.stderr.write(str + '\n') | |
| 12 | |
| 755 | 13 pathlist = string.splitfields(os.environ['PATH'], ':') |
| 274 | 14 |
| 15 sts = 0 | |
|
685
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
16 longlist = '' |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
17 |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
18 if sys.argv[1:] and sys.argv[1][:2] == '-l': |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
19 longlist = sys.argv[1] |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
20 del sys.argv[1] |
| 274 | 21 |
| 22 for prog in sys.argv[1:]: | |
| 23 ident = () | |
| 24 for dir in pathlist: | |
| 755 | 25 file = os.path.join(dir, prog) |
| 274 | 26 try: |
| 755 | 27 st = os.stat(file) |
| 28 except os.error: | |
|
685
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
29 continue |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
30 if not S_ISREG(st[ST_MODE]): |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
31 msg(file + ': not a disk file') |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
32 else: |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
33 mode = S_IMODE(st[ST_MODE]) |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
34 if mode & 0111: |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
35 if not ident: |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
36 print file |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
37 ident = st[:3] |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
38 else: |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
39 if st[:3] == ident: |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
40 s = 'same as: ' |
| 274 | 41 else: |
|
685
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
42 s = 'also: ' |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
43 msg(s + file) |
| 274 | 44 else: |
|
685
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
45 msg(file + ': not executable') |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
46 if longlist: |
| 755 | 47 sts = os.system('ls ' + longlist + ' ' + file) |
|
685
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
48 if sts: msg('"ls -l" exit status: ' + `sts`) |
| 274 | 49 if not ident: |
| 50 msg(prog + ': not found') | |
| 51 sts = 1 | |
| 52 | |
| 53 sys.exit(sts) |
