summaryrefslogtreecommitdiffstats
path: root/util/process_docs.pl
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2018-05-16 11:12:21 +0200
committerRichard Levitte <levitte@openssl.org>2018-05-16 20:49:33 +0200
commit8d483b2de78619e8592f2558301f3295daf59690 (patch)
tree093a301e1d8d8419f179c766c84fedd79c4bb295 /util/process_docs.pl
parent653162c6005b4594327029729c0bffcf7c15d58c (diff)
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: Rich Salz <rsalz@openssl.org> (Merged from https://github.com/openssl/openssl/pull/6268)
Diffstat (limited to 'util/process_docs.pl')
-rwxr-xr-xutil/process_docs.pl26
1 files changed, 26 insertions, 0 deletions
diff --git a/util/process_docs.pl b/util/process_docs.pl
index 2b7f3227d3..ef79a1f5cd 100755
--- a/util/process_docs.pl
+++ b/util/process_docs.pl
@@ -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};