diff options
author | Eduardo Habkost <ehabkost@redhat.com> | 2017-10-03 23:50:42 -0300 |
---|---|---|
committer | Eduardo Habkost <ehabkost@redhat.com> | 2017-10-09 23:21:52 -0300 |
commit | e5766d6ec7524345f4c0fa284c065b68c5e93049 (patch) | |
tree | 4539468f42ed7811552714aeb8c82a5ee3fd9215 | |
parent | 3478eae990d0373a5a3614f9293e16ebb50e5cb6 (diff) |
config: qemu_config_parse() return number of config groups
Change qemu_config_parse() to return the number of config groups
in success and -EINVAL on error. This will allow callers of
qemu_config_parse() to check if something was really loaded from
the config file.
All existing callers of qemu_config_parse() and
qemu_read_config_file() only check if the return value was
negative, so the change shouldn't affect them.
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Message-Id: <20171004025043.3788-2-ehabkost@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
-rw-r--r-- | block/blkdebug.c | 1 | ||||
-rw-r--r-- | util/qemu-config.c | 15 |
2 files changed, 7 insertions, 9 deletions
diff --git a/block/blkdebug.c b/block/blkdebug.c index 46e53f2f09..dfdf9b91aa 100644 --- a/block/blkdebug.c +++ b/block/blkdebug.c @@ -244,7 +244,6 @@ static int read_config(BDRVBlkdebugState *s, const char *filename, ret = qemu_config_parse(f, config_groups, filename); if (ret < 0) { error_setg(errp, "Could not parse blkdebug config file"); - ret = -EINVAL; goto fail; } } diff --git a/util/qemu-config.c b/util/qemu-config.c index 405dd1a1d7..99b0e46fa3 100644 --- a/util/qemu-config.c +++ b/util/qemu-config.c @@ -385,6 +385,7 @@ void qemu_config_write(FILE *fp) } } +/* Returns number of config groups on success, -errno on error */ int qemu_config_parse(FILE *fp, QemuOptsList **lists, const char *fname) { char line[1024], group[64], id[64], arg[64], value[1024]; @@ -392,7 +393,8 @@ int qemu_config_parse(FILE *fp, QemuOptsList **lists, const char *fname) QemuOptsList *list = NULL; Error *local_err = NULL; QemuOpts *opts = NULL; - int res = -1, lno = 0; + int res = -EINVAL, lno = 0; + int count = 0; loc_push_none(&loc); while (fgets(line, sizeof(line), fp) != NULL) { @@ -413,6 +415,7 @@ int qemu_config_parse(FILE *fp, QemuOptsList **lists, const char *fname) goto out; } opts = qemu_opts_create(list, id, 1, NULL); + count++; continue; } if (sscanf(line, "[%63[^]]]", group) == 1) { @@ -423,6 +426,7 @@ int qemu_config_parse(FILE *fp, QemuOptsList **lists, const char *fname) goto out; } opts = qemu_opts_create(list, NULL, 0, &error_abort); + count++; continue; } value[0] = '\0'; @@ -447,7 +451,7 @@ int qemu_config_parse(FILE *fp, QemuOptsList **lists, const char *fname) error_report("error reading file"); goto out; } - res = 0; + res = count; out: loc_pop(&loc); return res; @@ -464,12 +468,7 @@ int qemu_read_config_file(const char *filename) ret = qemu_config_parse(f, vm_config_groups, filename); fclose(f); - - if (ret == 0) { - return 0; - } else { - return -EINVAL; - } + return ret; } static void config_parse_qdict_section(QDict *options, QemuOptsList *opts, |