may guess wrong based on the file extension.
It also supports translated man pages, by looking for extensions
-like .ll.8 and .ll_LL.8
+like .ll.8 and .ll_LL.8, or by use of the --language switch.
If dh_installman seems to install a man page into the wrong section or with
the wrong extension, this is because the man page has the wrong section
section. If dh_installman seems to install a man page into a directory
like /usr/share/man/pl/man1/, that is because your program has a
name like "foo.pl", and dh_installman assumes that means it is translated
-into Polish. There is currently no support for resolving this ambiguity;
-programs in debian should proably not have extensions like that anyway.
+into Polish. Use --language=C to avoid this.
Any man page filenames specified as parameters will be installed into the
first package dh_installman is told to act on. By default, this is the
Install all files specified by command line parameters in ALL packages
acted on.
+=item B<--language>=ll
+
+Use this to specify that the man pages being acted on are written in the
+specified language.
+
=item I<manpage ...>
Install these man pages into the first package acted on. (Or in all
my @sodests;
foreach my $package (@{$dh{DOPACKAGES}}) {
+ next if is_udeb($package);
+
my $tmp=tmpdir($package);
my $file=pkgfile($package,"manpages");
my @manpages;
open (IN, $page) or die "$page: $!";
}
while (<IN>) {
- if (/^\.TH\s+\S+\s+(\d+\S*)/) {
+ if (/^\.TH\s+\S+\s+"?(\d+[^"\s]*)"?/) {
$section=$1;
last;
}
my ($instname)=$basename=~m/^(.*)\./;
my $destdir="$tmp/usr/share/man/man$realsection/";
- # Translated man pages are typically specified by adding the
- # language code to the filename, so detect that and
- # redirect to appropriate directory, stripping the code.
- my ($langcode)=$basename=~m/.*\.([a-z][a-z](?:_[A-Z][A-Z])?)\.(?:[1-9]|man)/;
+ my $langcode;
+ if (! defined $dh{LANGUAGE} || ! exists $dh{LANGUAGE}) {
+ # Translated man pages are typically specified by adding the
+ # language code to the filename, so detect that and
+ # redirect to appropriate directory, stripping the code.
+ ($langcode)=$basename=~m/.*\.([a-z][a-z](?:_[A-Z][A-Z])?)\.(?:[1-9]|man)/;
+ if (defined $langcode && $langcode ne '') {
+ # Strip the language code from the instname.
+ $instname=~s/\.$langcode$//;
+ }
+ }
+ elsif ($dh{LANGUAGE} ne 'C') {
+ $langcode=$dh{LANGUAGE};
+ ($instname)=$basename=~m/(.*?)\./;
+ }
+
if (defined $langcode && $langcode ne '') {
$destdir="$tmp/usr/share/man/$langcode/man$realsection/";
- # Strip the language code from the instname.
- $instname=~s/\.$langcode$//;
}
$destdir=~tr:/:/:s; # just for looks
}
# Test first line of file for the .so thing.
- open (SOTEST,$_) || die "$_: $!";
+ if (/\.gz$/) {
+ open (SOTEST, "zcat $_|") or die "$_: $!";
+ }
+ else {
+ open (SOTEST,$_) || die "$_: $!";
+ }
my $l=<SOTEST>;
close SOTEST;
- if ($l=~m/\.so\s+(.*)/) {
+ if ($l=~m/\.so\s+(.*)\s*/) {
my $solink=$1;
# This test is here to prevent links like ... man8/../man8/foo.8
if (basename($File::Find::dir) eq