Changeset 4483:d144bef3ecce

Show
Ignore:
Timestamp:
2005-12-15 10:36:24 (3 years ago)
Author:
Brendan Cully <brendan@…>
Branch:
HEAD
Message:

Add mutt_buffer_printf function, with autoconf test for va_copy.

Files:
1 added
3 modified

Legend:

Unmodified
Added
Removed
  • configure.in

    r4468 r4483  
    345345        AC_LIBOBJ(snprintf) 
    346346fi 
     347 
     348XIPH_FUNC_VA_COPY 
    347349 
    348350dnl SCO uses chsize() instead of ftruncate() 
  • muttlib.c

    r4363 r4483  
    14201420} 
    14211421 
     1422int mutt_buffer_printf (BUFFER* buf, const char* fmt, ...) 
     1423{ 
     1424  va_list ap, ap_retry; 
     1425  int len, blen, doff; 
     1426   
     1427  va_start (ap, fmt); 
     1428  va_copy (ap_retry, ap); 
     1429 
     1430  doff = buf->dptr - buf->data; 
     1431  blen = buf->dsize - doff; 
     1432  if ((len = vsnprintf (buf->dptr, blen, fmt, ap)) >= blen) 
     1433  { 
     1434    blen = ++len - blen; 
     1435    if (blen < 128) 
     1436      blen = 128; 
     1437    buf->dsize += blen; 
     1438    safe_realloc (&buf->data, buf->dsize); 
     1439    buf->dptr = buf->data + doff; 
     1440    len = vsnprintf (buf->dptr, len, fmt, ap_retry); 
     1441    va_end (ap_retry); 
     1442  } 
     1443  buf->dptr += len; 
     1444 
     1445  va_end (ap); 
     1446   
     1447  return len; 
     1448} 
     1449 
    14221450void mutt_buffer_addstr (BUFFER* buf, const char* s) 
    14231451{ 
  • protos.h

    r4439 r4483  
    4040BUFFER * mutt_buffer_from (BUFFER *, char *); 
    4141void mutt_buffer_free(BUFFER **); 
     42int mutt_buffer_printf (BUFFER*, const char*, ...); 
    4243void mutt_buffer_add (BUFFER*, const char*, size_t); 
    4344void mutt_buffer_addstr (BUFFER*, const char*);