diff --git a/data.c b/data.c index fe21be6..e875f90 100644 --- a/data.c +++ b/data.c @@ -554,3 +554,36 @@ void enqueue(snac *snac, char *actor, char *msg, int retries) snac_debug(snac, 2, xs_fmt("enqueue %s %s %d", actor, fn, retries)); } } + + +d_char *queue(snac *snac) +/* returns a list with filenames that can be dequeued */ +{ + xs *spec = xs_fmt("%s/queue/" "*.json", snac->basedir); + d_char *list = xs_list_new(); + glob_t globbuf; + time_t t = time(NULL); + + /* get the list in reverse order */ + if (glob(spec, 0, NULL, &globbuf) == 0) { + int n; + char *p; + + for (n = 0; (p = globbuf.gl_pathv[n]) != NULL; n++) { + /* get the retry time from the basename */ + char *bn = strrchr(p, '/'); + time_t t2 = atol(bn + 1); + + if (t2 > t) + snac_debug(snac, 2, xs_fmt("queue not yet time for %s", p)); + else { + list = xs_list_append(list, p); + snac_debug(snac, 2, xs_fmt("queue ready for %s", p)); + } + } + } + + globfree(&globbuf); + + return list; +} diff --git a/main.c b/main.c index 4f77c0d..dd072e2 100644 --- a/main.c +++ b/main.c @@ -15,6 +15,17 @@ int main(int argc, char *argv[]) user_open(&snac, "mike"); + { + xs *list = queue(&snac); + char *p, *fn; + + p = list; + while (xs_list_iter(&p, &fn)) { + printf("%s\n", fn); + } + } + +#if 0 { xs *list = follower_list(&snac); char *p, *obj; @@ -50,6 +61,7 @@ int main(int argc, char *argv[]) } } } +#endif return 0; } diff --git a/snac.h b/snac.h index 8f6d32c..9e8432d 100644 --- a/snac.h +++ b/snac.h @@ -57,3 +57,6 @@ int following_check(snac *snac, char *actor); void mute(snac *snac, char *actor); void unmute(snac *snac, char *actor); int is_muted(snac *snac, char *actor); + +void enqueue(snac *snac, char *actor, char *msg, int retries); +d_char *queue(snac *snac);