From: Andre Noll <maan@systemlinux.org>
Date: Mon, 26 May 2008 21:06:48 +0000 (+0200)
Subject: Kill the VSPRINTF macro.
X-Git-Tag: v0.1.0~106
X-Git-Url: https://git.tuebingen.mpg.de/?a=commitdiff_plain;h=42a43cd4cc1849658130214cb244e0c88e824471;p=osl.git

Kill the VSPRINTF macro.

It has only one user, make_message(), so move it there.
---

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;
 }
 
 /**