Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e314ba31 authored by Daniel Santos's avatar Daniel Santos Committed by Linus Torvalds
Browse files

kernel-doc: bugfix - empty line in Example section



If you have a section named "Example" that contains an empty line,
attempting to generate htmldocs give you the error:

/path/Documentation/DocBook/kernel-api.xml:3455: parser error : Opening and ending tag mismatch: programlisting line 3449 and para
   </para><para>
          ^
/path/Documentation/DocBook/kernel-api.xml:3473: parser error : Opening and ending tag mismatch: para line 3467 and programlisting
</programlisting></informalexample>
                 ^
/path/Documentation/DocBook/kernel-api.xml:3678: parser error : Opening and ending tag mismatch: programlisting line 3672 and para
   </para><para>
          ^
/path/Documentation/DocBook/kernel-api.xml:3701: parser error : Opening and ending tag mismatch: para line 3690 and programlisting
</programlisting></informalexample>
                 ^
unable to parse
/path/Documentation/DocBook/kernel-api.xml

Essentially, the script attempts to close a <programlisting> with a
closing tag for a <para> block.  This patch corrects the problem by
simply not outputting anything extra when we're dumping pre-formatted
text, since the empty line will be rendered correctly anyway.

Signed-off-by: default avatarDaniel Santos <daniel.santos@pobox.com>
Cc: Randy Dunlap <rdunlap@xenotime.net>
Cc: Michal Marek <mmarek@suse.cz>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 65478428
Loading
Loading
Loading
Loading
+10 −1
Original line number Original line Diff line number Diff line
@@ -230,6 +230,7 @@ my $dohighlight = "";


my $verbose = 0;
my $verbose = 0;
my $output_mode = "man";
my $output_mode = "man";
my $output_preformatted = 0;
my $no_doc_sections = 0;
my $no_doc_sections = 0;
my %highlights = %highlights_man;
my %highlights = %highlights_man;
my $blankline = $blankline_man;
my $blankline = $blankline_man;
@@ -460,7 +461,9 @@ sub output_highlight {


    foreach $line (split "\n", $contents) {
    foreach $line (split "\n", $contents) {
	if ($line eq ""){
	if ($line eq ""){
	    if (! $output_preformatted) {
		print $lineprefix, local_unescape($blankline);
		print $lineprefix, local_unescape($blankline);
	    }
	} else {
	} else {
	    $line =~ s/\\\\\\/\&/g;
	    $line =~ s/\\\\\\/\&/g;
	    if ($output_mode eq "man" && substr($line, 0, 1) eq ".") {
	    if ($output_mode eq "man" && substr($line, 0, 1) eq ".") {
@@ -643,10 +646,12 @@ sub output_section_xml(%) {
	print "<title>$section</title>\n";
	print "<title>$section</title>\n";
	if ($section =~ m/EXAMPLE/i) {
	if ($section =~ m/EXAMPLE/i) {
	    print "<informalexample><programlisting>\n";
	    print "<informalexample><programlisting>\n";
	    $output_preformatted = 1;
	} else {
	} else {
	    print "<para>\n";
	    print "<para>\n";
	}
	}
	output_highlight($args{'sections'}{$section});
	output_highlight($args{'sections'}{$section});
	$output_preformatted = 0;
	if ($section =~ m/EXAMPLE/i) {
	if ($section =~ m/EXAMPLE/i) {
	    print "</programlisting></informalexample>\n";
	    print "</programlisting></informalexample>\n";
	} else {
	} else {
@@ -949,10 +954,12 @@ sub output_blockhead_xml(%) {
	}
	}
	if ($section =~ m/EXAMPLE/i) {
	if ($section =~ m/EXAMPLE/i) {
	    print "<example><para>\n";
	    print "<example><para>\n";
	    $output_preformatted = 1;
	} else {
	} else {
	    print "<para>\n";
	    print "<para>\n";
	}
	}
	output_highlight($args{'sections'}{$section});
	output_highlight($args{'sections'}{$section});
	$output_preformatted = 0;
	if ($section =~ m/EXAMPLE/i) {
	if ($section =~ m/EXAMPLE/i) {
	    print "</para></example>\n";
	    print "</para></example>\n";
	} else {
	} else {
@@ -1028,10 +1035,12 @@ sub output_function_gnome {
	print "<simplesect>\n <title>$section</title>\n";
	print "<simplesect>\n <title>$section</title>\n";
	if ($section =~ m/EXAMPLE/i) {
	if ($section =~ m/EXAMPLE/i) {
	    print "<example><programlisting>\n";
	    print "<example><programlisting>\n";
	    $output_preformatted = 1;
	} else {
	} else {
	}
	}
	print "<para>\n";
	print "<para>\n";
	output_highlight($args{'sections'}{$section});
	output_highlight($args{'sections'}{$section});
	$output_preformatted = 0;
	print "</para>\n";
	print "</para>\n";
	if ($section =~ m/EXAMPLE/i) {
	if ($section =~ m/EXAMPLE/i) {
	    print "</programlisting></example>\n";
	    print "</programlisting></example>\n";