# HG changeset patch # User John W. Eaton # Date 1296461941 18000 # Node ID b6e47a4de01855b2b78820e70719084e573c150f # Parent 3dc4cfc5a3c1c92cde7aa4db958e9c73dc2b46c7 try to get better value than \ for P_tmpdir on Windows systems diff -r 3dc4cfc5a3c1 -r b6e47a4de018 src/ChangeLog --- a/src/ChangeLog Sun Jan 30 22:44:52 2011 -0800 +++ b/src/ChangeLog Mon Jan 31 03:19:01 2011 -0500 @@ -1,3 +1,9 @@ +2011-01-31 John W. Eaton + + * sysdep.cc (get_P_tmpdir): New function. + * file-io.cc (FP_tmpdir): Use it. + Bug #32158. + 2011-01-30 Rik * DLD-FUNCTIONS/__init_fltk__.cc (mouse_wheel_zoom, gui_mode): Rename diff -r 3dc4cfc5a3c1 -r b6e47a4de018 src/file-io.cc --- a/src/file-io.cc Sun Jan 30 22:44:52 2011 -0800 +++ b/src/file-io.cc Mon Jan 31 03:19:01 2011 -0500 @@ -2125,10 +2125,6 @@ return retval; } -#if ! defined (P_tmpdir) -#define P_tmpdir "/tmp" -#endif - DEFUNX ("P_tmpdir", FP_tmpdir, args, , "-*- texinfo -*-\n\ @deftypefn {Built-in Function} {} P_tmpdir ()\n\ @@ -2141,7 +2137,7 @@ int nargin = args.length (); if (nargin == 0) - retval = P_tmpdir; + retval = get_P_tmpdir (); else print_usage (); diff -r 3dc4cfc5a3c1 -r b6e47a4de018 src/sysdep.cc --- 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\ diff -r 3dc4cfc5a3c1 -r b6e47a4de018 src/sysdep.h --- a/src/sysdep.h Sun Jan 30 22:44:52 2011 -0800 +++ b/src/sysdep.h Mon Jan 31 03:19:01 2011 -0500 @@ -41,6 +41,8 @@ extern OCTINTERP_API int octave_kbhit (bool wait = true); +extern OCTINTERP_API std::string get_P_tmpdir (void); + extern void w32_set_quiet_shutdown (void); #if defined (__WIN32__) && ! defined (_POSIX_VERSION)