| #!/usr/bin/env python |
| |
| import stringmanipulation |
| import filemanagement |
| import sys |
| |
| extensions = ['.h'] |
| |
| ignore_these = ['my_ignore_header.h'] |
| |
| if((len(sys.argv) != 2) and (len(sys.argv) != 3)): |
| print 'parameters are: directory [--commit]' |
| quit() |
| |
| directory = sys.argv[1]; |
| if(not filemanagement.pathexist(directory)): |
| print 'path ' + directory + ' does not exist' |
| quit() |
| |
| if((len(sys.argv) == 3) and (sys.argv[2] != '--commit')): |
| print 'parameters are: parent directory extension new extension [--commit]' |
| quit() |
| |
| commit = False |
| if(len(sys.argv) == 3): |
| commit = True |
| |
| for extension in extensions: |
| files_to_fix = filemanagement.listallfilesinfolder(directory,\ |
| extension) |
| |
| def buildincludeguardname(path,filename): |
| full_file_name = 'WEBRTC_' + path + filename |
| full_file_name = full_file_name.upper() |
| full_file_name = stringmanipulation.replaceoccurances(full_file_name, '/', '_') |
| full_file_name = stringmanipulation.replaceoccurances(full_file_name, '\\', '_') |
| full_file_name = stringmanipulation.replaceoccurances(full_file_name, '.', '_') |
| full_file_name += '_' |
| return full_file_name |
| |
| def buildnewincludeguardset(path,filename): |
| include_guard_name = buildincludeguardname(path,filename) |
| if(include_guard_name == ''): |
| return [] |
| return_value = [] |
| return_value.append('#ifndef ' + include_guard_name) |
| return_value.append('#define ' + include_guard_name) |
| return_value.append(include_guard_name) |
| return return_value |
| |
| def printincludeguardset(include_guard_set): |
| print 'First line: ' + include_guard_set[0] |
| print 'Second line: ' + include_guard_set[1] |
| print 'Last line: ' + include_guard_set[2] |
| return |
| |
| include_guard_begin_identifier = ['#ifndef', '#if !defined'] |
| include_guard_second_identifier = ['#define'] |
| def findincludeguardidentifier(line): |
| for begin_identifier in include_guard_begin_identifier: |
| line = stringmanipulation.removealloccurances(line,begin_identifier) |
| for second_identifier in include_guard_begin_identifier: |
| line = stringmanipulation.removealloccurances(line,second_identifier) |
| removed_prefix = [True,''] |
| line = stringmanipulation.whitespacestoonespace(line) |
| while(removed_prefix[0]): |
| removed_prefix = stringmanipulation.removeprefix(line,' ') |
| line = removed_prefix[1] |
| line = stringmanipulation.removealloccurances(line,'(') |
| if(line == ''): |
| return '' |
| word_pos = stringmanipulation.getword(line,0) |
| return_value = line[0:word_pos[1]] |
| return_value = return_value.rstrip('\r\n') |
| return return_value |
| |
| def findoldincludeguardset(path,filename): |
| return_value = [] |
| full_file_name = path + filename |
| file_pointer = open(full_file_name,'r') |
| include_guard_name = '' |
| for line in file_pointer: |
| if (include_guard_name == ''): |
| for compare_string in include_guard_begin_identifier: |
| if (stringmanipulation.issubstring(compare_string, line) != -1): |
| include_guard_name = findincludeguardidentifier(line) |
| if (include_guard_name == ''): |
| break |
| line = line.rstrip('\r\n') |
| return_value.append(line) |
| break |
| else: |
| for compare_string in include_guard_second_identifier: |
| if (stringmanipulation.issubstring(compare_string, line) != -1): |
| if (stringmanipulation.issubstring(include_guard_name, line) != -1): |
| line = line.rstrip('\r\n') |
| return_value.append(line) |
| return_value.append(include_guard_name) |
| return return_value |
| include_guard_name = '' |
| return_value = [] |
| return [] |
| |
| failed_files = [] |
| for index in range(len(files_to_fix)): |
| if(commit): |
| print (100*index)/len(files_to_fix) |
| path_dir = files_to_fix[index][0] |
| filename = files_to_fix[index][1] |
| is_ignore = False |
| for ignore_names in ignore_these: |
| if(filename == ignore_names): |
| is_ignore = True |
| break |
| if(is_ignore): |
| continue |
| old_include_guard_set = findoldincludeguardset(path_dir,filename) |
| if (len(old_include_guard_set) != 3) : |
| failed_files.append('unable to figure out the include guards for ' + filename) |
| continue |
| |
| new_include_guard_set = buildnewincludeguardset(path_dir,filename) |
| if (len(new_include_guard_set) != 3) : |
| failed_files.append('unable to figure out new the include guards for ' + filename) |
| continue |
| |
| if(not commit): |
| print 'old guard: ' + old_include_guard_set[2] |
| print 'new guard: ' + new_include_guard_set[2] |
| continue |
| |
| for index in range(2): |
| # enough to only replace for file. However, no function for that |
| for extension in extensions: |
| filemanagement.replacestringinfolder(path_dir,old_include_guard_set[index],new_include_guard_set[index],extension) |
| # special case for last to avoid complications |
| for extension in extensions: |
| filemanagement.replacestringinfolder(path_dir,' ' + old_include_guard_set[2],' ' + new_include_guard_set[2],extension) |
| filemanagement.replacestringinfolder(path_dir,'\\/\\/' + old_include_guard_set[2],'\\/\\/ ' + new_include_guard_set[2],extension) |
| |
| |
| if(len(failed_files) > 0): |
| print 'Following failures should be investigated manually:' |
| for line in failed_files: |
| print line |