summaryrefslogtreecommitdiff
path: root/data.c
diff options
context:
space:
mode:
authorGravatar default2022-11-23 19:14:55 +0100
committerGravatar default2022-11-23 19:14:55 +0100
commit0ff3b32e712a7750feef9e19dca3507641eb01ea (patch)
tree1c9e9910f137f0a20229a44ac7066d66c29df186 /data.c
parentNew function object_get_by_md5(). (diff)
downloadsnac2-0ff3b32e712a7750feef9e19dca3507641eb01ea.tar.gz
snac2-0ff3b32e712a7750feef9e19dca3507641eb01ea.tar.xz
snac2-0ff3b32e712a7750feef9e19dca3507641eb01ea.zip
New function list_del_md5().
Diffstat (limited to 'data.c')
-rw-r--r--data.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/data.c b/data.c
index 70d48db..bc01103 100644
--- a/data.c
+++ b/data.c
@@ -314,6 +314,44 @@ int list_add_md5(const char *fn, const char *md5)
314} 314}
315 315
316 316
317int list_del_md5(const char *fn, const char *md5)
318/* deletes an md5 from a list */
319{
320 int status = 404;
321 FILE *i, *o;
322
323 if ((i = fopen(fn, "r")) != NULL) {
324 flock(fileno(i), LOCK_EX);
325
326 xs *nfn = xs_fmt("%s.new", fn);
327
328 if ((o = fopen(nfn, "w")) != NULL) {
329 char line[32 + 1];
330
331 while (fgets(line, sizeof(line), i) != NULL) {
332 if (memcmp(line, md5, 32) != 0)
333 fwrite(line, sizeof(line), 1, o);
334 }
335
336 fclose(o);
337
338 xs *ofn = xs_fmt("%s.old", fn);
339
340 link(fn, ofn);
341 rename(nfn, fn);
342 }
343 else
344 status = 500;
345
346 fclose(i);
347 }
348 else
349 status = 500;
350
351 return status;
352}
353
354
317d_char *_follower_fn(snac *snac, char *actor) 355d_char *_follower_fn(snac *snac, char *actor)
318{ 356{
319 xs *md5 = xs_md5_hex(actor, strlen(actor)); 357 xs *md5 = xs_md5_hex(actor, strlen(actor));