|
|
|
@ -4,11 +4,10 @@ |
|
|
|
|
|
|
|
#include <algorithm>
|
|
|
|
#include <cctype>
|
|
|
|
#include <cerrno>
|
|
|
|
#include <codecvt>
|
|
|
|
#include <cstdio>
|
|
|
|
#include <cstdlib>
|
|
|
|
#include <cstring>
|
|
|
|
#include <locale>
|
|
|
|
#include <sstream>
|
|
|
|
#include "common/common_paths.h"
|
|
|
|
#include "common/logging/log.h"
|
|
|
|
#include "common/string_util.h"
|
|
|
|
@ -33,24 +32,6 @@ std::string ToUpper(std::string str) { |
|
|
|
return str; |
|
|
|
} |
|
|
|
|
|
|
|
// For Debugging. Read out an u8 array.
|
|
|
|
std::string ArrayToString(const u8* data, std::size_t size, int line_len, bool spaces) { |
|
|
|
std::ostringstream oss; |
|
|
|
oss << std::setfill('0') << std::hex; |
|
|
|
|
|
|
|
for (int line = 0; size; ++data, --size) { |
|
|
|
oss << std::setw(2) << (int)*data; |
|
|
|
|
|
|
|
if (line_len == ++line) { |
|
|
|
oss << '\n'; |
|
|
|
line = 0; |
|
|
|
} else if (spaces) |
|
|
|
oss << ' '; |
|
|
|
} |
|
|
|
|
|
|
|
return oss.str(); |
|
|
|
} |
|
|
|
|
|
|
|
std::string StringFromBuffer(const std::vector<u8>& data) { |
|
|
|
return std::string(data.begin(), std::find(data.begin(), data.end(), '\0')); |
|
|
|
} |
|
|
|
@ -75,40 +56,6 @@ std::string StripQuotes(const std::string& s) { |
|
|
|
return s; |
|
|
|
} |
|
|
|
|
|
|
|
bool TryParse(const std::string& str, u32* const output) { |
|
|
|
char* endptr = nullptr; |
|
|
|
|
|
|
|
// Reset errno to a value other than ERANGE
|
|
|
|
errno = 0; |
|
|
|
|
|
|
|
unsigned long value = strtoul(str.c_str(), &endptr, 0); |
|
|
|
|
|
|
|
if (!endptr || *endptr) |
|
|
|
return false; |
|
|
|
|
|
|
|
if (errno == ERANGE) |
|
|
|
return false; |
|
|
|
|
|
|
|
#if ULONG_MAX > UINT_MAX
|
|
|
|
if (value >= 0x100000000ull && value <= 0xFFFFFFFF00000000ull) |
|
|
|
return false; |
|
|
|
#endif
|
|
|
|
|
|
|
|
*output = static_cast<u32>(value); |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
bool TryParse(const std::string& str, bool* const output) { |
|
|
|
if ("1" == str || "true" == ToLower(str)) |
|
|
|
*output = true; |
|
|
|
else if ("0" == str || "false" == ToLower(str)) |
|
|
|
*output = false; |
|
|
|
else |
|
|
|
return false; |
|
|
|
|
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
std::string StringFromBool(bool value) { |
|
|
|
return value ? "True" : "False"; |
|
|
|
} |
|
|
|
|