diff options
Diffstat (limited to 'bin/pax/tables.c')
-rw-r--r-- | bin/pax/tables.c | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/bin/pax/tables.c b/bin/pax/tables.c index e6c106b83d58..d4c61c59f162 100644 --- a/bin/pax/tables.c +++ b/bin/pax/tables.c @@ -360,8 +360,6 @@ int ftime_start() #endif { - char *pt; - if (ftab != NULL) return(0); if ((ftab = (FTM **)calloc(F_TAB_SZ, sizeof(FTM *))) == NULL) { @@ -373,16 +371,14 @@ ftime_start() * get random name and create temporary scratch file, unlink name * so it will get removed on exit */ - if ((pt = tempnam((char *)NULL, (char *)NULL)) == NULL) - return(-1); - (void)unlink(pt); - - if ((ffd = open(pt, O_RDWR | O_CREAT, S_IRWXU)) < 0) { - sys_warn(1, errno, "Unable to open temporary file: %s", pt); + memcpy(tempbase, _TFILE_BASE, sizeof(_TFILE_BASE)); + if ((ffd = mkstemp(tempfile)) < 0) { + sys_warn(1, errno, "Unable to create temporary file: %s", + tempfile); return(-1); } + (void)unlink(tempfile); - (void)unlink(pt); return(0); } @@ -1210,22 +1206,19 @@ int dir_start() #endif { - char *pt; - if (dirfd != -1) return(0); - if ((pt = tempnam((char *)NULL, (char *)NULL)) == NULL) - return(-1); /* * unlink the file so it goes away at termination by itself */ - (void)unlink(pt); - if ((dirfd = open(pt, O_RDWR|O_CREAT, 0600)) >= 0) { - (void)unlink(pt); + memcpy(tempbase, _TFILE_BASE, sizeof(_TFILE_BASE)); + if ((dirfd = mkstemp(tempfile)) >= 0) { + (void)unlink(tempfile); return(0); } - pax_warn(1, "Unable to create temporary file for directory times: %s", pt); + pax_warn(1, "Unable to create temporary file for directory times: %s", + tempfile); return(-1); } |