Remove plugin_settings.cfg and supporting code (bug 5605, r=psychonic).
authorDavid Anderson <dvander@alliedmods.net>
Sat Feb 16 15:15:22 2013 -0800 (2013-02-16)
changeset 379098b099a406d2
parent 3789 42e367aa4a00
child 3791 47e1ee9cea86
Remove plugin_settings.cfg and supporting code (bug 5605, r=psychonic).
configs/plugin_settings.cfg
core/AMBuilder
core/PluginInfoDatabase.cpp
core/PluginInfoDatabase.h
core/PluginSys.cpp
core/PluginSys.h
     1.1 --- a/configs/plugin_settings.cfg	Thu Feb 14 19:28:12 2013 -0500
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,36 +0,0 @@
     1.4 -/**
     1.5 - *   Each sub-section of "Plugins" should have a title which specifies a plugin filename.
     1.6 - * Filenames have a wildcard of *.  Appending .smx is not required.
     1.7 - * If the filename has no explicit path, it will be patched to any sub-path in the plugins folder.
     1.8 - *
     1.9 - *   Available properties for plugins are:
    1.10 - * "pause"			- Whether or not the plugin should load paused - "yes" or "no" (default)
    1.11 - * "lifetime"		- Lifetime of the plugin.  Options:
    1.12 - * "mapsync"	 	- Plugins should be reloaded on mapchange if changed (default)
    1.13 - * "global"	 		- Plugin will never be unloaded or updated
    1.14 - * "blockload" 		- Plugin will always be blocked from loading.  Implicit (automatic) loads 
    1.15 - *					  produce no error, but explicit (manual) loads will show an error message.
    1.16 - *					  (Options are one of "yes" or "no")
    1.17 - *
    1.18 - * You can also have an "Options" section declaring options to pass onto the JIT:
    1.19 - * "profile"	- Bit flags for profiling level.  Add flags together to reach a value.
    1.20 - *				  WARNING: Profiler is _ALPHA_ software!  Use it at your own risk for 
    1.21 - *				  development cycles only (not production setups).
    1.22 - *				  See the wiki article "SourceMod Profiler" for more information.
    1.23 - *				  1 - Profile natives
    1.24 - *				  2 - Profile callbacks
    1.25 - *				  4 - Profile internal plugin function calls
    1.26 - */
    1.27 -	
    1.28 -"Plugins"
    1.29 -{
    1.30 -	"*"
    1.31 -	{
    1.32 -		"pause"			"no"
    1.33 -		"lifetime"		"mapsync"
    1.34 -		
    1.35 -		"Options"
    1.36 -		{
    1.37 -		}
    1.38 -	}
    1.39 -}
     2.1 --- a/core/AMBuilder	Thu Feb 14 19:28:12 2013 -0500
     2.2 +++ b/core/AMBuilder	Sat Feb 16 15:15:22 2013 -0800
     2.3 @@ -78,7 +78,6 @@
     2.4  		'TimerSys.cpp',
     2.5  		'CoreConfig.cpp',
     2.6  		'Logger.cpp',
     2.7 -		'PluginInfoDatabase.cpp',
     2.8  		'smn_halflife.cpp',
     2.9  		'PluginSys.cpp',
    2.10  		'smn_console.cpp',
     3.1 --- a/core/PluginInfoDatabase.cpp	Thu Feb 14 19:28:12 2013 -0500
     3.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.3 @@ -1,349 +0,0 @@
     3.4 -/**
     3.5 - * vim: set ts=4 :
     3.6 - * =============================================================================
     3.7 - * SourceMod
     3.8 - * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
     3.9 - * =============================================================================
    3.10 - *
    3.11 - * This program is free software; you can redistribute it and/or modify it under
    3.12 - * the terms of the GNU General Public License, version 3.0, as published by the
    3.13 - * Free Software Foundation.
    3.14 - * 
    3.15 - * This program is distributed in the hope that it will be useful, but WITHOUT
    3.16 - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    3.17 - * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
    3.18 - * details.
    3.19 - *
    3.20 - * You should have received a copy of the GNU General Public License along with
    3.21 - * this program.  If not, see <http://www.gnu.org/licenses/>.
    3.22 - *
    3.23 - * As a special exception, AlliedModders LLC gives you permission to link the
    3.24 - * code of this program (as well as its derivative works) to "Half-Life 2," the
    3.25 - * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
    3.26 - * by the Valve Corporation.  You must obey the GNU General Public License in
    3.27 - * all respects for all other code used.  Additionally, AlliedModders LLC grants
    3.28 - * this exception to all derivative works.  AlliedModders LLC defines further
    3.29 - * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
    3.30 - * or <http://www.sourcemod.net/license.php>.
    3.31 - *
    3.32 - * Version: $Id$
    3.33 - */
    3.34 -
    3.35 -#include <stdarg.h>
    3.36 -#include <string.h>
    3.37 -#include "PluginInfoDatabase.h"
    3.38 -#include "PluginSys.h"
    3.39 -
    3.40 -void PluginSettings::Init()
    3.41 -{
    3.42 -	name = -1;
    3.43 -	pause_val = false;
    3.44 -	type_val = PluginType_MapUpdated;
    3.45 -	optarray = -1;
    3.46 -	opts_num = 0;
    3.47 -	opts_size = 0;
    3.48 -	blockload_val = false;
    3.49 -}
    3.50 -
    3.51 -/**
    3.52 - * :TODO: write the logger, make these errors log instead of being static
    3.53 - * NOTE: once we do that, we will have to change some code to ignore sections
    3.54 - */
    3.55 -
    3.56 -CPluginInfoDatabase::CPluginInfoDatabase()
    3.57 -{
    3.58 -	m_strtab = NULL;
    3.59 -	m_infodb_count = 0;
    3.60 -	m_infodb_size = 0;
    3.61 -	m_infodb = -1;
    3.62 -}
    3.63 -
    3.64 -CPluginInfoDatabase::~CPluginInfoDatabase()
    3.65 -{
    3.66 -	delete m_strtab;
    3.67 -}
    3.68 -
    3.69 -void CPluginInfoDatabase::ReadSMC_ParseStart()
    3.70 -{
    3.71 -	/* Create or reset our string table */
    3.72 -	if (m_strtab)
    3.73 -	{
    3.74 -		m_strtab->Reset();
    3.75 -	} else {
    3.76 -		m_strtab = new BaseStringTable(1024);
    3.77 -	}
    3.78 -
    3.79 -	/* Set our internal states to the beginning */
    3.80 -	in_plugins = false;
    3.81 -	cur_plugin = -1;
    3.82 -	in_options = false;
    3.83 -	m_infodb_size = 0;
    3.84 -	m_infodb_count = 0;
    3.85 -	m_infodb = -1;
    3.86 -}
    3.87 -
    3.88 -SMCResult CPluginInfoDatabase::MakeError(const char *fmt, ...)
    3.89 -{
    3.90 -	char buffer[512];
    3.91 -	va_list ap;
    3.92 -
    3.93 -	va_start(ap, fmt);
    3.94 -	vsnprintf(buffer, sizeof(buffer), fmt, ap);
    3.95 -	va_end(ap);
    3.96 -
    3.97 -	m_errmsg = m_strtab->AddString(buffer);
    3.98 -
    3.99 -	return SMCResult_HaltFail;
   3.100 -}
   3.101 -
   3.102 -unsigned int CPluginInfoDatabase::GetSettingsNum()
   3.103 -{
   3.104 -	return m_infodb_count;
   3.105 -}
   3.106 -
   3.107 -PluginSettings *CPluginInfoDatabase::GetSettingsIfMatch(unsigned int index, const char *filename)
   3.108 -{
   3.109 -	BaseMemTable *memtab = m_strtab->GetMemTable();
   3.110 -	int *table = (int *)memtab->GetAddress(m_infodb);
   3.111 -
   3.112 -	if (!table || index >= m_infodb_count)
   3.113 -	{
   3.114 -		return NULL;
   3.115 -	}
   3.116 -
   3.117 -	PluginSettings *plugin = (PluginSettings *)memtab->GetAddress(table[index]);
   3.118 -
   3.119 -	const char *name = m_strtab->GetString(plugin->name);
   3.120 -
   3.121 -	if (!name)
   3.122 -	{
   3.123 -		return NULL;
   3.124 -	}
   3.125 -
   3.126 -	if (!g_PluginSys.TestAliasMatch(name, filename))
   3.127 -	{
   3.128 -		return NULL;
   3.129 -	}
   3.130 -
   3.131 -	return plugin;
   3.132 -}
   3.133 -
   3.134 -void CPluginInfoDatabase::GetOptionsForPlugin(PluginSettings *settings, unsigned int opt_num, const char **key, const char **val)
   3.135 -{
   3.136 -	PluginOpts *table = (PluginOpts *)m_strtab->GetMemTable()->GetAddress(settings->optarray);
   3.137 -	if (!table)
   3.138 -	{
   3.139 -		*key = NULL;
   3.140 -		*val = NULL;
   3.141 -		return;
   3.142 -	}
   3.143 -
   3.144 -	if (opt_num >= settings->opts_num)
   3.145 -	{
   3.146 -		*key = NULL;
   3.147 -		*val = NULL;
   3.148 -		return;
   3.149 -	}
   3.150 -
   3.151 -	*key = m_strtab->GetString(table[opt_num].key);
   3.152 -	*val = m_strtab->GetString(table[opt_num].val);
   3.153 -}
   3.154 -
   3.155 -SMCResult CPluginInfoDatabase::ReadSMC_KeyValue(const SMCStates *states, const char *key, const char *value)
   3.156 -{
   3.157 -	if (cur_plugin != -1)
   3.158 -	{
   3.159 -		PluginSettings *plugin = (PluginSettings *)m_strtab->GetMemTable()->GetAddress(cur_plugin);
   3.160 -		if (!in_options)
   3.161 -		{
   3.162 -			if (strcmp(key, "pause") == 0)
   3.163 -			{
   3.164 -				if (strcasecmp(value, "yes") == 0)
   3.165 -				{
   3.166 -					plugin->pause_val = true;
   3.167 -				} 
   3.168 -				else 
   3.169 -				{
   3.170 -					plugin->pause_val = false;
   3.171 -				}
   3.172 -			} 
   3.173 -			else if (strcmp(key, "lifetime") == 0) 
   3.174 -			{
   3.175 -				if (strcasecmp(value, "private") == 0)
   3.176 -				{
   3.177 -					plugin->type_val = PluginType_Private;
   3.178 -				} 
   3.179 -				else if (strcasecmp(value, "mapsync") == 0) 
   3.180 -				{
   3.181 -					plugin->type_val = PluginType_MapUpdated;
   3.182 -				}
   3.183 -				else if (strcasecmp(value, "maponly") == 0) 
   3.184 -				{
   3.185 -					plugin->type_val = PluginType_MapOnly;
   3.186 -				}
   3.187 -				else if (strcasecmp(value, "global") == 0) 
   3.188 -				{
   3.189 -					plugin->type_val = PluginType_Global;
   3.190 -				}
   3.191 -				else 
   3.192 -				{
   3.193 -					return MakeError("Unknown value for key \"lifetime\": \"%s\"", value);
   3.194 -				}
   3.195 -			}
   3.196 -			else if (strcmp(key, "blockload") == 0) 
   3.197 -			{
   3.198 -				plugin->blockload_val = true;
   3.199 -			} 
   3.200 -			else 
   3.201 -			{
   3.202 -				return MakeError("Unknown property key: \"%s\"", key);
   3.203 -			}
   3.204 -		}
   3.205 -		else 
   3.206 -		{
   3.207 -			/* Cache every option, valid or not */
   3.208 -			int keyidx = m_strtab->AddString(key);
   3.209 -			int validx = m_strtab->AddString(value);
   3.210 -			PluginOpts *table;
   3.211 -			BaseMemTable *memtab = m_strtab->GetMemTable();
   3.212 -			plugin = (PluginSettings *)memtab->GetAddress(cur_plugin);
   3.213 -			if (plugin->opts_num + 1 > plugin->opts_size)
   3.214 -			{
   3.215 -				unsigned int oldsize = plugin->opts_size;
   3.216 -				if (oldsize == 0)
   3.217 -				{
   3.218 -					//right now we don't have many
   3.219 -					plugin->opts_size = 2;
   3.220 -				} 
   3.221 -				else
   3.222 -				{
   3.223 -					plugin->opts_size *= 2;
   3.224 -				}
   3.225 -				int newidx = memtab->CreateMem(plugin->opts_size * sizeof(PluginOpts), (void **)&table);
   3.226 -				/* in case it resized */
   3.227 -				plugin = (PluginSettings *)memtab->GetAddress(cur_plugin);
   3.228 -				if (plugin->optarray != -1)
   3.229 -				{
   3.230 -					void *oldtable = memtab->GetAddress(plugin->optarray);
   3.231 -					memcpy(table, oldtable, oldsize * sizeof(PluginOpts));
   3.232 -				}
   3.233 -				plugin->optarray = newidx;
   3.234 -			}
   3.235 -			else
   3.236 -			{
   3.237 -				table = (PluginOpts *)memtab->GetAddress(plugin->optarray);
   3.238 -			}
   3.239 -			PluginOpts *opt = &table[plugin->opts_num++];
   3.240 -			opt->key = keyidx;
   3.241 -			opt->val = validx;
   3.242 -		}
   3.243 -	}
   3.244 -	else if (in_plugins)
   3.245 -	{
   3.246 -		return MakeError("Unknown property key: \"%s\"", key);
   3.247 -	}
   3.248 -	else 
   3.249 -	{
   3.250 -		/* Ignore anything we don't know about! */
   3.251 -	}
   3.252 -
   3.253 -	return SMCResult_Continue;
   3.254 -}
   3.255 -
   3.256 -SMCResult CPluginInfoDatabase::ReadSMC_LeavingSection(const SMCStates *states)
   3.257 -{
   3.258 -	if (in_plugins)
   3.259 -	{
   3.260 -		if (cur_plugin != -1)
   3.261 -		{
   3.262 -			if (in_options)
   3.263 -			{
   3.264 -				in_options = false;
   3.265 -			}
   3.266 -			else 
   3.267 -			{
   3.268 -				/* If the plugin is ending, add it to the table */
   3.269 -				BaseMemTable *memtab = m_strtab->GetMemTable();
   3.270 -				int *table;
   3.271 -				if (m_infodb_count + 1 > m_infodb_size)
   3.272 -				{
   3.273 -					unsigned int oldsize = m_infodb_size;
   3.274 -					if (!m_infodb_size)
   3.275 -					{
   3.276 -						m_infodb_size = 8;
   3.277 -					}
   3.278 -					else 
   3.279 -					{
   3.280 -						m_infodb_size *= 2;
   3.281 -					}
   3.282 -					int newidx = memtab->CreateMem(m_infodb_size * sizeof(int), (void **)&table);
   3.283 -					if (m_infodb != -1)
   3.284 -					{
   3.285 -						void *oldtable = (int *)memtab->GetAddress(m_infodb);
   3.286 -						memcpy(table, oldtable, oldsize * sizeof(int));
   3.287 -					}
   3.288 -					m_infodb = newidx;
   3.289 -				}
   3.290 -				else 
   3.291 -				{
   3.292 -					table = (int *)memtab->GetAddress(m_infodb);
   3.293 -				}
   3.294 -				/* Assign to table and scrap the current plugin */
   3.295 -				table[m_infodb_count++] = cur_plugin;
   3.296 -				cur_plugin = -1;
   3.297 -			}
   3.298 -		}
   3.299 -		else 
   3.300 -		{
   3.301 -			in_plugins = false;
   3.302 -		}
   3.303 -	}
   3.304 -
   3.305 -	return SMCResult_Continue;
   3.306 -}
   3.307 -
   3.308 -SMCResult CPluginInfoDatabase::ReadSMC_NewSection(const SMCStates *states, const char *name)
   3.309 -{
   3.310 -	if (!in_plugins)
   3.311 -	{
   3.312 -		/* If we're not in the main Plugins section, and we don't get it for the name, error out */
   3.313 -		if (strcmp(name, "Plugins") != 0)
   3.314 -		{
   3.315 -			return MakeError("Unknown root section: \"%s\"", name);
   3.316 -		}
   3.317 -		else 
   3.318 -		{
   3.319 -			/* Otherwise set our states */
   3.320 -			in_plugins = true;
   3.321 -			cur_plugin = -1;
   3.322 -			in_options = false;
   3.323 -		}
   3.324 -	}
   3.325 -	else
   3.326 -	{
   3.327 -		if (cur_plugin == -1)
   3.328 -		{
   3.329 -			/* If we get a plugin node and we don't have a current plugin, create a new one */
   3.330 -			PluginSettings *plugin;
   3.331 -			int i_name = m_strtab->AddString(name);
   3.332 -			cur_plugin = m_strtab->GetMemTable()->CreateMem(sizeof(PluginSettings), (void **)&plugin);
   3.333 -			plugin->Init();
   3.334 -			plugin->name = i_name;
   3.335 -			in_options = false;
   3.336 -		} 
   3.337 -		else 
   3.338 -		{
   3.339 -			if (!in_options && strcmp(name, "Options") == 0)
   3.340 -			{
   3.341 -				in_options = true;
   3.342 -			}
   3.343 -			else
   3.344 -			{
   3.345 -				return MakeError("Unknown plugin sub-section: \"%s\"", name);
   3.346 -			}
   3.347 -		}
   3.348 -	}
   3.349 -
   3.350 -	return SMCResult_Continue;
   3.351 -}
   3.352 -
     4.1 --- a/core/PluginInfoDatabase.h	Thu Feb 14 19:28:12 2013 -0500
     4.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.3 @@ -1,106 +0,0 @@
     4.4 -/**
     4.5 - * vim: set ts=4 :
     4.6 - * =============================================================================
     4.7 - * SourceMod
     4.8 - * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
     4.9 - * =============================================================================
    4.10 - *
    4.11 - * This program is free software; you can redistribute it and/or modify it under
    4.12 - * the terms of the GNU General Public License, version 3.0, as published by the
    4.13 - * Free Software Foundation.
    4.14 - * 
    4.15 - * This program is distributed in the hope that it will be useful, but WITHOUT
    4.16 - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    4.17 - * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
    4.18 - * details.
    4.19 - *
    4.20 - * You should have received a copy of the GNU General Public License along with
    4.21 - * this program.  If not, see <http://www.gnu.org/licenses/>.
    4.22 - *
    4.23 - * As a special exception, AlliedModders LLC gives you permission to link the
    4.24 - * code of this program (as well as its derivative works) to "Half-Life 2," the
    4.25 - * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
    4.26 - * by the Valve Corporation.  You must obey the GNU General Public License in
    4.27 - * all respects for all other code used.  Additionally, AlliedModders LLC grants
    4.28 - * this exception to all derivative works.  AlliedModders LLC defines further
    4.29 - * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
    4.30 - * or <http://www.sourcemod.net/license.php>.
    4.31 - *
    4.32 - * Version: $Id$
    4.33 - */
    4.34 -
    4.35 -#ifndef _INCLUDE_SOURCEMOD_CORE_SYSTEM_PLUGININFODATABASE_H_
    4.36 -#define _INCLUDE_SOURCEMOD_CORE_SYSTEM_PLUGININFODATABASE_H_
    4.37 -
    4.38 -/**
    4.39 - * This file parses plugin_settings.cfg and stores the information in cached memory.
    4.40 - * It provides simplistic abstraction to retrieving the info.
    4.41 - * :TODO: currently untested
    4.42 - */
    4.43 -
    4.44 -#include "sm_memtable.h"
    4.45 -#include "ITextParsers.h"
    4.46 -#include "IPluginSys.h"
    4.47 -#include "sm_globals.h"
    4.48 -
    4.49 -struct PluginOpts
    4.50 -{
    4.51 -	int key;
    4.52 -	int val;
    4.53 -};
    4.54 -
    4.55 -struct PluginSettings
    4.56 -{
    4.57 -	void Init();
    4.58 -	int name;
    4.59 -	bool pause_val;
    4.60 -	PluginType type_val;
    4.61 -	int optarray;
    4.62 -	size_t opts_num;
    4.63 -	size_t opts_size;
    4.64 -	bool blockload_val;
    4.65 -};
    4.66 -
    4.67 -class CPluginInfoDatabase : public ITextListener_SMC
    4.68 -{
    4.69 -public:
    4.70 -	CPluginInfoDatabase();
    4.71 -	~CPluginInfoDatabase();
    4.72 -public: //ITextListener_SMC
    4.73 -	void ReadSMC_ParseStart();
    4.74 -	SMCResult ReadSMC_NewSection(const SMCStates *states, const char *name);
    4.75 -	SMCResult ReadSMC_KeyValue(const SMCStates *states, const char *key, const char *value);
    4.76 -	SMCResult ReadSMC_LeavingSection(const SMCStates *states);
    4.77 -public:
    4.78 -	/**
    4.79 -	 * Returns the number of plugin settings available.
    4.80 -	 */
    4.81 -	unsigned int GetSettingsNum();
    4.82 -
    4.83 -	/** 
    4.84 -	 * Given an index, returns the plugin settings block if the filename matches.
    4.85 -	 * Otherwise, returns NULL.
    4.86 -	 */
    4.87 -	PluginSettings *GetSettingsIfMatch(unsigned int index, const char *filename);
    4.88 -
    4.89 -	/** 
    4.90 -	 *  Given a plugin settings struct and an index,
    4.91 -	 * returns the given JIT key/value option pair at that index.
    4.92 -	 * If the input is invalid, key and val will be set to NULL.
    4.93 -	 */
    4.94 -	void GetOptionsForPlugin(PluginSettings *settings, unsigned int opt_num, const char **key, const char **val);
    4.95 -private:
    4.96 -	SMCResult MakeError(const char *fmt, ...);
    4.97 -private:
    4.98 -	BaseStringTable *m_strtab;
    4.99 -	int m_errmsg;
   4.100 -	bool in_plugins;
   4.101 -	bool in_options;
   4.102 -	int m_infodb;
   4.103 -	size_t m_infodb_count;
   4.104 -	size_t m_infodb_size;
   4.105 -	int cur_plugin;
   4.106 -};
   4.107 -
   4.108 -
   4.109 -#endif //_INCLUDE_SOURCEMOD_CORE_SYSTEM_PLUGININFODATABASE_H_
     5.1 --- a/core/PluginSys.cpp	Thu Feb 14 19:28:12 2013 -0500
     5.2 +++ b/core/PluginSys.cpp	Sat Feb 16 15:15:22 2013 -0800
     5.3 @@ -823,19 +823,7 @@
     5.4  void CPluginManager::LoadAll_FirstPass(const char *config, const char *basedir)
     5.5  {
     5.6  	/* First read in the database of plugin settings */
     5.7 -	SMCError err;
     5.8 -	SMCStates states;
     5.9  	m_AllPluginsLoaded = false;
    5.10 -	if ((err=textparsers->ParseFile_SMC(config, &m_PluginInfo, &states)) != SMCError_Okay)
    5.11 -	{
    5.12 -		g_Logger.LogError("[SM] Encountered fatal error parsing file \"%s\"", config);
    5.13 -		const char *err_msg = textparsers->GetSMCErrorString(err);
    5.14 -		if (err_msg)
    5.15 -		{
    5.16 -			g_Logger.LogError("[SM] Parse error encountered: \"%s\"", err_msg);
    5.17 -		}
    5.18 -	}
    5.19 -
    5.20  	LoadPluginsFromDir(basedir, NULL);
    5.21  }
    5.22  
    5.23 @@ -909,21 +897,6 @@
    5.24  	}
    5.25  
    5.26  	int err;
    5.27 -	bool no_load = false;
    5.28 -	PluginSettings *pset;
    5.29 -	unsigned int setcount = m_PluginInfo.GetSettingsNum();
    5.30 -	for (unsigned int i=0; i<setcount; i++)
    5.31 -	{
    5.32 -		if ((pset = m_PluginInfo.GetSettingsIfMatch(i, path)) == NULL)
    5.33 -		{
    5.34 -			continue;
    5.35 -		}
    5.36 -		if (pset->blockload_val)
    5.37 -		{
    5.38 -			no_load = true;
    5.39 -			break;
    5.40 -		}
    5.41 -	}
    5.42  
    5.43  	/**
    5.44  	 * Does this plugin already exist?
    5.45 @@ -934,8 +907,7 @@
    5.46  		/* Check to see if we should try reloading it */
    5.47  		if (pPlugin->GetStatus() == Plugin_BadLoad
    5.48  			|| pPlugin->GetStatus() == Plugin_Error
    5.49 -			|| pPlugin->GetStatus() == Plugin_Failed
    5.50 -			|| no_load)
    5.51 +			|| pPlugin->GetStatus() == Plugin_Failed)
    5.52  		{
    5.53  			UnloadPlugin(pPlugin);
    5.54  		}
    5.55 @@ -949,11 +921,6 @@
    5.56  		}
    5.57  	}
    5.58  
    5.59 -	if (no_load)
    5.60 -	{
    5.61 -		return LoadRes_NeverLoad;
    5.62 -	}
    5.63 -
    5.64  	pPlugin = CPlugin::CreatePlugin(path, error, maxlength);
    5.65  
    5.66  	assert(pPlugin != NULL);
    5.67 @@ -967,37 +934,6 @@
    5.68  		co = g_pSourcePawn2->StartCompilation();
    5.69  	}
    5.70  
    5.71 -	for (unsigned int i=0; i<setcount; i++)
    5.72 -	{
    5.73 -		if ((pset=m_PluginInfo.GetSettingsIfMatch(i, path)) == NULL)
    5.74 -		{
    5.75 -			continue;
    5.76 -		}
    5.77 -		pPlugin->m_type = pset->type_val;
    5.78 -		if (co)
    5.79 -		{
    5.80 -			for (unsigned int j=0; j<pset->opts_num; j++)
    5.81 -			{
    5.82 -				const char *key, *val;
    5.83 -				m_PluginInfo.GetOptionsForPlugin(pset, j, &key, &val);
    5.84 -				if (!key || !val)
    5.85 -				{
    5.86 -					continue;
    5.87 -				}
    5.88 -				if ((err = co->SetOption(key, val)) == SP_ERROR_NONE)
    5.89 -				{
    5.90 -					if (error)
    5.91 -					{
    5.92 -						UTIL_Format(error, maxlength, "Unable to set JIT option (key \"%s\") (value \"%s\")", key, val);
    5.93 -					}
    5.94 -					co->Abort();
    5.95 -					co = NULL;
    5.96 -					break;
    5.97 -				}
    5.98 -			}
    5.99 -		}
   5.100 -	}
   5.101 -
   5.102  	/* Do the actual compiling */
   5.103  	if (co != NULL)
   5.104  	{
     6.1 --- a/core/PluginSys.h	Thu Feb 14 19:28:12 2013 -0500
     6.2 +++ b/core/PluginSys.h	Sat Feb 16 15:15:22 2013 -0800
     6.3 @@ -43,7 +43,6 @@
     6.4  #include <sh_vector.h>
     6.5  #include <sh_string.h>
     6.6  #include "sm_globals.h"
     6.7 -#include "PluginInfoDatabase.h"
     6.8  #include "sm_trie.h"
     6.9  #include "sourcemod.h"
    6.10  #include <IRootConsoleMenu.h>
    6.11 @@ -469,7 +468,6 @@
    6.12  	List<IPluginsListener *> m_listeners;
    6.13  	List<CPlugin *> m_plugins;
    6.14  	CStack<CPluginManager::CPluginIterator *> m_iters;
    6.15 -	CPluginInfoDatabase m_PluginInfo;
    6.16  	Trie *m_LoadLookup;
    6.17  	bool m_AllPluginsLoaded;
    6.18  	IdentityToken_t *m_MyIdent;