diff options
| author | Sam Varshavchik | 2022-01-18 19:17:13 -0500 |
|---|---|---|
| committer | Sam Varshavchik | 2022-01-18 19:18:15 -0500 |
| commit | 917f138292a7343691ffc6530902138822d41981 (patch) | |
| tree | fa487f0e158b2686a2ce6a6e024bb7c877f73625 /maildir/maildirgetnew.c | |
| parent | a59fb65ce973e80a3291a3c2ea9d47c9a70f5a44 (diff) | |
| download | courier-libs-917f138292a7343691ffc6530902138822d41981.tar.bz2 | |
Partially revert commit f67b3067a0fee0b7e768f6bd9e12649cacc1f0d2.
Diffstat (limited to 'maildir/maildirgetnew.c')
| -rw-r--r-- | maildir/maildirgetnew.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/maildir/maildirgetnew.c b/maildir/maildirgetnew.c index 940277f..0ef75db 100644 --- a/maildir/maildirgetnew.c +++ b/maildir/maildirgetnew.c @@ -38,9 +38,13 @@ #include "maildirmisc.h" -static void do_maildir_getnew(const char *, const char *); +static void do_maildir_getnew(const char *, const char *, + void (*)(const char *, void *), + void *); -void maildir_getnew(const char *maildir, const char *folder) +void maildir_getnew(const char *maildir, const char *folder, + void (*callback_func)(const char *, void *), + void *callback_arg) { char *dir=maildir_folderdir(maildir, folder); char *newd, *curd; @@ -54,7 +58,7 @@ char *newd, *curd; { strcat(strcpy(newd, dir), "/new"); strcat(strcpy(curd, dir), "/cur"); - do_maildir_getnew(newd, curd); + do_maildir_getnew(newd, curd, callback_func, callback_arg); } if (newd) free(newd); @@ -62,7 +66,9 @@ char *newd, *curd; free(dir); } -static void do_maildir_getnew(const char *newd, const char *curd) +static void do_maildir_getnew(const char *newd, const char *curd, + void (*callback_func)(const char *, void *), + void *callback_arg) { DIR *dirp; struct dirent *de; @@ -137,6 +143,9 @@ static void do_maildir_getnew(const char *newd, const char *curd) /* otherwise we could have infinite loop */ } + if (callback_func) + (*callback_func)(strrchr(cp, '/')+1, + callback_arg); free(np); free(cp); } |
