summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHaru <haru@dotalux.com>2015-12-02 11:54:36 +0100
committerHaru <haru@dotalux.com>2015-12-02 11:55:16 +0100
commit300668dce8699accfb3e8cbce6db55b937230bb7 (patch)
tree5e9f28572c21e4dfe0afc8b43640109ac4db6337 /src
parent9be1d84752ba2ed733ae29d68304f5825cf29162 (diff)
downloadhercules-300668dce8699accfb3e8cbce6db55b937230bb7.tar.gz
hercules-300668dce8699accfb3e8cbce6db55b937230bb7.tar.bz2
hercules-300668dce8699accfb3e8cbce6db55b937230bb7.tar.xz
hercules-300668dce8699accfb3e8cbce6db55b937230bb7.zip
Fixed compile errors on very old PACKETVERs
- Fixes #903 and other similar problems Signed-off-by: Haru <haru@dotalux.com>
Diffstat (limited to 'src')
-rw-r--r--src/common/cbasetypes.h3
-rw-r--r--src/common/console.h8
-rw-r--r--src/common/mmo.h6
-rw-r--r--src/map/npc.h34
-rw-r--r--src/map/packets_struct.h8
-rw-r--r--src/map/party.h23
-rw-r--r--src/map/unit.h12
7 files changed, 60 insertions, 34 deletions
diff --git a/src/common/cbasetypes.h b/src/common/cbasetypes.h
index 64f21f7e0..5fc08b770 100644
--- a/src/common/cbasetypes.h
+++ b/src/common/cbasetypes.h
@@ -428,4 +428,7 @@ typedef char bool;
#define ZEROED_BLOCK_POS(x) (&(x)->HERC__zeroed_block_BEGIN)
#define ZEROED_BLOCK_SIZE(x) ((char*)&((x)->HERC__zeroed_block_END) - (char*)&((x)->HERC__zeroed_block_BEGIN) + sizeof((x)->HERC__zeroed_block_END))
+/** Support macros for marking structs as unavailable */
+#define UNAVAILABLE_STRUCT int8 HERC__unavailable_struct
+
#endif /* COMMON_CBASETYPES_H */
diff --git a/src/common/console.h b/src/common/console.h
index ef6db0cb4..102a1beaf 100644
--- a/src/common/console.h
+++ b/src/common/console.h
@@ -50,8 +50,8 @@ struct CParseEntry {
} u;
};
-#ifdef CONSOLE_INPUT
struct console_input_interface {
+#ifdef CONSOLE_INPUT
/* vars */
SPIN_LOCK ptlock;/* parse thread lock */
rAthread *pthread;/* parse thread */
@@ -75,10 +75,10 @@ struct console_input_interface {
void (*parse_list_subs) (struct CParseEntry *cmd, unsigned char depth);
void (*addCommand) (char *name, CParseFunc func);
void (*setSQL) (Sql *SQL_handle);
-};
-#else
-struct console_input_interface;
+#else // not CONSOLE_INPUT
+ UNAVAILABLE_STRUCT;
#endif
+};
struct console_interface {
void (*init) (void);
diff --git a/src/common/mmo.h b/src/common/mmo.h
index 73d4510a1..095b96341 100644
--- a/src/common/mmo.h
+++ b/src/common/mmo.h
@@ -462,13 +462,15 @@ struct s_friend {
char name[NAME_LENGTH];
};
-#ifdef HOTKEY_SAVING
struct hotkey {
+#ifdef HOTKEY_SAVING
unsigned int id;
unsigned short lv;
unsigned char type; // 0: item, 1: skill
-};
+#else // not HOTKEY_SAVING
+ UNAVAILABLE_STRUCT;
#endif
+};
struct mmo_charstatus {
int char_id;
diff --git a/src/map/npc.h b/src/map/npc.h
index e7fc16a21..d5e4618a1 100644
--- a/src/map/npc.h
+++ b/src/map/npc.h
@@ -295,32 +295,51 @@ HPShared struct npc_interface *npc;
/* comes from npc_chat.c */
#ifdef PCRE_SUPPORT
#include <pcre/include/pcre.h>
-/* Structure containing all info associated with a single pattern block */
+#endif // PCRE_SUPPORT
+
+/**
+ * Structure containing all info associated with a single pattern block
+ */
struct pcrematch_entry {
+#ifdef PCRE_SUPPORT
struct pcrematch_entry* next;
char* pattern;
pcre* pcre_;
pcre_extra* pcre_extra_;
char* label;
+#else // not PCRE_SUPPORT
+ UNAVAILABLE_STRUCT;
+#endif // PCRE_SUPPORT
};
-/* A set of patterns that can be activated and deactived with a single command */
+/**
+ * A set of patterns that can be activated and deactived with a single command
+ */
struct pcrematch_set {
+#ifdef PCRE_SUPPORT
struct pcrematch_set* prev;
struct pcrematch_set* next;
struct pcrematch_entry* head;
int setid;
+#else // not PCRE_SUPPORT
+ UNAVAILABLE_STRUCT;
+#endif // PCRE_SUPPORT
};
-/*
+/**
* Entire data structure hung off a NPC
*/
struct npc_parse {
+#ifdef PCRE_SUPPORT
struct pcrematch_set* active;
struct pcrematch_set* inactive;
+#else // not PCRE_SUPPORT
+ UNAVAILABLE_STRUCT;
+#endif // PCRE_SUPPORT
};
struct npc_chat_interface {
+#ifdef PCRE_SUPPORT
int (*sub) (struct block_list* bl, va_list ap);
void (*finalize) (struct npc_data* nd);
void (*def_pattern) (struct npc_data* nd, int setid, const char* pattern, const char* label);
@@ -330,6 +349,9 @@ struct npc_chat_interface {
void (*activate_pcreset) (struct npc_data* nd, int setid);
struct pcrematch_set* (*lookup_pcreset) (struct npc_data* nd, int setid);
void (*finalize_pcrematch_entry) (struct pcrematch_entry* e);
+#else // not PCRE_SUPPORT
+ UNAVAILABLE_STRUCT;
+#endif // PCRE_SUPPORT
};
/**
@@ -338,6 +360,7 @@ struct npc_chat_interface {
* should be moved into core/perhaps its own file once hpm is enhanced for login/char
**/
struct pcre_interface {
+#ifdef PCRE_SUPPORT
pcre *(*compile) (const char *pattern, int options, const char **errptr, int *erroffset, const unsigned char *tableptr);
pcre_extra *(*study) (const pcre *code, int options, const char **errptr);
int (*exec) (const pcre *code, const pcre_extra *extra, PCRE_SPTR subject, int length, int startoffset, int options, int *ovector, int ovecsize);
@@ -346,6 +369,9 @@ struct pcre_interface {
void (*free_substring) (const char *stringptr);
int (*copy_named_substring) (const pcre *code, const char *subject, int *ovector, int stringcount, const char *stringname, char *buffer, int buffersize);
int (*get_substring) (const char *subject, int *ovector, int stringcount, int stringnumber, const char **stringptr);
+#else // not PCRE_SUPPORT
+ UNAVAILABLE_STRUCT;
+#endif // PCRE_SUPPORT
};
/**
@@ -358,6 +384,4 @@ void npc_chat_defaults(void);
HPShared struct npc_chat_interface *npc_chat;
HPShared struct pcre_interface *libpcre;
-#endif // PCRE_SUPPORT
-
#endif /* MAP_NPC_H */
diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h
index 58c17ef0a..4a3fb6a4f 100644
--- a/src/map/packets_struct.h
+++ b/src/map/packets_struct.h
@@ -455,7 +455,7 @@ struct packet_idle_unit2 {
unsigned char state;
short clevel;
#else // ! PACKETVER < 20091103
- char UNUSED;
+ UNAVAILABLE_STRUCT;
#endif // PACKETVER < 20091103
} __attribute__((packed));
@@ -486,7 +486,7 @@ struct packet_spawn_unit2 {
unsigned char xSize;
unsigned char ySize;
#else // ! PACKETVER < 20091103
- char UNUSED;
+ UNAVAILABLE_STRUCT;
#endif // PACKETVER < 20091103
} __attribute__((packed));
@@ -1097,6 +1097,7 @@ struct packet_party_leader_changed {
} __attribute__((packed));
struct packet_hotkey {
+#ifdef HOTKEY_SAVING
short PacketType;
#if PACKETVER >= 20141022
char Rotate;
@@ -1106,6 +1107,9 @@ struct packet_hotkey {
unsigned int ID; // Item/Skill ID
short count; // Item Quantity/Skill Level
} hotkey[MAX_HOTKEYS];
+#else // not HOTKEY_SAVING
+ UNAVAILABLE_STRUCT;
+#endif // HOTKEY_SAVING
} __attribute__((packed));
/**
diff --git a/src/map/party.h b/src/map/party.h
index df7c03f05..bcc905b94 100644
--- a/src/map/party.h
+++ b/src/map/party.h
@@ -40,32 +40,27 @@ struct party_data {
#define PB_NOTICE_LENGTH (36 + 1)
-#ifndef PARTY_RECRUIT
struct party_booking_detail {
short level;
+#ifdef PARTY_RECRUIT
+ char notice[PB_NOTICE_LENGTH];
+#else // not PARTY_RECRUIT
short mapid;
short job[PARTY_BOOKING_JOBS];
+#endif // PARTY_RECRUIT
};
struct party_booking_ad_info {
unsigned int index;
- char charname[NAME_LENGTH];
- int expiretime;
- struct party_booking_detail p_detail;
-};
-#else /* PARTY_RECRUIT */
-struct party_booking_detail {
- short level;
- char notice[PB_NOTICE_LENGTH];
-};
-
-struct party_booking_ad_info {
- unsigned int index;
+#ifdef PARTY_BOOKING
int expiretime;
char charname[NAME_LENGTH];
+#else // not PARTY_BOOKING
+ char charname[NAME_LENGTH];
+ int expiretime;
+#endif // PARTY_BOOKING
struct party_booking_detail p_detail;
};
-#endif /* PARTY_RECRUIT */
/*=====================================
* Interface : party.h
diff --git a/src/map/unit.h b/src/map/unit.h
index 0d970ca16..0f7a1aec5 100644
--- a/src/map/unit.h
+++ b/src/map/unit.h
@@ -65,13 +65,11 @@ struct unit_data {
struct view_data {
#ifdef __64BIT__
- unsigned int class_;
-#endif
- unsigned short
-#ifndef __64BIT__
- class_,
-#endif
- weapon,
+ uint32 class_; // FIXME: This shouldn't really depend on the architecture.
+#else // not __64BIT__
+ uint16 class_;
+#endif // __64BIT__
+ uint16 weapon,
shield, //Or left-hand weapon.
robe,
head_top,