Remove VSPRINTF.
authorAndre Noll <maan@systemlinux.org>
Sat, 18 Aug 2012 16:33:19 +0000 (18:33 +0200)
committerAndre Noll <maan@systemlinux.org>
Mon, 11 Aug 2014 14:17:52 +0000 (16:17 +0200)
This macro has only a single user in string.c, and it's kind of
pointless for this code to be a macro.

adu.h
string.c

diff --git a/adu.h b/adu.h
index 42b9471ee251e0ccf28ffd185628bfdd3d315634..45dae6aa5ee5e973a6fad70adcf30553dc9feccd 100644 (file)
--- a/adu.h
+++ b/adu.h
 #endif
 /** \endcond */
 
-/**
- * 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 = adu_malloc(size); \
-       while (1) { \
-               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 */ \
-               p = adu_realloc(p, size); \
-       } \
-}
-
 /** Evaluates to 1 if x < y, to -1 if x > y and to 0 if x == y. */
 #define NUM_COMPARE(x, y) ((int)((x) < (y)) - (int)((x) > (y)))
 
index b089b785f96a8463bf850b408791987378e69e93..4775175dcca010ea723fcf2660a6be71fed7a3fe 100644 (file)
--- a/string.c
+++ b/string.c
@@ -123,10 +123,28 @@ __must_check __malloc char *adu_strdup(const char *s)
  */
 __must_check __printf_1_2 __malloc char *make_message(const char *fmt, ...)
 {
-       char *msg;
+       char *p;
+       int n;
+       size_t size = 100;
 
-       VSPRINTF(fmt, msg);
-       return msg;
+       p = adu_malloc(size);
+       while (1) {
+               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 */
+               p = adu_realloc(p, size);
+       }
+       return p;
 }
 
 /**