diff options
author | default <nobody@localhost> | 2023-04-16 07:43:41 +0200 |
---|---|---|
committer | default <nobody@localhost> | 2023-04-16 07:43:41 +0200 |
commit | 0240c871f306f03d105d2ce9ca101932c014fcbd (patch) | |
tree | db9e1c8d77a60104bae61e155679761cbed01530 | |
parent | 2ec58144ba58c03e30fa5de936db5323da4fb62e (diff) |
New function user_open_by_md5().
-rw-r--r-- | data.c | 20 | ||||
-rw-r--r-- | mastoapi.c | 6 | ||||
-rw-r--r-- | snac.h | 1 |
3 files changed, 22 insertions, 5 deletions
@@ -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 */ { @@ -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); @@ -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) |