diff options
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);  		} | 
