+
+ if(discrim->use_regex)
+ {
+ if(discrim->mask_nick)
+ {
+ int err = regcomp(&discrim->regex_nick, discrim->mask_nick, REG_EXTENDED|REG_ICASE|REG_NOSUB);
+ discrim->has_regex_nick = !err;
+ if(err)
+ {
+ char buff[256];
+ buff[regerror(err, &discrim->regex_nick, buff, sizeof(buff))] = 0;
+
+ send_message(user, opserv, "OSMSG_INVALID_REGEX", discrim->mask_nick, buff, err);
+ goto regfail;
+ }
+ }
+
+ if(discrim->mask_ident)
+ {
+ int err = regcomp(&discrim->regex_ident, discrim->mask_ident, REG_EXTENDED|REG_ICASE|REG_NOSUB);
+ discrim->has_regex_ident = !err;
+ if(err)
+ {
+ char buff[256];
+ buff[regerror(err, &discrim->regex_ident, buff, sizeof(buff))] = 0;
+
+ send_message(user, opserv, "OSMSG_INVALID_REGEX", discrim->mask_ident, buff, err);
+ goto regfail;
+ }
+ }
+
+ if(discrim->mask_host)
+ {
+ int err = regcomp(&discrim->regex_host, discrim->mask_host, REG_EXTENDED|REG_ICASE|REG_NOSUB);
+ discrim->has_regex_host = !err;
+ if(err)
+ {
+ char buff[256];
+ buff[regerror(err, &discrim->regex_host, buff, sizeof(buff))] = 0;
+
+ send_message(user, opserv, "OSMSG_INVALID_REGEX", discrim->mask_host, buff, err);
+ goto regfail;
+ }
+ }
+
+ if(discrim->mask_info)
+ {
+ int err = regcomp(&discrim->regex_info, discrim->mask_info, REG_EXTENDED|REG_ICASE|REG_NOSUB);
+ discrim->has_regex_info = !err;
+ if(err)
+ {
+ char buff[256];
+ buff[regerror(err, &discrim->regex_info, buff, sizeof(buff))] = 0;
+
+ send_message(user, opserv, "OSMSG_INVALID_REGEX", discrim->mask_info, buff, err);
+ goto regfail;
+ }
+ }
+ }
+