Update to 2.7.3
[profile/ivi/python.git] / Tools / scripts / cvsfiles.py
1 #! /usr/bin/env python
2
3 """Print a list of files that are mentioned in CVS directories.
4
5 Usage: cvsfiles.py [-n file] [directory] ...
6
7 If the '-n file' option is given, only files under CVS that are newer
8 than the given file are printed; by default, all files under CVS are
9 printed.  As a special case, if a file does not exist, it is always
10 printed.
11 """
12
13 import os
14 import sys
15 import stat
16 import getopt
17
18 cutofftime = 0
19
20 def 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
38 def 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
64 def getmtime(filename):
65     try:
66         st = os.stat(filename)
67     except os.error:
68         return 0
69     return st[stat.ST_MTIME]
70
71 if __name__ == '__main__':
72     main()