summaryrefslogtreecommitdiff
path: root/stmhal/moduos.c
diff options
context:
space:
mode:
authorSteve Zatz <slzatz@gmail.com>2015-05-10 20:30:56 -0400
committerDamien George <damien.p.george@gmail.com>2015-05-12 23:43:11 +0100
commitc7df9c6c47855adcfd204100098e355358935dc3 (patch)
tree57c784467e25aa8fa4ce5cebad9427646c9e86af /stmhal/moduos.c
parentf601390ef899a3b87b92d5075ded98a9766fdd6b (diff)
stmhal: Add os.rename function.
Diffstat (limited to 'stmhal/moduos.c')
-rw-r--r--stmhal/moduos.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/stmhal/moduos.c b/stmhal/moduos.c
index 9d6856b3e..24f2e0f1f 100644
--- a/stmhal/moduos.c
+++ b/stmhal/moduos.c
@@ -239,6 +239,22 @@ STATIC mp_obj_t os_remove(mp_obj_t path_o) {
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(os_remove_obj, os_remove);
+/// \function rename(old_path, new_path)
+/// Rename a file
+STATIC mp_obj_t os_rename(mp_obj_t path_in, mp_obj_t path_out) {
+ const char *old_path = mp_obj_str_get_str(path_in);
+ const char *new_path = mp_obj_str_get_str(path_out);
+ FRESULT res = f_rename(old_path, new_path);
+ switch (res) {
+ case FR_OK:
+ return mp_const_none;
+ default:
+ nlr_raise(mp_obj_new_exception_msg_varg(&mp_type_OSError, "Error renaming file '%s' to '%s'", old_path, new_path));
+ }
+
+}
+STATIC MP_DEFINE_CONST_FUN_OBJ_2(os_rename_obj, os_rename);
+
/// \function rmdir(path)
/// Remove a directory.
STATIC mp_obj_t os_rmdir(mp_obj_t path_o) {
@@ -368,6 +384,7 @@ STATIC const mp_map_elem_t os_module_globals_table[] = {
{ MP_OBJ_NEW_QSTR(MP_QSTR_listdir), (mp_obj_t)&os_listdir_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_mkdir), (mp_obj_t)&os_mkdir_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_remove), (mp_obj_t)&os_remove_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_rename),(mp_obj_t)&os_rename_obj},
{ MP_OBJ_NEW_QSTR(MP_QSTR_rmdir), (mp_obj_t)&os_rmdir_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_stat), (mp_obj_t)&os_stat_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_unlink), (mp_obj_t)&os_remove_obj }, // unlink aliases to remove