diff options
| author | 2022-11-27 09:45:06 +0100 | |
|---|---|---|
| committer | 2022-11-27 09:45:06 +0100 | |
| commit | 9a0a03dd9f0eb3d8201afd55de3cc7a49ff83b1a (patch) | |
| tree | c2b5286e6bbcc1f4975e774e3adf7074e3c7dc87 | |
| parent | Dump bad signature headers to /tmp/ (temporary). (diff) | |
| download | snac2-9a0a03dd9f0eb3d8201afd55de3cc7a49ff83b1a.tar.gz snac2-9a0a03dd9f0eb3d8201afd55de3cc7a49ff83b1a.tar.xz snac2-9a0a03dd9f0eb3d8201afd55de3cc7a49ff83b1a.zip | |
New function object_del_if_unref().
| -rw-r--r-- | data.c | 18 | ||||
| -rw-r--r-- | snac.h | 1 |
2 files changed, 17 insertions, 2 deletions
| @@ -552,6 +552,20 @@ int object_del(const char *id) | |||
| 552 | } | 552 | } |
| 553 | 553 | ||
| 554 | 554 | ||
| 555 | int object_del_if_unref(const char *id) | ||
| 556 | /* deletes an object if its n_links < 2 */ | ||
| 557 | { | ||
| 558 | xs *fn = _object_fn(id); | ||
| 559 | int n_links; | ||
| 560 | int ret = 0; | ||
| 561 | |||
| 562 | if (mtime_nl(fn, &n_links) > 0.0 && n_links < 2) | ||
| 563 | ret = object_del(id); | ||
| 564 | |||
| 565 | return ret; | ||
| 566 | } | ||
| 567 | |||
| 568 | |||
| 555 | d_char *object_children(const char *id) | 569 | d_char *object_children(const char *id) |
| 556 | /* returns the list of an object's children */ | 570 | /* returns the list of an object's children */ |
| 557 | { | 571 | { |
| @@ -791,8 +805,8 @@ int timeline_del(snac *snac, char *id) | |||
| 791 | object_user_cache_del(snac, id, "public"); | 805 | object_user_cache_del(snac, id, "public"); |
| 792 | object_user_cache_del(snac, id, "private"); | 806 | object_user_cache_del(snac, id, "private"); |
| 793 | 807 | ||
| 794 | /* NOTE: this is a good place to count the # of links | 808 | /* try to delete the object if it's not used elsewhere */ |
| 795 | of the object and object_del() it if it's < 2 */ | 809 | object_del_if_unref(id); |
| 796 | 810 | ||
| 797 | return ret; | 811 | return ret; |
| 798 | } | 812 | } |
| @@ -60,6 +60,7 @@ d_char *index_list(const char *fn, int max); | |||
| 60 | d_char *index_list_desc(const char *fn, int max); | 60 | d_char *index_list_desc(const char *fn, int max); |
| 61 | 61 | ||
| 62 | int object_del(const char *id); | 62 | int object_del(const char *id); |
| 63 | int object_del_if_unref(const char *id); | ||
| 63 | 64 | ||
| 64 | int follower_add(snac *snac, char *actor, char *msg); | 65 | int follower_add(snac *snac, char *actor, char *msg); |
| 65 | int follower_del(snac *snac, char *actor); | 66 | int follower_del(snac *snac, char *actor); |