Commit 8d483b2d authored by Richard Levitte's avatar Richard Levitte
Browse files

When producing man-pages, ensure NAME section is one line only



There are *roff parsers that are strict about the NAME section being
one line only.  The man(7) on Debian GNU/Linux suggests that this is
appropriate, so we compensate our multi-line NAME sections by fixing
the *roff output.

Noted by Eric S. Raymond

Related to #6264

Reviewed-by: default avatarRich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/6268)
parent 653162c6
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -112,6 +112,32 @@ foreach my $section (sort @{$options{section}}) {
                @output = `$generate`;
                map { s|href="http://man\.he\.net/(man\d/[^"]+)(?:\.html)?"|href="../$1.html"|g; } @output
                    if $options{type} eq "html";
                if ($options{type} eq "man") {
                    # Because some *roff parsers are more strict than others,
                    # multiple lines in the NAME section must be merged into
                    # one.
                    my $in_name = 0;
                    my $name_line = "";
                    my @newoutput = ();
                    foreach (@output) {
                        if ($in_name) {
                            if (/^\.SH "/) {
                                $in_name = 0;
                                push @newoutput, $name_line."\n";
                            } else {
                                chomp (my $x = $_);
                                $name_line .= " " if $name_line;
                                $name_line .= $x;
                                next;
                            }
                        }
                        if (/^\.SH +"NAME" *$/) {
                            $in_name = 1;
                        }
                        push @newoutput, $_;
                    }
                    @output = @newoutput;
                }
            }
            print STDERR "DEBUG: Done processing\n" if $options{debug};