remove -DSw; the useful parts are now covered by mandoc;
authorschwarze <schwarze@openbsd.org>
Tue, 27 Jun 2017 11:48:00 +0000 (11:48 +0000)
committerschwarze <schwarze@openbsd.org>
Tue, 27 Jun 2017 11:48:00 +0000 (11:48 +0000)
discussed with jmc@

regress/usr.bin/mdoclint/mdoclint
regress/usr.bin/mdoclint/mdoclint.1

index 1153ce2..bcac526 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/perl
 #
-# $OpenBSD: mdoclint,v 1.73 2017/06/24 16:10:01 schwarze Exp $
+# $OpenBSD: mdoclint,v 1.74 2017/06/27 11:48:00 schwarze Exp $
 # $NetBSD: mdoclint,v 1.77 2017/06/08 10:19:56 wiz Exp $
 #
 # Copyright (c) 2001-2017 Thomas Klausner
@@ -41,94 +41,34 @@ use constant {
        NETBSD => 0,
 };
 
-use vars qw(
-       $opt_D $opt_F $opt_h $opt_m $opt_p $opt_S $opt_v $opt_w $opt_x
-);
-
+use vars qw($opt_F $opt_h $opt_m $opt_p $opt_v $opt_x);
 
 my $arch=`uname -m`;
 chomp($arch);
-my $options="DFhmpSvwx";
+my $options="Fhmpvx";
 
 sub usage
 {
        print STDERR <<"EOF";
 mdoclint: verify man page correctness
 usage: mdoclint [-$options] file ...
-       -D      warn about bad casing and archs in .Dt
        -F      fix whitespace problems (asks before overwriting)
        -h      display this help text
        -m      warn about man pages that are not in mdoc(7) format
        -p      warn about punctuation problems
-       -S      warn about any .Sh weirdness
        -v      verbose output
-       -w      show section header in warnings
        -x      warn about cross-references with missing targets
-Default is -DmpSx if no flag is specified.
+Default is -mpx if no flag is specified.
 EOF
        exit(0);
 }
 
 # constants to build
