| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 | package sftpfsimport (	"io"	"io/fs"	"os"	"github.com/pkg/sftp"	"imuslab.com/arozos/mod/filesystem/arozfs")/*	SFTP File	Converting the *sftp.File into arozos.File compatible types*/type sftpFsFile struct {	file       *sftp.File	isDir      bool	dirEntries []fs.DirEntry}func newSftpFsFile(wrappingFile *sftp.File, isDir bool, dirEntries []fs.DirEntry) *sftpFsFile {	return &sftpFsFile{		file:       wrappingFile,		isDir:      isDir,		dirEntries: dirEntries,	}}func (f *sftpFsFile) Chdir() error {	return arozfs.ErrOperationNotSupported}func (f *sftpFsFile) Chmod(mode os.FileMode) error {	return arozfs.ErrOperationNotSupported}func (f *sftpFsFile) Chown(uid, gid int) error {	return arozfs.ErrOperationNotSupported}func (f *sftpFsFile) Close() error {	return f.file.Close()}func (f *sftpFsFile) Name() string {	return f.file.Name()}func (f *sftpFsFile) Read(b []byte) (n int, err error) {	return f.file.Read(b)}func (f *sftpFsFile) ReadAt(b []byte, off int64) (n int, err error) {	return f.file.ReadAt(b, off)}func (f *sftpFsFile) Readdirnames(n int) (names []string, err error) {	results := []string{}	for _, entry := range f.dirEntries {		results = append(results, entry.Name())	}	return results, nil}func (f *sftpFsFile) ReadDir(n int) ([]fs.DirEntry, error) {	if f.isDir {		return f.dirEntries, nil	}	return []fs.DirEntry{}, nil}func (f *sftpFsFile) ReadFrom(r io.Reader) (n int64, err error) {	return f.file.ReadFrom(r)}func (f *sftpFsFile) Readdir(n int) ([]fs.FileInfo, error) {	return []fs.FileInfo{}, nil}func (f *sftpFsFile) Seek(offset int64, whence int) (ret int64, err error) {	return f.file.Seek(offset, whence)}func (f *sftpFsFile) Stat() (fs.FileInfo, error) {	return f.file.Stat()}func (f *sftpFsFile) Sync() error {	return f.file.Sync()}func (f *sftpFsFile) Truncate(size int64) error {	return f.file.Truncate(size)}func (f *sftpFsFile) Write(b []byte) (n int, err error) {	return f.file.Write(b)}func (f *sftpFsFile) WriteAt(b []byte, off int64) (n int, err error) {	return f.file.WriteAt(b, off)}func (f *sftpFsFile) WriteString(s string) (n int, err error) {	return f.file.Write([]byte(s))}/*	SFTP DirEntry	Converting the legacy os.FileInfo into arozos required	fs.DirEntry for sftp client readDir returned values*/type SftpDirEntry struct {	finfo fs.FileInfo}func newDirEntryFromFileInfo(targetFileInfo fs.FileInfo) *SftpDirEntry {	return &SftpDirEntry{		finfo: targetFileInfo,	}}func (de SftpDirEntry) Name() string {	return de.finfo.Name()}func (de SftpDirEntry) IsDir() bool {	return de.finfo.IsDir()}func (de SftpDirEntry) Type() fs.FileMode {	return de.finfo.Mode()}func (de SftpDirEntry) Info() (fs.FileInfo, error) {	return de.finfo, nil}
 |