diff options
Diffstat (limited to 'data.c')
| -rw-r--r-- | data.c | 29 |
1 files changed, 29 insertions, 0 deletions
| @@ -3137,6 +3137,35 @@ int instance_failure(const char *url, int op) | |||
| 3137 | } | 3137 | } |
| 3138 | 3138 | ||
| 3139 | 3139 | ||
| 3140 | int grave(const char *objid, int op) | ||
| 3141 | /* the graveyeard of deleted objects */ | ||
| 3142 | { | ||
| 3143 | int ret = 0; | ||
| 3144 | xs *dir = xs_fmt("%s/grave", srv_basedir); | ||
| 3145 | xs *md5 = xs_md5_hex(objid, strlen(objid)); | ||
| 3146 | xs *fn = xs_fmt("%s/%s", dir, md5); | ||
| 3147 | FILE *f; | ||
| 3148 | |||
| 3149 | switch (op) { | ||
| 3150 | case 0: /** check **/ | ||
| 3151 | ret = mtime(fn) > 0.0 ? 1 : 0; | ||
| 3152 | break; | ||
| 3153 | |||
| 3154 | case 1: /** add **/ | ||
| 3155 | mkdirx(dir); | ||
| 3156 | |||
| 3157 | if ((f = fopen(fn, "w")) != NULL) { | ||
| 3158 | fprintf(f, "%s\n", objid); | ||
| 3159 | fclose(f); | ||
| 3160 | } | ||
| 3161 | |||
| 3162 | break; | ||
| 3163 | } | ||
| 3164 | |||
| 3165 | return ret; | ||
| 3166 | } | ||
| 3167 | |||
| 3168 | |||
| 3140 | /** notifications **/ | 3169 | /** notifications **/ |
| 3141 | 3170 | ||
| 3142 | xs_str *notify_check_time(snac *snac, int reset) | 3171 | xs_str *notify_check_time(snac *snac, int reset) |