From 29fb43079761796e34209611ec93bd651b871cab Mon Sep 17 00:00:00 2001 From: default Date: Mon, 29 Apr 2024 09:26:37 +0200 Subject: More work in lists. --- data.c | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) (limited to 'data.c') diff --git a/data.c b/data.c index 46d95b4..ed65d32 100644 --- a/data.c +++ b/data.c @@ -1732,6 +1732,7 @@ xs_list *tag_search(char *tag, int skip, int show) /** lists **/ xs_val *list_maint(snac *user, const char *list, int op) +/* list maintenance */ { xs_val *l = NULL; @@ -1810,15 +1811,48 @@ xs_val *list_maint(snac *user, const char *list, int op) fn = xs_replace_i(fn, ".id", ".lst"); unlink(fn); - fn = xs_replace_i(fn, ".list", ".idx"); + fn = xs_replace_i(fn, ".lst", ".idx"); unlink(fn); } } break; + } + + return l; +} + + +xs_val *list_content(snac *user, const char *list, const char *actor_md5, int op) +/* list content management */ +{ + xs_val *l = NULL; + + if (!xs_is_hex(list)) + return NULL; + + if (actor_md5 != NULL && !xs_is_hex(actor_md5)) + return NULL; + + xs *fn = xs_fmt("%s/list/%s.lst", user->basedir, list); + + switch (op) { + case 0: /** list content **/ + l = index_list(fn, XS_ALL); - case 3: /** list content (list is the id) **/ break; + + case 1: /** append actor to list **/ + if (actor_md5 != NULL) { + if (!index_in(fn, actor_md5)) + index_add_md5(fn, actor_md5); + } + + break; + + case 2: /** delete actor from list **/ + if (actor_md5 != NULL) + index_del_md5(fn, actor_md5); } return l; -- cgit v1.2.3