[PATCH 2/2] stringlist: implement string_list_asprintf

Sascha Hauer s.hauer at pengutronix.de
Fri Jun 10 02:57:53 EDT 2011


Useful for allocating a string list entry on the fly.

Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
---
 include/stringlist.h |    1 +
 lib/stringlist.c     |   22 ++++++++++++++++++++++
 2 files changed, 23 insertions(+), 0 deletions(-)

diff --git a/include/stringlist.h b/include/stringlist.h
index 86edcf0..1e2616d 100644
--- a/include/stringlist.h
+++ b/include/stringlist.h
@@ -9,6 +9,7 @@ struct string_list {
 };
 
 int string_list_add(struct string_list *sl, char *str);
+int string_list_asprintf(struct string_list *sl, const char *fmt, ...);
 void string_list_print_by_column(struct string_list *sl);
 
 static inline void string_list_init(struct string_list *sl)
diff --git a/lib/stringlist.c b/lib/stringlist.c
index 3c8ecec..1015cac 100644
--- a/lib/stringlist.c
+++ b/lib/stringlist.c
@@ -1,6 +1,7 @@
 #include <common.h>
 #include <xfuncs.h>
 #include <malloc.h>
+#include <errno.h>
 #include <xfuncs.h>
 #include <stringlist.h>
 
@@ -16,6 +17,27 @@ int string_list_add(struct string_list *sl, char *str)
 	return 0;
 }
 
+int string_list_asprintf(struct string_list *sl, const char *fmt, ...)
+{
+	struct string_list *new;
+	va_list args;
+
+	new = xmalloc(sizeof(*new));
+
+	va_start(args, fmt);
+
+	new->str = asprintf(fmt, args);
+
+	va_end(args);
+
+	if (!new->str) {
+		free(new);
+		return -ENOMEM;
+	}
+
+	return 0;
+}
+
 void string_list_print_by_column(struct string_list *sl)
 {
 	int len = 0, num, i;
-- 
1.7.5.3




More information about the barebox mailing list