72#define cstr(x) __attribute__((null_terminated_string_arg(x)))
73#define ro(...) __attribute__((access(read_only, __VA_ARGS__)))
74#define rw(...) __attribute__((access(read_write, __VA_ARGS__)))
75#define wo(...) __attribute__((access(write_only, __VA_ARGS__)))
83#define wu __attribute__((warn_unused_result))
88typedef uint16_t char_const16_t;
104 FILE_ENAMETOOLONG = -10,
105 FILE_EOUTOFBOUND = -11,
106 FILE_EUNFORMAT = -12,
109 FILE_EISDIRECTORY = -15,
114 FILE_ENOTEMPTY = -20,
115 FILE_ECLUSTERSIZEMISMATCH = -40,
152static inline __attribute__((pure)) uint16_t
constexpr File_StatDateYear(uint16_t date) {
153 return ((date >> 9) & 0x7F) + 1980;
162static inline __attribute__((pure)) uint16_t
constexpr File_StatDateMonth(uint16_t date) {
163 return (date >> 5) & 0xF;
172static inline __attribute__((pure)) uint16_t
constexpr File_StatDateDay(uint16_t date) {
182static inline __attribute__((pure)) uint16_t
constexpr File_StatTimeHour(uint16_t time) {
183 return (time >> 11) & 0x1F;
192static inline __attribute__((pure)) uint16_t
constexpr File_StatTimeMinute(uint16_t time) {
193 return (time >> 5) & 0x3F;
204static inline __attribute__((pure)) uint16_t
constexpr File_StatTimeSecond(uint16_t time) {
205 return (time & 0x1F) * 2;
319struct __attribute__((packed)) File_FindInfo {
325 EntryTypeDirectory = 0x5
376extern enum File_Error (*
File_FindFirst)(
const char_const16_t *path,
int *findHandle, char_const16_t *name,
struct File_FindInfo *findInfoBuf) wu cstr(1) ro(1) wo(2) wo(3) wo(4);
387extern enum
File_Error (*
File_FindNext)(
int findHandle, char_const16_t *name, struct File_FindInfo *findInfoBuf) wu wo(2) wo(3);
440extern
int (*
File_Open)(const
char *path,
int flags) wu cstr(1) ro(1);
454extern
int (*
File_Read)(
int fd,
void *buf,
int count) wu wo(2, 3);
471extern enum
File_Error (*
File_Rename)(const
char *oldPath, const
char *newPath) wu cstr(1) cstr(2) ro(1) ro(2);
491extern
int (*
File_Write)(
int fd, const
void *buf,
int count) wu ro(2, 3);
enum File_Error(* File_Rename)(const char *oldPath, const char *newPath) wu cstr(1) cstr(2) ro(1) ro(2)
File_Whence
Definition file.h:122
@ FILE_SEEK_CUR
Set the file offset to the current position, plus offset bytes.
Definition file.h:126
@ FILE_SEEK_SET
Set the file offset to offset.
Definition file.h:124
@ FILE_SEEK_END
Set the file offset to the end of the file, plus offset bytes.
Definition file.h:128
File_Error
Definition file.h:93
enum File_Error(* File_FindNext)(int findHandle, char_const16_t *name, struct File_FindInfo *findInfoBuf) wu wo(2) wo(3)
File_Open
Definition file.h:135
@ FILE_OPEN_READ
Open the file as readable.
Definition file.h:137
@ FILE_OPEN_CREATE
Create the file, if it does not already exist.
Definition file.h:141
@ FILE_OPEN_WRITE
Open the file as writable.
Definition file.h:139
@ FILE_OPEN_APPEND
Opens the file with the file offset set to the end of the file.
Definition file.h:143
enum File_Error(* File_Mkdir)(const char *path) wu cstr(1) ro(1)
enum File_Error(* File_FindClose)(int findHandle)
enum File_Error(* File_FindFirst)(const char_const16_t *path, int *findHandle, char_const16_t *name, struct File_FindInfo *findInfoBuf) wu cstr(1) ro(1) wo(2) wo(3) wo(4)
int(* File_Lseek)(int fd, int offset, enum File_Whence whence) wu
enum File_Error(* File_Close)(int fd)
enum File_Error(* File_Fstat)(int fd, struct File_Stat *buf) wu wo(2)
int(*) enum File_Error(* File_Remove)(const char *path) cstr(1) ro(1)
enum File_Error(* File_GetAddr)(int fd, int offset, const void **addr) wu wo(3)
int(* File_Read)(int fd, void *buf, int count) wu wo(2
int(* File_Write)(int fd, const void *buf, int count) wu ro(2
uint16_t lastModifiedTime
Definition file.h:304
uint16_t lastModifiedDate
Definition file.h:298
uint16_t lastAccessedDate
Definition file.h:312
uint32_t fileSize
Definition file.h:280
uint16_t creationTime
Definition file.h:292
uint16_t creationDate
Definition file.h:286