|
|
@@ -26,6 +26,7 @@ static ram_file_t* files[RAM_FILE_MAX];
|
|
|
#ifdef LUAT_USE_FS_VFS
|
|
|
|
|
|
FILE* luat_vfs_ram_fopen(void* userdata, const char *filename, const char *mode) {
|
|
|
+ (void)userdata;
|
|
|
if (filename == NULL || mode == NULL || strlen(filename) > 31)
|
|
|
return NULL;
|
|
|
// 读文件
|
|
|
@@ -116,6 +117,7 @@ FILE* luat_vfs_ram_fopen(void* userdata, const char *filename, const char *mode)
|
|
|
}
|
|
|
|
|
|
int luat_vfs_ram_getc(void* userdata, FILE* stream) {
|
|
|
+ (void)userdata;
|
|
|
//LLOGD("getc %p %p", userdata, stream);
|
|
|
luat_raw_fd_t* fd = (luat_raw_fd_t*)stream;
|
|
|
//LLOGD("getc %p %p %d %d", userdata, stream, fd->offset, fd->size);
|
|
|
@@ -129,6 +131,7 @@ int luat_vfs_ram_getc(void* userdata, FILE* stream) {
|
|
|
}
|
|
|
|
|
|
int luat_vfs_ram_fseek(void* userdata, FILE* stream, long int offset, int origin) {
|
|
|
+ (void)userdata;
|
|
|
//LLOGD("fseek %p %p %d %d", userdata, stream, offset, origin);
|
|
|
luat_raw_fd_t* fd = (luat_raw_fd_t*)stream;
|
|
|
if (origin == SEEK_CUR) {
|
|
|
@@ -146,26 +149,32 @@ int luat_vfs_ram_fseek(void* userdata, FILE* stream, long int offset, int origin
|
|
|
}
|
|
|
|
|
|
int luat_vfs_ram_ftell(void* userdata, FILE* stream) {
|
|
|
+ (void)userdata;
|
|
|
luat_raw_fd_t* fd = (luat_raw_fd_t*)stream;
|
|
|
//LLOGD("tell %p %p %d %d", userdata, stream, fd->size, fd->offset);
|
|
|
return fd->offset;
|
|
|
}
|
|
|
|
|
|
int luat_vfs_ram_fclose(void* userdata, FILE* stream) {
|
|
|
+ (void)userdata;
|
|
|
luat_raw_fd_t* fd = (luat_raw_fd_t*)stream;
|
|
|
//LLOGD("fclose %p %p %d %d", userdata, stream, fd->size, fd->offset);
|
|
|
luat_heap_free(fd);
|
|
|
return 0;
|
|
|
}
|
|
|
int luat_vfs_ram_feof(void* userdata, FILE* stream) {
|
|
|
+ (void)userdata;
|
|
|
luat_raw_fd_t* fd = (luat_raw_fd_t*)stream;
|
|
|
//LLOGD("feof %p %p %d %d", userdata, stream, fd->size, fd->offset);
|
|
|
return fd->offset >= fd->file->size ? 1 : 0;
|
|
|
}
|
|
|
int luat_vfs_ram_ferror(void* userdata, FILE *stream) {
|
|
|
+ (void)userdata;
|
|
|
+ (void)stream;
|
|
|
return 0;
|
|
|
}
|
|
|
size_t luat_vfs_ram_fread(void* userdata, void *ptr, size_t size, size_t nmemb, FILE *stream) {
|
|
|
+ (void)userdata;
|
|
|
luat_raw_fd_t* fd = (luat_raw_fd_t*)stream;
|
|
|
//LLOGD("fread %p %p %d %d", userdata, stream, fd->size, fd->offset);
|
|
|
//LLOGD("fread2 %p %p %d %d", userdata, stream, size * nmemb, fd->offset);
|
|
|
@@ -178,6 +187,7 @@ size_t luat_vfs_ram_fread(void* userdata, void *ptr, size_t size, size_t nmemb,
|
|
|
return read_size;
|
|
|
}
|
|
|
size_t luat_vfs_ram_fwrite(void* userdata, const void *ptr, size_t size, size_t nmemb, FILE *stream) {
|
|
|
+ (void)userdata;
|
|
|
luat_raw_fd_t* fd = (luat_raw_fd_t*)stream;
|
|
|
size_t write_size = size*nmemb;
|
|
|
|
|
|
@@ -195,6 +205,7 @@ size_t luat_vfs_ram_fwrite(void* userdata, const void *ptr, size_t size, size_t
|
|
|
return write_size;
|
|
|
}
|
|
|
int luat_vfs_ram_remove(void* userdata, const char *filename) {
|
|
|
+ (void)userdata;
|
|
|
for (size_t i = 0; i < RAM_FILE_MAX; i++)
|
|
|
{
|
|
|
if (files[i] == NULL)
|
|
|
@@ -207,6 +218,7 @@ int luat_vfs_ram_remove(void* userdata, const char *filename) {
|
|
|
return 0;
|
|
|
}
|
|
|
int luat_vfs_ram_rename(void* userdata, const char *old_filename, const char *new_filename) {
|
|
|
+ (void)userdata;
|
|
|
if (old_filename == NULL || new_filename == NULL)
|
|
|
return -1;
|
|
|
if (strlen(old_filename) > 31 || strlen(new_filename) > 31)
|
|
|
@@ -223,6 +235,7 @@ int luat_vfs_ram_rename(void* userdata, const char *old_filename, const char *ne
|
|
|
return 0;
|
|
|
}
|
|
|
int luat_vfs_ram_fexist(void* userdata, const char *filename) {
|
|
|
+ (void)userdata;
|
|
|
for (size_t i = 0; i < RAM_FILE_MAX; i++)
|
|
|
{
|
|
|
if (files[i] == NULL)
|
|
|
@@ -235,32 +248,58 @@ int luat_vfs_ram_fexist(void* userdata, const char *filename) {
|
|
|
}
|
|
|
|
|
|
size_t luat_vfs_ram_fsize(void* userdata, const char *filename) {
|
|
|
- luat_raw_fd_t *fd = (luat_raw_fd_t*)(userdata);
|
|
|
+ (void)userdata;
|
|
|
+ for (size_t i = 0; i < RAM_FILE_MAX; i++)
|
|
|
+ {
|
|
|
+ if (files[i] == NULL)
|
|
|
+ continue;
|
|
|
+ if (!strcmp(filename, files[i]->name)) {
|
|
|
+ return files[i]->size;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+void* luat_vfs_ram_mmap(void* userdata, FILE *stream) {
|
|
|
+ (void)userdata;
|
|
|
+ luat_raw_fd_t *fd = (luat_raw_fd_t*)(stream);
|
|
|
//LLOGD("fsize %p %p %d %d", userdata, fd);
|
|
|
- return fd->file->size;
|
|
|
+ return fd->file->ptr;
|
|
|
}
|
|
|
|
|
|
int luat_vfs_ram_mkfs(void* userdata, luat_fs_conf_t *conf) {
|
|
|
+ (void)userdata;
|
|
|
+ (void)conf;
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
int luat_vfs_ram_mount(void** userdata, luat_fs_conf_t *conf) {
|
|
|
+ (void)userdata;
|
|
|
+ (void)conf;
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
int luat_vfs_ram_umount(void* userdata, luat_fs_conf_t *conf) {
|
|
|
+ (void)userdata;
|
|
|
+ (void)conf;
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
int luat_vfs_ram_mkdir(void* userdata, char const* _DirName) {
|
|
|
+ (void)userdata;
|
|
|
+ (void)_DirName;
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
int luat_vfs_ram_rmdir(void* userdata, char const* _DirName) {
|
|
|
+ (void)userdata;
|
|
|
+ (void)_DirName;
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
int luat_vfs_ram_lsdir(void* userdata, char const* _DirName, luat_fs_dirent_t* ents, size_t offset, size_t len) {
|
|
|
+ (void)userdata;
|
|
|
+ (void)_DirName;
|
|
|
size_t count = 0;
|
|
|
for (size_t i = 0; i < RAM_FILE_MAX; i++)
|
|
|
{
|
|
|
@@ -280,6 +319,8 @@ int luat_vfs_ram_lsdir(void* userdata, char const* _DirName, luat_fs_dirent_t* e
|
|
|
}
|
|
|
|
|
|
int luat_vfs_ram_info(void* userdata, const char* path, luat_fs_info_t *conf) {
|
|
|
+ (void)userdata;
|
|
|
+ (void)path;
|
|
|
memcpy(conf->filesystem, "ram", strlen("ram")+1);
|
|
|
size_t ftotal = 0;
|
|
|
for (size_t i = 0; i < RAM_FILE_MAX; i++)
|