diff options
author | default <nobody@localhost> | 2024-04-29 09:26:37 +0200 |
---|---|---|
committer | default <nobody@localhost> | 2024-04-29 09:26:37 +0200 |
commit | 29fb43079761796e34209611ec93bd651b871cab (patch) | |
tree | 92032b2b28cf51dcc534124334b6ff8561724441 /data.c | |
parent | 9a13e330f12aaf0fc1535e922efbf315308d252b (diff) |
More work in lists.
Diffstat (limited to 'data.c')
-rw-r--r-- | data.c | 38 |
1 files changed, 36 insertions, 2 deletions
@@ -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; |