diff options
author | default <nobody@localhost> | 2022-11-26 19:19:52 +0100 |
---|---|---|
committer | default <nobody@localhost> | 2022-11-26 19:19:52 +0100 |
commit | e8c487add7487adcc8eee0b86c7d78bf94fb3311 (patch) | |
tree | 924d9f8e4a1b05abd794ed57dbc6b80fd3f4583f /data.c | |
parent | 2ad703e52028814a27918f5e840f734aa98adfd1 (diff) |
Added some tweaks to file locking.
Diffstat (limited to 'data.c')
-rw-r--r-- | data.c | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -218,6 +218,9 @@ int index_add_md5(const char *fn, const char *md5) if ((f = fopen(fn, "a")) != NULL) { flock(fileno(f), LOCK_EX); + /* ensure the position is at the end after getting the lock */ + fseek(f, 0, SEEK_END); + fprintf(f, "%s\n", md5); fclose(f); } @@ -314,6 +317,8 @@ int index_first(const char *fn, char *line, int size) int ret = 0; if ((f = fopen(fn, "r")) != NULL) { + flock(fileno(f), LOCK_SH); + if (fgets(line, size, f) != NULL) { line[32] = '\0'; ret = 1; @@ -786,6 +791,9 @@ int timeline_del(snac *snac, char *id) object_user_cache_del(snac, id, "public"); object_user_cache_del(snac, id, "private"); + /* NOTE: this is a good place to count the # of links + of the object and object_del() it if it's < 2 */ + return ret; } |