diff options
author | Zdenek Kabelac <zkabelac@redhat.com> | 2011-10-28 20:06:49 +0000 |
---|---|---|
committer | Zdenek Kabelac <zkabelac@redhat.com> | 2011-10-28 20:06:49 +0000 |
commit | 7ad1c43b485108bffaf860c6d868a36051b17df2 (patch) | |
tree | d76d9671051d85827c7d17aa13c1f02409b66867 /libdm/libdm-config.c | |
parent | 35d462dafc47a026b2aed55d0ebd769ccbf39473 (diff) | |
download | lvm2-7ad1c43b485108bffaf860c6d868a36051b17df2.tar.gz lvm2-7ad1c43b485108bffaf860c6d868a36051b17df2.tar.xz lvm2-7ad1c43b485108bffaf860c6d868a36051b17df2.zip |
Add find_config_tree_str_allow_empty
Add function to allow read of empty strings as valid arguments.
Add a warning message if string argument has ignored value.
Diffstat (limited to 'libdm/libdm-config.c')
-rw-r--r-- | libdm/libdm-config.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/libdm/libdm-config.c b/libdm/libdm-config.c index a831936e..8fee4ecc 100644 --- a/libdm/libdm-config.c +++ b/libdm/libdm-config.c @@ -919,15 +919,18 @@ static const struct dm_config_node *_find_first_config_node(const void *start, c } static const char *_find_config_str(const void *start, node_lookup_fn find_fn, - const char *path, const char *fail) + const char *path, const char *fail, int allow_empty) { const struct dm_config_node *n = find_fn(start, path); /* Empty strings are ignored */ - if ((n && n->v && n->v->type == DM_CFG_STRING) && (*n->v->v.str)) { + if ((n && n->v && n->v->type == DM_CFG_STRING) && + (allow_empty || (*n->v->v.str))) { log_very_verbose("Setting %s to %s", path, n->v->v.str); return n->v->v.str; - } + } else if (n && (!n->v || (n->v->type != DM_CFG_STRING) || + (!allow_empty && fail))) + log_warn("WARNING: Ignoring unsupported value for %s.", path); if (fail) log_very_verbose("%s not found in config: defaulting to %s", @@ -938,7 +941,7 @@ static const char *_find_config_str(const void *start, node_lookup_fn find_fn, const char *dm_config_find_str(const struct dm_config_node *cn, const char *path, const char *fail) { - return _find_config_str(cn, _find_config_node, path, fail); + return _find_config_str(cn, _find_config_node, path, fail, 0); } static int64_t _find_config_int64(const void *start, node_lookup_fn find, @@ -1060,7 +1063,13 @@ const struct dm_config_node *dm_config_tree_find_node(const struct dm_config_tre const char *dm_config_tree_find_str(const struct dm_config_tree *cft, const char *path, const char *fail) { - return _find_config_str(cft, _find_first_config_node, path, fail); + return _find_config_str(cft, _find_first_config_node, path, fail, 0); +} + +const char *dm_config_tree_find_str_allow_empty(const struct dm_config_tree *cft, const char *path, + const char *fail) +{ + return _find_config_str(cft, _find_first_config_node, path, fail, 1); } int dm_config_tree_find_int(const struct dm_config_tree *cft, const char *path, int fail) |