From f87b286ff3c1f46b4294f15fdc6e849cc4f4d296 Mon Sep 17 00:00:00 2001 From: Jack Andersen Date: Sun, 14 Oct 2018 10:11:28 -1000 Subject: [PATCH] Windows build fixes --- driver/main.cpp | 56 +++++++++---------- include/nod/Util.hpp | 8 +-- lib/DirectoryEnumerator.cpp | 18 +++--- lib/DiscBase.cpp | 106 ++++++++++++++++++------------------ lib/DiscGCN.cpp | 26 ++++----- lib/DiscWii.cpp | 70 ++++++++++++------------ lib/FileIOFILE.cpp | 20 +++---- lib/FileIOWin32.cpp | 8 +-- lib/nod.cpp | 6 +- 9 files changed, 159 insertions(+), 159 deletions(-) diff --git a/driver/main.cpp b/driver/main.cpp index fd8400a..6295bda 100644 --- a/driver/main.cpp +++ b/driver/main.cpp @@ -26,10 +26,10 @@ int main(int argc, char* argv[]) #endif { if (argc < 3 || - (!strcasecmp(argv[1], _S("makegcn")) && argc < 3) || - (!strcasecmp(argv[1], _S("makewii")) && argc < 3) || - (!strcasecmp(argv[1], _S("mergegcn")) && argc < 4) || - (!strcasecmp(argv[1], _S("mergewii")) && argc < 4)) + (!strcasecmp(argv[1], _SYS_STR("makegcn")) && argc < 3) || + (!strcasecmp(argv[1], _SYS_STR("makewii")) && argc < 3) || + (!strcasecmp(argv[1], _SYS_STR("mergegcn")) && argc < 4) || + (!strcasecmp(argv[1], _SYS_STR("mergewii")) && argc < 4)) { printHelp(); return 1; @@ -46,7 +46,7 @@ int main(int argc, char* argv[]) fprintf(stderr, "Current node: %s, Extraction %g%% Complete\n", str.data(), c * 100.f); }}; const nod::SystemChar* inDir = nullptr; - const nod::SystemChar* outDir = _S("."); + const nod::SystemChar* outDir = _SYS_STR("."); for (int a=2 ; a disc = nod::OpenDiscFromImage(inDir, isWii); @@ -87,13 +87,13 @@ int main(int argc, char* argv[]) if (!dataPart->extractToDirectory(outDir, ctx)) return 1; } - else if (!strcasecmp(argv[1], _S("makegcn"))) + else if (!strcasecmp(argv[1], _SYS_STR("makegcn"))) { /* Pre-validate path */ nod::Sstat theStat; if (nod::Stat(argv[2], &theStat) || !S_ISDIR(theStat.st_mode)) { - nod::LogModule.report(logvisor::Error, _S("unable to stat %s as directory"), argv[2]); + nod::LogModule.report(logvisor::Error, _SYS_STR("unable to stat %s as directory"), argv[2]); return 1; } @@ -105,7 +105,7 @@ int main(int argc, char* argv[]) if (argc < 4) { nod::SystemString outPath(argv[2]); - outPath.append(_S(".iso")); + outPath.append(_SYS_STR(".iso")); nod::DiscBuilderGCN b(outPath, progFunc); ret = b.buildFromDirectory(argv[2]); } @@ -119,13 +119,13 @@ int main(int argc, char* argv[]) if (ret != nod::EBuildResult::Success) return 1; } - else if (!strcasecmp(argv[1], _S("makewii"))) + else if (!strcasecmp(argv[1], _SYS_STR("makewii"))) { /* Pre-validate path */ nod::Sstat theStat; if (nod::Stat(argv[2], &theStat) || !S_ISDIR(theStat.st_mode)) { - nod::LogModule.report(logvisor::Error, _S("unable to stat %s as directory"), argv[4]); + nod::LogModule.report(logvisor::Error, _SYS_STR("unable to stat %s as directory"), argv[4]); return 1; } @@ -138,7 +138,7 @@ int main(int argc, char* argv[]) if (argc < 4) { nod::SystemString outPath(argv[2]); - outPath.append(_S(".iso")); + outPath.append(_SYS_STR(".iso")); nod::DiscBuilderWii b(outPath.c_str(), dual, progFunc); ret = b.buildFromDirectory(argv[2]); } @@ -152,18 +152,18 @@ int main(int argc, char* argv[]) if (ret != nod::EBuildResult::Success) return 1; } - else if (!strcasecmp(argv[1], _S("mergegcn"))) + else if (!strcasecmp(argv[1], _SYS_STR("mergegcn"))) { /* Pre-validate paths */ nod::Sstat theStat; if (nod::Stat(argv[2], &theStat) || !S_ISDIR(theStat.st_mode)) { - nod::LogModule.report(logvisor::Error, _S("unable to stat %s as directory"), argv[2]); + nod::LogModule.report(logvisor::Error, _SYS_STR("unable to stat %s as directory"), argv[2]); return 1; } if (nod::Stat(argv[3], &theStat) || !S_ISREG(theStat.st_mode)) { - nod::LogModule.report(logvisor::Error, _S("unable to stat %s as file"), argv[3]); + nod::LogModule.report(logvisor::Error, _SYS_STR("unable to stat %s as file"), argv[3]); return 1; } @@ -171,12 +171,12 @@ int main(int argc, char* argv[]) std::unique_ptr disc = nod::OpenDiscFromImage(argv[3], isWii); if (!disc) { - nod::LogModule.report(logvisor::Error, _S("unable to open image %s"), argv[3]); + nod::LogModule.report(logvisor::Error, _SYS_STR("unable to open image %s"), argv[3]); return 1; } if (isWii) { - nod::LogModule.report(logvisor::Error, _S("Wii images should be merged with 'mergewii'")); + nod::LogModule.report(logvisor::Error, _SYS_STR("Wii images should be merged with 'mergewii'")); return 1; } @@ -188,7 +188,7 @@ int main(int argc, char* argv[]) if (argc < 5) { nod::SystemString outPath(argv[2]); - outPath.append(_S(".iso")); + outPath.append(_SYS_STR(".iso")); nod::DiscMergerGCN b(outPath.c_str(), static_cast(*disc), progFunc); ret = b.mergeFromDirectory(argv[2]); } @@ -202,18 +202,18 @@ int main(int argc, char* argv[]) if (ret != nod::EBuildResult::Success) return 1; } - else if (!strcasecmp(argv[1], _S("mergewii"))) + else if (!strcasecmp(argv[1], _SYS_STR("mergewii"))) { /* Pre-validate paths */ nod::Sstat theStat; if (nod::Stat(argv[2], &theStat) || !S_ISDIR(theStat.st_mode)) { - nod::LogModule.report(logvisor::Error, _S("unable to stat %s as directory"), argv[2]); + nod::LogModule.report(logvisor::Error, _SYS_STR("unable to stat %s as directory"), argv[2]); return 1; } if (nod::Stat(argv[3], &theStat) || !S_ISREG(theStat.st_mode)) { - nod::LogModule.report(logvisor::Error, _S("unable to stat %s as file"), argv[3]); + nod::LogModule.report(logvisor::Error, _SYS_STR("unable to stat %s as file"), argv[3]); return 1; } @@ -221,12 +221,12 @@ int main(int argc, char* argv[]) std::unique_ptr disc = nod::OpenDiscFromImage(argv[3], isWii); if (!disc) { - nod::LogModule.report(logvisor::Error, _S("unable to open image %s"), argv[3]); + nod::LogModule.report(logvisor::Error, _SYS_STR("unable to open image %s"), argv[3]); return 1; } if (!isWii) { - nod::LogModule.report(logvisor::Error, _S("GameCube images should be merged with 'mergegcn'")); + nod::LogModule.report(logvisor::Error, _SYS_STR("GameCube images should be merged with 'mergegcn'")); return 1; } @@ -239,7 +239,7 @@ int main(int argc, char* argv[]) if (argc < 5) { nod::SystemString outPath(argv[2]); - outPath.append(_S(".iso")); + outPath.append(_SYS_STR(".iso")); nod::DiscMergerWii b(outPath.c_str(), static_cast(*disc), dual, progFunc); ret = b.mergeFromDirectory(argv[2]); } @@ -259,7 +259,7 @@ int main(int argc, char* argv[]) return 1; } - nod::LogModule.report(logvisor::Info, _S("Success!")); + nod::LogModule.report(logvisor::Info, _SYS_STR("Success!")); return 0; } diff --git a/include/nod/Util.hpp b/include/nod/Util.hpp index ec8b52b..6130d1e 100644 --- a/include/nod/Util.hpp +++ b/include/nod/Util.hpp @@ -111,8 +111,8 @@ public: inline SystemStringView sys_str() const {return m_sys;} inline const SystemChar* c_str() const {return m_sys.c_str();} }; -#ifndef _S -#define _S(val) L ## val +#ifndef _SYS_STR +#define _SYS_STR(val) L ## val #endif #else typedef char SystemChar; @@ -321,14 +321,14 @@ static inline bool CheckFreeSpace(const SystemChar* path, size_t reqSz) DWORD ret = GetFullPathNameW(path, 1024, buf, &end); if (!ret || ret > 1024) { - LogModule.report(logvisor::Error, _S("GetFullPathNameW %s"), path); + LogModule.report(logvisor::Error, _SYS_STR("GetFullPathNameW %s"), path); return false; } if (end) end[0] = L'\0'; if (!GetDiskFreeSpaceExW(buf, &freeBytes, nullptr, nullptr)) { - LogModule.report(logvisor::Error, _S("GetDiskFreeSpaceExW %s: %d"), path, GetLastError()); + LogModule.report(logvisor::Error, _SYS_STR("GetDiskFreeSpaceExW %s: %d"), path, GetLastError()); return false; } return reqSz < freeBytes.QuadPart; diff --git a/lib/DirectoryEnumerator.cpp b/lib/DirectoryEnumerator.cpp index ed0d886..83978ff 100644 --- a/lib/DirectoryEnumerator.cpp +++ b/lib/DirectoryEnumerator.cpp @@ -21,7 +21,7 @@ DirectoryEnumerator::DirectoryEnumerator(SystemStringView path, Mode mode, #if _WIN32 SystemString wc(path); - wc += _S("/*"); + wc += _SYS_STR("/*"); WIN32_FIND_DATAW d; HANDLE dir = FindFirstFileW(wc.c_str(), &d); if (dir == INVALID_HANDLE_VALUE) @@ -31,12 +31,12 @@ DirectoryEnumerator::DirectoryEnumerator(SystemStringView path, Mode mode, case Mode::Native: do { - if (!wcscmp(d.cFileName, _S(".")) || !wcscmp(d.cFileName, _S(".."))) + if (!wcscmp(d.cFileName, _SYS_STR(".")) || !wcscmp(d.cFileName, _SYS_STR(".."))) continue; if (noHidden && (d.cFileName[0] == L'.' || (d.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) != 0)) continue; SystemString fp(path); - fp += _S('/'); + fp += _SYS_STR('/'); fp += d.cFileName; Sstat st; if (Stat(fp.c_str(), &st)) @@ -60,12 +60,12 @@ DirectoryEnumerator::DirectoryEnumerator(SystemStringView path, Mode mode, std::map sort; do { - if (!wcscmp(d.cFileName, _S(".")) || !wcscmp(d.cFileName, _S(".."))) + if (!wcscmp(d.cFileName, _SYS_STR(".")) || !wcscmp(d.cFileName, _SYS_STR(".."))) continue; if (noHidden && (d.cFileName[0] == L'.' || (d.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) != 0)) continue; SystemString fp(path); - fp +=_S('/'); + fp +=_SYS_STR('/'); fp += d.cFileName; Sstat st; if (Stat(fp.c_str(), &st) || !S_ISDIR(st.st_mode)) @@ -96,12 +96,12 @@ DirectoryEnumerator::DirectoryEnumerator(SystemStringView path, Mode mode, std::multimap sort; do { - if (!wcscmp(d.cFileName, _S(".")) || !wcscmp(d.cFileName, _S(".."))) + if (!wcscmp(d.cFileName, _SYS_STR(".")) || !wcscmp(d.cFileName, _SYS_STR(".."))) continue; if (noHidden && (d.cFileName[0] == L'.' || (d.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) != 0)) continue; SystemString fp(path); - fp += _S('/'); + fp += _SYS_STR('/'); fp += d.cFileName; Sstat st; if (Stat(fp.c_str(), &st) || !S_ISREG(st.st_mode)) @@ -122,12 +122,12 @@ DirectoryEnumerator::DirectoryEnumerator(SystemStringView path, Mode mode, std::map sort; do { - if (!wcscmp(d.cFileName, _S(".")) || !wcscmp(d.cFileName, _S(".."))) + if (!wcscmp(d.cFileName, _SYS_STR(".")) || !wcscmp(d.cFileName, _SYS_STR(".."))) continue; if (noHidden && (d.cFileName[0] == L'.' || (d.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) != 0)) continue; SystemString fp(path); - fp += _S('/'); + fp += _SYS_STR('/'); fp += d.cFileName; Sstat st; if (Stat(fp.c_str(), &st) || !S_ISREG(st.st_mode)) diff --git a/lib/DiscBase.cpp b/lib/DiscBase.cpp index 749c873..15b3092 100644 --- a/lib/DiscBase.cpp +++ b/lib/DiscBase.cpp @@ -43,11 +43,11 @@ const SystemChar* getKindString(PartitionKind kind) switch (kind) { case PartitionKind::Data: - return _S("DATA"); + return _SYS_STR("DATA"); case PartitionKind::Update: - return _S("UPDATE"); + return _SYS_STR("UPDATE"); case PartitionKind::Channel: - return _S("CHANNEL"); + return _SYS_STR("CHANNEL"); default: return nullptr; } @@ -136,7 +136,7 @@ std::unique_ptr Node::getBuf() const bool Node::extractToDirectory(SystemStringView basePath, const ExtractionContext& ctx) const { SystemStringConv nameView(getName()); - SystemString path = SystemString(basePath) + _S('/') + nameView.sys_str().data(); + SystemString path = SystemString(basePath) + _SYS_STR('/') + nameView.sys_str().data(); if (m_kind == Kind::Directory) { @@ -145,7 +145,7 @@ bool Node::extractToDirectory(SystemStringView basePath, const ExtractionContext ctx.progressCB(getName(), m_parent.m_curNodeIdx / float(m_parent.getNodeCount())); if (Mkdir(path.c_str(), 0755) && errno != EEXIST) { - LogModule.report(logvisor::Error, _S("unable to mkdir '%s'"), path.c_str()); + LogModule.report(logvisor::Error, _SYS_STR("unable to mkdir '%s'"), path.c_str()); return false; } for (Node& subnode : *this) @@ -181,16 +181,16 @@ bool IPartition::extractToDirectory(SystemStringView path, const ExtractionConte m_curNodeIdx = 0; if (Mkdir(path.data(), 0755) && errno != EEXIST) { - LogModule.report(logvisor::Error, _S("unable to mkdir '%s'"), path.data()); + LogModule.report(logvisor::Error, _SYS_STR("unable to mkdir '%s'"), path.data()); return false; } - SystemString basePath = m_isWii ? SystemString(path) + _S("/") + getKindString(m_kind) : SystemString(path); + SystemString basePath = m_isWii ? SystemString(path) + _SYS_STR("/") + getKindString(m_kind) : SystemString(path); if (m_isWii) { if (Mkdir(basePath.c_str(), 0755) && errno != EEXIST) { - LogModule.report(logvisor::Error, _S("unable to mkdir '%s'"), basePath.c_str()); + LogModule.report(logvisor::Error, _SYS_STR("unable to mkdir '%s'"), basePath.c_str()); return false; } } @@ -207,10 +207,10 @@ bool IPartition::extractToDirectory(SystemStringView path, const ExtractionConte return false; /* Extract Filesystem */ - SystemString fsPath = basePath + _S("/files"); + SystemString fsPath = basePath + _SYS_STR("/files"); if (Mkdir(fsPath.c_str(), 0755) && errno != EEXIST) { - LogModule.report(logvisor::Error, _S("unable to mkdir '%s'"), fsPath.c_str()); + LogModule.report(logvisor::Error, _SYS_STR("unable to mkdir '%s'"), fsPath.c_str()); return false; } @@ -220,15 +220,15 @@ bool IPartition::extractToDirectory(SystemStringView path, const ExtractionConte bool IPartition::extractSysFiles(SystemStringView basePath, const ExtractionContext& ctx) const { SystemString basePathStr(basePath); - if (Mkdir((basePathStr + _S("/sys")).c_str(), 0755) && errno != EEXIST) + if (Mkdir((basePathStr + _SYS_STR("/sys")).c_str(), 0755) && errno != EEXIST) { - LogModule.report(logvisor::Error, _S("unable to mkdir '%s/sys'"), basePath.data()); + LogModule.report(logvisor::Error, _SYS_STR("unable to mkdir '%s/sys'"), basePath.data()); return false; } Sstat theStat; /* Extract Apploader */ - SystemString apploaderPath = basePathStr + _S("/sys/apploader.img"); + SystemString apploaderPath = basePathStr + _SYS_STR("/sys/apploader.img"); if (ctx.force || Stat(apploaderPath.c_str(), &theStat)) { if (ctx.progressCB) @@ -241,7 +241,7 @@ bool IPartition::extractSysFiles(SystemStringView basePath, const ExtractionCont } /* Extract Dol */ - SystemString dolPath = basePathStr + _S("/sys/main.dol"); + SystemString dolPath = basePathStr + _SYS_STR("/sys/main.dol"); if (ctx.force || Stat(dolPath.c_str(), &theStat)) { if (ctx.progressCB) @@ -254,7 +254,7 @@ bool IPartition::extractSysFiles(SystemStringView basePath, const ExtractionCont } /* Extract Boot info */ - SystemString bootPath = basePathStr + _S("/sys/boot.bin"); + SystemString bootPath = basePathStr + _SYS_STR("/sys/boot.bin"); if (ctx.force || Stat(bootPath.c_str(), &theStat)) { if (ctx.progressCB) @@ -266,7 +266,7 @@ bool IPartition::extractSysFiles(SystemStringView basePath, const ExtractionCont } /* Extract BI2 info */ - SystemString bi2Path = basePathStr + _S("/sys/bi2.bin"); + SystemString bi2Path = basePathStr + _SYS_STR("/sys/bi2.bin"); if (ctx.force || Stat(bi2Path.c_str(), &theStat)) { if (ctx.progressCB) @@ -287,22 +287,22 @@ static bool IsSystemFile(SystemStringView name, bool& isDol) if (name.size() < 4) return false; - if (!StrCaseCmp((&*(name.cend() - 4)), _S(".dol"))) + if (!StrCaseCmp((&*(name.cend() - 4)), _SYS_STR(".dol"))) { isDol = true; return true; } - if (!StrCaseCmp((&*(name.cend() - 4)), _S(".rel"))) + if (!StrCaseCmp((&*(name.cend() - 4)), _SYS_STR(".rel"))) return true; - if (!StrCaseCmp((&*(name.cend() - 4)), _S(".rso"))) + if (!StrCaseCmp((&*(name.cend() - 4)), _SYS_STR(".rso"))) return true; - if (!StrCaseCmp((&*(name.cend() - 4)), _S(".sel"))) + if (!StrCaseCmp((&*(name.cend() - 4)), _SYS_STR(".sel"))) return true; - if (!StrCaseCmp((&*(name.cend() - 4)), _S(".bnr"))) + if (!StrCaseCmp((&*(name.cend() - 4)), _SYS_STR(".bnr"))) return true; - if (!StrCaseCmp((&*(name.cend() - 4)), _S(".elf"))) + if (!StrCaseCmp((&*(name.cend() - 4)), _SYS_STR(".elf"))) return true; - if (!StrCaseCmp((&*(name.cend() - 4)), _S(".wad"))) + if (!StrCaseCmp((&*(name.cend() - 4)), _SYS_STR(".wad"))) return true; return false; @@ -375,7 +375,7 @@ bool DiscBuilderBase::PartitionBuilderBase::recursiveBuildNodes(IPartWriteStream { bool patched; xferSz = PatchDOL(*rs, ws, e.m_fileSz, patched); - m_parent.m_progressCB(m_parent.getProgressFactor(), e.m_name + (patched ? _S(" [PATCHED]") : _S("")), xferSz); + m_parent.m_progressCB(m_parent.getProgressFactor(), e.m_name + (patched ? _SYS_STR(" [PATCHED]") : _SYS_STR("")), xferSz); ++m_parent.m_progressIdx; } else @@ -516,7 +516,7 @@ bool DiscBuilderBase::PartitionBuilderBase::recursiveMergeNodes(IPartWriteStream for (const DirectoryEnumerator::Entry& e : dEnum) { SystemUTF8Conv nameView(e.m_name); - SystemString chKeyPath = SystemString(keyPath) + _S('/') + e.m_name; + SystemString chKeyPath = SystemString(keyPath) + _SYS_STR('/') + e.m_name; if (e.m_isDir) { @@ -556,7 +556,7 @@ bool DiscBuilderBase::PartitionBuilderBase::recursiveMergeNodes(IPartWriteStream bool patched; xferSz = PatchDOL(*rs, ws, e.m_fileSz, patched); m_parent.m_progressCB(m_parent.getProgressFactor(), e.m_name + - (patched ? _S(" [PATCHED]") : _S("")), xferSz); + (patched ? _SYS_STR(" [PATCHED]") : _SYS_STR("")), xferSz); ++m_parent.m_progressIdx; } else @@ -583,7 +583,7 @@ bool DiscBuilderBase::PartitionBuilderBase::recursiveMergeNodes(IPartWriteStream for (const auto& p : dirNodes) { SystemStringConv sysName(p.second->getName()); - SystemString chKeyPath = SystemString(keyPath) + _S('/') + sysName.c_str(); + SystemString chKeyPath = SystemString(keyPath) + _SYS_STR('/') + sysName.c_str(); if (!recursiveMergeNodes(ws, system, p.second, nullptr, chKeyPath)) return false; } @@ -593,7 +593,7 @@ bool DiscBuilderBase::PartitionBuilderBase::recursiveMergeNodes(IPartWriteStream { const Node& ch = *p.second; SystemStringConv sysName(ch.getName()); - SystemString chKeyPath = SystemString(keyPath) + _S('/') + sysName.c_str(); + SystemString chKeyPath = SystemString(keyPath) + _SYS_STR('/') + sysName.c_str(); bool isDol; bool isSys = IsSystemFile(sysName.sys_str(), isDol); @@ -617,7 +617,7 @@ bool DiscBuilderBase::PartitionBuilderBase::recursiveMergeNodes(IPartWriteStream PatchDOL(dolBuf, xferSz, patched); ws.write(dolBuf.get(), xferSz); m_parent.m_progressCB(m_parent.getProgressFactor(), SystemString(sysName.sys_str()) + - (patched ? _S(" [PATCHED]") : _S("")), xferSz); + (patched ? _SYS_STR(" [PATCHED]") : _SYS_STR("")), xferSz); ++m_parent.m_progressIdx; } else @@ -669,7 +669,7 @@ bool DiscBuilderBase::PartitionBuilderBase::recursiveMergeFST(const Node* nodeIn for (const DirectoryEnumerator::Entry& e : dEnum) { SystemUTF8Conv nameView(e.m_name); - SystemString chKeyPath = SystemString(keyPath) + _S('/') + e.m_name; + SystemString chKeyPath = SystemString(keyPath) + _SYS_STR('/') + e.m_name; if (e.m_isDir) { @@ -711,7 +711,7 @@ bool DiscBuilderBase::PartitionBuilderBase::recursiveMergeFST(const Node* nodeIn for (const auto& p : dirNodes) { SystemStringConv sysName(p.second->getName()); - SystemString chKeyPath = SystemString(keyPath) + _S('/') + sysName.sys_str().data(); + SystemString chKeyPath = SystemString(keyPath) + _SYS_STR('/') + sysName.sys_str().data(); size_t dirNodeIdx = m_buildNodes.size(); m_buildNodes.emplace_back(true, m_buildNameOff, 0, dirNodeIdx+1); @@ -729,7 +729,7 @@ bool DiscBuilderBase::PartitionBuilderBase::recursiveMergeFST(const Node* nodeIn { const Node& ch = *p.second; SystemStringConv sysName(ch.getName()); - SystemString chKeyPath = SystemString(keyPath) + _S('/') + sysName.sys_str().data(); + SystemString chKeyPath = SystemString(keyPath) + _SYS_STR('/') + sysName.sys_str().data(); std::pair fileOffSz = m_fileOffsetsSizes.at(chKeyPath); m_buildNodes.emplace_back(false, m_buildNameOff, packOffset(fileOffSz.first), fileOffSz.second); @@ -813,33 +813,33 @@ bool DiscBuilderBase::PartitionBuilderBase::buildFromDirectory(IPartWriteStream& { if (dirIn.empty()) { - LogModule.report(logvisor::Error, _S("all arguments must be supplied to buildFromDirectory()")); + LogModule.report(logvisor::Error, _SYS_STR("all arguments must be supplied to buildFromDirectory()")); return false; } SystemString dirStr(dirIn); - SystemString basePath = m_isWii ? dirStr + _S("/") + getKindString(m_kind) : dirStr; - SystemString dolIn = basePath + _S("/sys/main.dol"); - SystemString filesIn = basePath + _S("/files"); + SystemString basePath = m_isWii ? dirStr + _SYS_STR("/") + getKindString(m_kind) : dirStr; + SystemString dolIn = basePath + _SYS_STR("/sys/main.dol"); + SystemString filesIn = basePath + _SYS_STR("/files"); /* 1st pass - Tally up total progress steps */ m_parent.m_progressTotal += 2; /* Prep and DOL */ recursiveBuildNodesPre(filesIn.c_str()); /* Clear file */ - m_parent.m_progressCB(m_parent.getProgressFactor(), _S("Preparing output image"), -1); + m_parent.m_progressCB(m_parent.getProgressFactor(), _SYS_STR("Preparing output image"), -1); ++m_parent.m_progressIdx; /* Add root node */ m_buildNodes.emplace_back(true, m_buildNameOff, 0, 1); - addBuildName(_S("")); + addBuildName(_SYS_STR("")); /* Write Boot DOL first (first thing seeked to after Apploader) */ { Sstat dolStat; if (Stat(dolIn.c_str(), &dolStat)) { - LogModule.report(logvisor::Error, _S("unable to stat %s"), dolIn.c_str()); + LogModule.report(logvisor::Error, _SYS_STR("unable to stat %s"), dolIn.c_str()); return false; } size_t fileSz = ROUND_UP_32(dolStat.st_size); @@ -854,7 +854,7 @@ bool DiscBuilderBase::PartitionBuilderBase::buildFromDirectory(IPartWriteStream& bool patched; size_t xferSz = PatchDOL(*rs, ws, dolStat.st_size, patched); m_parent.m_progressCB(m_parent.getProgressFactor(), dolIn + - (patched ? _S(" [PATCHED]") : _S("")), xferSz); + (patched ? _SYS_STR(" [PATCHED]") : _SYS_STR("")), xferSz); ++m_parent.m_progressIdx; for (size_t i=0 ; igetFSTRoot(), filesIn.c_str()); /* Clear file */ - m_parent.m_progressCB(m_parent.getProgressFactor(), _S("Preparing output image"), -1); + m_parent.m_progressCB(m_parent.getProgressFactor(), _SYS_STR("Preparing output image"), -1); ++m_parent.m_progressIdx; /* Add root node */ m_buildNodes.emplace_back(true, m_buildNameOff, 0, 1); - addBuildName(_S("")); + addBuildName(_SYS_STR("")); /* Write Boot DOL first (first thing seeked to after Apploader) */ { @@ -930,8 +930,8 @@ bool DiscBuilderBase::PartitionBuilderBase::mergeFromDirectory(IPartWriteStream& bool patched; PatchDOL(dolBuf, xferSz, patched); ws.write(dolBuf.get(), xferSz); - m_parent.m_progressCB(m_parent.getProgressFactor(), SystemString(_S("")) + - (patched ? _S(" [PATCHED]") : _S("")), xferSz); + m_parent.m_progressCB(m_parent.getProgressFactor(), SystemString(_SYS_STR("")) + + (patched ? _SYS_STR(" [PATCHED]") : _SYS_STR("")), xferSz); ++m_parent.m_progressIdx; for (size_t i=0 ; iisWii() ? dirStr + _S("/") + getKindString(partIn->getKind()) : dirStr; - SystemString filesIn = basePath + _S("/files"); + SystemString basePath = partIn->isWii() ? dirStr + _SYS_STR("/") + getKindString(partIn->getKind()) : dirStr; + SystemString filesIn = basePath + _SYS_STR("/files"); uint64_t totalSz = ROUND_UP_32(partIn->getDOLSize()); if (!RecursiveCalculateTotalSize(totalSz, &partIn->getFSTRoot(), filesIn.c_str())) diff --git a/lib/DiscGCN.cpp b/lib/DiscGCN.cpp index c5b0259..f9c2f18 100644 --- a/lib/DiscGCN.cpp +++ b/lib/DiscGCN.cpp @@ -256,29 +256,29 @@ public: SystemString dirStr(dirIn); /* Check Apploader */ - SystemString apploaderIn = dirStr + _S("/sys/apploader.img"); + SystemString apploaderIn = dirStr + _SYS_STR("/sys/apploader.img"); Sstat apploaderStat; if (Stat(apploaderIn.c_str(), &apploaderStat)) { - LogModule.report(logvisor::Error, _S("unable to stat %s"), apploaderIn.c_str()); + LogModule.report(logvisor::Error, _SYS_STR("unable to stat %s"), apploaderIn.c_str()); return false; } /* Check Boot */ - SystemString bootIn = dirStr + _S("/sys/boot.bin"); + SystemString bootIn = dirStr + _SYS_STR("/sys/boot.bin"); Sstat bootStat; if (Stat(bootIn.c_str(), &bootStat)) { - LogModule.report(logvisor::Error, _S("unable to stat %s"), bootIn.c_str()); + LogModule.report(logvisor::Error, _SYS_STR("unable to stat %s"), bootIn.c_str()); return false; } /* Check BI2 */ - SystemString bi2In = dirStr + _S("/sys/bi2.bin"); + SystemString bi2In = dirStr + _SYS_STR("/sys/bi2.bin"); Sstat bi2Stat; if (Stat(bi2In.c_str(), &bi2Stat)) { - LogModule.report(logvisor::Error, _S("unable to stat %s"), bi2In.c_str()); + LogModule.report(logvisor::Error, _SYS_STR("unable to stat %s"), bi2In.c_str()); return false; } @@ -368,7 +368,7 @@ public: { std::unique_ptr apploaderBuf = partIn->getApploaderBuf(); size_t apploaderSz = partIn->getApploaderSize(); - SystemString apploaderName(_S("")); + SystemString apploaderName(_SYS_STR("")); ws.write(apploaderBuf.get(), apploaderSz); xferSz += apploaderSz; if (0x2440 + xferSz >= m_curUser) @@ -390,10 +390,10 @@ EBuildResult DiscBuilderGCN::buildFromDirectory(SystemStringView dirIn) return EBuildResult::Failed; if (!CheckFreeSpace(m_outPath.c_str(), 0x57058000)) { - LogModule.report(logvisor::Error, _S("not enough free disk space for %s"), m_outPath.c_str()); + LogModule.report(logvisor::Error, _SYS_STR("not enough free disk space for %s"), m_outPath.c_str()); return EBuildResult::DiskFull; } - m_progressCB(getProgressFactor(), _S("Preallocating image"), -1); + m_progressCB(getProgressFactor(), _SYS_STR("Preallocating image"), -1); ++m_progressIdx; { auto ws = m_fileIO->beginWriteStream(0); @@ -416,7 +416,7 @@ uint64_t DiscBuilderGCN::CalculateTotalSizeRequired(SystemStringView dirIn) sz += 0x30000; if (sz > 0x57058000) { - LogModule.report(logvisor::Error, _S("disc capacity exceeded [%" PRIu64 " / %" PRIu64 "]"), sz, 0x57058000); + LogModule.report(logvisor::Error, _SYS_STR("disc capacity exceeded [%" PRIu64 " / %" PRIu64 "]"), sz, 0x57058000); return -1; } return sz; @@ -439,10 +439,10 @@ EBuildResult DiscMergerGCN::mergeFromDirectory(SystemStringView dirIn) return EBuildResult::Failed; if (!CheckFreeSpace(m_builder.m_outPath.c_str(), 0x57058000)) { - LogModule.report(logvisor::Error, _S("not enough free disk space for %s"), m_builder.m_outPath.c_str()); + LogModule.report(logvisor::Error, _SYS_STR("not enough free disk space for %s"), m_builder.m_outPath.c_str()); return EBuildResult::DiskFull; } - m_builder.m_progressCB(m_builder.getProgressFactor(), _S("Preallocating image"), -1); + m_builder.m_progressCB(m_builder.getProgressFactor(), _SYS_STR("Preallocating image"), -1); ++m_builder.m_progressIdx; { auto ws = m_builder.m_fileIO->beginWriteStream(0); @@ -467,7 +467,7 @@ uint64_t DiscMergerGCN::CalculateTotalSizeRequired(DiscGCN& sourceDisc, SystemSt sz += 0x30000; if (sz > 0x57058000) { - LogModule.report(logvisor::Error, _S("disc capacity exceeded [%" PRIu64 " / %" PRIu64 "]"), sz, 0x57058000); + LogModule.report(logvisor::Error, _SYS_STR("disc capacity exceeded [%" PRIu64 " / %" PRIu64 "]"), sz, 0x57058000); return -1; } return sz; diff --git a/lib/DiscWii.cpp b/lib/DiscWii.cpp index 5f0d5fb..da2e445 100644 --- a/lib/DiscWii.cpp +++ b/lib/DiscWii.cpp @@ -456,7 +456,7 @@ public: uint32_t h3; if (rs->read(&h3, 4) != 4) { - LogModule.report(logvisor::Error, _S("unable to read H3 offset apploader")); + LogModule.report(logvisor::Error, _SYS_STR("unable to read H3 offset apploader")); return {}; } h3 = SBig(h3); @@ -479,7 +479,7 @@ public: SystemString basePathStr(basePath); /* Extract Ticket */ - SystemString ticketPath = basePathStr + _S("/ticket.bin"); + SystemString ticketPath = basePathStr + _SYS_STR("/ticket.bin"); if (ctx.force || Stat(ticketPath.c_str(), &theStat)) { if (ctx.progressCB) @@ -491,7 +491,7 @@ public: } /* Extract TMD */ - SystemString tmdPath = basePathStr + _S("/tmd.bin"); + SystemString tmdPath = basePathStr + _SYS_STR("/tmd.bin"); if (ctx.force || Stat(tmdPath.c_str(), &theStat)) { if (ctx.progressCB) @@ -503,7 +503,7 @@ public: } /* Extract Certs */ - SystemString certPath = basePathStr + _S("/cert.bin"); + SystemString certPath = basePathStr + _SYS_STR("/cert.bin"); if (ctx.force || Stat(certPath.c_str(), &theStat)) { if (ctx.progressCB) @@ -517,7 +517,7 @@ public: } /* Extract H3 */ - SystemString h3Path = basePathStr + _S("/h3.bin"); + SystemString h3Path = basePathStr + _SYS_STR("/h3.bin"); if (ctx.force || Stat(h3Path.c_str(), &theStat)) { if (ctx.progressCB) @@ -606,16 +606,16 @@ bool DiscWii::extractDiscHeaderFiles(SystemStringView basePath, const Extraction { SystemString basePathStr(basePath); - if (Mkdir((basePathStr + _S("/disc")).c_str(), 0755) && errno != EEXIST) + if (Mkdir((basePathStr + _SYS_STR("/disc")).c_str(), 0755) && errno != EEXIST) { - LogModule.report(logvisor::Error, _S("unable to mkdir '%s/disc'"), basePathStr.c_str()); + LogModule.report(logvisor::Error, _SYS_STR("unable to mkdir '%s/disc'"), basePathStr.c_str()); return false; } Sstat theStat; /* Extract Header */ - SystemString headerPath = basePathStr + _S("/disc/header.bin"); + SystemString headerPath = basePathStr + _SYS_STR("/disc/header.bin"); if (ctx.force || Stat(headerPath.c_str(), &theStat)) { if (ctx.progressCB) @@ -632,7 +632,7 @@ bool DiscWii::extractDiscHeaderFiles(SystemStringView basePath, const Extraction } /* Extract Region info */ - SystemString regionPath = basePathStr + _S("/disc/region.bin"); + SystemString regionPath = basePathStr + _SYS_STR("/disc/region.bin"); if (ctx.force || Stat(regionPath.c_str(), &theStat)) { if (ctx.progressCB) @@ -988,7 +988,7 @@ public: }* bfWindow = (BFWindow*)(tmdData.get() + 0x19A); bool good = false; uint64_t attempts = 0; - SystemString bfName(_S("Brute force attempts")); + SystemString bfName(_SYS_STR("Brute force attempts")); for (int w=0 ; w<7 ; ++w) { for (uint64_t i=0 ; i apploaderBuf = partIn->getApploaderBuf(); size_t apploaderSz = partIn->getApploaderSize(); - SystemString apploaderName(_S("")); + SystemString apploaderName(_SYS_STR("")); cws.write(apploaderBuf.get(), apploaderSz); xferSz += apploaderSz; if (0x2440 + xferSz >= 0x1F0000) @@ -1258,7 +1258,7 @@ public: EBuildResult DiscBuilderWii::buildFromDirectory(SystemStringView dirIn) { SystemString dirStr(dirIn); - SystemString basePath = SystemString(dirStr) + _S("/") + getKindString(PartitionKind::Data); + SystemString basePath = SystemString(dirStr) + _SYS_STR("/") + getKindString(PartitionKind::Data); PartitionBuilderWii& pb = static_cast(*m_partitions[0]); uint64_t filledSz = pb.m_baseOffset; @@ -1267,10 +1267,10 @@ EBuildResult DiscBuilderWii::buildFromDirectory(SystemStringView dirIn) if (!CheckFreeSpace(m_outPath.c_str(), m_discCapacity)) { - LogModule.report(logvisor::Error, _S("not enough free disk space for %s"), m_outPath.c_str()); + LogModule.report(logvisor::Error, _SYS_STR("not enough free disk space for %s"), m_outPath.c_str()); return EBuildResult::DiskFull; } - m_progressCB(getProgressFactor(), _S("Preallocating image"), -1); + m_progressCB(getProgressFactor(), _SYS_STR("Preallocating image"), -1); ++m_progressIdx; { std::unique_ptr ws = m_fileIO->beginWriteStream(0); @@ -1291,14 +1291,14 @@ EBuildResult DiscBuilderWii::buildFromDirectory(SystemStringView dirIn) return EBuildResult::Failed; } - m_progressCB(getProgressFactor(), _S("Finishing Disc"), -1); + m_progressCB(getProgressFactor(), _SYS_STR("Finishing Disc"), -1); ++m_progressIdx; /* Populate disc header */ std::unique_ptr ws = m_fileIO->beginWriteStream(0); if (!ws) return EBuildResult::Failed; - SystemString headerPath = basePath + _S("/disc/header.bin"); + SystemString headerPath = basePath + _SYS_STR("/disc/header.bin"); std::unique_ptr rs = NewFileIO(headerPath.c_str())->beginReadStream(); if (!rs) return EBuildResult::Failed; @@ -1320,7 +1320,7 @@ EBuildResult DiscBuilderWii::buildFromDirectory(SystemStringView dirIn) ws->write(vals, 4); /* Populate region info */ - SystemString regionPath = basePath + _S("/disc/region.bin"); + SystemString regionPath = basePath + _SYS_STR("/disc/region.bin"); rs = NewFileIO(regionPath.c_str())->beginReadStream(); if (!rs) return EBuildResult::Failed; @@ -1364,7 +1364,7 @@ uint64_t DiscBuilderWii::CalculateTotalSizeRequired(SystemStringView dirIn, bool dualLayer = (sz > 0x118240000); if (sz > 0x1FB4E0000) { - LogModule.report(logvisor::Error, _S("disc capacity exceeded [%" PRIu64 " / %" PRIu64 "]"), sz, 0x1FB4E0000); + LogModule.report(logvisor::Error, _SYS_STR("disc capacity exceeded [%" PRIu64 " / %" PRIu64 "]"), sz, 0x1FB4E0000); return -1; } return sz; @@ -1391,10 +1391,10 @@ EBuildResult DiscMergerWii::mergeFromDirectory(SystemStringView dirIn) if (!CheckFreeSpace(m_builder.m_outPath.c_str(), m_builder.m_discCapacity)) { - LogModule.report(logvisor::Error, _S("not enough free disk space for %s"), m_builder.m_outPath.c_str()); + LogModule.report(logvisor::Error, _SYS_STR("not enough free disk space for %s"), m_builder.m_outPath.c_str()); return EBuildResult::DiskFull; } - m_builder.m_progressCB(m_builder.getProgressFactor(), _S("Preallocating image"), -1); + m_builder.m_progressCB(m_builder.getProgressFactor(), _SYS_STR("Preallocating image"), -1); ++m_builder.m_progressIdx; { std::unique_ptr ws = m_builder.m_fileIO->beginWriteStream(0); @@ -1415,7 +1415,7 @@ EBuildResult DiscMergerWii::mergeFromDirectory(SystemStringView dirIn) return EBuildResult::Failed; } - m_builder.m_progressCB(m_builder.getProgressFactor(), _S("Finishing Disc"), -1); + m_builder.m_progressCB(m_builder.getProgressFactor(), _SYS_STR("Finishing Disc"), -1); ++m_builder.m_progressIdx; /* Populate disc header */ @@ -1483,7 +1483,7 @@ uint64_t DiscMergerWii::CalculateTotalSizeRequired(DiscWii& sourceDisc, dualLayer = (sz > 0x118240000); if (sz > 0x1FB4E0000) { - LogModule.report(logvisor::Error, _S("disc capacity exceeded [%" PRIu64 " / %" PRIu64 "]"), sz, 0x1FB4E0000); + LogModule.report(logvisor::Error, _SYS_STR("disc capacity exceeded [%" PRIu64 " / %" PRIu64 "]"), sz, 0x1FB4E0000); return -1; } return sz; diff --git a/lib/FileIOFILE.cpp b/lib/FileIOFILE.cpp index 1163b7a..35019d2 100644 --- a/lib/FileIOFILE.cpp +++ b/lib/FileIOFILE.cpp @@ -17,7 +17,7 @@ public: bool exists() { - FILE* fp = Fopen(m_path.c_str(), _S("rb")); + FILE* fp = Fopen(m_path.c_str(), _SYS_STR("rb")); if (!fp) return false; fclose(fp); @@ -26,7 +26,7 @@ public: uint64_t size() { - FILE* fp = Fopen(m_path.c_str(), _S("rb")); + FILE* fp = Fopen(m_path.c_str(), _SYS_STR("rb")); if (!fp) return 0; FSeek(fp, 0, SEEK_END); @@ -42,27 +42,27 @@ public: WriteStream(SystemStringView path, int64_t maxWriteSize, bool& err) : m_maxWriteSize(maxWriteSize) { - fp = Fopen(path.data(), _S("wb")); + fp = Fopen(path.data(), _SYS_STR("wb")); if (!fp) { - LogModule.report(logvisor::Error, _S("unable to open '%s' for writing"), path.data()); + LogModule.report(logvisor::Error, _SYS_STR("unable to open '%s' for writing"), path.data()); err = true; } } WriteStream(SystemStringView path, uint64_t offset, int64_t maxWriteSize, bool& err) : m_maxWriteSize(maxWriteSize) { - fp = Fopen(path.data(), _S("ab")); + fp = Fopen(path.data(), _SYS_STR("ab")); if (!fp) goto FailLoc; fclose(fp); - fp = Fopen(path.data(), _S("r+b")); + fp = Fopen(path.data(), _SYS_STR("r+b")); if (!fp) goto FailLoc; FSeek(fp, offset, SEEK_SET); return; FailLoc: - LogModule.report(logvisor::Error, _S("unable to open '%s' for writing"), path.data()); + LogModule.report(logvisor::Error, _SYS_STR("unable to open '%s' for writing"), path.data()); err = true; } ~WriteStream() @@ -75,7 +75,7 @@ public: { if (FTell(fp) + length > m_maxWriteSize) { - LogModule.report(logvisor::Error, _S("write operation exceeds file's %" PRIi64 "-byte limit"), m_maxWriteSize); + LogModule.report(logvisor::Error, _SYS_STR("write operation exceeds file's %" PRIi64 "-byte limit"), m_maxWriteSize); return 0; } } @@ -104,11 +104,11 @@ public: FILE* fp; ReadStream(SystemStringView path, bool& err) { - fp = Fopen(path.data(), _S("rb")); + fp = Fopen(path.data(), _SYS_STR("rb")); if (!fp) { err = true; - LogModule.report(logvisor::Error, _S("unable to open '%s' for reading"), path.data()); + LogModule.report(logvisor::Error, _SYS_STR("unable to open '%s' for reading"), path.data()); } } ReadStream(SystemStringView path, uint64_t offset, bool& err) diff --git a/lib/FileIOWin32.cpp b/lib/FileIOWin32.cpp index db647bb..02ab9bd 100644 --- a/lib/FileIOWin32.cpp +++ b/lib/FileIOWin32.cpp @@ -64,7 +64,7 @@ public: #endif if (fp == INVALID_HANDLE_VALUE) { - LogModule.report(logvisor::Error, _S("unable to open '%s' for writing"), path.data()); + LogModule.report(logvisor::Error, _SYS_STR("unable to open '%s' for writing"), path.data()); err = true; } } @@ -79,7 +79,7 @@ public: #endif if (fp == INVALID_HANDLE_VALUE) { - LogModule.report(logvisor::Error, _S("unable to open '%s' for writing"), path.data()); + LogModule.report(logvisor::Error, _SYS_STR("unable to open '%s' for writing"), path.data()); err = true; return; } @@ -100,7 +100,7 @@ public: SetFilePointerEx(fp, li, &res, FILE_CURRENT); if (res.QuadPart + int64_t(length) > m_maxWriteSize) { - LogModule.report(logvisor::Error, _S("write operation exceeds file's %" PRIi64 "-byte limit"), m_maxWriteSize); + LogModule.report(logvisor::Error, _SYS_STR("write operation exceeds file's %" PRIi64 "-byte limit"), m_maxWriteSize); return 0; } } @@ -141,7 +141,7 @@ public: if (fp == INVALID_HANDLE_VALUE) { err = true; - LogModule.report(logvisor::Error, _S("unable to open '%s' for reading"), path.data()); + LogModule.report(logvisor::Error, _SYS_STR("unable to open '%s' for reading"), path.data()); } } ReadStream(SystemStringView path, uint64_t offset, bool& err) diff --git a/lib/nod.cpp b/lib/nod.cpp index b8f9b3e..680c05e 100644 --- a/lib/nod.cpp +++ b/lib/nod.cpp @@ -16,7 +16,7 @@ std::unique_ptr OpenDiscFromImage(SystemStringView path, bool& isWii) std::unique_ptr fio = NewFileIO(path); if (!fio->exists()) { - LogModule.report(logvisor::Error, _S("Unable to open '%s'"), path.data()); + LogModule.report(logvisor::Error, _SYS_STR("Unable to open '%s'"), path.data()); return {}; } std::unique_ptr rs = fio->beginReadStream(); @@ -28,7 +28,7 @@ std::unique_ptr OpenDiscFromImage(SystemStringView path, bool& isWii) uint32_t magic = 0; if (rs->read(&magic, 4) != 4) { - LogModule.report(logvisor::Error, _S("Unable to read magic from '%s'"), path.data()); + LogModule.report(logvisor::Error, _SYS_STR("Unable to read magic from '%s'"), path.data()); return {}; } @@ -58,7 +58,7 @@ std::unique_ptr OpenDiscFromImage(SystemStringView path, bool& isWii) if (!discIO) { - LogModule.report(logvisor::Error, _S("'%s' is not a valid image"), path.data()); + LogModule.report(logvisor::Error, _SYS_STR("'%s' is not a valid image"), path.data()); return {}; }