X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FcreaSystem.cxx;h=26a071e8fa1179a765dadaf9374f244071bf9a5b;hb=72a6140565ccd0905f822c7bf17ea471762a9301;hp=460bb7fb53c5756fbb966d11d4f912dc982c9d9e;hpb=a92a4d8ae0373b7e45cba62c8f84c2196030a269;p=crea.git diff --git a/src/creaSystem.cxx b/src/creaSystem.cxx index 460bb7f..26a071e 100644 --- a/src/creaSystem.cxx +++ b/src/creaSystem.cxx @@ -1,13 +1,47 @@ +/* +# --------------------------------------------------------------------- +# +# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image +# pour la Santé) +# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton +# Previous Authors : Laurent Guigues, Jean-Pierre Roux +# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil +# +# This software is governed by the CeCILL-B license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL-B +# license as circulated by CEA, CNRS and INRIA at the following URL +# http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +# or in the file LICENSE.txt. +# +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. +# +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL-B license and that you accept its terms. +# ------------------------------------------------------------------------ +*/ + #include "creaSystem.h" #include #include #include #ifdef WIN32 -#include /* GetModuleFileName */ -#include + #include /* GetModuleFileName */ + #include + #endif /* WIN32 */ +#ifdef LINUX + #include + #include + #include +#endif + #ifdef __APPLE__ /* assume this is OSX */ #include #include /* _NSGetExecutablePath : must add -framework @@ -43,12 +77,7 @@ namespace crea return isatty(fileno(stdin)); } #endif -std::string System::GetDllAppPath(std::string nom){ - std::string path = "."; -#ifdef WIN32 -#endif - return path; -} + int System::GetAppPath(char *pname, size_t pathsize) { #ifdef LINUX @@ -88,7 +117,7 @@ int System::GetAppPath(char *pname, size_t pathsize) } } - if ((access(pname, 0) == 0)) + if ((_access(pname, 0) == 0)) return 0; /* file exists, return OK */ /*else name doesn't seem to exist, return FAIL (falls through) */ @@ -169,9 +198,9 @@ int System::GetAppPath(char *pname, size_t pathsize) #endif /* MACOSX */ return -1; /* Path Lookup Failed */ -} +} -std::string System::GetDllAppPath(std::string nomdll){ +std::string System::GetDllAppPath(std::string &nomdll){ std::string path = "."; #ifdef WIN32 char currentPath[_MAX_PATH]; @@ -185,4 +214,78 @@ std::string System::GetDllAppPath(std::string nomdll){ return path; } + +std::string System::GetDllAppPath(const char *nomdll){ + std::string path = "."; +#ifdef WIN32 + char currentPath[_MAX_PATH]; + HMODULE hand = GetModuleHandle(nomdll); + 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 +#define CREACONTOUR_VALID_FILE_SEPARATOR_CHAR '/' +#endif + + //========================================================================= +std::string System::GetExecutablePath(){ + char name[PATH_MAX]; + //EED int err = get_app_path(name, PATH_MAX); + int err = System::GetAppPath(name,PATH_MAX); + if (err) + { + printf("Could not determine current executable path ? "); + } + // remove the exe name + char *slash; + slash = strrchr(name, CREACONTOUR_VALID_FILE_SEPARATOR_CHAR); + if (slash) + { + *slash = 0; + } + return name; + } + + void System::createDirectory(const char* directorypath){ + #ifdef WIN32 + if (CreateDirectory(directorypath, NULL) == ERROR_ALREADY_EXISTS) + { + std::cout<<"directory already exists "<