mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			72 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
#! /usr/bin/env python
 | 
						|
 | 
						|
"""Print a list of files that are mentioned in CVS directories.
 | 
						|
 | 
						|
Usage: cvsfiles.py [-n file] [directory] ...
 | 
						|
 | 
						|
If the '-n file' option is given, only files under CVS that are newer
 | 
						|
than the given file are printed; by default, all files under CVS are
 | 
						|
printed.  As a special case, if a file does not exist, it is always
 | 
						|
printed.
 | 
						|
"""
 | 
						|
 | 
						|
import os
 | 
						|
import sys
 | 
						|
import stat
 | 
						|
import getopt
 | 
						|
 | 
						|
cutofftime = 0
 | 
						|
 | 
						|
def main():
 | 
						|
    try:
 | 
						|
        opts, args = getopt.getopt(sys.argv[1:], "n:")
 | 
						|
    except getopt.error, msg:
 | 
						|
        print msg
 | 
						|
        print __doc__,
 | 
						|
        return 1
 | 
						|
    global cutofftime
 | 
						|
    newerfile = None
 | 
						|
    for o, a in opts:
 | 
						|
        if o == '-n':
 | 
						|
            cutofftime = getmtime(a)
 | 
						|
    if args:
 | 
						|
        for arg in args:
 | 
						|
            process(arg)
 | 
						|
    else:
 | 
						|
        process(".")
 | 
						|
 | 
						|
def process(dir):
 | 
						|
    cvsdir = 0
 | 
						|
    subdirs = []
 | 
						|
    names = os.listdir(dir)
 | 
						|
    for name in names:
 | 
						|
        fullname = os.path.join(dir, name)
 | 
						|
        if name == "CVS":
 | 
						|
            cvsdir = fullname
 | 
						|
        else:
 | 
						|
            if os.path.isdir(fullname):
 | 
						|
                if not os.path.islink(fullname):
 | 
						|
                    subdirs.append(fullname)
 | 
						|
    if cvsdir:
 | 
						|
        entries = os.path.join(cvsdir, "Entries")
 | 
						|
        for e in open(entries).readlines():
 | 
						|
            words = e.split('/')
 | 
						|
            if words[0] == '' and words[1:]:
 | 
						|
                name = words[1]
 | 
						|
                fullname = os.path.join(dir, name)
 | 
						|
                if cutofftime and getmtime(fullname) <= cutofftime:
 | 
						|
                    pass
 | 
						|
                else:
 | 
						|
                    print fullname
 | 
						|
    for sub in subdirs:
 | 
						|
        process(sub)
 | 
						|
 | 
						|
def getmtime(filename):
 | 
						|
    try:
 | 
						|
        st = os.stat(filename)
 | 
						|
    except os.error:
 | 
						|
        return 0
 | 
						|
    return st[stat.ST_MTIME]
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    main()
 |