From 5e438f8353db63c4dca5037664e10730144b0922 Mon Sep 17 00:00:00 2001 From: default Date: Mon, 19 Sep 2022 23:33:11 +0200 Subject: New function user_list(). --- data.c | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) (limited to 'data.c') diff --git a/data.c b/data.c index 4782c2e..3b0cb72 100644 --- a/data.c +++ b/data.c @@ -7,6 +7,9 @@ #include "snac.h" +#include + + int srv_open(char *basedir) /* opens a server */ { @@ -61,7 +64,7 @@ int srv_open(char *basedir) } -void snac_free(snac *snac) +void user_free(snac *snac) /* frees a user snac */ { free(snac->uid); @@ -125,9 +128,36 @@ int user_open(snac *snac, char *uid) srv_log(xs_fmt("invalid user '%s'", uid)); if (!ret) - snac_free(snac); + user_free(snac); return ret; } +d_char *user_list(void) +/* returns the list of user ids */ +{ + d_char *list; + xs *spec; + glob_t globbuf; + + globbuf.gl_offs = 1; + + list = xs_list_new(); + spec = xs_fmt("%s/user/*", srv_basedir); /**/ + + if (glob(spec, 0, NULL, &globbuf) == 0) { + int n; + char *p; + + for (n = 0; (p = globbuf.gl_pathv[n]) != NULL; n++) { + if ((p = strrchr(p, '/')) != NULL) + list = xs_list_append(list, p + 1); + } + } + + globfree(&globbuf); + + return list; +} + -- cgit v1.2.3