commit 2d2a685
default
·
2024-09-20 08:47:14 +0000 UTC
parent 3a5c781
More migration work.
7 files changed,
+29,
-13
+8,
-0
1@@ -2696,6 +2696,14 @@ int migrate_account(snac *user)
2 return 1;
3 }
4
5+ xs *move = msg_move(user, new_account);
6+ xs *fwers = follower_list(user);
7+
8+ xs_json_dump(move, 4, stdout);
9+ printf("\n");
10+ xs_json_dump(fwers, 4, stdout);
11+ printf("\n");
12+
13 return 0;
14 }
15
M
main.c
+12,
-4
1@@ -47,8 +47,8 @@ int usage(void)
2 printf("unlimit {basedir} {uid} {actor} Unlimits an actor\n");
3 printf("verify_links {basedir} {uid} Verifies a user's links (in the metadata)\n");
4 printf("search {basedir} {uid} {regex} Searches posts by content\n");
5- printf("alias {basedir} {uid} {account} Sets account (@user@host or actor url) as an alias\n");
6 printf("export_csv {basedir} {uid} Exports data as CSV files into current directory\n");
7+ printf("alias {basedir} {uid} {account} Sets account (@user@host or actor url) as an alias\n");
8 printf("migrate {basedir} {uid} Migrates to the account defined as the alias\n");
9
10 return 1;
11@@ -292,12 +292,20 @@ int main(int argc, char *argv[])
12 status = webfinger_request(url, &actor, &uid);
13
14 if (valid_status(status)) {
15- snac.config = xs_dict_set(snac.config, "alias", actor);
16+ if (strcmp(actor, snac.actor) == 0) {
17+ snac_log(&snac, xs_fmt("You can't be your own alias"));
18+ return 1;
19+ }
20+ else {
21+ snac.config = xs_dict_set(snac.config, "alias", actor);
22
23- user_persist(&snac, 1);
24+ user_persist(&snac, 1);
25+ }
26 }
27- else
28+ else {
29 snac_log(&snac, xs_fmt("Webfinger error for %s %d", url, status));
30+ return 1;
31+ }
32
33 return 0;
34 }
M
xs.h
+2,
-4
1@@ -23,7 +23,6 @@ typedef enum {
2 XSTYPE_LITEM = 0x1f, /* Element of a list (any type) */
3 XSTYPE_DICT = 0x1c, /* Sequence of KEYVALs up to EOM (with size) */
4 XSTYPE_KEYVAL = 0x1e, /* key + value (STRING key + any type) */
5- XSTYPE_EOM = 0x19, /* End of Multiple (LIST or DICT) */
6 XSTYPE_DATA = 0x10 /* A block of anonymous data */
7 } xstype;
8
9@@ -170,7 +169,7 @@ void *_xs_realloc(void *ptr, size_t size, const char *file, int line, const char
10 xs_val *ndata = realloc(ptr, size);
11
12 if (ndata == NULL) {
13- fprintf(stderr, "**OUT OF MEMORY**\n");
14+ fprintf(stderr, "ERROR: out of memory at %s:%d: %s()\n", file, line, func);
15 abort();
16 }
17
18@@ -266,7 +265,6 @@ xstype xs_type(const xs_val *data)
19 case XSTYPE_DICT:
20 case XSTYPE_KEYVAL:
21 case XSTYPE_NUMBER:
22- case XSTYPE_EOM:
23 case XSTYPE_DATA:
24 t = data[0];
25 break;
26@@ -696,7 +694,7 @@ xs_list *xs_list_new(void)
27 {
28 int sz = 1 + _XS_TYPE_SIZE + 1;
29 xs_list *l = xs_realloc(NULL, sz);
30- memset(l, XSTYPE_EOM, sz);
31+ memset(l, '\0', sz);
32
33 l[0] = XSTYPE_LIST;
34 _xs_put_size(l, sz);
+3,
-3
1@@ -1,8 +1,8 @@
2 /* copyright (c) 2022 - 2024 grunfink et al. / MIT license */
3
4-#ifndef _XS_MIME
5+#ifndef _XS_MIME_H
6
7-#define _XS_MIME
8+#define _XS_MIME_H
9
10 const char *xs_mime_by_ext(const char *file);
11
12@@ -81,4 +81,4 @@ const char *xs_mime_by_ext(const char *file)
13
14 #endif /* XS_IMPLEMENTATION */
15
16-#endif /* XS_MIME */
17+#endif /* XS_MIME_H */
M
xs_set.h
+1,
-1
1@@ -47,7 +47,7 @@ xs_list *xs_set_result(xs_set *s)
2 void xs_set_free(xs_set *s)
3 /* frees a set, dropping the list */
4 {
5- free(xs_set_result(s));
6+ xs_free(xs_set_result(s));
7 }
8
9
+2,
-0
1@@ -33,6 +33,8 @@
2
3 #ifdef XS_IMPLEMENTATION
4
5+#include <ctype.h>
6+
7 #ifndef xs_countof
8 #define xs_countof(a) (sizeof((a)) / sizeof((*a)))
9 #endif
+1,
-1
1@@ -1 +1 @@
2-/* 9c3dd1b1165c25baa154e82d8d278926e376af81 2024-09-14T18:18:42+02:00 */
3+/* ae3126a2d093c6bb5c36328e27bc93a452aff379 2024-09-20T07:39:32+02:00 */