summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/console_cmds.cpp6
-rw-r--r--src/settings.cpp5
-rw-r--r--src/settings_func.h2
3 files changed, 8 insertions, 5 deletions
diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp
index c73c76468..2286f865f 100644
--- a/src/console_cmds.cpp
+++ b/src/console_cmds.cpp
@@ -1267,13 +1267,13 @@ DEF_CONSOLE_CMD(ConPatch)
DEF_CONSOLE_CMD(ConListPatches)
{
if (argc == 0) {
- IConsoleHelp("List patch options. Usage: 'list_patches'");
+ IConsoleHelp("List patch options. Usage: 'list_patches [<pre-filter>]'");
return true;
}
- if (argc != 1) return false;
+ if (argc > 2) return false;
- IConsoleListPatches();
+ IConsoleListPatches((argc == 2) ? argv[1] : NULL);
return true;
}
diff --git a/src/settings.cpp b/src/settings.cpp
index c648843bf..8f82d7eae 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -2385,11 +2385,14 @@ void IConsoleGetPatchSetting(const char *name)
}
}
-void IConsoleListPatches()
+void IConsoleListPatches(const char *prefilter)
{
IConsolePrintF(CC_WARNING, "All patches with their current value:");
for (const SettingDesc *sd = _patch_settings; sd->save.cmd != SL_END; sd++) {
+ if (prefilter != NULL) {
+ if (strncmp(sd->desc.name, prefilter, min(strlen(sd->desc.name), strlen(prefilter))) != 0) continue;
+ }
char value[80];
const void *ptr = GetVariableAddress((_game_mode == GM_MENU) ? &_settings_newgame : &_settings_game, &sd->save);
diff --git a/src/settings_func.h b/src/settings_func.h
index 725cc3bd1..2dcb705c0 100644
--- a/src/settings_func.h
+++ b/src/settings_func.h
@@ -10,7 +10,7 @@
void IConsoleSetPatchSetting(const char *name, const char *value);
void IConsoleSetPatchSetting(const char *name, int32 value);
void IConsoleGetPatchSetting(const char *name);
-void IConsoleListPatches();
+void IConsoleListPatches(const char *prefilter);
void LoadFromConfig();
void SaveToConfig();