9
0
Fork 0

stringlist: implement string_list_add_asprintf

Useful for allocating a string list entry on the fly.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
This commit is contained in:
Sascha Hauer 2012-04-19 10:36:28 +08:00 committed by Jean-Christophe PLAGNIOL-VILLARD
parent 34faa2e7ca
commit f152f6a770
2 changed files with 25 additions and 0 deletions

View File

@ -9,6 +9,7 @@ struct string_list {
};
int string_list_add(struct string_list *sl, char *str);
int string_list_add_asprintf(struct string_list *sl, const char *fmt, ...);
int string_list_add_sorted(struct string_list *sl, char *str);
int string_list_contains(struct string_list *sl, char *str);
void string_list_print_by_column(struct string_list *sl);

View File

@ -1,6 +1,7 @@
#include <common.h>
#include <xfuncs.h>
#include <malloc.h>
#include <errno.h>
#include <stringlist.h>
static int string_list_compare(struct list_head *a, struct list_head *b)
@ -24,6 +25,29 @@ int string_list_add(struct string_list *sl, char *str)
return 0;
}
int string_list_add_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 = vasprintf(fmt, args);
va_end(args);
if (!new->str) {
free(new);
return -ENOMEM;
}
list_add_tail(&new->list, &sl->list);
return 0;
}
int string_list_add_sorted(struct string_list *sl, char *str)
{
struct string_list *new;