]> git.lyx.org Git - lyx.git/blobdiff - src/support/tempname.C
* src/encoding.C (latexChar,read):
[lyx.git] / src / support / tempname.C
index afad6dedcfa1853e510b1f208c2fbaa869fa3bd4..2e0783d2e223ab0802bb84bb96230b93ea2b3571 100644 (file)
@@ -21,6 +21,7 @@
 #include <boost/scoped_array.hpp>
 
 #include <cstdlib>
+
 #ifdef HAVE_UNISTD_H
 # include <unistd.h>
 #endif
@@ -43,6 +44,9 @@ using boost::scoped_array;
 using std::string;
 using std::endl;
 
+namespace lyx {
+namespace support {
+
 namespace {
 
 inline
@@ -54,11 +58,15 @@ int make_tempfile(char * templ)
        // This probably just barely works...
        ::mktemp(templ);
 # if defined (HAVE_OPEN)
+# if (!defined S_IRUSR)
+#   define S_IRUSR S_IREAD
+#   define S_IWUSR S_IWRITE
+# endif
        return ::open(templ, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
 # elif defined (HAVE__OPEN)
        return ::_open(templ,
-                      _O_RDWR | _O_CREAT | _O_EXCL,
-                      _S_IREAD | _S_IWRITE);
+                      _O_RDWR | _O_CREAT | _O_EXCL,
+                      _S_IREAD | _S_IWRITE);
 # else
 #  error No open() function.
 # endif
@@ -70,10 +78,11 @@ int make_tempfile(char * templ)
 } // namespace anon
 
 
-string const lyx::support::tempName(string const & dir, string const & mask)
+FileName const tempName(FileName const & dir, string const & mask)
 {
-       string const tmpdir(dir.empty() ? package().temp_dir() : dir);
-       string tmpfl(AddName(tmpdir, mask));
+       // FIXME UNICODE encoding of package().temp_dir() is probably wrong
+       string const tmpdir(dir.empty() ? package().temp_dir() : dir.toFilesystemEncoding());
+       string tmpfl(addName(tmpdir, mask));
 #if defined (HAVE_GETPID)
        tmpfl += convert<string>(getpid());
 #elif defined (HAVE__GETPID)
@@ -96,15 +105,18 @@ string const lyx::support::tempName(string const & dir, string const & mask)
 #elif defined (HAVE__CLOSE)
                ::_close(tmpf);
 #else
-# error No close() function.
+# error No x() function.
 #endif
                lyxerr[Debug::FILES] << "Temporary file `" << t
                                     << "' created." << endl;
-               return t;
+               return FileName(t);
        } else {
                lyxerr[Debug::FILES]
                        << "LyX Error: Unable to create temporary file."
                        << endl;
-               return string();
+               return FileName();
        }
 }
+
+} // namespace support
+} // namespace lyx