From 39b91d88752699f3f8328b45529f93b511f19c01 Mon Sep 17 00:00:00 2001 From: Ed Maste Date: Wed, 16 Oct 2024 13:32:49 -0400 Subject: [PATCH] UI: Restore XDG config path update for FreeBSD Restore move_to_xdg from commit ba02e065fe91 to migrate from pre-XDG config path $HOME/.obs-studio on FreeBSD. --- UI/obs-app.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/UI/obs-app.cpp b/UI/obs-app.cpp index 2413a6567cfa87..883bee21a0774d 100644 --- a/UI/obs-app.cpp +++ b/UI/obs-app.cpp @@ -1510,6 +1510,35 @@ static uint64_t convert_log_name(bool has_prefix, const char *name) return std::stoull(timestring.str()); } +/* If upgrading from an older (non-XDG) build of OBS, move config files to XDG directory. */ +/* TODO: Remove after version 32.0. */ +#if defined(__FreeBSD__) +static void move_to_xdg(void) +{ + char old_path[512]; + char new_path[512]; + char *home = getenv("HOME"); + if (!home) + return; + + if (snprintf(old_path, sizeof(old_path), "%s/.obs-studio", home) <= 0) + return; + + /* make base xdg path if it doesn't already exist */ + if (GetAppConfigPath(new_path, sizeof(new_path), "") <= 0) + return; + if (os_mkdirs(new_path) == MKDIR_ERROR) + return; + + if (GetAppConfigPath(new_path, sizeof(new_path), "obs-studio") <= 0) + return; + + if (os_file_exists(old_path) && !os_file_exists(new_path)) { + rename(old_path, new_path); + } +} +#endif + static void delete_oldest_file(bool has_prefix, const char *location) { BPtr logDir(GetAppConfigPathPtr(location)); @@ -2467,6 +2496,10 @@ int main(int argc, char *argv[]) base_get_log_handler(&def_log_handler, nullptr); +#if defined(__FreeBSD__) + move_to_xdg(); +#endif + obs_set_cmdline_args(argc, argv); for (int i = 1; i < argc; i++) {