=item B<-Xitem>, B<--exclude=item>
Exclude files that contain "item" anywhere in their filename from
-being installed.
+being installed. Note that this includes doc-base files.
=item I<file ...>
}
if (@docs) {
- my $exclude = '';
+ my $exclude = '\\( -type f -or -type l \\)';
if ($dh{EXCLUDE_FIND}) {
- $exclude = ' -and ! \( '.$dh{EXCLUDE_FIND}.' \)';
+ $exclude .= ' -and ! \( '.$dh{EXCLUDE_FIND}.' \)';
+ }
+ if (! compat(4)) {
+ # ignore empty files in subdirs
+ $exclude .= ' -and ! -empty';
}
foreach my $doc (@docs) {
next if excludefile($doc);
- next if ! -s $doc && ! compat(4); # ignore empty BUGS, etc
- if (-d $doc && $exclude) {
+ next if -e $doc && ! -s $doc && ! compat(4); # ignore empty files
+ if (-d $doc && length $exclude) {
my ($dir_basename) = basename($doc);
- # Pity there's no cp --exclude ..
my $pwd=`pwd`;
chomp $pwd;
- complex_doit("cd $doc/.. && find $dir_basename \\( -type f or -type l \\)$exclude -exec cp --parents -dp {} $pwd/$tmp/usr/share/doc/$package \\;");
+ complex_doit("cd '$doc/..' && find '$dir_basename' $exclude -exec cp --parents -dp {} $pwd/$tmp/usr/share/doc/$package \\;");
}
else {
- doit("cp","-a",$doc,"$tmp/usr/share/doc/$package");
+ doit("cp", "-a", $doc, "$tmp/usr/share/doc/$package");
}
}
doit("chown","-R","0:0","$tmp/usr/share/doc");
foreach my $fn (grep {/^${regexp}doc-base(\..*)?$/} readdir(DEB)) {
# .EX are example files, generated by eg, dh-make
next if $fn=~/\.EX$/;
+ next if excludefile($fn);
# Parse the file to get the doc id.
open (IN, "debian/$fn") || die "Cannot read debian/$fn.";
while (<IN>) {
- if (/^Document:\s+(.*)(\s+)?/) {
+ if (/^Document:\s+([-+.a-z0-9]+)/) {
$doc_ids{$fn}=$1;
last;
}