aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaghuram Subramani <raghus2247@gmail.com>2025-07-27 15:39:37 +0530
committerRaghuram Subramani <raghus2247@gmail.com>2025-07-27 15:39:37 +0530
commit7c13ed35bba1bc52cb21fd44ae9a99d3ddf348f4 (patch)
tree5d13d838278bcba628021858753b2506bde6d66c
parent9db8df442583e8dec3ca49e767bb4681776baa5a (diff)
config: add config_delete()
-rw-r--r--include/config.h1
-rw-r--r--src/config.c25
-rw-r--r--src/main.c21
3 files changed, 27 insertions, 20 deletions
diff --git a/include/config.h b/include/config.h
index 4451054..911a59c 100644
--- a/include/config.h
+++ b/include/config.h
@@ -13,6 +13,7 @@ typedef struct {
} config_t;
config_t *config_parse(char *content);
+void config_delete(config_t *config);
config_t *config_fetch_and_parse(char *path);
#endif
diff --git a/src/config.c b/src/config.c
index 46a3ad2..94eb18d 100644
--- a/src/config.c
+++ b/src/config.c
@@ -62,6 +62,31 @@ config_parse(char *content)
return config;
}
+void
+config_delete(config_t *config)
+{
+ for (size_t i = 0; i < config->keys->size; i++) {
+ ptr_wrapper_t *wrapper;
+
+ wrapper = list_get(config->values, i);
+ if (wrapper->ptr != NULL)
+ free(wrapper->ptr);
+
+ list_t *l = list_get(config->array_values, i);
+ for (size_t y = 0; y < l->size; y++) {
+ wrapper = list_get(l, y);
+
+ if (wrapper->ptr != NULL)
+ free(wrapper->ptr);
+ }
+ }
+
+ list_delete(config->keys);
+ list_delete(config->values);
+ list_delete(config->array_values);
+ free(config);
+}
+
config_t *
config_fetch_and_parse(char *path)
{
diff --git a/src/main.c b/src/main.c
index acbb1d8..2519a2b 100644
--- a/src/main.c
+++ b/src/main.c
@@ -129,26 +129,7 @@ main(int argc, char **argv)
handle_file(path);
}
- for (size_t i = 0; i < config->keys->size; i++) {
- ptr_wrapper_t *wrapper;
-
- wrapper = list_get(config->values, i);
- if (wrapper->ptr != NULL)
- free(wrapper->ptr);
-
- list_t *l = list_get(config->array_values, i);
- for (size_t y = 0; y < l->size; y++) {
- wrapper = list_get(l, y);
-
- if (wrapper->ptr != NULL)
- free(wrapper->ptr);
- }
- }
-
- list_delete(config->keys);
- list_delete(config->values);
- list_delete(config->array_values);
- free(config);
+ config_delete(config);
return EXIT_SUCCESS;
}