From 13d39f39aa894b63b26de90a656825a572ec57a4 Mon Sep 17 00:00:00 2001 From: BoiledElectricity Date: Sun, 9 Aug 2026 17:18:58 +0200 Subject: [PATCH] [qt] fix relative ROM paths passed on the CLI on macOS (#4105) On macOS, convert relative paths to absolute paths before changing the working directory. Otherwise, valid Switch formats may incorrectly fail with a "The ROM format is not supported" error. Fixes: https://github.com/eden-emulator/Issue-Reports/issues/404 Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4105 Reviewed-by: crueter Reviewed-by: Samuel Reviewed-by: MaranBr --- src/yuzu/main.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index 8cc979124c..e34f8f8d94 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -16,6 +16,12 @@ #include #endif +#if defined(__APPLE__) +#include +#include +#include +#endif + #include "main_window.h" #ifdef _WIN32 @@ -126,6 +132,16 @@ int main(int argc, char* argv[]) { #endif // _WIN32 #if defined(__APPLE__) + // Convert the relative path to an absolute path before the chdir + char resolved[PATH_MAX]; + for (int i = 1; i < argc; ++i) { + if (strcmp(argv[i], "-u") == 0 || strcmp(argv[i], "-input-profile") == 0) { + ++i; + } else if (argv[i][0] != '-' && argv[i][0] != '/' && realpath(argv[i], resolved)) { + argv[i] = strdup(resolved); + } + } + // If you start a bundle (binary) on OSX without the Terminal, the working directory is "/". // But since we require the working directory to be the executable path for the location of // the user folder in the Qt Frontend, we need to cd into that working directory