-rwxr-xr-x | scripts/qdebug-odebug.py | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/scripts/qdebug-odebug.py b/scripts/qdebug-odebug.py index cc1b7ca..636c1b2 100755 --- a/scripts/qdebug-odebug.py +++ b/scripts/qdebug-odebug.py @@ -8,49 +8,52 @@ manual work may be needed after applying the script. """ import sys, sre qDebugExpression = sre.compile( '(.*)(qDebug)\(\s*(.*)\s*\);(.*)' ) qWarningExpression = sre.compile( '(.*)(qWarning)\(\s*(.*)\s*\);(.*)' ) qErrorExpression = sre.compile( '(.*)(qError)\(\s*(.*)\s*\);(.*)' ) qFatalExpression = sre.compile( '(.*)(qFatal)\(\s*(.*)\s*\);(.*)' ) +printfExpression = sre.compile( '(.*)(printf)\(\s*(.*)\s*\);(.*)' ) debugTable = { "qDebug" : "odebug", "qWarning" : "owarn", "qError" : "oerr", - "qFatal" : "ofatal" } + "qFatal" : "ofatal", + "printf" : "odebug" } -allExpressions = ( qDebugExpression, qWarningExpression, qErrorExpression, qFatalExpression ) +allExpressions = ( qDebugExpression, qWarningExpression, qErrorExpression, qFatalExpression, printfExpression ) #################################################################################################### def convert( fname ): print >>sys.stderr, "<NOTE>: Dealing with %s..." % fname for line in file( fname ): match = False for expr in allExpressions: m = expr.match( line ) if m is None: continue else: match = True head, debug, content, tail = m.groups() print >>sys.stderr, "<NOTE>: Groups = ", m.groups() - sys.stdout.write( head.strip() ) + sys.stdout.write( head ) # don't strip() here, because we want to keep indentation sys.stdout.write( debugTable[debug.strip()] ) sys.stdout.write( " << " ) sys.stdout.write( transform( content ).strip() ) sys.stdout.write( " << oendl; " ) - sys.stdout.write( tail + "\n" ) + sys.stdout.write( tail ) + if not tail.endswith( "\n" ): sys.stdout.write( "\n" ) continue # nothing applies if not match: - sys.stdout.write( line + "\n" ) + sys.stdout.write( line ) #################################################################################################### def transform( s ): print >>sys.stderr, "<NOTE>: Transforming '%s'..." % s # check if there is one or more comma's outside of strings groups = [] @@ -92,17 +95,17 @@ def transform( s ): else: # % in formatstring indirective = True i += 1 while i < len( formatstring ) and formatstring[i] not in "%dDiouxXfegEscpn": i += 1 if formatstring[i] == "%": result += "%" else: - result += '" << %s << "' % substitutions[0] + result += '" << %s << "' % substitutions[0].replace( "(const char*)", "" ).replace( ".latin1()", "" ) del substitutions[0] indirective = False i += 1 print >>sys.stderr, "<NOTE>: Result seems to be '%s'" % result return result.replace( "%%", "%" ) #################################################################################################### |