Fixed the patch (it had bit-rotted over time). Also changed it
[rsync/rsync-patches.git] / verify-patches
index 8d2e8bd..28d37b9 100755 (executable)
@@ -3,14 +3,17 @@
 use strict;
 use Getopt::Long;
 
-my($no_cvs, $minor_updates);
+my($no_cvs, $failures_only, $minor_updates);
 
 &Getopt::Long::Configure('bundling');
 GetOptions(
     'no-cvs|n' => \$no_cvs,
+    'failures-only|f' => \$failures_only,
     'minor-updates|u' => \$minor_updates,
 ) or &usage;
 
+my $interesting_fuzz = $minor_updates ? '\d' : '[2-9]';
+
 chdir('patches') if -d 'patches';
 
 if (!-f 'verify-patches') {
@@ -61,7 +64,7 @@ unless ($no_cvs) {
 DIFF:
 foreach my $diff (@ARGV) {
     next unless $diff =~ /\.diff$/;
-    next if $diff =~ /gzip-rsyncable\.diff$/;
+    next if $diff =~ /gzip-rsyncable[-_a-z]*\.diff$/;
     $diff =~ s#^(patches|\.\.)/##;
 
     open(IN, "../$diff") or die $!;
@@ -207,15 +210,15 @@ sub apply_patch
            push(@rejects, $_);
        } elsif (/^Hunk #\d+ FAILED/) {
            $saw_failure = 1;
-       } elsif (/^Hunk #\d+ succeeded at \d+( with fuzz )?/) {
+       } elsif (/^Hunk #\d+ succeeded at \d+( with fuzz $interesting_fuzz)?/o) {
            $saw_fuzz ||= defined $1;
            $saw_offset = 1;
        }
     }
     close IN;
     return 'F,D,E' if $saw_failure;
-    return 'D,E' if $saw_fuzz;
-    return 'D,U,N' if $saw_offset;
+    return 'D,E' if $saw_fuzz && !$failures_only;
+    return 'D,U,N' if $saw_offset && !$failures_only;
     'N';
 }
 
@@ -238,7 +241,7 @@ sub generate_new_patch
        next if /^(diff -|Index: |Only in )/;
        s#^\Q--- cvsdir/\E#--- orig/#;
        s#^\Q+++ workdir/\E#+++ #;
-       s#(\.000000000)? \+0000$##;
+       s#(\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d)(\.\d\d\d\d\d\d\d\d\d)? \+0000$#$1#;
        print OUT $_;
     }
     close IN;
@@ -260,18 +263,20 @@ sub restore_cvsdir
     return unless $has_dependencies;
     $has_dependencies = 0;
 
+    chdir('cvsdir') or die $!;
     foreach (glob('*.~[1-9]~'), glob('*/*.~[1-9]~')) {
        my $fn;
        ($fn = $_) =~ s/\.~1~$//;
        if ($fn eq $_) {
            unlink($_);
-       } elsif (-r $fn) {
-           rename($_,  $fn);
+       } elsif (-r $_) {
+           rename($_, $fn);
        } else {
            unlink($_);
            unlink($fn);
        }
     }
+    chdir('..') or die $!;
 }
 
 sub usage