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:
parent
34faa2e7ca
commit
f152f6a770
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue