mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
[mpy/os] rename
This commit is contained in:
@@ -534,4 +534,5 @@ Q(nodename)
|
||||
Q(release)
|
||||
Q(version)
|
||||
Q(machine)
|
||||
Q(rename)
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user