Storage, common_rename: check that old path is exists (#2698)

* Storage, common_rename: check that old path is exists
* Storage, common_rename: return correct status
This commit is contained in:
Sergey Gavrilov 2023-05-25 06:44:32 -07:00 committed by GitHub
parent 3217f286f0
commit 88f0b63577
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -424,19 +424,25 @@ 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;
if(storage_file_exists(storage, new_path)) {
error = storage_common_remove(storage, new_path);
if(error != FSE_OK) {
return error;
do {
if(!storage_common_exists(storage, old_path)) {
error = FSE_INVALID_NAME;
break;
}
if(storage_file_exists(storage, new_path)) {
storage_common_remove(storage, new_path);
}
error = storage_common_copy(storage, old_path, new_path);
if(error == FSE_OK) {
if(error != FSE_OK) {
break;
}
if(!storage_simply_remove_recursive(storage, old_path)) {
error = FSE_INTERNAL;
}
}
} while(false);
return error;
}