ScpFileSystem.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. //---------------------------------------------------------------------------
  2. #ifndef ScpFileSystemH
  3. #define ScpFileSystemH
  4. #include <FileSystems.h>
  5. //---------------------------------------------------------------------------
  6. class TCommandSet;
  7. //---------------------------------------------------------------------------
  8. class TSCPFileSystem : public TCustomFileSystem
  9. {
  10. public:
  11. __fastcall TSCPFileSystem(TTerminal * ATerminal);
  12. virtual __fastcall ~TSCPFileSystem();
  13. virtual AnsiString __fastcall AbsolutePath(AnsiString Path);
  14. virtual void __fastcall KeepAlive();
  15. virtual void __fastcall AnyCommand(const AnsiString Command);
  16. virtual void __fastcall ChangeDirectory(const AnsiString Directory);
  17. virtual void __fastcall CachedChangeDirectory(const AnsiString Directory);
  18. virtual void __fastcall ChangeFileProperties(const AnsiString FileName,
  19. const TRemoteFile * File, const TRemoteProperties * Properties);
  20. virtual void __fastcall CopyToLocal(TStrings * FilesToCopy,
  21. const AnsiString TargetDir, const TCopyParamType * CopyParam,
  22. int Params, TFileOperationProgressType * OperationProgress,
  23. bool & DisconnectWhenComplete);
  24. virtual void __fastcall CopyToRemote(TStrings * FilesToCopy,
  25. const AnsiString TargetDir, const TCopyParamType * CopyParam,
  26. int Params, TFileOperationProgressType * OperationProgress,
  27. bool & DisconnectWhenComplete);
  28. virtual void __fastcall CreateDirectory(const AnsiString DirName,
  29. const TRemoteProperties * Properties);
  30. virtual void __fastcall CreateLink(const AnsiString FileName, const AnsiString PointTo, bool Symbolic);
  31. virtual void __fastcall DeleteFile(const AnsiString FileName,
  32. const TRemoteFile * File, bool Recursive);
  33. virtual void __fastcall CustomCommandOnFile(const AnsiString FileName,
  34. const TRemoteFile * File, AnsiString Command, int Params);
  35. virtual void __fastcall DoStartup();
  36. virtual void __fastcall HomeDirectory();
  37. virtual bool __fastcall IsCapable(int Capability) const;
  38. virtual void __fastcall AdditionalInfo(TStrings * AdditionalInfo, bool Initial);
  39. virtual void __fastcall LookupUserGroups();
  40. virtual void __fastcall ReadCurrentDirectory();
  41. virtual void __fastcall ReadDirectory(TRemoteFileList * FileList);
  42. virtual void __fastcall ReadFile(const AnsiString FileName,
  43. TRemoteFile *& File);
  44. virtual void __fastcall ReadSymlink(TRemoteFile * SymlinkFile,
  45. TRemoteFile *& File);
  46. virtual void __fastcall RenameFile(const AnsiString FileName,
  47. const AnsiString NewName);
  48. static bool __fastcall RemoveLastLine(AnsiString & Line,
  49. int & ReturnCode, AnsiString LastLine = "");
  50. protected:
  51. __property TStrings * Output = { read = FOutput };
  52. __property int ReturnCode = { read = FReturnCode };
  53. virtual AnsiString __fastcall GetCurrentDirectory();
  54. virtual void __fastcall SetCurrentDirectory(AnsiString value);
  55. virtual AnsiString __fastcall GetProtocolName() const;
  56. private:
  57. TCommandSet * FCommandSet;
  58. AnsiString FCurrentDirectory;
  59. TStrings * FOutput;
  60. int FReturnCode;
  61. AnsiString FCachedDirectoryChange;
  62. bool FProcessingCommand;
  63. void __fastcall AliasGroupList();
  64. void __fastcall ClearAliases();
  65. void __fastcall CustomReadFile(const AnsiString FileName,
  66. TRemoteFile *& File, TRemoteFile * ALinkedByFile);
  67. static AnsiString __fastcall DelimitStr(AnsiString Str);
  68. void __fastcall DetectReturnVar();
  69. bool __fastcall IsLastLine(AnsiString & Line);
  70. static bool __fastcall IsTotalListingLine(const AnsiString Line);
  71. void __fastcall EnsureLocation();
  72. void __fastcall ExecCommand(const AnsiString Cmd, int Params = -1);
  73. void __fastcall ExecCommand(TFSCommand Cmd, const TVarRec * args = NULL,
  74. int size = 0, int Params = -1);
  75. void __fastcall ReadCommandOutput(int Params);
  76. void __fastcall SCPResponse(bool * GotLastLine = NULL);
  77. void __fastcall SCPDirectorySource(const AnsiString DirectoryName,
  78. const TCopyParamType * CopyParam, int Params,
  79. TFileOperationProgressType * OperationProgress, int Level);
  80. void __fastcall SCPError(const AnsiString Message, bool Fatal);
  81. void __fastcall SCPSendError(const AnsiString Message, bool Fatal);
  82. void __fastcall SCPSink(const AnsiString TargetDir,
  83. const AnsiString FileName, const TCopyParamType * CopyParam, bool & Success,
  84. TFileOperationProgressType * OperationProgress, int Params, int Level);
  85. void __fastcall SCPSource(const AnsiString FileName,
  86. const TCopyParamType * CopyParam, int Params,
  87. TFileOperationProgressType * OperationProgress, int Level);
  88. void __fastcall SendCommand(const AnsiString Cmd);
  89. void __fastcall SkipFirstLine();
  90. void __fastcall SkipStartupMessage();
  91. void __fastcall UnsetNationalVars();
  92. };
  93. //---------------------------------------------------------------------------
  94. #endif // ScpFileSystemH