[PATCH 01/12] file_list: Add function to add an entry to the list
Sascha Hauer
s.hauer at pengutronix.de
Wed Sep 27 05:08:59 PDT 2017
Add file_list_add_entry() to add a single entry to a file_list. Then
use it in file_list_parse_one() instead of open coding adding a new
entry.
Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
---
common/file-list.c | 28 +++++++++++++++++++---------
include/file-list.h | 3 +++
2 files changed, 22 insertions(+), 9 deletions(-)
diff --git a/common/file-list.c b/common/file-list.c
index 90c0f429c5..010f8f0617 100644
--- a/common/file-list.c
+++ b/common/file-list.c
@@ -8,12 +8,26 @@
#define PARSE_NAME 1
#define PARSE_FLAGS 2
+int file_list_add_entry(struct file_list *files, const char *name, const char *filename,
+ unsigned long flags)
+{
+ struct file_list_entry *entry = xzalloc(sizeof(*entry));
+
+ entry->name = xstrdup(name);
+ entry->filename = xstrdup(filename);
+ entry->flags = flags;
+
+ list_add_tail(&entry->list, &files->list);
+
+ return 0;
+}
+
static int file_list_parse_one(struct file_list *files, const char *partstr, const char **endstr)
{
int i = 0, state = PARSE_DEVICE;
char filename[PATH_MAX];
char name[PATH_MAX];
- struct file_list_entry *entry = xzalloc(sizeof(*entry));
+ unsigned long flags = 0;
memset(filename, 0, sizeof(filename));
memset(name, 0, sizeof(name));
@@ -39,13 +53,13 @@ static int file_list_parse_one(struct file_list *files, const char *partstr, con
case PARSE_FLAGS:
switch (*partstr) {
case 's':
- entry->flags |= FILE_LIST_FLAG_SAFE;
+ flags |= FILE_LIST_FLAG_SAFE;
break;
case 'r':
- entry->flags |= FILE_LIST_FLAG_READBACK;
+ flags |= FILE_LIST_FLAG_READBACK;
break;
case 'c':
- entry->flags |= FILE_LIST_FLAG_CREATE;
+ flags |= FILE_LIST_FLAG_CREATE;
break;
default:
return -EINVAL;
@@ -60,15 +74,11 @@ static int file_list_parse_one(struct file_list *files, const char *partstr, con
if (state != PARSE_FLAGS)
return -EINVAL;
- entry->name = xstrdup(name);
- entry->filename = xstrdup(filename);
if (*partstr == ',')
partstr++;
*endstr = partstr;
- list_add_tail(&entry->list, &files->list);
-
- return 0;
+ return file_list_add_entry(files, name, filename, flags);
}
struct file_list *file_list_parse(const char *str)
diff --git a/include/file-list.h b/include/file-list.h
index 608181ff8d..ccdc2b5efd 100644
--- a/include/file-list.h
+++ b/include/file-list.h
@@ -20,6 +20,9 @@ struct file_list {
struct file_list *file_list_parse(const char *str);
void file_list_free(struct file_list *);
+int file_list_add_entry(struct file_list *files, const char *name, const char *filename,
+ unsigned long flags);
+
#define file_list_for_each_entry(files, entry) \
list_for_each_entry(entry, &files->list, list)
--
2.11.0
More information about the barebox
mailing list