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

fix: air105使用lfs无法创建目录和通过io.writeFile写入文件. 原因是lfs2对接vfs的代码写错了

https://gitee.com/openLuat/LuatOS/issues/I6040J
Wendal Chen 3 лет назад
Родитель
Сommit
eb046f880c
1 измененных файлов с 9 добавлено и 5 удалено
  1. 9 5
      luat/vfs/luat_fs_lfs2.c

+ 9 - 5
luat/vfs/luat_fs_lfs2.c

@@ -25,13 +25,13 @@ FILE* luat_vfs_lfs2_fopen(void* userdata, const char *filename, const char *mode
 "w+": 更新模式,所有之前的数据都删除;
 "a+": 追加更新模式,所有之前的数据都保留,只允许在文件尾部做写入。
 */
-    if (!strcmp("r+", mode) || !strcmp("r+b", mode)) {
+    if (!strcmp("r+", mode) || !strcmp("r+b", mode) || !strcmp("rb+", mode)) {
         flag = LFS_O_RDWR | LFS_O_CREAT;
     }
-    else if(!strcmp("w+", mode) || !strcmp("w+b", mode)) {
+    else if(!strcmp("w+", mode) || !strcmp("w+b", mode) || !strcmp("wb+", mode)) {
         flag = LFS_O_RDWR | LFS_O_CREAT | LFS_O_TRUNC;
     }
-    else if(!strcmp("a+", mode) || !strcmp("a+b", mode)) {
+    else if(!strcmp("a+", mode) || !strcmp("a+b", mode) || !strcmp("ab+", mode)) {
         flag = LFS_O_APPEND | LFS_O_CREAT;
     }
     else if(!strcmp("w", mode) || !strcmp("wb", mode)) {
@@ -171,11 +171,15 @@ int luat_vfs_lfs2_umount(void* userdata, luat_fs_conf_t *conf) {
 }
 
 int luat_vfs_lfs2_mkdir(void* userdata, char const* _DirName) {
-    return -1;
+    lfs_t* fs = (lfs_t*)userdata;
+    int ret = lfs_mkdir(fs, _DirName);
+    return ret == LFS_ERR_OK ? 0 : -1;
 }
 
 int luat_vfs_lfs2_rmdir(void* userdata, char const* _DirName) {
-    return -1;
+    lfs_t* fs = (lfs_t*)userdata;
+    int ret = lfs_remove(fs, _DirName);
+    return ret == LFS_ERR_OK ? 0 : -1;
 }
 
 int luat_vfs_lfs2_lsdir(void* userdata, char const* _DirName, luat_fs_dirent_t* ents, size_t offset, size_t len) {