summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2022-01-03 01:46:22 +0100
committerGitHub <noreply@github.com>2022-01-03 01:46:22 +0100
commit953eb49cd8f52495b0cde80487f19c0dc279ca25 (patch)
tree1d539c6fc2a04d1a9406170286f0ec89dffff147 /Source/Core
parent7abb501e0aeca51d62b0d837059bb1d7dae959d0 (diff)
parent4d125064fe82423b2336e5857b813ce47abaea66 (diff)
Merge pull request #10335 from ssdsnake/dolphintool_fix_20220102
DolphinTool: initialize user directories before verify/convert operations
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/DolphinTool/CMakeLists.txt1
-rw-r--r--Source/Core/DolphinTool/ConvertCommand.cpp15
-rw-r--r--Source/Core/DolphinTool/VerifyCommand.cpp15
3 files changed, 31 insertions, 0 deletions
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 <OptionParser.h>
@@ -13,6 +14,11 @@ int ConvertCommand::Main(const std::vector<std::string>& 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<std::string>& 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<const char*>(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 <OptionParser.h>
@@ -13,6 +14,11 @@ int VerifyCommand::Main(const std::vector<std::string>& 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<std::string>& 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<const char*>(options.get("user"));
+
+ UICommon::SetUserDirectory(user_directory);
+ UICommon::Init();
+
// Validate options
const std::string input_file_path = static_cast<const char*>(options.get("input"));
if (input_file_path.empty())