Diff for /qemu/texi2pod.pl between versions 1.1.1.2 and 1.1.1.3

version 1.1.1.2, 2018/04/24 16:47:34 version 1.1.1.3, 2018/04/24 16:50:57
Line 1 Line 1
 #! /usr/bin/perl -w  #! /usr/bin/perl -w
   
 #   Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.  #   Copyright (C) 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
   
 # This file is part of GNU CC.  # This file is part of GCC.
   
 # GNU CC is free software; you can redistribute it and/or modify  # GCC is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by  # it under the terms of the GNU General Public License as published by
 # the Free Software Foundation; either version 2, or (at your option)  # the Free Software Foundation; either version 2, or (at your option)
 # any later version.  # any later version.
   
 # GNU CC is distributed in the hope that it will be useful,  # GCC is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of  # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.  # GNU General Public License for more details.
   
 # You should have received a copy of the GNU General Public License  # You should have received a copy of the GNU General Public License
 # along with GNU CC; see the file COPYING.  If not, write to  # along with GCC; see the file COPYING.  If not, write to
 # the Free Software Foundation, 59 Temple Place - Suite 330,  # the Free Software Foundation, 51 Franklin Street, Fifth Floor,
 # Boston MA 02111-1307, USA.  # Boston MA 02110-1301, USA.
   
 # This does trivial (and I mean _trivial_) conversion of Texinfo  # This does trivial (and I mean _trivial_) conversion of Texinfo
 # markup to Perl POD format.  It's intended to be used to extract  # markup to Perl POD format.  It's intended to be used to extract
