summaryrefslogtreecommitdiffstats
path: root/maildir
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
parenta59fb65ce973e80a3291a3c2ea9d47c9a70f5a44 (diff)
downloadcourier-libs-917f138292a7343691ffc6530902138822d41981.tar.bz2
Partially revert commit f67b3067a0fee0b7e768f6bd9e12649cacc1f0d2.
Diffstat (limited to 'maildir')
-rw-r--r--maildir/maildirgetnew.c17
-rw-r--r--maildir/maildirmisc.h7
-rw-r--r--maildir/maildirshared.c6
3 files changed, 22 insertions, 8 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);
}
diff --git a/maildir/maildirmisc.h b/maildir/maildirmisc.h
index a28df9c..e1e7c19 100644
--- a/maildir/maildirmisc.h
+++ b/maildir/maildirmisc.h
@@ -119,7 +119,12 @@ void maildir_purge(const char *, /* directory */
unsigned); /* time_t to purge */
void maildir_getnew(const char *, /* maildir */
- const char *); /* folder */
+ const char *, /* folder */
+ void (*)(const char *, void *), /* Callback function for
+ ** every moved msg.
+ */
+ void *arg); /* Passthrough callback arg */
+
/* move messages from new to cur */
int maildir_deletefolder(const char *, /* maildir */
diff --git a/maildir/maildirshared.c b/maildir/maildirshared.c
index 736fc39..7123ce6 100644
--- a/maildir/maildirshared.c
+++ b/maildir/maildirshared.c
@@ -722,10 +722,10 @@ struct stat stat1, stat2;
int fd;
maildir_purgetmp(dir); /* clean up after myself */
- maildir_getnew(dir, 0);
+ maildir_getnew(dir, 0, NULL, NULL);
maildir_purgetmp(shared);
- maildir_getnew(shared, 0);
+ maildir_getnew(shared, 0, NULL, NULL);
/* Figure out if we REALLY need to sync something */
@@ -851,7 +851,7 @@ char *buf=maildir_getlink(filename);
}
free(cpy);
}
-
+
free(buf);
return (0);
}