X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fsupport%2Ftempname.C;h=18699223a6b1952f48e4b9857c3ce65b09e57c3b;hb=aabd481ab63fd50606dd0d984c0b407e4b27e6a7;hp=cffa90f9e37c6b098789e84b0740a8279749074e;hpb=236ea81bc5c0ce7101c9460d1ee97b8f3c9be9df;p=lyx.git diff --git a/src/support/tempname.C b/src/support/tempname.C index cffa90f9e3..18699223a6 100644 --- a/src/support/tempname.C +++ b/src/support/tempname.C @@ -10,16 +10,31 @@ #include -#include -#include - -#include "support/std_string.h" #include "support/lyxlib.h" + +#include "support/convert.h" #include "support/filetools.h" -#include "support/tostr.h" +#include "support/package.h" + #include "debug.h" -#include "os.h" +#include + +#include +#ifdef HAVE_UNISTD_H +# include +#endif + +#if !defined(HAVE_MKSTEMP) && defined(HAVE_MKTEMP) +# include +# ifdef HAVE_SYS_STAT_H +# include +# endif +#endif + +using boost::scoped_array; + +using std::string; using std::endl; namespace { @@ -43,21 +58,20 @@ int make_tempfile(char * templ) string const lyx::support::tempName(string const & dir, string const & mask) { - string const tmpdir(dir.empty() ? os::getTmpDir() : dir); + string const tmpdir(dir.empty() ? package().temp_dir() : dir); string tmpfl(AddName(tmpdir, mask)); - tmpfl += tostr(getpid()); + tmpfl += convert(getpid()); tmpfl += "XXXXXX"; // The supposedly safe mkstemp version - char * tmpl = new char[tmpfl.length() + 1]; // + 1 for '\0' - tmpfl.copy(tmpl, string::npos); + scoped_array tmpl(new char[tmpfl.length() + 1]); // + 1 for '\0' + tmpfl.copy(tmpl.get(), string::npos); tmpl[tmpfl.length()] = '\0'; // terminator - int const tmpf = make_tempfile(tmpl); + int const tmpf = make_tempfile(tmpl.get()); if (tmpf != -1) { - string const t(tmpl); + string const t(tmpl.get()); ::close(tmpf); - delete [] tmpl; lyxerr[Debug::FILES] << "Temporary file `" << t << "' created." << endl; return t; @@ -65,7 +79,6 @@ string const lyx::support::tempName(string const & dir, string const & mask) lyxerr[Debug::FILES] << "LyX Error: Unable to create temporary file." << endl; - delete [] tmpl; return string(); } }