introduce tvprintf()

This commit is contained in:
rlar
2014-04-12 21:01:36 +02:00
parent 03f0ef778f
commit 80dd41451f
2 changed files with 27 additions and 11 deletions
+20 -9
View File
@@ -53,24 +53,21 @@ copy_substring(const char *str, const char *end)
}
char*
tprintf(const char *fmt, ...)
char *
tvprintf(const char *fmt, va_list args)
{
char buf[1024];
char *p = buf;
int size = sizeof(buf);
va_list args;
for (;;) {
int nchars;
va_list ap;
va_start(args, fmt);
nchars = vsnprintf(p, (size_t) size, fmt, args);
va_end(args);
va_copy(ap, args);
nchars = vsnprintf(p, (size_t) size, fmt, ap);
va_end(ap);
if (nchars == -1) { // compatibility to old implementations
size *= 2;
@@ -91,6 +88,20 @@ tprintf(const char *fmt, ...)
}
char *
tprintf(const char *fmt, ...)
{
char *rv;
va_list ap;
va_start(ap, fmt);
rv = tvprintf(fmt, ap);
va_end(ap);
return rv;
}
/* Determine whether sub is a substring of str. */
/* Like strstr( ) XXX */