aboutsummaryrefslogtreecommitdiff
path: root/jim-exec.c
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2014-08-03 17:40:11 +1000
committerSteve Bennett <steveb@workware.net.au>2014-08-03 17:51:58 +1000
commit0b60827ba7bbbefd991a99dfcae4973d51387f82 (patch)
treef18569cddf2770bf8b108f60f1354c560c459c4e /jim-exec.c
parenta07760e95c68569b635ecc97465175d9a306ff37 (diff)
downloadjimtcl-0b60827ba7bbbefd991a99dfcae4973d51387f82.zip
jimtcl-0b60827ba7bbbefd991a99dfcae4973d51387f82.tar.gz
jimtcl-0b60827ba7bbbefd991a99dfcae4973d51387f82.tar.bz2
Temporary file creation should respect $TMPDIR
This applies to [exec] and [file tempfile] Reported-by: Jakub Wilk Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'jim-exec.c')
-rw-r--r--jim-exec.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/jim-exec.c b/jim-exec.c
index a6fdb02..e952ee7 100644
--- a/jim-exec.c
+++ b/jim-exec.c
@@ -1576,15 +1576,13 @@ static int JimRewindFd(int fd)
static int JimCreateTemp(Jim_Interp *interp, const char *contents, int len)
{
- char inName[] = "/tmp/tcl.tmp.XXXXXX";
- mode_t mask = umask(S_IXUSR | S_IRWXG | S_IRWXO);
- int fd = mkstemp(inName);
- umask(mask);
+ int fd = Jim_MakeTempFile(interp, NULL);
+
if (fd == JIM_BAD_FD) {
Jim_SetResultErrno(interp, "couldn't create temp file");
return -1;
}
- unlink(inName);
+ unlink(Jim_String(Jim_GetResult(interp)));
if (contents) {
if (write(fd, contents, len) != len) {
Jim_SetResultErrno(interp, "couldn't write temp file");