mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-14 15:00:30 +02:00
Move InitSysDirectories to where it belongs and rename it. Plus warning fixes.
This commit is contained in:
1 parent
6f6ea4595a
commit
44d602ca7d
7 files changed
+74
-92
No files matched your search
@@ -707,74 +707,6 @@ Path GetSysDirectory(PSPDirectories directoryType) {
|
||||
}
|
||||
}
|
||||
|
||||
#if PPSSPP_PLATFORM(WINDOWS)
|
||||
// Run this at startup time. Please use GetSysDirectory if you need to query where folders are.
|
||||
void InitSysDirectories() {
|
||||
if (!g_Config.memStickDirectory.empty() && !g_Config.flash0Directory.empty())
|
||||
return;
|
||||
|
||||
const Path &exePath = File::GetExeDirectory();
|
||||
// Mount a filesystem
|
||||
g_Config.flash0Directory = exePath / "assets/flash0";
|
||||
|
||||
// Detect the "My Documents"(XP) or "Documents"(on Vista/7/8) folder.
|
||||
#if PPSSPP_PLATFORM(UWP)
|
||||
// We set g_Config.memStickDirectory outside.
|
||||
|
||||
#else
|
||||
// Caller sets this to the Documents folder.
|
||||
const Path rootMyDocsPath = g_Config.internalDataDirectory;
|
||||
const Path myDocsPath = rootMyDocsPath / "PPSSPP";
|
||||
const Path installedFile = exePath / "installed.txt";
|
||||
const bool installed = File::Exists(installedFile);
|
||||
|
||||
// If installed.txt exists(and we can determine the Documents directory)
|
||||
if (installed && !rootMyDocsPath.empty()) {
|
||||
FILE *fp = File::OpenCFile(installedFile, "rt");
|
||||
if (fp) {
|
||||
char temp[2048];
|
||||
char *tempStr = fgets(temp, sizeof(temp), fp);
|
||||
// Skip UTF-8 encoding bytes if there are any. There are 3 of them.
|
||||
if (tempStr && strncmp(tempStr, "\xEF\xBB\xBF", 3) == 0) {
|
||||
tempStr += 3;
|
||||
}
|
||||
std::string tempString = tempStr ? tempStr : "";
|
||||
if (!tempString.empty() && tempString.back() == '\n')
|
||||
tempString.resize(tempString.size() - 1);
|
||||
|
||||
g_Config.memStickDirectory = Path(tempString);
|
||||
fclose(fp);
|
||||
}
|
||||
|
||||
// Check if the file is empty first, before appending the slash.
|
||||
if (g_Config.memStickDirectory.empty())
|
||||
g_Config.memStickDirectory = myDocsPath;
|
||||
} else {
|
||||
g_Config.memStickDirectory = exePath / "memstick";
|
||||
}
|
||||
|
||||
// Create the memstickpath before trying to write to it, and fall back on Documents yet again
|
||||
// if we can't make it.
|
||||
if (!File::Exists(g_Config.memStickDirectory)) {
|
||||
if (!File::CreateDir(g_Config.memStickDirectory))
|
||||
g_Config.memStickDirectory = myDocsPath;
|
||||
INFO_LOG(COMMON, "Memstick directory not present, creating at '%s'", g_Config.memStickDirectory.c_str());
|
||||
}
|
||||
|
||||
Path testFile = g_Config.memStickDirectory / "_writable_test.$$$";
|
||||
|
||||
// If any directory is read-only, fall back to the Documents directory.
|
||||
// We're screwed anyway if we can't write to Documents, or can't detect it.
|
||||
if (!File::CreateEmptyFile(testFile))
|
||||
g_Config.memStickDirectory = myDocsPath;
|
||||
|
||||
// Clean up our mess.
|
||||
if (File::Exists(testFile))
|
||||
File::Delete(testFile);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
void CreateSysDirectories() {
|
||||
// Create the default directories that a real PSP creates. Good for homebrew so they can
|
||||
// expect a standard environment. Skipping THEME though, that's pointless.
|
||||
|
||||
Reference in new issue
Block a user