summaryrefslogtreecommitdiff
path: root/regexset.c
diff options
context:
space:
mode:
authorJon Bergli Heier <snakebite@jvnv.net>2009-10-20 22:39:00 +0200
committerJon Bergli Heier <snakebite@jvnv.net>2009-10-20 22:39:00 +0200
commit4b3d1128bf96b96322e4b99da4633f44fa49e585 (patch)
treefa379e005e9db47cad073f57e8e6b1c4fb609b6c /regexset.c
parent27d37093ab87c2a1b8e846b4f4df83bf19ceba4c (diff)
Parse kicks and store number of kicks and times kicked per user.
Diffstat (limited to 'regexset.c')
-rw-r--r--regexset.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/regexset.c b/regexset.c
index 5e2d002..61a22be 100644
--- a/regexset.c
+++ b/regexset.c
@@ -23,7 +23,7 @@ static void re_error(const char *name, const char *pattern, const char *error, i
regexes = realloc(regexes, --rs_count * sizeof(struct regexset_t));
}
-struct regexset_t *rs_add(const char *text, const char *join) {
+struct regexset_t *rs_add(const char *text, const char *join, const char *kick) {
regexes = realloc(regexes, ++rs_count * sizeof(struct regexset_t));
if(!regexes) {
/* If we end up here, we cannot free any previously compiled pcre patterns. */
@@ -55,6 +55,20 @@ struct regexset_t *rs_add(const char *text, const char *join) {
}
rs->join_e = pcre_study(rs->join, 0, &error);
+ rs->kick = pcre_compile(kick, 0, &error, &erroffset, rs_pcre_tables);
+ if(rs->kick == NULL) {
+ pcre_free(rs->text);
+ pcre_free(rs->join);
+ if(rs->text_e) {
+ pcre_free(rs->text_e);
+ pcre_free(rs->join_e);
+ }
+ re_error("kick", kick, error, erroffset);
+ return NULL;
+
+ }
+ rs->kick_e = pcre_study(rs->kick, 0, &error);
+
return rs;
}
@@ -70,6 +84,9 @@ void rs_free() {
pcre_free(regexes[i].join);
if(regexes[i].join_e)
pcre_free(regexes[i].join_e);
+ pcre_free(regexes[i].kick);
+ if(regexes[i].kick_e)
+ pcre_free(regexes[i].kick_e);
}
free(regexes);
regexes = NULL;