]> git.lyx.org Git - lyx.git/blobdiff - src/support/environment.C
get rid of MSVC warning (signed/unsigned comparison)
[lyx.git] / src / support / environment.C
index 7722035edcf75e92edf7825839be44abf4f562f7..9325446b3f8890088c2c40c4e9b89c3e8317fb20 100644 (file)
@@ -4,8 +4,8 @@
  * Licence details can be found in the file COPYING.
  *
  * \author Angus Leeming
- * \author João Luis M. Assirati
- * \author Lars Gullik Bjønnes
+ * \author João Luis M. Assirati
+ * \author Lars Gullik Bjønnes
  *
  * Full author contact details are available in file CREDITS.
  */
@@ -32,8 +32,7 @@ string const getEnv(string const & envname)
 {
        // f.ex. what about error checking?
        char const * const ch = getenv(envname.c_str());
-       string const envstr = !ch ? "" : ch;
-       return envstr;
+       return ch ? to_utf8(from_local8bit(ch)) : string();
 }
 
 
@@ -61,13 +60,14 @@ bool setEnv(string const & name, string const & value)
        // CHECK Look at and fix this.
        // f.ex. what about error checking?
 
+       string const encoded(to_local8bit(from_utf8(value)));
 #if defined (HAVE_SETENV)
-       int const retval = ::setenv(name.c_str(), value.c_str(), true);
+       int const retval = ::setenv(name.c_str(), encoded.c_str(), true);
 
 #elif defined (HAVE_PUTENV)
        static std::map<string, char *> varmap;
 
-       string envstr = name + '=' + value;
+       string envstr = name + '=' + encoded;
        char * newptr = new char[envstr.size() + 1];
        envstr.copy(newptr, envstr.length());
        newptr[envstr.length()] = '\0';
@@ -89,10 +89,11 @@ void setEnvPath(string const & name, vector<string> const & env)
 {
        char const separator(os::path_separator());
        std::ostringstream ss;
-       vector<string>::const_iterator it = env.begin();
+       vector<string>::const_iterator const begin = env.begin();
        vector<string>::const_iterator const end = env.end();
+       vector<string>::const_iterator it = begin;
        for (; it != end; ++it) {
-               if (ss.tellp() > 0)
+               if (it != begin)
                        ss << separator;
                ss << os::external_path(*it);
        }