summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Manuel Guerrero <juan.guerrero@gmx.de>2008-02-06 09:58:56 +0000
committerJuan Manuel Guerrero <juan.guerrero@gmx.de>2008-02-06 09:58:56 +0000
commit988a9d670d7430f5e64f338b4b1dc8abf2ce8441 (patch)
tree0944486a85a30fc1ca6d1a16cc5fda2178034f31
parenta6580aa38b0e5fc1487320574791dbb85110111e (diff)
downloadbison-988a9d670d7430f5e64f338b4b1dc8abf2ce8441.tar.gz
* subpipe.c (init_subpipe): Check the environment variables
TMPDIR, TMP and TEMP, in that order, to determinate where the temp files shall be created. Before trying to use the temp dir where the environment variable points to check that the dir really exists. If not default to the cwd as temp dir. Copyright timestamp adjusted.
-rw-r--r--djgpp/subpipe.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/djgpp/subpipe.c b/djgpp/subpipe.c
index 881ebaa2..955dcd2e 100644
--- a/djgpp/subpipe.c
+++ b/djgpp/subpipe.c
@@ -1,6 +1,6 @@
/* Subprocesses with pipes.
- Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -67,15 +67,26 @@ static char tmp_file_name[2][L_tmpnam];
void
init_subpipe(void)
{
+ char *tmpdir;
int fd;
- strcpy(tmp_file_name[0], "/dev/env/TMPDIR/bnXXXXXX");
+ tmpdir = getenv("TMPDIR");
+ if (tmpdir == NULL)
+ tmpdir = getenv("TMP");
+ if (tmpdir == NULL)
+ tmpdir = getenv("TEMP");
+ if (access(tmpdir, D_OK))
+ tmpdir = ".";
+
+ strcpy(tmp_file_name[0], tmpdir);
+ strcat(tmp_file_name[0], "/bnXXXXXX");
fd = mkstemp(tmp_file_name[0]);
if (fd < 0)
error(EXIT_FAILURE, 0, _("creation of a temporary file failed"));
close (fd);
- strcpy(tmp_file_name[1], "/dev/env/TMPDIR/bnXXXXXX");
+ strcpy(tmp_file_name[1], tmpdir);
+ strcat(tmp_file_name[1], "/bnXXXXXX");
fd = mkstemp(tmp_file_name[1]);
if (fd < 0)
error(EXIT_FAILURE, 0, _("creation of a temporary file failed"));