libnx/nx/include/switch/services/fs.h

62 lines
1.8 KiB
C

// Copyright 2017 plutoo
// We use wrapped handles for type safety.
typedef struct {
Handle h;
} FsFileSystem;
typedef struct {
Handle h;
} FsFile;
typedef struct {
Handle h;
} FsDir;
typedef struct {
Handle h;
} FsStorage;
typedef enum {
ENTRYTYPE_FILE=0,
ENTRYTYPE_DIR =1
} FsEntryType;
#define FS_MAX_PATH 0x301
Result fsInitialize();
void fsExit(void);
Handle fsGetServiceSession(void);
Result fsMountSdcard(FsFileSystem* out);
// todo: Rest of commands here
// IFileSystem
Result fsFsCreateFile(FsFileSystem* fs, const char* path, size_t size, int flags);
Result fsFsDeleteFile(FsFileSystem* fs, const char* path);
Result fsFsCreateDirectory(FsFileSystem* fs, const char* path);
Result fsFsDeleteDirectory(FsFileSystem* fs, const char* path);
Result fsFsDeleteDirectoryRecursively(FsFileSystem* fs, const char* path);
Result fsFsRenameFile(FsFileSystem* fs, const char* path0, const char* path1);
Result fsFsRenameDirectory(FsFileSystem* fs, const char* path0, const char* path1);
Result fsFsGetEntryType(FsFileSystem* fs, const char* path, FsEntryType* out);
Result fsFsOpenFile(FsFileSystem* fs, const char* path, int flags, FsFile* out);
Result fsFsOpenDirectory(FsFileSystem* fs, const char* path, int flags, FsDir* out);
Result fsFsCommit(FsFileSystem* fs);
Result fsFsGetFreeSpace(FsFileSystem* fs, u64* out);
Result fsFsGetTotalSpace(FsFileSystem* fs, u64* out);
void fsFsClose(FsFileSystem* fs);
// IFile
Result fsFileRead(FsFile* f, u64 off, void* buf, size_t len, size_t* out);
Result fsFileWrite(FsFile* f, u64 off, void* buf, size_t len, size_t* out);
Result fsFileFlush(FsFile* f);
Result fsFileSetSize(FsFile* f, u64 sz);
Result fsFileGetSize(FsFile* f, u64* out);
void fsFileClose(FsFile* f);
// todo: IDirectory
// todo: IStorage