snac2

Fork of https://codeberg.org/grunfink/snac2
git clone https://git.inz.fi/snac2
Log | Files | Refs | README | LICENSE

commit 0ff3b32e712a7750feef9e19dca3507641eb01ea
parent fc96f02b917d3c2af9284bbbcfc69456bbfba0c3
Author: default <nobody@localhost>
Date:   Wed, 23 Nov 2022 19:14:55 +0100

New function list_del_md5().

Diffstat:
Mdata.c | 38++++++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+), 0 deletions(-)

diff --git a/data.c b/data.c @@ -314,6 +314,44 @@ int list_add_md5(const char *fn, const char *md5) } +int list_del_md5(const char *fn, const char *md5) +/* deletes an md5 from a list */ +{ + int status = 404; + FILE *i, *o; + + if ((i = fopen(fn, "r")) != NULL) { + flock(fileno(i), LOCK_EX); + + xs *nfn = xs_fmt("%s.new", fn); + + if ((o = fopen(nfn, "w")) != NULL) { + char line[32 + 1]; + + while (fgets(line, sizeof(line), i) != NULL) { + if (memcmp(line, md5, 32) != 0) + fwrite(line, sizeof(line), 1, o); + } + + fclose(o); + + xs *ofn = xs_fmt("%s.old", fn); + + link(fn, ofn); + rename(nfn, fn); + } + else + status = 500; + + fclose(i); + } + else + status = 500; + + return status; +} + + d_char *_follower_fn(snac *snac, char *actor) { xs *md5 = xs_md5_hex(actor, strlen(actor));