X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FcreaSystem.cxx;h=7966999a85a09bd20a10321cda879a546be4cd73;hb=ad89139d4d59c2ea606d45bcce1784ef5c7b187f;hp=5640b070a0c981ca7cdfd17d8ce2f3acc68146dc;hpb=70ae3bca8b87c45d33b75bb82b6523f2e46c9bc8;p=crea.git diff --git a/src/creaSystem.cxx b/src/creaSystem.cxx index 5640b07..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 @@ -100,8 +123,8 @@ int System::GetAppPath(char *pname, size_t pathsize) //2018-07-06 mingw64 wchar_t pname2[512]; - mbstowcs(pname2,pname,strlen(pname)+1); long result = GetModuleFileName(NULL, pname2, pathsize); + crea::System::wtoc(pname2,pname); // long result = GetModuleFileName(NULL, pname, pathsize); if (result > 0) @@ -219,10 +242,9 @@ std::string System::GetDllAppPath(std::string &nomdll){ //2018-07-06 mingw64 wchar_t currentPath2[512]; - mbstowcs(currentPath2,currentPath,strlen(currentPath)+1); GetModuleFileName(hand, currentPath2, _MAX_PATH); + crea::System::wtoc(currentPath2,currentPath); // GetModuleFileName(hand, currentPath, _MAX_PATH); - path = currentPath; path = path.substr(0,path.find_last_of("\\")); @@ -244,18 +266,15 @@ std::string System::GetDllAppPath(const char *nomdll){ //2018-07-06 mingw64 wchar_t currentPath2[512]; - mbstowcs(currentPath2,currentPath,strlen(currentPath)+1); GetModuleFileName(hand, currentPath2, _MAX_PATH); + 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 ? ");