diff src/sysdep.cc @ 12228:0f70c5db58c3

try to get better value than \ for P_tmpdir on Windows systems
author John W. Eaton <jwe@octave.org>
date Mon, 31 Jan 2011 03:19:01 -0500
parents 12df7854fa7c
children 7a5aacf65f81
line wrap: on
line diff
--- a/src/sysdep.cc	Sun Jan 30 22:44:52 2011 -0800
+++ b/src/sysdep.cc	Mon Jan 31 03:19:01 2011 -0500
@@ -470,6 +470,45 @@
   return c;
 }
 
+std::string
+get_P_tmpdir (void)
+{
+#if defined (__WIN32__) && ! defined (_POSIX_VERSION)
+
+  std::string retval;
+
+#if defined (P_tmpdir)
+  retval = P_tmpdir;
+#endif
+
+  // Apparently some versions of MinGW and MSVC either don't define
+  // P_tmpdir, or they define it to a single backslash, neither of which
+  // is particularly helpful.
+
+  if (retval.empty () || retval == "\\")
+    {
+      retval = octave_env::getenv ("TEMP");
+
+      if (retval.empty ())
+        retval = octave_env::getenv ("TMP");
+
+      if (retval.empty ())
+        retval = "c:\\temp";
+    }
+
+  return retval;
+
+#elif defined (P_tmpdir)
+
+  return P_tmpdir;
+
+#else
+
+  return "/tmp";
+
+#endif
+}
+
 DEFUN (clc, , ,
   "-*- texinfo -*-\n\
 @deftypefn  {Built-in Function} {} clc ()\n\