summaryrefslogtreecommitdiffstats
path: root/scripts/kDebug2kdDebug.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/kDebug2kdDebug.sh')
-rwxr-xr-xscripts/kDebug2kdDebug.sh154
1 files changed, 154 insertions, 0 deletions
diff --git a/scripts/kDebug2kdDebug.sh b/scripts/kDebug2kdDebug.sh
new file mode 100755
index 00000000..a238845e
--- /dev/null
+++ b/scripts/kDebug2kdDebug.sh
@@ -0,0 +1,154 @@
+## kDebug2kdDebug.sh
+## Script to port from qDebug, kdebug, kDebugInfo etc. to kdDebug/kdWarning/...
+## Example:
+## kDebugInfo( [area,] "format %a - %b", arga, argb )
+## becomes
+## kdDebug( [area] ) << "format " << arga << " - " << argb << endl;
+##
+## Written by David Faure <faure@kde.org>, licensed under GPL.
+## 17/03/2000
+
+find $1 -name '*[cCph]' -type f | xargs grep -H -i 'ebug(\|warning(' \
+| grep -v 'kdDebug\|kdWarning' \
+| grep -v include \
+| sed -e "s#:.*##" \
+| sort -u \
+| while read file; do
+echo -n "working on $file "
+cp $file $file.tmp
+perl -w -i -e \
+'
+$inkdebug=0;
+while (<>)
+{
+ if ( $inkdebug )
+ {
+ chop;
+ #print "Reading line : " . $_ . "\n";
+ $statement .= $_;
+ }
+ elsif ( /kdebug\s*\(/ || /kDebug[a-zA-Z]*\s*\(/ || /qDebug\s*/ || /qWarning\s*/ )
+ {
+ # Very old kdebug stuff :)
+ s/kdebug\s*\(\s*KDEBUG_INFO,/kDebugInfo\(/;
+ s/kdebug\s*\(\s*0,/kDebugInfo\(/;
+ s/kdebug\s*\(\s*KDEBUG_WARN,/kDebugWarning\(/;
+ s/kdebug\s*\(\s*KDEBUG_ERROR,/kDebugError\(/;
+ s/kdebug\s*\(\s*KDEBUG_FATAL,/kDebugFatal\(/;
+
+ $inkdebug = 1;
+ chop;
+ $statement = $_;
+ }
+
+ if ( $inkdebug )
+ {
+ if ( /\)\s*;/ ) # look for );
+ {
+ $inkdebug = 0;
+ $_ = $statement;
+ ## Ok, now we have the full line
+ ## 1 - Parse
+ if (s/(^.*kDebug[a-zA-Z]*)\s*\(\s*//) {
+ $line=$1; # has the indentation, //, and the kDebug* name
+ } elsif (s/(^.*qDebug)\s*\(\s*// || s/(^.*qWarning)\s*\(\s*//) {
+ $line=$1;
+ } else { die "parse error on kDebug/qDebug/qWarning..."; }
+ $line=$1; # has the indentation, //, and the kDebug* name
+ $line =~ s/kDebugInfo/kdDebug/;
+ $line =~ s/kDebugArea/kdDebug/;
+ $line =~ s/qDebug/kdDebug/;
+ $line =~ s/qWarning/kdWarning/;
+ $line =~ s/kDebugWarning/kdWarning/;
+ $line =~ s/kDebugError/kdError/;
+ $line =~ s/kDebugFatal/kdFatal/;
+ $area = "";
+ if ( s/^([0-9]+)\s*,\s*//) # There is an area
+ {
+ $area = $1; # Store it
+ $line .= "(" . $area . ")";
+ } elsif ( s/^(KBABEL[^,]*)\s*,\s*//)
+ { # Example of support for #defined area (here KBABEL.*)
+ $area = $1; # Store it
+ $line .= "(" . $area . ")";
+ } else
+ { $line .= "()"; } # You can set an area here if converting qDebugs
+
+ $arguments = ""; # for final test
+ $commented = 0;
+ if ( !s/^\"([^\"]*)\"// ) # There is no format
+ {
+ s/\s*\)\s*;\s*$//;
+ $commented = s/\s*\)\s*;\s*\*\/$//; # terminating with */
+ $line = $line . " << " . $_ ;
+ } else
+ {
+ $format = $1;
+ # If we stopped on a \" we need to keep adding to format
+ while ( $format =~ m/\\$/ )
+ { s/^([^\"]*)\"// || die "problem"; $format .= "\"" . $1; }
+ s/\s*\)\s*;\s*$/,/; # replace trailing junk with , for what follows
+ $commented = s/\s*\)\s*;\s*\*\/$/,/; # terminating with */
+ $arguments = $_;
+
+ ## 2 - Look for %x
+ @stringbits = split( "(%[0-9]*[a-z])", $format );
+ foreach ( @stringbits )
+ {
+ #print $_ . "\n";
+ if ( /(%[0-9]*[a-z])/ ) # This item is a format
+ {
+ ## 3 - Find argument
+ # kludge for QString(a,b) constructions
+ $arguments =~ s/(QString\s*\([^,]+,[^,]+\))/QStrKLUDGE/;
+ $kludge = $1;
+ $arguments =~ s/\s*([^,]+)\s*,//;
+ # Remove trailing .ascii() and latin1()
+ $arg = $1;
+ $arg =~ s/QStrKLUDGE/$kludge/; ## restore original arg
+ $arg =~ s/\.ascii\(\)$//; # remove
+ $arg =~ s/\.latin1\(\)$//; # remove
+ $arg =~ s/debugString\(([^\)]+)\)/$1/; # remove
+ # If "a ? b : c" then add parenthesis
+ if ( $arg =~ m/.+\s*\?\s*.+\s*:\s*.+/ ) {
+ $arg = "(" . $arg . ")";
+ }
+ $line = $line . " << " . $arg;
+ } else # This item is some litteral
+ {
+ $line = $line . " << \"" . $_ . "\"" if ($_);
+ }
+ }
+
+ }
+ $arguments =~ s/,$//; # Remove trailing slash before next check
+ if ( $arguments ) {
+ print STDERR "Non-processed (Information lost! Check the file!) : " . $arguments . "\n";
+ }
+ $line = $line . " << endl;\n";
+ if ( $commented ) { $line .= "\*/"; }
+ print $line;
+ }
+ }
+ else
+ {
+ # Normal line
+ print;
+ }
+}
+if ( $inkdebug )
+{
+ print STDERR "Warning, unterminated kDebug call !! Check the file !\n";
+ print $arguments;
+}
+' $file.tmp
+if cmp -s $file $file.tmp > /dev/null 2>&1 ; then
+ echo "unchanged"
+ rm $file.tmp
+else
+ echo "patching"
+ mv $file.tmp $file
+fi
+
+done
+