summaryrefslogtreecommitdiff
path: root/data.c
diff options
context:
space:
mode:
authordefault <nobody@localhost>2022-11-23 15:34:07 +0100
committerdefault <nobody@localhost>2022-11-23 15:34:07 +0100
commit8c44c885e160296b75c55363a8ec6b1178dc9cb7 (patch)
tree7cc6254356504974e0f4ee2a259d4023a578abcb /data.c
parenteb2cde3b6d2ac2a8bdc71b07488b19639d4a8abe (diff)
Added calls to flock() in object functions.
Diffstat (limited to 'data.c')
-rw-r--r--data.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/data.c b/data.c
index 457219c..6d48fd4 100644
--- a/data.c
+++ b/data.c
@@ -10,8 +10,9 @@
#include "snac.h"
#include <time.h>
-#include <glob.h>
#include <sys/stat.h>
+#include <sys/file.h>
+#include <fcntl.h>
double db_layout = 2.1;
@@ -218,6 +219,8 @@ int object_get(const char *id, d_char **obj, const char *type)
FILE *f;
if ((f = fopen(fn, "r")) != NULL) {
+ flock(fileno(f), LOCK_SH);
+
xs *j = xs_readall(f);
fclose(f);
@@ -252,6 +255,8 @@ int object_add(const char *id, d_char *obj)
FILE *f;
if ((f = fopen(fn, "w")) != NULL) {
+ flock(fileno(f), LOCK_EX);
+
xs *j = xs_json_dumps_pp(obj, 4);
fwrite(j, strlen(j), 1, f);