diff options
author | Haru <haru@dotalux.com> | 2015-06-15 20:52:44 +0200 |
---|---|---|
committer | Haru <haru@dotalux.com> | 2015-08-15 00:51:42 +0200 |
commit | 51b7adcf4e5b2a347081ec9a6903102c4909a404 (patch) | |
tree | 39a080440b4bd78b786c8f9372f7883b55fd3ba9 /src/plugins/HPMHooking.c | |
parent | f8edb93a6a26cd81eeaad0eac23e33da7740c8b4 (diff) | |
download | hercules-51b7adcf4e5b2a347081ec9a6903102c4909a404.tar.gz hercules-51b7adcf4e5b2a347081ec9a6903102c4909a404.tar.bz2 hercules-51b7adcf4e5b2a347081ec9a6903102c4909a404.tar.xz hercules-51b7adcf4e5b2a347081ec9a6903102c4909a404.zip |
HPM compatibility improvements
Improved compatibility, portability and standards conformance.
- Since it is not possible to portably and reliably re-use the core's
symbols in plugins, symbols are no longer exported unless explicitly
required, in the UNIX builds. This mimics the Windows behavior and
adds HPM compatibility to OSes such as FreeBSD. Credits to Andrei Karas
for making this possible.
- For convenience, it is no longer necessary to call GET_SYMBOL, since
the plugin will automatically import all the available symbols when
it's loaded, depending on the included headers.
- Plugins are now supposed to include the "common/hercules.h" header
before including anything else. Incluing common/HPMi.h,
common/cbasetypes.h or conf/core.h is no longer necessary, as those
are guaranteed to be automatically included by hercules.h.
- HPM API version bumped to 1.1.
Signed-off-by: Haru <haru@dotalux.com>
Diffstat (limited to 'src/plugins/HPMHooking.c')
-rw-r--r-- | src/plugins/HPMHooking.c | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/src/plugins/HPMHooking.c b/src/plugins/HPMHooking.c index 68910f503..19d7ae2c5 100644 --- a/src/plugins/HPMHooking.c +++ b/src/plugins/HPMHooking.c @@ -2,7 +2,7 @@ // See the LICENSE file // Sample Hercules Plugin -#include "common/HPMi.h" +#include "common/hercules.h" #include "common/db.h" #include "common/malloc.h" #include "common/mmo.h" @@ -11,7 +11,6 @@ #if defined (HPMHOOKING_LOGIN) #define HPM_SERVER_TYPE SERVER_TYPE_LOGIN #define HPM_CORE_INCLUDE "HPMHooking/HPMHooking_login.HPMHooksCore.inc" -#define HPM_SYMBOL_INCLUDE "HPMHooking/HPMHooking_login.GetSymbol.inc" #define HPM_HOOKS_INCLUDE "HPMHooking/HPMHooking_login.Hooks.inc" #define HPM_POINTS_INCLUDE "HPMHooking/HPMHooking_login.HookingPoints.inc" #define HPM_SOURCES_INCLUDE "HPMHooking/HPMHooking_login.sources.inc" @@ -19,7 +18,6 @@ #elif defined (HPMHOOKING_CHAR) #define HPM_SERVER_TYPE SERVER_TYPE_CHAR #define HPM_CORE_INCLUDE "HPMHooking/HPMHooking_char.HPMHooksCore.inc" -#define HPM_SYMBOL_INCLUDE "HPMHooking/HPMHooking_char.GetSymbol.inc" #define HPM_HOOKS_INCLUDE "HPMHooking/HPMHooking_char.Hooks.inc" #define HPM_POINTS_INCLUDE "HPMHooking/HPMHooking_char.HookingPoints.inc" #define HPM_SOURCES_INCLUDE "HPMHooking/HPMHooking_char.sources.inc" @@ -43,7 +41,6 @@ #elif defined (HPMHOOKING_MAP) #define HPM_SERVER_TYPE SERVER_TYPE_MAP #define HPM_CORE_INCLUDE "HPMHooking/HPMHooking_map.HPMHooksCore.inc" -#define HPM_SYMBOL_INCLUDE "HPMHooking/HPMHooking_map.GetSymbol.inc" #define HPM_HOOKS_INCLUDE "HPMHooking/HPMHooking_map.Hooks.inc" #define HPM_POINTS_INCLUDE "HPMHooking/HPMHooking_map.HookingPoints.inc" #define HPM_SOURCES_INCLUDE "HPMHooking/HPMHooking_map.sources.inc" @@ -69,7 +66,6 @@ #include "map/mercenary.h" #include "map/mob.h" #include "map/npc.h" -#include "map/npc.h" #include "map/party.h" #include "map/path.h" #include "map/pc.h" @@ -85,7 +81,6 @@ #else #define HPM_SERVER_TYPE SERVER_TYPE_UNKNOWN #define HPM_CORE_INCLUDE "HPMHooking/HPMHooking.HPMHooksCore.inc" -#define HPM_SYMBOL_INCLUDE "HPMHooking/HPMHooking.GetSymbol.inc" #define HPM_HOOKS_INCLUDE "HPMHooking/HPMHooking.Hooks.inc" #define HPM_POINTS_INCLUDE "HPMHooking/HPMHooking.HookingPoints.inc" #define HPM_SOURCES_INCLUDE "HPMHooking/HPMHooking.sources.inc" @@ -149,10 +144,10 @@ HPExport void server_post_final (void) { } HPExport const char *Hooked (bool *fr) { + const char *ret = HPM_shared_symbols(HPM_SERVER_TYPE); + if (ret) + return ret; HPMforce_return = fr; - if (!(DB = GET_SYMBOL("DB"))) return "DB"; - if (!(iMalloc = GET_SYMBOL("iMalloc"))) return "iMalloc"; -#include HPM_SYMBOL_INCLUDE HPM_HP_load(); return NULL; } |