diff options
author | Raghuram Subramani <raghus2247@gmail.com> | 2025-07-26 18:25:04 +0530 |
---|---|---|
committer | Raghuram Subramani <raghus2247@gmail.com> | 2025-07-26 18:25:53 +0530 |
commit | 9376c06ded47c4b77b94cb4d1e628537d9d69fce (patch) | |
tree | 25297ed59e75133ff6ee410716606a103f88644b /src | |
parent | a3b18ea4019f44185a495afd4be66350f217c144 (diff) |
config,main,list: get resources from config.cfg instead of a compiled config.h
Diffstat (limited to 'src')
-rw-r--r-- | src/config.c | 31 | ||||
-rw-r--r-- | src/engine.c | 1 | ||||
-rw-r--r-- | src/list.c | 15 | ||||
-rw-r--r-- | src/main.c | 35 | ||||
-rw-r--r-- | src/template.c | 1 |
5 files changed, 63 insertions, 20 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)); diff --git a/src/engine.c b/src/engine.c index f47369a..61f20ff 100644 --- a/src/engine.c +++ b/src/engine.c @@ -1,5 +1,6 @@ #define _GNU_SOURCE +#include <copy.h> #include <engine.h> #include <filehandler.h> #include <lexer.h> @@ -55,3 +55,18 @@ list_delete(list_t *list) free(list->elements); free(list); } + +void * +list_find_corresponding_value_from_ptr_wrapper(list_t *keys, + list_t *values, + char *key) +{ + for (size_t i = 0; i < keys->size; i++) { + ptr_wrapper_t *wrapper = list_get(keys, i); + if (strcmp(wrapper->ptr, key) == 0) { + return list_get(values, i); + } + } + + return NULL; +} @@ -1,5 +1,6 @@ #define _GNU_SOURCE +#include <config.h> #include <copy.h> #include <engine.h> #include <errno.h> @@ -17,6 +18,8 @@ #include "../config.h" +#define ASSETS "assets" + template_t *base_template; void @@ -93,6 +96,14 @@ main(int argc, char **argv) (void) argc; (void) argv; + FILE *f = fopen("config.cfg", "r"); + size_t s = fsize(f); + char *content = fcontent(f, s); + fclose(f); + + config_t *config = config_parse(content); + free(content); + struct stat sb; if (stat(DIRECTORY, &sb) != 0 || !S_ISDIR(sb.st_mode)) { printf("%s does not exist.\n", DIRECTORY); @@ -110,22 +121,22 @@ main(int argc, char **argv) nftw( DIRECTORY "/" ASSETS, copy_recursively, 64, FTW_PHYS | FTW_ACTIONRETVAL); - char **x; - char *filepath; + list_t *resources = list_find_corresponding_value_from_ptr_wrapper( + config->keys, config->array_values, "resources"); - for (x = (char **) html_resources; *x != NULL; x++) { - asprintf(&filepath, "%s.html", *x); - printf("HANDLING: %s\n", filepath); - handle_file(filepath); - free(filepath); + if (resources == NULL) { + printf("Could not find resources in config.cfg\n"); + return EXIT_FAILURE; } - for (x = (char **) md_resources; *x != NULL; x++) { - asprintf(&filepath, "%s.md", *x); - printf("HANDLING: %s\n", filepath); - handle_file(filepath); - free(filepath); + for (size_t i = 0; i < resources->size; i++) { + ptr_wrapper_t *value = list_get(resources, i); + char *path = value->ptr; + printf("HANDLING: %s\n", path); + handle_file(path); } + free(config); + return EXIT_SUCCESS; } diff --git a/src/template.c b/src/template.c index 9083463..7a43218 100644 --- a/src/template.c +++ b/src/template.c @@ -1,5 +1,6 @@ #define _GNU_SOURCE +#include <copy.h> #include <engine.h> #include <filehandler.h> #include <lexer.h> |