]> git.lyx.org Git - lyx.git/blobdiff - src/support/putenv.C
* lyxfunctional.h: delete compare_memfun and helper classes
[lyx.git] / src / support / putenv.C
index 828517d09f64dc7e261327546a6d22e09e9d06a1..83e4e739dff146880232485bbe081428587efac7 100644 (file)
@@ -3,9 +3,10 @@
  * This file is part of LyX, the document processor.
  * Licence details can be found in the file COPYING.
  *
- * \author Lars Gullik Bjønnes
+ * \author Lars Gullik Bjønnes
+ * \author João Luis M. Assirati
  *
- * Full author contact details are available in file CREDITS
+ * Full author contact details are available in file CREDITS.
  */
 
 #include <config.h>
 #include "lyxlib.h"
 
 #include <cstdlib>
+#include <string>
+#include <map>
 
-int lyx::putenv(char const * str)
+using std::string;
+using std::map;
+
+bool lyx::support::putenv(string const & varname, string const & value)
 {
-       return ::putenv(const_cast<char*>(str));
+       static map<string, char *> varmap;
+
+       string str = varname + '=' + value;
+       char * newptr = new char[str.size() + 1];
+       newptr[str.copy(newptr, string::npos)] = '\0';
+       bool status = (::putenv(newptr) == 0);
+
+       char * oldptr = varmap[varname];
+       if (oldptr)
+               delete oldptr;
+       varmap[varname] = newptr;
+
+       return status;
 }