File indexing completed on 2024-04-21 05:41:55

0001 #!/usr/bin/perl -w
0002 
0003 # Laurent Montel <montel@kde.org> (2014)
0004 # KTemporaryFile->QTemporaryFile
0005 # find -iname "*.cpp" -o -iname "*.h" |xargs kde-dev-scripts/kf5/convert-ktemporaryfile.pl
0006 
0007 use strict;
0008 use File::Basename;
0009 use lib dirname($0);
0010 use functionUtilkde;
0011 
0012 foreach my $file (@ARGV) {
0013 
0014     my $modified;
0015     open(my $FILE, "<", $file) or warn "We can't open file $file:$!\n";
0016     my %varname = ();
0017     my %finalized_called = ();
0018     my @l = map {
0019         my $orig = $_;
0020 
0021         my $regexpKMenuLocal = qr/
0022           ^(\s*)           # (1) Indentation
0023           KTemporaryFile\s+
0024           (\w+)            # (2) variable name
0025           /x; # /x Enables extended whitespace mode
0026         if (my ($left, $var) = $_ =~ $regexpKMenuLocal) {
0027            $varname{$var} = 1;
0028            s/\bKTemporaryFile\b/QTemporaryFile/;
0029         }
0030 
0031         my $regexp = qr/
0032            ^(\s*)                        # (1) Indentation, possibly "Classname *" (the ? means non-greedy)
0033            (.*?)                         # (2) Possibly "Classname *" (the ? means non-greedy)
0034            (\w+)                         # (3) variable name
0035            \s*=\s*                       #   assignment
0036            new\s+KTemporaryFile\s*\((.*)\)        # (4)  new KTemporaryFile(...,...,...,...);
0037            (.*)$                         # (5) afterreg
0038            /x; # /x Enables extended whitespace mode
0039         if (my ($indent, $left, $var, $argument, $afterreg) = $_ =~ $regexp) {
0040            #warn "KTemporaryFile found \'$var\' \'$argument\'\n";
0041            $varname{$var} = 1;
0042            s/\bKTemporaryFile\b/QTemporaryFile/;
0043         }
0044 
0045         my $regexpKMenuFunction = qr/
0046           (.*?)
0047           KTemporaryFile\s*\*
0048           (\w+)            # (2) variable name
0049           /x; # /x Enables extended whitespace mode
0050         if (my ($left, $var) = $_ =~ $regexpKMenuFunction) {
0051            #warn "Found KTemporaryFile in function!!!! $var\n";
0052            $varname{$var} = 1;
0053            s/\bKTemporaryFile\b/QTemporaryFile/;
0054         }
0055 
0056         if (/(\w+)\.setPrefix\s*\((.*)\)/) {
0057            my $var = $1;
0058            if ( defined $varname{$var} ) {
0059                my $newContructor= $2 . "QLatin1String(\"/myapp_XXXXXX.txt\")";
0060                warn "$file : KTemporaryFile uses setPrefix add '$newContructor'\n";
0061                
0062                $_ = "//code was $_";
0063                $_ .= "//Add to constructor and adapt if necessary: $newContructor \n";
0064                
0065            }
0066         }
0067 
0068         if (/(\w+)\->setPrefix\s*\((.*)\)/) {
0069            my $var = $1;
0070            if ( defined $varname{$var} ) {
0071                my $newContructor= $2 . "QLatin1String(\"/myapp_XXXXXX.txt\")";
0072                warn "$file : KTemporaryFile uses setPrefix add '$newContructor'\n";
0073                $_ = "//code was $_";
0074                $_ .= "//Add to constructor and adapt if necessary: $newContructor \n";
0075            }
0076         }
0077         if (/(\w+)\.setSuffix\s*\((.*)\)/) {
0078            my $var = $1;
0079            if ( defined $varname{$var} ) {
0080                my $newContructor= "QDir::tempPath() + QLatin1String(\"/myapp_XXXXXX\") + QLatin1String($2)";
0081                warn "$file : KTemporaryFile uses setPrefix add '$newContructor'\n";
0082                $_ = "//code was $_";
0083                $_ .= "//Add to constructor and adapt if necessary: $newContructor \n";
0084            }
0085         }
0086 
0087         if (/(\w+)\->setSuffix\s*\((.*)\)/) {
0088            my $var = $1;
0089            if ( defined $varname{$var} ) {
0090                my $newContructor= "QDir::tempPath() + QLatin1String(\"/myapp_XXXXXX\") + QLatin1String($2)";
0091                warn "$file :KTemporaryFile uses setPrefix add '$newContructor'\n";
0092                $_ = "//code was $_";
0093                $_ .= "//Add to constructor and adapt if necessary: $newContructor \n";
0094            }
0095         }
0096 
0097 
0098         s/\bKTemporaryFile\b/QTemporaryFile/g;
0099         s/\<KTemporaryFile\b\>/\<QTemporaryFile>/ if (/#include/);
0100         s/\<ktemporaryfile.h\>/\<QTemporaryFile>/ if (/#include/);
0101         $modified ||= $orig ne $_;
0102         $_;
0103     } <$FILE>;
0104 
0105     if ($modified) {
0106         open (my $OUT, ">", $file);
0107         print $OUT @l;
0108         close ($OUT);
0109     }
0110 }
0111 
0112 functionUtilkde::diffFile( "@ARGV" );