aboutsummaryrefslogtreecommitdiff
path: root/src/config.c
diff options
context:
space:
mode:
authorRaghuram Subramani <raghus2247@gmail.com>2025-07-26 18:25:04 +0530
committerRaghuram Subramani <raghus2247@gmail.com>2025-07-26 18:25:53 +0530
commit9376c06ded47c4b77b94cb4d1e628537d9d69fce (patch)
tree25297ed59e75133ff6ee410716606a103f88644b /src/config.c
parenta3b18ea4019f44185a495afd4be66350f217c144 (diff)
config,main,list: get resources from config.cfg instead of a compiled config.h
Diffstat (limited to 'src/config.c')
-rw-r--r--src/config.c31
1 files changed, 23 insertions, 8 deletions
diff --git a/src/config.c b/src/config.c
index c06f70b..ce2c7b0 100644
--- a/src/config.c
+++ b/src/config.c
@@ -10,10 +10,12 @@
config_t *
config_parse(char *content)
{
- list_t *keys = list_create(sizeof(char *));
- list_t *values = list_create(sizeof(char *));
+ list_t *keys = list_create(sizeof(ptr_wrapper_t));
+ list_t *values = list_create(sizeof(ptr_wrapper_t));
list_t *array_values = list_create(sizeof(list_t));
+ ptr_wrapper_t *wrapper;
+
char *buffer = strdup(content);
/* For free() */
char *x = buffer;
@@ -23,26 +25,39 @@ config_parse(char *content)
while (buffer != NULL) {
buffer = ltrim(buffer);
- list_add(keys, key);
+ wrapper = malloc(sizeof(ptr_wrapper_t));
+ wrapper->ptr = strdup(key);
+ list_add(keys, wrapper);
if (*buffer == '{') {
buffer++;
- list_t *l = list_create(sizeof(char *));
+ list_t *l = list_create(sizeof(ptr_wrapper_t));
char *raw_array = strsep(&buffer, "}");
char *value = strsep(&raw_array, DELIM_ARRAY);
while (value != NULL) {
- list_add(l, trim(value));
+ wrapper = malloc(sizeof(ptr_wrapper_t));
+ wrapper->ptr = strdup(trim(value));
+ list_add(l, wrapper);
+
value = strsep(&raw_array, DELIM_ARRAY);
}
list_add(array_values, l);
- list_add(values, "\0");
+
+ wrapper = malloc(sizeof(ptr_wrapper_t));
+ wrapper->ptr = NULL;
+ list_add(values, wrapper);
} else {
char *value = trim(strsep(&buffer, "\n"));
- list_add(array_values, &((list_t) { 0 }));
- list_add(values, value);
+ wrapper = malloc(sizeof(ptr_wrapper_t));
+ wrapper->ptr = NULL;
+ list_add(array_values, wrapper);
+
+ wrapper = malloc(sizeof(ptr_wrapper_t));
+ wrapper->ptr = strdup(value);
+ list_add(values, wrapper);
}
key = trim(strsep(&buffer, DELIM));