86 #define CHECK_FS(_method) \ 87 auto fileSystem = static_cast<IFS::FileSystem*>(SmingInternal::activeFileSystem); \ 88 if(fileSystem == nullptr) { \ 89 debug_e("ERROR in %s(): No active file system", __FUNCTION__); \ 90 return FileHandle(IFS::Error::NoFileSystem); \ 100 debug_e(
"ERROR: No active file system");
145 return fileSystem->
open(path, flags);
155 return fileSystem->
close(file);
167 return fileSystem->
write(file, data, size);
188 return fileSystem->
read(file, data, size);
200 return fileSystem->
lseek(file, offset, origin);
210 return fileSystem ? (fileSystem->
eof(file) != 0) :
true;
220 return fileSystem->
tell(file);
230 return fileSystem->
flush(file);
240 if(fileSystem ==
nullptr) {
254 template <
typename TFileName>
inline int fileSetContent(
const TFileName& fileName,
const char* content,
size_t length)
257 return fileSystem->setContent(fileName, content, length);
260 template <
typename TFileName,
typename TContent>
inline int fileSetContent(
const TFileName& fileName, TContent content)
263 return fileSystem->setContent(fileName, content);
270 template <
typename TFileName>
inline uint32_t
fileGetSize(
const TFileName& fileName)
273 return fileSystem ? fileSystem->getSize(fileName) : 0;
286 return fileSystem->
ftruncate(file, newSize);
306 template <
typename TFileName>
int fileTruncate(
const TFileName& fileName,
size_t newSize)
309 return fileSystem->truncate(fileName, newSize);
317 inline int fileRename(
const char* oldName,
const char* newName)
320 return fileSystem->
rename(oldName, newName);
345 return fileSystem ? fileSystem->getContent(fileName) :
nullptr;
359 template <
typename TFileName>
inline size_t fileGetContent(
const TFileName& fileName,
char* buffer,
size_t bufSize)
362 return fileSystem ? fileSystem->getContent(fileName, buffer, bufSize) : 0;
365 template <
typename TFileName>
inline size_t fileGetContent(
const TFileName& fileName,
char* buffer)
368 return fileSystem ? fileSystem->getContent(fileName, buffer) : 0;
379 return fileSystem->
stat(fileName, &stat);
395 return fileSystem->
fstat(file, &stat);
405 return fileSystem->
remove(fileName);
420 return fileSystem->
fremove(file);
431 return fileSystem->
stat(fileName, &stat) >= 0 && !stat.
attr[FileAttribute::Directory];
447 return fileSystem->
stat(dirName, &stat) >= 0 && stat.
attr[FileAttribute::Directory];
464 return fileSystem->
opendir(dirName, dir);
495 return fileSystem->
readdir(dir, stat);
514 return fileSystem->
getinfo(info);
528 return fileSystem->
format();
537 return fileSystem->
check();
548 return fileSystem->setacl(file, acl);
560 return fileSystem->setattr(filename, attr);
577 return fileSystem->settime(file, mtime);
Definition: Core/FileSystem.h:40
Basic information about filing system.
Definition: IFileSystem.h:118
version of Stat with integrated name buffer
Definition: Stat.h:97
#define CHECK_FS(_method)
Definition: Core/FileSystem.h:86
IFS::FileSystem::Type fileSystemType()
Get the type of file system currently mounted (if any)
constexpr FileOpenFlags eFO_Truncate
Definition: Core/FileSystem.h:80
virtual int write(FileHandle file, const void *data, size_t size)=0
write content to a file at current position and advance cursor
virtual int remove(const char *path)=0
remove (delete) a file by path
virtual int check()
Perform a file system consistency check.
Definition: IFileSystem.h:462
IFS::FileHandle file_t
<
Definition: Core/FileSystem.h:24
virtual int close(FileHandle file)=0
close an open file
int fileTruncate(FileHandle file, size_t newSize)
Truncate (reduce) the size of an open file.
Definition: Core/FileSystem.h:283
FileAttribute
Definition: FileAttributes.h:46
BitSet< uint8_t, OpenFlag, size_t(OpenFlag::MAX)> OpenFlags
Definition: OpenFlags.h:50
const char * c_str() const
Get a constant (un-modifiable) pointer to String content.
Definition: WString.h:641
int fileSetTime(FileHandle file, time_t mtime)
Set access control information for file.
Definition: Core/FileSystem.h:574
Directory stream class.
Definition: Core/FileSystem.h:66
virtual int eof(FileHandle file)=0
determine if current file position is at end of file
virtual int rename(const char *oldpath, const char *newpath)=0
rename a file
static constexpr OpenFlags Append
Definition: File.h:39
Installable File System base class.
Definition: IFileSystem.h:95
virtual FileHandle open(const char *path, OpenFlags flags)=0
open a file by path
FileAttributes attr
Definition: Stat.h:58
int fileSeek(FileHandle file, int offset, SeekOrigin origin)
Position file cursor.
Definition: Core/FileSystem.h:197
static constexpr OpenFlags ReadWrite
Definition: File.h:37
constexpr SeekOrigin eSO_CurrentPos
Definition: Core/FileSystem.h:37
bool fileExist(const char *fileName)
Check if a file exists on file system.
Definition: Core/FileSystem.h:427
int fileClose(FileHandle file)
Clode file.
Definition: Core/FileSystem.h:152
virtual int opendir(const char *path, DirHandle &dir)=0
open a directory for reading
static constexpr OpenFlags ReadOnly
Definition: File.h:35
int fileRename(const char *oldName, const char *newName)
Rename file.
Definition: Core/FileSystem.h:317
String fileGetErrorString(int err)
get the text for a returned error code
Definition: Core/FileSystem.h:237
String fileGetContent(const TFileName &fileName)
Read content of a file.
Definition: Core/FileSystem.h:342
BitSet< uint8_t, FileAttribute, size_t(FileAttribute::MAX)> FileAttributes
File attributes are stored as a bitmask.
Definition: FileAttributes.h:56
Wraps up all file access methods.
Definition: File.h:29
struct ImplFileDir * DirHandle
Definition: IFileSystem.h:68
int fileRewindDir(DirHandle dir)
Rewind to start of directory entries.
Definition: Core/FileSystem.h:502
constexpr SeekOrigin eSO_FileStart
Definition: Core/FileSystem.h:36
The String class.
Definition: WString.h:136
int fileSetACL(FileHandle file, const IFS::ACL &acl)
Set access control information.
Definition: Core/FileSystem.h:545
int fileCloseDir(DirHandle dir)
close a directory object
Definition: Core/FileSystem.h:481
virtual int fremove(FileHandle file)=0
remove (delete) a file by handle
Installable File System base class.
Definition: Components/IFS/src/include/IFS/FileSystem.h:39
SeekOrigin SeekOriginFlags
Definition: Core/FileSystem.h:25
Wrapper class for enumerating a directory.
Definition: Directory.h:31
bool fileMountFileSystem(IFS::IFileSystem *fs)
Mount a constructed filesystem with debug messages.
bool fwfs_mount()
Mount the first available FWFS volume.
SeekOrigin
Stream/file seek origins.
Definition: SeekOrigin.h:18
virtual int closedir(DirHandle dir)=0
close a directory object
static constexpr OpenFlags WriteOnly
Definition: File.h:36
uint32_t fileGetSize(const TFileName &fileName)
Get size of file.
Definition: Core/FileSystem.h:270
int fileSetAttr(const char *filename, FileAttributes attr)
Definition: Core/FileSystem.h:557
String toString(int err)
get text for an error code
int fileOpenDir(const char *dirName, DirHandle &dir)
Open a named directory for reading.
Definition: Core/FileSystem.h:461
int16_t FileHandle
File handle.
Definition: Stat.h:39
Type
Definition: IFileSystem.h:98
Definition: DirectoryTemplate.h:36
SEEK_CUR: Current position in file.
virtual int read(FileHandle file, void *data, size_t size)=0
read content from a file and advance cursor
#define SMING_DEPRECATED
Definition: sming_attr.h:30
virtual int readdir(DirHandle dir, Stat &stat)=0
read a directory entry
#define debug_e(fmt,...)
Definition: debug_progmem.h:77
virtual int ftruncate(FileHandle file, size_t new_size)=0
Truncate (reduce) the size of an open file.
int fileSetContent(const TFileName &fileName, const char *content, size_t length)
Create or replace file with defined content.
Definition: Core/FileSystem.h:254
File()
Definition: Core/FileSystem.h:57
int fileStats(const char *fileName, FileStat &stat)
Get file statistics.
Definition: Core/FileSystem.h:376
Vector< String > fileList()
Get list of files on file system.
int fileWrite(FileHandle file, const void *data, size_t size)
Write to file.
Definition: Core/FileSystem.h:164
int fileTell(FileHandle file)
Get position in file.
Definition: Core/FileSystem.h:217
IFS::FileSystem * getFileSystem()
Get the currently active file system, if any.
Definition: Core/FileSystem.h:97
FileHandle fileOpen(const T &path, FileOpenFlags flags=File::ReadOnly)
Open file by path.
Definition: Core/FileSystem.h:142
IFS::DirHandle DirHandle
Definition: Core/FileSystem.h:27
int fileTouch(FileHandle file)
Update file modification time.
Definition: Core/FileSystem.h:174
virtual int flush(FileHandle file)=0
flush any buffered data to physical media
virtual int stat(const char *path, Stat *stat)=0
get file information
File Status structure.
Definition: Stat.h:51
virtual int32_t tell(FileHandle file)=0
get current file position
Manage a set of bit values using enumeration.
Definition: BitSet.h:43
constexpr int FS_OK
Definition: Core/FileSystem.h:34
int fileFlush(FileHandle file)
Flush pending writes.
Definition: Core/FileSystem.h:227
constexpr FileOpenFlags eFO_WriteOnly
Definition: Core/FileSystem.h:76
constexpr FileOpenFlags eFO_ReadOnly
Definition: Core/FileSystem.h:75
int fileOpenRootDir(DirHandle &dir)
Definition: Core/FileSystem.h:472
bool dirExist(const char *dirName)
Check if a directory exists on file system.
Definition: Core/FileSystem.h:443
virtual int format()=0
format the filing system
int fileRead(FileHandle file, void *data, size_t size)
Read from file.
Definition: Core/FileSystem.h:185
Represents a flash partition.
Definition: Partition.h:78
int fileDelete(const char *fileName)
Delete file.
Definition: Core/FileSystem.h:402
int fileReadDir(DirHandle dir, FileStat &stat)
Read a directory entry.
Definition: Core/FileSystem.h:492
void fileSetFileSystem(IFS::IFileSystem *fileSystem)
Sets the currently active file system.
IFS::FileSystem * activeFileSystem
Global file system instance.
virtual int rewinddir(DirHandle dir)=0
Reset directory read position to start.
virtual int fstat(FileHandle file, Stat *stat)=0
get file information
virtual int getinfo(Info &info)=0
get filing system information
virtual int lseek(FileHandle file, int offset, SeekOrigin origin)=0
change file read/write position
static constexpr OpenFlags CreateNewAlways
Definition: File.h:41
constexpr FileOpenFlags eFO_CreateNewAlways
Definition: Core/FileSystem.h:81
constexpr FileOpenFlags eFO_Append
Definition: Core/FileSystem.h:79
void fileFreeFileSystem()
Definition: Core/FileSystem.h:115
IFS::FileHandle FileHandle
Definition: Core/FileSystem.h:26
int fileSystemFormat()
Format the active file system.
Definition: Core/FileSystem.h:525
constexpr SeekOrigin eSO_FileEnd
Definition: Core/FileSystem.h:38
Definition: Core/FileSystem.h:54
int fileGetSystemInfo(IFS::FileSystem::Info &info)
Get basic file system information.
Definition: Core/FileSystem.h:511
Directory()
Definition: Core/FileSystem.h:69
constexpr ErrorCode FS_OK
Definition: Error.h:128
bool fileIsEOF(FileHandle file)
Check if at end of file.
Definition: Core/FileSystem.h:207
constexpr FileOpenFlags eFO_ReadWrite
Definition: Core/FileSystem.h:77
constexpr FileOpenFlags eFO_CreateIfNotExist
Definition: Core/FileSystem.h:78
OpenFlag
Definition: OpenFlags.h:42
static constexpr OpenFlags Create
Definition: File.h:38
int fileSystemCheck()
Perform a consistency check/repair on the active file system.
Definition: Core/FileSystem.h:534
static constexpr OpenFlags Truncate
Definition: File.h:40
virtual String getErrorString(int err)
get the text for a returned error code
Definition: IFileSystem.h:208