{ "CSMSG_NETWORK_SERVERS", "$bServers: $b%i" },
{ "CSMSG_NETWORK_USERS", "$bTotal Users: $b%i" },
{ "CSMSG_NETWORK_BANS", "$bTotal Ban Count: $b%i" },
+ { "CSMSG_NETWORK_CHANUSERS", "$bTotal User Count: $b%i" },
{ "CSMSG_NETWORK_OPERS", "$bIRC Operators: $b%i" },
{ "CSMSG_NETWORK_CHANNELS","$bRegistered Channels: $b%i" },
{ "CSMSG_SERVICES_UPTIME", "$bServices Uptime: $b%s" },
{ "CSMSG_WUT_RESPONSE", "wut" },
{ "CSMSG_BAD_NUMBER", "$b%s$b is an invalid number. Please use a number greater than 1 with this command." },
{ "CSMSG_BAD_DIE_FORMAT", "I do not understand $b%s$b. Please use either a single number or standard 4d6+3 format." },
- { "CSMSG_BAD_DICE_COUNT", "%d is too many dice. Please use at most %d." },
- { "CSMSG_DICE_ROLL", "The total is $b%d$b from rolling %dd%d+%d." },
- { "CSMSG_DIE_ROLL", "A $b%d$b shows on the %d-sided die." },
+ { "CSMSG_BAD_DICE_COUNT", "%lu is too many dice. Please use at most %lu." },
+ { "CSMSG_DICE_ROLL", "The total is $b%lu$b from rolling %lud%lu+%lu." },
+ { "CSMSG_DIE_ROLL", "A $b%lu$b shows on the %lu-sided die." },
{ "CSMSG_HUGGLES_HIM", "\001ACTION huggles %s\001" },
{ "CSMSG_HUGGLES_YOU", "\001ACTION huggles you\001" },
{
unsigned int level = 0, ii;
if(isdigit(name[0]))
- level = atoi(name);
+ level = strtoul(name, NULL, 10);
else for(ii = 0; (ii < ArrayLength(accessLevels)) && !level; ++ii)
if(!irccasecmp(name, accessLevels[ii].name))
level = accessLevels[ii].level;
struct userData *user;
char delay[INTERVALLEN], reason[INTERVALLEN + 64];
- intervalString(delay, chanserv_conf.channel_expire_delay);
+ intervalString(delay, chanserv_conf.channel_expire_delay, NULL);
sprintf(reason, "Channel registration automatically expired after %s of disuse.", delay);
for(channel = channelList; channel; channel = next)
{
dnr = iter_data(it);
if(dnr->set)
- reply("CSMSG_DNR_INFO_SET", dnr->chan_name, intervalString(buf, now - dnr->set), dnr->setter, dnr->reason);
+ reply("CSMSG_DNR_INFO_SET", dnr->chan_name, intervalString(buf, now - dnr->set, user->handle_info), dnr->setter, dnr->reason);
else
reply("CSMSG_DNR_INFO", dnr->chan_name, dnr->setter, dnr->reason);
matches++;
{
dnr = iter_data(it);
if(dnr->set)
- reply("CSMSG_DNR_INFO_SET", dnr->chan_name, intervalString(buf, now - dnr->set), dnr->setter, dnr->reason);
+ reply("CSMSG_DNR_INFO_SET", dnr->chan_name, intervalString(buf, now - dnr->set, user->handle_info), dnr->setter, dnr->reason);
else
reply("CSMSG_DNR_INFO", dnr->chan_name, dnr->setter, dnr->reason);
matches++;
{
dnr = iter_data(it);
if(dnr->set)
- reply("CSMSG_DNR_INFO_SET", dnr->chan_name, intervalString(buf, now - dnr->set), dnr->setter, dnr->reason);
+ reply("CSMSG_DNR_INFO_SET", dnr->chan_name, intervalString(buf, now - dnr->set, user->handle_info), dnr->setter, dnr->reason);
else
reply("CSMSG_DNR_INFO", dnr->chan_name, dnr->setter, dnr->reason);
matches++;
count++;
}
- intervalString(interval, duration);
+ intervalString(interval, duration, user->handle_info);
send_message(user, chanserv, "CSMSG_TRIMMED_BANS", count, channel->name, interval);
return 1;
}
min_access = 1;
max_access = UL_OWNER;
}
- send_message(user, chanserv, "CSMSG_TRIMMED_USERS", count, min_access, max_access, channel->name, intervalString(interval, duration));
+ send_message(user, chanserv, "CSMSG_TRIMMED_USERS", count, min_access, max_access, channel->name, intervalString(interval, duration, user->handle_info));
return 1;
}
/* automated kickban */
}
else if(duration)
- reply("CSMSG_BAN_EXTENDED", ban, intervalString(interval, duration));
+ reply("CSMSG_BAN_EXTENDED", ban, intervalString(interval, duration, user->handle_info));
else
reply("CSMSG_BAN_ADDED", name, channel->name);
else if(action & ACTION_ADD_BAN)
{
if(duration)
- reply("CSMSG_TIMED_BAN_ADDED", name, channel->name, intervalString(interval, duration));
+ reply("CSMSG_TIMED_BAN_ADDED", name, channel->name, intervalString(interval, duration, user->handle_info));
else
reply("CSMSG_BAN_ADDED", name, channel->name);
}
else if(!uData->seen)
ary[2] = "Never";
else
- ary[2] = intervalString(seen, now - uData->seen);
+ ary[2] = intervalString(seen, now - uData->seen, user->handle_info);
ary[2] = strdup(ary[2]);
if(IsUserSuspended(uData))
ary[3] = "Suspended";
if(!timed)
expires = "";
else if(ban->expires)
- expires = intervalString(e_buffer, ban->expires - now);
+ expires = intervalString(e_buffer, ban->expires - now, user->handle_info);
else
expires = msg_never;
if(ban->triggered)
- triggered = intervalString(t_buffer, now - ban->triggered);
+ triggered = intervalString(t_buffer, now - ban->triggered, user->handle_info);
else
triggered = msg_never;
reply("CSMSG_CHANNEL_SUSPENDED_0", suspended->suspender, suspended->reason);
break;
case 1: /* no issue time, expires in future */
- intervalString(buf1, suspended->expires-now);
+ intervalString(buf1, suspended->expires-now, user->handle_info);
reply("CSMSG_CHANNEL_SUSPENDED_1", suspended->suspender, buf1, suspended->reason);
break;
case 2: /* no issue time, expired */
- intervalString(buf1, now-suspended->expires);
+ intervalString(buf1, now-suspended->expires, user->handle_info);
reply("CSMSG_CHANNEL_SUSPENDED_2", suspended->suspender, buf1, suspended->reason);
break;
case 3: /* no issue time, revoked */
- intervalString(buf1, now-suspended->revoked);
+ intervalString(buf1, now-suspended->revoked, user->handle_info);
reply("CSMSG_CHANNEL_SUSPENDED_3", suspended->suspender, buf1, suspended->reason);
break;
case 4: /* issue time set, indefinite expiration */
- intervalString(buf1, now-suspended->issued);
+ intervalString(buf1, now-suspended->issued, user->handle_info);
reply("CSMSG_CHANNEL_SUSPENDED_4", buf1, suspended->suspender, suspended->reason);
break;
case 5: /* issue time set, expires in future */
- intervalString(buf1, now-suspended->issued);
- intervalString(buf2, suspended->expires-now);
+ intervalString(buf1, now-suspended->issued, user->handle_info);
+ intervalString(buf2, suspended->expires-now, user->handle_info);
reply("CSMSG_CHANNEL_SUSPENDED_5", buf1, suspended->suspender, buf2, suspended->reason);
break;
case 6: /* issue time set, expired */
- intervalString(buf1, now-suspended->issued);
- intervalString(buf2, now-suspended->expires);
+ intervalString(buf1, now-suspended->issued, user->handle_info);
+ intervalString(buf2, now-suspended->expires, user->handle_info);
reply("CSMSG_CHANNEL_SUSPENDED_6", buf1, suspended->suspender, buf2, suspended->reason);
break;
case 7: /* issue time set, revoked */
- intervalString(buf1, now-suspended->issued);
- intervalString(buf2, now-suspended->revoked);
+ intervalString(buf1, now-suspended->issued, user->handle_info);
+ intervalString(buf2, now-suspended->revoked, user->handle_info);
reply("CSMSG_CHANNEL_SUSPENDED_7", buf1, suspended->suspender, buf2, suspended->reason);
break;
default:
reply("CSMSG_CHANNEL_OWNER", owner->handle->handle);
reply("CSMSG_CHANNEL_USERS", cData->userCount);
reply("CSMSG_CHANNEL_BANS", cData->banCount);
- reply("CSMSG_CHANNEL_VISITED", intervalString(buffer, now - cData->visited));
- reply("CSMSG_CHANNEL_REGISTERED", intervalString(buffer, now - cData->registered));
+ reply("CSMSG_CHANNEL_VISITED", intervalString(buffer, now - cData->visited, user->handle_info));
+ reply("CSMSG_CHANNEL_REGISTERED", intervalString(buffer, now - cData->registered, user->handle_info));
privileged = IsStaff(user);
if(((uData && uData->access >= UL_COOWNER) || privileged) && cData->registrar)
reply("CSMSG_NETWORK_OPERS", curr_opers.used);
reply("CSMSG_NETWORK_CHANNELS", registered_channels);
reply("CSMSG_NETWORK_BANS", banCount);
- reply("CSMSG_CHANNEL_USERS", userCount);
- reply("CSMSG_SERVICES_UPTIME", intervalString(interval, time(NULL) - boot_time));
- reply("CSMSG_BURST_LENGTH",intervalString(interval, burst_length));
+ reply("CSMSG_NETWORK_CHANUSERS", userCount);
+ reply("CSMSG_SERVICES_UPTIME", intervalString(interval, time(NULL) - boot_time, user->handle_info));
+ reply("CSMSG_BURST_LENGTH", intervalString(interval, burst_length, user->handle_info));
return 1;
}
if(uData->present)
reply("CSMSG_USER_PRESENT", handle->handle);
else if(uData->seen)
- reply("CSMSG_USER_SEEN", handle->handle, channel->name, intervalString(seen, now - uData->seen));
+ reply("CSMSG_USER_SEEN", handle->handle, channel->name, intervalString(seen, now - uData->seen, user->handle_info));
else
reply("CSMSG_NEVER_SEEN", handle->handle, channel->name);
targData = GetTrueChannelAccess(channel->channel_info, targ->handle_info);
if(!targData)
continue;
- if(pos + strlen(targ->nick) + strlen(targ->handle_info->handle) + 6 > sizeof(buf))
+ if(pos + strlen(targ->nick) + strlen(targ->handle_info->handle) + 8 > sizeof(buf))
{
buf[pos] = 0;
reply("CSMSG_CHANNEL_NAMES", channel->name, buf);
unsigned int matches, limit;
limit = (argc > 1) ? atoi(argv[1]) : 10;
- if(limit < 1 || limit > 200) limit = 10;
+ if(limit < 1 || limit > 200)
+ limit = 10;
memset(&discrim, 0, sizeof(discrim));
discrim.masks.bot = chanserv;
discrim.masks.channel_name = channel->name;
- if(argc > 2) discrim.masks.command = argv[2];
+ if(argc > 2)
+ discrim.masks.command = argv[2];
discrim.limit = limit;
discrim.max_time = INT_MAX;
discrim.severities = 1 << LOG_COMMAND;
limit = atoi(argv[2]);
}
- intervalString(buffer, interval);
+ intervalString(buffer, interval, user->handle_info);
reply("CSMSG_UNVISITED_HEADER", limit, buffer);
for(cData = channelList; cData && matches < limit; cData = cData->next)
if((now - cData->visited) < interval)
continue;
- intervalString(buffer, now - cData->visited);
+ intervalString(buffer, now - cData->visited, user->handle_info);
reply("CSMSG_UNVISITED_DATA", cData->channel->name, buffer);
matches++;
}
if(!IsUserSuspended(channel)
&& IsUserAutoInvite(channel)
&& (channel->access >= channel->channel->lvlOpts[lvlInviteMe])
- && (cn->modes & (MODE_KEY | MODE_INVITEONLY))
&& !self->burst)
irc_invite(chanserv, user, cn);
continue;
bounce->args[bnc].member = change->args[ii].member;
bnc++;
}
- else if(change->args[ii].mode & MODE_BAN)
+ else if((change->args[ii].mode & (MODE_REMOVE | MODE_BAN)) == MODE_BAN)
{
const char *ban = change->args[ii].hostmask;
if(!bad_channel_ban(channel, user, ban, NULL, NULL))
dict_set_free_data(note_types, chanserv_deref_note_type);
if(nick)
{
- chanserv = AddService(nick, "Channel Services");
- service_register(chanserv, '!');
+ chanserv = AddService(nick, "Channel Services", NULL);
+ service_register(chanserv)->trigger = '!';
reg_chanmsg_func('\001', chanserv, chanserv_ctcp_check);
}
saxdb_register("ChanServ", chanserv_saxdb_read, chanserv_saxdb_write);