diff options
author | FlavioJS <FlavioJS@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2007-01-08 08:35:32 +0000 |
---|---|---|
committer | FlavioJS <FlavioJS@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2007-01-08 08:35:32 +0000 |
commit | 4e5a65295ad732fd53630d8c29912ec047038d9d (patch) | |
tree | 863815cddc095c55fa3c7645e4c52cffc9e744b9 /src/common/plugins.h | |
parent | 8fd7ea9e4f38bd02b99e4fa42fc2003390a25adc (diff) | |
download | hercules-4e5a65295ad732fd53630d8c29912ec047038d9d.tar.gz hercules-4e5a65295ad732fd53630d8c29912ec047038d9d.tar.bz2 hercules-4e5a65295ad732fd53630d8c29912ec047038d9d.tar.xz hercules-4e5a65295ad732fd53630d8c29912ec047038d9d.zip |
- Added a precompiler error when the shutdown defines are not found.
- Added parse_console to the plugin API.
- Added plugin for parsing the console. (working with cygwin)
- Added the console plugin to plugin_athena.conf commented out.
- Copied the parse_console code form login txt to login sql and char.
- Added propper plugin version compatibility tests.
- Better output when a plugin fails to load.
-----
The console plugin (at it's 3rd version) uses two pipes and another thread.
- the other thread reads data from stdin and sends it through one of the pipes
- the other pipe serves as semaphore (and terminator) to that thread
- the normal thread checks if the pipe has data once every timer cycle, if data is found it invokes parse_console with that data
Worth noting: the first version didn't use another thread and just checked if data was available on the input stream, but apparently that can't be done to standard input in windows
It's only been tested on cygwin (and should work on most *nix systems), can't test native windows right now because I'm having trouble exporting the required plugin variables in VS8
src/plugins/Makefile hasn't been updated because it's not working properly for me
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9631 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/common/plugins.h')
-rw-r--r-- | src/common/plugins.h | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/src/common/plugins.h b/src/common/plugins.h index 34fd18a64..9cb4b94b4 100644 --- a/src/common/plugins.h +++ b/src/common/plugins.h @@ -4,17 +4,20 @@ #ifndef _PLUGINS_H_ #define _PLUGINS_H_ +#include "../common/plugin.h" + ////// Dynamic Link Library functions /////////////// -#ifdef _WIN32 +#ifdef WIN32 #include <windows.h> #define DLL_OPEN(x) LoadLibrary(x) #define DLL_SYM(x,y,z) (FARPROC)(x) = GetProcAddress(y,z) #define DLL_CLOSE(x) FreeLibrary(x) + char *DLL_ERROR(void); + #define DLL_EXT ".dll" #define DLL HINSTANCE - char *DLL_ERROR(void); #else @@ -31,6 +34,8 @@ #endif #define DLL void * + #include <string.h> // size_t + #endif ////// Plugin Definitions /////////////////// @@ -38,24 +43,24 @@ typedef struct _Plugin { DLL dll; char state; - char *filename; - struct _Plugin_Info *info; - struct _Plugin *next; + char* filename; + struct _Plugin_Info* info; + struct _Plugin* next; } Plugin; ///////////////////////////////////////////// -int register_plugin_func (char *); -int register_plugin_event (void (*)(void), char *); -int plugin_event_trigger (char *); +int register_plugin_func(char* name); +int register_plugin_event(Plugin_Event_Func* func, char* name); +int plugin_event_trigger(char* name); -int export_symbol (void *, int); +int export_symbol(void* var, size_t offset); #define EXPORT_SYMBOL(s) export_symbol((s), -1); -Plugin *plugin_open (const char *); -void plugin_load (const char *); -void plugin_unload (Plugin *); -void plugins_init (void); -void plugins_final (void); +Plugin* plugin_open(const char* filename); +void plugin_load(const char* filename); +void plugin_unload(Plugin* plugin); +void plugins_init(void); +void plugins_final(void); #endif // _PLUGINS_H_ |