[FL-3327] Storage: common_rename is now POSIX compliant (#2693)

* Storage: common_rename is now POSIX compliant

* storage: check for success on storage_common_remove in file rename

---------

Co-authored-by: hedger <hedger@nanode.su>
This commit is contained in:
Sergey Gavrilov 2023-05-23 07:59:32 -07:00 committed by GitHub
parent a821a2fcc0
commit 711f0fef40
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 2 deletions

View File

@ -226,7 +226,7 @@ FS_Error storage_common_stat(Storage* storage, const char* path, FileInfo* filei
*/
FS_Error storage_common_remove(Storage* storage, const char* path);
/** Renames file/directory, file/directory must not be open
/** Renames file/directory, file/directory must not be open. Will overwrite existing file.
* @param app pointer to the api
* @param old_path old path
* @param new_path new path

View File

@ -422,7 +422,16 @@ FS_Error storage_common_remove(Storage* storage, const char* path) {
}
FS_Error storage_common_rename(Storage* storage, const char* old_path, const char* new_path) {
FS_Error error = storage_common_copy(storage, old_path, new_path);
FS_Error error;
if(storage_file_exists(storage, new_path)) {
error = storage_common_remove(storage, new_path);
if(error != FSE_OK) {
return error;
}
}
error = storage_common_copy(storage, old_path, new_path);
if(error == FSE_OK) {
if(!storage_simply_remove_recursive(storage, old_path)) {
error = FSE_INTERNAL;