]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
Correct compilation under Win32 platform BR_WPdev_For_4_0
authorabd <abd@opencascade.com>
Thu, 8 May 2008 08:42:15 +0000 (08:42 +0000)
committerabd <abd@opencascade.com>
Thu, 8 May 2008 08:42:15 +0000 (08:42 +0000)
src/Container/Container_i.cxx
src/Launcher/BatchLight_Job.cxx
src/Launcher/SALOME_Launcher.cxx
src/Launcher/SALOME_Launcher.hxx
src/ResourcesManager/SALOME_ResourcesManager.cxx
src/TOOLSDS/SALOMEDS_Tool.cxx
src/TOOLSDS/SALOMEDS_Tool.hxx
src/Utils/OpUtil.cxx
src/Utils/OpUtil.hxx

index 41e2b5b61ab952a652a7f01ce896b388e41a39b7..e7f75cf583ea1ee8d2ba5722aca88af79d8a1345 100644 (file)
 #else
 #include <signal.h>
 #include <process.h>
+#include <direct.h>
 int SIGUSR1 = 1000;
 #endif
 
 #include "utilities.h"
 #include <SALOMEconfig.h>
-//#ifndef WNT
 #include CORBA_SERVER_HEADER(SALOME_Component)
 #include CORBA_SERVER_HEADER(SALOME_Exception)
-//#else
-//#include <SALOME_Component.hh>
-//#endif
 #include <pthread.h>  // must be before Python.h !
 #include "SALOME_Container_i.hxx"
 #include "SALOME_Component_i.hxx"
index 1980054a9abd0e2014eb1504362042e38e0fe8a1..bb9cfb3cf4fd652190052eaa8e89b5a1c0253b3e 100644 (file)
@@ -132,7 +132,7 @@ Job::check() {
       rtn = false;
     }
     std::string end_mem_value = mem_value.substr(mem_value.length()-2);
