|
|
|
@ -272,13 +272,23 @@ bool Plugin::load(color_ostream &con)
|
|
|
|
|
plugin_abort_load; \
|
|
|
|
|
return false; \
|
|
|
|
|
}
|
|
|
|
|
#define plugin_check_symbols(sym1,sym2) \
|
|
|
|
|
if (!LookupPlugin(plug, sym1) && !LookupPlugin(plug, sym2)) \
|
|
|
|
|
{ \
|
|
|
|
|
con.printerr("Plugin %s: missing symbols: %s & %s\n", name.c_str(), sym1, sym2); \
|
|
|
|
|
plugin_abort_load; \
|
|
|
|
|
return false; \
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
plugin_check_symbol("plugin_name")
|
|
|
|
|
plugin_check_symbol("plugin_version")
|
|
|
|
|
plugin_check_symbols("plugin_name", "name") // allow r3 plugins
|
|
|
|
|
plugin_check_symbols("plugin_version", "version") // allow r3 plugins
|
|
|
|
|
plugin_check_symbol("plugin_self")
|
|
|
|
|
plugin_check_symbol("plugin_init")
|
|
|
|
|
plugin_check_symbol("plugin_globals")
|
|
|
|
|
const char ** plug_name =(const char ** ) LookupPlugin(plug, "plugin_name");
|
|
|
|
|
if (!plug_name) // allow r3 plugin naming
|
|
|
|
|
plug_name = (const char ** )LookupPlugin(plug, "name");
|
|
|
|
|
|
|
|
|
|
if (name != *plug_name)
|
|
|
|
|
{
|
|
|
|
|
con.printerr("Plugin %s: name mismatch, claims to be %s\n", name.c_str(), *plug_name);
|
|
|
|
@ -286,6 +296,9 @@ bool Plugin::load(color_ostream &con)
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
const char ** plug_version =(const char ** ) LookupPlugin(plug, "plugin_version");
|
|
|
|
|
if (!plug_version) // allow r3 plugin version
|
|
|
|
|
plug_version =(const char ** ) LookupPlugin(plug, "version");
|
|
|
|
|
|
|
|
|
|
const char ** plug_git_desc_ptr = (const char**) LookupPlugin(plug, "plugin_git_description");
|
|
|
|
|
Plugin **plug_self = (Plugin**)LookupPlugin(plug, "plugin_self");
|
|
|
|
|
const char *dfhack_version = Version::dfhack_version();
|
|
|
|
|