@@ -89,6 +89,21 @@ STATIC mp_obj_t fat_vfs_remove(mp_obj_t vfs_in, mp_obj_t path_in) {
8989}
9090STATIC MP_DEFINE_CONST_FUN_OBJ_2 (fat_vfs_remove_obj , fat_vfs_remove );
9191
92+ STATIC mp_obj_t fat_vfs_rename (mp_obj_t vfs_in , mp_obj_t path_in , mp_obj_t path_out ) {
93+ (void )vfs_in ;
94+ const char * old_path = mp_obj_str_get_str (path_in );
95+ const char * new_path = mp_obj_str_get_str (path_out );
96+ FRESULT res = f_rename (old_path , new_path );
97+ switch (res ) {
98+ case FR_OK :
99+ return mp_const_none ;
100+ default :
101+ nlr_raise (mp_obj_new_exception_msg_varg (& mp_type_OSError , "Error renaming file '%s' to '%s'" , old_path , new_path ));
102+ }
103+
104+ }
105+ STATIC MP_DEFINE_CONST_FUN_OBJ_3 (fat_vfs_rename_obj , fat_vfs_rename );
106+
92107STATIC mp_obj_t fat_vfs_mkdir (mp_obj_t vfs_in , mp_obj_t path_o ) {
93108 (void )vfs_in ;
94109 const char * path = mp_obj_str_get_str (path_o );
@@ -111,6 +126,7 @@ STATIC const mp_rom_map_elem_t fat_vfs_locals_dict_table[] = {
111126 { MP_ROM_QSTR (MP_QSTR_listdir ), MP_ROM_PTR (& fat_vfs_listdir_obj ) },
112127 { MP_ROM_QSTR (MP_QSTR_mkdir ), MP_ROM_PTR (& fat_vfs_mkdir_obj ) },
113128 { MP_ROM_QSTR (MP_QSTR_remove ), MP_ROM_PTR (& fat_vfs_remove_obj ) },
129+ { MP_ROM_QSTR (MP_QSTR_rename ), MP_ROM_PTR (& fat_vfs_rename_obj ) },
114130};
115131STATIC MP_DEFINE_CONST_DICT (fat_vfs_locals_dict , fat_vfs_locals_dict_table );
116132
0 commit comments