Ver código fonte

Added calls to flock() in object functions.

default 3 anos atrás
pai
commit
8c44c885e1
1 arquivos alterados com 6 adições e 1 exclusões
  1. 6 1
      data.c

+ 6 - 1
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);