Anastasia Klimchuk has uploaded this change for review.

View Change

layout: Extract parsing include args into a separate function

Change-Id: Iba2971846938fe95412f0a69ff3c069ee2d049b6
Signed-off-by: Anastasia Klimchuk <aklm@chromium.org>
---
M layout.c
1 file changed, 41 insertions(+), 12 deletions(-)

git pull ssh://review.coreboot.org:29418/flashrom refs/changes/39/70539/1
diff --git a/layout.c b/layout.c
index 9cd3e01..350e49e 100644
--- a/layout.c
+++ b/layout.c
@@ -114,42 +114,61 @@
}
#endif

-/* register an include argument (-i) for later processing */
-int register_include_arg(struct layout_include_args **args, const char *arg)
+static bool parse_include_args(const char *arg, char **name, char **file)
{
- struct layout_include_args *tmp;
char *colon;
- char *name;
- char *file = NULL; /* file is optional, so defaults to NULL */
+ char *tmp_name;
+ char *tmp_file = NULL; /* file is optional, so defaults to NULL */

if (arg == NULL) {
msg_gerr("<NULL> is a bad region name.\n");
- return 1;
+ return false;
}

/* -i <image>[:<file>] */
colon = strchr(arg, ':');
if (colon && !colon[1]) {
msg_gerr("Missing filename parameter in %s\n", arg);
- return 1;
+ return false;
}

if (colon) {
- name = strndup(arg, colon - arg);
- if (!name) {
+ tmp_name = strndup(arg, colon - arg);
+ if (!tmp_name) {
msg_gerr("Out of memory");
goto error;
}

- file = strdup(colon + 1);
- if (!file) {
+ tmp_file = strdup(colon + 1);
+ if (!tmp_file) {
msg_gerr("Out of memory");
goto error;
}
} else {
- name = strdup(arg);
+ tmp_name = strdup(arg);
}

+ *name = tmp_name;
+ *file = tmp_file;
+
+ return true;
+
+error:
+ free(tmp_name);
+ free(tmp_file);
+ return false;
+}
+
+/* register an include argument (-i) for later processing */
+int register_include_arg(struct layout_include_args **args, const char *arg)
+{
+ struct layout_include_args *tmp;
+ char *name;
+ char *file;
+
+ if (!parse_include_args(arg, &name, &file))
+ return 1;
+
for (tmp = *args; tmp; tmp = tmp->next) {
if (!strcmp(tmp->name, name)) {
msg_gerr("Duplicate region name: \"%s\".\n", name);

To view, visit change 70539. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: flashrom
Gerrit-Branch: master
Gerrit-Change-Id: Iba2971846938fe95412f0a69ff3c069ee2d049b6
Gerrit-Change-Number: 70539
Gerrit-PatchSet: 1
Gerrit-Owner: Anastasia Klimchuk <aklm@chromium.org>
Gerrit-MessageType: newchange