41 #define FLAG_FILE_CLOSED 0
42 #define FLAG_FILE_OPEN 1
47 #ifdef CFS_RAM_CONF_SIZE
48 #define CFS_RAM_SIZE CFS_RAM_CONF_SIZE
50 #define CFS_RAM_SIZE 4096
53 static struct filestate file;
54 static char filemem[CFS_RAM_SIZE];
60 if(file.flag == FLAG_FILE_CLOSED) {
61 file.flag = FLAG_FILE_OPEN;
67 file.fileptr = file.filesize;
82 file.flag = FLAG_FILE_CLOSED;
86 cfs_read(
int f,
void *buf,
unsigned int len)
88 if(file.fileptr + len >
sizeof(filemem)) {
89 len =
sizeof(filemem) - file.fileptr;
92 if(file.fileptr + len > file.filesize) {
93 len = file.filesize - file.fileptr;
97 memcpy(buf, &filemem[file.fileptr], len);
106 cfs_write(
int f,
const void *buf,
unsigned int len)
108 if(file.fileptr >=
sizeof(filemem)) {
111 if(file.fileptr + len >
sizeof(filemem)) {
112 len =
sizeof(filemem) - file.fileptr;
115 if(file.fileptr + len > file.filesize) {
117 file.filesize = file.fileptr + len;
121 memcpy(&filemem[file.fileptr], buf, len);
133 if(o > file.filesize) {
139 return (cfs_offset_t)-1;
int cfs_open(const char *name, int flags)
Open a file.
cfs_offset_t cfs_seek(int fd, cfs_offset_t offset, int whence)
Seek to a specified position in an open file.
#define CFS_WRITE
Specify that cfs_open() should open a file for writing.
#define CFS_READ
Specify that cfs_open() should open a file for reading.
int cfs_readdir(struct cfs_dir *dir, struct cfs_dirent *record)
Read a directory entry.
#define CFS_APPEND
Specify that cfs_open() should append written data to the file rather than overwriting it...
int cfs_remove(const char *name)
Remove a file.
void cfs_closedir(struct cfs_dir *dir)
Close a directory opened with cfs_opendir().
int cfs_opendir(struct cfs_dir *dir, const char *name)
Open a directory for reading directory entries.
#define CFS_SEEK_SET
Specify that cfs_seek() should compute the offset from the beginning of the file. ...
void cfs_close(int fd)
Close an open file.