21 #include <spiffs_sming.h> 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 file_t(IFS::Error::NoFileSystem); \ 100 debug_e(
"ERROR: No active file system");
163 return fileSystem->
open(name, flags);
174 return fileSystem->
fopen(stat, flags);
184 return fileSystem->
close(file);
196 return fileSystem->
write(file, data, size);
217 return fileSystem->
read(file, data, size);
229 return fileSystem->
lseek(file, offset, origin);
239 return fileSystem ? (fileSystem->
eof(file) != 0) :
true;
249 return fileSystem->
tell(file);
259 return fileSystem->
flush(file);
269 if(fileSystem ==
nullptr) {
283 template <
typename TFileName>
inline int fileSetContent(
const TFileName& fileName,
const char* content,
size_t length)
286 return fileSystem->setContent(fileName, content, length);
289 template <
typename TFileName,
typename TContent>
inline int fileSetContent(
const TFileName& fileName, TContent content)
292 return fileSystem->setContent(fileName, content);
299 template <
typename TFileName>
inline uint32_t
fileGetSize(
const TFileName& fileName)
302 return fileSystem ? fileSystem->getSize(fileName) : 0;
315 return fileSystem->
ftruncate(file, newSize);
335 template <
typename TFileName>
int fileTruncate(
const TFileName& fileName,
size_t newSize)
338 return fileSystem->truncate(fileName, newSize);
346 inline int fileRename(
const char* oldName,
const char* newName)
349 return fileSystem->
rename(oldName, newName);
374 return fileSystem ? fileSystem->getContent(fileName) :
nullptr;
388 template <
typename TFileName>
inline size_t fileGetContent(
const TFileName& fileName,
char* buffer,
size_t bufSize)
391 return fileSystem ? fileSystem->getContent(fileName, buffer, bufSize) : 0;
394 template <
typename TFileName>
inline size_t fileGetContent(
const TFileName& fileName,
char* buffer)
397 return fileSystem ? fileSystem->getContent(fileName, buffer) : 0;
408 return fileSystem->
stat(fileName, &stat);
424 return fileSystem->
fstat(file, &stat);
434 return fileSystem->
remove(fileName);
449 return fileSystem->
fremove(file);
459 return fileSystem->
stat(fileName,
nullptr) >= 0;
476 return fileSystem->
opendir(dirName, dir);
497 return fileSystem->
fopendir(&stat, dir);
518 return fileSystem->
readdir(dir, stat);
537 return fileSystem->
getinfo(info);
551 return fileSystem->
format();
560 return fileSystem->
check();
571 return fileSystem->
setacl(file, acl);
583 return fileSystem->
setattr(filename, attr);
600 return fileSystem->
settime(file, mtime);
Definition: Core/FileSystem.h:40
Basic information about filing system.
Definition: IFileSystem.h:123
version of Stat with integrated name buffer
Definition: Stat.h:97
#define CHECK_FS(_method)
Definition: Core/FileSystem.h:86
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:427
struct FileDir * DirHandle
Definition: IFileSystem.h:65
IFS::FileHandle file_t
<
Definition: Core/FileSystem.h:24
virtual int setacl(FileHandle file, const ACL &acl)=0
Set access control information for file.
virtual int close(FileHandle file)=0
close an open file
int fileTouch(file_t file)
Update file modification time.
Definition: Core/FileSystem.h:203
FileAttribute
Definition: FileAttributes.h:45
BitSet< uint8_t, OpenFlag, size_t(OpenFlag::MAX)> OpenFlags
Definition: OpenFlags.h:49
const char * c_str() const
Get a constant (un-modifiable) pointer to String content.
Definition: WString.h:641
IFS::IFileSystem * activeFileSystem
Global file system instance.
Directory stream class.
Definition: Core/FileSystem.h:66
int fileClose(file_t file)
Clode file.
Definition: Core/FileSystem.h:181
virtual int setattr(const char *path, FileAttributes attr)=0
Set file attributes.
virtual int eof(FileHandle file)=0
determine if current file position is at end of file
int fileGetSystemInfo(IFS::IFileSystem::Info &info)
Get basic file system information.
Definition: Core/FileSystem.h:534
virtual int rename(const char *oldpath, const char *newpath)=0
rename a file
static constexpr OpenFlags Append
Definition: File.h:51
Installable File System base class.
Definition: IFileSystem.h:100
virtual FileHandle open(const char *path, OpenFlags flags)=0
open a file by name/path
int fileRead(file_t file, void *data, size_t size)
Read from file.
Definition: Core/FileSystem.h:214
int fileTell(file_t file)
Get position in file.
Definition: Core/FileSystem.h:246
IFS::IFileSystem::Type fileSystemType()
Get the type of file system currently mounted (if any)
static constexpr OpenFlags ReadWrite
Definition: File.h:49
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:456
virtual int opendir(const char *path, DirHandle &dir)=0
open a directory for reading
static constexpr OpenFlags ReadOnly
Definition: File.h:47
int fileRename(const char *oldName, const char *newName)
Rename file.
Definition: Core/FileSystem.h:346
String fileGetErrorString(int err)
get the text for a returned error code
Definition: Core/FileSystem.h:266
String fileGetContent(const TFileName &fileName)
Read content of a file.
Definition: Core/FileSystem.h:371
BitSet< uint8_t, FileAttribute, size_t(FileAttribute::MAX)> FileAttributes
File attributes are stored as a bitmask.
Definition: FileAttributes.h:55
Wraps up all file access methods.
Definition: File.h:41
int fileRewindDir(DirHandle dir)
Rewind to start of directory entries.
Definition: Core/FileSystem.h:525
int fileTruncate(file_t file, size_t newSize)
Truncate (reduce) the size of an open file.
Definition: Core/FileSystem.h:312
constexpr SeekOrigin eSO_FileStart
Definition: Core/FileSystem.h:36
The String class.
Definition: WString.h:136
int fileCloseDir(DirHandle dir)
close a directory object
Definition: Core/FileSystem.h:504
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
file_t fileOpen(const char *name, FileOpenFlags flags=File::ReadOnly)
Open file.
Definition: Core/FileSystem.h:160
int fileSetTime(file_t file, time_t mtime)
Set access control information for file.
Definition: Core/FileSystem.h:597
bool fwfs_mount()
Mount the first available FWFS volume.
bool hyfs_mount()
Mount the first available FWFS and SPIFFS partitions as a hybrid filesystem.
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:48
uint32_t fileGetSize(const TFileName &fileName)
Get size of file.
Definition: Core/FileSystem.h:299
int fileSetAttr(const char *filename, FileAttributes attr)
Definition: Core/FileSystem.h:580
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:473
int fileSeek(file_t file, int offset, SeekOrigin origin)
Position file cursor.
Definition: Core/FileSystem.h:226
int16_t FileHandle
File handle.
Definition: Stat.h:39
Type
Definition: IFileSystem.h:103
Definition: DirectoryTemplate.h:36
SEEK_CUR: Current position in file.
bool fileIsEOF(file_t file)
Check if at end of file.
Definition: Core/FileSystem.h:236
virtual int read(FileHandle file, void *data, size_t size)=0
read content from a file and advance cursor
virtual int settime(FileHandle file, time_t mtime)=0
Set modificatino tiem for file.
#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:283
File()
Definition: Core/FileSystem.h:57
int fileStats(const char *fileName, FileStat &stat)
Get file statistics.
Definition: Core/FileSystem.h:405
Vector< String > fileList()
Get list of files on file system.
bool spiffs_mount()
Mount the first available SPIFFS volume.
IFS::FileSystem * getFileSystem()
Get the currently active file system, if any.
Definition: Core/FileSystem.h:97
IFS::DirHandle DirHandle
Definition: Core/FileSystem.h:27
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
virtual FileHandle fopen(const Stat &stat, OpenFlags flags)=0
open a file from it's stat structure
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:484
virtual int format()=0
format the filing system
int fileWrite(file_t file, const void *data, size_t size)
Write to file.
Definition: Core/FileSystem.h:193
Represents a flash partition.
Definition: Partition.h:77
int fileDelete(const char *fileName)
Delete file.
Definition: Core/FileSystem.h:431
int fileReadDir(DirHandle dir, FileStat &stat)
Read a directory entry.
Definition: Core/FileSystem.h:515
void fileSetFileSystem(IFS::IFileSystem *fileSystem)
Sets the currently active file system.
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:53
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:548
constexpr SeekOrigin eSO_FileEnd
Definition: Core/FileSystem.h:38
Definition: Core/FileSystem.h:54
virtual int fopendir(const Stat *stat, DirHandle &dir)
open a directory for reading
Definition: IFileSystem.h:203
Directory()
Definition: Core/FileSystem.h:69
constexpr ErrorCode FS_OK
Definition: Error.h:130
constexpr FileOpenFlags eFO_ReadWrite
Definition: Core/FileSystem.h:77
constexpr FileOpenFlags eFO_CreateIfNotExist
Definition: Core/FileSystem.h:78
int fileSetACL(file_t file, const IFS::ACL &acl)
Set access control information.
Definition: Core/FileSystem.h:568
int fileFlush(file_t file)
Flush pending writes.
Definition: Core/FileSystem.h:256
OpenFlag
Definition: OpenFlags.h:41
static constexpr OpenFlags Create
Definition: File.h:50
int fileSystemCheck()
Perform a consistency check/repair on the active file system.
Definition: Core/FileSystem.h:557
static constexpr OpenFlags Truncate
Definition: File.h:52
virtual String getErrorString(int err)
get the text for a returned error code
Definition: IFileSystem.h:184