Changeset 4483:d144bef3ecce
- 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:
-
Legend:
- Unmodified
- Added
- Removed
-
|
r4468
|
r4483
|
|
| 345 | 345 | AC_LIBOBJ(snprintf) |
| 346 | 346 | fi |
| | 347 | |
| | 348 | XIPH_FUNC_VA_COPY |
| 347 | 349 | |
| 348 | 350 | dnl SCO uses chsize() instead of ftruncate() |
-
|
r4363
|
r4483
|
|
| 1420 | 1420 | } |
| 1421 | 1421 | |
| | 1422 | int 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 | |
| 1422 | 1450 | void mutt_buffer_addstr (BUFFER* buf, const char* s) |
| 1423 | 1451 | { |
-
|
r4439
|
r4483
|
|
| 40 | 40 | BUFFER * mutt_buffer_from (BUFFER *, char *); |
| 41 | 41 | void mutt_buffer_free(BUFFER **); |
| | 42 | int mutt_buffer_printf (BUFFER*, const char*, ...); |
| 42 | 43 | void mutt_buffer_add (BUFFER*, const char*, size_t); |
| 43 | 44 | void mutt_buffer_addstr (BUFFER*, const char*); |