summaryrefslogtreecommitdiff
path: root/libgfortran/libgfortran.h
diff options
context:
space:
mode:
authorjb <jb@138bc75d-0d04-0410-961f-82ee72b054a4>2012-05-05 06:30:51 +0000
committerjb <jb@138bc75d-0d04-0410-961f-82ee72b054a4>2012-05-05 06:30:51 +0000
commita291e3b6538a0697986d1a7d22aa220829998bab (patch)
treeac63807666eaf2ebc05379c848806981ba536332 /libgfortran/libgfortran.h
parente3168f5bde2d4ceb1543c5ea0c779ee66b5f9a02 (diff)
downloadgcc-a291e3b6538a0697986d1a7d22aa220829998bab.tar.gz
Fix handling of temporary files.
2012-05-05 Janne Blomqvist <jb@gcc.gnu.org> * gfortran.texi (GFORTRAN_TMPDIR): Rename to TMPDIR, explain algorithm for choosing temp directory. 2012-05-05 Janne Blomqvist <jb@gcc.gnu.org> * config.h.in: Regenerated. * configure: Regenerated. * configure.ac: Add checks for getegid and __secure_getenv. * io/unix.c (P_tmpdir): Fallback definition for macro. (tempfile_open): New function. (tempfile): Use secure_getenv, call tempfile_open to try each directory in turn. * libgfortran.h (DEFAULT_TMPDIR): Remove macro. (secure_getenv): New macro/prototype. * runtime/environ.c (secure_getenv): New function. (variable_table): Rename GFORTRAN_TMPDIR to TMPDIR. * runtime/main.c (find_addr2line): Use secure_getenv. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@187190 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgfortran/libgfortran.h')
-rw-r--r--libgfortran/libgfortran.h16
1 files changed, 12 insertions, 4 deletions
diff --git a/libgfortran/libgfortran.h b/libgfortran/libgfortran.h
index e7f5b711a51..051e2e85a1e 100644
--- a/libgfortran/libgfortran.h
+++ b/libgfortran/libgfortran.h
@@ -584,10 +584,6 @@ iexport_data_proto(filename);
#define gfc_alloca(x) __builtin_alloca(x)
-/* Directory for creating temporary files. Only used when none of the
- following environment variables exist: GFORTRAN_TMPDIR, TMP and TEMP. */
-#define DEFAULT_TEMPDIR "/tmp"
-
/* The default value of record length for preconnected units is defined
here. This value can be overriden by an environment variable.
Default value is 1 Gb. */
@@ -776,6 +772,18 @@ internal_proto(show_variables);
unit_convert get_unformatted_convert (int);
internal_proto(get_unformatted_convert);
+/* Secure getenv() which returns NULL if running as SUID/SGID. */
+#ifdef HAVE___SECURE_GETENV
+#define secure_getenv __secure_getenv
+#elif defined(HAVE_GETUID) && defined(HAVE_GETEUID) \
+ && defined(HAVE_GETGID) && defined(HAVE_GETEGID)
+#define FALLBACK_SECURE_GETENV
+extern char *secure_getenv (const char *);
+internal_proto(secure_getenv);
+#else
+#define secure_getenv getenv
+#endif
+
/* string.c */
extern int find_option (st_parameter_common *, const char *, gfc_charlen_type,