Salome HOME
bug on ccrt + eris
[tools/libbatch.git] / src / Core / Batch_CommunicationProtocol.cxx
index 1d70b576503e04edaa3c6d1ec3b2abc83fba014f..8a3ef6ada2b5c7591028c54e8208c5305b1ba94a 100644 (file)
@@ -1,4 +1,4 @@
-//  Copyright (C) 2007-2009  CEA/DEN, EDF R&D, OPEN CASCADE
+//  Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 //  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 #include <Batch_config.h>
 
 #include "Batch_CommunicationProtocol.hxx"
-#include "Batch_CommunicationProtocolRSH.hxx"
-#include "Batch_CommunicationProtocolSH.hxx"
-#include "Batch_CommunicationProtocolSSH.hxx"
+#ifdef HAS_RSH
+ #include "Batch_CommunicationProtocolRSH.hxx"
+#endif
+#ifdef HAS_SH
+ #include "Batch_CommunicationProtocolSH.hxx"
+#endif
+#ifdef HAS_SSH
+ #include "Batch_CommunicationProtocolSSH.hxx"
+#endif
 #include "Batch_APIInternalFailureException.hxx"
 #include "Batch_RunTimeException.hxx"
 
@@ -104,6 +110,11 @@ namespace Batch {
     return string("rm ") + path;
   }
 
+  string CommunicationProtocol::getMakeDirectorySubCommand(const string & path) const
+  {
+    return string("mkdir -p ") + path;
+  }
+
   int CommunicationProtocol::removeFile(const std::string & path,
                                         const std::string & host,
                                         const std::string & user) const
@@ -114,6 +125,16 @@ namespace Batch {
     return status;
   }
 
+  int CommunicationProtocol::makeDirectory(const std::string & path,
+                                           const std::string & host,
+                                           const std::string & user) const
+  {
+    string command = getExecCommand(getMakeDirectorySubCommand(path), host, user);
+    cout << command.c_str() << endl;
+    int status = system(command.c_str());
+    return status;
+  }
+
   string CommunicationProtocol::commandStringFromArgs(const vector<string> & commandArgs) const
   {
     string commandStr;
@@ -130,11 +151,7 @@ namespace Batch {
       // if the argument contains spaces, we surround it with simple quotes (Linux)
       // or double quotes (Windows)
       if (commandArgs[i].find(' ') != string::npos) {
-#ifdef WIN32
         commandStr += string("\"") + commandArgs[i] + "\"";
-#else
-        commandStr += string("\'") + commandArgs[i] + "\'";
-#endif
       } else {
         commandStr += commandArgs[i];
       }