From 4d125064fe82423b2336e5857b813ce47abaea66 Mon Sep 17 00:00:00 2001 From: ssdsnake Date: Sun, 2 Jan 2022 02:07:37 -0600 Subject: [PATCH] DolphinTool: initialize user directories (fix unintential deletion of Wii files) --- Source/Core/DolphinTool/CMakeLists.txt | 1 + Source/Core/DolphinTool/ConvertCommand.cpp | 15 +++++++++++++++ Source/Core/DolphinTool/VerifyCommand.cpp | 15 +++++++++++++++ 3 files changed, 31 insertions(+) diff --git a/Source/Core/DolphinTool/CMakeLists.txt b/Source/Core/DolphinTool/CMakeLists.txt index 4b209ac98b..a5bbe2908c 100644 --- a/Source/Core/DolphinTool/CMakeLists.txt +++ b/Source/Core/DolphinTool/CMakeLists.txt @@ -13,6 +13,7 @@ set_target_properties(dolphin-tool PROPERTIES OUTPUT_NAME dolphin-tool) target_link_libraries(dolphin-tool PRIVATE discio + uicommon videocommon cpp-optparse ) diff --git a/Source/Core/DolphinTool/ConvertCommand.cpp b/Source/Core/DolphinTool/ConvertCommand.cpp index ca270e9d12..d98adcb0b8 100644 --- a/Source/Core/DolphinTool/ConvertCommand.cpp +++ b/Source/Core/DolphinTool/ConvertCommand.cpp @@ -2,6 +2,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include "DolphinTool/ConvertCommand.h" +#include "UICommon/UICommon.h" #include @@ -13,6 +14,11 @@ int ConvertCommand::Main(const std::vector& args) parser->usage("usage: convert [options]... [FILE]..."); + parser->add_option("-u", "--user") + .action("store") + .help("User folder path, required for temporary processing files." + "Will be automatically created if this option is not set."); + parser->add_option("-i", "--input") .type("string") .action("store") @@ -56,6 +62,15 @@ int ConvertCommand::Main(const std::vector& args) const optparse::Values& options = parser->parse_args(args); + // Initialize the dolphin user directory, required for temporary processing files + // If this is not set, destructive file operations could occur due to path confusion + std::string user_directory; + if (options.is_set("user")) + user_directory = static_cast(options.get("user")); + + UICommon::SetUserDirectory(user_directory); + UICommon::Init(); + // Validate options // --input diff --git a/Source/Core/DolphinTool/VerifyCommand.cpp b/Source/Core/DolphinTool/VerifyCommand.cpp index 6eb920a6f2..69a2ebf0b5 100644 --- a/Source/Core/DolphinTool/VerifyCommand.cpp +++ b/Source/Core/DolphinTool/VerifyCommand.cpp @@ -2,6 +2,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include "DolphinTool/VerifyCommand.h" +#include "UICommon/UICommon.h" #include @@ -13,6 +14,11 @@ int VerifyCommand::Main(const std::vector& args) parser->usage("usage: verify [options]..."); + parser->add_option("-u", "--user") + .action("store") + .help("User folder path, required for temporary processing files." + "Will be automatically created if this option is not set."); + parser->add_option("-i", "--input") .type("string") .action("store") @@ -28,6 +34,15 @@ int VerifyCommand::Main(const std::vector& args) const optparse::Values& options = parser->parse_args(args); + // Initialize the dolphin user directory, required for temporary processing files + // If this is not set, destructive file operations could occur due to path confusion + std::string user_directory; + if (options.is_set("user")) + user_directory = static_cast(options.get("user")); + + UICommon::SetUserDirectory(user_directory); + UICommon::Init(); + // Validate options const std::string input_file_path = static_cast(options.get("input")); if (input_file_path.empty())