about summary refs log tree commit diff
path: root/scripts/copyright.py
diff options
context:
space:
mode:
authorSworddragon <sworddragon2@aol.com>2010-11-20 11:36:48 +0100
committeroy <Tom_Adams@web.de>2010-11-20 21:23:28 +0100
commitd7b623f5321c13e82b8c5f5b4573be9cf1eaa568 (patch)
tree854a89a827e2560121cc04a4950175cd8dcdc16e /scripts/copyright.py
parent32e52d51ceeebc36d4ad520f730ba8ac4009d8a9 (diff)
downloadzcatch-d7b623f5321c13e82b8c5f5b4573be9cf1eaa568.tar.gz
zcatch-d7b623f5321c13e82b8c5f5b4573be9cf1eaa568.zip
Updated copyright.py
Diffstat (limited to 'scripts/copyright.py')
-rwxr-xr-xscripts/copyright.py78
1 files changed, 58 insertions, 20 deletions
diff --git a/scripts/copyright.py b/scripts/copyright.py
index 051eb4ac..29e1bbfe 100755
--- a/scripts/copyright.py
+++ b/scripts/copyright.py
@@ -1,26 +1,64 @@
-import sys, os
+import os, re, sys
+match = re.search("(.*?)/[^/]*?$", sys.argv[0])
+if match != None:
+	os.chdir(os.getcwd() + "/" + match.group(1))
 
-notice = "/* copyright (c) 2007 magnus auvinen, see licence.txt for more info */\n"
+notice = [b"/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */\n", b"/* If you are missing that file, acquire a complete release at teeworlds.com.                */\n"]
+exclude = ["../src%sengine%sexternal" % (os.sep, os.sep), "../src%sosxlaunch" % os.sep]
+updated_files = 0
 
 def fix_copyright_notice(filename):
+	global updated_files
 	f = open(filename, "rb")
 	lines = f.readlines()
 	f.close()
-	
-	if "/*" in lines[0] and "copyright" in lines[0]:
-		lines[0] = notice
-	else:
-		lines = [notice] + lines
-	file(filename, "wb").writelines(lines)
-	
-for root, dirs, files in os.walk("src"):
-    for name in files:
-    	filename = os.path.join(root, name)
-    	process = 0
-    	if ".h" == filename[-2:] or ".c" == filename[-2:] or ".cpp" == filename[-4:]:
-    		process = 1
-    	if os.sep + "external" + os.sep in filename:
-    		process = 0
-    	
-    	if process:
-    		fix_copyright_notice(filename)
+
+	i = 0
+	length_lines = len(lines)
+	if length_lines > 0:
+		while i <= length_lines and (lines[i].decode("utf-8").lstrip()[:2] == "//" or lines[i].decode("utf-8").lstrip()[:2] == "/*" and lines[i].decode("utf-8").rstrip()[-2:] == "*/") and ("Magnus" in lines[i].decode("utf-8") or "magnus" in lines[i].decode("utf-8") or "Auvinen" in lines[i].decode("utf-8") or "auvinen" in lines[i].decode("utf-8") or "license" in lines[i].decode("utf-8") or "teeworlds" in lines[i].decode("utf-8")):
+			i += 1
+	length_notice = len(notice)
+	if i > 0:
+		j = 0
+		while lines[j] == notice[j]:
+			j += 1
+			if j == length_notice:
+				return
+		k = j
+		j = 0
+		while j < length_notice -1 - k:
+			lines = [notice[j]] + lines
+			j += 1
+		while j < length_notice:
+			lines[j] = notice[j]
+			j += 1
+	if length_lines == 0 or i == 0:
+		j = length_notice - 1
+		while j >= 0:
+			lines = [notice[j]] + lines
+			j -= 1
+	open(filename, "wb").writelines(lines)
+	updated_files += 1
+
+skip = False
+for root, dirs, files in os.walk("../src"):
+	for excluding in exclude:
+		if root[:len(excluding)] == excluding:
+			skip = True
+			break
+	if skip == True:
+		skip = False
+		continue
+	for name in files:
+		filename = os.path.join(root, name)
+
+		if filename[-2:] != ".c" and filename[-4:] != ".cpp" and filename[-2:] != ".h":
+			continue
+
+		fix_copyright_notice(filename)
+
+output = "file"
+if updated_files != 1:
+	output += "s"
+print("*** updated %d %s ***" % (updated_files, output))