From: Baptiste Daroussin Date: Tue, 27 Dec 2022 13:04:02 +0000 (+0100) Subject: factorize the code to save the last bounced mail X-Git-Tag: RELEASE_1_4_0_a2~61 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=89a2dbb6c5e5e9eec18eb4eddbdc82e23f72d4af;p=thirdparty%2Fmlmmj.git factorize the code to save the last bounced mail --- diff --git a/include/mlmmj.h b/include/mlmmj.h index 399ab481..eefd13b5 100644 --- a/include/mlmmj.h +++ b/include/mlmmj.h @@ -109,6 +109,7 @@ time_t extract_bouncetime(char *line, const char **errstr); int open_subscriber_directory(int listfd, enum subtype typesub, const char **dir); bool unsubscribe(int listfd, const char *address, enum subtype typesub); bounce_t bouncemail(int listfd, const char *theaddress, const char *identifier); +void save_lastbouncedmsg(int listfd, const char *address, const char *mailname); #define MY_ASSERT(expression) if (!(expression)) { \ errno = 0; \ diff --git a/src/mlmmj-bounce.c b/src/mlmmj-bounce.c index c7140e6c..67fa8292 100644 --- a/src/mlmmj-bounce.c +++ b/src/mlmmj-bounce.c @@ -241,8 +241,8 @@ int main(int argc, char **argv) int opt, dsnbounce = 0; char *listdir = NULL, *address = NULL, *number = NULL; const char *thisaddr; - char *bindir, *mlmmjsend, *savename; - char *mailname = NULL, *bfilename, *a; + char *bindir, *mlmmjsend, *a; + const char *mailname = NULL; int probe = 0; struct stat st; uid_t uid; @@ -344,16 +344,11 @@ int main(int argc, char **argv) #endif bret = bouncemail(listfd, lowercase(thisaddr), number); - if (bret == BOUNCE_DONE && mailname != NULL) { - bfilename = lowercase(thisaddr); - xasprintf(&savename, "bounce/%s.lastmsg", bfilename); - renameat(AT_FDCWD, mailname, listfd, savename); - free(savename); - free(bfilename); - } - if (mailname) - unlink(mailname); + if (bret == BOUNCE_DONE && mailname != NULL) + save_lastbouncedmsg(listfd, thisaddr, mailname); free(address); + if (bret == BOUNCE_OK && mailname != NULL) + unlink(mailname); return (bret == BOUNCE_FAIL ? EXIT_FAILURE : EXIT_SUCCESS); } diff --git a/src/mlmmj.c b/src/mlmmj.c index 82156b79..2bd0517c 100644 --- a/src/mlmmj.c +++ b/src/mlmmj.c @@ -370,3 +370,16 @@ bouncemail(int listfd, const char *theaddress, const char *identifier) return (BOUNCE_DONE); } + +void +save_lastbouncedmsg(int listfd, const char *address, const char *mailname) +{ + char *savename, *fname; + + fname = lowercase(address); + + xasprintf(&savename, "bounce/%s.lastmsg", fname); + renameat(AT_FDCWD, mailname, listfd, savename); + free(savename); + free(fname); +}