From 3c8c48432758b7a631bac7fe452c208f5140b426 Mon Sep 17 00:00:00 2001 From: Rachael Alexanderson Date: Fri, 24 Jan 2025 23:19:02 -0500 Subject: [PATCH] - add `CVAR_SYSTEM_ONLY` flag to automatically blacklist filesystem-related cvars for defcvars. This should be used on any cvar that can be changed by the user that relates to filenames or pathnames --- src/common/audio/music/music_config.cpp | 14 +++++++------- src/common/console/c_cvars.h | 2 ++ src/common/menu/savegamemanager.cpp | 2 +- src/d_defcvars.cpp | 3 +++ 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/common/audio/music/music_config.cpp b/src/common/audio/music/music_config.cpp index efdb056374..5ea5e97d91 100644 --- a/src/common/audio/music/music_config.cpp +++ b/src/common/audio/music/music_config.cpp @@ -95,7 +95,7 @@ CUSTOM_CVAR(Bool, adl_use_custom_bank, false, CVAR_ARCHIVE | CVAR_VIRTUAL) FORWARD_BOOL_CVAR(adl_use_custom_bank); } -CUSTOM_CVAR(String, adl_custom_bank, "", CVAR_ARCHIVE | CVAR_VIRTUAL) +CUSTOM_CVAR(String, adl_custom_bank, "", CVAR_ARCHIVE | CVAR_VIRTUAL | CVAR_SYSTEM_ONLY) { FORWARD_STRING_CVAR(adl_custom_bank); } @@ -111,12 +111,12 @@ CUSTOM_CVAR(Int, adl_volume_model, 0 /*ADLMIDI_VolumeModel_AUTO*/, CVAR_ARCHIVE // //========================================================================== -CUSTOM_CVAR(String, fluid_lib, "", CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_VIRTUAL) +CUSTOM_CVAR(String, fluid_lib, "", CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_VIRTUAL | CVAR_SYSTEM_ONLY) { FORWARD_STRING_CVAR(fluid_lib); } -CUSTOM_CVAR(String, fluid_patchset, GAMENAMELOWERCASE, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_VIRTUAL) +CUSTOM_CVAR(String, fluid_patchset, GAMENAMELOWERCASE, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_VIRTUAL | CVAR_SYSTEM_ONLY) { FORWARD_STRING_CVAR(fluid_patchset); } @@ -278,7 +278,7 @@ CUSTOM_CVAR(String, opn_custom_bank, "", CVAR_ARCHIVE | CVAR_VIRTUAL) //========================================================================== -CUSTOM_CVAR(String, midi_config, "", CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_VIRTUAL) +CUSTOM_CVAR(String, midi_config, "", CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_VIRTUAL | CVAR_SYSTEM_ONLY) { FORWARD_STRING_CVAR(gus_config); } @@ -288,7 +288,7 @@ CUSTOM_CVAR(Bool, midi_dmxgus, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_VI FORWARD_BOOL_CVAR(gus_dmxgus); } -CUSTOM_CVAR(String, gus_patchdir, "", CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_VIRTUAL) +CUSTOM_CVAR(String, gus_patchdir, "", CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_VIRTUAL | CVAR_SYSTEM_ONLY) { FORWARD_STRING_CVAR(gus_patchdir); } @@ -395,7 +395,7 @@ CUSTOM_CVAR(Float, timidity_min_sustain_time, 5000.f, CVAR_ARCHIVE | CVAR_GLOBAL } #endif -CUSTOM_CVAR(String, timidity_config, GAMENAMELOWERCASE, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_VIRTUAL) +CUSTOM_CVAR(String, timidity_config, GAMENAMELOWERCASE, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_VIRTUAL | CVAR_SYSTEM_ONLY) { FORWARD_STRING_CVAR(timidity_config); } @@ -406,7 +406,7 @@ CUSTOM_CVAR(String, timidity_config, GAMENAMELOWERCASE, CVAR_ARCHIVE | CVAR_GLOB // //========================================================================== -CUSTOM_CVAR(String, wildmidi_config, "", CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_VIRTUAL) +CUSTOM_CVAR(String, wildmidi_config, "", CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_VIRTUAL | CVAR_SYSTEM_ONLY) { FORWARD_STRING_CVAR(wildmidi_config); } diff --git a/src/common/console/c_cvars.h b/src/common/console/c_cvars.h index c52af0aeb8..ccc3cfa6a6 100644 --- a/src/common/console/c_cvars.h +++ b/src/common/console/c_cvars.h @@ -75,6 +75,8 @@ enum CVAR_CONFIG_ONLY = 1 << 18, // do not save var to savegame and do not send it across network. CVAR_ZS_CUSTOM = 1 << 19, // Custom CVar backed by a ZScript class CVAR_ZS_CUSTOM_CLONE = 1 << 20, // Clone of a Custom ZScript CVar + + CVAR_SYSTEM_ONLY = 1 << 21, // System-related cvar that should only ever be changed by the user }; enum ECVarType diff --git a/src/common/menu/savegamemanager.cpp b/src/common/menu/savegamemanager.cpp index 929d631d13..efb5a02af1 100644 --- a/src/common/menu/savegamemanager.cpp +++ b/src/common/menu/savegamemanager.cpp @@ -49,7 +49,7 @@ #include "m_argv.h" #include "i_specialpaths.h" -CVAR(String, save_dir, "", CVAR_ARCHIVE | CVAR_GLOBALCONFIG); +CVAR(String, save_dir, "", CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_SYSTEM_ONLY); FString SavegameFolder; CVAR(Int, save_sort_order, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) diff --git a/src/d_defcvars.cpp b/src/d_defcvars.cpp index bcd8ad1940..ca274a7fe7 100644 --- a/src/d_defcvars.cpp +++ b/src/d_defcvars.cpp @@ -134,6 +134,9 @@ void D_GrabCVarDefaults() var = FindCVar(CurrentFindCVar.GetChars(), NULL); + if (var->GetFlags() & CVAR_SYSTEM_ONLY) + blacklisted = true; + if (blacklisted) { sc.ScriptMessage("Cannot set cvar default for blacklisted cvar '%s'", sc.String);