Fix ?csearch max timestamp default value.
[srvx.git] / src / opserv.c
index acfee7c0a53cb9124826b1f7e10817b66dccefac..214aa9325137adb03b92dd79047d7d437040dbb7 100644 (file)
@@ -478,7 +478,7 @@ static MODCMD_FUNC(cmd_chaninfo)
     return 1;
 }
 
-static MODCMD_FUNC(cmd_warn) 
+static MODCMD_FUNC(cmd_warn)
 {
     char *reason, *message;
 
@@ -1738,7 +1738,7 @@ opserv_new_user_check(struct userNode *user)
 
     /* Gag them if appropriate. */
     for (gag = gagList; gag; gag = gag->next) {
-        if (user_matches_glob(user, gag->mask, 1)) {
+        if (user_matches_glob(user, gag->mask, MATCH_USENICK)) {
             gag_helper_func(user, NULL);
             break;
         }
@@ -3462,6 +3462,9 @@ opserv_cdiscrim_create(struct userNode *user, unsigned int argc, char *argv[])
 
     discrim = calloc(1, sizeof(*discrim));
     discrim->limit = 25;
+    discrim->max_users = ~0;
+    /* So, time_t is frequently signed.  Fun. */
+    discrim->max_ts = (1ul << (CHAR_BIT * sizeof(time_t) - 1)) - 1;
 
     for (i = 0; i < argc; i++) {
        /* Assume all criteria require arguments. */
@@ -3532,10 +3535,10 @@ cdiscrim_match(cdiscrim_t discrim, struct chanNode *chan)
 {
     if ((discrim->name && !match_ircglob(chan->name, discrim->name)) ||
         (discrim->topic && !match_ircglob(chan->topic, discrim->topic)) ||
-        (discrim->min_users && chan->members.used < discrim->min_users) ||
-        (discrim->max_users && chan->members.used > discrim->max_users) ||
-        (discrim->min_ts && chan->timestamp < discrim->min_ts) ||
-            (discrim->max_ts && chan->timestamp > discrim->max_ts)) {
+        (chan->members.used < discrim->min_users) ||
+        (chan->members.used > discrim->max_users) ||
+        (chan->timestamp < discrim->min_ts) ||
+        (chan->timestamp > discrim->max_ts)) {
        return 0;
     }
     return 1;
@@ -3758,7 +3761,7 @@ opserv_alert_check_nick(struct userNode *user, UNUSED_ARG(const char *old_nick))
     /* Gag them if appropriate (and only if). */
     user->modes &= ~FLAGS_GAGGED;
     for (gag = gagList; gag; gag = gag->next) {
-        if (user_matches_glob(user, gag->mask, 1)) {
+        if (user_matches_glob(user, gag->mask, MATCH_USENICK)) {
             gag_helper_func(user, NULL);
             break;
         }