diff options
Diffstat (limited to 'handle.c')
| -rw-r--r-- | handle.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/handle.c b/handle.c index 75d42a9..c825ec6 100644 --- a/handle.c +++ b/handle.c @@ -67,7 +67,8 @@ join(struct Message *msg, struct Peer *peer) channels[channels_c] = (struct Channel){0}; strlcpy(channels[channels_c].name, msg->params[0], sizeof(channels->name)); - channel_join(&channels[channels_c++], peer); + channel_join(&channels[channels_c], peer); + channels[channels_c++].peers[0].modes |= CHANNEL_OPER; names(&namesmsg, peer); return 0; } @@ -116,6 +117,7 @@ static int names(struct Message *msg, struct Peer *peer) { static char buf[MESSAGE_MAX]; + struct ChannelPeer *chpp; size_t i, j; for (i = 0; i < peer->channels_c; ++i) @@ -126,6 +128,11 @@ names(struct Message *msg, struct Peer *peer) memset(buf, 0, sizeof(buf)); for (j = 0; j < peer->channels[i]->peers_c; ++j) { + chpp = &peer->channels[i]->peers[j]; + if (chpp->modes & CHANNEL_OPER) + strlcat(buf, "@", sizeof(buf)); + else if (chpp->modes & CHANNEL_VOICE) + strlcat(buf, "+", sizeof(buf)); strlcat(buf, peer->channels[i]->peers[j].p->nick, sizeof(buf)); if (strlen(buf) >= MESSAGE_MAX - 4*PEER_NICK_MAX) { |