aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorlizzie <lizzie@eden-emu.dev>2026-05-13 19:14:59 +0200
committercrueter <crueter@eden-emu.dev>2026-05-13 19:14:59 +0200
commitee188168c12188340961314e1dfc70a4f7ad4f7a (patch)
tree5922424fc6ece71efddf2db427b2e7cb18a3c226 /src
parent1f558ce9b3ae5feb5c56dbc1fe9825cfb8470f05 (diff)
[common] do not crash when don't have permissions to /tmp/eden directory due to unforessen circumstances (FreeBSD) (#3912)
instead of throwing, use std::error_code and such due to reasons unberknownst to me, the UID of the /tmp/eden directory was set for another user, this inevitably caused a crash due to wrong permissions (which is a very user unfriendly thing to do generally) Signed-off-by: lizzie <lizzie@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3912 Reviewed-by: crueter <crueter@eden-emu.dev>
Diffstat (limited to 'src')
-rw-r--r--src/frontend_common/data_manager.cpp6
-rw-r--r--src/qt_common/util/content.cpp10
-rw-r--r--src/qt_common/util/mod.cpp11
3 files changed, 13 insertions, 14 deletions
diff --git a/src/frontend_common/data_manager.cpp b/src/frontend_common/data_manager.cpp
index 280cbba4ab..e4e9a32ce1 100644
--- a/src/frontend_common/data_manager.cpp
+++ b/src/frontend_common/data_manager.cpp
@@ -46,10 +46,10 @@ const std::string GetDataDirString(DataDir dir, const std::string &user_id)
u64 ClearDir(DataDir dir, const std::string &user_id)
{
fs::path data_dir = GetDataDir(dir, user_id);
- u64 result = fs::remove_all(data_dir);
-
+ std::error_code ec;
+ u64 result = fs::remove_all(data_dir, ec);
// mkpath at the end just so it actually exists
- fs::create_directories(data_dir);
+ fs::create_directories(data_dir, ec);
return result;
}
diff --git a/src/qt_common/util/content.cpp b/src/qt_common/util/content.cpp
index 4d9b324608..f705b3e00f 100644
--- a/src/qt_common/util/content.cpp
+++ b/src/qt_common/util/content.cpp
@@ -181,15 +181,13 @@ void InstallFirmware(const QString& location, bool recursive) {
QString UnzipFirmwareToTmp(const QString& location) {
namespace fs = std::filesystem;
- fs::path tmp{fs::temp_directory_path()};
-
- if (!fs::create_directories(tmp / "eden" / "firmware")) {
+ fs::path tmp{fs::temp_directory_path() / "eden" / "firmware"};
+ std::error_code ec;
+ fs::remove_all(tmp, ec);
+ if (!fs::create_directories(tmp, ec)) {
return QString();
}
- tmp /= "eden";
- tmp /= "firmware";
-
QString qCacheDir = QString::fromStdString(tmp.string());
QFile zip(location);
diff --git a/src/qt_common/util/mod.cpp b/src/qt_common/util/mod.cpp
index 4e7fd54e79..3e75cb21fa 100644
--- a/src/qt_common/util/mod.cpp
+++ b/src/qt_common/util/mod.cpp
@@ -83,8 +83,9 @@ QStringList GetModFolders(const QString& root, const QString& fallbackName) {
// now make a temp directory...
const auto mod_dir = fs::temp_directory_path() / "eden" / "mod" / name.toStdString();
const auto tmp = mod_dir / to_make;
- fs::remove_all(mod_dir);
- if (!fs::create_directories(tmp)) {
+ std::error_code ec;
+ fs::remove_all(mod_dir, ec);
+ if (!fs::create_directories(tmp, ec)) {
LOG_ERROR(Frontend, "Failed to create temporary directory {}", tmp.string());
return {};
}
@@ -116,9 +117,9 @@ QStringList GetModFolders(const QString& root, const QString& fallbackName) {
const QString ExtractMod(const QString& path) {
namespace fs = std::filesystem;
fs::path tmp{fs::temp_directory_path() / "eden" / "unzip_mod"};
-
- fs::remove_all(tmp);
- if (!fs::create_directories(tmp)) {
+ std::error_code ec;
+ fs::remove_all(tmp, ec);
+ if (!fs::create_directories(tmp, ec)) {
QtCommon::Frontend::Critical(tr("Mod Extract Failed"),
tr("Failed to create temporary directory %1")
.arg(QString::fromStdString(tmp.string())));