aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorDaniel Santos <daniel.santos@pobox.com>2012-10-04 20:15:08 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-10-05 14:05:13 -0400
commite314ba3130940cb58b533b20969a6ee9b12435ed (patch)
tree36c158c32f0d108616c8ae6a943ef78d4e6245c8 /scripts
parent654784284430bf2739985914b65e09c7c35a7273 (diff)
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: Daniel Santos <daniel.santos@pobox.com> Cc: Randy Dunlap <rdunlap@xenotime.net> Cc: Michal Marek <mmarek@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/kernel-doc11
1 files changed, 10 insertions, 1 deletions
diff --git a/scripts/kernel-doc b/scripts/kernel-doc
index 2dea5f81baef..c7109ca40ba4 100755
--- a/scripts/kernel-doc
+++ b/scripts/kernel-doc
@@ -230,6 +230,7 @@ my $dohighlight = "";
230 230
231my $verbose = 0; 231my $verbose = 0;
232my $output_mode = "man"; 232my $output_mode = "man";
233my $output_preformatted = 0;
233my $no_doc_sections = 0; 234my $no_doc_sections = 0;
234my %highlights = %highlights_man; 235my %highlights = %highlights_man;
235my $blankline = $blankline_man; 236my $blankline = $blankline_man;
@@ -460,7 +461,9 @@ sub output_highlight {
460 461
461 foreach $line (split "\n", $contents) { 462 foreach $line (split "\n", $contents) {
462 if ($line eq ""){ 463 if ($line eq ""){
463 print $lineprefix, local_unescape($blankline); 464 if (! $output_preformatted) {
465 print $lineprefix, local_unescape($blankline);
466 }
464 } else { 467 } else {
465 $line =~ s/\\\\\\/\&/g; 468 $line =~ s/\\\\\\/\&/g;
466 if ($output_mode eq "man" && substr($line, 0, 1) eq ".") { 469 if ($output_mode eq "man" && substr($line, 0, 1) eq ".") {
@@ -643,10 +646,12 @@ sub output_section_xml(%) {
643 print "<title>$section</title>\n"; 646 print "<title>$section</title>\n";
644 if ($section =~ m/EXAMPLE/i) { 647 if ($section =~ m/EXAMPLE/i) {
645 print "<informalexample><programlisting>\n"; 648 print "<informalexample><programlisting>\n";
649 $output_preformatted = 1;
646 } else { 650 } else {
647 print "<para>\n"; 651 print "<para>\n";
648 } 652 }
649 output_highlight($args{'sections'}{$section}); 653 output_highlight($args{'sections'}{$section});
654 $output_preformatted = 0;
650 if ($section =~ m/EXAMPLE/i) { 655 if ($section =~ m/EXAMPLE/i) {
651 print "</programlisting></informalexample>\n"; 656 print "</programlisting></informalexample>\n";
652 } else { 657 } else {
@@ -949,10 +954,12 @@ sub output_blockhead_xml(%) {
949 } 954 }
950 if ($section =~ m/EXAMPLE/i) { 955 if ($section =~ m/EXAMPLE/i) {
951 print "<example><para>\n"; 956 print "<example><para>\n";
957 $output_preformatted = 1;
952 } else { 958 } else {
953 print "<para>\n"; 959 print "<para>\n";
954 } 960 }
955 output_highlight($args{'sections'}{$section}); 961 output_highlight($args{'sections'}{$section});
962 $output_preformatted = 0;
956 if ($section =~ m/EXAMPLE/i) { 963 if ($section =~ m/EXAMPLE/i) {
957 print "</para></example>\n"; 964 print "</para></example>\n";
958 } else { 965 } else {
@@ -1028,10 +1035,12 @@ sub output_function_gnome {
1028 print "<simplesect>\n <title>$section</title>\n"; 1035 print "<simplesect>\n <title>$section</title>\n";
1029 if ($section =~ m/EXAMPLE/i) { 1036 if ($section =~ m/EXAMPLE/i) {
1030 print "<example><programlisting>\n"; 1037 print "<example><programlisting>\n";
1038 $output_preformatted = 1;
1031 } else { 1039 } else {
1032 } 1040 }
1033 print "<para>\n"; 1041 print "<para>\n";
1034 output_highlight($args{'sections'}{$section}); 1042 output_highlight($args{'sections'}{$section});
1043 $output_preformatted = 0;
1035 print "</para>\n"; 1044 print "</para>\n";
1036 if ($section =~ m/EXAMPLE/i) { 1045 if ($section =~ m/EXAMPLE/i) {
1037 print "</programlisting></example>\n"; 1046 print "</programlisting></example>\n";