diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/botserv.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/botserv.c b/src/botserv.c index 6b40ab3df..dd606952e 100644 --- a/src/botserv.c +++ b/src/botserv.c @@ -205,14 +205,22 @@ void botchanmsgs(User * u, ChannelInfo * ci, char *buf) if ((ci->botflags & BS_KICK_CAPS) && ((c = strlen(buf)) >= ci->capsmin)) { int i = 0; + int l = 0; char *s = buf; do { if (isupper(*s)) i++; + else if (islower(*s)) + l++; } while (*s++); - - if (i >= ci->capsmin && i * 100 / c >= ci->capspercent) { + + /* i counts uppercase chars, l counts lowercase chars. Only + * alphabetic chars (so islower || isupper) qualify for the + * percentage of caps to kick for; the rest is ignored. -GD + */ + + if (i >= ci->capsmin && i * 100 / (i + l) >= ci->capspercent) { check_ban(ci, u, TTB_CAPS); bot_kick(ci, u, BOT_REASON_CAPS); return; |