# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. # # Use of this source code is governed by a BSD-style license # that can be found in the LICENSE file in the root of the source # tree. An additional intellectual property rights grant can be found # in the file PATENTS. All contributing project authors may # be found in the AUTHORS file in the root of the source tree. # NOTE: This is a hack which disobeys a number of conventions and best # practices. It's here just to be easily shared. If it's to remain in the # repository it should be refactored. #!/usr/bin/env python import stringmanipulation import filemanagement import sys trace_remove_key_word = 'kTraceModuleCall' if((len(sys.argv) != 2) and (len(sys.argv) != 3)): print 'parameters are: parent directory [--commit]' quit() if((len(sys.argv) == 3) and (sys.argv[2] != '--commit')): print 'parameters are: parent directory [--commit]' quit() commit = (len(sys.argv) == 3) directory = sys.argv[1]; occurances = [] trace_identifier = 'WEBRTC_TRACE(' extensions = ['.h','.cc','.c','.cpp'] files_to_fix = [] for extension in extensions: files_to_fix.extend(filemanagement.listallfilesinfolder(directory,\ extension)) # This function identifies the begining of a trace statement def istracebegining(line): return stringmanipulation.issubstring(line, trace_identifier) != -1 def endofstatement(line): return stringmanipulation.issubstring(line, ';') != -1 def removekeywordfound(line): return stringmanipulation.issubstring(line, trace_remove_key_word) != -1 # Used to store temporary result before flushing to real file when finished def temporaryfilename(): return 'deleteme.txt' def find_occurances(path, file_name): full_filename = path + file_name file_handle = open(full_filename,'r') line_is_trace = False last_trace_line = -1 for line_nr, line in enumerate(file_handle): if(istracebegining(line)): line_is_trace = True; last_trace_line = line_nr if(line_is_trace): if(removekeywordfound(line)): occurances.append(last_trace_line) if(endofstatement(line)): line_is_trace = False; def remove_occurances(path, file_name): full_file_name = path + file_name if (not filemanagement.fileexist(full_file_name)): print 'File ' + full_file_name + ' is not found.' print 'Should not happen! Ever!' quit() full_temporary_file_name = path + temporaryfilename() temporary_file = open(full_temporary_file_name,'w') original_file = open(full_file_name,'r') next_occurance_id = 0; removing_statement = False if(len(occurances) == next_occurance_id): return next_occurance = occurances[next_occurance_id] next_occurance_id += 1 for line_nr, line in enumerate(original_file): if(line_nr == next_occurance): removing_statement = True if(len(occurances) == next_occurance_id): next_occurance_id = -1 else: next_occurance = occurances[next_occurance_id] next_occurance_id += 1 if (not removing_statement): temporary_file.writelines(line) if(endofstatement(line)): removing_statement = False; temporary_file.close() original_file.close() filemanagement.copyfile(full_file_name,full_temporary_file_name) filemanagement.deletefile(full_temporary_file_name) def nextoccurance(): if (len(occurances) == 0): return -1 return_value = occurances[0] occurances = occurances[1:len(occurances)] return return_value def would_be_removed_occurances(path, file_name): full_file_name = path + file_name if (not filemanagement.fileexist(full_file_name)): print 'File ' + full_file_name + ' is not found.' print 'Should not happen! Ever!' quit() original_file = open(full_file_name,'r') removing_statement = False next_occurance_id = 0; if(len(occurances) == next_occurance_id): return next_occurance = occurances[next_occurance_id] next_occurance_id += 1 for line_nr, line in enumerate(original_file): if(line_nr == next_occurance): removing_statement = True if(len(occurances) == next_occurance_id): return next_occurance = occurances[next_occurance_id] next_occurance_id += 1 if (removing_statement): print line_nr if(endofstatement(line)): removing_statement = False; if(next_occurance == -1): break original_file.close() 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] #print path_dir + filename occurances = [] find_occurances(path_dir, filename) if(not commit): would_be_removed_occurances(path_dir, filename) continue remove_occurances(path_dir, filename)