snac2

Fork of https://codeberg.org/grunfink/snac2
git clone https://git.inz.fi/snac2
Log | Files | Refs | README | LICENSE

commit 0240c871f306f03d105d2ce9ca101932c014fcbd
parent 2ec58144ba58c03e30fa5de936db5323da4fb62e
Author: default <nobody@localhost>
Date:   Sun, 16 Apr 2023 07:43:41 +0200

New function user_open_by_md5().

Diffstat:
Mdata.c | 20++++++++++++++++++++
Mmastoapi.c | 6+-----
Msnac.h | 1+
3 files changed, 22 insertions(+), 5 deletions(-)

diff --git a/data.c b/data.c @@ -232,6 +232,26 @@ d_char *user_list(void) } +int user_open_by_md5(snac *snac, const char *md5) +/* iterates all users searching by md5 */ +{ + xs *ulist = user_list(); + xs_list *p = ulist; + xs_str *v; + + while (xs_list_iter(&p, &v)) { + user_open(snac, v); + + if (strcmp(snac->md5, md5) == 0) + return 1; + + user_free(snac); + } + + return 0; +} + + double mtime_nl(const char *fn, int *n_link) /* returns the mtime and number of links of a file or directory, or 0.0 */ { diff --git a/mastoapi.c b/mastoapi.c @@ -722,12 +722,8 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path, xs *out = NULL; xs *actor = NULL; - /* if uid it's the md5 of this actor, transform into a real uid */ - if (strcmp(uid, snac1.md5) == 0) - uid = xs_dict_get(snac1.config, "uid"); - /* is it a local user? */ - if (user_open(&snac2, uid)) { + if (user_open(&snac2, uid) || user_open_by_md5(&snac2, uid)) { if (opt == NULL) { /* account information */ actor = msg_actor(&snac2); diff --git a/snac.h b/snac.h @@ -42,6 +42,7 @@ typedef struct _snac { int user_open(snac *snac, const char *uid); void user_free(snac *snac); d_char *user_list(void); +int user_open_by_md5(snac *snac, const char *md5); void snac_debug(snac *snac, int level, d_char *str); #define snac_log(snac, str) snac_debug(snac, 0, str)