-// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
namespace Kernel_Utils
{
+ // threadsafe
std::string GetHostname()
{
int ls = 100, r = 1;
{
ls *= 2;
s = new char[ls];
- r = gethostname(s, ls-1);
+ r = gethostname(s, ls-1);//threadsafe see man 7 pthread
switch (r)
{
case 0:
return guid;
}
+ const wchar_t* decode(const char* encoded)
+ {
+ setlocale(LC_ALL, "");
+ size_t length = strlen(encoded) + sizeof(char);
+ wchar_t* decoded = new wchar_t[length];
+ memset( decoded, '\0', length);
+ mbstowcs(decoded, encoded, length);
+ return decoded;
+ }
+
+ const wchar_t* decode_s(std::string encoded)
+ {
+ return decode(encoded.c_str());
+ }
+
+ const char* encode(const wchar_t* decoded)
+ {
+ setlocale(LC_ALL, "");
+ size_t length = std::wcslen(decoded) + sizeof(wchar_t);
+ char* encoded = new char[length];
+ memset( encoded, '\0', length);
+ wcstombs(encoded, decoded, length);
+ return encoded;
+ }
+
+ std::string encode_s(const wchar_t* decoded)
+ {
+ return std::string(encode(decoded));
+ }
+
#ifndef WIN32
void print_traceback()
{
free (strings);
}
+#else
+ #if (_MSC_VER >= 1400) // Visual Studio 2005
+ #include <sstream>
+ int setenv(const char *name, const char *value, int rewrite)\r
+ {\r
+ std::stringstream sstr;\r
+ sstr<<name<<'='<<value;\r
+ if(rewrite || std::string(getenv(name)).length() == 0)\r
+ return _putenv(sstr.str().c_str());\r
+ else return -1;\r
+ }
+ #endif
#endif
}