Commit Diff


commit - 360a254be0e55e975998d0f3a5ff301ac3346f72
commit + c2b39fdedef18b7cb634509bb3f1dd67bf47c214
blob - cd0a1666ae58a7696c27f7c5aeac40fcfeea565b
blob + 27eecf1d169f10a2aa124d7d2363e6bf54601aea
--- src/ngircd/defines.h
+++ src/ngircd/defines.h
@@ -161,7 +161,7 @@
 #endif
 
 /** Supported user modes. */
-#define USERMODES "acCiorRswx"
+#define USERMODES "aBcCiorRswx"
 
 /** Supported channel modes. */
 #define CHANMODES "beiIklmnoOPrRstvz"
blob - 0ea85874862b7114b6cd355d59467371055a4013
blob + f5139d07ebed78c68953bc56b19ed04424b9c884
--- src/ngircd/irc-info.c
+++ src/ngircd/irc-info.c
@@ -1108,6 +1108,12 @@ IRC_WHOIS_SendReply(CLIENT *Client, CLIENT *from, CLIE
 	/* IRC-Operator? */
 	if (Client_HasMode(c, 'o') &&
 	    !IRC_WriteStrClient(from, RPL_WHOISOPERATOR_MSG,
+				Client_ID(from), Client_ID(c)))
+		return DISCONNECTED;
+
+	/* IRC-Bot? */
+	if (Client_HasMode(c, 'B') &&
+	    !IRC_WriteStrClient(from, RPL_WHOISBOT_MSG,
 				Client_ID(from), Client_ID(c)))
 		return DISCONNECTED;
 
blob - fa35cdd0f29d7742d92c169f6ce992a56eaa1ca5
blob + 9cad32493d84b2ddb55520913b64e6628e0cfc7e
--- src/ngircd/irc-mode.c
+++ src/ngircd/irc-mode.c
@@ -227,7 +227,15 @@ Client_Mode( CLIENT *Client, REQUEST *Req, CLIENT *Ori
 			} else
 				ok = IRC_WriteStrClient(Origin,
 							ERR_NOPRIVILEGES_MSG,
+							Client_ID(Origin));
+			break;
+		case 'B': /* Bot */
+			if (Client_HasMode(Client, 'r'))
+				ok = IRC_WriteStrClient(Origin,
+							ERR_RESTRICTED_MSG,
 							Client_ID(Origin));
+			else
+				x[0] = 'B';
 			break;
 		case 'c': /* Receive connect notices
 			   * (only settable by IRC operators!) */
blob - 9ad6be1763d569f7af3b486e3620930f15127516
blob + 4858fea91af9589c7865715b6d15cfbf99e446d5
--- src/ngircd/messages.h
+++ src/ngircd/messages.h
@@ -72,6 +72,7 @@
 #define RPL_NOTOPIC_MSG			"331 %s %s :No topic is set"
 #define RPL_TOPIC_MSG			"332 %s %s :%s"
 #define RPL_TOPICSETBY_MSG		"333 %s %s %s %u"
+#define RPL_WHOISBOT_MSG		"335 %s %s :is a IRC Bot"
 #define RPL_INVITING_MSG		"341 %s %s %s%s"
 #define RPL_INVITELIST_MSG		"346 %s %s %s"
 #define RPL_ENDOFINVITELIST_MSG		"347 %s %s :End of channel invite list"