diff options
Diffstat (limited to '')
-rwxr-xr-x | debian/scripts/install-manpages.pl | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/debian/scripts/install-manpages.pl b/debian/scripts/install-manpages.pl new file mode 100755 index 0000000..e2b5fe9 --- /dev/null +++ b/debian/scripts/install-manpages.pl @@ -0,0 +1,78 @@ +#!/usr/bin/perl -w +# just a little hack to install the man pages in the right directories, +# replacing VERSION with the right version... +use strict; + +my @manpages = ("adduser", "adduser.conf", "deluser", "deluser.conf"); +my $links; +@{$links->{"adduser"}} = ("addgroup"); +@{$links->{"deluser"}} = ("delgroup"); + +my $version = shift || "VERSION"; +my $origdir = shift || "./"; +$origdir .= "/" unless($origdir =~ /\/$/); +my $mandir = shift || "/usr/share/man/"; +$mandir .= "/" unless($mandir =~ /\/$/); + +opendir(DIR, $origdir); +my $file; +foreach $file (readdir(DIR)) { + next unless(-f $origdir.$file); + my($language, $page, $section); + foreach(@manpages) { + if($file =~ /^$_\.[1-8]/) { + $page = $_; + last; + } + } + next unless($page); # this file is not a manpage + next unless ($section = $file) =~ s/^$page\.([1-8]).*/$1/; + ($language = $file) =~ s/^$page\.$section\.?//; + + my ($destfile, $destdir); + if($language) { + $destdir = $mandir.$language."/man".$section; + $destfile = $destdir."/".$page.".".$section; + my $relfile = $page.".".$section.".gz"; + if (not -d $destdir) { + mkdirs($destdir); + } + foreach(@{$links->{$page}}) { + my $linkfile = $mandir.$language."/man".$section."/".$_.".".$section.".gz"; + printf("Creating symlink from %s to %s...\n", $destfile, $linkfile); + symlink($relfile, $linkfile); + } + } else { + $destdir = $mandir."/man".$section; + $destfile = $destdir."/".$page.".".$section; + my $relfile = $page.".".$section.".gz"; + if (not -d $destdir) { + mkdirs($destdir); + } + foreach(@{$links->{$page}}) { + my $linkfile = $mandir."man".$section."/".$_.".".$section.".gz"; + printf("Creating symlink from %s to %s...\n", $destfile, $linkfile); + symlink($relfile, $linkfile); + } + } + + printf("Installing manpage %s%s in %s...\n", $page, $language ? "(".$language.")" : "", $destfile); + open(IN, "<$origdir$file"); + open(OUT, ">$destfile") or die "can't open $destfile: $!\n"; + while(<IN>) { + $_ =~ s/VERSION/$version/g; + print OUT $_; + } + close(IN); + close(OUT); + printf("Compressing and setting permissions for %s...\n", $destfile); + system("/bin/gzip", "-9n", $destfile); + chmod(0644, $destfile.".gz"); +} +closedir(DIR); + +sub mkdirs { + my (@dirs) = @_; + system('install', '-o', 'root', '-g', 'root', '-d', '-m0755', '--', @dirs) == 0 + or die("exec install -d @dirs failed"); +} |