From ad814bbda0570efc01f00cf4a59af573f9843faf Mon Sep 17 00:00:00 2001 From: ultramage Date: Fri, 6 Apr 2007 22:15:19 +0000 Subject: Updated the server's PCRE components to 7.0 - dll, library, header - cleaned the only existing example and moved it to /samples - changed its interface a bit, now it uses $@ instead of $ to store the parsed result - /!\ adjust your scripts if you are using npc regexp parsing /!\ git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@10170 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/npc_chat.c | 22 ++++++++-------- src/map/pcre.h | 74 ++++++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 66 insertions(+), 30 deletions(-) (limited to 'src') diff --git a/src/map/npc_chat.c b/src/map/npc_chat.c index 22ea457eb..6288714bc 100644 --- a/src/map/npc_chat.c +++ b/src/map/npc_chat.c @@ -49,7 +49,7 @@ * is matched. * * each of the matched Groups will result in a variable being - * set ($p1$ through $p9$ with $p0$ being the entire string) + * set ($@p1$ through $@p9$ with $@p0$ being the entire string) * before the script gets executed. * * activatepset 1; @@ -402,43 +402,43 @@ int npc_chat_sub(struct block_list *bl, va_list ap) case 10: memcpy(buf, &msg[offsets[18]], offsets[19]); buf[offsets[19]] = '\0'; - set_var(sd, "$p9$", buf); + set_var(sd, "$@p9$", buf); case 9: memcpy(buf, &msg[offsets[16]], offsets[17]); buf[offsets[17]] = '\0'; - set_var(sd, "$p8$", buf); + set_var(sd, "$@p8$", buf); case 8: memcpy(buf, &msg[offsets[14]], offsets[15]); buf[offsets[15]] = '\0'; - set_var(sd, "$p7$", buf); + set_var(sd, "$@p7$", buf); case 7: memcpy(buf, &msg[offsets[12]], offsets[13]); buf[offsets[13]] = '\0'; - set_var(sd, "$p6$", buf); + set_var(sd, "$@p6$", buf); case 6: memcpy(buf, &msg[offsets[10]], offsets[11]); buf[offsets[11]] = '\0'; - set_var(sd, "$p5$", buf); + set_var(sd, "$@p5$", buf); case 5: memcpy(buf, &msg[offsets[8]], offsets[9]); buf[offsets[9]] = '\0'; - set_var(sd, "$p4$", buf); + set_var(sd, "$@p4$", buf); case 4: memcpy(buf, &msg[offsets[6]], offsets[7]); buf[offsets[7]] = '\0'; - set_var(sd, "$p3$", buf); + set_var(sd, "$@p3$", buf); case 3: memcpy(buf, &msg[offsets[4]], offsets[5]); buf[offsets[5]] = '\0'; - set_var(sd, "$p2$", buf); + set_var(sd, "$@p2$", buf); case 2: memcpy(buf, &msg[offsets[2]], offsets[3]); buf[offsets[3]] = '\0'; - set_var(sd, "$p1$", buf); + set_var(sd, "$@p1$", buf); case 1: memcpy(buf, &msg[offsets[0]], offsets[1]); buf[offsets[1]] = '\0'; - set_var(sd, "$p0$", buf); + set_var(sd, "$@p0$", buf); } // find the target label.. this sucks.. diff --git a/src/map/pcre.h b/src/map/pcre.h index b2596a83d..e973396ba 100644 --- a/src/map/pcre.h +++ b/src/map/pcre.h @@ -2,10 +2,10 @@ * Perl-Compatible Regular Expressions * *************************************************/ -/* In its original form, this is the .in file that is transformed by -"configure" into pcre.h. +/* This is the public header file for the PCRE library, to be #included by +applications that call the PCRE functions. - Copyright (c) 1997-2005 University of Cambridge + Copyright (c) 1997-2006 University of Cambridge ----------------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without @@ -39,14 +39,26 @@ POSSIBILITY OF SUCH DAMAGE. #ifndef _PCRE_H #define _PCRE_H -/* The file pcre.h is build by "configure". Do not edit it; instead -make changes to pcre.in. */ +/* The current PCRE version information. */ -#define PCRE_MAJOR 6 -#define PCRE_MINOR 3 -#define PCRE_DATE 15-Aug-2005 +/* NOTES FOR FUTURE MAINTAINERS: Do not use numbers with leading zeros, because +they may be treated as octal constants. The PCRE_PRERELEASE feature is for +identifying release candidates. It might be defined as -RC2, for example. In +real releases, it should be defined empty. Do not change the alignment of these +statments. The code in ./configure greps out the version numbers by using "cut" +to get values from column 29 onwards. These are substituted into pcre-config +and libpcre.pc. The values are not put into configure.ac and substituted here +(which would simplify this issue) because that makes life harder for those who +cannot run ./configure. As it now stands, this file need not be edited in that +circumstance. */ -/* Win32 uses DLL by default; it needs special stuff for exported functions. */ +#define PCRE_MAJOR 7 +#define PCRE_MINOR 0 +#define PCRE_PRERELEASE +#define PCRE_DATE 18-Dec-2006 + +/* Win32 uses DLL by default; it needs special stuff for exported functions +when building PCRE. */ #ifdef _WIN32 # ifdef PCRE_DEFINITION @@ -60,7 +72,7 @@ make changes to pcre.in. */ # endif #endif -/* For other operating systems, we use the standard "extern". */ +/* Otherwise, we use the standard "extern". */ #ifndef PCRE_DATA_SCOPE # ifdef __cplusplus @@ -102,6 +114,11 @@ extern "C" { #define PCRE_DFA_SHORTEST 0x00010000 #define PCRE_DFA_RESTART 0x00020000 #define PCRE_FIRSTLINE 0x00040000 +#define PCRE_DUPNAMES 0x00080000 +#define PCRE_NEWLINE_CR 0x00100000 +#define PCRE_NEWLINE_LF 0x00200000 +#define PCRE_NEWLINE_CRLF 0x00300000 +#define PCRE_NEWLINE_ANY 0x00400000 /* Exec-time and get/set-time error codes */ @@ -109,7 +126,8 @@ extern "C" { #define PCRE_ERROR_NULL (-2) #define PCRE_ERROR_BADOPTION (-3) #define PCRE_ERROR_BADMAGIC (-4) -#define PCRE_ERROR_UNKNOWN_NODE (-5) +#define PCRE_ERROR_UNKNOWN_OPCODE (-5) +#define PCRE_ERROR_UNKNOWN_NODE (-5) /* For backward compatibility */ #define PCRE_ERROR_NOMEMORY (-6) #define PCRE_ERROR_NOSUBSTRING (-7) #define PCRE_ERROR_MATCHLIMIT (-8) @@ -125,6 +143,9 @@ extern "C" { #define PCRE_ERROR_DFA_UMLIMIT (-18) #define PCRE_ERROR_DFA_WSSIZE (-19) #define PCRE_ERROR_DFA_RECURSE (-20) +#define PCRE_ERROR_RECURSIONLIMIT (-21) +#define PCRE_ERROR_NULLWSLIMIT (-22) +#define PCRE_ERROR_BADNEWLINE (-23) /* Request types for pcre_fullinfo() */ @@ -142,7 +163,8 @@ extern "C" { #define PCRE_INFO_STUDYSIZE 10 #define PCRE_INFO_DEFAULT_TABLES 11 -/* Request types for pcre_config() */ +/* Request types for pcre_config(). Do not re-arrange, in order to remain +compatible. */ #define PCRE_CONFIG_UTF8 0 #define PCRE_CONFIG_NEWLINE 1 @@ -151,19 +173,30 @@ extern "C" { #define PCRE_CONFIG_MATCH_LIMIT 4 #define PCRE_CONFIG_STACKRECURSE 5 #define PCRE_CONFIG_UNICODE_PROPERTIES 6 +#define PCRE_CONFIG_MATCH_LIMIT_RECURSION 7 -/* Bit flags for the pcre_extra structure */ +/* Bit flags for the pcre_extra structure. Do not re-arrange or redefine +these bits, just add new ones on the end, in order to remain compatible. */ -#define PCRE_EXTRA_STUDY_DATA 0x0001 -#define PCRE_EXTRA_MATCH_LIMIT 0x0002 -#define PCRE_EXTRA_CALLOUT_DATA 0x0004 -#define PCRE_EXTRA_TABLES 0x0008 +#define PCRE_EXTRA_STUDY_DATA 0x0001 +#define PCRE_EXTRA_MATCH_LIMIT 0x0002 +#define PCRE_EXTRA_CALLOUT_DATA 0x0004 +#define PCRE_EXTRA_TABLES 0x0008 +#define PCRE_EXTRA_MATCH_LIMIT_RECURSION 0x0010 /* Types */ struct real_pcre; /* declaration; the definition is private */ typedef struct real_pcre pcre; +/* When PCRE is compiled as a C++ library, the subject pointer type can be +replaced with a custom type. For conventional use, the public interface is a +const char *. */ + +#ifndef PCRE_SPTR +#define PCRE_SPTR const char * +#endif + /* The structure for passing additional data to pcre_exec(). This is defined in such as way as to be extensible. Always add new fields at the end, in order to remain compatible. */ @@ -174,6 +207,7 @@ typedef struct pcre_extra { unsigned long int match_limit; /* Maximum number of calls to match() */ void *callout_data; /* Data passed back in callouts */ const unsigned char *tables; /* Pointer to character tables */ + unsigned long int match_limit_recursion; /* Max recursive calls to match() */ } pcre_extra; /* The structure for passing out data via the pcre_callout_function. We use a @@ -186,7 +220,7 @@ typedef struct pcre_callout_block { /* ------------------------ Version 0 ------------------------------- */ int callout_number; /* Number compiled into pattern */ int *offset_vector; /* The offset vector */ - const char *subject; /* The subject being matched */ + PCRE_SPTR subject; /* The subject being matched */ int subject_length; /* The length of the subject */ int start_match; /* Offset to start of this match attempt */ int current_position; /* Where we currently are in the subject */ @@ -232,7 +266,7 @@ PCRE_DATA_SCOPE int pcre_copy_substring(const char *, int *, int, int, char *, int); PCRE_DATA_SCOPE int pcre_dfa_exec(const pcre *, const pcre_extra *, const char *, int, int, int, int *, int , int *, int); -PCRE_DATA_SCOPE int pcre_exec(const pcre *, const pcre_extra *, const char *, +PCRE_DATA_SCOPE int pcre_exec(const pcre *, const pcre_extra *, PCRE_SPTR, int, int, int, int *, int); PCRE_DATA_SCOPE void pcre_free_substring(const char *); PCRE_DATA_SCOPE void pcre_free_substring_list(const char **); @@ -241,6 +275,8 @@ PCRE_DATA_SCOPE int pcre_fullinfo(const pcre *, const pcre_extra *, int, PCRE_DATA_SCOPE int pcre_get_named_substring(const pcre *, const char *, int *, int, const char *, const char **); PCRE_DATA_SCOPE int pcre_get_stringnumber(const pcre *, const char *); +PCRE_DATA_SCOPE int pcre_get_stringtable_entries(const pcre *, const char *, + char **, char **); PCRE_DATA_SCOPE int pcre_get_substring(const char *, int *, int, int, const char **); PCRE_DATA_SCOPE int pcre_get_substring_list(const char *, int *, int, -- cgit v1.2.3-60-g2f50