summaryrefslogtreecommitdiff
path: root/regress
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@cvs.openbsd.org>2014-11-24 01:12:15 +0000
committerIngo Schwarze <schwarze@cvs.openbsd.org>2014-11-24 01:12:15 +0000
commit31b8ad6487b3cd6cc6b559f6c720d1df5b1da95c (patch)
tree0943bd902e3238e0ed6013e124e42758181d8a01 /regress
parentda465a0088f2989506cf74f693e49dfda8197f2e (diff)
Kill old crap that is unbelievably slow and produces hundreds of false
positives. Fixing it is not worth the hassle; if we want something like this, it ought to be done in the context of makewhatis(8) and mandoc.db(5). As it stands, its only effect is to discourage people from running our regression suite, which is bad. I got a report from daniel@ that part of it even crashes.
Diffstat (limited to 'regress')
-rw-r--r--regress/Makefile4
-rw-r--r--regress/share/Makefile8
-rw-r--r--regress/share/man/Makefile13
-rw-r--r--regress/share/man/cfman871
-rw-r--r--regress/share/man/no3man42
-rw-r--r--regress/share/man/scatman263
6 files changed, 2 insertions, 1199 deletions
diff --git a/regress/Makefile b/regress/Makefile
index f8d94978539..1e6970f69f7 100644
--- a/regress/Makefile
+++ b/regress/Makefile
@@ -1,4 +1,4 @@
-# $OpenBSD: Makefile,v 1.20 2010/06/28 16:03:15 phessler Exp $
+# $OpenBSD: Makefile,v 1.21 2014/11/24 01:12:14 schwarze Exp $
#
# To run full regression tests you just need two steps:
@@ -15,7 +15,7 @@
# email address.
# To skip the really slow tests, set the REGRESS_SKIP_SLOW variable.
-SUBDIR+= etc bin include lib libexec sbin sys share usr.bin usr.sbin misc gnu
+SUBDIR+= etc bin include lib libexec sbin sys usr.bin usr.sbin misc gnu
install:
diff --git a/regress/share/Makefile b/regress/share/Makefile
deleted file mode 100644
index 45ff5024369..00000000000
--- a/regress/share/Makefile
+++ /dev/null
@@ -1,8 +0,0 @@
-# $OpenBSD: Makefile,v 1.3 2002/02/23 01:25:11 art Exp $
-# $NetBSD: Makefile,v 1.5 1995/04/20 22:37:12 cgd Exp $
-
-SUBDIR+= man
-
-install:
-
-.include <bsd.subdir.mk>
diff --git a/regress/share/man/Makefile b/regress/share/man/Makefile
deleted file mode 100644
index 2f5dacde8d3..00000000000
--- a/regress/share/man/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-# $OpenBSD: Makefile,v 1.10 2014/07/16 20:04:21 okan Exp $
-
-REGRESS_TARGETS=do-cfman do-no3man do-scatman
-REGRESS_SLOW_TARGETS=${REGRESS_TARGETS}
-
-do-cfman:
- perl ${.CURDIR}/cfman /usr/share/man
-do-no3man:
- perl ${.CURDIR}/no3man /usr/share/man
-do-scatman:
- perl ${.CURDIR}/scatman /usr/share/man
-
-.include <bsd.regress.mk>
diff --git a/regress/share/man/cfman b/regress/share/man/cfman
deleted file mode 100644
index eba6b2bf481..00000000000
--- a/regress/share/man/cfman
+++ /dev/null
@@ -1,871 +0,0 @@
-#!/usr/bin/perl -w
-# $OpenBSD: cfman,v 1.5 2007/05/15 22:00:38 jmc Exp $
-
-#
-# cfman - make sure manpages have accurate SEE ALSOs
-# tchrist@perl.com
-
-use strict;
-
-my $VERSION = do {
- my @r = (q$Revision: 1.5 $ =~ /\d+/g);
- sprintf "%d."."%02d" x $#r, @r;
-};
-
-my $Debug = 0;
-
-my($Ignore_Manpath, $CF_File, $CF_Style,
- $No_Guessing, $Verbose, $Rebuild_Indices);
-
-parse_opts();
-
-my $Manpath = get_manpath();
-print "MANPATH is $Manpath\n" if $Debug;
-
-check_can_whence();
-
-# (re)set to what we've computed so that when we launch man below,
-# it'll use the specified or inferred manpath.
-
-unless ($Ignore_Manpath) {
- print "Limiting external manpath\n" if $Debug;
- $ENV{MANPATH} = $Manpath;
-}
-
-for my $tree (split /:/, $Manpath) {
- print "tree chdir('$tree')\n" if $Debug > 1;
- chdir($tree) || die "cannot cd to main tree $tree: $!";
-
- for my $mandir ( grep { -d } <{man,cat}*> ) {
- print "subdir chdir('$tree/$mandir')\n" if $Debug > 1;
- chdir("$tree/$mandir") || die "cannot cd to subdir $tree/$mandir: $!";
- my($ext, @pages);
- ($ext = $mandir) =~ s/^(?:cat|man)//;
- for (@pages = <*.*>) {
- s/\.gz$//;
- s/\.(?:0|${ext}\w*)$//;
- }
- my $option = adjust_ext($ext);
- for my $page (@pages) {
- print "man $option $page\n" if $Debug > 1;
- open(MAN, "man $option $page 2>&1 | col -b |")
- or die "cannot fork man lookup: $!";
- local $/ = '';
- while (<MAN>) {
- next unless /^SEE ALSO/ ||
- $_ eq "S\bSE\bEE\bE A\bAL\bLS\bSO\bO\n";
- s/.\010//g;
- s/-\n\s*//g;
- my @refs = /\S+\(\S+\)/g;
- print "$page.$ext SEE ALSOs @refs\n" if $Debug > 2;
- for my $ref (@refs) {
- my $place = whereis($ref);
- if ($place =~ /\*\*\*/ || $Debug || $Verbose) {
- print "$page.$ext: $ref -> $place\n";
- }
- }
- last;
- }
- 1 while <MAN>; # drain to suppress broken pipe
- close(MAN) || warn "close on man $option $page failed";
- }
- }
-
-}
-
-sub usage {
- print STDERR "@_\n" if @_;
- die "Usage: $0 [-hdrivg] [-f cf-file] [-s cf-style] [mandir ...]\n";
-}
-
-sub run_help {
- my $pager;
- unless ($pager = $ENV{PAGER}) {
- require Config;
- # lint happiness. blech.
- $pager = $Config::Config{'pager'} || $Config::Config{'pager'};
- }
-
- $pager = "/bin/cat" unless has_cmd($pager);
-
- if (has_cmd("pod2man") && has_cmd("nroff") ) {
- { exec("pod2man $0 | nroff -man | $pager") } # lint happiness
- warn "exec of pod2man | nroff | $pager failed: $!";
- }
-
- if (has_cmd("pod2text")) {
- { exec("pod2text $0 | $pager") } # lint happiness
- warn "exec of pod2text | $pager failed: $!";
- }
-
- # sucks to be you!
-
- if (eval q{ require Pod::Text; 1; }) {
- open (STDOUT, "| $pager") || die "no pager $pager: $!";
- # this forces a wait on child if needed
- sub END { close(STDOUT) || die "cannot close STDOUT: $!" }
- Pod::Text::pod2text($0);
- exit 0;
- }
-
- # it REALLY REALLY REALLY sucks to be you!
- open 0 or die "$0: cannot open myself: $!";
- $/ = '';
- while (<0>) {
- last if /__(END|DATA)__/; # must be careful here
- }
- print <0>;
- exit;
-}
-
-
-sub has_cmd {
- my $cmd = shift;
- for (split(/:/, $ENV{PATH})) {
- my $path = "$_/$cmd";
- return $path if -f $path && -x _;
- }
- return;
-}
-
-sub parse_opts {
-ARG: while (@ARGV && $ARGV[0] =~ s/^-(?=.)//) {
-OPT: for (shift @ARGV) { # getopts is for wimps
- m/^$/ && do { next ARG; };
- m/^-$/ && do { last ARG; };
- s/^d// && do { $Debug++; redo OPT; };
- s/^i// && do { $Ignore_Manpath++; redo OPT; };
- s/^g// && do { $No_Guessing++; redo OPT; };
- s/^v// && do { $Verbose++; redo OPT; };
- s/^r// && do { $Rebuild_Indices++; redo OPT; };
- s/^f(.*)// && do { $CF_File = $1 || shift @ARGV; next ARG; };
- s/^s(.*)// && do { $CF_Style = $1 || shift @ARGV; next ARG; };
-
- m/^-h(elp)?$/ # stupid fsf broken crappy excuse for real manpages
- && do { run_help(); exit; };
-
- usage("unknown option: -$_");
- }
- }
-
- if ($CF_Style && !$CF_File) {
- for (glob("/etc/man*.c*f*")) {
- $CF_File = $_;
- last;
- }
- print "Guessed CF file of $CF_File\n" if $Debug;
- }
-
-}
-
-{ # extra scope for function private "static" variable
- my $linux_griped = 0;
- sub get_osname {
- my $name = $^O;
-
- if ($name eq 'linux' && ! $linux_griped++
- && (! $CF_Style || $CF_Style eq 'linux') )
- {
- # there are many different linux operating systems, and
- # it torques me off that they pretend there aren't.
- # i have no idea whether this works anywhere but redhat.
- warn "$0: Your osname claims linux; assuming redhat instead\n";
- }
-
- return $name;
- }
-}
-
-
-# everything beneath here should be in a module
-
-{ # extra scope for function private "static" variable
- my %Whereis;
- sub whereis {
- my $manref = shift;
- my ($page, $ext) = $manref =~ /(\S+)\((\S+)\)/;
- $ext = lc($ext);
- return $Whereis{$page, $ext} if $Whereis{$page, $ext};
- if ($Rebuild_Indices) {
- $Whereis{$page, $ext} = "*** No manual entry for $page ";
- if ($Whereis{$page}) {
- $Whereis{$page, $ext} .= "(really in $Whereis{$page})";
- }
- return $Whereis{$page, $ext};
- }
-
- my $swext = adjust_ext($ext);
-
- print "man -w $swext '$page'\n" if $Debug > 1;
-
- ($Whereis{$page, $ext} = `man -w $swext '$page' 2>&1 `) =~ s/\n/ /g;
- if ($?) {
- $Whereis{$page, $ext} =~ s/^/*** /;
- print "man -w -a '$page'\n" if $Debug > 1;
- my $try_again = `man -w -a '$page' 2>&1 `;
- if (! $?) {
- $try_again =~ s/\n/ /g;
-#/: (\S+)\(([^\s)]+)\).*cat\Q$ext\E.*\b\Q$page\E\.0/
- if ($try_again =~ /\bcat\Q$ext\E.*\b\Q$page\E\.0/) {
- $Whereis{$page, $ext} = $try_again;
- print "BSD REALLY: $page.$ext really in $try_again\n"
- if $Debug > 1;
- } else {
- $Whereis{$page, $ext} =~ s/$/ (really $try_again)/;
- }
- }
- }
- return $Whereis{$page, $ext};
- }
-
- sub check_can_whence {
- if (! $Rebuild_Indices) {
- # stupid solaris sh bug. how stupid can these
- # people be?
- system "(man -w man) 2>&1 > /dev/null";
- return unless $?;
- warn "$0: Your system is stupid: it cannot whence.\n";
- }
-
- $Rebuild_Indices++;
-
- print "$0: Hold on, this may take a while....\n";
-
- if (get_osname() eq 'solaris') {
- for my $dir (split /:/, $Manpath) {
- local *WINDEX;
- next unless open(WINDEX, "< $dir/windex");
- print "reading $dir/windex\n" if $Debug;
- local $_;
- while (<WINDEX>) {
- next unless /^(\S+)\s+(\S+)\s+\((\S+)\)/;
- my ($name, $page, $ext) = ($1, $2, $3);
- $Whereis{$name} .= "$dir/man$ext/$page.$ext ";
- $Whereis{$page,$ext} = "$dir/man$ext/$page.$ext";
- }
- }
- }
- else {
- for my $tree (split /:/, $Manpath) {
- print "reading $tree directory entries\n" if $Debug;
- for my $dir ( glob("$tree/man*") ) {
- next unless -d $dir;
- local *DH;
- opendir(DH, $dir) || die "cannot opendir $dir: $!";
- my @pages = grep { /[^.].*\./ } readdir(DH);
- closedir DH;
- my($section) = $dir =~ /man([^\/]+)$/;
- for my $page ( @pages ) {
- my $name;
- $page =~ s/\.gz$//;
- my $ext;
- unless (index($page, ".$section") >= 0) {
- warn "wrong section for $dir/$page\n";
- }
- ($name = $page) =~ s/\.([^.]*)$//;
- $ext = $1;
- die "no ext in $page" unless $ext;
- die "no name" unless $name;
- $Whereis{$name,$ext} = "$dir/$name.$ext";
- $Whereis{$name} .= "$dir/$page ";
- }
- }
- }
- }
- }
-
-}
-
-# add a -s or a -S or no flag for calling up
-# a page from a particular section
-sub adjust_ext {
- my $ext = shift;
- my $osname = $^O;
-
- if ($osname eq 'solaris') {
- # stupid solaris REQUIRES this -s crap;
- # they don't understand -S either
- $ext = "-s $ext";
- }
- elsif ($osname eq 'freebsd') {
- # stupid freebsd FORBIDS the -s
- # they also require a -S if it's a two-char word,
- # like "man 3x curs_util". it doesn't harm in any event,
- # so do it anyway
- $ext = "-S $ext";
- }
- elsif ($osname eq 'linux') {
- # stupid redhat FORBIDS the -s;
- # they tolerate -S, however. but unlike bsd, they
- # don't seem to require it for 3x sections. interesting.
- $ext = "-S $ext";
- }
- elsif ($osname eq 'openbsd') {
- # openbsd neither requires nor forbids -s nor -S,
- # which both mean the same thing.
- #
- # then again, they still need it for two-char words,
- # so do it anyway. Seems dumb. Config issue?
- $ext = "-S $ext";
- }
-
- return $ext;
-}
-
-sub get_manpath {
- my $pathstr;
-
- if (@ARGV) {
- return join ":", @ARGV;
- }
-
- if ($ENV{MANPATH} && ! $Ignore_Manpath) {
- return $ENV{MANPATH};
- }
-
- my $osname = get_osname();
-
- if ($CF_File) {
- $pathstr = readcf($CF_File, $CF_Style || $osname);
- return $pathstr if $pathstr;
- }
-
- if ($osname eq 'freebsd') {
- # freebsd has a manpath program
- $pathstr = run_manpath() || readcf('/etc/manpath.config');
- }
- elsif ($osname eq 'openbsd') {
- # but openbsd does not
- $pathstr = readcf('/etc/man.conf');
- }
- elsif ($osname eq 'linux') {
- # this sucks - osname should say which linux we have. idiots.
- $pathstr = readcf('/etc/man.config');
- }
- else {
- if ($CF_File && $CF_Style) {
- $pathstr = readcf($CF_File, $CF_Style);
- } else {
- $pathstr = run_manpath() || compute_manpath();
- }
- }
-
- unless ($pathstr) {
- for (qw( /usr/man /usr/share/man )) {
- next unless -d;
- $pathstr = $_;
- warn "no manpath set, assuming $_.\n";
- last;
- }
- die "cannot find any manpages" unless $pathstr;
- }
-
- return $pathstr;
-
-}
-
-# traverse binpath and guess
-sub compute_manpath {
- return if $No_Guessing;
- my (@manpath, %seen);
- for (split(/:/, $ENV{PATH})) {
- next if /^\.?$/; # don't care about dot dirs
- if (s![^/+]*$!man! && -d && !$seen{$_}++) {
- my($dev,$ino) = stat(_);
- push(@manpath,$_) unless $seen{$dev,$ino}++;
- }
- }
- print "Guessing manpath of: @manpath\n" if $Debug;
- return join(":", @manpath);
-}
-
-# try an external manpath program
-sub run_manpath {
- # the silly subshell is to dodge a solaris bug
- my $path = `(manpath) 2>/dev/null`;
- return if $?;
- chomp $path;
- return $path;
-}
-
-# try reading config files in various formats
-sub readcf {
- die "readcf(): expected 1 or 2 args" if @_ < 1 || @_ > 2;
-
- my($cfpath, $ostype) = @_;
-
- my $pathfunc;
-
- my @styles = qw/freebsd openbsd redhat/;
-
- if (@_ == 2) {
- $pathfunc = {
- 'freebsd' => \&cf_freebsd,
- 'openbsd' => \&cf_openbsd,
- 'redhat' => \&cf_redhat,
- 'linux' => \&cf_redhat,
- }->{$ostype} || die "unknown CF style: $ostype (want @styles)";
- }
- else {
- $pathfunc = {
- '/etc/manpath.config' => \&cf_freebsd,
- '/etc/man.conf' => \&cf_openbsd,
- '/etc/man.config' => \&cf_redhat,
- }->{$cfpath} || die "no CF reader for $cfpath";
- }
-
- local(*CF, $_);
-
- print "reading CF file $cfpath\n" if $Debug;
-
- open(CF, "< $cfpath") || die "cannot open $cfpath: $!";
-
- my(@dir_list, %seen_dir);
-
- # we're run the guesser first to catch things in the path.
- unless ($No_Guessing) {
- for (@dir_list = split /:/, compute_manpath()) {
- my($dev,$ino) = stat $_;
- $seen_dir{$dev,$ino} = 1;
- }
- }
-
- while (<CF>) {
- s/^#.*//;
- next unless /\S/;
- for (my @newpaths = &$pathfunc) {
- # XXX: near-dup code
- if (-d && !$seen_dir{$_}++) {
- my($dev,$ino) = stat(_);
- push(@dir_list,$_) unless $seen_dir{$dev,$ino}++;
- }
- }
- }
-
- close(CF) || die "cannot close config $cfpath: $!";
-
- return join ":", @dir_list;
-}
-
-sub cf_freebsd {
- return $1 if /^\s*MANDATORY_MANPATH\s+(\S+)/;
- return $1 if /^\s*MANPATH_MAP\s+\S+\s+(\S+)/;
- return;
-
-}
-
-sub cf_openbsd {
- return glob($1) if /^\s*_default\s+(.*\S)\s*$/;
- return glob($1) if /^\s*[^_\s]\S+\s+(.*\S)\s*$/;
- return;
-}
-
-sub cf_redhat {
- return $1 if /^\s*MANPATH\s+(\S+)/;
- return $1 if /^\s*MANPATH_MAP\s+\S+\s+(\S+)/;
- return;
-}
-
-__END__
-
-=head1 NAME
-
-cfman - make sure manpages have accurate SEE ALSOs
-
-=head1 SYNOPSIS
-
-B<cfman> [B<-hdrivg>]
-[B<-f> I<cf-file>] [-B<s> I<cf-style>] [I<mantree> ...]
-
-=head1 DESCRIPTION
-
-The B<cfman> program attempts to search your system manpages for SEE
-ALSO entries that are incorrect. To determine which manpages to look at,
-the system's manpage directories are searched. However, to look at the
-SEE ALSO list, the man(1) program is called. That's because some systems
-have funny ideas about whether pages are installed already formatted
-or not.
-
-For each SEE ALSO reference, we attempt to call B<man -w> on a
-particular page in the references section or subsection it
-to figure out the real path. If this fails, we call B<man -w -a>
-irrespective of section. If it's found somewhere it's not expected,
-we still report the problem, as we do if it's not found at all.
-
-On systems too primitive to support the useful B<man -w> syntax, we
-try to figure it out by hand by reading all the directories first.
-On Solaris, we'll look at the I<windex> files in each directory.
-You can force this behaviour by using the B<-r> option described below.
-
-=head1 OPTIONS
-
-Most options can be clustered.
-
-=over
-
-=item -d
-
-Run with debugging. This option is cumulative. Currently
-debugging level one through three are provided.
-
-=item -f I<cf-file>
-
-Specify a man(1) config file to read in if need be.
-
-=item -g
-
-Disable guessing of manpage using current PATH variable.
-
-=item -h
-
-Give a help message. Actually, try valiantly to give this manpage,
-even if it's not installed. It's very hard to misplace this one. :-)
-
-=item -i
-
-Ignore the current manpage. This has two effects. First, it means
-that the program will not consult the MANPATH variable for default
-paths. Secondly, it will not attempt to reset the MANPATH variable
-before calling man(1) to do its work. See examples below.
-
-=item -r
-
-Rebuild indices of what is installed where manually. This is a simplistic
-check only. We consult each I<man*> subdirectory beneath each element
-in the list of supplied man directories, and within that, we look for
-each page inside. This is necessary on systems that don't support
-a B<-w> option to man(1), and will be inferred if needed. It may
-be faster than running B<man -w> that often.
-
-=item -s I<cf-style>
-
-Supply a parsing style for the config files. Only three are currently
-supported: B<openbsd>, B<freebsd>, and B<redhat>.
-
-=item -v
-
-Verbose mode. This just means that it will show where all the
-SEE ALSO references apppear to resolve to, not merely report
-the missing or misdirected ones.
-
-=back
-
-=head1 EXAMPLES
-
-Run the program using the current manpath if set, or the
-system one otherwise:
-
- $ cfman
-
-Run the program against the listed mantrees only. References
-to something outside those trees will fail:
-
- $ cfman /usr/man /usr/X11R6/man
-
-Run on one tree only, but do not restrict references to being
-in those trees only:
-
- $ cfman -i /usr/local/perl/man
-
-=head1 ENVIRONMENT
-
-=over
-
-=item MANPATH
-
-The user's current MANPATH is used unless the B<-i> option
-is supplied.
-
-=item PAGER
-
-This is used to feed the self-generating manpage into.
-
-=item PATH
-
-This is used if we need to guess a MANPATH.
-
-=back
-
-=head1 FILES
-
-The system-wide config file (such as I</etc/man.conf>, I</etc/man.config>,
-or I</etc/manpath.config>) is used if it's needed.
-
-Numerous B<man>-related directories and files will be grovelled through,
-both directly and indirectly.
-
-The B<pod2man>, B<pod2text>, and B<nroff> programs may also be called
-for the self-generating manpage in the help message, as may your
-B<more> program or preferred pager.
-
-=head1 SEE ALSO
-
-In no particular order: man(1), manpath(1), more(1), nroff(1),
-pod2man(1), pod2text(1), whatis(1), man.conf(5), man(7), and noman(8).
-
-=head1 NOTES
-
-The B<-w> option to the man(1) program was first introduced in the work
-presented at the 1990 Usenix LISA conference in Colorado Springs in the
-paper entitled title I<The Answer to All Man's Problems>. This option,
-along with several others invented there, have since been adopted by all
-modern Unixes. Other work presented in that paper included an earlier
-version of this program. Sadly, vendors have been negligently remiss
-in their duties since that time.
-
-The paper is available upon request from the author. It uses the ms(7)
-macro set. You have been warned. :-)
-
-=head1 DIAGNOSTICS
-
-Classes of diagnostics are as follows.
-
-=over
-
-=item N
-
-A normal message. This is the program's expected output.
-
-=item D1
-
-A level-one debugging message.
-
-=item D2
-
-A level-two debugging message.
-
-=item W
-
-A warning.
-
-=item WI
-
-An internal warning, with extra diagnostics appended
-telling the file name and line number of the problem.
-
-=item F
-
-A fatal error.
-
-=item FI
-
-An internal fatal error, with extra diagnostics appended
-telling the file name and line number of the problem.
-
-=back
-
-Any instances of C<%s> below are replaced with a string in the actual
-error message. Any instances of C<%M> below are replaced with the
-current errno string.
-
-=over
-
-=item %s: %s -> %s
-
-(N) Where a reference resolves to. The first field is the page being
-consulted. The second field is what it contains. The third field
-is where the reference solves to. If there is no resolution, then a
-message beginning with three stars will be emitted. In some cases,
-a parenthesized suggestion is made.
-
-=item cannot fork man lookup: %m
-
-(FI) Tried to run the man(1) program to parse output, but
-couldn't. Usually means out of processes; or sometimes,
-command not found.
-
-=item cannot cd to main tree %s: %m
-
-(FI) One of the elements in the MANPATH was inaccessible.
-
-=item cannot cd to subdir: %m
-
-(FI) One of the subdirectories in one of the MANPATH elements was
-inaccessible.
-
-=item cannot close config %s: %m
-
-(FI) The config file wouldn't close properly.
-
-=item cannot close STDOUT: %m
-
-(FI) The pager used for the help manpage wouldn't close properly.
-
-=item cannot find any manpages
-
-(FI) Unable to figure out a manpage any other way,
-we tried looking in I</usr/man> and I</usr/share/man>,
-but those weren't there.
-
-=item cannot open myself: %m
-
-(FI) In the worst case, we open our own program file to
-produce a help page. But that open failed. Strange.
-
-=item cannot opendir %s: %m
-
-(FI) One of the subdirectories in a man tree
-was inaccessible.
-
-=item close on man %s failed
-
-(WI) We were unable to correctly close the pipe
-from man(1) we were running to read its SEE ALSO entries.
-
-=item exec of pod2man | nroff | %s failed: %m
-
-(WI) We couldn't pod2manify ourselves. Usually this is just
-a broken pipe because you exited early.
-
-=item exec of pod2text | %s failed: %m
-
-(WI) We couldn't pod2textify ourselves. Usually this is just
-a broken pipe because you exited early.
-
-=item Guessed CF file of %s
-
-(D1) You specified a parsing style, but no file.
-So we guessed one. We look in I</etc/man*.c*f*> for a match.
-
-=item Guessing manpath of: %s
-
-(D1) We ran down your binpath and suspected that these
-were valid man directories for each piece.
-
-=item Hold on, this may take a while....
-
-(N) We have to exhaustively read each directory looking for
-manpages. This is not fast. But in the end, it might be
-faster than calling B<man -w> a zillion times. You can enable
-this with the C<-r> flag.
-
-=item Limiting external manpath
-
-(D1) The MANPATH envariable is set before
-calling man(1) again.
-
-=item man %s %s
-
-(D2) We're calling man(1) to parse the SEE ALSO references.
-
-=item man -w %s '%s'
-
-(D2) We're trying to look up the path where a manpath is located.
-
-=item man -w -a %s'%s'
-
-(D2) We're trying harder look up the path where a manpath is located
-because the first try failed.
-
-=item MANPATH is %s
-
-(D1) This is the colon-separated list of mantree directories
-we decided to process.
-
-=item no CF reader for %s
-
-(X) The path has no known syntax.
-
-=item no ext in %s
-
-(X) We couldn't figure out the subsection by looking for an
-extension.
-
-=item no manpath set, assuming %s.
-
-(W) We're trying to use a hard-coded path, because
-nothing else worked.
-
-=item no name
-
-(X) Couldn't figure out the name of the page, given the
-filename.
-
-=item no pager %s: %m
-
-(FI) You don't seem to have a valid pager.
-
-=item readcf(): expected 1 or 2 args
-
-(X) Internal error. A function was called wrong.
-
-=item reading CF file %s
-
-(D1) We're parsing this file for man config entreies.
-
-=item reading %s directory entries
-
-We're reading all the manpages in this directory.
-Probably because you used B<-r> or because you have
-a primitive and annoying man(1) program.
-
-=item reading %s/windex
-
-=item subdir chdir('%s')
-
-(D2) This message is printed each time we change
-to a subdirectory within a mantree.
-N This is the program's expected output. The first
-
-=item tree chdir('%s')
-
-(D2) This message is printed each time we change
-directory to a new mantree.
-
-=item unknown CF style: %s (want %s)
-
-(FI) You asked for a config-file parsing style that
-we don't support.
-
-=item unknown option: -%s
-
-(FI) You specified an invalid option. This will trigger
-a usage message.
-
-=item Usage: %s [-hdrivg] [-f cf-file] [-s cf-style] [mandir ...]
-
-(N) The usage message.
-
-=item wrong section for %s/%s
-
-(W) While searching your directories, we found a strange
-page, such as I<vi.man> installed in the I<man1> directory,
-where we were expecting I<vi.1> instead.
-
-=item Your osname claims linux; assuming redhat instead
-
-(W) It is unclear to this author whether all the different
-Linux operating systems employ the same man(1) program.
-It seems imprudent to assume that the version of the
-operating system (read: the kernel) has anything to do with
-the installed utility set. uname(1) is not helpful here.
-You may suppress this message by explicitly using B<-s redhat>.
-
-=item Your system is stupid: it cannot whence.
-
-(W) Your system is too primitive to support B<man -w>.
-This makes us do things the hard way.
-
-=head1 BUGS
-
-Various, no doubt.
-
-=head1 RESTRICTIONS
-
-This program was tested only under a couple different of BSD operating
-systems and a couple of different Linux operating systems. Remedial
-support for Solaris is included, but has not been stress tested.
-Bugs in their I<windex> files messages up this program.
-
-=head1 AUTHOR
-
-Tom Christiansen <tchrist@perl.com>
-
-=head1 HISTORY
-
-Version 1: Sometimes in early 1989.
-
-Version 2: December 15th, 1989.
-
-Version 3: October 20th, 1999. Just made it in under the decade mark.
-
diff --git a/regress/share/man/no3man b/regress/share/man/no3man
deleted file mode 100644
index 2e53f53f4ad..00000000000
--- a/regress/share/man/no3man
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/usr/bin/perl -w
-# $OpenBSD: no3man,v 1.2 2001/01/29 02:05:49 niklas Exp $
-
-#
-# no3man - identify which library calls aren't mannable
-# tchrist@perl.com
-
-use strict;
-
-#my $MAN3DIR = '/usr/man/man3';
-my $MAN3DIR = '/usr/share/man/cat3';
-
-chdir($MAN3DIR) || die "can't chdir to $MAN3DIR: $!";
-
-opendir(DIR, ".") || die "can't opendir $MAN3DIR: $!";
-
-my %warned;
-
-$| = 1;
-
-while (my $manpage = readdir(DIR)) {
- next if $manpage =~ /^\./;
- #$manpage =~ s/\.3.*//;
- $manpage =~ s/\.0.*//;
- # print "$manpage\n";
- my $kid = open(MANPIPE, "man 3 $manpage 2>&1 | col -b |")
- || die "can't run man 3 $manpage";
- while(<MANPIPE>) {
- if (my $recno = /^(SYNOPSIS|SYNTAX)/ ... /^[A-Z]/) {
- last if $recno =~ /e/i;
- while (/(\w+)\(/g) {
- my $func = $1;
- my $path = `man -w 3 $func 2>&1`;
- print "$manpage(3): $path" if $?;
- }
- }
- }
- #die "$kid is me!" unless $kid;
- #kill 'TERM', $kid;
- close MANPIPE;
-}
-
diff --git a/regress/share/man/scatman b/regress/share/man/scatman
deleted file mode 100644
index 0ef5472127a..00000000000
--- a/regress/share/man/scatman
+++ /dev/null
@@ -1,263 +0,0 @@
-#!/usr/bin/perl -w
-# $OpenBSD: scatman,v 1.2 2001/01/29 02:05:50 niklas Exp $
-
-#
-# scatman - find turds in mantrees
-# tchrist@perl.com
-
-use strict;
-
-my ($Manpath, $Debug);
-
-parse_opts();
-
-MANTREE:
-for my $tree (split /:/, $Manpath) {
- debug("chdir($tree)");
- chdir($tree) || die "cannot cd to main tree $tree: $!";
-
- # XXX: doesn't handles openbsd recursive mandirs yet
-
-MANDIR:
- #for my $mandir ( grep { -d } <{man,cat}*> ) {
- my @mandirs = grep { -d } <{cat,man}*>;
- while (@mandirs) {
- my $mandir = shift @mandirs;
- my $was_catted = $mandir =~ /^cat/;
- debug("chdir($tree/$mandir)");
- chdir("$tree/$mandir") || die "cannot cd to subdir $tree/$mandir: $!";
-
- my($dirext) = ($mandir =~ /^(?:cat|man)(.*)/);
- my($ext, @pages);
-
- local *MANDIR;
- unless (opendir(MANDIR, ".")) {
- die "$0: can't opendir . while in $tree/$mandir: $!\n";
- }
-
-MANPAGE:
- while (my $file = readdir(MANDIR)) {
- next MANPAGE if $file =~ /^\.\.?$/;
- my $path = "$tree/$mandir/$file";
- if (-l $file) {
- my $target = readlink($file);
- debug("readlink on $path -> $target");
- unless (-f $target && -r $target) {
- print "$path: bad symlink ($target)\n";
- }
- next MANPAGE;
- }
- if (-d $file) {
- push @mandirs, "$mandir/$file";
- next;
- }
- unless (-f $file) {
- print "$path: not a plain file\n";
- next MANPAGE;
- }
-
- unless ($file =~ /\./) {
- print "$path: doesn't smell like a manpage to me\n";
- next MANPAGE;
- }
-
- unless ($file =~ /\.${dirext}\S*(\.(gz|Z))?$/
- # get a real man dang you!
- || ($was_catted && $file =~ /\.0/)
- )
- {
- print "$path: strange extension for this directory\n";
- }
-
- my $openspec = ($file =~ /\.(gz|Z)$/)
- ? "gzip -dc < $file |"
- : "< $file";
-
- local *FH;
- debug("open $openspec");
- unless (open(FH, $openspec)) {
- warn "can't open $openspec: $!\n";
- next;
- }
-
- my($saw_TH, $saw_DOT, $over_struck);
- local $_;
-MANLINE:
- while (<FH>) {
- $saw_DOT += /^['.]/;
- $saw_TH += m{
- ^ [.'] # ' unlikely but possible
- \s* # optional white space
- (?:
- TH # -man version
- | Dt # -mandoc version
- )
- \b
- }x;
- if (/^['.]\s*so\s+(\S+)/) {
- my $link = $1;
- my $sofile = $link =~ m#^/#
- ? $link
- : "$tree/$link"; # not $mandir!
- debug("$path: so's to $sofile");
- unless (-f $sofile && -r $sofile) {
- print "$path: bad solink: $link\n";
- }
- close FH;
- next MANPAGE;
- }
- if (!defined $over_struck) {
- $over_struck++ if /(.)[\b]\1/;
- }
- close FH,last if $saw_DOT && $saw_TH;
- }
- close FH;
- if ($saw_DOT) {
- unless ($saw_TH) {
- print "$path: missing title macro\n";
- }
- }
- else {
- if ($over_struck) {
- my $wish = "$tree/cat$dirext/$file";
- print "$path: this catpage should be in $wish"
- unless $path eq $wish;
- } else {
- print "$path: doesn't look like nroff, maybe ",
- `file $path 2>&1` =~ /: (.*)/, "\n";
- }
- }
-
- }
- }
-}
-
-sub debug {
- print "[ @_ ]\n" if $Debug;
-}
-
-sub usage {
- print STDERR "@_\n" if @_;
- die "Usage: $0 [ -h ] [ -d ] [ [ -M ] [ manpath ] ]\n";
-}
-
-sub run_help {
- my $pager;
- unless ($pager = $ENV{PAGER}) {
- require Config;
- # lint happiness. blech.
- $pager = $Config::Config{'pager'} || $Config::Config{'pager'};
- }
-
- $pager = "/bin/cat" unless has_cmd($pager);
-
- if (has_cmd("pod2man") && has_cmd("nroff") ) {
- { exec("pod2man $0 | nroff -man | $pager") } # lint happiness
- warn "exec of pod2man | nroff | $pager failed: $!";
- }
-
- if (has_cmd("pod2text")) {
- { exec("pod2text $0 | $pager") } # lint happiness
- warn "exec of pod2text | $pager failed: $!";
- }
-
- # sucks to be you!
-
- if (eval q{ require Pod::Text; 1; }) {
- open (STDOUT, "| $pager") || die "no pager $pager: $!";
- # this forces a wait on child if needed
- sub END { close(STDOUT) || die "cannot close STDOUT: $!" }
- Pod::Text::pod2text($0);
- exit 0;
- }
-
- # it REALLY REALLY REALLY sucks to be you!
- open 0 or die "$0: cannot open myself: $!";
- $/ = '';
- while (<0>) {
- last if /__(END|DATA)__/; # must be careful here
- }
- print <0>;
- exit;
-}
-
-
-sub has_cmd {
- my $cmd = shift;
- for (split(/:/, $ENV{PATH})) {
- my $path = "$_/$cmd";
- return $path if -f $path && -x _;
- }
- return;
-}
-
-sub parse_opts {
-ARG: while (@ARGV && $ARGV[0] =~ s/^-(?=.)//) {
-OPT: for (shift @ARGV) { # getopts is for wimps
- m/^$/ && do { next ARG; };
- m/^-$/ && do { last ARG; };
- s/^d// && do { $Debug++; redo OPT; };
- s/^M(.*)// && do { $Manpath = $1 || shift @ARGV; next ARG; };
-
- m/^(h|-help)?$/ # stupid fsf broken crappy excuse for real manpages
- && do { run_help(); exit; };
-
- usage("unknown option: -$_");
- }
- }
-
- if (@ARGV) {
- usage("Manpath set, but arguments remaining") if $Manpath;
- usage("Too many arguments") if @ARGV > 1;
- $Manpath = $ARGV[0];
- }
- else {
- $Manpath = '/usr/share/man';
- }
-
-}
-
-__END__
-
-=head1 NAME
-
-scatman - find turds in mantrees
-
-=head1 SYNOPSIS
-
-B<scatman> S<[ B<-h> ]> S<[ B<-d> ]> S<[ [ B<-M> ] [ I<manpath> ] ]>
-
-=head1 DESCRIPTION
-
-The B<scatman> program locates things in man directories that
-shouldn't be there. It looks for stray files, catpage installed
-where manpage belong, non-troff files, troff files without proper
-title macros, wrong symbolic links, wrong C<.so> links, manpages
-installed with odd extensions, and unreadable files.
-
-The B<-d> flag adds debugging.
-
-The B<-M> I<manpath> flag is there for compatibility with
-other manly programs.
-
-The B<-h> flag prints this manpage and exit. You cannot lose
-this manpage. No more whingeing!
-
-=head1 SEE ALSO
-
-man(1), man(7), mandoc(7), cfman(8), noman(8)
-
-=head1 RESTRICTIONS
-
-This program has only been tested on the Redhat operating system.
-
-=head1 AUTHOR
-
-Tom Christiansen <tchrist@perl.com>
-
-=head1 HISTORY
-
-
-Version 1: 24 October 1999
-
-