From 2a1961c0c386241b48d32c8ef6088a6784b64a7d Mon Sep 17 00:00:00 2001 From: oblivion Date: Wed, 31 Oct 2018 08:33:13 +0000 Subject: [PATCH] SshBasics: SFtpFileSystemInfo example added. git-svn-id: svn://ultimatepp.org/upp/trunk@12433 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- reference/SshBasics/SFtpFileSystemInfo.cpp | 31 ++++++++++++++++++++++ reference/SshBasics/SshBasics.h | 1 + reference/SshBasics/SshBasics.upp | 1 + reference/SshBasics/main.cpp | 2 ++ 4 files changed, 35 insertions(+) create mode 100644 reference/SshBasics/SFtpFileSystemInfo.cpp diff --git a/reference/SshBasics/SFtpFileSystemInfo.cpp b/reference/SshBasics/SFtpFileSystemInfo.cpp new file mode 100644 index 000000000..47d42e3bb --- /dev/null +++ b/reference/SshBasics/SFtpFileSystemInfo.cpp @@ -0,0 +1,31 @@ +#include "SshBasics.h" + +// SFtpTransparency: +// Demonstrates access to sftp directory hierarcy in a file-system-agnostic (transparent) way. + +void ReadDirEntries(FileSystemInfo& fsi, const String& path) +{ + int maxentry = 5; + for(FileSystemInfo::FileInfo entry : fsi.Find(path, maxentry)) { + DUMP(entry.filename); + DUMP(entry.is_folder); + DUMP(entry.length); + DUMP(entry.last_access_time); + //... + } +} + +void SFtpTransparency(SshSession& session) +{ + LOG("Local file system objects----------------------------------------------------------"); + ReadDirEntries(StdFileSystemInfo(), GetCurrentDirectory()); + + SFtp sftp(session); + SFtpFileSystemInfo sfsi(sftp); + + LOG("Remote file system objects---------------------------------------------------------"); + ReadDirEntries(sfsi, "/pub/example/*.png"); + + if(sftp.IsError()) + LOG(sftp.GetErrorDesc()); +} diff --git a/reference/SshBasics/SshBasics.h b/reference/SshBasics/SshBasics.h index 52f110553..dc0440a23 100644 --- a/reference/SshBasics/SshBasics.h +++ b/reference/SshBasics/SshBasics.h @@ -8,6 +8,7 @@ using namespace Upp; void SFtpGet(SshSession& session); void SFtpStreamGet(SshSession& session); +void SFtpTransparency(SshSession& session); void SFtpAsyncGet(SshSession& session); void ExecListDir(SshSession& session); void ExecAsyncListDir(SshSession& session); diff --git a/reference/SshBasics/SshBasics.upp b/reference/SshBasics/SshBasics.upp index 1e575fa7c..cbd53bf6a 100644 --- a/reference/SshBasics/SshBasics.upp +++ b/reference/SshBasics/SshBasics.upp @@ -10,6 +10,7 @@ file "Core examples" readonly separator, SFtp.cpp, SFtpStream.cpp, + SFtpFileSystemInfo.cpp, Exec.cpp, Scp.cpp, Shell.cpp, diff --git a/reference/SshBasics/main.cpp b/reference/SshBasics/main.cpp index 12eff34df..950fadedf 100644 --- a/reference/SshBasics/main.cpp +++ b/reference/SshBasics/main.cpp @@ -38,6 +38,8 @@ CONSOLE_APP_MAIN SFtpGet(session); #elif defined(SSH_SFTP_STREAM) SFtpStreamGet(session); +#elif defined(SSH_SFTP_TRANSPARENCY) + SFtpTransparency(session); #elif defined(SSH_SFTP_MT) SFtpAsyncGet(session); #elif defined(SSH_EXEC)