Karl, this bug will bite in more than one situation -- I fixed it by
modifying get_until_in_braces ();.  (We didn't have @, when I
originally wrote makeinfo, and this function dates from then.)

   Date: Fri, 12 Nov 1999 22:15:34 -0700
   From: Anthony Fok <[EMAIL PROTECTED]>

   On Fri, Nov 12, 1999 at 09:09:51PM -0800, Brian J. Fox wrote:
   > 
   > The "{c}" in `Fran@,{c}ois' seems strange to me.  Is this handled
   > elsewhere in makeinfo?

   Wow, that's a quick response!  :-)

   Yes, makeinfo handles 'Fran@,{c}ois' (translates it to 'Franc,ois')
   when it is not in @email{}.  I have attached my modified AUTHORS.texi
   (added 'Franc@,{c}ois' outside @email) and the resulting
   AUTHORS.info (makeinfo --force AUTHORS.texi) in this message.

Well, I haven't read the code for @email (added after I stopped
maintaining makeinfo and info) but it appears to me as if the argument
reader is getting confused by the comma character within the argument.

I'll check:

[ time passes while I; download 4.0 from gatekeeper... read through
the source...  find the problem and fix it.

Here's a patch:

*** makeinfo.c.~1~      Sun Sep 19 08:24:44 1999
--- makeinfo.c  Sat Nov 13 09:12:06 1999
***************
*** 1029,1035 ****
  
        if (brace < 0 ||
            (brace == 0 && strncmp (input_text + i, match, match_len) == 0))
!         break;
      }
  
    match_len = i - input_text_offset;
--- 1029,1043 ----
  
        if (brace < 0 ||
            (brace == 0 && strncmp (input_text + i, match, match_len) == 0))
!       {
!         /* If the character to search for is found, but it turns out
!            that this character is special (is actually a command
!            character in this context), then skip it. */
!         if ((match_len == 1) && (i > 0) && (input_text[i - 1] == '@'))
!           continue;
!         else
!           break;
!       }
      }
  
    match_len = i - input_text_offset;
***************
*** 2961,2967 ****
  {
    if (arg == START)
      {
!       char *addr = get_xref_token (1); /* expands all macros in email */
        char *name = get_xref_token (0);
  
        if (html)
--- 2969,2975 ----
  {
    if (arg == START)
      {
!       char *addr = get_xref_token (0);
        char *name = get_xref_token (0);
  
        if (html)

Brian
-- 
== The Difference Between Cultures: ==
    Einigkeit und Recht und Freiheit
    Liberte', E'galite', Fraternite'
    Sex, drugs and rock'n'roll

Reply via email to