-my %sections;
-my $arches_re;
 my $sections_re;
 my $esections_re;
 
 # and the code that builds them
 {
-       my @sections = (
-               "NAME",
-               NETBSD ? "LIBRARY" : undef,
-               "SYNOPSIS",
-               "DESCRIPTION",
-               OPENBSD ? "CONTEXT" : undef ,
-               NETBSD ? "IMPLEMENTATION NOTES" : undef,
-               "RETURN VALUES",
-               "ENVIRONMENT",
-               "FILES",
-               "EXIT STATUS",
-               "EXAMPLES",
-               "DIAGNOSTICS",
-               NETBSD ? "COMPATIBILITY" : undef,
-               "ERRORS",
-               NETBSD ? "CODE REFERENCES" : undef,
-               "SEE ALSO",
-               "STANDARDS",
-               "HISTORY",
-               "AUTHORS",
-               "CAVEATS",
-               "BUGS",
-               NETBSD ? "SECURITY CONSIDERATIONS" : undef
-       );
-
-       my $i = 1;
-       for my $sh (@sections) {
-               if (defined $sh) {
-                       $sections{$sh} = $i++;
-               }
-       }
-       my @arches;
-       if (OPENBSD) {
-               @arches =
-                   (qw(alpha amd64 arm64 armv7 hppa i386
-                   landisk loongson luna88k macppc mips64 octeon sgi
-                   socppc sparc64));
-       }
-       if (NETBSD) {
-               @arches =
-                   (qw(acorn26 acorn32 algor alpha amiga arc atari
-                   bebox cats cesfic cobalt dreamcast
-                   emips evbarm evbmips evbppc
-                   evbsh3 evbsh5 hp300 hpcarm hpcmips hpcsh hppa
-                   i386 ibmnws luna68k mac68k macppc mipsco mmeye
-                   mvme68k mvmeppc netwinder news68k newsmips next68k
-                   pc532 playstation2 pmax pmppc prep sandpoint sbmips
-                   sgimips shark sparc sparc64 sun2 sun3 vax walnut
-                   x68k x86 x86_64 xen));
-       }
-       my $a = join('|', @arches);
-       $arches_re = qr{(?:$a)}o;
        if (OPENBSD) {
                $sections_re = qr{(?:3p|[1-9])}o;
                $esections_re = qr{(?:3p|[0-9])}o;
@@ -148,11 +88,7 @@ sub debug
 sub warning
 {
        my $self = shift;
-       my $extra = "";
-       if ($opt_w) {
-               $extra = $self->{current_section_header}.":";
-       }
-       print STDOUT "$self->{fn}:$extra$self->{ln}: ", join('', @_), "\n";
+       print STDOUT "$self->{fn}:$self->{ln}: ", join('', @_), "\n";
 }
 
 sub handle_options
@@ -161,12 +97,9 @@ sub handle_options
        $opt_h and usage();
 
        # default to all warnings if no flag is set
-       unless ($opt_D or $opt_m or $opt_p or $opt_S or $opt_x) {
-               $opt_D = $opt_m = $opt_p = $opt_S = $opt_x = 1;
-       }
+       $opt_m = $opt_p = $opt_x = 1 unless $opt_m or $opt_p or $opt_x;
 }
 
-
 sub verify_xref
 {
        my ($self, $page, $section, $pre, $post) = @_;
@@ -208,8 +141,7 @@ sub new
                mandoc_p => 1,
                all => [],
                changes => 0,
-               shseen => {},
-               current_section_header => '',
+               in_name => 0,
                sec => '0',
                names => { $fn => 1 },
                fn => $fn
@@ -239,36 +171,6 @@ sub close
        close($self->{file});
 }
 
-sub parse_macro_args
-{
-       my ($s, $string) = @_;
-       $_ = $string;
-       my @params = ();
-       while (!/^$/) {
-               if (s/^\"(.*?)\"\s*//) {
-                       push(@params, $1);
-               } elsif (s/^(\S+)\s*//) {
-                       push(@params, $1);
-               }
-       }
-       return @params;
-}
-
-sub set_section_header
-{
-       my ($s, $section_header) = @_;
-       $section_header = join(' ', $s->parse_macro_args($section_header));
-
-       if (not $sections{$section_header}) {
-               $s->warning("unknown section header: ",
-                   "`$section_header'") if $opt_S;
-       } else {
-               $s->{shseen}->{$section_header} = 1;
-       }
-
-       $s->{current_section_header} = $section_header;
-}
-
 sub process_and_save_line
 {
        my ($s, $input) = @_;
@@ -297,29 +199,23 @@ sub process_line
                $s->{mandoc_p} = 0;
                return "$_\n";
        }
-       if (/^\.Dt\s+/o) {
-               if (/^\.Dt\s+(?:[A-Z\d._-]+)\s+($sections_re)(?:\s+$arches_re)?$/o)  {
-                       $s->{sec} = $1;
-               } else {
-                       $s->warning("bad .Dt: `$_'") if $opt_D;
-               }
+       if (/^\.Dt\s+\S+\s+([1-9])/o) {
+               $s->{sec} = $1;
        }
-
        if ($s->{mandoc_p}) {
-               if (/^\.Sh\s+(.*)$/o) {
+               if (/^\.Sh\s+"?(.*?)"?\s*$/o) {
                        my $line = $_;
-                       $s->set_section_header($1);
+                       $s->{in_name} = $1 eq 'NAME';
                        return "$line\n";
                }
        } else {
-               if (/^\.SH\s+(.*)$/o) {
+               if (/^\.SH\s+"?(.*?)"?\s*$/o) {
                        my $line = $_;
-                       $s->set_section_header($1);
+                       $s->{in_name} = $1 eq 'NAME';
                        return "$line\n";
                }
        }
-
-       if ($s->{current_section_header} eq "NAME") {
+       if ($s->{in_name}) {
                if (/^\.Nm\s+(\S+)/o) {
                        $s->{names}{$1.$s->{sec}} = 1;
                }
@@ -355,19 +251,6 @@ sub process_line
        return "$_\n";
 }
 
-sub finish
-{
-       my ($s) = @_;
-
-       if ($s->{mandoc_p}) {
-               foreach my $i (qw(NAME SYNOPSIS DESCRIPTION)) {
-                       if (not ($s->{shseen}{$i})) {
-                               $s->warning("missing $i section") if $opt_S;
-                       }
-               }
-       }
-}
-
 package main;
 
 sub handle_file
@@ -377,8 +260,6 @@ sub handle_file
        while ($_ = $parser->next_line) {
                $parser->process_and_save_line($_);
        }
-
-       $parser->finish;
        $parser->close;
        if ($Parser::opt_F and $parser->{changes}) {
                open OUT, ">$_[0].new" or
index 07b7f15..ec0d7a4 100644 (file)
@@ -1,4 +1,4 @@
-.\" $OpenBSD: mdoclint.1,v 1.30 2017/06/24 16:10:01 schwarze Exp $
+.\" $OpenBSD: mdoclint.1,v 1.31 2017/06/27 11:48:00 schwarze Exp $
 .\" $NetBSD: mdoclint.1,v 1.23 2017/06/08 10:19:56 wiz Exp $
 .\"
 .\" Copyright (c) 2001-2013 Thomas Klausner
@@ -25,7 +25,7 @@
 .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 .\" POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd $Mdocdate: June 24 2017 $
+.Dd $Mdocdate: June 27 2017 $
 .Dt MDOCLINT 1
 .Os
 .Sh NAME
@@ -33,7 +33,7 @@
 .Nd man page verifier
 .Sh SYNOPSIS
 .Nm
-.Op Fl DFhmpSvwx
+.Op Fl Fhmpvx
 .Ar
 .Sh DESCRIPTION
 .Nm
@@ -41,14 +41,12 @@ is a man page verifier.
 It tries to automatically find as many common
 errors that occur when writing man pages as possible.
 If no flags are given,
-.Fl DmpSx
+.Fl mpx
 is assumed (that is, everything except
-.Fl Fhvw ) .
+.Fl Fhv ) .
 .Pp
 The options are as follows:
 .Bl -tag -width Ds
-.It Fl D
-Warn about bad casing and architectures in the .Dt macro.
 .It Fl F
 Delete whitespace at the end of input lines.
 .It Fl h
@@ -59,16 +57,8 @@ Warn if man page is not in
 format.
 .It Fl p
 Warn about abuse of .Ns to get punctuation directly next to a word.
-.It Fl S
-Warn about any unknown sections or about a section that comes in the
-wrong order (see
-.Xr mdoc 7 ) .
 .It Fl v
 Verbose output.
-.It Fl w
-Display the section name,
-in addition to the relevant line number,
-in warnings.
 .It Fl x
 Warn about cross-references whose target is missing, cross-references
 to itself, or plain bogus cross-references.
@@ -99,7 +89,7 @@ utility first appeared in
 .Sh BUGS
 The
 .Fl p
-flag currently produce too many bogus warnings.
+flag currently produces too many bogus warnings.
 .Pp
 The
 .Fl x