#include "map.h" #include #include #include #include #include "main.h" 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)) { free(str); break; } did_something = 1; if (use_inv == 1) { hashmap_set(m, str, strlen(str) - 1, (uintptr_t)1, 0); continue; } char *combo_o = strstr(str, ";"); combo_o[0] = '\0'; combo_o++; char *combo = calloc(strlen(combo_o)+1,sizeof(char)); strcpy(combo,combo_o); if (use_inv == 2) { hashmap_set(m, str, strlen(str) - 1, (uintptr_t)combo, 1); continue; } hashmap_set(m, combo, strlen(combo) - 1, (uintptr_t)str, 1); } if (!did_something) { free(str); } fclose(fptr); return did_something; // todo: properly free this }