X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fpodchecker.PL;h=75c316d26ed35b8bfe6592dd0d6ded7ac08b2a90;hb=9bf2270250326fb85445d6849ed84a94434dd12c;hp=f7a820d0f7442b64371cb94140ea23f0dbc2df84;hpb=1d7c184104c076988718a01b77c8706aae05b092;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/podchecker.PL b/pod/podchecker.PL index f7a820d..75c316d 100644 --- a/pod/podchecker.PL +++ b/pod/podchecker.PL @@ -18,6 +18,7 @@ chdir(dirname($0)); ($file = basename($0)) =~ s/\.PL$//; $file =~ s/\.pl$// if ($^O eq 'VMS' or $^O eq 'os2' or $^O eq 'dos'); # "case-forgiving" +$file .= '.com' if $^O eq 'VMS'; open OUT,">$file" or die "Can't create $file: $!"; @@ -38,7 +39,7 @@ print OUT <<'!NO!SUBS!'; ############################################################################# # podchecker -- command to invoke the podchecker function in Pod::Checker # -# Copyright (c) 1998-1999 by Bradford Appleton. All rights reserved. +# Copyright (c) 1998-2000 by Bradford Appleton. All rights reserved. # This file is part of "PodParser". PodParser is free software; # you can redistribute it and/or modify it under the same terms # as Perl itself. @@ -69,7 +70,9 @@ Print the manual page and exit. =item B<-warnings> B<-nowarnings> -Turn on/off printing of warnings. +Turn on/off printing of warnings. Repeating B<-warnings> increases the +warning level, i.e. more warnings are printed. Currently increasing to +level two causes flagging of unescaped "E,E" characters. =item I @@ -84,6 +87,8 @@ syntax errors in the POD documentation and will print any errors it find to STDERR. At the end, it will print a status message indicating the number of errors found. +Directories are ignored, an appropriate warning message is printed. + B invokes the B function exported by B Please see L for more details. @@ -100,7 +105,7 @@ the given POD files has syntax errors. The status 2 indicates that at least one of the specified files does not contain I POD commands. -Status 1 overrides status 2. If you want unambigouus +Status 1 overrides status 2. If you want unambiguous results, call B with one single argument only. =head1 SEE ALSO @@ -109,8 +114,10 @@ L and L =head1 AUTHORS +Please report bugs using L. + Brad Appleton Ebradapp@enteract.comE, -Marek Rouchal Emarek@saftsack.fs.uni-bayreuth.deE +Marek Rouchal Emarekr@cpan.orgE Based on code for B written by Tom Christiansen Etchrist@mox.perl.comE @@ -123,32 +130,50 @@ use Pod::Usage; use Getopt::Long; ## Define options -my %options = ( - "help" => 0, - "man" => 0, - "warnings" => 1, -); +my %options; ## Parse options -GetOptions(\%options, "help", "man", "warnings!") || pod2usage(2); +GetOptions(\%options, qw(help man warnings+ nowarnings)) || pod2usage(2); pod2usage(1) if ($options{help}); pod2usage(-verbose => 2) if ($options{man}); +if($options{nowarnings}) { + $options{warnings} = 0; +} +elsif(!defined $options{warnings}) { + $options{warnings} = 1; # default is warnings on +} + ## Dont default to STDIN if connected to a terminal pod2usage(2) if ((@ARGV == 0) && (-t STDIN)); ## Invoke podchecker() my $status = 0; -@ARGV = ("<&STDIN") unless(@ARGV); -for (@ARGV) { - my $s = podchecker($_, undef, '-warnings' => $options{warnings}); - if($s > 0) { +@ARGV = qw(-) unless(@ARGV); +for my $podfile (@ARGV) { + if($podfile eq '-') { + $podfile = '<&STDIN'; + } + elsif(-d $podfile) { + warn "podchecker: Warning: Ignoring directory '$podfile'\n"; + next; + } + my $errors = + podchecker($podfile, undef, '-warnings' => $options{warnings}); + if($errors > 0) { # errors occurred $status = 1; + printf STDERR ("%s has %d pod syntax %s.\n", + $podfile, $errors, + ($errors == 1) ? 'error' : 'errors'); } - elsif($s < 0) { + elsif($errors < 0) { # no pod found $status = 2 unless($status); + print STDERR "$podfile does not contain any pod commands.\n"; + } + else { + print STDERR "$podfile pod syntax OK.\n"; } } exit $status;