From 3aef24fab6d9f51ebbe8094b79de895ff1cdce17 Mon Sep 17 00:00:00 2001
From: Jann Horn <jann@thejh.net>
Date: Mon, 19 Aug 2013 22:51:50 +0200
Subject: [PATCH] string: add TPRINTF macro for constructing temporary small
 strings

---
 string.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/string.c b/string.c
index b0db54c..f58fd3c 100644
--- a/string.c
+++ b/string.c
@@ -7,6 +7,16 @@ HEADER #include <stdint.h>
 
 HEADER #define streq(a,b) (!strcmp((a),(b)))
 
+HEADER #define TPRINTF(name, ...)                                               \
+HEADER   char *name;                                                            \
+HEADER   do {                                                                   \
+HEADER     int __tprintf_size = snprintf(NULL, 0, __VA_ARGS__);                 \
+HEADER     assert(__tprintf_size != -1);                                        \
+HEADER     name = alloca(__tprintf_size+1);                                     \
+HEADER     int __tprintf_size2 = snprintf(name, __tprintf_size+1, __VA_ARGS__); \
+HEADER     assert(__tprintf_size == __tprintf_size2);                           \
+HEADER   } while (0); //////////////////////////////////////////////////////////
+
 PUBLIC_FN int count_char_occurences(char *s, char c) {
   int n=0;
   while (*s) {
-- 
2.20.1