From b700fff9ac1ee5151102cb6187b2b6ee4321ddd6 Mon Sep 17 00:00:00 2001 From: ITotalJustice <47043333+ITotalJustice@users.noreply.github.com> Date: Mon, 29 Sep 2025 02:19:25 +0100 Subject: [PATCH] devoptab: fix create new mount entries failing if the mount folder didn't already exist. --- sphaira/source/app.cpp | 1 + sphaira/source/utils/devoptab.cpp | 15 +++++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/sphaira/source/app.cpp b/sphaira/source/app.cpp index b2741d8..7448fec 100644 --- a/sphaira/source/app.cpp +++ b/sphaira/source/app.cpp @@ -1606,6 +1606,7 @@ App::App(const char* argv0) { m_fs->CreateDirectory("/config/sphaira/themes"); m_fs->CreateDirectory("/config/sphaira/github"); m_fs->CreateDirectory("/config/sphaira/i18n"); + m_fs->CreateDirectory("/config/sphaira/mount"); } { diff --git a/sphaira/source/utils/devoptab.cpp b/sphaira/source/utils/devoptab.cpp index 7f7c8d8..252ced0 100644 --- a/sphaira/source/utils/devoptab.cpp +++ b/sphaira/source/utils/devoptab.cpp @@ -20,6 +20,8 @@ namespace sphaira::devoptab { namespace { +#define MOUNT_PATH "/config/sphaira/mount/" + using namespace sphaira::ui; using namespace sphaira::devoptab::common; @@ -56,12 +58,12 @@ using TypeConfigs = std::vector; auto BuildIniPathFromType(DevoptabType type) -> fs::FsPath { switch (type) { - case DevoptabType::HTTP: return "/config/sphaira/mount/http.ini"; - case DevoptabType::FTP: return "/config/sphaira/mount/ftp.ini"; - case DevoptabType::SFTP: return "/config/sphaira/mount/sftp.ini"; - case DevoptabType::NFS: return "/config/sphaira/mount/nfs.ini"; - case DevoptabType::SMB: return "/config/sphaira/mount/smb.ini"; - case DevoptabType::WEBDAV: return "/config/sphaira/mount/webdav.ini"; + case DevoptabType::HTTP: return MOUNT_PATH "/http.ini"; + case DevoptabType::FTP: return MOUNT_PATH "/ftp.ini"; + case DevoptabType::SFTP: return MOUNT_PATH "/sftp.ini"; + case DevoptabType::NFS: return MOUNT_PATH "/nfs.ini"; + case DevoptabType::SMB: return MOUNT_PATH "/smb.ini"; + case DevoptabType::WEBDAV: return MOUNT_PATH "/webdav.ini"; } std::unreachable(); @@ -236,6 +238,7 @@ void DevoptabForm::SetupButtons(bool type_change) { const auto ini_path = BuildIniPathFromType(m_type); + fs::FsNativeSd().CreateDirectoryRecursively(MOUNT_PATH); ini_puts(m_config.name.c_str(), "url", m_config.url.c_str(), ini_path); ini_puts(m_config.name.c_str(), "user", m_config.user.c_str(), ini_path); ini_puts(m_config.name.c_str(), "pass", m_config.pass.c_str(), ini_path);