-    if (end_mem_value != "gb" and end_mem_value != "mb") {
+    if (end_mem_value != "gb" && end_mem_value != "mb") {
       mem_info = "Error on definition, type is bad ! " + mem_value;
       rtn = false;
     }
index 48facc1af2fe60a2af4fa99d5af1297aba349151..6d13865eaeed38a2e38a409dd4565ce9cb1bcca0 100644 (file)
@@ -206,7 +206,7 @@ char* SALOME_Launcher::querySalomeJob( /*const */CORBA::Long jobId,
  *  \param params             : Constraints for the choice of the batch cluster
  */
 //=============================================================================
-void SALOME_Launcher::deleteSalomeJob( const CORBA::Long jobId, 
+void SALOME_Launcher::deleteSalomeJob( CORBA::Long jobId, 
                                       const Engines::MachineParameters& params)
 {
   try{
@@ -237,7 +237,7 @@ void SALOME_Launcher::deleteSalomeJob( const CORBA::Long jobId,
  */
 //=============================================================================
 void SALOME_Launcher::getResultSalomeJob( const char *directory,
-                                         const CORBA::Long jobId, 
+                                         CORBA::Long jobId, 
                                          const Engines::MachineParameters& params)
 {
   try{
index fa12286978762f18f6af1204c0fa29f35df04007..8627fae2324caff90da2e6665d2917e11daf1187 100644 (file)
@@ -54,9 +54,9 @@ public:
                              const Engines::BatchParameters& batch_params,
                              const Engines::MachineParameters& params);
 
-  char* querySalomeJob( const CORBA::Long jobId, const Engines::MachineParameters& params);
-  void deleteSalomeJob( const CORBA::Long jobId, const Engines::MachineParameters& params);
-  void getResultSalomeJob( const char * directory, const CORBA::Long jobId, const Engines::MachineParameters& params );
+  char* querySalomeJob( CORBA::Long jobId, const Engines::MachineParameters& params);
+  void deleteSalomeJob( CORBA::Long jobId, const Engines::MachineParameters& params);
+  void getResultSalomeJob( const char * directory, CORBA::Long jobId, const Engines::MachineParameters& params );
 
   void Shutdown();
 
index ea88da8f8de8b99f184482e23d9734fc8d62fd65..5c7ca50e5f74f91ee4bc5b45e70220d8fea9b80b 100644 (file)
@@ -639,12 +639,22 @@ SALOME_ResourcesManager::BuildCommandToLaunchLocalContainer
           if(wdir == "$TEMPDIR")
             {
               // a new temporary directory is requested
-              char dir[]="/tmp/salomeXXXXXX";
+              /*char dir[]="/tmp/salomeXXXXXX";
               char* mdir=mkdtemp(dir);
               if(mdir==NULL)
                 std::cerr << "Problem in mkdtemp " << dir << " " << mdir << std::endl;
               else
                 command="cd "+std::string(dir)+";";
+              */
+              string dir = OpUtil_Dir::GetTmpDir();
+#ifdef WNT
+              if ( dir.length() > 1 && dir[1] == ':')
+                command = dir.substr( 0, 2 ) + ";";
+              command += "cd "+ dir +";";
+#else
+              command = "cd "+ dir +";";
+#endif
+
             }
           else
             {
index 444f54558376aafc0e3a295bac8648cbe6a92d40..7a18c0923896d56f0ed60f6667fcc9a8f93f46aa 100644 (file)
@@ -27,6 +27,7 @@
 #include "SALOMEDS_Tool.hxx"
 
 #include "utilities.h"
+#include "OpUtil.hxx"
 
 #ifndef WNT
 #include <sys/time.h>
@@ -70,9 +71,10 @@ bool Exists(const string thePath)
 //============================================================================ 
 std::string SALOMEDS_Tool::GetTmpDir()
 {
+  return OpUtil_Dir::GetTmpDirByEnv("SALOME_TMP_DIR");
   //Find a temporary directory to store a file
 
-  string aTmpDir = "";
+  /*string aTmpDir = "";
 
   char *Tmp_dir = getenv("SALOME_TMP_DIR");
   if(Tmp_dir != NULL) {
@@ -122,7 +124,7 @@ std::string SALOMEDS_Tool::GetTmpDir()
   mkdir(aDir.c_str(), 0x1ff); 
 #endif
 
-  return aDir;
+  return aDir;*/
 }
 
 //============================================================================
index 0c57ace2e93ba183939dda374aaa6b6c6368a7e0..5829f3fd44636863935f0f6fde25601f705fa87e 100644 (file)
 #include CORBA_SERVER_HEADER(SALOMEDS)
 
 #ifdef WNT
- #if defined TOOLSDS_EXPORTS
-  #if defined WIN32
-   #define TOOLSDS_EXPORT __declspec( dllexport )
-  #else
-   #define TOOLSDS_EXPORT
-  #endif
- #else
-  #if defined WIN32
-   #define TOOLSDS_EXPORT __declspec( dllimport )
-  #else
-   #define TOOLSDS_EXPORT
-  #endif
- #endif
+# if defined TOOLSDS_EXPORTS
+#  define TOOLSDS_EXPORT __declspec( dllexport )
+# else
+#  define TOOLSDS_EXPORT __declspec( dllimport )
+# endif
 #else
- #define TOOLSDS_EXPORT
+define TOOLSDS_EXPORT
 #endif
 
 class TOOLSDS_EXPORT SALOMEDS_Tool                                
index 43052f7318bd62c5d6b0c53bb7ac355bd2608509..4ce44c4799e225e146cf8ac5d4f449e344955346 100644 (file)
@@ -35,6 +35,7 @@
 #include <winsock2.h>
 #endif
 using namespace std;
+
 //int gethostname(char *name, size_t len);
 
 std::string GetHostname()
@@ -76,3 +77,170 @@ std::string GetHostname()
   return p;
 }
 
+
+std::string OpUtil_Dir::GetTmpDirByEnv( const std::string& tmp_path_env )
+{
+  string dir;
+  char* val = getenv( tmp_path_env.c_str() );
+  val ? dir = string( val ) : "";
+  return GetTmpDirByPath( dir );
+}
+
+std::string OpUtil_Dir::GetTmpDirByPath( const std::string& tmp_path )
+{
+  string aTmpDir = tmp_path;
+  char sep = 
+#ifdef WNT
+            '\\';
+#else
+            '/';
+#endif
+  /*if ( tmp_path.length() > 0 )
+  {
+    char *Tmp_dir = getenv(tmp_path_env.c_str());
+    if( Tmp_dir != NULL )
+    {
+      aTmpDir = string(Tmp_dir);
+      if(aTmpDir[aTmpDir.size()-1] != sep)
+        aTmpDir+=sep;
+    }
+  }*/
+  if ( aTmpDir == "" )
+  {
+#ifdef WNT
+    char *Tmp_dir = getenv("TEMP");
+    if( Tmp_dir == NULL )
+    {
+      Tmp_dir = getenv("TMP");
+      if (Tmp_dir == NULL)
+        aTmpDir = string("C:\\");
+      else 
+        aTmpDir = string(Tmp_dir);
+    }
+    else
+      aTmpDir = string(Tmp_dir);
+#else
+    aTmpDir = string("/tmp/");
+#endif
+  }
+
+  if(aTmpDir[aTmpDir.size()-1] != sep)
+    aTmpDir+=sep;
+
+  srand((unsigned int)time(NULL));
+  int aRND = 999 + (int)(100000.0*rand()/(RAND_MAX+1.0)); //Get a random number to present a name of a sub directory
+  char buffer[127];
+  sprintf(buffer, "%d", aRND);
+  string aSubDir(buffer);
+  if(aSubDir.size() <= 1) aSubDir = string("123409876");
+
+  aTmpDir += aSubDir; //Get RND sub directory
+
+  string aDir = aTmpDir;
+
+  if(IsExists(aDir)) {
+    for(aRND = 0; IsExists(aDir); aRND++) {
+      sprintf(buffer, "%d", aRND);
+      aDir = aTmpDir+buffer;  //Build a unique directory name
+    }
+  }
+
+  if(aDir[aDir.size()-1] != sep) aDir+=sep;
+
+#ifdef WNT
+  CreateDirectory(aDir.c_str(), NULL);
+#else
+  mkdir(aDir.c_str(), 0x1ff); 
+#endif
+
+  return aDir;
+}
+
+//============================================================================
+// function : GetTempDir
+// purpose  : Return a temp directory to store created files like "/tmp/sub_dir/" 
+//============================================================================ 
+std::string OpUtil_Dir::GetTmpDir()
+{
+  return GetTmpDirByPath( "" );
+  //Find a temporary directory to store a file
+/*
+  string aTmpDir = "";
+  char sep = 
+#ifdef WNT
+            '\\';
+#else
+            '/';
+#endif
+  if ( tmp_path_env.length() > 0 )
+  {
+    char *Tmp_dir = getenv(tmp_path_env.c_str());
+    if( Tmp_dir != NULL )
+    {
+      aTmpDir = string(Tmp_dir);
+      if(aTmpDir[aTmpDir.size()-1] != sep)
+        aTmpDir+=sep;
+    }
+  }
+  if ( aTmpDir == "" )
+  {
+#ifdef WNT
+    char *Tmp_dir = getenv("TEMP");
+    if( Tmp_dir == NULL )
+    {
+      Tmp_dir = getenv("TMP");
+      if (Tmp_dir == NULL)
+        aTmpDir = string("C:\\");
+      else 
+        aTmpDir = string(Tmp_dir);
+    }
+    else
+      aTmpDir = string(Tmp_dir);
+#else
+    aTmpDir = string("/tmp/");
+#endif
+  }
+
+  srand((unsigned int)time(NULL));
+  int aRND = 999 + (int)(100000.0*rand()/(RAND_MAX+1.0)); //Get a random number to present a name of a sub directory
+  char buffer[127];
+  sprintf(buffer, "%d", aRND);
+  string aSubDir(buffer);
+  if(aSubDir.size() <= 1) aSubDir = string("123409876");
+
+  aTmpDir += aSubDir; //Get RND sub directory
+
+  string aDir = aTmpDir;
+
+  if(Exists(aDir)) {
+    for(aRND = 0; Exists(aDir); aRND++) {
+      sprintf(buffer, "%d", aRND);
+      aDir = aTmpDir+buffer;  //Build a unique directory name
+    }
+  }
+
+  if(aDir[aDir.size()-1] != sep) aDir+=sep;
+
+#ifdef WNT
+  CreateDirectory(aDir.c_str(), NULL);
+#else
+  mkdir(aDir.c_str(), 0x1ff); 
+#endif
+
+  return aDir;*/
+}
+
+bool OpUtil_Dir::IsExists(const string& thePath) 
+{
+#ifdef WNT 
+  if (  GetFileAttributes (  thePath.c_str()  ) == 0xFFFFFFFF  ) { 
+    if (  GetLastError () == ERROR_FILE_NOT_FOUND  ) {
+      return false;
+    }
+  }
+#else 
+  int status = access ( thePath.c_str() , F_OK ); 
+  if (status != 0) return false;
+#endif
+  return true;
+}
\ No newline at end of file
index ba5d5eb421c99088b6d93c72455eb7120a771873..f462726a43bb21cf86b9c3194b838cdc3f316906 100644 (file)
 UTILS_EXPORT std::string GetHostname();
 UTILS_EXPORT const char *duplicate(const char * const);
 
+class UTILS_EXPORT OpUtil_Dir
+{
+public:
+  // Returns the unique temporary directory, that is defined in tmp_path_env if this variable is set
+  // otherwise return /tmp/something/ for Unix or c:\something\ for WNT
+  static std::string GetTmpDirByEnv( const std::string& tmp_path_env );
+
+  // Returns the unique temporary directory, that is defined in tmp_path if this variable is set
+  // otherwise return /tmp/something/ for Unix or c:\something\ for WNT
+  static std::string GetTmpDirByPath( const std::string& tmp_path );
+  
+  // Returns the unique temporary directory in 
+  // /tmp/something/ for Unix or c:\something\ for WNT
+  static std::string GetTmpDir();
+
+  // Returns True(False) if the path (not)exists
+  static bool IsExists( const std::string& path );
+
+};
+
 #endif