summaryrefslogtreecommitdiffstats
path: root/libdm/libdevmapper.h
diff options
context:
space:
mode:
authorPetr Rockai <prockai@redhat.com>2011-08-31 15:19:19 +0000
committerPetr Rockai <prockai@redhat.com>2011-08-31 15:19:19 +0000
commit97a4b5165e172e91a38e48790c769e29360fe768 (patch)
tree5a8b78ec9b9e35c47f9ae9d701180b47e9774315 /libdm/libdevmapper.h
parentc0de52fd2dc7acff53f811fb2b460f9047d8a4eb (diff)
downloadlvm2-97a4b5165e172e91a38e48790c769e29360fe768.tar.gz
lvm2-97a4b5165e172e91a38e48790c769e29360fe768.tar.xz
lvm2-97a4b5165e172e91a38e48790c769e29360fe768.zip
Replace const usage of dm_config_find_node with more appropriate value-lookup
functionality. A number of bugs (copied and pasted all over the code) should disappear: - most string lookup based on dm_config_find_node would segfault when encountering a non-zero integer (the intention there was to print an error message instead) - check for required sections in metadata would have been satisfied by values as well (i.e. not sections) - encountering a section in place of expected flag value would have segfaulted (due to assumed but unchecked cn->v != NULL)
Diffstat (limited to 'libdm/libdevmapper.h')
-rw-r--r--libdm/libdevmapper.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/libdm/libdevmapper.h b/libdm/libdevmapper.h
index 6529b467..71b4caa1 100644
--- a/libdm/libdevmapper.h
+++ b/libdm/libdevmapper.h
@@ -1275,7 +1275,8 @@ int dm_config_write_node(const struct dm_config_node *cn, dm_putline_fn putline,
time_t dm_config_timestamp(struct dm_config_tree *cft);
int dm_config_changed(struct dm_config_tree *cft);
-struct dm_config_node *dm_config_find_node(const struct dm_config_node *cn, const char *path);
+struct dm_config_node *dm_config_find_node(struct dm_config_node *cn, const char *path);
+int dm_config_has_node(const struct dm_config_node *cn, const char *path);
const char *dm_config_find_str(const struct dm_config_node *cn, const char *path, const char *fail);
int dm_config_find_int(const struct dm_config_node *cn, const char *path, int fail);
float dm_config_find_float(const struct dm_config_node *cn, const char *path, float fail);
@@ -1307,6 +1308,10 @@ int dm_config_get_uint64(const struct dm_config_node *cn, const char *path,
int dm_config_get_str(const struct dm_config_node *cn, const char *path,
const char **result);
+int dm_config_get_list(const struct dm_config_node *cn, const char *path,
+ const struct dm_config_value **result);
+int dm_config_get_section(const struct dm_config_node *cn, const char *path,
+ const struct dm_config_node **result);
unsigned dm_config_maybe_section(const char *str, unsigned len);