3 # Check all '^Patch\d+' lines and '^%patch' lines are matching.
8 @ARGV=<*.spec> if !@ARGV;
13 open FILE,$ARGV or die "open $ARGV: $!";
14 my $file=do { undef $/; <FILE>; } or die "read $ARGV: $!";
15 close FILE or die "close $ARGV: $!";
17 my @source =sort { $a<=>$b; } ($file=~/^\s*patch(\d+)\s*:/mig);
18 my @apply =sort { $a<=>$b; } ($file=~/^\s*%patch(\d+)\b/mig);
19 my @applyno=sort { $a<=>$b; } ($file=~/^#+\s*%patch(\d+)\b/mig);
20 my %applyno=map(($_=>1),@applyno);
21 while (@source || @apply) {
22 my $source=(shift @source)||"";
23 my $apply =(shift @apply)||"";
24 next if $source eq $apply;
25 if ($source ne "" && $apply < $source) {
26 unshift @source,$source;
27 warn "$ARGV: excessive: ".'%'."patch$apply\n";
30 if ($apply ne "" && $source < $apply) {
31 unshift @apply,$apply;
32 if (!$applyno{$source}) {
33 warn "$ARGV: excessive: Patch$source\n";
36 warn "$ARGV: (commented ".'%'."patch$source: Patch$source)\n";