general improvements
[gitweb.git] / t / check-non-portable-shell.pl
index 166d64d4a2f05e76f3966080f188b864bf6bf4bb..38bfeebd881ae8930d965536a42305771b066477 100755 (executable)
@@ -27,14 +27,14 @@ sub err {
        close $f;
 }
 
+my $line = '';
 while (<>) {
        chomp;
+       $line .= $_;
        # stitch together incomplete lines (those ending with "\")
-       while (s/\\$//) {
-               $_ .= readline;
-               chomp;
-       }
+       next if $line =~ s/\\$//;
 
+       $_ = $line;
        /\bcp\s+-a/ and err 'cp -a is not portable';
        /\bsed\s+-[^efn]\s+/ and err 'sed option not portable (use only -n, -e, -f)';
        /\becho\s+-[neE]/ and err 'echo with option is not portable (use printf)';
@@ -48,6 +48,7 @@ sub err {
        /\bexport\s+[A-Za-z0-9_]*=/ and err '"export FOO=bar" is not portable (use FOO=bar && export FOO)';
        /^\s*([A-Z0-9_]+=(\w+|(["']).*?\3)\s+)+(\w+)/ and exists($func{$4}) and
                err '"FOO=bar shell_func" assignment extends beyond "shell_func"';
+       $line = '';
        # this resets our $. for each file
        close ARGV if eof;
 }