summary refs log tree commit diff
path: root/handle.c
diff options
context:
space:
mode:
Diffstat (limited to 'handle.c')
-rw-r--r--handle.c9
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)
 			{