changeset 9893:b902c0851258 draft

(svn r14041) -Feature(tte): make it possible to filter list_patches output like it's done for other list_* console commands
author glx <glx@openttd.org>
date Mon, 11 Aug 2008 17:15:31 +0000
parents 89b597799b87
children 7d5fe75f74c4
files src/console_cmds.cpp src/settings.cpp src/settings_func.h
diffstat 3 files changed, 8 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/console_cmds.cpp
+++ b/src/console_cmds.cpp
@@ -1267,13 +1267,13 @@
 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;
 }
 
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -2385,11 +2385,14 @@
 	}
 }
 
-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);
 
--- 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();