浏览代码

update uosmod

SummerGift 8 年之前
父节点
当前提交
f3715a6e52
共有 4 个文件被更改,包括 23 次插入24 次删除
  1. 13 19
      port/moduos.c
  2. 9 3
      port/moduos_file.c
  3. 0 1
      port/moduos_file.h
  4. 1 1
      port/mpconfigport.h

+ 13 - 19
port/moduos.c

@@ -39,7 +39,7 @@
 #include "portmodules.h"
 
 #if !MICROPY_VFS
-#if MICROPY_MODUOS_FILE
+#if MICROPY_PY_MODUOS_FILE
 #include "moduos_file.h"
 #endif
 #else
@@ -75,10 +75,6 @@ STATIC mp_obj_t os_uname(void) {
 STATIC MP_DEFINE_CONST_FUN_OBJ_0(os_uname_obj, os_uname);
 
 STATIC mp_obj_t os_sync(void) {
-    for (mp_vfs_mount_t *vfs = MP_STATE_VM(vfs_mount_table); vfs != NULL; vfs = vfs->next) {
-        // this assumes that vfs->obj is fs_user_mount_t with block device functions
-        disk_ioctl(MP_OBJ_TO_PTR(vfs->obj), CTRL_SYNC, NULL);
-    }
     return mp_const_none;
 }
 MP_DEFINE_CONST_FUN_OBJ_0(mod_os_sync_obj, os_sync);
@@ -102,18 +98,16 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(os_urandom_obj, os_urandom);
 STATIC const mp_rom_map_elem_t os_module_globals_table[] = {
     { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_uos) },
     { MP_ROM_QSTR(MP_QSTR_uname), MP_ROM_PTR(&os_uname_obj) },
-    { MP_ROM_QSTR(MP_QSTR_chdir), MP_ROM_PTR(&mp_vfs_chdir_obj) },
-    { MP_ROM_QSTR(MP_QSTR_getcwd), MP_ROM_PTR(&mp_vfs_getcwd_obj) },
-    //{ MP_ROM_QSTR(MP_QSTR_ilistdir), MP_ROM_PTR(&mp_vfs_ilistdir_obj) },
-    { MP_ROM_QSTR(MP_QSTR_listdir), MP_ROM_PTR(&mp_vfs_listdir_obj) },
-    { MP_ROM_QSTR(MP_QSTR_mkdir), MP_ROM_PTR(&mp_vfs_mkdir_obj) },
-    { MP_ROM_QSTR(MP_QSTR_remove), MP_ROM_PTR(&mp_vfs_remove_obj) },
-    //{ MP_ROM_QSTR(MP_QSTR_rename),MP_ROM_PTR(&mp_vfs_rename_obj)},
-    { MP_ROM_QSTR(MP_QSTR_rmdir), MP_ROM_PTR(&mp_vfs_rmdir_obj) },
-    { MP_ROM_QSTR(MP_QSTR_stat), MP_ROM_PTR(&mp_vfs_stat_obj) },
-    //{ MP_ROM_QSTR(MP_QSTR_statvfs), MP_ROM_PTR(&mp_vfs_statvfs_obj) },
-    { MP_ROM_QSTR(MP_QSTR_unlink), MP_ROM_PTR(&mp_vfs_remove_obj) },     // unlink aliases to remove
-    //{ MP_ROM_QSTR(MP_QSTR_sync), MP_ROM_PTR(&mod_os_sync_obj) },
+    { MP_ROM_QSTR(MP_QSTR_chdir), MP_ROM_PTR(&mp_posix_chdir_obj) },
+    { MP_ROM_QSTR(MP_QSTR_getcwd), MP_ROM_PTR(&mp_posix_getcwd_obj) },
+    { MP_ROM_QSTR(MP_QSTR_listdir), MP_ROM_PTR(&mp_posix_listdir_obj) },
+    { MP_ROM_QSTR(MP_QSTR_mkdir), MP_ROM_PTR(&mp_posix_mkdir_obj) },
+    { MP_ROM_QSTR(MP_QSTR_remove), MP_ROM_PTR(&mp_posix_remove_obj) },
+    { MP_ROM_QSTR(MP_QSTR_rename),MP_ROM_PTR(&mp_posix_rename_obj)},
+    { MP_ROM_QSTR(MP_QSTR_rmdir), MP_ROM_PTR(&mp_posix_rmdir_obj) },
+    { MP_ROM_QSTR(MP_QSTR_stat), MP_ROM_PTR(&mp_posix_stat_obj) },
+    { MP_ROM_QSTR(MP_QSTR_unlink), MP_ROM_PTR(&mp_posix_remove_obj) },     // unlink aliases to remove
+    { MP_ROM_QSTR(MP_QSTR_sync), MP_ROM_PTR(&mod_os_sync_obj) },
 
     /// \constant sep - separation character used in paths
     //{ MP_ROM_QSTR(MP_QSTR_sep), MP_ROM_QSTR(MP_QSTR__slash_) },
@@ -124,8 +118,8 @@ STATIC const mp_rom_map_elem_t os_module_globals_table[] = {
 
     // these are MicroPython extensions
     //{ MP_ROM_QSTR(MP_QSTR_dupterm), MP_ROM_PTR(&mp_uos_dupterm_obj) },
-    { MP_ROM_QSTR(MP_QSTR_mount), MP_ROM_PTR(&mp_vfs_mount_obj) },
-    { MP_ROM_QSTR(MP_QSTR_umount), MP_ROM_PTR(&mp_vfs_umount_obj) },
+    { MP_ROM_QSTR(MP_QSTR_mount), MP_ROM_PTR(&mp_posix_mount_obj) },
+    { MP_ROM_QSTR(MP_QSTR_umount), MP_ROM_PTR(&mp_posix_umount_obj) },
     //{ MP_ROM_QSTR(MP_QSTR_VfsFat), MP_ROM_PTR(&mp_fat_vfs_type) },
 };
 

+ 9 - 3
port/moduos_file.c

@@ -32,7 +32,7 @@
 #include "py/mperrno.h"
 #include "moduos_file.h"
 
-#if MICROPY_MODUOS_FILE
+#if MICROPY_PY_MODUOS_FILE
 
 mp_obj_t mp_posix_mount(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
 
@@ -99,12 +99,18 @@ mp_obj_t mp_posix_remove(uint n_args, const mp_obj_t *arg) {
         //rt_kprintf("Remove %s.\n", mp_obj_str_get_str(arg[index]));
         rm(mp_obj_str_get_str(arg[index]));
     }
-    // TODO
+    // TODO  recursive deletion
     return mp_const_none;
 }
 MP_DEFINE_CONST_FUN_OBJ_VAR(mp_posix_remove_obj, 0, mp_posix_remove);
 
 mp_obj_t mp_posix_rename(mp_obj_t old_path_in, mp_obj_t new_path_in) {
+    char *old_path = mp_obj_str_get_str(old_path_in);
+    char *new_path = mp_obj_str_get_str(new_path_in);
+    int res = rename(old_path, new_path);
+    if (res != 0) {
+        mp_raise_OSError(MP_EPERM);
+    }
     return mp_const_none;
 }
 MP_DEFINE_CONST_FUN_OBJ_2(mp_posix_rename_obj, mp_posix_rename);
@@ -120,7 +126,7 @@ mp_obj_t mp_posix_rmdir(uint n_args, const mp_obj_t *arg) {
         //rt_kprintf("Remove %s.\n", mp_obj_str_get_str(arg[index]));
         rmdir(mp_obj_str_get_str(arg[index]));
     }
-    // TODO
+    // TODO  recursive deletion
     return mp_const_none;
 }
 MP_DEFINE_CONST_FUN_OBJ_VAR(mp_posix_rmdir_obj, 0, mp_posix_rmdir);

+ 0 - 1
port/moduos_file.h

@@ -45,7 +45,6 @@ mp_obj_t mp_posix_umount(mp_obj_t mnt_in);
 mp_obj_t mp_posix_open(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args);
 mp_obj_t mp_posix_chdir(mp_obj_t path_in);
 mp_obj_t mp_posix_getcwd(void);
-
 mp_obj_t mp_posix_listdir(size_t n_args, const mp_obj_t *args);
 mp_obj_t mp_posix_mkdir(mp_obj_t path_in);
 mp_obj_t mp_posix_remove(uint n_args, const mp_obj_t *arg);

+ 1 - 1
port/mpconfigport.h

@@ -123,7 +123,7 @@
 #define MICROPY_PY_OS_DUPTERM       (1)
 #define MICROPY_VFS                 (0)
 #define MICROPY_VFS_FAT             (0)
-#define MICROPY_MODUOS_FILE         (1)
+#define MICROPY_PY_MODUOS_FILE      (1)
 
 
 // extended modules