]> git.lyx.org Git - lyx.git/blobdiff - src/support/environment.cpp
Revert qprocess code. Revisions reverted: 22026, 22030, 22044, 22048,
[lyx.git] / src / support / environment.cpp
index 3e1494e016a232424ed393208e2530c6839d959d..e1bbaccc0618ed8b385dc462559d6d9cc1b804ca 100644 (file)
@@ -13,6 +13,8 @@
 #include <config.h>
 
 #include "support/environment.h"
+
+#include "support/docstring.h"
 #include "support/os.h"
 
 #include <boost/tokenizer.hpp>
@@ -21,9 +23,7 @@
 #include <map>
 #include <sstream>
 
-using std::string;
-using std::vector;
-
+using namespace std;
 
 namespace lyx {
 namespace support {
@@ -63,22 +63,10 @@ bool setEnv(string const & name, string const & value)
        string const encoded = to_local8bit(from_utf8(value));
 #if defined (HAVE_SETENV)
        return ::setenv(name.c_str(), encoded.c_str(), true);
-
 #elif defined (HAVE_PUTENV)
-       static std::map<string, char *> varmap;
-
-       string envstr = name + '=' + encoded;
-       char * newptr = new char[envstr.size() + 1];
-       envstr.copy(newptr, envstr.length());
-       newptr[envstr.length()] = '\0';
-       int const retval = ::putenv(newptr);
-
-       char * oldptr = varmap[name];
-       if (oldptr)
-               delete oldptr;
-       varmap[name] = newptr;
-       return retval == 0;
-
+       static std::map<string, string> varmap;
+       varmap[name] = name + '=' + encoded;
+       return ::putenv(const_cast<char*>(varmap[name].c_str())) == 0;
 #else
 #error No environment-setting function has been defined.
 #endif