On Sun, Jun 20, 2004 at 08:50:24PM -0700, Rob Hudson wrote:
> I discovered elmo, not the cartoon character, but the mail client:
> http://elmo.sourceforge.net/  I thought it might make a nice replacement to
> mutt, which I've been using on my server for years.
> 
> I wanted to try it on my FreeBSD server but it dies on the linking stage
> saying: 
> /usr/local/src/elmo-1.2.0/src/str.c(.text+0x28d): undefined reference to `va_copy'
> 
> Do you know what va_copy does?  Is it part of C?

va_copy is C99.  If your libc provides C99 compliance (gcc 3.3 would do
it) then you have it with the right thing enabled.

   va_copy
       An obvious implementation would have a va_list a pointer to  the
       stack frame of the variadic function.  In such a setup (by far the
       most common) there seems nothing against an assignment
                   va_list aq = ap;
       Unfortunately, there are also systems that make it an array of
       pointers (of length 1), and there one needs
                   va_list aq;
                   *aq = *ap;
       Finally, on systems where parameters are passed in registers, it
       may be necessary for va_start to allocate memory, store the
       parameters there, and also an indication of which parameter is
       next, so that va_arg can step through the list. Now va_end can free
       the allocated memory again.
       To accommodate this situation, C99 adds a macro va_copy, so that
       the above assignment can be replaced by
                   va_list aq;
                   va_copy(aq, ap);
                   ...
                   va_end(aq);
       Each invocation of va_copy must be matched by a corresponding
       invocation of va_end in the same function.  Some systems that do
       not supply va_copy have __va_copy instead, since that was the name
       used in the draft proposal.

This is from a Linux system's manpage on the varargs functions.  My Mac
lacks the manpage, but features the function protected by the explicit
need to require C99 be enabled.

_______________________________________________
EUGLUG mailing list
[EMAIL PROTECTED]
http://www.euglug.org/mailman/listinfo/euglug

Reply via email to