summaryrefslogtreecommitdiff
path: root/fixCopyright.py
diff options
context:
space:
mode:
Diffstat (limited to 'fixCopyright.py')
-rwxr-xr-xfixCopyright.py306
1 files changed, 22 insertions, 284 deletions
diff --git a/fixCopyright.py b/fixCopyright.py
index 940c24564b1..17b91ba387f 100755
--- a/fixCopyright.py
+++ b/fixCopyright.py
@@ -1,11 +1,7 @@
#!/usr/bin/env python
-import os, sys, shutil, fnmatch, re, glob
-from stat import *
+import os, sys, FixUtil
-#
-# Program usage.
-#
def usage():
print "Usage: " + sys.argv[0] + " [options]"
print
@@ -13,263 +9,6 @@ def usage():
print "-h Show this message."
print
-#
-# Returns the new copyright
-#
-def copyright(commentMark, patchIceE):
- result = [ ]
- result.append(commentMark + " **********************************************************************\n")
- result.append(commentMark + "\n")
- result.append(commentMark + " Copyright (c) 2003-2008 ZeroC, Inc. All rights reserved.\n")
- result.append(commentMark + "\n")
- if patchIceE == True:
- result.append(commentMark + " This copy of Ice-E is licensed to you under the terms described in the\n")
- result.append(commentMark + " ICEE_LICENSE file included in this distribution.\n")
- else:
- result.append(commentMark + " This copy of Ice is licensed to you under the terms described in the\n")
- result.append(commentMark + " ICE_LICENSE file included in this distribution.\n")
- result.append(commentMark + "\n")
- result.append(commentMark + " **********************************************************************\n")
- return result
-
-#
-# Replace one copyright
-#
-def replaceCopyright(file, commentMark, commentBegin, commentEnd, newCopyrightLines):
- oldFile = open(file, "r")
- oldLines = oldFile.readlines()
-
- done = 0
- commentFound = 0
- copyrightFound = 0
-
- beforeCopyrightLines = []
- oldCopyrightLines = []
- newLines = []
-
- justDone = 0
-
- if commentBegin == "":
- for x in oldLines:
- if not commentFound and (not x.startswith(commentMark) or x.startswith("#!/usr/bin/env")):
- beforeCopyrightLines.append(x)
- elif not done and x.startswith(commentMark):
- commentFound = 1
- if not copyrightFound and x.lower().find("copyright") != -1:
- copyrightFound = 1
- # skip this comment line
- oldCopyrightLines.append(x)
- else:
- if not done:
- done = 1
- justDone = 1
-
- # Eliminate double blank lines after copyright (bug introduced by previous fixCopyright script)
- if justDone == 1:
- newLines.append(x)
- if x != "\n":
- justDone = 0
- else:
- justDone = 2
- elif justDone == 2:
- if x != "\n":
- newLines.append(x)
- justDone = 0
- else:
- newLines.append(x)
- else:
- for x in oldLines:
- if not done:
- if x.startswith(commentBegin):
- commentFound = 1
- if commentFound:
- if not copyrightFound and x.find("Copyright") != -1:
- copyrightFound = 1
-
- # skip this comment line
- if x.find(commentEnd) != -1:
- done = 1
- justDone = 1
- else:
- beforeCopyrightLines.append(x)
- else:
- # Eliminate double blank lines after copyright (bug introduced by previous fixCopyright script)
- if justDone == 1:
- newLines.append(x)
- if x != "\n":
- justDone = 0
- else:
- justDone = 2
- elif justDone == 2:
- if x != "\n":
- newLines.append(x)
- justDone = 0
- else:
- newLines.append(x)
-
-
- oldFile.close()
-
- if copyrightFound and newCopyrightLines != oldCopyrightLines:
-
- mode = os.stat(file)[ST_MODE]
-
- origFile = file + ".orig"
- shutil.copy2(file, origFile)
-
- newFile = open(file, "w")
- newFile.writelines(beforeCopyrightLines)
- newFile.writelines(newCopyrightLines)
-
- #
- # Hack to keep the .err files
- #
- if fnmatch.fnmatch(file, "*test/Slice/errorDetection/*.ice") > 0:
- newFile.write("\n")
-
- newFile.writelines(newLines)
- newFile.close()
-
- os.chmod(file, S_IMODE(mode))
- print "------ Replaced copyright in " + file + " -------"
-
- #
- # Make sure Windows Makefiles are kept in DOS format.
- #
- if fnmatch.fnmatch(file, "*.mak*") or fnmatch.fnmatch(file, "*Make.rules.bcc") or fnmatch.fnmatch(file, "*Make.rules.msvc"):
- os.popen("unix2dos " + file);
-
- return copyrightFound
-
-#
-# Replace alls copyrights
-#
-def replaceAllCopyrights(path, patchIceE, recursive):
-
- cppCopyright = copyright("//", patchIceE)
- mcCopyright = copyright("; //", patchIceE)
- makefileCopyright = copyright("#", patchIceE)
- vbCopyright = copyright("'", patchIceE)
- pythonCopyright = makefileCopyright
- rubyCopyright = makefileCopyright
- xmlCopyright = []
- xmlCopyright.append("<!--\n");
- xmlCopyright.extend(copyright("", patchIceE))
- xmlCopyright.append("-->\n");
-
- files = os.listdir(path)
- for x in files:
- fullpath = os.path.join(path, x);
- if os.path.isdir(fullpath) and not os.path.islink(fullpath):
- if recursive:
- replaceAllCopyrights(fullpath, patchIceE, True)
- else:
-
- commentMark = ""
- commentBegin = ""
- commentEnd = ""
- copyrightLines = []
- skip = 0
-
- if x == "config" or x == ".depend" or x == ".dummy" or fnmatch.fnmatch(x, "*.dsp") or fnmatch.fnmatch(x, "*.sln") or fnmatch.fnmatch(x, "*.vdproj") or fnmatch.fnmatch(x, "*.err") or fnmatch.fnmatch(x, "*.class") or fnmatch.fnmatch(x, "*.ico") or fnmatch.fnmatch(x, "*.gif") or fnmatch.fnmatch(x, "*.jpg") or fnmatch.fnmatch(x, "*.orig"):
- print "Skipping file " + fullpath + ": no copyright needed"
- skip = 1
- elif fnmatch.fnmatch(x, "Make*") or fnmatch.fnmatch(x, "*.properties"):
- commentMark = "#"
- copyrightLines = makefileCopyright
- elif fnmatch.fnmatch(x, "*.h") or fnmatch.fnmatch(x, "*.cpp") or fnmatch.fnmatch(x, "*.cs") or fnmatch.fnmatch(x, "*.java") or fnmatch.fnmatch(x, "*.l") or fnmatch.fnmatch(x, "*.y"):
- commentMark = "//"
- copyrightLines = cppCopyright
- elif fnmatch.fnmatch(x, "*.ice") and not fnmatch.fnmatch(x, "IllegalIdentifier.ice"):
- commentMark = "//"
- copyrightLines = cppCopyright
- elif fnmatch.fnmatch(x, "*.py"):
- commentMark = "#"
- copyrightLines = pythonCopyright
- elif fnmatch.fnmatch(x, "*.def"):
- commentMark = "#"
- copyrightLines = pythonCopyright
- elif fnmatch.fnmatch(x, "*.cnf"):
- commentMark = "#"
- copyrightLines = pythonCopyright
- elif fnmatch.fnmatch(x, "*.rb"):
- commentMark = "#"
- copyrightLines = rubyCopyright
- elif fnmatch.fnmatch(x, "*.mc"):
- commentMark = "; //"
- copyrightLines = mcCopyright
- elif fnmatch.fnmatch(x, "*.vb"):
- commentMark = "'"
- copyrightLines = vbCopyright
- elif fnmatch.fnmatch(x, "*.xml"):
- commentBegin = "<!--"
- commentEnd = "-->"
- copyrightLines = xmlCopyright
- else:
- print "***** Skipping file " + fullpath + ": unknown type"
- skip = 1
-
- if not skip:
- if replaceCopyright(fullpath, commentMark, commentBegin, commentEnd, copyrightLines) == 0:
- print "***** WARNING: Did not find copyright in " + fullpath
-
-#
-# Find files matching a pattern.
-#
-def find(path, patt):
- result = [ ]
- files = os.listdir(path)
- for x in files:
- fullpath = os.path.join(path, x);
- if os.path.isdir(fullpath) and not os.path.islink(fullpath):
- result.extend(find(fullpath, patt))
- elif fnmatch.fnmatch(x, patt):
- result.append(fullpath)
- return result
-
-def fileMatchAndReplace(filename, matchAndReplaceExps, warn=True):
-
- mode = os.stat(filename)[ST_MODE]
- oldConfigFile = open(filename, "r")
- newConfigFile = open(filename + ".new", "w")
-
- #
- # Compile the regular expressions
- #
- regexps = [ ]
- for (regexp, replace) in matchAndReplaceExps:
- regexps.append((re.compile(regexp), replace))
-
- #
- # Search for the line with the given regular expressions and
- # replace the matching string
- #
- updated = False
- for line in oldConfigFile.readlines():
- for (regexp, replace) in regexps:
- match = regexp.search(line)
- if match != None:
- oldLine = line
- line = oldLine.replace(match.group(1), replace)
- updated = True
- break
- newConfigFile.write(line)
-
- newConfigFile.close()
- oldConfigFile.close()
-
- if updated:
- print "updated " + filename
- os.rename(filename + ".new", filename)
- os.chmod(filename, S_IMODE(mode))
- elif warn:
- print "warning: " + filename + " didn't contain any copyright"
- os.unlink(filename + ".new")
-
-#
-# Main
-#
-
for x in sys.argv[1:]:
if x == "-h":
usage()
@@ -282,46 +21,45 @@ for x in sys.argv[1:]:
ice_dir = os.path.normpath(os.path.join(os.path.dirname(__file__)))
+# **********************************************************************
#
-# Fix copyright header in files
+# Copyright (c) 2003-2008 ZeroC, Inc. All rights reserved.
#
-replaceAllCopyrights(ice_dir, False, False)
-for dir in ["slice", "cpp", "java", "cs", "vb", "php", "py", "rb", "sl", "demoscript", "distribution", "config", "certs"]:
- home = os.path.join(ice_dir, dir)
- if home:
- replaceAllCopyrights(home, False, True)
-
-for dir in ["cppe", "javae"]:
+# This copy of Ice is licensed to you under the terms described in the
+# ICE_LICENSE file included in this distribution.
+#
+# **********************************************************************
+FixUtil.replaceAllCopyrights(ice_dir, False, False)
+for dir in ["slice", "cpp", "java", "cs", "vb", "php", "py", "rb", "demoscript", "distribution", "config", "certs"]:
home = os.path.join(ice_dir, dir)
if home:
- replaceAllCopyrights(home, True, True)
+ FixUtil.replaceAllCopyrights(home, False, True)
#
# Fix various other files that have copyright info in them that
# are not taken care of above.
#
-vpatMatch = "20[0-9][0-9]-(20[0-9][0-9]) ZeroC"
+cpatMatch = "20[0-9][0-9]-(20[0-9][0-9]) ZeroC"
copyright = "2008"
-files = find(ice_dir, "*.rc")
-files += find(ice_dir, "*LICENSE")
-files += find(os.path.join(ice_dir, "cpp", "src"), "Gen.cpp")
-files += find(os.path.join(ice_dir, "cpp", "src"), "Parser.cpp")
-files += find(os.path.join(ice_dir, "cpp", "src", "Slice"), "*Util.cpp")
+files = FixUtil.find(ice_dir, "*.rc")
+files += FixUtil.find(ice_dir, "*LICENSE")
+files += FixUtil.find(os.path.join(ice_dir, "cpp", "src"), "Gen.cpp")
+files += FixUtil.find(os.path.join(ice_dir, "cpp", "src"), "Parser.cpp")
+files += FixUtil.find(os.path.join(ice_dir, "cpp", "src", "Slice"), "*Util.cpp")
files += [os.path.join(ice_dir, "cpp", "src", "ca", "iceca")]
files += [os.path.join(ice_dir, "cpp", "doc", "symboltree.js")]
files += [os.path.join(ice_dir, "cpp", "demo", "Freeze", "backup", "backup")]
-files += find(os.path.join(ice_dir, "cpp"), "*.bat")
+files += FixUtil.find(os.path.join(ice_dir, "cpp"), "*.bat")
files += [os.path.join(ice_dir, "cpp", "test", "IceSSL", "certs", "makecerts")]
files += [os.path.join(ice_dir, "java", "bin", "icegridgui.rpm")]
files += [os.path.join(ice_dir, "java", "src", "IceGridGUI", "Coordinator.java")]
-files += find(os.path.join(ice_dir, "java", "resources", "IceGridAdmin"), "icegridadmin_content_*.html")
+files += FixUtil.find(os.path.join(ice_dir, "java", "resources", "IceGridAdmin"), "icegridadmin_content_*.html")
files += [os.path.join(ice_dir, "config", "makeprops.py")]
-files += find(os.path.join(ice_dir), "AssemblyInfo.cs")
-files += find(os.path.join(ice_dir, "sl"), "*.as*x")
-files += find(os.path.join(ice_dir, "distribution", "src", "rpm"), "*")
-files += find(os.path.join(ice_dir, "php"), "*.php")
+files += FixUtil.find(os.path.join(ice_dir), "AssemblyInfo.cs")
+files += FixUtil.find(os.path.join(ice_dir, "distribution", "src", "rpm"), "*")
+files += FixUtil.find(os.path.join(ice_dir, "php"), "*.php")
files += [os.path.join(ice_dir, "cpp", "test", "Slice", "errorDetection", "IllegalIdentifier.ice")]
for f in files:
- fileMatchAndReplace(f, [(vpatMatch, copyright)])
+ FixUtil.fileMatchAndReplace(f, [(cpatMatch, copyright)])