]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkConfigurationFile.cxx
#342 8BBTK Feature New Normal - Clean PlugPackage Windows
[bbtk.git] / kernel / src / bbtkConfigurationFile.cxx
index 3721d79d259d9e4c0b6349ef868eeb2ea2473653..e91dcfdfc4ef94f15becf5452c0b593db689cdc8 100644 (file)
@@ -1,32 +1,39 @@
+/*
+ # ---------------------------------------------------------------------
+ #
+ # 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/02/28 19:06:55 $
-  Version:   $Revision: 1.35 $
+  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 + "/../../../..";
@@ -72,7 +73,6 @@ namespace bbtk
 #endif
 */
 #ifdef MACOSX
-
          std::string macPath("Contents/MacOS");
          int sbp = mBin_path.length();
          int smp = macPath.length();
@@ -80,12 +80,11 @@ namespace bbtk
          {
                  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);
@@ -124,9 +123,6 @@ namespace bbtk
     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( "." );
@@ -150,13 +146,18 @@ namespace bbtk
       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"); // 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
@@ -172,8 +173,6 @@ namespace bbtk
       Utilities::replace( mPackage_paths[iStrVec] , INVALID_FILE_SEPARATOR , VALID_FILE_SEPARATOR);
     }
 
-
-
     GetHelp(2);
 
     // ==> First we look for bbtk_config.xml in "."
@@ -214,6 +213,7 @@ namespace bbtk
 
     // In any case, deal with bbtk_config.xml!
     Read(configXmlFullPathName.c_str());
+       
   }
   //=========================================================================
 
@@ -232,6 +232,7 @@ namespace bbtk
     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);
 
@@ -250,7 +251,6 @@ namespace bbtk
                          + 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 "
@@ -296,6 +296,7 @@ namespace bbtk
     mTemp_path = Utilities::MakeUserSettingsFullFileName("tmp");
     Utilities::CreateDirectoryIfNeeded(mTemp_path);
 
+
   }
   //=========================================================================
 
@@ -341,47 +342,7 @@ namespace bbtk
 
 
     // -----------------------------------------------------------------
-#if 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");
-
-    // rootDirectory
-    char rootDirectory[200];
-    sprintf( rootDirectory,  "%s/.bbtk", getenv("HOME"));
-
-    // configPath
-    char configPath[200];
-    sprintf(configPath, "%s/bbtk_config.xml",rootDirectory);
-
-    // configXmlTmp
-    char configXmlTmp[250];
-    sprintf(configXmlTmp, "%s/bbtk_config.xml.tmp", bbtk_path);
-
-    // copyFile
-    char copyFile[250];
-
-    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
-      }
-    else
-      {
-       sprintf(copyFile,"cp %s  %s/bbtk_config.xml ",configXmlTmp,rootDirectory );
-       if (!Utilities::FileExists(configPath))
-         {
-           system(copyFile);
-         }
-      }
-    return;
-
-    // ------------------------------------------------------------------
-#elif defined(WIN32)
-
+#if defined(WIN32)
 
     // installed bbtk_path
     char bbtk_path[100];
@@ -418,24 +379,75 @@ namespace bbtk
 
     sprintf(copyFile,"copy %s\\bbtk_config.xml.tmp \"%s\"\\bbtk_config.xml ",bbtk_path,rootDirectory );
 
-    int attribs = GetFileAttributes (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 !
-         {
-           if ( GetFileAttributes( configPath ) == 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);
-             }
-         }
-      }
-    else
-      {
-       system(makeDir);
-       system(copyFile);
-      }
+       }
+  return;
+    // ------------------------------------------------------------------
+#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");
+
+
+    std::string str_home=Utilities::GetEnvHome();
+
+       #if defined(WIN32)      
+               str_home="C:"+str_home;
+       #endif
+
+    // rootDirectory
+    char rootDirectory[200];
+    sprintf( rootDirectory,  "%s/.bbtk", str_home.c_str());
+
+    // configPath
+    char configPath[200];
+    sprintf(configPath, "%s/bbtk_config.xml",rootDirectory);
+
+    // configXmlTmp
+    char configXmlTmp[250];
+    sprintf(configXmlTmp, "%s/bbtk_config.xml.tmp", bbtk_path);
+
+    // copyFile
+    char copyFile[250];
+
+    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
+    } else {
+               sprintf(copyFile,"cp %s  %s/bbtk_config.xml ",configXmlTmp,rootDirectory );
+               if (!Utilities::FileExists(configPath))
+               {
+                   system(copyFile);
+               } // FileExists configPath
+    } // FileExists configXmlTmp
     return;
+
     // ------------------------------------------------------------------
 #else
 /// \todo  ConfigurationFile::InstallPath() : exit when for not WIN32 and not__GNUC__
