瀏覽代碼

Added some tweaks to file locking.

default 3 年之前
父節點
當前提交
e8c487add7
共有 1 個文件被更改,包括 8 次插入0 次删除
  1. 8 0
      data.c

+ 8 - 0
data.c

@@ -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;
 }