diff options
| -rw-r--r-- | data.c | 33 | ||||
| -rw-r--r-- | main.c | 12 | ||||
| -rw-r--r-- | snac.h | 3 |
3 files changed, 48 insertions, 0 deletions
| @@ -554,3 +554,36 @@ void enqueue(snac *snac, char *actor, char *msg, int retries) | |||
| 554 | snac_debug(snac, 2, xs_fmt("enqueue %s %s %d", actor, fn, retries)); | 554 | snac_debug(snac, 2, xs_fmt("enqueue %s %s %d", actor, fn, retries)); |
| 555 | } | 555 | } |
| 556 | } | 556 | } |
| 557 | |||
| 558 | |||
| 559 | d_char *queue(snac *snac) | ||
| 560 | /* returns a list with filenames that can be dequeued */ | ||
| 561 | { | ||
| 562 | xs *spec = xs_fmt("%s/queue/" "*.json", snac->basedir); | ||
| 563 | d_char *list = xs_list_new(); | ||
| 564 | glob_t globbuf; | ||
| 565 | time_t t = time(NULL); | ||
| 566 | |||
| 567 | /* get the list in reverse order */ | ||
| 568 | if (glob(spec, 0, NULL, &globbuf) == 0) { | ||
| 569 | int n; | ||
| 570 | char *p; | ||
| 571 | |||
| 572 | for (n = 0; (p = globbuf.gl_pathv[n]) != NULL; n++) { | ||
| 573 | /* get the retry time from the basename */ | ||
| 574 | char *bn = strrchr(p, '/'); | ||
| 575 | time_t t2 = atol(bn + 1); | ||
| 576 | |||
| 577 | if (t2 > t) | ||
| 578 | snac_debug(snac, 2, xs_fmt("queue not yet time for %s", p)); | ||
| 579 | else { | ||
| 580 | list = xs_list_append(list, p); | ||
| 581 | snac_debug(snac, 2, xs_fmt("queue ready for %s", p)); | ||
| 582 | } | ||
| 583 | } | ||
| 584 | } | ||
| 585 | |||
| 586 | globfree(&globbuf); | ||
| 587 | |||
| 588 | return list; | ||
| 589 | } | ||
| @@ -16,6 +16,17 @@ int main(int argc, char *argv[]) | |||
| 16 | user_open(&snac, "mike"); | 16 | user_open(&snac, "mike"); |
| 17 | 17 | ||
| 18 | { | 18 | { |
| 19 | xs *list = queue(&snac); | ||
| 20 | char *p, *fn; | ||
| 21 | |||
| 22 | p = list; | ||
| 23 | while (xs_list_iter(&p, &fn)) { | ||
| 24 | printf("%s\n", fn); | ||
| 25 | } | ||
| 26 | } | ||
| 27 | |||
| 28 | #if 0 | ||
| 29 | { | ||
| 19 | xs *list = follower_list(&snac); | 30 | xs *list = follower_list(&snac); |
| 20 | char *p, *obj; | 31 | char *p, *obj; |
| 21 | 32 | ||
| @@ -50,6 +61,7 @@ int main(int argc, char *argv[]) | |||
| 50 | } | 61 | } |
| 51 | } | 62 | } |
| 52 | } | 63 | } |
| 64 | #endif | ||
| 53 | 65 | ||
| 54 | return 0; | 66 | return 0; |
| 55 | } | 67 | } |
| @@ -57,3 +57,6 @@ int following_check(snac *snac, char *actor); | |||
| 57 | void mute(snac *snac, char *actor); | 57 | void mute(snac *snac, char *actor); |
| 58 | void unmute(snac *snac, char *actor); | 58 | void unmute(snac *snac, char *actor); |
| 59 | int is_muted(snac *snac, char *actor); | 59 | int is_muted(snac *snac, char *actor); |
| 60 | |||
| 61 | void enqueue(snac *snac, char *actor, char *msg, int retries); | ||
| 62 | d_char *queue(snac *snac); | ||