summaryrefslogtreecommitdiff
path: root/upgrade.c
diff options
context:
space:
mode:
authorGravatar Louis Brauer2024-05-25 08:05:36 +0000
committerGravatar Louis Brauer2024-05-25 08:05:36 +0000
commit84a767dd0878013194ed7551b5ae6ef715e841a6 (patch)
tree9fb1b2b89e0bfbb4b8bf1e85d840c8653e646bb7 /upgrade.c
parentPrevent some browsers from caching servers basic auth request (diff)
parentBackport from xs (fix regex.h compilation with tcc). (diff)
downloadsnac2-84a767dd0878013194ed7551b5ae6ef715e841a6.tar.gz
snac2-84a767dd0878013194ed7551b5ae6ef715e841a6.tar.xz
snac2-84a767dd0878013194ed7551b5ae6ef715e841a6.zip
Merge pull request 'master' (#1) from grunfink/snac2:master into master
Reviewed-on: https://codeberg.org/louis77/snac2/pulls/1
Diffstat (limited to 'upgrade.c')
-rw-r--r--upgrade.c73
1 files changed, 49 insertions, 24 deletions
diff --git a/upgrade.c b/upgrade.c
index 7510ac8..847c62e 100644
--- a/upgrade.c
+++ b/upgrade.c
@@ -18,7 +18,7 @@ int snac_upgrade(xs_str **error)
18 double f = 0.0; 18 double f = 0.0;
19 19
20 for (;;) { 20 for (;;) {
21 char *layout = xs_dict_get(srv_config, "layout"); 21 const char *layout = xs_dict_get(srv_config, "layout");
22 double nf; 22 double nf;
23 23
24 f = nf = xs_number_get(layout); 24 f = nf = xs_number_get(layout);
@@ -43,7 +43,8 @@ int snac_upgrade(xs_str **error)
43 else 43 else
44 if (f < 2.2) { 44 if (f < 2.2) {
45 xs *users = user_list(); 45 xs *users = user_list();
46 char *p, *v; 46 char *p;
47 const char *v;
47 48
48 p = users; 49 p = users;
49 while (xs_list_iter(&p, &v)) { 50 while (xs_list_iter(&p, &v)) {
@@ -52,12 +53,13 @@ int snac_upgrade(xs_str **error)
52 if (user_open(&snac, v)) { 53 if (user_open(&snac, v)) {
53 xs *spec = xs_fmt("%s/actors/" "*.json", snac.basedir); 54 xs *spec = xs_fmt("%s/actors/" "*.json", snac.basedir);
54 xs *list = xs_glob(spec, 0, 0); 55 xs *list = xs_glob(spec, 0, 0);
55 char *g, *fn; 56 char *g;
57 const char *fn;
56 58
57 g = list; 59 g = list;
58 while (xs_list_iter(&g, &fn)) { 60 while (xs_list_iter(&g, &fn)) {
59 xs *l = xs_split(fn, "/"); 61 xs *l = xs_split(fn, "/");
60 char *b = xs_list_get(l, -1); 62 const char *b = xs_list_get(l, -1);
61 xs *dir = xs_fmt("%s/object/%c%c", srv_basedir, b[0], b[1]); 63 xs *dir = xs_fmt("%s/object/%c%c", srv_basedir, b[0], b[1]);
62 xs *nfn = xs_fmt("%s/%s", dir, b); 64 xs *nfn = xs_fmt("%s/%s", dir, b);
63 65
@@ -77,14 +79,16 @@ int snac_upgrade(xs_str **error)
77 else 79 else
78 if (f < 2.3) { 80 if (f < 2.3) {
79 xs *users = user_list(); 81 xs *users = user_list();
80 char *p, *v; 82 char *p;
83 const char *v;
81 84
82 p = users; 85 p = users;
83 while (xs_list_iter(&p, &v)) { 86 while (xs_list_iter(&p, &v)) {
84 snac snac; 87 snac snac;
85 88
86 if (user_open(&snac, v)) { 89 if (user_open(&snac, v)) {
87 char *p, *v; 90 char *p;
91 const char *v;
88 xs *dir = xs_fmt("%s/hidden", snac.basedir); 92 xs *dir = xs_fmt("%s/hidden", snac.basedir);
89 93
90 /* create the hidden directory */ 94 /* create the hidden directory */
@@ -109,7 +113,8 @@ int snac_upgrade(xs_str **error)
109 else 113 else
110 if (f < 2.4) { 114 if (f < 2.4) {
111 xs *users = user_list(); 115 xs *users = user_list();
112 char *p, *v; 116 char *p;
117 const char *v;
113 118
114 p = users; 119 p = users;
115 while (xs_list_iter(&p, &v)) { 120 while (xs_list_iter(&p, &v)) {
@@ -132,7 +137,8 @@ int snac_upgrade(xs_str **error)
132 if (f < 2.5) { 137 if (f < 2.5) {
133 /* upgrade followers */ 138 /* upgrade followers */
134 xs *users = user_list(); 139 xs *users = user_list();
135 char *p, *v; 140 char *p;
141 const char *v;
136 142
137 p = users; 143 p = users;
138 while (xs_list_iter(&p, &v)) { 144 while (xs_list_iter(&p, &v)) {
@@ -141,7 +147,8 @@ int snac_upgrade(xs_str **error)
141 if (user_open(&snac, v)) { 147 if (user_open(&snac, v)) {
142 xs *spec = xs_fmt("%s/followers/" "*.json", snac.basedir); 148 xs *spec = xs_fmt("%s/followers/" "*.json", snac.basedir);
143 xs *dir = xs_glob(spec, 0, 0); 149 xs *dir = xs_glob(spec, 0, 0);
144 char *p, *v; 150 char *p;
151 const char *v;
145 152
146 p = dir; 153 p = dir;
147 while (xs_list_iter(&p, &v)) { 154 while (xs_list_iter(&p, &v)) {
@@ -152,12 +159,12 @@ int snac_upgrade(xs_str **error)
152 xs *o = xs_json_loads(s); 159 xs *o = xs_json_loads(s);
153 fclose(f); 160 fclose(f);
154 161
155 char *type = xs_dict_get(o, "type"); 162 const char *type = xs_dict_get(o, "type");
156 163
157 if (!xs_is_null(type) && strcmp(type, "Follow") == 0) { 164 if (!xs_is_null(type) && strcmp(type, "Follow") == 0) {
158 unlink(v); 165 unlink(v);
159 166
160 char *actor = xs_dict_get(o, "actor"); 167 const char *actor = xs_dict_get(o, "actor");
161 168
162 if (!xs_is_null(actor)) 169 if (!xs_is_null(actor))
163 follower_add(&snac, actor); 170 follower_add(&snac, actor);
@@ -175,7 +182,8 @@ int snac_upgrade(xs_str **error)
175 if (f < 2.6) { 182 if (f < 2.6) {
176 /* upgrade local/ to public/ */ 183 /* upgrade local/ to public/ */
177 xs *users = user_list(); 184 xs *users = user_list();
178 char *p, *v; 185 char *p;
186 const char *v;
179 187
180 p = users; 188 p = users;
181 while (xs_list_iter(&p, &v)) { 189 while (xs_list_iter(&p, &v)) {
@@ -184,7 +192,8 @@ int snac_upgrade(xs_str **error)
184 if (user_open(&snac, v)) { 192 if (user_open(&snac, v)) {
185 xs *spec = xs_fmt("%s/local/" "*.json", snac.basedir); 193 xs *spec = xs_fmt("%s/local/" "*.json", snac.basedir);
186 xs *dir = xs_glob(spec, 0, 0); 194 xs *dir = xs_glob(spec, 0, 0);
187 char *p, *v; 195 char *p;
196 const char *v;
188 197
189 p = dir; 198 p = dir;
190 while (xs_list_iter(&p, &v)) { 199 while (xs_list_iter(&p, &v)) {
@@ -198,22 +207,29 @@ int snac_upgrade(xs_str **error)
198 xs *meta = xs_dup(xs_dict_get(o, "_snac")); 207 xs *meta = xs_dup(xs_dict_get(o, "_snac"));
199 o = xs_dict_del(o, "_snac"); 208 o = xs_dict_del(o, "_snac");
200 209
201 char *id = xs_dict_get(o, "id"); 210 const char *id = xs_dict_get(o, "id");
202 211
203 /* store object */ 212 /* store object */
204 object_add_ow(id, o); 213 object_add_ow(id, o);
205 214
206 /* if it's from us, add to public */ 215 /* if it's from us, add to public */
207 if (xs_startswith(id, snac.actor)) { 216 if (xs_startswith(id, snac.actor)) {
208 char *p, *v; 217 const xs_list *p;
218 const char *v;
219 int c;
209 220
210 object_user_cache_add(&snac, id, "public"); 221 object_user_cache_add(&snac, id, "public");
211 222
212 p = xs_dict_get(meta, "announced_by"); 223 p = xs_dict_get(meta, "announced_by");
213 while (xs_list_iter(&p, &v)) 224
225 c = 0;
226 while (xs_list_next(p, &v, &c))
214 object_admire(id, v, 0); 227 object_admire(id, v, 0);
228
215 p = xs_dict_get(meta, "liked_by"); 229 p = xs_dict_get(meta, "liked_by");
216 while (xs_list_iter(&p, &v)) 230
231 c = 0;
232 while (xs_list_next(p, &v, &c))
217 object_admire(id, v, 1); 233 object_admire(id, v, 1);
218 } 234 }
219 235
@@ -234,7 +250,8 @@ int snac_upgrade(xs_str **error)
234 if (f < 2.7) { 250 if (f < 2.7) {
235 /* upgrade timeline/ to private/ */ 251 /* upgrade timeline/ to private/ */
236 xs *users = user_list(); 252 xs *users = user_list();
237 char *p, *v; 253 char *p;
254 const char *v;
238 255
239 p = users; 256 p = users;
240 while (xs_list_iter(&p, &v)) { 257 while (xs_list_iter(&p, &v)) {
@@ -243,7 +260,8 @@ int snac_upgrade(xs_str **error)
243 if (user_open(&snac, v)) { 260 if (user_open(&snac, v)) {
244 xs *spec = xs_fmt("%s/timeline/" "*.json", snac.basedir); 261 xs *spec = xs_fmt("%s/timeline/" "*.json", snac.basedir);
245 xs *dir = xs_glob(spec, 0, 0); 262 xs *dir = xs_glob(spec, 0, 0);
246 char *p, *v; 263 char *p;
264 const char *v;
247 265
248 p = dir; 266 p = dir;
249 while (xs_list_iter(&p, &v)) { 267 while (xs_list_iter(&p, &v)) {
@@ -257,21 +275,28 @@ int snac_upgrade(xs_str **error)
257 xs *meta = xs_dup(xs_dict_get(o, "_snac")); 275 xs *meta = xs_dup(xs_dict_get(o, "_snac"));
258 o = xs_dict_del(o, "_snac"); 276 o = xs_dict_del(o, "_snac");
259 277
260 char *id = xs_dict_get(o, "id"); 278 const char *id = xs_dict_get(o, "id");
261 279
262 /* store object */ 280 /* store object */
263 object_add_ow(id, o); 281 object_add_ow(id, o);
264 282
265 { 283 {
266 char *p, *v; 284 const xs_list *p;
285 const char *v;
286 int c = 0;
267 287
268 object_user_cache_add(&snac, id, "private"); 288 object_user_cache_add(&snac, id, "private");
269 289
270 p = xs_dict_get(meta, "announced_by"); 290 p = xs_dict_get(meta, "announced_by");
271 while (xs_list_iter(&p, &v)) 291
292 c = 0;
293 while (xs_list_next(p, &v, &c))
272 object_admire(id, v, 0); 294 object_admire(id, v, 0);
295
273 p = xs_dict_get(meta, "liked_by"); 296 p = xs_dict_get(meta, "liked_by");
274 while (xs_list_iter(&p, &v)) 297
298 c = 0;
299 while (xs_list_next(p, &v, &c))
275 object_admire(id, v, 1); 300 object_admire(id, v, 1);
276 } 301 }
277 302