diff --git a/libdm/libdevmapper.h b/libdm/libdevmapper.h index b08a549d3..8c349c507 100644 --- a/libdm/libdevmapper.h +++ b/libdm/libdevmapper.h @@ -1555,6 +1555,7 @@ int dm_config_tree_find_bool(const struct dm_config_tree *cft, const char *path, * off), (true, false). */ int dm_config_find_bool(const struct dm_config_node *cn, const char *path, int fail); +int dm_config_value_is_bool(const struct dm_config_value *v); int dm_config_get_uint32(const struct dm_config_node *cn, const char *path, uint32_t *result); int dm_config_get_uint64(const struct dm_config_node *cn, const char *path, uint64_t *result); diff --git a/libdm/libdm-config.c b/libdm/libdm-config.c index bd29d32a1..4705a1cce 100644 --- a/libdm/libdm-config.c +++ b/libdm/libdm-config.c @@ -928,6 +928,20 @@ int dm_config_find_bool(const struct dm_config_node *cn, const char *path, int f return _find_config_bool(cn, _find_config_node, path, fail); } +int dm_config_value_is_bool(const struct dm_config_value *v) { + if (!v) + return 0; + + switch(v->type) { + case DM_CFG_INT: + return 1; + case DM_CFG_STRING: + return _str_to_bool(v->v.str, -1) != -1; + default: + return 0; + } +} + /*********************************** * tree-based lookup **/