summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
Diffstat (limited to 'src/map')
-rw-r--r--src/map/Makefile.in4
-rw-r--r--src/map/atcommand.c18
-rw-r--r--src/map/clif.c25
-rw-r--r--src/map/clif.h7
-rw-r--r--src/map/guild.c2
-rw-r--r--src/map/map.c2
-rw-r--r--src/map/npc.c2
-rw-r--r--src/map/npc.h22
-rw-r--r--src/map/npc_chat.c4
-rw-r--r--src/map/script.c12
-rw-r--r--src/map/script.h2
11 files changed, 28 insertions, 72 deletions
diff --git a/src/map/Makefile.in b/src/map/Makefile.in
index 60d87522e..b5a3d4461 100644
--- a/src/map/Makefile.in
+++ b/src/map/Makefile.in
@@ -116,13 +116,13 @@ map-server: ../../map-server@EXEEXT@
../../map-server@EXEEXT@: $(MAP_SERVER_SQL_DEPENDS) Makefile
@echo " LD $(notdir $@)"
@$(CC) @STATIC@ @LDFLAGS@ -o ../../map-server@EXEEXT@ $(MAP_OBJ) $(COMMON_D)/obj_sql/common_sql.a \
- $(COMMON_D)/obj_all/common.a $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) @LIBS@ @PCRE_LIBS@ @MYSQL_LIBS@
+ $(COMMON_D)/obj_all/common.a $(MT19937AR_OBJ) $(LIBCONFIG_OBJ) @LIBS@ @MYSQL_LIBS@
# map object files
obj_sql/%.o: %.c $(MAP_H) $(COMMON_H) $(CONFIG_H) $(MT19937AR_H) $(LIBCONFIG_H) | obj_sql
@echo " CC $<"
- @$(CC) @CFLAGS@ @DEFS@ $(COMMON_INCLUDE) $(THIRDPARTY_INCLUDE) @PCRE_CFLAGS@ @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
+ @$(CC) @CFLAGS@ @DEFS@ $(COMMON_INCLUDE) $(THIRDPARTY_INCLUDE) @MYSQL_CFLAGS@ @CPPFLAGS@ -c $(OUTPUT_OPTION) $<
# missing object files
$(COMMON_D)/obj_all/common.a:
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index 08119457d..bc539837d 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -260,24 +260,28 @@ ACMD(send)
if (type >= MIN_PACKET_DB && type <= MAX_PACKET_DB) {
int off = 2;
+ if (clif->packet(type) == NULL) {
+ // unknown packet - ERROR
+ safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,905), type); // Unknown packet: 0x%x
+ clif->message(fd, atcmd_output);
+ return false;
+ }
+
if (len) {
// show packet length
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,904), type, clif->packet(type)->len); // Packet 0x%x length: %d
clif->message(fd, atcmd_output);
return true;
}
-
+
len = clif->packet(type)->len;
- if (len == 0) {
- // unknown packet - ERROR
- safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,905), type); // Unknown packet: 0x%x
- clif->message(fd, atcmd_output);
- return false;
- } else if (len == -1) {
+
+ if (len == -1) {
// dynamic packet
len = SHRT_MAX-4; // maximum length
off = 4;
}
+
WFIFOHEAD(sd->fd, len);
WFIFOW(sd->fd,0)=TOW(type);
diff --git a/src/map/clif.c b/src/map/clif.c
index 817579e23..3b2f255ef 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -9859,10 +9859,8 @@ void clif_parse_GlobalMessage(int fd, struct map_session_data* sd)
// Chat logging type 'O' / Global Chat
logs->chat(LOG_CHAT_GLOBAL, 0, sd->status.char_id, sd->status.account_id, mapindex_id2name(sd->mapindex), sd->bl.x, sd->bl.y, NULL, message);
-#ifdef PCRE_SUPPORT
// trigger listening npcs
map->foreachinrange(npc_chat->sub, &sd->bl, AREA_SIZE, BL_NPC, text, textlen, &sd->bl);
-#endif
}
void clif_parse_MapMove(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
@@ -10398,7 +10396,7 @@ void clif_parse_EquipItem(int fd,struct map_session_data *sd) __attribute__((non
/// 00a9 <index>.W <position>.W
/// 0998 <index>.W <position>.L
void clif_parse_EquipItem(int fd,struct map_session_data *sd) {
- struct packet_equip_item *p = P2PTR(fd);
+ struct packet_equip_item *p = RP2PTR(fd);
if(pc_isdead(sd)) {
clif->clearunit_area(&sd->bl,CLR_DEAD);
@@ -13379,7 +13377,7 @@ void clif_parse_GM_Monster_Item(int fd, struct map_session_data *sd) __attribute
/// 013f <item/mob name>.24B
/// 09ce <item/mob name>.100B [Ind/Yommy<3]
void clif_parse_GM_Monster_Item(int fd, struct map_session_data *sd) {
- struct packet_gm_monster_item *p = P2PTR(fd);
+ struct packet_gm_monster_item *p = RP2PTR(fd);
int i, count;
char *item_monster_name;
struct item_data *item_array[10];
@@ -17694,7 +17692,7 @@ void clif_bgqueue_notice_delete(struct map_session_data *sd, enum BATTLEGROUNDS_
void clif_parse_bgqueue_register(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
void clif_parse_bgqueue_register(int fd, struct map_session_data *sd) {
- struct packet_bgqueue_register *p = P2PTR(fd);
+ struct packet_bgqueue_register *p = RP2PTR(fd);
struct bg_arena *arena = NULL;
if( !bg->queue_on ) return; /* temp, until feature is complete */
@@ -17732,7 +17730,7 @@ void clif_bgqueue_update_info(struct map_session_data *sd, unsigned char arena_i
void clif_parse_bgqueue_checkstate(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
void clif_parse_bgqueue_checkstate(int fd, struct map_session_data *sd) {
- struct packet_bgqueue_checkstate *p = P2PTR(fd);
+ struct packet_bgqueue_checkstate *p = RP2PTR(fd);
nullpo_retv(sd);
if ( sd->bg_queue.arena && sd->bg_queue.type ) {
@@ -17743,7 +17741,7 @@ void clif_parse_bgqueue_checkstate(int fd, struct map_session_data *sd) {
void clif_parse_bgqueue_revoke_req(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
void clif_parse_bgqueue_revoke_req(int fd, struct map_session_data *sd) {
- struct packet_bgqueue_revoke_req *p = P2PTR(fd);
+ struct packet_bgqueue_revoke_req *p = RP2PTR(fd);
if( sd->bg_queue.arena )
bg->queue_pc_cleanup(sd);
@@ -17753,7 +17751,7 @@ void clif_parse_bgqueue_revoke_req(int fd, struct map_session_data *sd) {
void clif_parse_bgqueue_battlebegin_ack(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
void clif_parse_bgqueue_battlebegin_ack(int fd, struct map_session_data *sd) {
- struct packet_bgqueue_battlebegin_ack *p = P2PTR(fd);
+ struct packet_bgqueue_battlebegin_ack *p = RP2PTR(fd);
struct bg_arena *arena;
if( !bg->queue_on ) return; /* temp, until feature is complete */
@@ -17892,7 +17890,7 @@ void clif_cart_additem_ack(struct map_session_data *sd, int flag) {
void clif_parse_BankDeposit(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
/* Bank System [Yommy/Hercules] */
void clif_parse_BankDeposit(int fd, struct map_session_data* sd) {
- struct packet_banking_deposit_req *p = P2PTR(fd);
+ struct packet_banking_deposit_req *p = RP2PTR(fd);
int money;
if (!battle_config.feature_banking) {
@@ -17907,7 +17905,7 @@ void clif_parse_BankDeposit(int fd, struct map_session_data* sd) {
void clif_parse_BankWithdraw(int fd, struct map_session_data* sd) __attribute__((nonnull (2)));
void clif_parse_BankWithdraw(int fd, struct map_session_data* sd) {
- struct packet_banking_withdraw_req *p = P2PTR(fd);
+ struct packet_banking_withdraw_req *p = RP2PTR(fd);
int money;
if (!battle_config.feature_banking) {
@@ -18184,7 +18182,7 @@ void clif_npc_market_purchase_ack(struct map_session_data *sd, struct packet_npc
void clif_parse_NPCMarketPurchase(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
void clif_parse_NPCMarketPurchase(int fd, struct map_session_data *sd) {
#if PACKETVER >= 20131223
- struct packet_npc_market_purchase *p = P2PTR(fd);
+ struct packet_npc_market_purchase *p = RP2PTR(fd);
clif->npc_market_purchase_ack(sd,p,npc->market_buylist(sd,(p->PacketLength - 4) / sizeof(p->list[0]),p));
#endif
@@ -18871,6 +18869,11 @@ static void __attribute__ ((unused)) packetdb_addpacket(short cmd, int len, ...)
return;
}
+ if (cmd < MIN_PACKET_DB) {
+ ShowError("Packet Error: packet 0x%x is lower than the minimum allowed (0x%x), skipping...\n", cmd, MIN_PACKET_DB);
+ return;
+ }
+
packet_db[cmd].len = len;
va_start(va,len);
diff --git a/src/map/clif.h b/src/map/clif.h
index 3d43b064c..d68a09393 100644
--- a/src/map/clif.h
+++ b/src/map/clif.h
@@ -58,7 +58,6 @@ struct view_data;
* Defines
**/
#define packet_len(cmd) packet_db[cmd].len
-#define P2PTR(fd) RFIFO2PTR(fd)
#define clif_menuskill_clear(sd) ((sd)->menuskill_id = (sd)->menuskill_val = (sd)->menuskill_val2 = 0)
#define clif_disp_onlyself(sd,mes,len) clif->disp_message( &(sd)->bl, (mes), (len), SELF )
#define MAX_ROULETTE_LEVEL 7 /** client-defined value **/
@@ -73,12 +72,6 @@ struct view_data;
/**
* Enumerations
**/
-enum {// packet DB
- MIN_PACKET_DB = 0x0064,
- MAX_PACKET_DB = 0x0F00,
- MAX_PACKET_POS = 20,
-};
-
typedef enum send_target {
ALL_CLIENT,
ALL_SAMEMAP,
diff --git a/src/map/guild.c b/src/map/guild.c
index cba05638f..f4f0c0528 100644
--- a/src/map/guild.c
+++ b/src/map/guild.c
@@ -1117,7 +1117,7 @@ int guild_change_position(int guild_id,int idx,int mode,int exp_mode,const char
nullpo_ret(name);
exp_mode = cap_value(exp_mode, 0, battle_config.guild_exp_limit);
- p.mode=mode&GPERM_BOTH; // Invite and Expel
+ p.mode=mode&GPERM_MASK;
p.exp_mode=exp_mode;
safestrncpy(p.name,name,NAME_LENGTH);
return intif->guild_position(guild_id,idx,&p);
diff --git a/src/map/map.c b/src/map/map.c
index 1b922148b..3dad25fce 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -5774,9 +5774,7 @@ void map_load_defaults(void) {
pet_defaults();
path_defaults();
quest_defaults();
-#ifdef PCRE_SUPPORT
npc_chat_defaults();
-#endif
}
/**
* --run-once handler
diff --git a/src/map/npc.c b/src/map/npc.c
index c70964e5e..23b0b9555 100644
--- a/src/map/npc.c
+++ b/src/map/npc.c
@@ -2276,9 +2276,7 @@ int npc_unload(struct npc_data* nd, bool single)
if (nd->chat_id) // remove npc chatroom object and kick users
chat->delete_npc_chat(nd);
-#ifdef PCRE_SUPPORT
npc_chat->finalize(nd); // deallocate npc PCRE data structures
-#endif
if (single && nd->path != NULL) {
npc->releasepathreference(nd->path);
diff --git a/src/map/npc.h b/src/map/npc.h
index 0b2729bcf..568ddfe87 100644
--- a/src/map/npc.h
+++ b/src/map/npc.h
@@ -309,53 +309,38 @@ void npc_defaults(void);
HPShared struct npc_interface *npc;
/* comes from npc_chat.c */
-#ifdef PCRE_SUPPORT
#include <pcre/include/pcre.h>
-#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
*/
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);
@@ -365,9 +350,6 @@ 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
};
/**
@@ -376,7 +358,6 @@ 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);
@@ -385,9 +366,6 @@ 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
};
/**
diff --git a/src/map/npc_chat.c b/src/map/npc_chat.c
index fef3ba99b..001baf3ea 100644
--- a/src/map/npc_chat.c
+++ b/src/map/npc_chat.c
@@ -20,8 +20,6 @@
*/
#define HERCULES_CORE
-#ifdef PCRE_SUPPORT
-
#include "npc.h" // struct npc_data
#include "map/mob.h" // struct mob_data
@@ -470,5 +468,3 @@ void npc_chat_defaults(void) {
libpcre->copy_named_substring = pcre_copy_named_substring;
libpcre->get_substring = pcre_get_substring;
}
-
-#endif //PCRE_SUPPORT
diff --git a/src/map/script.c b/src/map/script.c
index 9e113a6f9..f3c839555 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -159,10 +159,8 @@ const char* script_op2name(int op) {
RETURN_OP_NAME(C_SUB_POST);
RETURN_OP_NAME(C_ADD_PRE);
RETURN_OP_NAME(C_SUB_PRE);
-#ifdef PCRE_SUPPORT
RETURN_OP_NAME(C_RE_EQ);
RETURN_OP_NAME(C_RE_NE);
-#endif // PCRE_SUPPORT
default:
ShowDebug("script_op2name: unexpected op=%d\n", op);
@@ -1446,10 +1444,8 @@ const char* script_parse_subexpr(const char* p,int limit)
|| (op=C_XOR, opl=4, len=1,*p=='^') // ^
|| (op=C_EQ, opl=6, len=2,*p=='=' && p[1]=='=') // ==
|| (op=C_NE, opl=6, len=2,*p=='!' && p[1]=='=') // !=
-#ifdef PCRE_SUPPORT
|| (op=C_RE_EQ, opl=6, len=2,*p=='~' && p[1]=='=') // ~=
|| (op=C_RE_NE, opl=6, len=2,*p=='~' && p[1]=='!') // ~!
-#endif // PCRE_SUPPORT
|| (op=C_R_SHIFT,opl=8, len=2,*p=='>' && p[1]=='>') // >>
|| (op=C_GE, opl=7, len=2,*p=='>' && p[1]=='=') // >=
|| (op=C_GT, opl=7, len=1,*p=='>') // >
@@ -3761,7 +3757,6 @@ void op_2str(struct script_state* st, int op, const char* s1, const char* s2)
case C_GE: a = (strcmp(s1,s2) >= 0); break;
case C_LT: a = (strcmp(s1,s2) < 0); break;
case C_LE: a = (strcmp(s1,s2) <= 0); break;
-#ifdef PCRE_SUPPORT
case C_RE_EQ:
case C_RE_NE:
{
@@ -3826,7 +3821,6 @@ void op_2str(struct script_state* st, int op, const char* s1, const char* s2)
libpcre->free(extra_regex);
}
break;
-#endif // PCRE_SUPPORT
case C_ADD:
{
char* buf = (char *)aMalloc((strlen(s1)+strlen(s2)+1)*sizeof(char));
@@ -4419,10 +4413,8 @@ void run_script_main(struct script_state *st) {
case C_LOR:
case C_R_SHIFT:
case C_L_SHIFT:
-#ifdef PCRE_SUPPORT
case C_RE_EQ:
case C_RE_NE:
-#endif // PCRE_SUPPORT
script->op_2(st, c);
break;
@@ -20123,7 +20115,6 @@ BUILDIN(_) {
}
// declarations that were supposed to be exported from npc_chat.c
-#ifdef PCRE_SUPPORT
BUILDIN(defpattern);
BUILDIN(activatepset);
BUILDIN(deactivatepset);
@@ -20136,7 +20127,6 @@ BUILDIN(pcre_match) {
script->op_2str(st, C_RE_EQ, input, regex);
return true;
}
-#endif
/**
* Adds a built-in script function.
@@ -20553,13 +20543,11 @@ void script_parse_builtin(void) {
BUILDIN_DEF(getrefine,""), // returns the refined number of the current item, or an item with index specified [celest]
BUILDIN_DEF(night,""), // sets the server to night time
BUILDIN_DEF(day,""), // sets the server to day time
-#ifdef PCRE_SUPPORT
BUILDIN_DEF(defpattern,"iss"), // Define pattern to listen for [MouseJstr]
BUILDIN_DEF(activatepset,"i"), // Activate a pattern set [MouseJstr]
BUILDIN_DEF(deactivatepset,"i"), // Deactive a pattern set [MouseJstr]
BUILDIN_DEF(deletepset,"i"), // Delete a pattern set [MouseJstr]
BUILDIN_DEF(pcre_match,"ss"),
-#endif
BUILDIN_DEF(dispbottom,"s?"), //added from jA [Lupus]
BUILDIN_DEF(getusersname,""),
BUILDIN_DEF(recovery,""),
diff --git a/src/map/script.h b/src/map/script.h
index e6164092e..351ccd02a 100644
--- a/src/map/script.h
+++ b/src/map/script.h
@@ -233,10 +233,8 @@ typedef enum c_op {
C_SUB_POST, // a--
C_ADD_PRE, // ++a
C_SUB_PRE, // --a
-#ifdef PCRE_SUPPORT
C_RE_EQ, // ~=
C_RE_NE, // ~!
-#endif // PCRE_SUPPORT
} c_op;
/// Script queue options