Просмотр исходного кода

fix: vfs中fseek的实现,应该返回0或者-1,而非新offset的值

Wendal Chen 4 лет назад
Родитель
Сommit
c5362f91b3
4 измененных файлов с 7 добавлено и 4 удалено
  1. 1 1
      luat/vfs/luat_fs_fatfs.c
  2. 1 1
      luat/vfs/luat_fs_lfs2.c
  3. 4 1
      luat/vfs/luat_fs_luadb.c
  4. 1 1
      luat/vfs/luat_vfs.c

+ 1 - 1
luat/vfs/luat_fs_fatfs.c

@@ -72,7 +72,7 @@ int luat_vfs_fatfs_fseek(void* userdata, FILE* stream, long int offset, int orig
     }
     FRESULT ret = f_lseek(fp, npos);
     if (ret == FR_OK) {
-        return f_tell(fp);
+        return 0;
     }
     return -1;
 }

+ 1 - 1
luat/vfs/luat_fs_lfs2.c

@@ -62,7 +62,7 @@ int luat_vfs_lfs2_fseek(void* userdata, FILE* stream, long int offset, int origi
     lfs_t* fs = (lfs_t*)userdata;
     lfs_file_t* file = (lfs_file_t*)stream;
     int ret = lfs_file_seek(fs, file, offset, origin);
-    return ret < 0 ? -1 : ret;
+    return ret < 0 ? -1 : 0;
 }
 
 int luat_vfs_lfs2_ftell(void* userdata, FILE* stream) {

+ 4 - 1
luat/vfs/luat_fs_luadb.c

@@ -317,7 +317,10 @@ FILE* luat_vfs_luadb_fopen(void* userdata, const char *filename, const char *mod
 
 
 int luat_vfs_luadb_fseek(void* userdata, FILE* stream, long int offset, int origin) {
-    return luat_luadb_lseek((luadb_fs_t*)userdata, (int)stream, offset, origin);
+    int ret = luat_luadb_lseek((luadb_fs_t*)userdata, (int)stream, offset, origin);
+    if (ret < 0)
+        return -1;
+    return 0;
 }
 
 int luat_vfs_luadb_ftell(void* userdata, FILE* stream) {

+ 1 - 1
luat/vfs/luat_vfs.c

@@ -237,7 +237,7 @@ int luat_fs_fseek(FILE* stream, long int offset, int origin) {
     //LLOGD("call %s %d","fseek", ((int)stream) - 1);
     luat_vfs_fd_t* fd = getfd(stream);
     if (fd == NULL || fd->fsMount->fs->fopts.fseek == NULL) 
-        return 0;
+        return -1;
     return fd->fsMount->fs->fopts.fseek(fd->fsMount->userdata, fd->fd, offset, origin);
 }