From a9880a6f40ed6f55bc56d7f59c5f88a6718e8549 Mon Sep 17 00:00:00 2001 From: bpc2003 Date: Fri, 14 Mar 2025 11:48:03 -0400 Subject: Update Makefile --- .gitignore | 5 +---- Makefile | 43 +++++++++++++++++++++++++++++++++---------- src/lib/keytab.c | 9 ++++++--- 3 files changed, 40 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index 3a22b7f..46c80fd 100644 --- a/.gitignore +++ b/.gitignore @@ -3,10 +3,7 @@ *.db~ # compiled files -*.out -*.o -*.a -*.so +target/ # lsp .ccls-cache diff --git a/Makefile b/Makefile index a1cdda6..c81978d 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,35 @@ +CC = gcc +BUILD = target +C_FLAGS = -Wall -lmdb -std=c11 -O2 +D_FLAGS = -L$(BUILD) -Wl,-rpath=$(BUILD) +L_FLAGS = -c -fPIC -Wall -Werror + +all: mdb mdb: lib - gcc src/*.c -Lsrc/lib -lmdb -std=c11 -O2 -o mdb.out -lib: - gcc src/lib/*.c -c -O2 - ld -r *.o -o src/lib/libmdb.so - rm -rf *.o + $(CC) src/*.c $(D_FLAGS) $(C_FLAGS) -o $(BUILD)/mdb.out +lib: $(BUILD) + $(CC) src/lib/*.c $(L_FLAGS) + $(CC) -shared -o $(BUILD)/libmdb.so *.o + rm *.o + dev: dev_lib - gcc src/*.c -g -std=c11 -Lsrc/lib -lmdb -dev_lib: - gcc src/lib/*.c -c -g - ld -r *.o -o src/lib/libmdb.so - rm -rf *.o + $(CC) src/*.c $(D_FLAGS) -g $(C_FLAGS) -o $(BUILD)/devmdb.out +dev_lib: $(BUILD) + $(CC) src/lib/*.c $(L_FLAGS) -g + $(CC) -shared -o $(BUILD)/libmdb.so *.o + rm *.o + +$(BUILD): + mkdir $(BUILD) + +install: lib + cp src/lib/mdb.h /usr/include/mdb.h + mv $(BUILD)/libmdb.so /usr/lib/libmdb.so + ldconfig + $(CC) src/*.c $(C_FLAGS) -o /usr/bin/mdb + +uninstall: + rm /usr/bin/mdb + rm /usr/lib/libmdb.so + rm /usr/include/mdb.h +remove: uninstall diff --git a/src/lib/keytab.c b/src/lib/keytab.c index 74dc47f..ed61264 100644 --- a/src/lib/keytab.c +++ b/src/lib/keytab.c @@ -29,12 +29,12 @@ struct keytab getkey(struct keytablist *list, int id, char *key) { int idx = hash(key); if (list[id].tab[idx].key == NULL) - return (struct keytab) { .key = NULL, .flag = 0, .v = 0 }; + return (struct keytab) { .key = NULL, .flag = 0, .v = { 0 } }; while (strcmp(list[id].tab[idx].key, key) && idx < TABLEN) idx++; if (idx >= TABLEN) - return (struct keytab) { .key = NULL, .flag = 0, .v = 0 }; + return (struct keytab) { .key = NULL, .flag = 0, .v = { 0 } }; return list[id].tab[idx]; } @@ -83,8 +83,11 @@ int setkey(struct keytablist **list, int id, char *pair) } if (!(*list)[id].tab[idx].key) (*list)[id].tab[idx].key = key; - else + else { free(key); + if ((*list)[id].tab[idx].flag == 3) + free((*list)[id].tab[idx].v.str); + } (*list)[id].tab[idx].v = v; (*list)[id].tab[idx].flag = flag; return 0; -- cgit v1.2.3