From 42a43cd4cc1849658130214cb244e0c88e824471 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Mon, 26 May 2008 23:06:48 +0200 Subject: [PATCH] Kill the VSPRINTF macro. It has only one user, make_message(), so move it there. --- log.h | 38 -------------------------------------- osl.c | 30 +++++++++++++++++++++++++++--- 2 files changed, 27 insertions(+), 41 deletions(-) diff --git a/log.h b/log.h index dfb0565..9c3bf4b 100644 --- a/log.h +++ b/log.h @@ -89,41 +89,3 @@ /** \endcond */ __printf_2_3 void __log(int, const char*, ...); - -/** - * Write a log message to a dynamically allocated string. - * - * \param fmt Usual format string. - * \param p Result pointer. - * - * \sa printf(3). */ -#define VSPRINTF(fmt, p) \ -{ \ - int n; \ - size_t size = 100; \ - p = malloc(size); \ - if (p) { \ - while (1) { \ - char *q; \ - va_list ap; \ - /* Try to print in the allocated space. */ \ - va_start(ap, fmt); \ - n = vsnprintf(p, size, fmt, ap); \ - va_end(ap); \ - /* If that worked, return the string. */ \ - if (n > -1 && n < size) \ - break; \ - /* Else try again with more space. */ \ - if (n > -1) /* glibc 2.1 */ \ - size = n + 1; /* precisely what is needed */ \ - else /* glibc 2.0 */ \ - size *= 2; /* twice the old size */ \ - q = realloc(p, size); \ - if (!q) { \ - free(p); \ - p = NULL; \ - break; \ - } \ - } \ - } \ -} diff --git a/osl.c b/osl.c index 31f49a2..5786939 100644 --- a/osl.c +++ b/osl.c @@ -30,10 +30,34 @@ */ static __must_check __printf_1_2 __malloc char *make_message(const char *fmt, ...) { - char *msg; + int n; + size_t size = 100; + char *p = malloc(size); - VSPRINTF(fmt, msg); - return msg; + if (!p) + return NULL; + while (1) { + char *q; + va_list ap; + /* Try to print in the allocated space. */ + va_start(ap, fmt); + n = vsnprintf(p, size, fmt, ap); + va_end(ap); + /* If that worked, return the string. */ + if (n > -1 && n < size) + break; + /* Else try again with more space. */ + if (n > -1) /* glibc 2.1 */ + size = n + 1; /* precisely what is needed */ + else /* glibc 2.0 */ + size *= 2; /* twice the old size */ + q = realloc(p, size); + if (!q) { + free(p); + return NULL; + } + } + return p; } /** -- 2.30.2