Index: tmpfile.c =================================================================== RCS file: /home/ncvs/src/lib/libc/stdio/tmpfile.c,v retrieving revision 1.5 diff -u -r1.5 tmpfile.c --- tmpfile.c 2001/01/24 13:00:47 1.5 +++ tmpfile.c 2001/07/06 02:37:52 @@ -46,6 +46,7 @@ #include #include #include +#include #include #include #include "un-namespace.h" @@ -57,17 +58,30 @@ FILE *fp; int fd, sverrno; #define TRAILER "tmp.XXXXXX" - char buf[sizeof(_PATH_TMP) + sizeof(TRAILER)]; + char *buf; + const char *tmpdir; + size_t tmpdirlen; - (void)memcpy(buf, _PATH_TMP, sizeof(_PATH_TMP) - 1); - (void)memcpy(buf + sizeof(_PATH_TMP) - 1, TRAILER, sizeof(TRAILER)); + tmpdir = getenv("TMPDIR"); + if (tmpdir == NULL) + tmpdir = _PATH_TMP; + tmpdirlen = strlen(tmpdir); + buf = malloc(tmpdirlen + (tmpdir[tmpdirlen - 1] == '/') ? 0 : 1 + + sizeof(TRAILER)); + if (buf == NULL) + return NULL; + (void)sprintf(buf, "%s%s%s", tmpdir, + (tmpdir[tmpdirlen - 1] == '/') ? "" : "/", TRAILER); + sigfillset(&set); (void)_sigprocmask(SIG_BLOCK, &set, &oset); fd = mkstemp(buf); if (fd != -1) (void)unlink(buf); + + free(buf); (void)_sigprocmask(SIG_SETMASK, &oset, NULL); Index: tmpnam.3 =================================================================== RCS file: /home/ncvs/src/lib/libc/stdio/tmpnam.3,v retrieving revision 1.7 diff -u -r1.7 tmpnam.3 --- tmpnam.3 2001/02/26 13:21:16 1.7 +++ tmpnam.3 2001/07/06 02:37:52 @@ -67,6 +67,12 @@ reference to it is closed. The file is opened with the access value .Ql w+ . +The file is created in the directory determined by the environment variable +.Ev TMPDIR +if set. The default location if +.Ev TMPDIR +is not set is +.Pa /tmp . .Pp The .Fn tmpnam