summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Coopersmith <alan.coopersmith@oracle.com>2018-10-01 21:10:59 -0700
committerAlan Coopersmith <alan.coopersmith@oracle.com>2018-10-01 21:10:59 -0700
commit0faf882de6de6c1ec26aace9a9939914b40e7b89 (patch)
treeadab03fc328e76476e9ee3218010888f4d81dbe4
parent3b747cc5d2981c44ff517f64c355e76d70194f24 (diff)
Use vasprintf(), if available, to implement dsprintf()
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
-rw-r--r--configure.ac3
-rw-r--r--list.c10
2 files changed, 13 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index 177e739..136353a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -51,6 +51,9 @@ if test "x$with_bzip2" = xyes; then
AC_DEFINE(X_BZIP2_FONT_COMPRESSION,1,[Support bzip2 for bitmap fonts])
fi
+# Checks for system functions / libraries
+AC_CHECK_FUNCS([vasprintf])
+
# Checks for pkg-config packages
PKG_CHECK_MODULES(MKFONTSCALE, fontenc freetype2)
PKG_CHECK_MODULES(X11, [xproto >= 7.0.25])
diff --git a/list.c b/list.c
index 320ce20..091d9c5 100644
--- a/list.c
+++ b/list.c
@@ -20,6 +20,8 @@
THE SOFTWARE.
*/
+#include "config.h"
+
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
@@ -63,6 +65,13 @@ dsprintf(const char *f, ...)
{
va_list args;
char *string;
+#ifdef HAVE_VASPRINTF
+ va_start(args, f);
+ if (vasprintf(&string, f, args) == -1)
+ string = NULL;
+ va_end(args);
+ return string;
+#else
{
int n, size = 20;
while(1) {
@@ -83,6 +92,7 @@ dsprintf(const char *f, ...)
free(string);
}
}
+#endif
}