Commit Diff


commit - c74115f25c8ea3f67c75120c0a1398975bac03ad
commit + 74514b8c233eebc95fe0cc1116074dcf6899d841
blob - d06caa3161f255f45d891ebea39210bc0282c574
blob + 6f20b03fb9297e006f897017d429f10a9328f880
--- src/ngircd/irc-channel.c
+++ src/ngircd/irc-channel.c
@@ -657,7 +657,7 @@ IRC_LIST( CLIENT *Client, REQUEST *Req )
 GLOBAL bool
 IRC_CHANINFO( CLIENT *Client, REQUEST *Req )
 {
-	char modes_add[COMMAND_LEN], l[16], *ptr;
+	char modes_add[COMMAND_LEN], l[16];
 	CLIENT *from;
 	CHANNEL *chan;
 	int arg_topic;
@@ -688,9 +688,8 @@ IRC_CHANINFO( CLIENT *Client, REQUEST *Req )
 		return CONNECTED;
 
 	if (Req->argv[1][0] == '+') {
-		ptr = Channel_Modes(chan);
-		if (!*ptr) {
-			/* OK, this channel doesn't have modes jet,
+		if (!Channel_Modes(chan)) {
+			/* OK, this channel doesn't have modes yet,
 			 * set the received ones: */
 			Channel_SetModes(chan, &Req->argv[1][1]);
 
@@ -706,22 +705,16 @@ IRC_CHANINFO( CLIENT *Client, REQUEST *Req )
 			}
 
 			strcpy(modes_add, "");
-			ptr = Channel_Modes(chan);
-			while (*ptr) {
-				if (*ptr == 'l') {
-					snprintf(l, sizeof(l), " %lu",
-						 Channel_MaxUsers(chan));
-					strlcat(modes_add, l,
-						sizeof(modes_add));
-				}
-				if (*ptr == 'k') {
-					strlcat(modes_add, " ",
-						sizeof(modes_add));
-					strlcat(modes_add, Channel_Key(chan),
-						sizeof(modes_add));
-				}
-	     			ptr++;
+			if (Channel_HasMode(chan, 'l'))  {
+				snprintf(l, sizeof(l), " %lu",
+					 Channel_MaxUsers(chan));
+				strlcat(modes_add, l, sizeof(modes_add));
 			}
+			if (Channel_HasMode(chan, 'k'))  {
+				strlcat(modes_add, " ", sizeof(modes_add));
+				strlcat(modes_add, Channel_Key(chan),
+					sizeof(modes_add));
+			}
 
 			/* Inform members of this channel */
 			IRC_WriteStrChannelPrefix(Client, chan, from, false,
@@ -734,8 +727,7 @@ IRC_CHANINFO( CLIENT *Client, REQUEST *Req )
 
 	if (arg_topic > 0) {
 		/* We got a topic */
-		ptr = Channel_Topic( chan );
-		if (!*ptr && Req->argv[arg_topic][0]) {
+		if (!Channel_Topic( chan ) && Req->argv[arg_topic][0]) {
 			/* OK, there is no topic jet */
 			Channel_SetTopic(chan, Client, Req->argv[arg_topic]);
 			IRC_WriteStrChannelPrefix(Client, chan, from, false,