En r�ponse � Jos� Fonseca <[EMAIL PROTECTED]>:

Hello,

I don't have cvs access at this time (due to a proxy server), but can you try
this diff? I think it resolves lots of the bugs you cited. I'll make some other
work this week-end, directly in cvs.

--
Philippe
--- xml.h.old   Mon Oct 14 23:25:11 2002
+++ xml.h       Fri Nov  8 15:57:36 2002
@@ -33,6 +33,8 @@
 extern char *xml_node_id;
 extern int xml_last_section_output_position;
 
+extern int xml_in_xref_token;
+
 enum xml_element
 {
   TEXINFO=0, SETFILENAME, TITLEFONT, SETTITLE, 
--- xml.c.old   Thu Nov  7 23:14:56 2002
+++ xml.c       Fri Nov  8 15:59:58 2002
@@ -359,6 +359,8 @@
 static int first_section_opened = 0;
 static int in_abstract = 0;
 
+int xml_in_xref_token = 0;
+
 static int xml_current_element ();
 
 void
@@ -375,13 +377,14 @@
   char *tem = xmalloc (strlen (id) + 1);
   char *p = tem;
   strcpy (tem, id);
-  while (*p++)
+  while (*p)
     {
-      if (*p == ' ' || *p == '&' || *p == '/' || *p == '+')
+      if (strchr ("~ &/+^;?()%<>\"", *p))
         *p = '-';
+      p++;
     }
   p = tem;
-  while (*p == '-')
+  if (*p == '-')
     *p = 'i';
   return tem;
 }
@@ -821,7 +824,8 @@
   if (docbook && !only_macro_expansion && (in_menu || in_detailmenu))
     return;
 
-  if (!first_section_opened && !in_abstract && xml_current_element () == TEXINFO
+  if (!executing_string && !first_section_opened && 
+      !in_abstract && xml_current_element () == TEXINFO
       && !xml_no_para && character != '\r' && character != '\n' && character != ' ')
     {
       xml_insert_element (BOOKINFO, START);
@@ -829,7 +833,7 @@
       in_abstract = 1;
     }
 
-  if (xml_after_table_term && !xml_sort_index)
+  if (xml_after_table_term && !xml_sort_index && !xml_in_xref_token)
     {
       xml_after_table_term = 0;
       xml_insert_element (ITEM, START);
--- makeinfo.c.old      Tue Nov  5 20:31:57 2002
+++ makeinfo.c  Fri Nov  8 15:57:34 2002
@@ -2910,6 +2910,8 @@
 {
   char *string;
 
+  if (docbook)
+    xml_in_xref_token = 1;
   if (expand)
     {
       int old_offset = input_text_offset;
@@ -2935,6 +2937,10 @@
   if (curchar () == ',')
     input_text_offset++;
   fix_whitespace (string);
+
+  if (docbook)
+    xml_in_xref_token = 0;
+
   return string;
 }
 

Reply via email to