summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--imap/ChangeLog2
-rw-r--r--imap/imapd.c4
-rw-r--r--imap/pop3dserver.c2
-rw-r--r--maildir/maildirgetnew.c17
-rw-r--r--maildir/maildirmisc.h7
-rw-r--r--maildir/maildirshared.c6
-rw-r--r--sqwebmail/ChangeLog2
-rw-r--r--sqwebmail/maildir.c2
8 files changed, 26 insertions, 16 deletions
diff --git a/imap/ChangeLog b/imap/ChangeLog
index 6a93b1e..7ca1cd0 100644
--- a/imap/ChangeLog
+++ b/imap/ChangeLog
@@ -1,7 +1,5 @@
2022-01-17 Sam Varshavchik <mrsam@courier-mta.com>
- * Remove unused parameters to maildir_getnew.
-
* Fix minor memory leaks.
5.1.7
diff --git a/imap/imapd.c b/imap/imapd.c
index cfa2dd4..ccc1991 100644
--- a/imap/imapd.c
+++ b/imap/imapd.c
@@ -273,7 +273,7 @@ void emptytrash()
if (l <= 0)
l=1;
- maildir_getnew(".", trash);
+ maildir_getnew(".", trash, NULL, NULL);
if ((dir=maildir_folderdir(".", trash)))
{
maildir_purge(dir, l * 24 * 60 * 60);
@@ -306,7 +306,7 @@ void emptytrash()
l=atoi(p);
if (l <= 0) l=1;
- maildir_getnew(".", folder);
+ maildir_getnew(".", folder, NULL, NULL);
if ((dir=maildir_folderdir(".", folder)))
{
maildir_purge(dir, l * 24 * 60 * 60);
diff --git a/imap/pop3dserver.c b/imap/pop3dserver.c
index 8e2c71b..5e938ad 100644
--- a/imap/pop3dserver.c
+++ b/imap/pop3dserver.c
@@ -1204,7 +1204,7 @@ char *p;
msglist_l=0;
msglist_a=0;
purgetmp();
- maildir_getnew(".", INBOX);
+ maildir_getnew(".", INBOX, NULL, NULL);
if (scancur())
{
printed(printf("-ERR Maildir invalid (no 'cur' directory)\r\n"));
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);
}
diff --git a/sqwebmail/ChangeLog b/sqwebmail/ChangeLog
index 9a01ba5..7f50a5b 100644
--- a/sqwebmail/ChangeLog
+++ b/sqwebmail/ChangeLog
@@ -1,7 +1,5 @@
2022-01-17 Sam Varshavchik <mrsam@courier-mta.com>
- * Remove unused parameters to maildir_getnew.
-
* maildir.c (maildir_checknew): use maildir_getnew.
* Fix minor memory leaks.
diff --git a/sqwebmail/maildir.c b/sqwebmail/maildir.c
index 71fa511..fd12182 100644
--- a/sqwebmail/maildir.c
+++ b/sqwebmail/maildir.c
@@ -1122,7 +1122,7 @@ static void maildir_checknew(const char *folder, const char *dir)
/* Move everything from new to cur */
- maildir_getnew(dir, 0);
+ maildir_getnew(dir, 0, NULL, NULL);
/* Look for any messages mark as deleted. When we delete a message
** we link it into the Trash folder, and mark the original with a T,