diff options
| author | Marius Halden <marius.h@lden.org> | 2015-11-08 16:11:08 +0100 |
|---|---|---|
| committer | Marius Halden <marius.h@lden.org> | 2016-05-07 14:24:24 +0200 |
| commit | 338d8fed5e875048b6642f0ce54b6f25bd7ddcfb (patch) | |
| tree | 2948aad367432146e0ab01607f6647468ff9abc5 /irc_send.c | |
| parent | be652533d16a22dd1597e594b5845b8e2f1cde1e (diff) | |
Add support for owner/admin channel modes
Diffstat (limited to 'irc_send.c')
| -rw-r--r-- | irc_send.c | 22 |
1 files changed, 19 insertions, 3 deletions
@@ -44,7 +44,7 @@ void irc_send_login(irc_t *irc) PACKAGE, BITLBEE_VERSION, ARCH, CPU); irc_send_num(irc, 3, ":%s", IRCD_INFO); irc_send_num(irc, 4, "%s %s %s %s", irc->root->host, BITLBEE_VERSION, UMODES UMODES_PRIV, CMODES); - irc_send_num(irc, 5, "PREFIX=(ohv)@%%+ CHANTYPES=%s CHANMODES=,,,%s NICKLEN=%d CHANNELLEN=%d " + irc_send_num(irc, 5, "PREFIX=(qaohv)~&@%%+ CHANTYPES=%s CHANMODES=,,,%s NICKLEN=%d CHANNELLEN=%d " "NETWORK=BitlBee SAFELIST CASEMAPPING=rfc1459 MAXTARGETS=1 WATCH=128 " "FLOOD=0/9999 :are supported by this server", CTYPES, CMODES, MAX_NICK_LENGTH - 1, MAX_NICK_LENGTH - 1); @@ -429,11 +429,27 @@ void irc_send_nick(irc_user_t *iu, const char *new) void irc_send_channel_user_mode_diff(irc_channel_t *ic, irc_user_t *iu, irc_channel_user_flags_t old, irc_channel_user_flags_t new) { - char changes[3 * (5 + strlen(iu->nick))]; - char from[strlen(ic->irc->root->nick) + strlen(ic->irc->root->user) + strlen(ic->irc->root->host) + 3]; + char changes[5 * (5 + strlen(iu->nick))]; + char from[strlen(ic->irc->root->nick) + strlen(ic->irc->root->user) + strlen(ic->irc->root->host) + 5]; int n; *changes = '\0'; n = 0; + if ((old & IRC_CHANNEL_USER_OWNER) != (new & IRC_CHANNEL_USER_OWNER)) { + n++; + if (new & IRC_CHANNEL_USER_OWNER) { + strcat(changes, "+q"); + } else { + strcat(changes, "-q"); + } + } + if ((old & IRC_CHANNEL_USER_ADMIN) != (new & IRC_CHANNEL_USER_ADMIN)) { + n++; + if (new & IRC_CHANNEL_USER_ADMIN) { + strcat(changes, "+a"); + } else { + strcat(changes, "-a"); + } + } if ((old & IRC_CHANNEL_USER_OP) != (new & IRC_CHANNEL_USER_OP)) { n++; if (new & IRC_CHANNEL_USER_OP) { |
