diff options
author | bpc2003 <wpesfriendnva@gmail.com> | 2025-03-27 11:38:16 -0400 |
---|---|---|
committer | bpc2003 <wpesfriendnva@gmail.com> | 2025-03-27 11:38:16 -0400 |
commit | 704fb6fee45b3e5feae02d4a9282dccce0d85117 (patch) | |
tree | 59a6a8b2c8750e82373b1f5a1c3270c4f766fcbe /src/lib | |
parent | c7e0401455a2eae5d1092bf1add3be52ffb0fb5a (diff) |
Added ability to delete every key in delkeys
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/batch.c | 21 | ||||
-rw-r--r-- | src/lib/mdb.h | 2 |
2 files changed, 15 insertions, 8 deletions
diff --git a/src/lib/batch.c b/src/lib/batch.c index 3991973..52cc399 100644 --- a/src/lib/batch.c +++ b/src/lib/batch.c @@ -15,14 +15,14 @@ tablist_t *setkey_copy; char *setkey_str; mtx_t setkey_mtx; -int setkeys(tablist_t **list, char *pair) +int setkeys(tablist_t *list, char *pair) { int rc = 0; - setkey_copy = calloc(list[0]->len, sizeof(tablist_t)); - copytab(setkey_copy, *list); + setkey_copy = calloc(list[0].len, sizeof(tablist_t)); + copytab(setkey_copy, list); setkey_str = pair; - thrd_t *thrds = calloc(list[0]->len, sizeof(thrd_t)); + thrd_t *thrds = calloc(list[0].len, sizeof(thrd_t)); if (mtx_init(&setkey_mtx, mtx_plain) != thrd_success) return -1; @@ -35,8 +35,8 @@ int setkeys(tablist_t **list, char *pair) thrd_join(thrds[i], &rc); } if (!rc) { - dellist(*list); - memcpy(*list, setkey_copy, setkey_copy[0].len * sizeof(tablist_t)); + dellist(list); + memcpy(list, setkey_copy, setkey_copy[0].len * sizeof(tablist_t)); } else dellist(setkey_copy); free(thrds); @@ -96,7 +96,14 @@ static int delkey_helper(void *thr_data) int *id = (int *) thr_data; mtx_lock(&delkey_mtx); - rc = delkey(delkey_copy, *id, delkey_str); + if (delkey_str) + rc = delkey(delkey_copy, *id, delkey_str); + else { + int *indexes = getkeys(delkey_copy, *id); + for (int i = 0; indexes[i]; ++i) + delkey(delkey_copy, *id, delkey_copy[*id].tab[indexes[i]].key); + free(indexes); + } mtx_unlock(&delkey_mtx); free(id); diff --git a/src/lib/mdb.h b/src/lib/mdb.h index f1c6a1c..56bed05 100644 --- a/src/lib/mdb.h +++ b/src/lib/mdb.h @@ -24,7 +24,7 @@ int setkey(tablist_t **list, int id, char *pair); int delkey(tablist_t *list, int id, char *key); int *getkeys(tablist_t *list, int id); -int setkeys(tablist_t **list, char *pair); +int setkeys(tablist_t *list, char *pair); int delkeys(tablist_t *list, char *key); // file operations |