mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Move instead of copy during content install if possible
This commit is contained in:
parent
2b5075f0e2
commit
6de8d77e17
4 changed files with 44 additions and 22 deletions
|
@ -606,26 +606,24 @@ int ModApiMainMenu::l_copy_dir(lua_State *L)
|
|||
const char *destination = luaL_checkstring(L, 2);
|
||||
|
||||
bool keep_source = true;
|
||||
if (!lua_isnoneornil(L, 3))
|
||||
keep_source = readParam<bool>(L, 3);
|
||||
|
||||
if ((!lua_isnone(L,3)) &&
|
||||
(!lua_isnil(L,3))) {
|
||||
keep_source = readParam<bool>(L,3);
|
||||
}
|
||||
std::string abs_destination = fs::RemoveRelativePathComponents(destination);
|
||||
std::string abs_source = fs::RemoveRelativePathComponents(source);
|
||||
|
||||
std::string absolute_destination = fs::RemoveRelativePathComponents(destination);
|
||||
std::string absolute_source = fs::RemoveRelativePathComponents(source);
|
||||
|
||||
if ((ModApiMainMenu::mayModifyPath(absolute_destination))) {
|
||||
bool retval = fs::CopyDir(absolute_source,absolute_destination);
|
||||
|
||||
if (retval && (!keep_source)) {
|
||||
|
||||
retval &= fs::RecursiveDelete(absolute_source);
|
||||
}
|
||||
lua_pushboolean(L,retval);
|
||||
if (!ModApiMainMenu::mayModifyPath(abs_destination) ||
|
||||
(!keep_source && !ModApiMainMenu::mayModifyPath(abs_source))) {
|
||||
lua_pushboolean(L, false);
|
||||
return 1;
|
||||
}
|
||||
lua_pushboolean(L,false);
|
||||
|
||||
bool retval;
|
||||
if (keep_source)
|
||||
retval = fs::CopyDir(abs_source, abs_destination);
|
||||
else
|
||||
retval = fs::MoveDir(abs_source, abs_destination);
|
||||
lua_pushboolean(L, retval);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue