Edward O'Callaghan submitted this change.
1 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
layout: Extract parsing include args into a separate function
Change-Id: Iba2971846938fe95412f0a69ff3c069ee2d049b6
Signed-off-by: Anastasia Klimchuk <aklm@chromium.org>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/70539
Reviewed-by: Edward O'Callaghan <quasisec@chromium.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
---
M layout.c
1 file changed, 45 insertions(+), 12 deletions(-)
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.