From 4bef1a220c54a58ea6d42ccc136d2bc2aedfc370 Mon Sep 17 00:00:00 2001 From: biglyderv Date: Tue, 25 Mar 2025 13:43:02 -0400 Subject: [PATCH] check both main dir and parent dir (temp fix) --- src/loader.c | 22 +++++++++++++++++++--- src/loader.h | 2 +- src/main.c | 15 +++++++++------ 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/src/loader.c b/src/loader.c index 1385fb5..949ce7d 100644 --- a/src/loader.c +++ b/src/loader.c @@ -6,21 +6,28 @@ #define MAX_FILE_SIZE 1024 * 16 -void load_elements(hashmap *m, char *table, int use_inv) { +int load_elements(hashmap *m, char *table, int use_inv) { FILE *fptr; fptr = fopen(table, "r"); + if (fptr == NULL) + return 0; + char *str; + int did_something = 0; + while (1) { str = calloc(MAX_FILE_SIZE, sizeof(char)); if (!fgets(str, MAX_FILE_SIZE, fptr)) break; + did_something = 1; + if (use_inv) { - hashmap_set(m, str, strlen(str) - 2, (uintptr_t)1); - continue; + hashmap_set(m, str, strlen(str) - 2, (uintptr_t)1); + continue; } char *combo = strstr(str, ";"); @@ -30,5 +37,14 @@ void load_elements(hashmap *m, char *table, int use_inv) { hashmap_set(m, combo, strlen(combo) - 1, (uintptr_t)str); } + + printf("%i\n",did_something); + + if (!did_something) { + free(str); + } + + return did_something; + // todo: properly free this } \ No newline at end of file diff --git a/src/loader.h b/src/loader.h index 40ac584..116d3ad 100644 --- a/src/loader.h +++ b/src/loader.h @@ -1,2 +1,2 @@ #include "map.h" -void load_elements(hashmap *m, char *table, int use_inv); \ No newline at end of file +int load_elements(hashmap *m, char *table, int use_inv); \ No newline at end of file diff --git a/src/main.c b/src/main.c index 6eb9252..6ece10f 100644 --- a/src/main.c +++ b/src/main.c @@ -16,8 +16,9 @@ int main(int argc, char *argv[]) { char *command_re = calloc(MAX_BUF_LENGTH, sizeof(char)); char **sort_tmp = calloc(MAX_COMBO_LENGTH, sizeof(char **)); - load_elements(elements, "bin/combos.txt", 0); - load_elements(inv, "bin/inv.txt", 1); + load_elements(elements, "combos.txt", 0) || + load_elements(elements, "bin/combos.txt", 0); + load_elements(inv, "inv.txt", 1) || load_elements(inv, "bin/inv.txt", 1); printf("Welcome to Elemental on Command Line!\n"); while (1) { @@ -25,15 +26,16 @@ int main(int argc, char *argv[]) { printf("\n"); fgets(command, MAX_BUF_LENGTH - 1, stdin); - int slashRan = slash_command(command,inv); - if (slashRan) continue; + int slashRan = slash_command(command, inv); + if (slashRan) + continue; int combos = get_command(command, command_re, sort_tmp); int failed = 0; for (int i = 0; i < combos; i++) { uintptr_t result; - hashmap_get(inv, sort_tmp[i], strlen(sort_tmp[i]) - 1, &result); + hashmap_get(inv, sort_tmp[i], strlen(sort_tmp[i]) - 1, &result); if (result != 1) { printf("You don't have %s.\n", sort_tmp[i]); failed = 1; @@ -41,7 +43,8 @@ int main(int argc, char *argv[]) { } } - if (failed) continue; + if (failed) + continue; uintptr_t result; hashmap_get(elements, command_re, strlen(command_re), &result);