diff options
| author | robert <robert@hammelrath.com> | 2020-05-04 15:34:12 +0200 |
|---|---|---|
| committer | Damien George <damien.p.george@gmail.com> | 2020-05-08 21:54:04 +1000 |
| commit | 0f83ef395cccaa771543450ff8a4200da108e3d6 (patch) | |
| tree | a14282153da432c19de0d7074f54a3fd64bbf154 /extmod/vfs_lfsx.c | |
| parent | d3ea28d04a7df9ca536a9002c8fda2f6e3a88f09 (diff) | |
extmod/vfs_lfsx: Fix rename to respect cur dir for new path.
If the new name start with '/', cur_dir is not prepened any more, so that
the current working directory is respected. And extend the test cases for
rename to cover this functionality.
Diffstat (limited to 'extmod/vfs_lfsx.c')
| -rw-r--r-- | extmod/vfs_lfsx.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/extmod/vfs_lfsx.c b/extmod/vfs_lfsx.c index 5dcf951bc..843e706da 100644 --- a/extmod/vfs_lfsx.c +++ b/extmod/vfs_lfsx.c @@ -236,10 +236,13 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(MP_VFS_LFSx(rmdir_obj), MP_VFS_LFSx(rmdir)); STATIC mp_obj_t MP_VFS_LFSx(rename)(mp_obj_t self_in, mp_obj_t path_old_in, mp_obj_t path_new_in) { MP_OBJ_VFS_LFSx *self = MP_OBJ_TO_PTR(self_in); const char *path_old = MP_VFS_LFSx(make_path)(self, path_old_in); + const char *path = mp_obj_str_get_str(path_new_in); vstr_t path_new; vstr_init(&path_new, vstr_len(&self->cur_dir)); - vstr_add_strn(&path_new, vstr_str(&self->cur_dir), vstr_len(&self->cur_dir)); - vstr_add_str(&path_new, mp_obj_str_get_str(path_new_in)); + if (path[0] != '/') { + vstr_add_strn(&path_new, vstr_str(&self->cur_dir), vstr_len(&self->cur_dir)); + } + vstr_add_str(&path_new, path); int ret = LFSx_API(rename)(&self->lfs, path_old, vstr_null_terminated_str(&path_new)); vstr_clear(&path_new); if (ret < 0) { |
