summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorai4rei <ai4rei@54d463be-8e91-2dee-dedb-b68131a5f0ec>2010-12-29 05:14:16 +0000
committerai4rei <ai4rei@54d463be-8e91-2dee-dedb-b68131a5f0ec>2010-12-29 05:14:16 +0000
commit71201030aedb473d67f15c4ab72ba21c60cca30b (patch)
tree8bcb37646c504cd3ece8864a2804f013f8a9df7d /src
parentb5633db9744bff512eef665054a2622780a7ab6c (diff)
downloadhercules-71201030aedb473d67f15c4ab72ba21c60cca30b.tar.gz
hercules-71201030aedb473d67f15c4ab72ba21c60cca30b.tar.bz2
hercules-71201030aedb473d67f15c4ab72ba21c60cca30b.tar.xz
hercules-71201030aedb473d67f15c4ab72ba21c60cca30b.zip
* Fixed 'console' plugin not working on Windows, due to NULL passed to CreateThread instead of required pointer to thread id variable.
- Fixed 'console' plugin causing delete_timer error when it fails to load, due to uninitialized variable. * Renamed plugin.def to sample.def and added 'sample' plugin exports into it, as it's purpose is nothing than a sample right now. - Also added .def files for 'gui' and 'pid' plugins as MSVC does not export everything automatically and missing event export cause the plugins silently failing. - Added VS6, VS8 and VS9 projects for compiling plug-ins, which can be used on Windows. * The plug-in system will now report, if it cannot import an event function. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14638 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src')
-rw-r--r--src/common/plugins.c2
-rw-r--r--src/login/login.c2
-rw-r--r--src/plugins/console.c5
-rw-r--r--src/plugins/gui.def (renamed from src/plugins/plugin.def)2
-rw-r--r--src/plugins/pid.def7
-rw-r--r--src/plugins/sample.def11
6 files changed, 26 insertions, 3 deletions
diff --git a/src/common/plugins.c b/src/common/plugins.c
index 2d81548a1..2d50fc9e8 100644
--- a/src/common/plugins.c
+++ b/src/common/plugins.c
@@ -251,6 +251,8 @@ Plugin* plugin_open(const char* filename)
func = (Plugin_Event_Func*)DLL_SYM(plugin->dll, events[i].func_name);
if (func)
register_plugin_event(func, events[i].event_name);
+ else
+ ShowError("Failed to locate function '%s' in '%s'.\n", events[i].func_name, filename);
}
i++;
}
diff --git a/src/login/login.c b/src/login/login.c
index 158ba5150..0876f3fb2 100644
--- a/src/login/login.c
+++ b/src/login/login.c
@@ -331,7 +331,7 @@ int parse_console(char* buf)
sscanf(buf, "%[^\n]", command);
- ShowInfo("Console command :%s", command);
+ ShowInfo("Console command :%s\n", command);
if( strcmpi("shutdown", command) == 0 ||
strcmpi("exit", command) == 0 ||
diff --git a/src/plugins/console.c b/src/plugins/console.c
index 5056eafdc..7ea69c637 100644
--- a/src/plugins/console.c
+++ b/src/plugins/console.c
@@ -32,7 +32,8 @@
#define WORKER_FUNC_END(name) } ExitThread(0); return 0; }
#define WORKER_EXECUTE(name,errvar) \
do{ \
- buf.worker = CreateThread(NULL, 0, worker_ ## name, NULL, CREATE_SUSPENDED, NULL); \
+ DWORD dwThreadId; \
+ buf.worker = CreateThread(NULL, 0, worker_ ## name, NULL, CREATE_SUSPENDED, &dwThreadId); \
if( errvar ) \
*errvar = ( buf.worker == NULL ); \
}while(0)
@@ -135,7 +136,7 @@ unsigned int (*gettick)(void);
int (*parse_console)(char* buf);
// Locals
-int tid; // timer id
+int tid = -1; // timer id
BUFFER buf; // input buffer
WORKER_FUNC_DECLARE(getinput); // worker for the input buffer
diff --git a/src/plugins/plugin.def b/src/plugins/gui.def
index 6117bedc6..0a5d6a714 100644
--- a/src/plugins/plugin.def
+++ b/src/plugins/gui.def
@@ -2,3 +2,5 @@ EXPORTS
plugin_info DATA
plugin_event_table DATA
plugin_call_table DATA
+
+ gui_init
diff --git a/src/plugins/pid.def b/src/plugins/pid.def
new file mode 100644
index 000000000..a70cf8127
--- /dev/null
+++ b/src/plugins/pid.def
@@ -0,0 +1,7 @@
+EXPORTS
+ plugin_info DATA
+ plugin_event_table DATA
+ plugin_call_table DATA
+
+ pid_create
+ pid_delete
diff --git a/src/plugins/sample.def b/src/plugins/sample.def
new file mode 100644
index 000000000..f5c4af652
--- /dev/null
+++ b/src/plugins/sample.def
@@ -0,0 +1,11 @@
+EXPORTS
+ ; common exports
+ plugin_info DATA
+ plugin_event_table DATA
+ plugin_call_table DATA
+
+ ; plugin-specific exports
+ test_me
+ do_init
+ do_final
+ some_function