blob: 24071f4747de0c7b159999cd4a140e2ca4a9a878 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#! /usr/local/python
# Variant of "which".
# On stderr, near and total misses are reported.
import sys, posix, string, path
from stat import *
def msg(str):
sys.stderr.write(str + '\n')
pathlist = string.splitfields(posix.environ['PATH'], ':')
sts = 0
for prog in sys.argv[1:]:
ident = ()
for dir in pathlist:
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]
else:
msg(file + ': not executable')
else:
msg(file + ': not a disk file')
except posix.error:
pass
if not ident:
msg(prog + ': not found')
sts = 1
sys.exit(sts)
|