import sys, os
def data2unix(lines):
data = []
modif = 0
for line in lines:
line1 = line.replace('\r', '')
modif = modif + (line!=line1)
data.append(line1)
return data, modif
def data2win(lines):
data = []
modif = 0
for line in lines:
if line[-1:] == '\n':
line1 = line[:-1].replace('\r', '') + '\r\n'
modif = modif + (line!=line1)
data.append(line1)
return data, modif
def file2unix(name, verbose=1):
"Turn a file's end-of-line into Unix flavor without changing the timestamp."
s = os.stat(name)
f = open(name, 'rb')
data, modif = data2unix(f)
f.close()
if modif:
if verbose:
print "Unix'ed %d lines in %s" % (modif, name)
f = open(name, 'wb')
f.writelines(data)
f.close()
os.utime(name, (s.st_atime, s.st_mtime))
return modif
def file2win(name, verbose=1):
"Turn a file's end-of-line into Windows flavor without changing the timestamp."
s = os.stat(name)
f = open(name, 'rb')
data, modif = data2win(f)
f.close()
if modif:
if verbose:
print "Win'ed %d lines in %s" % (modif, name)
f = open(name, 'wb')
f.writelines(data)
f.close()
os.utime(name, (s.st_atime, s.st_mtime))
return modif
class Directory:
def __init__(self, srcpath, relpath=''):
self.path = srcpath
self.relpath = relpath
self.subdirs = []
self.fileinfo = {}
entryname = os.path.join(srcpath, 'CVS', 'Entries')
try:
f = open(entryname, 'r')
except IOError:
print >> sys.stderr, "note: cannot read", entryname
return
lines = f.readlines()
f.close()
entryname2 = os.path.join(srcpath, 'CVS', 'Entries.Log')
try:
f = open(entryname2, 'r')
except IOError:
pass
else:
for line in f.readlines():
if line[:2] == 'A ':
lines.append(line[2:])
elif line[:2] == 'R ':
lines.remove(line[2:])
f.close()
for line in lines:
line = line.split('/')
if len(line) >= 6:
fname1 = line[1]
if 'D' in line[0]:
self.subdirs.append(fname1)
else:
self.fileinfo[fname1] = line
def subdir(self, name):
return Directory(os.path.join(self.path, name),
os.path.join(self.relpath, name))
def alldirs(self):
result = [self]
for name in self.subdirs:
result += self.subdir(name).alldirs()
return result
def unknownfiles(self):
try:
return [filename for filename in os.listdir(self.path)
if not self.fileinfo.has_key(filename) and
filename not in self.subdirs and
filename != 'CVS']
except OSError:
return []
if __name__ == '__main__':
# print the full name of all the files
root = Directory('.')
for dir in root.alldirs():
for name, info in dir.fileinfo.items():
print os.path.join(dir.path, name)
## # Example: print the full name of the files with revision 1.1.1.1
## root = Directory('.')
## for dir in root.alldirs():
## for name, info in dir.fileinfo.items():
## if info[2] == '1.1.1.1':
## print os.path.join(dir.path, name)
|