Salome HOME
bug on ccrt + eris
[tools/libbatch.git] / src / Core / Batch_CommunicationProtocol.cxx
index da4d49ce7d7f91d79a46077a497166a08467a1ab..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 <stdlib.h>
 #include <iostream>
+#include <stdlib.h>
 
 #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"
 
@@ -103,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
@@ -113,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;
@@ -126,7 +148,8 @@ namespace Batch {
     for (unsigned int i=0 ; i<commandArgs.size() ; i++) {
       if (i != 0) commandStr += " ";
 
-      // if the argument contains spaces, we surround it with double quotes
+      // if the argument contains spaces, we surround it with simple quotes (Linux)
+      // or double quotes (Windows)
       if (commandArgs[i].find(' ') != string::npos) {
         commandStr += string("\"") + commandArgs[i] + "\"";
       } else {