diff --git a/source/utils/queueSystem.cpp b/source/utils/queueSystem.cpp index 2886344..1578032 100644 --- a/source/utils/queueSystem.cpp +++ b/source/utils/queueSystem.cpp @@ -228,16 +228,21 @@ void QueueSystem::QueueHandle() { } else if (type == "rmdir") { bool missing = false; std::string directory = "", message = "", promptmsg = ""; + bool required = false; queueEntries[0]->status = QueueStatus::Request; if (queueEntries[0]->obj[i].contains("directory") && queueEntries[0]->obj[i]["directory"].is_string()) { directory = queueEntries[0]->obj[i]["directory"]; } else missing = true; + if (queueEntries[0]->obj[i].contains("required") && queueEntries[0]->obj[i]["required"].is_boolean()) { + required = queueEntries[0]->obj[i]["required"]; + } + promptmsg = Lang::get("DELETE_PROMPT") + "\n" + directory; if (!missing && directory != "") { - if (access(directory.c_str(), F_OK) != 0) ret = DELETE_ERROR; + if (access(directory.c_str(), F_OK) != 0 && required) ret = DELETE_ERROR; else { if (QueueSystem::RequestNeeded == RMDIR_REQUEST) { /* There we already did it. :) */ diff --git a/source/utils/scriptUtils.cpp b/source/utils/scriptUtils.cpp index 73c4446..c074bea 100644 --- a/source/utils/scriptUtils.cpp +++ b/source/utils/scriptUtils.cpp @@ -475,15 +475,20 @@ Result ScriptUtils::runFunctions(nlohmann::json storeJson, int selection, const } else if (type == "rmdir") { bool missing = false; std::string directory = "", promptmsg = ""; + bool required = false; if (Script[i].contains("directory") && Script[i]["directory"].is_string()) { directory = Script[i]["directory"]; } else missing = true; + if (Script[i].contains("required") && Script[i]["required"].is_boolean()) { + required = Script[i]["required"]; + } + promptmsg = Lang::get("DELETE_PROMPT") + "\n" + directory; if (!missing && directory != "") { - if (access(directory.c_str(), F_OK) != 0) ret = DELETE_ERROR; + if (access(directory.c_str(), F_OK) != 0 && required) ret = DELETE_ERROR; else { if (Msg::promptMsg(promptmsg)) removeDirRecursive(directory.c_str()); }