X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/dcbbebd768c6444e2fbf83de2b3dc6c76b513a54..ddf3a8574f657dcb8c53fc5908e7bebbde1994b5:/sbr/m_mktemp.c diff --git a/sbr/m_mktemp.c b/sbr/m_mktemp.c index 56810445..228de438 100644 --- a/sbr/m_mktemp.c +++ b/sbr/m_mktemp.c @@ -5,9 +5,12 @@ * complete copyright information. */ -#include -#include -#include +#include "h/mh.h" +#include "concat.h" +#include "r1bindex.h" +#include "h/utils.h" +#include "h/signals.h" +#include "m_maildir.h" #include "m_mktemp.h" static void register_for_removal(const char *); @@ -50,7 +53,6 @@ m_mktemp ( { static char tmpfil[BUFSIZ]; int fd = -1; - int keep_open = 0; mode_t oldmode = umask(077); if (pfx_in == NULL) { @@ -68,9 +70,10 @@ m_mktemp ( register_for_removal(tmpfil); + bool keep_open = false; if (fd_ret != NULL) { *fd_ret = fd; - keep_open = 1; + keep_open = true; } if (fp_ret != NULL) { FILE *fp = fdopen(fd, "w+"); @@ -83,7 +86,7 @@ m_mktemp ( return NULL; } *fp_ret = fp; - keep_open = 1; + keep_open = true; } if (!keep_open) { close(fd); @@ -150,7 +153,6 @@ m_mktemps( { char *tmpfil; int fd = -1; - int keep_open = 0; mode_t oldmode = umask(077); if (suffix == NULL) { @@ -201,9 +203,10 @@ m_mktemps( register_for_removal(tmpfil); + bool keep_open = false; if (fd_ret != NULL) { *fd_ret = fd; - keep_open = 1; + keep_open = true; } if (fp_ret != NULL) { FILE *fp = fdopen(fd, "w+"); @@ -217,7 +220,7 @@ m_mktemps( return NULL; } *fp_ret = fp; - keep_open = 1; + keep_open = true; } if (!keep_open) { close(fd); @@ -255,9 +258,10 @@ static svector_t exit_filelist = NULL; * Register a file for removal at program termination. */ static void -register_for_removal(const char *pathname) { +register_for_removal(const char *pathname) +{ if (exit_filelist == NULL) exit_filelist = svector_create(20); - (void) svector_push_back(exit_filelist, add(pathname, NULL)); + (void) svector_push_back(exit_filelist, mh_xstrdup(pathname)); } /* @@ -279,7 +283,8 @@ register_for_removal(const char *pathname) { * quickly created with the same name. */ void -unregister_for_removal(int remove_files) { +unregister_for_removal(int remove_files) +{ if (exit_filelist) { size_t i; @@ -302,7 +307,8 @@ unregister_for_removal(int remove_files) { * any case, unlink it. */ int -m_unlink(const char *pathname) { +m_unlink(const char *pathname) +{ if (exit_filelist) { char **slot = svector_find(exit_filelist, pathname); @@ -320,7 +326,8 @@ m_unlink(const char *pathname) { * Remove all registered temporary files. */ void -remove_registered_files_atexit(void) { +remove_registered_files_atexit(void) +{ unregister_for_removal(1); } @@ -332,7 +339,8 @@ remove_registered_files_atexit(void) { * in case the use was expecting a core dump. */ void -remove_registered_files(int sig) { +remove_registered_files(int sig) +{ struct sigaction act; /*