[PATCH 03/18] texi2pod: parse @include directives outside "@c man" blocks

Paolo Bonzini posted 18 patches 5 years, 7 months ago
[PATCH 03/18] texi2pod: parse @include directives outside "@c man" blocks
Posted by Paolo Bonzini 5 years, 7 months ago
This enables splitting the huge qemu-doc.texi file and keeping parallel
Texinfo and rST versions of the documentation.  texi2pod is not going to
live much longer and hardly anyone cares about its upstream status,
so the temporary fork should be acceptable.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 scripts/texi2pod.pl | 36 ++++++++++++++++++------------------
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/scripts/texi2pod.pl b/scripts/texi2pod.pl
index 839b7917cf..8bfc6f6f4c 100755
--- a/scripts/texi2pod.pl
+++ b/scripts/texi2pod.pl
@@ -143,6 +143,24 @@ while(<$inf>) {
 	next;
     };
 
+    # Single line command handlers.
+
+    /^\@include\s+(.+)$/ and do {
+	push @instack, $inf;
+	$inf = gensym();
+	$file = postprocess($1);
+
+	# Try cwd and $ibase, then explicit -I paths.
+	$done = 0;
+	foreach $path ("", $ibase, @ipath) {
+	    $mypath = $file;
+	    $mypath = $path . "/" . $mypath if ($path ne "");
+	    open($inf, "<" . $mypath) and ($done = 1, last);
+	}
+	die "cannot find $file" if !$done;
+	next;
+    };
+
     next unless $output;
 
     # Discard comments.  (Can't do it above, because then we'd never see
@@ -242,24 +260,6 @@ while(<$inf>) {
 	s/>/&GT;/g;
     }
 
-    # Single line command handlers.
-
-    /^\@include\s+(.+)$/ and do {
-	push @instack, $inf;
-	$inf = gensym();
-	$file = postprocess($1);
-
-	# Try cwd and $ibase, then explicit -I paths.
-	$done = 0;
-	foreach $path ("", $ibase, @ipath) {
-	    $mypath = $file;
-	    $mypath = $path . "/" . $mypath if ($path ne "");
-	    open($inf, "<" . $mypath) and ($done = 1, last);
-	}
-	die "cannot find $file" if !$done;
-	next;
-    };
-
     /^\@(?:section|unnumbered|unnumberedsec|center)\s+(.+)$/
 	and $_ = "\n=head2 $1\n";
     /^\@subsection\s+(.+)$/
-- 
2.21.1



Re: [PATCH 03/18] texi2pod: parse @include directives outside "@c man" blocks
Posted by Peter Maydell 5 years, 7 months ago
On Wed, 26 Feb 2020 at 11:30, Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> This enables splitting the huge qemu-doc.texi file and keeping parallel
> Texinfo and rST versions of the documentation.  texi2pod is not going to
> live much longer and hardly anyone cares about its upstream status,
> so the temporary fork should be acceptable.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  scripts/texi2pod.pl | 36 ++++++++++++++++++------------------
>  1 file changed, 18 insertions(+), 18 deletions(-)
>
> diff --git a/scripts/texi2pod.pl b/scripts/texi2pod.pl
> index 839b7917cf..8bfc6f6f4c 100755
> --- a/scripts/texi2pod.pl
> +++ b/scripts/texi2pod.pl
> @@ -143,6 +143,24 @@ while(<$inf>) {
>         next;
>      };
>
> +    # Single line command handlers.
> +
> +    /^\@include\s+(.+)$/ and do {
> +       push @instack, $inf;
> +       $inf = gensym();
> +       $file = postprocess($1);
> +
> +       # Try cwd and $ibase, then explicit -I paths.
> +       $done = 0;
> +       foreach $path ("", $ibase, @ipath) {
> +           $mypath = $file;
> +           $mypath = $path . "/" . $mypath if ($path ne "");
> +           open($inf, "<" . $mypath) and ($done = 1, last);
> +       }
> +       die "cannot find $file" if !$done;
> +       next;
> +    };
> +
>      next unless $output;
>
>      # Discard comments.  (Can't do it above, because then we'd never see
> @@ -242,24 +260,6 @@ while(<$inf>) {
>         s/>/&GT;/g;
>      }
>
> -    # Single line command handlers.
> -
> -    /^\@include\s+(.+)$/ and do {
> -       push @instack, $inf;
> -       $inf = gensym();
> -       $file = postprocess($1);
> -
> -       # Try cwd and $ibase, then explicit -I paths.
> -       $done = 0;
> -       foreach $path ("", $ibase, @ipath) {
> -           $mypath = $file;
> -           $mypath = $path . "/" . $mypath if ($path ne "");
> -           open($inf, "<" . $mypath) and ($done = 1, last);
> -       }
> -       die "cannot find $file" if !$done;
> -       next;
> -    };
> -
>      /^\@(?:section|unnumbered|unnumberedsec|center)\s+(.+)$/
>         and $_ = "\n=head2 $1\n";
>      /^\@subsection\s+(.+)$/

This changes the semantics subtly -- we now honour @include
even if it's found inside an @ignore..@end ignore comment
block, for instance. But as you say this script isn't going
to be around much longer, so we can just avoid doing that
sort of thing.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>

thanks
-- PMM