diff options
Diffstat (limited to 'data.c')
| -rw-r--r-- | data.c | 30 |
1 files changed, 26 insertions, 4 deletions
| @@ -154,12 +154,34 @@ int user_open(snac *snac, const char *uid) | |||
| 154 | memset(snac, '\0', sizeof(struct _snac)); | 154 | memset(snac, '\0', sizeof(struct _snac)); |
| 155 | 155 | ||
| 156 | if (validate_uid(uid)) { | 156 | if (validate_uid(uid)) { |
| 157 | xs *cfg_file; | 157 | xs *cfg_file = NULL; |
| 158 | FILE *f; | 158 | FILE *f; |
| 159 | 159 | ||
| 160 | snac->uid = xs_str_new(uid); | 160 | xs *t = xs_fmt("%s/user/%s", srv_basedir, uid); |
| 161 | 161 | ||
| 162 | snac->basedir = xs_fmt("%s/user/%s", srv_basedir, uid); | 162 | if (mtime(t) == 0.0) { |
| 163 | /* user folder does not exist; try with a different case */ | ||
| 164 | xs *lcuid = xs_tolower_i(xs_dup(uid)); | ||
| 165 | xs *ulist = user_list(); | ||
| 166 | xs_list *p = ulist; | ||
| 167 | xs_str *v; | ||
| 168 | |||
| 169 | while (xs_list_iter(&p, &v)) { | ||
| 170 | xs *v2 = xs_tolower_i(xs_dup(v)); | ||
| 171 | |||
| 172 | if (strcmp(lcuid, v2) == 0) { | ||
| 173 | snac->uid = xs_dup(v); | ||
| 174 | break; | ||
| 175 | } | ||
| 176 | } | ||
| 177 | } | ||
| 178 | else | ||
| 179 | snac->uid = xs_str_new(uid); | ||
| 180 | |||
| 181 | if (snac->uid == NULL) | ||
| 182 | return ret; | ||
| 183 | |||
| 184 | snac->basedir = xs_fmt("%s/user/%s", srv_basedir, snac->uid); | ||
| 163 | 185 | ||
| 164 | cfg_file = xs_fmt("%s/user.json", snac->basedir); | 186 | cfg_file = xs_fmt("%s/user.json", snac->basedir); |
| 165 | 187 | ||
| @@ -176,7 +198,7 @@ int user_open(snac *snac, const char *uid) | |||
| 176 | fclose(f); | 198 | fclose(f); |
| 177 | 199 | ||
| 178 | if (snac->key != NULL) { | 200 | if (snac->key != NULL) { |
| 179 | snac->actor = xs_fmt("%s/%s", srv_baseurl, uid); | 201 | snac->actor = xs_fmt("%s/%s", srv_baseurl, snac->uid); |
| 180 | snac->md5 = xs_md5_hex(snac->actor, strlen(snac->actor)); | 202 | snac->md5 = xs_md5_hex(snac->actor, strlen(snac->actor)); |
| 181 | 203 | ||
| 182 | /* everything is ok right now */ | 204 | /* everything is ok right now */ |