summaryrefslogtreecommitdiffstats
path: root/libdm/libdm-config.c
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2011-10-28 20:06:49 +0000
committerZdenek Kabelac <zkabelac@redhat.com>2011-10-28 20:06:49 +0000
commit7ad1c43b485108bffaf860c6d868a36051b17df2 (patch)
treed76d9671051d85827c7d17aa13c1f02409b66867 /libdm/libdm-config.c
parent35d462dafc47a026b2aed55d0ebd769ccbf39473 (diff)
downloadlvm2-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.c19
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)