#include "support/os.h"
#include <boost/tokenizer.hpp>
-#include <boost/shared_array.hpp>
#include <cstdlib>
#include <map>
#include <sstream>
-using std::string;
-using std::vector;
-
+using namespace std;
namespace lyx {
namespace support {
#if defined (HAVE_SETENV)
return ::setenv(name.c_str(), encoded.c_str(), true);
#elif defined (HAVE_PUTENV)
- static std::map<string, boost::shared_array<char> > varmap;
-
- string envstr = name + '=' + encoded;
- boost::shared_array<char> newptr(new char[envstr.size() + 1]);
- envstr.copy(newptr.get(), envstr.length());
- newptr.get()[envstr.length()] = '\0';
- bool const retval = ::putenv(newptr.get()) == 0;
-
- varmap[name] = newptr;
- return retval;
+ 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