}
static int
-gline_for_p(UNUSED_ARG(void *key), void *data, void *extra)
+gline_equal_p(UNUSED_ARG(void *key), void *data, void *extra)
{
- struct gline *ge = data;
- return !irccasecmp(ge->target, extra);
+ return data == extra;
}
static void
lifetime = expires;
ent = dict_find(gline_dict, target, NULL);
if (ent) {
- heap_remove_pred(gline_heap, gline_for_p, (char*)target);
+ heap_remove_pred(gline_heap, gline_equal_p, ent);
+ if (ent->issued > lastmod)
+ ent->issued = lastmod;
+ if (ent->lastmod < lastmod)
+ ent->lastmod = lastmod;
if (ent->expires != expires)
ent->expires = expires;
if (ent->lifetime < lifetime)
ent->lifetime = lifetime;
- if (ent->lastmod < lastmod)
- ent->lastmod = lastmod;
if (strcmp(ent->issuer, issuer)) {
free(ent->issuer);
ent->issuer = strdup(issuer);
{ "OSMSG_LOG_SEARCH_RESULTS", "The following log entries were found:" },
{ "OSMSG_GSYNC_RUNNING", "Synchronizing glines from %s." },
{ "OSMSG_GTRACE_FORMAT", "%1$s (issued %2$s ago by %3$s, lastmod %4$s ago, expires %5$s, lifetime %7$s): %6$s" },
+ { "OSMSG_GTRACE_FOREVER", "%1$s (issued %2$s ago by %3$s, lastmod %4$s ago, never expires, lifetime %7$s): %6$s" },
+ { "OSMSG_GTRACE_EXPIRED", "%1$s (issued %2$s ago by %3$s, lastmod %4$s ago, expired %5$s ago, lifetime %7$s): %6$s" },
{ "OSMSG_GAG_APPLIED", "Gagged $b%s$b, affecting %d users." },
{ "OSMSG_GAG_ADDED", "Gagged $b%s$b." },
{ "OSMSG_REDUNDANT_GAG", "Gag $b%s$b is redundant." },
intervalString(lastmod, now - gline->lastmod, xtra->user->handle_info);
else
strcpy(lastmod, "<unknown>");
- if (gline->expires)
- intervalString(expires, gline->expires - now, xtra->user->handle_info);
- else
- strcpy(expires, "never");
intervalString(lifetime, gline->lifetime - now, xtra->user->handle_info);
- send_message(xtra->user, opserv, "OSMSG_GTRACE_FORMAT", gline->target, issued, gline->issuer, lastmod, expires, gline->reason, lifetime);
+ if (gline->expires < now) {
+ intervalString(expires, now - gline->expires, xtra->user->handle_info);
+ send_message(xtra->user, opserv, "OSMSG_GTRACE_EXPIRED", gline->target, issued, gline->issuer, lastmod, expires, gline->reason, lifetime);
+ } else if (gline->expires) {
+ intervalString(expires, gline->expires - now, xtra->user->handle_info);
+ send_message(xtra->user, opserv, "OSMSG_GTRACE_FORMAT", gline->target, issued, gline->issuer, lastmod, expires, gline->reason, lifetime);
+ } else {
+ send_message(xtra->user, opserv, "OSMSG_GTRACE_FOREVER", gline->target, issued, gline->issuer, lastmod, NULL, gline->reason, lifetime);
+
+ }
}
static MODCMD_FUNC(cmd_stats_glines) {