summaryrefslogtreecommitdiff
path: root/data.c
diff options
context:
space:
mode:
authordefault <nobody@localhost>2024-04-29 09:26:37 +0200
committerdefault <nobody@localhost>2024-04-29 09:26:37 +0200
commit29fb43079761796e34209611ec93bd651b871cab (patch)
tree92032b2b28cf51dcc534124334b6ff8561724441 /data.c
parent9a13e330f12aaf0fc1535e922efbf315308d252b (diff)
More work in lists.
Diffstat (limited to 'data.c')
-rw-r--r--data.c38
1 files changed, 36 insertions, 2 deletions
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;