mirror of
https://github.com/python/cpython.git
synced 2024-11-24 02:15:30 +08:00
aaab30e00c
(with one small bugfix in bgen/bgen/scantools.py) This replaces string module functions with string methods for the stuff in the Tools directory. Several uses of string.letters etc. are still remaining.
57 lines
1.4 KiB
Python
Executable File
57 lines
1.4 KiB
Python
Executable File
#! /usr/bin/env python
|
|
|
|
# Variant of "which".
|
|
# On stderr, near and total misses are reported.
|
|
# '-l<flags>' argument adds ls -l<flags> of each file found.
|
|
|
|
import sys
|
|
if sys.path[0] in (".", ""): del sys.path[0]
|
|
|
|
import sys, os
|
|
from stat import *
|
|
|
|
def msg(str):
|
|
sys.stderr.write(str + '\n')
|
|
|
|
pathlist = os.environ['PATH'].split(':')
|
|
|
|
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 = ()
|
|
for dir in pathlist:
|
|
file = os.path.join(dir, prog)
|
|
try:
|
|
st = os.stat(file)
|
|
except os.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:
|
|
if st[:3] == ident:
|
|
s = 'same as: '
|
|
else:
|
|
s = 'also: '
|
|
msg(s + file)
|
|
else:
|
|
msg(file + ': not executable')
|
|
if longlist:
|
|
sts = os.system('ls ' + longlist + ' ' + file)
|
|
if sts: msg('"ls -l" exit status: ' + `sts`)
|
|
if not ident:
|
|
msg(prog + ': not found')
|
|
sts = 1
|
|
|
|
sys.exit(sts)
|