Mercurial > cpython-lru_cache-weakref
annotate Tools/scripts/which.py @ 6719:faebc1940432 legacy-trunk
Understand -Xlinker option.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Tue, 02 Dec 1997 20:38:11 +0000 |
| parents | df6dfaac2d0b |
| children | 14a27acc755a |
| 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 |
|
6506
df6dfaac2d0b
Remove "." or "" from front of sys.path (this bit me once).
Guido van Rossum <guido@python.org>
parents:
4573
diff
changeset
|
7 import sys |
|
df6dfaac2d0b
Remove "." or "" from front of sys.path (this bit me once).
Guido van Rossum <guido@python.org>
parents:
4573
diff
changeset
|
8 if sys.path[0] in (".", ""): del sys.path[0] |
|
df6dfaac2d0b
Remove "." or "" from front of sys.path (this bit me once).
Guido van Rossum <guido@python.org>
parents:
4573
diff
changeset
|
9 |
| 755 | 10 import sys, os, string |
| 274 | 11 from stat import * |
| 12 | |
| 13 def msg(str): | |
| 14 sys.stderr.write(str + '\n') | |
| 15 | |
| 755 | 16 pathlist = string.splitfields(os.environ['PATH'], ':') |
| 274 | 17 |
| 18 sts = 0 | |
|
685
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
19 longlist = '' |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
20 |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
21 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
|
22 longlist = sys.argv[1] |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
23 del sys.argv[1] |
| 274 | 24 |
| 25 for prog in sys.argv[1:]: | |
| 26 ident = () | |
| 27 for dir in pathlist: | |
| 755 | 28 file = os.path.join(dir, prog) |
| 274 | 29 try: |
| 755 | 30 st = os.stat(file) |
| 31 except os.error: | |
|
685
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
32 continue |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
33 if not S_ISREG(st[ST_MODE]): |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
34 msg(file + ': not a disk file') |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
35 else: |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
36 mode = S_IMODE(st[ST_MODE]) |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
37 if mode & 0111: |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
38 if not ident: |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
39 print file |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
40 ident = st[:3] |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
41 else: |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
42 if st[:3] == ident: |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
43 s = 'same as: ' |
| 274 | 44 else: |
|
685
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
45 s = 'also: ' |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
46 msg(s + file) |
| 274 | 47 else: |
|
685
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
48 msg(file + ': not executable') |
|
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
49 if longlist: |
| 755 | 50 sts = os.system('ls ' + longlist + ' ' + file) |
|
685
ca28a3a82bba
Added '-l[flags]' option.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
51 if sts: msg('"ls -l" exit status: ' + `sts`) |
| 274 | 52 if not ident: |
| 53 msg(prog + ': not found') | |
| 54 sts = 1 | |
| 55 | |
| 56 sys.exit(sts) |
