Fix broken useless-if-before-free script.
[pspp] / build-aux / useless-if-before-free
index 1cf4cb03f643859ab6f18274185b91abb47c788a..89e785962616540c28077bf5906cc54cb7a3f248 100755 (executable)
@@ -2,7 +2,7 @@
 # Detect instances of "if (p) free (p);".
 # Likewise for "if (p != NULL) free (p);".  And with braces.
 
-my $VERSION = '2008-02-10 22:17'; # UTC
+my $VERSION = '2008-04-29 17:55'; # UTC
 # The definition above must lie within the first 8 lines in order
 # for the Emacs time-stamp write hook (at end) to update it.
 # If you change this file with Emacs, please let the write hook
@@ -31,6 +31,14 @@ use Getopt::Long;
 
 (my $ME = $0) =~ s|.*/||;
 
+# use File::Coda; # http://meyering.net/code/Coda/
+END {
+  defined fileno STDOUT or return;
+  close STDOUT and return;
+  warn "$ME: failed to close standard output: $!\n";
+  $? ||= 1;
+}
+
 sub usage ($)
 {
   my ($exit_code) = @_;
@@ -77,8 +85,8 @@ EOF
 }
 
 {
-  sub EXIT_NO_MATCH {0}
-  sub EXIT_MATCH {1}
+  sub EXIT_MATCH {0}
+  sub EXIT_NO_MATCH {1}
   sub EXIT_ERROR {2}
   my $err = EXIT_NO_MATCH;
 
@@ -115,8 +123,8 @@ EOF
         {
           if ($line =~
               /\b(if\s*\(\s*(\S+?)(?:\s*!=\s*NULL)?\s*\)
-               (?:   \s*$regexp\s*\(\s*\2\s*\)|
-                \s*\{\s*$regexp\s*\(\s*\2\s*\)\s*;\s*\}))/sx)
+               (?:   \s*$regexp\s*\((?:\s*\([^)]+\))?\s*\2\s*\)|
+                \s*\{\s*$regexp\s*\((?:\s*\([^)]+\))?\s*\2\s*\)\s*;\s*\}))/sx)
             {
               $found_match = 1;
               $list