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);
 
  493extern enum 
File_Error (*File_Flush)(
int fd) wu;
 
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