mirror of
https://github.com/CraftyBoss/SuperMarioOdysseyOnline.git
synced 2024-11-28 14:13:04 +00:00
92 lines
2.3 KiB
C
92 lines
2.3 KiB
C
|
#pragma once
|
||
|
|
||
|
#include "result.h"
|
||
|
|
||
|
namespace nn { namespace fs {
|
||
|
|
||
|
const s32 PathLengthMax = 0x300;
|
||
|
|
||
|
struct FileHandle
|
||
|
{
|
||
|
u32 handle;
|
||
|
};
|
||
|
|
||
|
struct DirectoryHandle
|
||
|
{
|
||
|
u32 handle;
|
||
|
};
|
||
|
|
||
|
struct DirectoryEntry
|
||
|
{
|
||
|
char name[PathLengthMax+1]; // 0
|
||
|
char _301[3]; // 301
|
||
|
u8 type; // 304
|
||
|
s64 fileSize; // 308
|
||
|
};
|
||
|
|
||
|
enum OpenMode
|
||
|
{
|
||
|
OpenMode_Read = 1 << 0,
|
||
|
OpenMode_Write = 1 << 1,
|
||
|
OpenMode_ReadWrite = OpenMode_Read | OpenMode_Write
|
||
|
};
|
||
|
|
||
|
enum DirectoryMode
|
||
|
{
|
||
|
DirectoryMode_Directories = 1 << 0,
|
||
|
DirectoryMode_Files = 1 << 1,
|
||
|
DirectoryMode_DirectoriesFiles = DirectoryMode_Directories | DirectoryMode_Files
|
||
|
};
|
||
|
|
||
|
enum DirectoryEntryType
|
||
|
{
|
||
|
DirectoryEntryType_Directory = 0,
|
||
|
DirectoryEntryType_File = 1
|
||
|
};
|
||
|
|
||
|
struct ReadOption
|
||
|
{
|
||
|
ReadOption(u32 flags = 0) : flags(flags) { }
|
||
|
u32 flags;
|
||
|
};
|
||
|
|
||
|
struct WriteOption
|
||
|
{
|
||
|
enum Flags
|
||
|
{
|
||
|
Flush = 1
|
||
|
};
|
||
|
|
||
|
WriteOption(u32 flags = 0) : flags(flags) { }
|
||
|
u32 flags;
|
||
|
};
|
||
|
|
||
|
|
||
|
Result OpenFile(FileHandle* out, const char* path, s32 mode);
|
||
|
void CloseFile(FileHandle handle);
|
||
|
Result ReadFile(FileHandle handle, s64 offset, void* buffer, u32 size);
|
||
|
Result ReadFile(FileHandle handle, s64 offset, void* buffer, u32 size, const ReadOption& options);
|
||
|
Result WriteFile(FileHandle handle, s64 offset, const void* buffer, u32 size, const WriteOption& options = WriteOption(0));
|
||
|
Result FlushFile(FileHandle handle);
|
||
|
Result GetFileSize(s64* out, FileHandle handle);
|
||
|
Result SetFileSize(FileHandle handle, s64 size);
|
||
|
|
||
|
Result CreateFile(const char* path, s64 size);
|
||
|
Result DeleteFile(const char* path);
|
||
|
Result RenameFile(const char* path, const char* newPath);
|
||
|
|
||
|
Result OpenDirectory(DirectoryHandle* out, const char* path, s32 mode);
|
||
|
void CloseDirectory(DirectoryHandle handle);
|
||
|
Result ReadDirectory(s64* out, DirectoryEntry* entries, DirectoryHandle handle, s64 maxEntryCount);
|
||
|
Result GetDirectoryEntryCount(s64* out, DirectoryHandle handle);
|
||
|
|
||
|
Result CreateDirectory(char const* path);
|
||
|
Result DeleteDirectory(const char* path);
|
||
|
Result DeleteDirectoryRecursively(const char* path);
|
||
|
Result RenameDirectory(const char* path, const char* newPath);
|
||
|
|
||
|
Result MountSdCard(const char* mountPoint);
|
||
|
void Unmount(const char* mountPoint);
|
||
|
|
||
|
} }
|