summaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
authorshennetsind <ind@henn.et>2014-02-02 15:02:14 -0200
committershennetsind <ind@henn.et>2014-02-02 15:02:14 -0200
commitd33469689ea8e671fa0d525d54bce6932dfe9107 (patch)
treef6fc609df3a6d723f6390a69c8e8174e6a242b72 /src/common
parent8a05e611a71168cccac282777aa1719a46f574d0 (diff)
downloadhercules-d33469689ea8e671fa0d525d54bce6932dfe9107.tar.gz
hercules-d33469689ea8e671fa0d525d54bce6932dfe9107.tar.bz2
hercules-d33469689ea8e671fa0d525d54bce6932dfe9107.tar.xz
hercules-d33469689ea8e671fa0d525d54bce6932dfe9107.zip
Introducing HPM Datacheck
http://hercules.ws/board/topic/4283-introducing-hpm-datacheck/ Signed-off-by: shennetsind <ind@henn.et>
Diffstat (limited to 'src/common')
-rw-r--r--src/common/HPM.c26
-rw-r--r--src/common/HPM.h8
-rw-r--r--src/common/HPMi.h15
-rw-r--r--src/common/atomic.h6
-rw-r--r--src/common/cbasetypes.h6
-rw-r--r--src/common/conf.h6
-rw-r--r--src/common/console.h6
-rw-r--r--src/common/core.h6
-rw-r--r--src/common/db.h6
-rw-r--r--src/common/des.h6
-rw-r--r--src/common/ers.h6
-rw-r--r--src/common/grfio.h6
-rw-r--r--src/common/malloc.h6
-rw-r--r--src/common/mapindex.h6
-rw-r--r--src/common/md5calc.h6
-rw-r--r--src/common/mmo.h6
-rw-r--r--src/common/mutex.h6
-rw-r--r--src/common/nullpo.h6
-rw-r--r--src/common/random.h6
-rw-r--r--src/common/showmsg.h6
-rw-r--r--src/common/socket.h6
-rw-r--r--src/common/spinlock.h6
-rw-r--r--src/common/strlib.h6
-rw-r--r--src/common/thread.h6
-rw-r--r--src/common/timer.h8
-rw-r--r--src/common/utils.h6
26 files changed, 112 insertions, 77 deletions
diff --git a/src/common/HPM.c b/src/common/HPM.c
index 1edf24901..cf296e593 100644
--- a/src/common/HPM.c
+++ b/src/common/HPM.c
@@ -116,6 +116,8 @@ struct hplugin *hplugin_load(const char* filename) {
bool anyEvent = false;
void **import_symbol_ref;
Sql **sql_handle;
+ unsigned int *HPMDataCheckLen;
+ struct s_HPMDataCheck *HPMDataCheck;
if( HPM->exists(filename) ) {
ShowWarning("HPM:plugin_load: attempting to load duplicate '"CL_WHITE"%s"CL_RESET"', skipping...\n", filename);
@@ -203,6 +205,24 @@ struct hplugin *hplugin_load(const char* filename) {
if( !HPM->populate(plugin,filename) )
return NULL;
+ if( !( HPMDataCheckLen = plugin_import(plugin->dll, "HPMDataCheckLen", unsigned int *) ) ) {
+ ShowWarning("HPM:plugin_load: failed to retrieve 'HPMDataCheckLen' for '"CL_WHITE"%s"CL_RESET"', most likely not including HPMDataCheck.h, skipping...\n", filename);
+ HPM->unload(plugin);
+ return NULL;
+ }
+
+ if( !( HPMDataCheck = plugin_import(plugin->dll, "HPMDataCheck", struct s_HPMDataCheck *) ) ) {
+ ShowWarning("HPM:plugin_load: failed to retrieve 'HPMDataCheck' for '"CL_WHITE"%s"CL_RESET"', most likely not including HPMDataCheck.h, skipping...\n", filename);
+ HPM->unload(plugin);
+ return NULL;
+ }
+
+ if( !HPM->DataCheck(HPMDataCheck,*HPMDataCheckLen,plugin->info->name) ) {
+ ShowWarning("HPM:plugin_load: '"CL_WHITE"%s"CL_RESET"' failed DataCheck, out of sync from the core (recompile plugin), skipping...\n", filename);
+ HPM->unload(plugin);
+ return NULL;
+ }
+
/* id */
plugin->hpi->pid = plugin->idx;
/* core */
@@ -255,6 +275,11 @@ void hplugins_config_read(void) {
const char *config_filename = "conf/plugins.conf"; // FIXME hardcoded name
FILE *fp;
+ if( !HPM->DataCheck ) {
+ ShowError("HPM:config_read: HPM->DataCheck not set! Failure\n");
+ return;
+ }
+
/* yes its ugly, its temporary and will be gone as soon as the new inter-server.conf is set */
if( (fp = fopen("conf/import/plugins.conf","r")) ) {
config_filename = "conf/import/plugins.conf";
@@ -829,4 +854,5 @@ void hpm_defaults(void) {
HPM->grabHPData = hplugins_grabHPData;
HPM->grabHPDataSub = NULL;
HPM->parseConf = hplugins_parse_conf;
+ HPM->DataCheck = NULL;
}
diff --git a/src/common/HPM.h b/src/common/HPM.h
index 393f8f819..52ad24a03 100644
--- a/src/common/HPM.h
+++ b/src/common/HPM.h
@@ -1,8 +1,8 @@
// Copyright (c) Hercules Dev Team, licensed under GNU GPL.
// See the LICENSE file
-#ifndef _HPM_H_
-#define _HPM_H_
+#ifndef _COMMON_HPM_H_
+#define _COMMON_HPM_H_
#include "../common/cbasetypes.h"
#include "../common/HPMi.h"
@@ -146,10 +146,12 @@ struct HPM_interface {
bool (*grabHPDataSub) (struct HPDataOperationStorage *ret, enum HPluginDataTypes type, void *ptr);
/* for custom config parsing */
bool (*parseConf) (const char *w1, const char *w2, enum HPluginConfType point);
+ /* validates plugin data */
+ bool (*DataCheck) (struct s_HPMDataCheck *src, unsigned int size, char *name);
} HPM_s;
struct HPM_interface *HPM;
void hpm_defaults(void);
-#endif /* _HPM_H_ */
+#endif /* _COMMON_HPM_H_ */
diff --git a/src/common/HPMi.h b/src/common/HPMi.h
index fdb6ccf52..b33ad955c 100644
--- a/src/common/HPMi.h
+++ b/src/common/HPMi.h
@@ -1,8 +1,8 @@
// Copyright (c) Hercules Dev Team, licensed under GNU GPL.
// See the LICENSE file
-#ifndef _HPMi_H_
-#define _HPMi_H_
+#ifndef _COMMON_HPMi_H_
+#define _COMMON_HPMi_H_
#include "../common/cbasetypes.h"
#include "../common/core.h"
@@ -20,7 +20,7 @@ struct map_session_data;
#define HPExport
#endif
-#ifndef _SHOWMSG_H_
+#ifndef _COMMON_SHOWMSG_H_
HPExport void (*ShowMessage) (const char *, ...);
HPExport void (*ShowStatus) (const char *, ...);
HPExport void (*ShowSQL) (const char *, ...);
@@ -45,6 +45,11 @@ struct hplugin_info {
char* req_version;
};
+struct s_HPMDataCheck {
+ char *name;
+ unsigned int size;
+};
+
HPExport void *(*import_symbol) (char *name, unsigned int pID);
HPExport Sql *mysql_handle;
@@ -187,8 +192,8 @@ HPExport struct HPMi_interface {
/* pc group permission */
void (*addPCGPermission) (unsigned int pluginID, char *name, unsigned int *mask);
} HPMi_s;
-#ifndef _HPM_H_
+#ifndef _COMMON_HPM_H_
HPExport struct HPMi_interface *HPMi;
#endif
-#endif /* _HPMi_H_ */
+#endif /* _COMMON_HPMi_H_ */
diff --git a/src/common/atomic.h b/src/common/atomic.h
index 5a2ddb4f0..c2227a9d4 100644
--- a/src/common/atomic.h
+++ b/src/common/atomic.h
@@ -1,8 +1,8 @@
// Copyright (c) rAthena Project (www.rathena.org) - Licensed under GNU GPL
// For more information, see LICENCE in the main folder
-#ifndef _rA_ATOMIC_H_
-#define _rA_ATOMIC_H_
+#ifndef _COMMON_ATOMIC_H_
+#define _COMMON_ATOMIC_H_
// Atomic Operations
// (Interlocked CompareExchange, Add .. and so on ..)
@@ -144,4 +144,4 @@ static forceinline int32 InterlockedExchange(volatile int32 *target, int32 val){
#endif //endif compiler decission
-#endif
+#endif /* _COMMON_ATOMIC_H_ */
diff --git a/src/common/cbasetypes.h b/src/common/cbasetypes.h
index 977897506..654334a9b 100644
--- a/src/common/cbasetypes.h
+++ b/src/common/cbasetypes.h
@@ -1,5 +1,5 @@
-#ifndef _CBASETYPES_H_
-#define _CBASETYPES_H_
+#ifndef _COMMON_CBASETYPES_H_
+#define _COMMON_CBASETYPES_H_
/* +--------+-----------+--------+---------+
* | ILP32 | LP64 | ILP64 | (LL)P64 |
@@ -431,4 +431,4 @@ void SET_FUNCPOINTER(T1& var, T2 p)
#endif
-#endif /* _CBASETYPES_H_ */
+#endif /* _COMMON_CBASETYPES_H_ */
diff --git a/src/common/conf.h b/src/common/conf.h
index 05e2b1ada..9aff3df47 100644
--- a/src/common/conf.h
+++ b/src/common/conf.h
@@ -2,8 +2,8 @@
// See the LICENSE file
// Portions Copyright (c) Athena Dev Teams
-#ifndef _CONF_H_
-#define _CONF_H_
+#ifndef _COMMON_CONF_H_
+#define _COMMON_CONF_H_
#include "../common/cbasetypes.h"
#include "../../3rdparty/libconfig/libconfig.h"
@@ -94,4 +94,4 @@ struct libconfig_interface *libconfig;
void libconfig_defaults(void);
-#endif // _CONF_H_
+#endif // _COMMON_CONF_H_
diff --git a/src/common/console.h b/src/common/console.h
index 1beed964a..513c769ff 100644
--- a/src/common/console.h
+++ b/src/common/console.h
@@ -1,8 +1,8 @@
// Copyright (c) Hercules Dev Team, licensed under GNU GPL.
// See the LICENSE file
-#ifndef _CONSOLE_H_
-#define _CONSOLE_H_
+#ifndef _COMMON_CONSOLE_H_
+#define _COMMON_CONSOLE_H_
#include "../common/thread.h"
#include "../common/mutex.h"
@@ -72,4 +72,4 @@ struct console_interface *console;
void console_defaults(void);
-#endif /* _CONSOLE_H_ */
+#endif /* _COMMON_CONSOLE_H_ */
diff --git a/src/common/core.h b/src/common/core.h
index 8fdcdcfc3..72f956e1d 100644
--- a/src/common/core.h
+++ b/src/common/core.h
@@ -2,8 +2,8 @@
// See the LICENSE file
// Portions Copyright (c) Athena Dev Teams
-#ifndef _CORE_H_
-#define _CORE_H_
+#ifndef _COMMON_CORE_H_
+#define _COMMON_CORE_H_
#include "../common/db.h"
#include "../common/mmo.h"
@@ -50,4 +50,4 @@ enum E_CORE_ST {
/// If NULL, runflag is set to CORE_ST_STOP instead.
extern void (*shutdown_callback)(void);
-#endif /* _CORE_H_ */
+#endif /* _COMMON_CORE_H_ */
diff --git a/src/common/db.h b/src/common/db.h
index c00489b93..67abe6f19 100644
--- a/src/common/db.h
+++ b/src/common/db.h
@@ -39,8 +39,8 @@
* @encoding US-ASCII *
* @see common#db.c *
\*****************************************************************************/
-#ifndef _DB_H_
-#define _DB_H_
+#ifndef _COMMON_DB_H_
+#define _COMMON_DB_H_
#include "../common/cbasetypes.h"
#include <stdarg.h>
@@ -1548,4 +1548,4 @@ void linkdb_foreach (struct linkdb_node** head, LinkDBFunc func, ...);
-#endif /* _DB_H_ */
+#endif /* _COMMON_DB_H_ */
diff --git a/src/common/des.h b/src/common/des.h
index e42136436..3f55448ba 100644
--- a/src/common/des.h
+++ b/src/common/des.h
@@ -1,7 +1,7 @@
// Copyright (c) Athena Dev Teams - Licensed under GNU GPL
// For more information, see LICENCE in the main folder
-#ifndef _DES_H_
-#define _DES_H_
+#ifndef _COMMON_DES_H_
+#define _COMMON_DES_H_
/// One 64-bit block.
@@ -12,4 +12,4 @@ void des_decrypt_block(BIT64* block);
void des_decrypt(unsigned char* data, size_t size);
-#endif // _DES_H_
+#endif // _COMMON_DES_H_
diff --git a/src/common/ers.h b/src/common/ers.h
index d74ee02a5..4dae19f3b 100644
--- a/src/common/ers.h
+++ b/src/common/ers.h
@@ -37,8 +37,8 @@
* @author Flavio @ Amazon Project *
* @encoding US-ASCII *
\*****************************************************************************/
-#ifndef _ERS_H_
-#define _ERS_H_
+#ifndef _COMMON_ERS_H_
+#define _COMMON_ERS_H_
#include "../common/cbasetypes.h"
@@ -180,4 +180,4 @@ void ers_report(void);
void ers_force_destroy_all(void);
#endif /* DISABLE_ERS / not DISABLE_ERS */
-#endif /* _ERS_H_ */
+#endif /* _COMMON_ERS_H_ */
diff --git a/src/common/grfio.h b/src/common/grfio.h
index a88b20393..4f5d0d6bc 100644
--- a/src/common/grfio.h
+++ b/src/common/grfio.h
@@ -1,8 +1,8 @@
// Copyright (c) Athena Dev Teams - Licensed under GNU GPL
// For more information, see LICENCE in the main folder
-#ifndef _GRFIO_H_
-#define _GRFIO_H_
+#ifndef _COMMON_GRFIO_H_
+#define _COMMON_GRFIO_H_
void grfio_init(const char* fname);
void grfio_final(void);
@@ -14,4 +14,4 @@ unsigned long grfio_crc32(const unsigned char *buf, unsigned int len);
int decode_zip(void* dest, unsigned long* destLen, const void* source, unsigned long sourceLen);
int encode_zip(void* dest, unsigned long* destLen, const void* source, unsigned long sourceLen);
-#endif /* _GRFIO_H_ */
+#endif /* _COMMON_GRFIO_H_ */
diff --git a/src/common/malloc.h b/src/common/malloc.h
index 19b5213bb..7309bb0f7 100644
--- a/src/common/malloc.h
+++ b/src/common/malloc.h
@@ -1,8 +1,8 @@
// Copyright (c) Athena Dev Teams - Licensed under GNU GPL
// For more information, see LICENCE in the main folder
-#ifndef _MALLOC_H_
-#define _MALLOC_H_
+#ifndef _COMMON_MALLOC_H_
+#define _COMMON_MALLOC_H_
#include "../common/cbasetypes.h"
@@ -88,4 +88,4 @@ struct malloc_interface {
void memmgr_report (int extra);
struct malloc_interface *iMalloc;
-#endif /* _MALLOC_H_ */
+#endif /* _COMMON_MALLOC_H_ */
diff --git a/src/common/mapindex.h b/src/common/mapindex.h
index 98150f441..fa9b9e920 100644
--- a/src/common/mapindex.h
+++ b/src/common/mapindex.h
@@ -2,8 +2,8 @@
// See the LICENSE file
// Portions Copyright (c) Athena Dev Teams
-#ifndef _MAPINDEX_H_
-#define _MAPINDEX_H_
+#ifndef _COMMON_MAPINDEX_H_
+#define _COMMON_MAPINDEX_H_
#include "../common/db.h"
#include "../common/mmo.h"
@@ -90,4 +90,4 @@ struct mapindex_interface *mapindex;
void mapindex_defaults(void);
-#endif /* _MAPINDEX_H_ */
+#endif /* _COMMON_MAPINDEX_H_ */
diff --git a/src/common/md5calc.h b/src/common/md5calc.h
index 323affa2c..d0caf6787 100644
--- a/src/common/md5calc.h
+++ b/src/common/md5calc.h
@@ -1,8 +1,8 @@
-#ifndef _MD5CALC_H_
-#define _MD5CALC_H_
+#ifndef _COMMON_MD5CALC_H_
+#define _COMMON_MD5CALC_H_
void MD5_String(const char * string, char * output);
void MD5_Binary(const char * string, unsigned char * output);
void MD5_Salt(unsigned int len, char * output);
-#endif /* _MD5CALC_H_ */
+#endif /* _COMMON_MD5CALC_H_ */
diff --git a/src/common/mmo.h b/src/common/mmo.h
index 573962601..2b66c516c 100644
--- a/src/common/mmo.h
+++ b/src/common/mmo.h
@@ -2,8 +2,8 @@
// See the LICENSE file
// Portions Copyright (c) Athena Dev Teams
-#ifndef _MMO_H_
-#define _MMO_H_
+#ifndef _COMMON_MMO_H_
+#define _COMMON_MMO_H_
#include "cbasetypes.h"
#include "../common/db.h"
@@ -886,4 +886,4 @@ enum e_pc_reg_loading {
#error MAX_ZENY is too big
#endif
-#endif /* _MMO_H_ */
+#endif /* _COMMON_MMO_H_ */
diff --git a/src/common/mutex.h b/src/common/mutex.h
index 1999627cd..eeb24e6ff 100644
--- a/src/common/mutex.h
+++ b/src/common/mutex.h
@@ -1,8 +1,8 @@
// Copyright (c) rAthena Project (www.rathena.org) - Licensed under GNU GPL
// For more information, see LICENCE in the main folder
-#ifndef _rA_MUTEX_H_
-#define _rA_MUTEX_H_
+#ifndef _COMMON_MUTEX_H_
+#define _COMMON_MUTEX_H_
typedef struct ramutex *ramutex; // Mutex
@@ -89,4 +89,4 @@ void racond_signal( racond c );
void racond_broadcast( racond c );
-#endif
+#endif /* _COMMON_MUTEX_H_ */
diff --git a/src/common/nullpo.h b/src/common/nullpo.h
index 581252cca..fb1cf0feb 100644
--- a/src/common/nullpo.h
+++ b/src/common/nullpo.h
@@ -2,8 +2,8 @@
// See the LICENSE file
// Portions Copyright (c) Athena Dev Teams
-#ifndef COMMON_NULLPO_H
-#define COMMON_NULLPO_H
+#ifndef _COMMON_NULLPO_H_
+#define _COMMON_NULLPO_H_
#include "../common/cbasetypes.h"
@@ -125,4 +125,4 @@
void assert_report(const char *file, int line, const char *func, const char *targetname, const char *title);
-#endif /* COMMON_NULLPO_H */
+#endif /* _COMMON_NULLPO_H_ */
diff --git a/src/common/random.h b/src/common/random.h
index 43dfd36c0..ab83fb4d4 100644
--- a/src/common/random.h
+++ b/src/common/random.h
@@ -1,8 +1,8 @@
// Copyright (c) Athena Dev Teams - Licensed under GNU GPL
// For more information, see LICENCE in the main folder
-#ifndef _RANDOM_H_
-#define _RANDOM_H_
+#ifndef _COMMON_RANDOM_H_
+#define _COMMON_RANDOM_H_
#include "../common/cbasetypes.h"
@@ -15,4 +15,4 @@ int32 rnd_value(int32 min, int32 max);// [min, max]
double rnd_uniform(void);// [0.0, 1.0)
double rnd_uniform53(void);// [0.0, 1.0)
-#endif /* _RANDOM_H_ */
+#endif /* _COMMON_RANDOM_H_ */
diff --git a/src/common/showmsg.h b/src/common/showmsg.h
index 01eae4480..b59214ab0 100644
--- a/src/common/showmsg.h
+++ b/src/common/showmsg.h
@@ -2,8 +2,8 @@
// See the LICENSE file
// Portions Copyright (c) Athena Dev Teams
-#ifndef _SHOWMSG_H_
-#define _SHOWMSG_H_
+#ifndef _COMMON_SHOWMSG_H_
+#define _COMMON_SHOWMSG_H_
#ifndef _HPMi_H_
#include "../../3rdparty/libconfig/libconfig.h"
@@ -104,4 +104,4 @@ extern void ClearScreen(void);
#endif
extern int _vShowMessage(enum msg_type flag, const char *string, va_list ap);
-#endif /* _SHOWMSG_H_ */
+#endif /* _COMMON_SHOWMSG_H_ */
diff --git a/src/common/socket.h b/src/common/socket.h
index 6879d2e90..ca9141716 100644
--- a/src/common/socket.h
+++ b/src/common/socket.h
@@ -2,8 +2,8 @@
// See the LICENSE file
// Portions Copyright (c) Athena Dev Teams
-#ifndef _SOCKET_H_
-#define _SOCKET_H_
+#ifndef _COMMON_SOCKET_H_
+#define _COMMON_SOCKET_H_
#include "../common/cbasetypes.h"
@@ -196,4 +196,4 @@ void socket_defaults(void);
#define set_eof(fd) ( sockt->set_eof(fd) )
#endif /* _H_SOCKET_C_ */
-#endif /* _SOCKET_H_ */
+#endif /* _COMMON_SOCKET_H_ */
diff --git a/src/common/spinlock.h b/src/common/spinlock.h
index 9b9e4ce94..29fbb355b 100644
--- a/src/common/spinlock.h
+++ b/src/common/spinlock.h
@@ -1,6 +1,6 @@
#pragma once
-#ifndef _rA_SPINLOCK_H_
-#define _rA_SPINLOCK_H_
+#ifndef _COMMON_SPINLOCK_H_
+#define _COMMON_SPINLOCK_H_
//
// CAS based Spinlock Implementation
@@ -101,4 +101,4 @@ static forceinline void LeaveSpinLock(PSPIN_LOCK lck){
-#endif
+#endif /* _COMMON_SPINLOCK_H_ */
diff --git a/src/common/strlib.h b/src/common/strlib.h
index 7a1066401..10844d257 100644
--- a/src/common/strlib.h
+++ b/src/common/strlib.h
@@ -2,8 +2,8 @@
// See the LICENSE file
// Portions Copyright (c) Athena Dev Teams
-#ifndef _STRLIB_H_
-#define _STRLIB_H_
+#ifndef _COMMON_STRLIB_H_
+#define _COMMON_STRLIB_H_
#include "../common/cbasetypes.h"
#include <stdarg.h>
@@ -191,4 +191,4 @@ void strlib_defaults(void);
#define bin2hex(output,input,count) (strlib->bin2hex((output),(input),(count)))
#endif /* STRLIB_C */
-#endif /* _STRLIB_H_ */
+#endif /* _COMMON_STRLIB_H_ */
diff --git a/src/common/thread.h b/src/common/thread.h
index a5a66e954..d6b2bbc6e 100644
--- a/src/common/thread.h
+++ b/src/common/thread.h
@@ -2,8 +2,8 @@
// For more information, see LICENCE in the main folder
#pragma once
-#ifndef _rA_THREAD_H_
-#define _rA_THREAD_H_
+#ifndef _COMMON_THREAD_H_
+#define _COMMON_THREAD_H_
#include "../common/cbasetypes.h"
@@ -116,4 +116,4 @@ void rathread_init();
void rathread_final();
-#endif
+#endif /* _COMMON_THREAD_H_ */
diff --git a/src/common/timer.h b/src/common/timer.h
index af1a2b036..ab3ffc21f 100644
--- a/src/common/timer.h
+++ b/src/common/timer.h
@@ -1,8 +1,10 @@
// Copyright (c) Hercules Dev Team, licensed under GNU GPL.
// See the LICENSE file
// Portions Copyright (c) Athena Dev Teams
-#ifndef _TIMER_H_
-#define _TIMER_H_
+
+#ifndef _COMMON_TIMER_H_
+#define _COMMON_TIMER_H_
+
#include "../common/cbasetypes.h"
#define DIFF_TICK(a,b) ((a)-(b))
@@ -65,4 +67,4 @@ struct timer_interface *timer;
void timer_defaults(void);
-#endif /* _TIMER_H_ */
+#endif /* _COMMON_TIMER_H_ */
diff --git a/src/common/utils.h b/src/common/utils.h
index 719e1e533..68dd01ac4 100644
--- a/src/common/utils.h
+++ b/src/common/utils.h
@@ -2,8 +2,8 @@
// See the LICENSE file
// Portions Copyright (c) Athena Dev Teams
-#ifndef _UTILS_H_
-#define _UTILS_H_
+#ifndef _COMMON_UTILS_H_
+#define _COMMON_UTILS_H_
#include "../common/cbasetypes.h"
#include <stdio.h> // FILE*
@@ -54,4 +54,4 @@ struct HCache_interface *HCache;
void HCache_defaults(void);
-#endif /* _UTILS_H_ */
+#endif /* _COMMON_UTILS_H_ */