@@ -79,7 +79,9 @@ mp_obj_t vfs_proxy_call(qstr method_name, mp_uint_t n_args, const mp_obj_t *args
7979
8080 mp_obj_t meth [n_args + 2 ];
8181 mp_load_method (MP_STATE_PORT (fs_user_mount )[0 ], method_name , meth );
82- memcpy (meth + 2 , args , n_args * sizeof (* args ));
82+ if (args != NULL ) {
83+ memcpy (meth + 2 , args , n_args * sizeof (* args ));
84+ }
8385 return mp_call_method_n_kw (n_args , 0 , meth );
8486}
8587
@@ -93,6 +95,16 @@ STATIC mp_obj_t os_mkdir(mp_obj_t path_in) {
9395}
9496STATIC MP_DEFINE_CONST_FUN_OBJ_1 (os_mkdir_obj , os_mkdir );
9597
98+ STATIC mp_obj_t os_chdir (mp_obj_t path_in ) {
99+ return vfs_proxy_call (MP_QSTR_chdir , 1 , & path_in );
100+ }
101+ STATIC MP_DEFINE_CONST_FUN_OBJ_1 (os_chdir_obj , os_chdir );
102+
103+ STATIC mp_obj_t os_getcwd (void ) {
104+ return vfs_proxy_call (MP_QSTR_getcwd , 0 , NULL );
105+ }
106+ STATIC MP_DEFINE_CONST_FUN_OBJ_0 (os_getcwd_obj , os_getcwd );
107+
96108STATIC mp_obj_t os_remove (mp_obj_t path_in ) {
97109 return vfs_proxy_call (MP_QSTR_remove , 1 , & path_in );
98110}
@@ -138,6 +150,8 @@ STATIC const mp_rom_map_elem_t os_module_globals_table[] = {
138150 { MP_ROM_QSTR (MP_QSTR_VfsFat ), MP_ROM_PTR (& mp_fat_vfs_type ) },
139151 { MP_ROM_QSTR (MP_QSTR_listdir ), MP_ROM_PTR (& os_listdir_obj ) },
140152 { MP_ROM_QSTR (MP_QSTR_mkdir ), MP_ROM_PTR (& os_mkdir_obj ) },
153+ { MP_ROM_QSTR (MP_QSTR_chdir ), MP_ROM_PTR (& os_chdir_obj ) },
154+ { MP_ROM_QSTR (MP_QSTR_getcwd ), MP_ROM_PTR (& os_getcwd_obj ) },
141155 { MP_ROM_QSTR (MP_QSTR_remove ), MP_ROM_PTR (& os_remove_obj ) },
142156 { MP_ROM_QSTR (MP_QSTR_rename ), MP_ROM_PTR (& os_rename_obj ) },
143157 #endif
0 commit comments