Update of /cvsroot/srvx/services/src
In directory sc8-pr-cvs1:/tmp/cvs-serv11335/src
Modified Files:
nickserv.c nickserv.help.m4
Log Message:
implement general comparison criteria for account registered times
Index: nickserv.c
===================================================================
RCS file: /cvsroot/srvx/services/src/nickserv.c,v
retrieving revision 1.219
retrieving revision 1.220
diff -C2 -r1.219 -r1.220
*** nickserv.c 15 Dec 2002 10:20:31 -0000 1.219
--- nickserv.c 18 Dec 2002 05:00:29 -0000 1.220
***************
*** 2613,2617 ****
unsigned int limit, min_level, max_level;
unsigned long flags_on, flags_off;
! time_t registered, lastseen;
enum { SUBSET, EXACT, SUPERSET } hostmask_type;
const char *nickmask;
--- 2613,2618 ----
unsigned int limit, min_level, max_level;
unsigned long flags_on, flags_off;
! time_t min_registered, max_registered;
! time_t lastseen;
enum { SUBSET, EXACT, SUPERSET } hostmask_type;
const char *nickmask;
***************
*** 2640,2644 ****
discrim->max_level = ~0;
discrim->limit = 50;
! discrim->registered = now;
discrim->lastseen = now;
--- 2641,2646 ----
discrim->max_level = ~0;
discrim->limit = 50;
! discrim->min_registered = 0;
! discrim->max_registered = INT_MAX;
discrim->lastseen = now;
***************
*** 2653,2657 ****
nickserv_modify_handle_flags(user, nickserv, argv[i], &discrim->flags_on, &discrim->flags_off);
} else if (!irccasecmp(argv[i], "registered")) {
! discrim->registered = now - ParseInterval(argv[++i]);
} else if (!irccasecmp(argv[i], "seen")) {
discrim->lastseen = now - ParseInterval(argv[++i]);
--- 2655,2676 ----
nickserv_modify_handle_flags(user, nickserv, argv[i], &discrim->flags_on, &discrim->flags_off);
} else if (!irccasecmp(argv[i], "registered")) {
! const unsigned char *cmp = argv[++i];
! if (cmp[0] == '<') {
! if (cmp[1] == '=') {
! discrim->min_registered = now - ParseInterval(cmp+2);
! } else {
! discrim->min_registered = now - ParseInterval(cmp+1) + 1;
! }
! } else if (cmp[0] == '=') {
! discrim->min_registered = discrim->max_registered = now - ParseInterval(cmp+1);
! } else if (cmp[0] == '>') {
! if (cmp[1] == '=') {
! discrim->max_registered = now - ParseInterval(cmp+2);
! } else {
! discrim->max_registered = now - ParseInterval(cmp+1) - 1;
! }
! } else {
! nickserv_notice(user, MSG_INVALID_CRITERIA, cmp);
! }
} else if (!irccasecmp(argv[i], "seen")) {
discrim->lastseen = now - ParseInterval(argv[++i]);
***************
*** 2703,2707 ****
}
} else {
! nickserv_notice(user, MSG_INVALID_CRITERIA, argv[i]);
}
} else {
--- 2722,2726 ----
}
} else {
! nickserv_notice(user, MSG_INVALID_CRITERIA, cmp);
}
} else {
***************
*** 2721,2725 ****
if (((discrim->flags_on & hi->flags) != discrim->flags_on)
|| (discrim->flags_off & hi->flags)
! || (discrim->registered < hi->registered)
|| (discrim->lastseen < (hi->users?now:hi->lastseen))
|| (discrim->handlemask && !match_ircglob(hi->handle, discrim->handlemask))
--- 2740,2745 ----
if (((discrim->flags_on & hi->flags) != discrim->flags_on)
|| (discrim->flags_off & hi->flags)
! || (discrim->min_registered > hi->registered)
! || (discrim->max_registered < hi->registered)
|| (discrim->lastseen < (hi->users?now:hi->lastseen))
|| (discrim->handlemask && !match_ircglob(hi->handle, discrim->handlemask))
Index: nickserv.help.m4
===================================================================
RCS file: /cvsroot/srvx/services/src/nickserv.help.m4,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -r1.14 -r1.15
*** nickserv.help.m4 12 Nov 2002 19:09:23 -0000 1.14
--- nickserv.help.m4 18 Dec 2002 05:00:31 -0000 1.15
***************
*** 253,257 ****
" LIMIT - Limits the number of matches",
" FLAGS - Bits that must be turned on (e.g. +h) and/or off (e.g. -S) in an account",
! " REGISTERED - Accounts registered at least this long ago",
" SEEN - Accounts not seen for at least this long",
" ACCOUNTMASK - A glob that must match the account name",
--- 253,257 ----
" LIMIT - Limits the number of matches",
" FLAGS - Bits that must be turned on (e.g. +h) and/or off (e.g. -S) in an account",
! " REGISTERED - Registered time constraint (<Nu, <=Nu, =Nu, >=Nu or >Nu)",
" SEEN - Accounts not seen for at least this long",
" ACCOUNTMASK - A glob that must match the account name",
|