From 44744246958486a6dc4d481813ac51b7309acbc3 Mon Sep 17 00:00:00 2001 From: Pk11 Date: Sat, 7 May 2022 18:00:55 -0500 Subject: [PATCH] Only error on rmdir if `required` true --- source/utils/queueSystem.cpp | 7 ++++++- source/utils/scriptUtils.cpp | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/source/utils/queueSystem.cpp b/source/utils/queueSystem.cpp index c907ca4..65b9f48 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 0f90ab4..d3a635b 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()); }