summaryrefslogtreecommitdiffstats
path: root/maildir/maildirgetnew.c
diff options
context:
space:
mode:
authorSam Varshavchik2022-01-18 19:17:13 -0500
committerSam Varshavchik2022-01-18 19:18:15 -0500
commit917f138292a7343691ffc6530902138822d41981 (patch)
treefa487f0e158b2686a2ce6a6e024bb7c877f73625 /maildir/maildirgetnew.c
parenta59fb65ce973e80a3291a3c2ea9d47c9a70f5a44 (diff)
downloadcourier-libs-917f138292a7343691ffc6530902138822d41981.tar.bz2
Partially revert commit f67b3067a0fee0b7e768f6bd9e12649cacc1f0d2.
Diffstat (limited to 'maildir/maildirgetnew.c')
-rw-r--r--maildir/maildirgetnew.c17
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);
}