X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=Porting%2Fmanicheck;h=9fff8613b39074e92a7332085b6392ca001ec355;hb=85831461cd8850ede28b33bf03b6fe7a7904e0dc;hp=251c7ee5bfd2954617cca9af04e915ca4830f332;hpb=6800ac04a92fd86e0a6ce0a1f5bba1889703974c;p=p5sagit%2Fp5-mst-13.2.git diff --git a/Porting/manicheck b/Porting/manicheck index 251c7ee..9fff861 100644 --- a/Porting/manicheck +++ b/Porting/manicheck @@ -1,86 +1,27 @@ -#!/usr/bin/perl -ws +#!/usr/bin/perl -# -# manicheck - check files against the MANIFEST -# -# Without options prints out (possibly) two lines: -# -# extra: a b c -# missing: d -# -# With option -x prints out only the missing files (and without the "extra: ") -# With option -m prints out only the extra files (and without the "missing: ") -# - -BEGIN { - $SIG{__WARN__} = sub { - help() if $_[0] =~ /"main::\w" used only once: possible typo at /; - }; -} +# output a list of: +# a) files listed in MANIFEST which don't exist +# b) files which exist but which aren't in MANIFEST use strict; - -sub help { - die <) { - if (/^(\S+)\t+(.+)$/) { - $mani{$1}++; - my $d = dirname($1); - while($d ne '.') { - $mand{$d}++; - $d = dirname($d); - } - } else { - warn "MANIFEST:$.:$_"; - } -} - -close(MANIFEST); - -my %find; +use warnings; use File::Find; -find(sub { - my $n = $File::Find::name; - $n =~ s:^\./::; - $find{$n}++; - }, '.' ); - -my @xtra; -my @miss; - -for (sort keys %find) { - push @xtra, $_ unless $mani{$_} || $mand{$_}; -} -for (sort keys %mani) { - push @miss, $_ unless $find{$_}; +open my $fh, 'MANIFEST' or die "Can't read MANIFEST: $!\n"; +my @files = map { (split)[0] } <$fh>; +close $fh; +for (@files) { + print "$_ from MANIFEST doesn't exist\n" if ! -f; } - -$" = "\n" if $l; - -unshift @xtra, "extra:" if @xtra && !$x; -unshift @miss, "missing:" if @miss && !$m; - -print "@xtra\n", if @xtra && !$m; -print "@miss\n" if @miss && !$x; - -exit 0; +my %files = map { $_ => 1 } @files; +find { + wanted => sub { + my $x = $File::Find::name; $x =~ s/^..//; + return if -d; + return if $_ eq '.gitignore'; + return if $x =~ /^\.git\b/; + print "$File::Find::name not in MANIFEST\n" if !$files{$x}; + }, +}, ".";