[mpy/os] rename

This commit is contained in:
M4x1m3
2020-07-21 21:40:20 +02:00
parent f65881420c
commit 18ccc0c771
4 changed files with 40 additions and 0 deletions

View File

@@ -534,4 +534,5 @@ Q(nodename)
Q(release)
Q(version)
Q(machine)
Q(rename)

View File

@@ -62,3 +62,39 @@ mp_obj_t modos_remove(mp_obj_t o_file_name) {
return mp_const_none;
}
mp_obj_t modos_rename(mp_obj_t o_old_name, mp_obj_t o_new_name) {
size_t len;
const char* old_name;
const char* new_name;
old_name = mp_obj_str_get_data(o_old_name, &len);
new_name = mp_obj_str_get_data(o_new_name, &len);
Ion::Storage::Record record = Ion::Storage::sharedStorage()->recordNamed(old_name);
if (record == Ion::Storage::Record()) {
mp_raise_OSError(2);
}
Ion::Storage::Record::ErrorStatus status = record.setName(new_name);
switch (status) {
case Ion::Storage::Record::ErrorStatus::NameTaken:
mp_raise_OSError(17);
break;
case Ion::Storage::Record::ErrorStatus::NotEnoughSpaceAvailable:
mp_raise_OSError(28);
break;
case Ion::Storage::Record::ErrorStatus::NonCompliantName:
mp_raise_OSError(22);
break;
case Ion::Storage::Record::ErrorStatus::RecordDoesNotExist:
mp_raise_OSError(2);
break;
default:
break;
}
return mp_const_none;
}

View File

@@ -2,3 +2,4 @@
mp_obj_t modos_uname();
mp_obj_t modos_remove(mp_obj_t o_file_name);
mp_obj_t modos_rename(mp_obj_t o_old_name, mp_obj_t o_new_name);

View File

@@ -2,11 +2,13 @@
MP_DEFINE_CONST_FUN_OBJ_0(modos_uname_obj, modos_uname);
MP_DEFINE_CONST_FUN_OBJ_1(modos_remove_obj, modos_remove);
MP_DEFINE_CONST_FUN_OBJ_2(modos_rename_obj, modos_rename);
STATIC const mp_rom_map_elem_t modos_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_os) },
{ MP_ROM_QSTR(MP_QSTR_uname), &modos_uname_obj},
{ MP_ROM_QSTR(MP_QSTR_remove), &modos_remove_obj},
{ MP_ROM_QSTR(MP_QSTR_rename), &modos_rename_obj},
};
STATIC MP_DEFINE_CONST_DICT(modos_module_globals, modos_module_globals_table);