Line 36  $shift = ""; Line 36  $shift = "";
 $fnno = 1;  $fnno = 1;
 $inf = "";  $inf = "";
 $ibase = "";  $ibase = "";
   @ipath = ();
   
 while ($_ = shift) {  while ($_ = shift) {
     if (/^-D(.*)$/) {      if (/^-D(.*)$/) {
Line 51  while ($_ = shift) { Line 52  while ($_ = shift) {
         die "flags may only contain letters, digits, hyphens, dashes and underscores\n"          die "flags may only contain letters, digits, hyphens, dashes and underscores\n"
             unless $flag =~ /^[a-zA-Z0-9_-]+$/;              unless $flag =~ /^[a-zA-Z0-9_-]+$/;
         $defs{$flag} = $value;          $defs{$flag} = $value;
       } elsif (/^-I(.*)$/) {
           if ($1 ne "") {
               $flag = $1;
           } else {
               $flag = shift;
           }
           push (@ipath, $flag);
     } elsif (/^-/) {      } elsif (/^-/) {
         usage();          usage();
     } else {      } else {
Line 138  while(<$inf>) { Line 146  while(<$inf>) {
         # Ignore @end foo, where foo is not an operation which may          # Ignore @end foo, where foo is not an operation which may
         # cause us to skip, if we are presently skipping.          # cause us to skip, if we are presently skipping.
         my $ended = $1;          my $ended = $1;
         next if $skipping && $ended !~ /^(?:ifset|ifclear|ignore|menu|iftex)$/;          next if $skipping && $ended !~ /^(?:ifset|ifclear|ignore|menu|iftex|copying)$/;
   
         die "\@end $ended without \@$ended at line $.\n" unless defined $endw;          die "\@end $ended without \@$ended at line $.\n" unless defined $endw;
         die "\@$endw ended by \@end $ended at line $.\n" unless $ended eq $endw;          die "\@$endw ended by \@end $ended at line $.\n" unless $ended eq $endw;
Line 154  while(<$inf>) { Line 162  while(<$inf>) {
         } elsif ($ended =~ /^(?:itemize|enumerate|[fv]?table)$/) {          } elsif ($ended =~ /^(?:itemize|enumerate|[fv]?table)$/) {
             $_ = "\n=back\n";              $_ = "\n=back\n";
             $ic = pop @icstack;              $ic = pop @icstack;
           } elsif ($ended eq "multitable") {
               $_ = "\n=back\n";
         } else {          } else {
             die "unknown command \@end $ended at line $.\n";              die "unknown command \@end $ended at line $.\n";
         }          }
Line 178  while(<$inf>) { Line 188  while(<$inf>) {
         next;          next;
     };      };
   
     /^\@(ignore|menu|iftex)\b/ and do {      /^\@(ignore|menu|iftex|copying)\b/ and do {
         push @endwstack, $endw;          push @endwstack, $endw;
         push @skstack, $skipping;          push @skstack, $skipping;
         $endw = $1;          $endw = $1;
Line 227  while(<$inf>) { Line 237  while(<$inf>) {
     /^\@include\s+(.+)$/ and do {      /^\@include\s+(.+)$/ and do {
         push @instack, $inf;          push @instack, $inf;
         $inf = gensym();          $inf = gensym();
           $file = postprocess($1);
   
         # Try cwd and $ibase.          # Try cwd and $ibase, then explicit -I paths.
         open($inf, "<" . $1)          $done = 0;
             or open($inf, "<" . $ibase . "/" . $1)          foreach $path ("", $ibase, @ipath) {
                 or die "cannot open $1 or $ibase/$1: $!\n";              $mypath = $file;
               $mypath = $path . "/" . $mypath if ($path ne "");
               open($inf, "<" . $mypath) and ($done = 1, last);
           }
           die "cannot find $file" if !$done;
         next;          next;
     };      };
   
Line 239  while(<$inf>) { Line 254  while(<$inf>) {
         and $_ = "\n=head2 $1\n";          and $_ = "\n=head2 $1\n";
     /^\@subsection\s+(.+)$/      /^\@subsection\s+(.+)$/
         and $_ = "\n=head3 $1\n";          and $_ = "\n=head3 $1\n";
       /^\@subsubsection\s+(.+)$/
           and $_ = "\n=head4 $1\n";
   
     # Block command handlers:      # Block command handlers:
     /^\@itemize\s+(\@[a-z]+|\*|-)/ and do {      /^\@itemize(?:\s+(\@[a-z]+|\*|-))?/ and do {
         push @endwstack, $endw;          push @endwstack, $endw;
         push @icstack, $ic;          push @icstack, $ic;
         $ic = $1;          if (defined $1) {
               $ic = $1;
           } else {
               $ic = '*';
           }
         $_ = "\n=over 4\n";          $_ = "\n=over 4\n";
         $endw = "itemize";          $endw = "itemize";
     };      };
Line 261  while(<$inf>) { Line 282  while(<$inf>) {
         $endw = "enumerate";          $endw = "enumerate";
     };      };
   
       /^\@multitable\s.*/ and do {
           push @endwstack, $endw;
           $endw = "multitable";
           $_ = "\n=over 4\n";
       };
   
     /^\@([fv]?table)\s+(\@[a-z]+)/ and do {      /^\@([fv]?table)\s+(\@[a-z]+)/ and do {
         push @endwstack, $endw;          push @endwstack, $endw;
         push @icstack, $ic;          push @icstack, $ic;
Line 280  while(<$inf>) { Line 307  while(<$inf>) {
         $_ = "";        # need a paragraph break          $_ = "";        # need a paragraph break
     };      };
   
       /^\@item\s+(.*\S)\s*$/ and $endw eq "multitable" and do {
           @columns = ();
           for $column (split (/\s*\@tab\s*/, $1)) {
               # @strong{...} is used a @headitem work-alike
               $column =~ s/^\@strong{(.*)}$/$1/;
               push @columns, $column;
           }
           $_ = "\n=item ".join (" : ", @columns)."\n";
       };
   
     /^\@itemx?\s*(.+)?$/ and do {      /^\@itemx?\s*(.+)?$/ and do {
         if (defined $1) {          if (defined $1) {
             # Entity escapes prevent munging by the <> processing below.              # Entity escapes prevent munging by the <> processing below.
 #            print "$ic\n";  
             $_ = "\n=item $ic\&LT;$1\&GT;\n";              $_ = "\n=item $ic\&LT;$1\&GT;\n";
         } else {          } else {
             $_ = "\n=item $ic\n";              $_ = "\n=item $ic\n";
Line 346  sub postprocess Line 382  sub postprocess
     s/\@w\{([^\}]*)\}/S<$1>/g;      s/\@w\{([^\}]*)\}/S<$1>/g;
     s/\@(?:dmn|math)\{([^\}]*)\}/$1/g;      s/\@(?:dmn|math)\{([^\}]*)\}/$1/g;
   
       # keep references of the form @ref{...}, print them bold
       s/\@(?:ref)\{([^\}]*)\}/B<$1>/g;
   
       # Change double single quotes to double quotes.
       s/''/"/g;
       s/``/"/g;
   
     # Cross references are thrown away, as are @noindent and @refill.      # Cross references are thrown away, as are @noindent and @refill.
     # (@noindent is impossible in .pod, and @refill is unnecessary.)      # (@noindent is impossible in .pod, and @refill is unnecessary.)
     # @* is also impossible in .pod; we discard it and any newline that      # @* is also impossible in .pod; we discard it and any newline that
Line 359  sub postprocess Line 402  sub postprocess
     s/\@gol//g;      s/\@gol//g;
     s/\@\*\s*\n?//g;      s/\@\*\s*\n?//g;
   
       # Anchors are thrown away
       s/\@anchor\{(?:[^\}]*)\}//g;
   
     # @uref can take one, two, or three arguments, with different      # @uref can take one, two, or three arguments, with different
     # semantics each time.  @url and @email are just like @uref with      # semantics each time.  @url and @email are just like @uref with
     # one argument, for our purposes.      # one argument, for our purposes.
Line 366  sub postprocess Line 412  sub postprocess
     s/\@uref\{([^\},]*),([^\},]*)\}/$2 (C<$1>)/g;      s/\@uref\{([^\},]*),([^\},]*)\}/$2 (C<$1>)/g;
     s/\@uref\{([^\},]*),([^\},]*),([^\},]*)\}/$3/g;      s/\@uref\{([^\},]*),([^\},]*),([^\},]*)\}/$3/g;
   
     # Turn B<blah I<blah> blah> into B<blah> I<blah> B<blah> to      # Un-escape <> at this point.
     # match Texinfo semantics of @emph inside @samp.  Also handle @r  
     # inside bold.  
     s/&LT;/</g;      s/&LT;/</g;
     s/&GT;/>/g;      s/&GT;/>/g;
     1 while s/B<((?:[^<>]|I<[^<>]*>)*)R<([^>]*)>/B<$1>${2}B</g;  
     1 while (s/B<([^<>]*)I<([^>]+)>/B<$1>I<$2>B</g);      # Now un-nest all B<>, I<>, R<>.  Theoretically we could have
     1 while (s/I<([^<>]*)B<([^>]+)>/I<$1>B<$2>I</g);      # indefinitely deep nesting; in practice, one level suffices.
       1 while s/([BIR])<([^<>]*)([BIR])<([^<>]*)>/$1<$2>$3<$4>$1</g;
   
       # Replace R<...> with bare ...; eliminate empty markup, B<>;
       # shift white space at the ends of [BI]<...> expressions outside
       # the expression.
       s/R<([^<>]*)>/$1/g;
     s/[BI]<>//g;      s/[BI]<>//g;
     s/([BI])<(\s+)([^>]+)>/$2$1<$3>/g;      s/([BI])<(\s+)([^>]+)>/$2$1<$3>/g;
     s/([BI])<([^>]+?)(\s+)>/$1<$2>$3/g;      s/([BI])<([^>]+?)(\s+)>/$1<$2>$3/g;

Removed from v.1.1.1.2  
changed lines
  Added in v.1.1.1.3


unix.superglobalmegacorp.com