source: vendor/python/2.5/Tools/scripts/cvsfiles.py

Last change on this file was 3225, checked in by bird, 18 years ago

Python 2.5

File size: 1.7 KB
Line 
1#! /usr/bin/env python
2
3"""Print a list of files that are mentioned in CVS directories.
4
5Usage: cvsfiles.py [-n file] [directory] ...
6
7If the '-n file' option is given, only files under CVS that are newer
8than the given file are printed; by default, all files under CVS are
9printed. As a special case, if a file does not exist, it is always
10printed.
11"""
12
13import os
14import sys
15import stat
16import getopt
17
18cutofftime = 0
19
20def main():
21 try:
22 opts, args = getopt.getopt(sys.argv[1:], "n:")
23 except getopt.error, msg:
24 print msg
25 print __doc__,
26 return 1
27 global cutofftime
28 newerfile = None
29 for o, a in opts:
30 if o == '-n':
31 cutofftime = getmtime(a)
32 if args:
33 for arg in args:
34 process(arg)
35 else:
36 process(".")
37
38def process(dir):
39 cvsdir = 0
40 subdirs = []
41 names = os.listdir(dir)
42 for name in names:
43 fullname = os.path.join(dir, name)
44 if name == "CVS":
45 cvsdir = fullname
46 else:
47 if os.path.isdir(fullname):
48 if not os.path.islink(fullname):
49 subdirs.append(fullname)
50 if cvsdir:
51 entries = os.path.join(cvsdir, "Entries")
52 for e in open(entries).readlines():
53 words = e.split('/')
54 if words[0] == '' and words[1:]:
55 name = words[1]
56 fullname = os.path.join(dir, name)
57 if cutofftime and getmtime(fullname) <= cutofftime:
58 pass
59 else:
60 print fullname
61 for sub in subdirs:
62 process(sub)
63
64def getmtime(filename):
65 try:
66 st = os.stat(filename)
67 except os.error:
68 return 0
69 return st[stat.ST_MTIME]
70
71if __name__ == '__main__':
72 main()
Note: See TracBrowser for help on using the repository browser.