diff options
author | Eric Laurent <elaurent@google.com> | 2011-05-26 13:57:03 -0700 |
---|---|---|
committer | Eric Laurent <elaurent@google.com> | 2011-05-26 13:57:03 -0700 |
commit | c3cf1a827807d11b07bce9d6941342c68808aab1 (patch) | |
tree | fbb3b871789dfd3bbd9f514bf4694fce94afd680 | |
parent | 7956d759be249fabef78a933db273709661e4284 (diff) | |
download | system_core-c3cf1a827807d11b07bce9d6941342c68808aab1.zip system_core-c3cf1a827807d11b07bce9d6941342c68808aab1.tar.gz system_core-c3cf1a827807d11b07bce9d6941342c68808aab1.tar.bz2 |
Config utils improvement
Added a function to free resources allocated by config node tree.
Change-Id: I2ee8ae642899ec4501fa6e490c5be7efaa2d738e
-rw-r--r-- | include/cutils/config_utils.h | 3 | ||||
-rw-r--r-- | libcutils/config_utils.c | 12 |
2 files changed, 15 insertions, 0 deletions
diff --git a/include/cutils/config_utils.h b/include/cutils/config_utils.h index f3fb370..2dea6f1 100644 --- a/include/cutils/config_utils.h +++ b/include/cutils/config_utils.h @@ -54,6 +54,9 @@ const char* config_str(cnode *root, const char *name, const char *_default); /* add a named child to a config node (or modify it if it already exists) */ void config_set(cnode *root, const char *name, const char *value); +/* free a config node tree */ +void config_free(cnode *root); + #ifdef __cplusplus } #endif diff --git a/libcutils/config_utils.c b/libcutils/config_utils.c index 75fa6c6..fc5ca78 100644 --- a/libcutils/config_utils.c +++ b/libcutils/config_utils.c @@ -315,3 +315,15 @@ void config_load_file(cnode *root, const char *fn) data = load_file(fn, 0); config_load(root, data); } + +void config_free(cnode *root) +{ + cnode *cur = root->first_child; + + while (cur) { + cnode *prev = cur; + config_free(cur); + cur = cur->next; + free(prev); + } +} |