From: Joey Hess Date: Fri, 11 Apr 2008 19:53:38 +0000 (-0400) Subject: set up signal handlers before creating temp file X-Git-Tag: 0.29~13 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0ff304e2ca860e51e75bbfc08290e364e94cb32e;p=moreutils set up signal handlers before creating temp file Avoids a small race.. --- diff --git a/sponge.c b/sponge.c index a88fe0e..66fd97d 100644 --- a/sponge.c +++ b/sponge.c @@ -237,10 +237,13 @@ int main (int argc, char **argv) { if ((bufsize*2) >= mem_available) { if (!tmpfile) { /* umask(077); FIXME: Should we be setting umask, or using default? */ - struct cs_status cs = cs_enter(); - int tmpfd = mkstemp(tmpname); - atexit(onexit_cleanup); // solaris on_exit(onexit_cleanup, 0); + struct cs_status cs; + int tmpfd; + trapsignals(); + cs = cs_enter(); + tmpfd = mkstemp(tmpname); + atexit(onexit_cleanup); // solaris on_exit(onexit_cleanup, 0); cs_leave(cs); if (tmpfd < 0) { perror("mkstemp failed");