 132261446b
			
		
	
	132261446b
	
	
	
		
			
			Adding to repository to make it easy to access and for reference if someone wants to make a similar hack or write a better one. Review URL: https://webrtc-codereview.appspot.com/395002 git-svn-id: http://webrtc.googlecode.com/svn/trunk@1687 4adac7df-926f-26a2-2b94-8c16560cd09d
		
			
				
	
	
		
			162 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			162 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # 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)
 |