#!/usr/bin/env python # File: convert_comments.py # Copyright (C) WANG Cong # GPLv2 applies. import os, sys def find_double_slash(str): global inComment inString = 0 i = 0 for i in range(len(str)): if str[i]=='\"': if i==0 or str[i-1]!='\\': if inString: inString = 0 else: inString = 1 if str[i]=='/': if i==0 or str[i-1]!='\\': if str[i+1]=='*': if not inString: inComment = 1 if str[i+1]=='/': if (not inString) and (not inComment): break if str[i-1]=='*': if not inString: inComment = 0 if str[i]!='\n': j = str.find('/*') if i+1 < j: print "Warning: // comment contains /**/!" return -1 else: return i return -1 def convert(str, n): s = str[n:] r = s.replace('//','/*', 1) p = r.replace('\n','*/\n') return str[0:n] + p def usage(): print sys.argv[0] + ": $from_file $to_file." def main(): if len(sys.argv)!=3: usage() sys.exit(1) elif sys.argv[1]==sys.argv[2]: print "Please don't specify the same file." sys.exit(2) else: try: rf = open(sys.argv[1], 'r+') wf = open(sys.argv[2], 'wa') except: print "File specified is not existed." sys.exit(2) else: line = rf.readline() while line != '': k = find_double_slash(line) if k != -1: #print "before:"+line line = convert(line, k) #print "after:"+line wf.write(line) line = rf.readline() rf.close() wf.close() return inComment = 0 main()