[fnd|nstool] Replaced io::makePath() with io::appendToPath(). Enabled utf-8 support to io::makeDirectory.

This commit is contained in:
jakcron 2018-04-25 20:27:18 +08:00
parent 2bfe11bf16
commit d017a95a3a
3 changed files with 25 additions and 21 deletions

View file

@ -6,6 +6,12 @@ namespace fnd
{ {
namespace io namespace io
{ {
#ifdef _WIN32
const std::string kPathDivider = "\\";
#else
const std::string kPathDivider = "/";
#endif
size_t getFileSize(const std::string& path); size_t getFileSize(const std::string& path);
void readFile(const std::string& path, MemoryBlob& blob); void readFile(const std::string& path, MemoryBlob& blob);
void readFile(const std::string& path, size_t offset, size_t len, MemoryBlob& blob); void readFile(const std::string& path, size_t offset, size_t len, MemoryBlob& blob);
@ -13,6 +19,6 @@ namespace fnd
void writeFile(const std::string& path, const byte_t* data, size_t len); void writeFile(const std::string& path, const byte_t* data, size_t len);
void makeDirectory(const std::string& path); void makeDirectory(const std::string& path);
void getEnvironVar(std::string& var, const std::string& key); void getEnvironVar(std::string& var, const std::string& key);
void makePath(std::string& out, const std::vector<std::string>& elements); void appendToPath(std::string& base, const std::string& add);
} }
} }

View file

@ -1,4 +1,5 @@
#include <fnd/io.h> #include <fnd/io.h>
#include <fnd/StringConv.h>
#include <fnd/SimpleFile.h> #include <fnd/SimpleFile.h>
#include <fstream> #include <fstream>
#ifdef _WIN32 #ifdef _WIN32
@ -133,7 +134,8 @@ void io::writeFile(const std::string & path, const byte_t * data, size_t len)
void io::makeDirectory(const std::string& path) void io::makeDirectory(const std::string& path)
{ {
#ifdef _WIN32 #ifdef _WIN32
_mkdir(path.c_str()); std::u16string wpath = fnd::StringConv::ConvertChar8ToChar16(path);
_wmkdir(wpath.c_str());
#else #else
mkdir(path.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); mkdir(path.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
#endif #endif
@ -163,20 +165,19 @@ void fnd::io::getEnvironVar(std::string & var, const std::string & key)
#endif #endif
} }
void fnd::io::makePath(std::string & out, const std::vector<std::string>& elements) void fnd::io::appendToPath(std::string& base, const std::string& add)
{ {
out.clear(); if (add.empty())
out = ""; return;
for (size_t i = 0; i < elements.size(); i++)
if (base.empty())
{ {
if (i > 0) base = add;
{
#ifdef _WIN32
out += "\\";
#else
out += "/";
#endif
} }
out += elements[i]; else
{
if (base[base.length()-1] != io::kPathDivider[0])
base += io::kPathDivider;
base += add;
} }
} }

View file

@ -265,13 +265,10 @@ void UserSettings::populateKeyset(sCmdArgs& args)
const std::string kKeysetNameStr[2] = {"prod.keys", "dev.keys"}; const std::string kKeysetNameStr[2] = {"prod.keys", "dev.keys"};
const std::string kHomeSwitchDirStr = ".switch"; const std::string kHomeSwitchDirStr = ".switch";
std::vector<std::string> path_list;
path_list.push_back(home);
path_list.push_back(kHomeSwitchDirStr);
path_list.push_back(kKeysetNameStr[args.devkit_keys.isSet ? *args.devkit_keys : 0]);
std::string keyset_path; std::string keyset_path;
fnd::io::makePath(keyset_path, path_list); fnd::io::appendToPath(keyset_path, home);
fnd::io::appendToPath(keyset_path, kHomeSwitchDirStr);
fnd::io::appendToPath(keyset_path, kKeysetNameStr[args.devkit_keys.isSet ? *args.devkit_keys : 0]);
try try
{ {