summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2014-10-24 00:51:54 +0200
committerbunnei <bunneidev@gmail.com>2014-10-24 00:51:54 +0200
commitce8390ac03661ec2b16e48aeaca02ae8c9291ec5 (patch)
tree0d4a4391fda3c58522b6d6ef056b78f67d2b0592
parentMerge pull request #146 from yuriks/inttypes (diff)
parentCommon: Return from CreateFullPath early if the directory creation fails (diff)
downloadyuzu-ce8390ac03661ec2b16e48aeaca02ae8c9291ec5.tar
yuzu-ce8390ac03661ec2b16e48aeaca02ae8c9291ec5.tar.gz
yuzu-ce8390ac03661ec2b16e48aeaca02ae8c9291ec5.tar.bz2
yuzu-ce8390ac03661ec2b16e48aeaca02ae8c9291ec5.tar.lz
yuzu-ce8390ac03661ec2b16e48aeaca02ae8c9291ec5.tar.xz
yuzu-ce8390ac03661ec2b16e48aeaca02ae8c9291ec5.tar.zst
yuzu-ce8390ac03661ec2b16e48aeaca02ae8c9291ec5.zip
-rw-r--r--src/citra/config.cpp5
-rw-r--r--src/citra/config.h1
-rw-r--r--src/citra/default_ini.h3
-rw-r--r--src/citra_qt/config.cpp14
-rw-r--r--src/citra_qt/config.h3
-rw-r--r--src/common/file_util.cpp6
-rw-r--r--src/core/file_sys/archive_sdmc.cpp10
-rw-r--r--src/core/settings.h2
8 files changed, 40 insertions, 4 deletions
diff --git a/src/citra/config.cpp b/src/citra/config.cpp
index 1d5e9c717..03a0ce606 100644
--- a/src/citra/config.cpp
+++ b/src/citra/config.cpp
@@ -55,9 +55,14 @@ void Config::ReadControls() {
Settings::values.pad_sright_key = glfw_config->GetInteger("Controls", "pad_sright", GLFW_KEY_RIGHT);
}
+void Config::ReadData() {
+ Settings::values.use_virtual_sd = glfw_config->GetBoolean("Data Storage", "use_virtual_sd", true);
+}
+
void Config::Reload() {
LoadINI(glfw_config, glfw_config_loc.c_str(), DefaultINI::glfw_config_file);
ReadControls();
+ ReadData();
}
Config::~Config() {
diff --git a/src/citra/config.h b/src/citra/config.h
index de0570b42..c4fac2459 100644
--- a/src/citra/config.h
+++ b/src/citra/config.h
@@ -16,6 +16,7 @@ class Config {
bool LoadINI(INIReader* config, const char* location, const std::string& default_contents="", bool retry=true);
void ReadControls();
+ void ReadData();
public:
Config();
~Config();
diff --git a/src/citra/default_ini.h b/src/citra/default_ini.h
index 11b985e1b..e7e45f4a9 100644
--- a/src/citra/default_ini.h
+++ b/src/citra/default_ini.h
@@ -25,6 +25,9 @@ pad_sup =
pad_sdown =
pad_sleft =
pad_sright =
+
+[Data Storage]
+use_virtual_sd =
)";
}
diff --git a/src/citra_qt/config.cpp b/src/citra_qt/config.cpp
index 1b116edc5..0c4f75a96 100644
--- a/src/citra_qt/config.cpp
+++ b/src/citra_qt/config.cpp
@@ -64,12 +64,26 @@ void Config::SaveControls() {
qt_config->endGroup();
}
+void Config::ReadData() {
+ qt_config->beginGroup("Data Storage");
+ Settings::values.use_virtual_sd = qt_config->value("use_virtual_sd", true).toBool();
+ qt_config->endGroup();
+}
+
+void Config::SaveData() {
+ qt_config->beginGroup("Data Storage");
+ qt_config->setValue("use_virtual_sd", Settings::values.use_virtual_sd);
+ qt_config->endGroup();
+}
+
void Config::Reload() {
ReadControls();
+ ReadData();
}
void Config::Save() {
SaveControls();
+ SaveData();
}
Config::~Config() {
diff --git a/src/citra_qt/config.h b/src/citra_qt/config.h
index ae390be6b..74c9ff11d 100644
--- a/src/citra_qt/config.h
+++ b/src/citra_qt/config.h
@@ -14,6 +14,9 @@ class Config {
void ReadControls();
void SaveControls();
+
+ void ReadData();
+ void SaveData();
public:
Config();
~Config();
diff --git a/src/common/file_util.cpp b/src/common/file_util.cpp
index 77a226885..35da07306 100644
--- a/src/common/file_util.cpp
+++ b/src/common/file_util.cpp
@@ -191,8 +191,10 @@ bool CreateFullPath(const std::string &fullPath)
// Include the '/' so the first call is CreateDir("/") rather than CreateDir("")
std::string const subPath(fullPath.substr(0, position + 1));
- if (!FileUtil::IsDirectory(subPath))
- FileUtil::CreateDir(subPath);
+ if (!FileUtil::IsDirectory(subPath) && !FileUtil::CreateDir(subPath)) {
+ ERROR_LOG(COMMON, "CreateFullPath: directory creation failed");
+ return false;
+ }
// A safety check
panicCounter--;
diff --git a/src/core/file_sys/archive_sdmc.cpp b/src/core/file_sys/archive_sdmc.cpp
index 213923c02..0b647f7d0 100644
--- a/src/core/file_sys/archive_sdmc.cpp
+++ b/src/core/file_sys/archive_sdmc.cpp
@@ -10,6 +10,7 @@
#include "core/file_sys/archive_sdmc.h"
#include "core/file_sys/directory_sdmc.h"
#include "core/file_sys/file_sdmc.h"
+#include "core/settings.h"
////////////////////////////////////////////////////////////////////////////////////////////////////
// FileSys namespace
@@ -29,8 +30,13 @@ Archive_SDMC::~Archive_SDMC() {
* @return true if it initialized successfully
*/
bool Archive_SDMC::Initialize() {
- if (!FileUtil::IsDirectory(mount_point)) {
- WARN_LOG(FILESYS, "Directory %s not found, disabling SDMC.", mount_point.c_str());
+ if (!Settings::values.use_virtual_sd) {
+ WARN_LOG(FILESYS, "SDMC disabled by config.");
+ return false;
+ }
+
+ if (!FileUtil::CreateFullPath(mount_point)) {
+ WARN_LOG(FILESYS, "Unable to create SDMC path.");
return false;
}
diff --git a/src/core/settings.h b/src/core/settings.h
index a84c3d4b6..d586e2ef4 100644
--- a/src/core/settings.h
+++ b/src/core/settings.h
@@ -24,6 +24,8 @@ struct Values {
int pad_sdown_key;
int pad_sleft_key;
int pad_sright_key;
+
+ bool use_virtual_sd;
} extern values;
}