Просмотр исходного кода

New function object_del_if_unref().

default 3 лет назад
Родитель
Сommit
9a0a03dd9f
2 измененных файлов с 17 добавлено и 2 удалено
  1. 16 2
      data.c
  2. 1 0
      snac.h

+ 16 - 2
data.c

@@ -552,6 +552,20 @@ int object_del(const char *id)
 }
 
 
+int object_del_if_unref(const char *id)
+/* deletes an object if its n_links < 2 */
+{
+    xs *fn = _object_fn(id);
+    int n_links;
+    int ret = 0;
+
+    if (mtime_nl(fn, &n_links) > 0.0 && n_links < 2)
+        ret = object_del(id);
+
+    return ret;
+}
+
+
 d_char *object_children(const char *id)
 /* returns the list of an object's children */
 {
@@ -791,8 +805,8 @@ 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 */
+    /* try to delete the object if it's not used elsewhere */
+    object_del_if_unref(id);
 
     return ret;
 }

+ 1 - 0
snac.h

@@ -60,6 +60,7 @@ d_char *index_list(const char *fn, int max);
 d_char *index_list_desc(const char *fn, int max);
 
 int object_del(const char *id);
+int object_del_if_unref(const char *id);
 
 int follower_add(snac *snac, char *actor, char *msg);
 int follower_del(snac *snac, char *actor);