@@ -549,42 +561,76 @@ namespace bbtk
       }
    delete res;
 
+       std::string bbs_path;
 #ifdef _WIN32
-    std::string bbs_path = path + "/bbs";
+    bbs_path = path + "/bbs";
+    XMLNode BBSPATH = BB.addChild((XMLCSTR)"bbs_path");
+    BBSPATH.addText((XMLCSTR)bbs_path.c_str());
+    Utilities::replace(bbs_path, INVALID_FILE_SEPARATOR, VALID_FILE_SEPARATOR);
+    mBbs_paths.push_back(bbs_path);
 #else
-    std::string bbs_path = path + "/share/bbtk/bbs" ;
-#endif
+    bbs_path = path + "/share/bbtk/bbs" ;
     XMLNode BBSPATH = BB.addChild((XMLCSTR)"bbs_path");
     BBSPATH.addText((XMLCSTR)bbs_path.c_str());
     Utilities::replace(bbs_path, INVALID_FILE_SEPARATOR, VALID_FILE_SEPARATOR);
     mBbs_paths.push_back(bbs_path);
 
-#ifdef _WIN32
-    std::string pack_path = path + "/bin";
-#else
-    std::string pack_path = path ;
+    bbs_path = path + "/../../share/bbtk/bbs" ;
+    BBSPATH = BB.addChild((XMLCSTR)"bbs_path");
+    BBSPATH.addText((XMLCSTR)bbs_path.c_str());
+    Utilities::replace(bbs_path, INVALID_FILE_SEPARATOR, VALID_FILE_SEPARATOR);
+    mBbs_paths.push_back(bbs_path);
+
 #endif
+
+       std::string pack_path;
+#ifdef _WIN32
+    pack_path = path;
     XMLNode PACKPATH = BB.addChild((XMLCSTR)"package_path");
     PACKPATH.addText((XMLCSTR)pack_path.c_str());
     Utilities::replace(pack_path,INVALID_FILE_SEPARATOR,VALID_FILE_SEPARATOR);
     mPackage_paths.push_back(pack_path);
 
-#ifdef _WIN32
-    pack_path = path + "/RelWithDebInfo";
+    pack_path = path + "/bin";
     PACKPATH = BB.addChild((XMLCSTR)"package_path");
     PACKPATH.addText((XMLCSTR)pack_path.c_str());
     Utilities::replace(pack_path,INVALID_FILE_SEPARATOR,VALID_FILE_SEPARATOR);
     mPackage_paths.push_back(pack_path);
-    pack_path = path + "/Debug";
-    PACKPATH = BB.addChild((XMLCSTR)"package_path");
+
+//    pack_path = path + "/RelWithDebInfo";
+//    PACKPATH = BB.addChild((XMLCSTR)"package_path");
+//    PACKPATH.addText((XMLCSTR)pack_path.c_str());
+//    Utilities::replace(pack_path,INVALID_FILE_SEPARATOR,VALID_FILE_SEPARATOR);
+//    mPackage_paths.push_back(pack_path);
+
+//    pack_path = path + "/Debug";
+//    PACKPATH = BB.addChild((XMLCSTR)"package_path");
+//    PACKPATH.addText((XMLCSTR)pack_path.c_str());
+//    Utilities::replace(pack_path,INVALID_FILE_SEPARATOR,VALID_FILE_SEPARATOR);
+//    mPackage_paths.push_back(pack_path);
+
+//    pack_path = path + "/Release";
+//    PACKPATH = BB.addChild((XMLCSTR)"package_path");
+//    PACKPATH.addText((XMLCSTR)pack_path.c_str());
+//    Utilities::replace(pack_path,INVALID_FILE_SEPARATOR,VALID_FILE_SEPARATOR);
+//    mPackage_paths.push_back(pack_path);
+#else
+    pack_path = path ;
+    XMLNode PACKPATH = BB.addChild((XMLCSTR)"package_path");
     PACKPATH.addText((XMLCSTR)pack_path.c_str());
     Utilities::replace(pack_path,INVALID_FILE_SEPARATOR,VALID_FILE_SEPARATOR);
     mPackage_paths.push_back(pack_path);
-    pack_path = path + "/Release";
+
+    pack_path = path+"/../../lib64/creatools" ;
     PACKPATH = BB.addChild((XMLCSTR)"package_path");
     PACKPATH.addText((XMLCSTR)pack_path.c_str());
     Utilities::replace(pack_path,INVALID_FILE_SEPARATOR,VALID_FILE_SEPARATOR);
     mPackage_paths.push_back(pack_path);
+
+#endif
+
+
+#ifdef _WIN32
 #endif