Skip to content

Commit

Permalink
Merge pull request #11961 from Minty-Meeo/dolphin-tool-code-review-5
Browse files Browse the repository at this point in the history
DolphinTool: Less string copies
  • Loading branch information
AdmiralCurtiss committed Jun 17, 2023
2 parents 5029924 + e67c196 commit b8242c3
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 23 deletions.
23 changes: 10 additions & 13 deletions Source/Core/DolphinTool/ConvertCommand.cpp
Expand Up @@ -61,9 +61,11 @@ int ConvertCommand(const std::vector<std::string>& args)
parser.usage("usage: convert [options]... [FILE]...");

parser.add_option("-u", "--user")
.type("string")
.action("store")
.help("User folder path, required for temporary processing files. "
"Will be automatically created if this option is not set.");
"Will be automatically created if this option is not set.")
.set_default("");

parser.add_option("-i", "--input")
.type("string")
Expand Down Expand Up @@ -110,34 +112,29 @@ int ConvertCommand(const std::vector<std::string>& 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::SetUserDirectory(options["user"]);
UICommon::Init();

// Validate options

// --input
const std::string input_file_path = static_cast<const char*>(options.get("input"));
if (input_file_path.empty())
if (!options.is_set("input"))
{
std::cerr << "Error: No input set" << std::endl;
return EXIT_FAILURE;
}
const std::string& input_file_path = options["input"];

// --output
const std::string output_file_path = static_cast<const char*>(options.get("output"));
if (output_file_path.empty())
if (!options.is_set("output"))
{
std::cerr << "Error: No output set" << std::endl;
return EXIT_FAILURE;
}
const std::string& output_file_path = options["output"];

// --format
const std::optional<DiscIO::BlobType> format_o =
ParseFormatString(static_cast<const char*>(options.get("format")));
const std::optional<DiscIO::BlobType> format_o = ParseFormatString(options["format"]);
if (!format_o.has_value())
{
std::cerr << "Error: No output format set" << std::endl;
Expand Down Expand Up @@ -255,7 +252,7 @@ int ConvertCommand(const std::vector<std::string>& args)

// --compress, --compress_level
std::optional<DiscIO::WIARVZCompressionType> compression_o =
ParseCompressionTypeString(static_cast<const char*>(options.get("compression")));
ParseCompressionTypeString(options["compression"]);

std::optional<int> compression_level_o;
if (options.is_set("compression_level"))
Expand Down
2 changes: 1 addition & 1 deletion Source/Core/DolphinTool/HeaderCommand.cpp
Expand Up @@ -43,7 +43,7 @@ int HeaderCommand(const std::vector<std::string>& args)
const optparse::Values& options = parser.parse_args(args);

// Validate options
const std::string input_file_path = static_cast<const char*>(options.get("input"));
const std::string& input_file_path = options["input"];
if (input_file_path.empty())
{
std::cerr << "Error: No input set" << std::endl;
Expand Down
16 changes: 7 additions & 9 deletions Source/Core/DolphinTool/VerifyCommand.cpp
Expand Up @@ -80,9 +80,11 @@ int VerifyCommand(const std::vector<std::string>& args)
parser.usage("usage: verify [options]...");

parser.add_option("-u", "--user")
.type("string")
.action("store")
.help("User folder path, required for temporary processing files. "
"Will be automatically created if this option is not set.");
"Will be automatically created if this option is not set.")
.set_default("");

parser.add_option("-i", "--input")
.type("string")
Expand All @@ -101,20 +103,16 @@ int VerifyCommand(const std::vector<std::string>& 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::SetUserDirectory(options["user"]);
UICommon::Init();

// Validate options
const std::string input_file_path = static_cast<const char*>(options.get("input"));
if (input_file_path.empty())
if (!options.is_set("input"))
{
std::cerr << "Error: No input set" << std::endl;
return EXIT_FAILURE;
}
const std::string& input_file_path = options["input"];

DiscIO::Hashes<bool> hashes_to_calculate{};
const bool algorithm_is_set = options.is_set("algorithm");
Expand All @@ -124,7 +122,7 @@ int VerifyCommand(const std::vector<std::string>& args)
}
else
{
const std::string algorithm = static_cast<const char*>(options.get("algorithm"));
const std::string& algorithm = options["algorithm"];
if (algorithm == "crc32")
hashes_to_calculate.crc32 = true;
else if (algorithm == "md5")
Expand Down

0 comments on commit b8242c3

Please sign in to comment.