mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 03:44:55 +00:00 
			
		
		
		
	(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.
		
			
				
	
	
		
			56 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			56 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)
 |