Alt-App-makepatch
view release on metacpan or search on metacpan
script/makepatch view on Meta::CPAN
## Subroutine prototypes
sub app_options ();
sub app_parse_rc ($$$);
sub app_usage ($);
sub app_usage_filelist ($);
sub catfile ($$);
sub check_extract ($);
sub cleanup ();
sub cvs_excludes($$$);
sub cvs_ignore($);
sub debug (@);
sub dodiff ($$$$);
sub makepatch ();
sub extract ($$);
sub filelist ($);
sub make_filelist ($;$);
sub make_filelist_from_manifest ($);
sub message (@);
sub newfile ($$);
sub quotfn ($);
script/makepatch view on Meta::CPAN
sub cleanup () {
return unless defined $tmpdir;
return unless -d $tmpdir;
verbose ("Cleaning up...\n");
rmtree ($tmpdir);
die ("Okay\n") if $opt_test;
exit (0);
}
sub shellpat($) {
my ($pat) = (@_);
my @a = split (/(\[[^\]]+\]|[*.?])/, $pat);
join ('',
(map { ($_ eq '*' ? '.*' :
($_ eq '?' ? '.' :
($_ eq '.' ? '\.' :
($_ =~ /^\[/ ? $_ : quotemeta ($_)))))
} @a));
}
script/makepatch view on Meta::CPAN
die ("Invalid regex: $re $@");
}
$exclude_pat .= "($re)|";
}
chop ($exclude_pat);
$exclude_pat .= ')';
debug ("Exclude pattern: $exclude_pat\n");
}
}
sub cvs_ignore($) {
my ($f) = @_;
my $fh = do { local *F; *F; };
unless ( open($fh, $f) ) {
warn("$f: $!\n");
return ();
}
local($/) = undef;
my $pat = <$fh>;
close($fh);
$pat =~ s/[\n\r]+/\n/g;
$pat =~ s/\s+$//;
$pat =~ s/^\s+//;
split(/\n/, $pat);
}
sub cvs_excludes($$$) {
my ($f, $dir, $disp) = @_;
my @list = cvs_ignore($f);
return "" unless @list;
for ( $dir, $disp ) {
$_ = "" unless defined $_;
$_ .= '/' if $_ && $_ !~ /\/$/;
$_ = '\A' . quotemeta($_);
}
( run in 0.513 second using v1.01-cache-2.11-cpan-65fba6d93b7 )