+/*
+ # ---------------------------------------------------------------------
+ #
+ # 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.
+ # ------------------------------------------------------------------------ */
+
+
/*=========================================================================
Program: bbtk
Module: $RCSfile: bbtkConfigurationFile.cxx,v $
Language: C++
- Date: $Date: 2011/03/08 11:32:02 $
- Version: $Revision: 1.36 $
+ Date: $Date: 2012/11/16 08:49:01 $
+ Version: $Revision: 1.38 $
=========================================================================*/
-/* ---------------------------------------------------------------------
-
-* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
-* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
-*
-* 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.
-* ------------------------------------------------------------------------ */
+
/**
*\file
#endif
-
-
namespace bbtk
{
-
//====================================================================
/// Constructor
ConfigurationFile::ConfigurationFile()
{
-
- mFile_separator = VALID_FILE_SEPARATOR;
+ mFile_separator = VALID_FILE_SEPARATOR;
// ==> Set system paths
mBin_path = Utilities::GetExecutablePath();
-
-
/* EED 23 Mars 2009
#ifdef MACOSX
mInstall_path = mBin_path + "/../../../..";
#endif
*/
#ifdef MACOSX
-
std::string macPath("Contents/MacOS");
int sbp = mBin_path.length();
int smp = macPath.length();
{
mBin_path = mBin_path + "/../../..";
}
-
-
#endif
- mInstall_path = mBin_path + "/..";
+///\TODO : better use ??
+ mInstall_path = mBin_path + "/..";
// The relative path to the doc folder (=BBTK_DOC_REL_PATH)
// mDoc_rel_path = BBTK_STRINGIFY_SYMBOL(BBTK_DOC_REL_PATH);
bbtkMessage("config",1," ==> bbs : '"<<mBbs_path<<"'"<<std::endl);
bbtkMessage("config",1," ==> data : '"<<mData_path<<"'"<<std::endl);
-
-
-
// bbs_paths
// always add "." (current working directory) at the begining
mBbs_paths.push_back( "." );
Utilities::replace( mBbs_paths[iStrVec] , INVALID_FILE_SEPARATOR , VALID_FILE_SEPARATOR);
}
-
// always add "." (current working directory) at the begining
mPackage_paths.push_back(".");
// add system bin path (for build tree / standalone folder install)
mPackage_paths.push_back(mBin_path);
// add system lib path (for install tree)
//EED mPackage_paths.push_back(mInstall_path + mFile_separator + "lib");
- mPackage_paths.push_back(mInstall_path + "/lib");
- mPackage_paths.push_back(mInstall_path + "/lib64");
+
+ //mPackage_paths.push_back(mInstall_path + "/lib"); // JPR
+ //mPackage_paths.push_back(mInstall_path + "/lib64");// JPR
+
+ ///\TODO : better use BBTK_PACKAGE_LIB_PATH // JPR
+
mPackage_paths.push_back(mInstall_path + "/lib/creatools");
mPackage_paths.push_back(mInstall_path + "/lib64/creatools");
#ifdef WIN32
Utilities::replace( mPackage_paths[iStrVec] , INVALID_FILE_SEPARATOR , VALID_FILE_SEPARATOR);
}
-
-
GetHelp(2);
// ==> First we look for bbtk_config.xml in "."
// In any case, deal with bbtk_config.xml!
Read(configXmlFullPathName.c_str());
+
}
//=========================================================================
if (!Utilities::FileExists(mDot_bbtk_path)) mDot_bbtk_is_new = true;
Utilities::CreateDirectoryIfNeeded(mDot_bbtk_path);
+
mDoc_path = Utilities::MakeUserSettingsFullFileName("doc");
Utilities::CreateDirectoryIfNeeded(mDoc_path);
+ BBTK_STRINGIFY_SYMBOL(BBTK_DOC_REL_PATH) + "/";
Utilities::MakeValidFileName(doc_path);
-
std::ofstream f;
f.open(filename.c_str(), std::ios::out );
f << "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD "
mTemp_path = Utilities::MakeUserSettingsFullFileName("tmp");
Utilities::CreateDirectoryIfNeeded(mTemp_path);
+
}
//=========================================================================
// -----------------------------------------------------------------
-#if defined(__GNUC__)
+#if defined(WIN32)
- // ------------------ create some usefull strings ----------------
// installed bbtk_path
- char bbtk_path[1000];
- strcpy(bbtk_path, Utilities::GetExecutablePath().c_str()); // JPR
- //strcpy(bbtk_path, "/usr/local/bin");
+ char bbtk_path[100];
+ strcpy(bbtk_path, "\"c:\\Program Files\\BBTK\\bin\"");
+ char bbtk_path2[100];
+ strcpy(bbtk_path2, "c:\\Program Files\\BBTK\\bin");
// rootDirectory
char rootDirectory[200];
- sprintf( rootDirectory, "%s/.bbtk", getenv("HOME"));
+ sprintf(rootDirectory, "%s\\.bbtk",getenv("USERPROFILE"));
+ // std::cout << "[" << rootDirectory << "]" << std::endl;
// configPath
char configPath[200];
- sprintf(configPath, "%s/bbtk_config.xml",rootDirectory);
+ sprintf(configPath, "%s\\bbtk_config.xml",rootDirectory);
+
+ // makeDir
+ char makeDir[250];
+ sprintf( makeDir, "mkdir \"%s\" ", rootDirectory);
// configXmlTmp
char configXmlTmp[250];
- sprintf(configXmlTmp, "%s/bbtk_config.xml.tmp", bbtk_path);
+ sprintf(configXmlTmp, "%s\\bbtk_config.xml.tmp", bbtk_path2);
// copyFile
char copyFile[250];
- if (!Utilities::FileExists(configXmlTmp)) // bbtk_config.xml.tmp not found (not installed)
+ if (!Utilities::FileExists(configXmlTmp)) // bbtk_config.xml.tmp not found
{
// if "bbtk_path/bbtk_config.xml.tmp" doesn't exist, hard-create a minimum version in .bbtk
CreateConfigXML( rootDirectory );// create .bbtk
+ return;
}
- else
- {
- sprintf(copyFile,"cp %s %s/bbtk_config.xml ",configXmlTmp,rootDirectory );
- if (!Utilities::FileExists(configPath))
- {
- system(copyFile);
- }
- }
- return;
+ sprintf(copyFile,"copy %s\\bbtk_config.xml.tmp \"%s\"\\bbtk_config.xml ",bbtk_path,rootDirectory );
+
+ WCHAR rootDirectory2[200];
+ MultiByteToWideChar( 0,0, rootDirectory, 200, rootDirectory2, 6);
+ LPCWSTR rootDirectory3 = rootDirectory2;
+ int attribs = GetFileAttributes (rootDirectory3);
+// int attribs = GetFileAttributes (rootDirectory3);
+
+
+ bbtkMessage("config",1,std::hex << attribs << " " << FILE_ATTRIBUTE_DIRECTORY << std::endl);
+ if ( attribs != 0xFFFFFFFF)
+ {
+ if ((attribs & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY ) /// \TODO : check !
+ {
+ WCHAR configPath2[200];
+ MultiByteToWideChar( 0,0, configPath, 200, configPath2, 6);
+ LPCWSTR configPath3 = configPath2;
+ if ( GetFileAttributes( configPath3 ) == 0xFFFFFFFF)
+ //if ( GetFileAttributes( configPath ) == 0xFFFFFFFF)
+ {
+ system(copyFile);
+ }
+ }
+ } else {
+ system(makeDir);
+ system(copyFile);
+ }
+ return;
// ------------------------------------------------------------------
-#elif defined(WIN32)
+#elif defined(__GNUC__)
+ // ------------------ create some usefull strings ----------------
+ // installed bbtk_path
+ char bbtk_path[1000];
+ strcpy(bbtk_path, Utilities::GetExecutablePath().c_str()); // JPR
+ //strcpy(bbtk_path, "/usr/local/bin");
- // installed bbtk_path
- char bbtk_path[100];
- strcpy(bbtk_path, "\"c:\\Program Files\\BBTK\\bin\"");
- char bbtk_path2[100];
- strcpy(bbtk_path2, "c:\\Program Files\\BBTK\\bin");
+ std::string str_home=Utilities::GetEnvHome();
+
+ #if defined(WIN32)
+ str_home="C:"+str_home;
+ #endif
// rootDirectory
char rootDirectory[200];
- sprintf(rootDirectory, "%s\\.bbtk",getenv("USERPROFILE"));
- // std::cout << "[" << rootDirectory << "]" << std::endl;
+ sprintf( rootDirectory, "%s/.bbtk", str_home.c_str());
// configPath
char configPath[200];
- sprintf(configPath, "%s\\bbtk_config.xml",rootDirectory);
-
- // makeDir
- char makeDir[250];
- sprintf( makeDir, "mkdir \"%s\" ", rootDirectory);
+ sprintf(configPath, "%s/bbtk_config.xml",rootDirectory);
// configXmlTmp
char configXmlTmp[250];
- sprintf(configXmlTmp, "%s\\bbtk_config.xml.tmp", bbtk_path2);
+ sprintf(configXmlTmp, "%s/bbtk_config.xml.tmp", bbtk_path);
// copyFile
char copyFile[250];
- if (!Utilities::FileExists(configXmlTmp)) // bbtk_config.xml.tmp not found
+ if (!Utilities::FileExists(configXmlTmp)) // bbtk_config.xml.tmp not found (not installed)
{
// if "bbtk_path/bbtk_config.xml.tmp" doesn't exist, hard-create a minimum version in .bbtk
CreateConfigXML( rootDirectory );// create .bbtk
- return;
}
-
- sprintf(copyFile,"copy %s\\bbtk_config.xml.tmp \"%s\"\\bbtk_config.xml ",bbtk_path,rootDirectory );
-
- int attribs = GetFileAttributes (rootDirectory);
- bbtkMessage("config",1,std::hex << attribs << " " << FILE_ATTRIBUTE_DIRECTORY << std::endl);
- if ( attribs != 0xFFFFFFFF)
+ else
{
- if ((attribs & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY ) /// \TODO : check !
+ sprintf(copyFile,"cp %s %s/bbtk_config.xml ",configXmlTmp,rootDirectory );
+ if (!Utilities::FileExists(configPath))
{
- if ( GetFileAttributes( configPath ) == 0xFFFFFFFF)
- {
- system(copyFile);
- }
+ system(copyFile);
}
}
- else
- {
- system(makeDir);
- system(copyFile);
- }
return;
+
// ------------------------------------------------------------------
#else
/// \todo ConfigurationFile::InstallPath() : exit when for not WIN32 and not__GNUC__