mirror of https://github.com/mgba-emu/mgba.git
40 lines
1.0 KiB
C
40 lines
1.0 KiB
C
#ifndef VFS_H
|
|
#define VFS_H
|
|
|
|
#include "common.h"
|
|
|
|
#include "memory.h"
|
|
|
|
struct VFile {
|
|
bool (*close)(struct VFile* vf);
|
|
off_t (*seek)(struct VFile* vf, off_t offset, int whence);
|
|
ssize_t (*read)(struct VFile* vf, void* buffer, size_t size);
|
|
ssize_t (*readline)(struct VFile* vf, char* buffer, size_t size);
|
|
ssize_t (*write)(struct VFile* vf, void* buffer, size_t size);
|
|
void* (*map)(struct VFile* vf, size_t size, int flags);
|
|
void (*unmap)(struct VFile* vf, void* memory, size_t size);
|
|
void (*truncate)(struct VFile* vf, size_t size);
|
|
};
|
|
|
|
struct VDirEntry {
|
|
const char* (*name)(struct VDirEntry* vde);
|
|
};
|
|
|
|
struct VDir {
|
|
bool (*close)(struct VDir* vd);
|
|
void (*rewind)(struct VDir* vd);
|
|
struct VDirEntry* (*listNext)(struct VDir* vd);
|
|
struct VFile* (*openFile)(struct VDir* vd, const char* name, int mode);
|
|
};
|
|
|
|
struct VFile* VFileOpen(const char* path, int flags);
|
|
struct VFile* VFileFromFD(int fd);
|
|
|
|
struct VDir* VDirOpen(const char* path);
|
|
|
|
#ifdef ENABLE_LIBZIP
|
|
struct VDir* VDirOpenZip(const char* path, int flags);
|
|
#endif
|
|
|
|
#endif
|