summaryrefslogtreecommitdiff
path: root/Source/Core/Common/NandPaths.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/Common/NandPaths.cpp')
-rw-r--r--Source/Core/Common/NandPaths.cpp54
1 files changed, 46 insertions, 8 deletions
diff --git a/Source/Core/Common/NandPaths.cpp b/Source/Core/Common/NandPaths.cpp
index c695d0744a..6037137410 100644
--- a/Source/Core/Common/NandPaths.cpp
+++ b/Source/Core/Common/NandPaths.cpp
@@ -7,6 +7,7 @@
#include <string>
#include <utility>
+#include "Common/CommonPaths.h"
#include "Common/CommonTypes.h"
#include "Common/FileUtil.h"
#include "Common/NandPaths.h"
@@ -15,17 +16,55 @@
namespace Common
{
+static std::string s_temp_wii_root;
+
+void InitializeWiiRoot(bool use_dummy)
+{
+ ShutdownWiiRoot();
+ if (use_dummy)
+ {
+ s_temp_wii_root = File::CreateTempDir();
+ if (s_temp_wii_root.empty())
+ {
+ ERROR_LOG(WII_IPC_FILEIO, "Could not create temporary directory");
+ return;
+ }
+ File::CopyDir(File::GetSysDirectory() + WII_USER_DIR, s_temp_wii_root);
+ WARN_LOG(WII_IPC_FILEIO, "Using temporary directory %s for minimal Wii FS", s_temp_wii_root.c_str());
+ static bool s_registered;
+ if (!s_registered)
+ {
+ s_registered = true;
+ atexit(ShutdownWiiRoot);
+ }
+ File::SetUserPath(D_SESSION_WIIROOT_IDX, s_temp_wii_root);
+ }
+ else
+ {
+ File::SetUserPath(D_SESSION_WIIROOT_IDX, File::GetUserPath(D_WIIROOT_IDX));
+ }
+}
+
+void ShutdownWiiRoot()
+{
+ if (!s_temp_wii_root.empty())
+ {
+ File::DeleteDirRecursively(s_temp_wii_root);
+ s_temp_wii_root.clear();
+ }
+}
+
std::string GetTicketFileName(u64 _titleID)
{
- return StringFromFormat("%sticket/%08x/%08x.tik",
- File::GetUserPath(D_WIIUSER_IDX).c_str(),
+ return StringFromFormat("%s/ticket/%08x/%08x.tik",
+ File::GetUserPath(D_SESSION_WIIROOT_IDX).c_str(),
(u32)(_titleID >> 32), (u32)_titleID);
}
std::string GetTitleDataPath(u64 _titleID)
{
- return StringFromFormat("%stitle/%08x/%08x/data/",
- File::GetUserPath(D_WIIUSER_IDX).c_str(),
+ return StringFromFormat("%s/title/%08x/%08x/data/",
+ File::GetUserPath(D_SESSION_WIIROOT_IDX).c_str(),
(u32)(_titleID >> 32), (u32)_titleID);
}
@@ -35,8 +74,8 @@ std::string GetTMDFileName(u64 _titleID)
}
std::string GetTitleContentPath(u64 _titleID)
{
- return StringFromFormat("%stitle/%08x/%08x/content/",
- File::GetUserPath(D_WIIUSER_IDX).c_str(),
+ return StringFromFormat("%s/title/%08x/%08x/content/",
+ File::GetUserPath(D_SESSION_WIIROOT_IDX).c_str(),
(u32)(_titleID >> 32), (u32)_titleID);
}
@@ -89,8 +128,7 @@ void ReadReplacements(replace_v& replacements)
{
replacements.clear();
const std::string replace_fname = "/sys/replace";
- std::string filename(File::GetUserPath(D_WIIROOT_IDX));
- filename += replace_fname;
+ std::string filename = File::GetUserPath(D_SESSION_WIIROOT_IDX) + replace_fname;
if (!File::Exists(filename))
CreateReplacementFile(filename);