commit 0ff3b32
default
·
2022-11-23 18:14:55 +0000 UTC
parent fc96f02
New function list_del_md5().
1 files changed,
+38,
-0
M
data.c
M
data.c
+38,
-0
1@@ -314,6 +314,44 @@ int list_add_md5(const char *fn, const char *md5)
2 }
3
4
5+int list_del_md5(const char *fn, const char *md5)
6+/* deletes an md5 from a list */
7+{
8+ int status = 404;
9+ FILE *i, *o;
10+
11+ if ((i = fopen(fn, "r")) != NULL) {
12+ flock(fileno(i), LOCK_EX);
13+
14+ xs *nfn = xs_fmt("%s.new", fn);
15+
16+ if ((o = fopen(nfn, "w")) != NULL) {
17+ char line[32 + 1];
18+
19+ while (fgets(line, sizeof(line), i) != NULL) {
20+ if (memcmp(line, md5, 32) != 0)
21+ fwrite(line, sizeof(line), 1, o);
22+ }
23+
24+ fclose(o);
25+
26+ xs *ofn = xs_fmt("%s.old", fn);
27+
28+ link(fn, ofn);
29+ rename(nfn, fn);
30+ }
31+ else
32+ status = 500;
33+
34+ fclose(i);
35+ }
36+ else
37+ status = 500;
38+
39+ return status;
40+}
41+
42+
43 d_char *_follower_fn(snac *snac, char *actor)
44 {
45 xs *md5 = xs_md5_hex(actor, strlen(actor));