X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FcreaSystem.cxx;h=7966999a85a09bd20a10321cda879a546be4cd73;hb=fa9a448de6690f29627216055d16fe1503d46f54;hp=a05556b0ce86b8c0da7b750e1414615295176c08;hpb=ad0282622fc7ae88e2c844842a415968f1de10fe;p=crea.git diff --git a/src/creaSystem.cxx b/src/creaSystem.cxx index a05556b..7966999 100644 --- a/src/creaSystem.cxx +++ b/src/creaSystem.cxx @@ -30,11 +30,6 @@ #include #include -#ifdef WIN32 - #include /* GetModuleFileName */ - #include - -#endif /* WIN32 */ #ifdef LINUX #include @@ -78,6 +73,34 @@ namespace crea } #endif + + +#ifdef _WIN32 + +//===================================================================================== +/* http://forums.codeguru.com/showthread.php?336106-WCHAR*-to-CHAR* +|| ::DESCRIPTION:: +|| This function will convert a WCHAR string to a CHAR string. +|| +|| Param 1 :: Pointer to a buffer that will contain the converted string. Ensure this +|| buffer is large enough; if not, buffer overrun errors will occur. +|| Param 2 :: Constant pointer to a source WCHAR string to be converted to CHAR +*/ +void System::wtoc(const WCHAR* Source,CHAR* Dest) +{ + int i = 0; + while(Source[i] != '\0') + { + Dest[i] = (CHAR)Source[i]; + ++i; + } // while +} + + +#endif + + + int System::GetAppPath(char *pname, size_t pathsize) { #ifdef LINUX @@ -101,7 +124,7 @@ int System::GetAppPath(char *pname, size_t pathsize) //2018-07-06 mingw64 wchar_t pname2[512]; long result = GetModuleFileName(NULL, pname2, pathsize); - int ret = wcstombs ( pname, pname2, sizeof(pname) ); + crea::System::wtoc(pname2,pname); // long result = GetModuleFileName(NULL, pname, pathsize); if (result > 0) @@ -220,9 +243,8 @@ std::string System::GetDllAppPath(std::string &nomdll){ //2018-07-06 mingw64 wchar_t currentPath2[512]; GetModuleFileName(hand, currentPath2, _MAX_PATH); - int ret = wcstombs ( currentPath, currentPath2, sizeof(pname) ); + crea::System::wtoc(currentPath2,currentPath); // GetModuleFileName(hand, currentPath, _MAX_PATH); - path = currentPath; path = path.substr(0,path.find_last_of("\\")); @@ -245,17 +267,14 @@ std::string System::GetDllAppPath(const char *nomdll){ //2018-07-06 mingw64 wchar_t currentPath2[512]; GetModuleFileName(hand, currentPath2, _MAX_PATH); - int ret = wcstombs ( currentPath, currentPath2, sizeof(pname) ); + crea::System::wtoc(currentPath2,currentPath); // GetModuleFileName(hand, currentPath, _MAX_PATH); - path = currentPath; - path = path.substr(0,path.find_last_of("\\")); #endif return path; } - #if defined(_WIN32) #define CREACONTOUR_VALID_FILE_SEPARATOR_CHAR '\\' #else @@ -263,10 +282,12 @@ std::string System::GetDllAppPath(const char *nomdll){ #endif //========================================================================= -std::string System::GetExecutablePath(){ +std::string System::GetExecutablePath() +{ char name[PATH_MAX]; //EED int err = get_app_path(name, PATH_MAX); int err = System::GetAppPath(name,PATH_MAX); +printf("EED creaSystem::GetExecutablePath %s \n",name); if (err) { printf("Could not determine current executable path ? ");