summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--contrib/ChangeLog4
-rwxr-xr-xcontrib/texi2pod.pl16
2 files changed, 14 insertions, 6 deletions
diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index 3582317c64e..14da30497f3 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,3 +1,7 @@
+2002-06-26 Zack Weinberg <zack@codesourcery.com>
+
+ * texi2pod.pl: Correct handling of the internal R<> sequence.
+
2002-05-31 Florian Weimer <fw@deneb.enyo.de>
* gcc_update (files_and_dependencies): Add generated Texinfo files
diff --git a/contrib/texi2pod.pl b/contrib/texi2pod.pl
index 4fb8892ccb8..e5560f303de 100755
--- a/contrib/texi2pod.pl
+++ b/contrib/texi2pod.pl
@@ -365,14 +365,18 @@ sub postprocess
s/\@uref\{([^\},]*),([^\},]*)\}/$2 (C<$1>)/g;
s/\@uref\{([^\},]*),([^\},]*),([^\},]*)\}/$3/g;
- # Turn B<blah I<blah> blah> into B<blah> I<blah> B<blah> to
- # match Texinfo semantics of @emph inside @samp. Also handle @r
- # inside bold.
+ # Un-escape <> at this point.
s/&LT;/</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);
- 1 while (s/I<([^<>]*)B<([^>]+)>/I<$1>B<$2>I</g);
+
+ # Now un-nest all B<>, I<>, R<>. Theoretically we could have
+ # 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])<(\s+)([^>]+)>/$2$1<$3>/g;
s/([BI])<([^>]+?)(\s+)>/$1<$2>$3/g;