diff options
author | mikeh <mikeh@FreeBSD.org> | 2001-07-07 04:08:32 +0000 |
---|---|---|
committer | mikeh <mikeh@FreeBSD.org> | 2001-07-07 04:08:32 +0000 |
commit | bc02f9cebed6df8c5095c6a6ec7c4fa01e2a1c09 (patch) | |
tree | cc997c2d3a4f00b959b407f792b10bf5cc6500f5 /lib/libc | |
parent | 320a122050e2731feb8d0cd53a31866101f21af0 (diff) | |
download | FreeBSD-src-bc02f9cebed6df8c5095c6a6ec7c4fa01e2a1c09.zip FreeBSD-src-bc02f9cebed6df8c5095c6a6ec7c4fa01e2a1c09.tar.gz |
Attempt to use the environment variable TMPDIR for the temporary
directory, defaulting to /tmp.
PR: bin/16924
Reviewed by: dd
MFC after: 2 weeks
Diffstat (limited to 'lib/libc')
-rw-r--r-- | lib/libc/stdio/tmpfile.c | 16 | ||||
-rw-r--r-- | lib/libc/stdio/tmpnam.3 | 7 |
2 files changed, 20 insertions, 3 deletions
diff --git a/lib/libc/stdio/tmpfile.c b/lib/libc/stdio/tmpfile.c index e3e296b..5aabe03 100644 --- a/lib/libc/stdio/tmpfile.c +++ b/lib/libc/stdio/tmpfile.c @@ -46,6 +46,7 @@ static char sccsid[] = "@(#)tmpfile.c 8.1 (Berkeley) 6/4/93"; #include <unistd.h> #include <errno.h> #include <stdio.h> +#include <stdlib.h> #include <string.h> #include <paths.h> #include "un-namespace.h" @@ -57,10 +58,17 @@ tmpfile() FILE *fp; int fd, sverrno; #define TRAILER "tmp.XXXXXX" - char buf[sizeof(_PATH_TMP) + sizeof(TRAILER)]; + char *buf; + const char *tmpdir; - (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; + + (void)asprintf(&buf, "%s%s%s", tmpdir, + (tmpdir[strlen(tmpdir) - 1] == '/') ? "" : "/", TRAILER); + if (buf == NULL) + return (NULL); sigfillset(&set); (void)_sigprocmask(SIG_BLOCK, &set, &oset); @@ -69,6 +77,8 @@ tmpfile() if (fd != -1) (void)unlink(buf); + free(buf); + (void)_sigprocmask(SIG_SETMASK, &oset, NULL); if (fd == -1) diff --git a/lib/libc/stdio/tmpnam.3 b/lib/libc/stdio/tmpnam.3 index ed71236..0c4e861 100644 --- a/lib/libc/stdio/tmpnam.3 +++ b/lib/libc/stdio/tmpnam.3 @@ -67,6 +67,13 @@ returns, causing the file to be automatically deleted when the last 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 |