| 
									
										
										
										
											2010-03-11 22:53:45 +00:00
										 |  |  | #! /usr/bin/env python3 | 
					
						
							| 
									
										
										
										
											1996-11-27 19:41:55 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-02-08 23:25:46 +00:00
										 |  |  | """(Ostensibly) fix copyright notices in files.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Actually, this sript will simply replace a block of text in a file from one | 
					
						
							|  |  |  | string to another.  It will only do this once though, i.e. not globally | 
					
						
							|  |  |  | throughout the file.  It writes a backup file and then does an os.rename() | 
					
						
							|  |  |  | dance for atomicity. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Usage: fixnotices.py [options] [filenames] | 
					
						
							|  |  |  | Options: | 
					
						
							|  |  |  |     -h / --help | 
					
						
							|  |  |  |         Print this message and exit | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     --oldnotice=file | 
					
						
							|  |  |  |         Use the notice in the file as the old (to be replaced) string, instead | 
					
						
							|  |  |  |         of the hard coded value in the script. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     --newnotice=file | 
					
						
							|  |  |  |         Use the notice in the file as the new (replacement) string, instead of | 
					
						
							|  |  |  |         the hard coded value in the script. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     --dry-run | 
					
						
							|  |  |  |         Don't actually make the changes, but print out the list of files that | 
					
						
							|  |  |  |         would change.  When used with -v, a status will be printed for every | 
					
						
							|  |  |  |         file. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     -v / --verbose | 
					
						
							|  |  |  |         Print a message for every file looked at, indicating whether the file | 
					
						
							|  |  |  |         is changed or not. | 
					
						
							|  |  |  | """
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-09-01 23:29:29 +00:00
										 |  |  | OLD_NOTICE = """/***********************************************************
 | 
					
						
							| 
									
										
										
										
											2000-06-30 23:50:40 +00:00
										 |  |  | Copyright (c) 2000, BeOpen.com. | 
					
						
							|  |  |  | Copyright (c) 1995-2000, Corporation for National Research Initiatives. | 
					
						
							|  |  |  | Copyright (c) 1990-1995, Stichting Mathematisch Centrum. | 
					
						
							|  |  |  | All rights reserved. | 
					
						
							| 
									
										
										
										
											1996-11-27 19:41:55 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-06-30 23:50:40 +00:00
										 |  |  | See the file "Misc/COPYRIGHT" for information on usage and | 
					
						
							|  |  |  | redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. | 
					
						
							| 
									
										
										
										
											2000-09-01 23:29:29 +00:00
										 |  |  | ******************************************************************/ | 
					
						
							| 
									
										
										
										
											1996-11-27 19:41:55 +00:00
										 |  |  | """
 | 
					
						
							| 
									
										
										
										
											2002-02-08 23:25:46 +00:00
										 |  |  | import os | 
					
						
							|  |  |  | import sys | 
					
						
							|  |  |  | import getopt | 
					
						
							| 
									
										
										
										
											1996-11-27 19:41:55 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-09-01 23:29:29 +00:00
										 |  |  | NEW_NOTICE = "" | 
					
						
							| 
									
										
										
										
											2002-02-08 23:25:46 +00:00
										 |  |  | DRYRUN = 0 | 
					
						
							|  |  |  | VERBOSE = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-09-01 23:29:29 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-02-08 23:25:46 +00:00
										 |  |  | def usage(code, msg=''): | 
					
						
							| 
									
										
										
										
											2007-08-03 17:06:41 +00:00
										 |  |  |     print(__doc__ % globals()) | 
					
						
							| 
									
										
										
										
											2002-02-08 23:25:46 +00:00
										 |  |  |     if msg: | 
					
						
							| 
									
										
										
										
											2007-08-03 17:06:41 +00:00
										 |  |  |         print(msg) | 
					
						
							| 
									
										
										
										
											2002-02-08 23:25:46 +00:00
										 |  |  |     sys.exit(code) | 
					
						
							| 
									
										
										
										
											1996-11-27 19:41:55 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def main(): | 
					
						
							| 
									
										
										
										
											2002-02-08 23:25:46 +00:00
										 |  |  |     global DRYRUN, OLD_NOTICE, NEW_NOTICE, VERBOSE | 
					
						
							|  |  |  |     try: | 
					
						
							|  |  |  |         opts, args = getopt.getopt(sys.argv[1:], 'hv', | 
					
						
							|  |  |  |                                    ['help', 'oldnotice=', 'newnotice=', | 
					
						
							|  |  |  |                                     'dry-run', 'verbose']) | 
					
						
							| 
									
										
										
										
											2007-01-10 16:19:56 +00:00
										 |  |  |     except getopt.error as msg: | 
					
						
							| 
									
										
										
										
											2002-02-08 23:25:46 +00:00
										 |  |  |         usage(1, msg) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     for opt, arg in opts: | 
					
						
							|  |  |  |         if opt in ('-h', '--help'): | 
					
						
							|  |  |  |             usage(0) | 
					
						
							|  |  |  |         elif opt in ('-v', '--verbose'): | 
					
						
							|  |  |  |             VERBOSE = 1 | 
					
						
							|  |  |  |         elif opt == '--dry-run': | 
					
						
							|  |  |  |             DRYRUN = 1 | 
					
						
							|  |  |  |         elif opt == '--oldnotice': | 
					
						
							|  |  |  |             fp = open(arg) | 
					
						
							|  |  |  |             OLD_NOTICE = fp.read() | 
					
						
							|  |  |  |             fp.close() | 
					
						
							|  |  |  |         elif opt == '--newnotice': | 
					
						
							|  |  |  |             fp = open(arg) | 
					
						
							|  |  |  |             NEW_NOTICE = fp.read() | 
					
						
							|  |  |  |             fp.close() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1996-11-27 19:41:55 +00:00
										 |  |  |     for arg in args: | 
					
						
							| 
									
										
										
										
											1998-03-24 05:30:29 +00:00
										 |  |  |         process(arg) | 
					
						
							| 
									
										
										
										
											1996-11-27 19:41:55 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-02-08 23:25:46 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | def process(file): | 
					
						
							|  |  |  |     f = open(file) | 
					
						
							| 
									
										
										
										
											1996-11-27 19:41:55 +00:00
										 |  |  |     data = f.read() | 
					
						
							|  |  |  |     f.close() | 
					
						
							| 
									
										
										
										
											2002-02-08 23:25:46 +00:00
										 |  |  |     i = data.find(OLD_NOTICE) | 
					
						
							| 
									
										
										
										
											1996-11-27 19:41:55 +00:00
										 |  |  |     if i < 0: | 
					
						
							| 
									
										
										
										
											2002-02-08 23:25:46 +00:00
										 |  |  |         if VERBOSE: | 
					
						
							| 
									
										
										
										
											2007-08-03 17:06:41 +00:00
										 |  |  |             print('no change:', file) | 
					
						
							| 
									
										
										
										
											2002-02-08 23:25:46 +00:00
										 |  |  |         return | 
					
						
							|  |  |  |     elif DRYRUN or VERBOSE: | 
					
						
							| 
									
										
										
										
											2007-08-03 17:06:41 +00:00
										 |  |  |         print('   change:', file) | 
					
						
							| 
									
										
										
										
											2002-02-08 23:25:46 +00:00
										 |  |  |     if DRYRUN: | 
					
						
							|  |  |  |         # Don't actually change the file | 
					
						
							| 
									
										
										
										
											1998-03-24 05:30:29 +00:00
										 |  |  |         return | 
					
						
							| 
									
										
										
										
											1996-11-27 19:41:55 +00:00
										 |  |  |     data = data[:i] + NEW_NOTICE + data[i+len(OLD_NOTICE):] | 
					
						
							| 
									
										
										
										
											2002-02-08 23:25:46 +00:00
										 |  |  |     new = file + ".new" | 
					
						
							|  |  |  |     backup = file + ".bak" | 
					
						
							| 
									
										
										
										
											1996-11-27 19:41:55 +00:00
										 |  |  |     f = open(new, "w") | 
					
						
							|  |  |  |     f.write(data) | 
					
						
							|  |  |  |     f.close() | 
					
						
							| 
									
										
										
										
											2002-02-08 23:25:46 +00:00
										 |  |  |     os.rename(file, backup) | 
					
						
							|  |  |  |     os.rename(new, file) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1996-11-27 19:41:55 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | if __name__ == '__main__': | 
					
						
							|  |  |  |     main() |