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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
12a64115a4ee Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2
12a64115a4ee Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3 # Variant of "which".
12a64115a4ee Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
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
12a64115a4ee Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
6
755
2dd5dbf28a2d change posix to os
Guido van Rossum <guido@python.org>
parents: 685
diff changeset
7 import sys, os, string
274
12a64115a4ee Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
8 from stat import *
12a64115a4ee Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
9
12a64115a4ee Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
10 def msg(str):
12a64115a4ee Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
11 sys.stderr.write(str + '\n')
12a64115a4ee Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
12
755
2dd5dbf28a2d change posix to os
Guido van Rossum <guido@python.org>
parents: 685
diff changeset
13 pathlist = string.splitfields(os.environ['PATH'], ':')
274
12a64115a4ee Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
14
12a64115a4ee Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
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
12a64115a4ee Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
21
12a64115a4ee Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
22 for prog in sys.argv[1:]:
12a64115a4ee Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
23 ident = ()
12a64115a4ee Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 for dir in pathlist:
755
2dd5dbf28a2d change posix to os
Guido van Rossum <guido@python.org>
parents: 685
diff changeset
25 file = os.path.join(dir, prog)
274
12a64115a4ee Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 try:
755
2dd5dbf28a2d change posix to os
Guido van Rossum <guido@python.org>
parents: 685
diff changeset
27 st = os.stat(file)
2dd5dbf28a2d change posix to os
Guido van Rossum <guido@python.org>
parents: 685
diff changeset
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
12a64115a4ee Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
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
12a64115a4ee Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
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
2dd5dbf28a2d change posix to os
Guido van Rossum <guido@python.org>
parents: 685
diff changeset
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
12a64115a4ee Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
49 if not ident:
12a64115a4ee Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
50 msg(prog + ': not found')
12a64115a4ee Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
51 sts = 1
12a64115a4ee Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
52
12a64115a4ee Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
53 sys.exit(sts)