diff options
| -rw-r--r-- | data.c | 15 |
1 files changed, 8 insertions, 7 deletions
| @@ -1492,11 +1492,13 @@ d_char *dequeue(snac *snac, char *fn) | |||
| 1492 | } | 1492 | } |
| 1493 | 1493 | ||
| 1494 | 1494 | ||
| 1495 | static void _purge_file(const char *fn, int days) | 1495 | static void _purge_file(const char *fn, int days, int n_link) |
| 1496 | /* purge fn if it's older than days and has less than n_link hard links */ | ||
| 1496 | { | 1497 | { |
| 1497 | time_t mt = time(NULL) - days * 24 * 3600; | 1498 | time_t mt = time(NULL) - days * 24 * 3600; |
| 1499 | int nl; | ||
| 1498 | 1500 | ||
| 1499 | if (mtime(fn) < mt) { | 1501 | if (mtime_nl(fn, &nl) < mt && nl < n_link) { |
| 1500 | /* older than the minimum time: delete it */ | 1502 | /* older than the minimum time: delete it */ |
| 1501 | unlink(fn); | 1503 | unlink(fn); |
| 1502 | srv_debug(1, xs_fmt("purged %s", fn)); | 1504 | srv_debug(1, xs_fmt("purged %s", fn)); |
| @@ -1514,7 +1516,7 @@ static void _purge_subdir(snac *snac, const char *subdir, int days) | |||
| 1514 | 1516 | ||
| 1515 | p = list; | 1517 | p = list; |
| 1516 | while (xs_list_iter(&p, &v)) | 1518 | while (xs_list_iter(&p, &v)) |
| 1517 | _purge_file(v, days); | 1519 | _purge_file(v, days, XS_ALL); |
| 1518 | } | 1520 | } |
| 1519 | } | 1521 | } |
| 1520 | 1522 | ||
| @@ -1523,7 +1525,6 @@ void purge_server(void) | |||
| 1523 | /* purge global server data */ | 1525 | /* purge global server data */ |
| 1524 | { | 1526 | { |
| 1525 | int tpd = xs_number_get(xs_dict_get(srv_config, "timeline_purge_days")); | 1527 | int tpd = xs_number_get(xs_dict_get(srv_config, "timeline_purge_days")); |
| 1526 | // int lpd = xs_number_get(xs_dict_get(srv_config, "local_purge_days")); | ||
| 1527 | xs *spec = xs_fmt("%s/object/??", srv_basedir); | 1528 | xs *spec = xs_fmt("%s/object/??", srv_basedir); |
| 1528 | xs *dirs = xs_glob(spec, 0, 0); | 1529 | xs *dirs = xs_glob(spec, 0, 0); |
| 1529 | char *p, *v; | 1530 | char *p, *v; |
| @@ -1536,7 +1537,7 @@ void purge_server(void) | |||
| 1536 | 1537 | ||
| 1537 | p2 = files; | 1538 | p2 = files; |
| 1538 | while (xs_list_iter(&p2, &v2)) { | 1539 | while (xs_list_iter(&p2, &v2)) { |
| 1539 | _purge_file(v2, tpd); | 1540 | _purge_file(v2, tpd, 2); |
| 1540 | } | 1541 | } |
| 1541 | } | 1542 | } |
| 1542 | } | 1543 | } |
| @@ -1559,8 +1560,6 @@ void purge_user(snac *snac) | |||
| 1559 | void purge_all(void) | 1560 | void purge_all(void) |
| 1560 | /* purge all users */ | 1561 | /* purge all users */ |
| 1561 | { | 1562 | { |
| 1562 | purge_server(); | ||
| 1563 | |||
| 1564 | snac snac; | 1563 | snac snac; |
| 1565 | xs *list = user_list(); | 1564 | xs *list = user_list(); |
| 1566 | char *p, *uid; | 1565 | char *p, *uid; |
| @@ -1572,4 +1571,6 @@ void purge_all(void) | |||
| 1572 | user_free(&snac); | 1571 | user_free(&snac); |
| 1573 | } | 1572 | } |
| 1574 | } | 1573 | } |
| 1574 | |||
| 1575 | purge_server(); | ||
| 1575 | } | 1576 | } |