diff options
| -rw-r--r-- | imap/ChangeLog | 2 | ||||
| -rw-r--r-- | imap/imapd.c | 4 | ||||
| -rw-r--r-- | imap/pop3dserver.c | 2 | ||||
| -rw-r--r-- | maildir/maildirgetnew.c | 17 | ||||
| -rw-r--r-- | maildir/maildirmisc.h | 7 | ||||
| -rw-r--r-- | maildir/maildirshared.c | 6 | ||||
| -rw-r--r-- | sqwebmail/ChangeLog | 2 | ||||
| -rw-r--r-- | sqwebmail/maildir.c | 2 | 
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, | 
