mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 19:34:08 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			72 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
	
		
			1.5 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
 | 
						|
import string
 | 
						|
 | 
						|
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 = string.split(e, '/')
 | 
						|
	    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]
 | 
						|
 | 
						|
sys.exit(main())
 |