142b2e5d5SFrançois Revol #ifndef SPAWNING_UPLOAD_CLIENT_H 242b2e5d5SFrançois Revol #define SPAWNING_UPLOAD_CLIENT_H 342b2e5d5SFrançois Revol 442b2e5d5SFrançois Revol #include "FileUploadClient.h" 542b2e5d5SFrançois Revol 642b2e5d5SFrançois Revol #include <OS.h> 742b2e5d5SFrançois Revol #include <stdio.h> 842b2e5d5SFrançois Revol #include <string> 942b2e5d5SFrançois Revol 1042b2e5d5SFrançois Revol 1142b2e5d5SFrançois Revol class SpawningUploadClient : public FileUploadClient { 1242b2e5d5SFrançois Revol public: 1342b2e5d5SFrançois Revol SpawningUploadClient(); 1442b2e5d5SFrançois Revol virtual ~SpawningUploadClient(); 1542b2e5d5SFrançois Revol 1642b2e5d5SFrançois Revol virtual bool Connect(const string& server, const string& login, 1742b2e5d5SFrançois Revol const string& passwd); 1842b2e5d5SFrançois Revol 1942b2e5d5SFrançois Revol virtual bool PutFile(const string& local, const string& remote, 2042b2e5d5SFrançois Revol ftp_mode mode = binary_mode); 2142b2e5d5SFrançois Revol 2242b2e5d5SFrançois Revol virtual bool GetFile(const string& remote, const string& local, 2342b2e5d5SFrançois Revol ftp_mode mode = binary_mode); 2442b2e5d5SFrançois Revol 2542b2e5d5SFrançois Revol virtual bool MoveFile(const string& oldPath, const string& newPath); 2642b2e5d5SFrançois Revol virtual bool ChangeDir(const string& dir); 2742b2e5d5SFrançois Revol virtual bool PrintWorkingDir(string& dir); 2842b2e5d5SFrançois Revol virtual bool ListDirContents(string& listing); 2942b2e5d5SFrançois Revol virtual bool Chmod(const string& path, const string& mod); 3042b2e5d5SFrançois Revol 3142b2e5d5SFrançois Revol virtual void SetPassive(bool on); 3242b2e5d5SFrançois Revol 3342b2e5d5SFrançois Revol protected: 3442b2e5d5SFrançois Revol status_t SetCommandLine(const char *command); 3542b2e5d5SFrançois Revol ssize_t SendCommand(const char *cmd); 3642b2e5d5SFrançois Revol ssize_t ReadReply(BString *to); 3742b2e5d5SFrançois Revol virtual status_t ParseReply(); 38*586cf6aeSFrançois Revol int getpty(char *pty, char *tty); 3942b2e5d5SFrançois Revol 4042b2e5d5SFrançois Revol int InputPipe() const { return fPty; }; 4142b2e5d5SFrançois Revol int OutputPipe() const { return fPty; }; 4242b2e5d5SFrançois Revol 4342b2e5d5SFrançois Revol private: 4442b2e5d5SFrançois Revol bool SpawnCommand(); 4542b2e5d5SFrançois Revol string fCommand; 4642b2e5d5SFrançois Revol pid_t fCommandPid; 4742b2e5d5SFrançois Revol int fPty; 4842b2e5d5SFrançois Revol }; 4942b2e5d5SFrançois Revol 5042b2e5d5SFrançois Revol #endif // SPAWNING_UPLOAD_CLIENT_H 51