summary refs log tree commit diff stats
path: root/src/common
diff options
context:
space:
mode:
authorTingPing <tingping@tingping.se>2013-04-07 17:49:30 -0400
committerTingPing <tingping@tingping.se>2013-04-07 17:49:30 -0400
commit3c4a154f0a0b5b3abb85b09ee0c2b64d59ca0756 (patch)
tree92fb166b053ab1b29d41fc637be94f1614a0b6f4 /src/common
parentc766b24920df74764e2fbe6de3367938c7ef9ecf (diff)
Add events for quiet
Diffstat (limited to 'src/common')
-rw-r--r--src/common/modes.c25
-rw-r--r--src/common/text.c10
-rw-r--r--src/common/textevents.in12
3 files changed, 47 insertions, 0 deletions
diff --git a/src/common/modes.c b/src/common/modes.c
index 0486b532..dfcfdbc6 100644
--- a/src/common/modes.c
+++ b/src/common/modes.c
@@ -392,6 +392,8 @@ handle_single_mode (mode_run *mr, char sign, char mode, char *nick,
 	session *sess;
 	server *serv = mr->serv;
 	char outbuf[4];
+	char *cm = serv->chanmodes;
+	gboolean supportsq = FALSE;
 
 	outbuf[0] = sign;
 	outbuf[1] = 0;
@@ -417,6 +419,17 @@ handle_single_mode (mode_run *mr, char sign, char mode, char *nick,
 			record_chan_mode (sess, sign, mode, arg);
 	}
 
+	/* Is q a chanmode on this server? */
+	if (cm)
+		while (*cm)
+		{
+			if (*cm == ',')
+				break;
+			if (*cm == 'q')
+				supportsq = TRUE;
+			cm++;
+		}
+
 	switch (sign)
 	{
 	case '+':
@@ -460,6 +473,12 @@ handle_single_mode (mode_run *mr, char sign, char mode, char *nick,
 			if (!quiet)
 				EMIT_SIGNAL (XP_TE_CHANINVITE, sess, nick, arg, NULL, NULL, 0);
 			return;
+		case 'q':
+			if (!supportsq)
+				break; /* +q is owner on this server */
+			if (!quiet)
+				EMIT_SIGNAL (XP_TE_CHANQUIET, sess, nick, arg, NULL, NULL, 0);
+			return;
 		}
 		break;
 	case '-':
@@ -503,6 +522,12 @@ handle_single_mode (mode_run *mr, char sign, char mode, char *nick,
 			if (!quiet)
 				EMIT_SIGNAL (XP_TE_CHANRMINVITE, sess, nick, arg, NULL, NULL, 0);
 			return;
+		case 'q':
+			if (!supportsq)
+				break; /* -q is owner on this server */
+			if (!quiet)
+				EMIT_SIGNAL (XP_TE_CHANUNQUIET, sess, nick, arg, NULL, NULL, 0);
+			return;
 		}
 	}
 
diff --git a/src/common/text.c b/src/common/text.c
index 96fdacd0..a7cfa5b7 100644
--- a/src/common/text.c
+++ b/src/common/text.c
@@ -1145,6 +1145,11 @@ static char * const pevt_chanban_help[] = {
 	N_("The ban mask"),
 };
 
+static char * const pevt_chanquiet_help[] = {
+	N_("The nick of the person who did the quieting"),
+	N_("The quiet mask"),
+};
+
 static char * const pevt_chanrmkey_help[] = {
 	N_("The nick who removed the key"),
 };
@@ -1172,6 +1177,11 @@ static char * const pevt_chanunban_help[] = {
 	N_("The ban mask"),
 };
 
+static char * const pevt_chanunquiet_help[] = {
+	N_("The nick of the person of did the unquiet'ing"),
+	N_("The quiet mask"),
+};
+
 static char * const pevt_chanexempt_help[] = {
 	N_("The nick of the person who did the exempt"),
 	N_("The exempt mask"),
diff --git a/src/common/textevents.in b/src/common/textevents.in
index 034a8532..5e9ee55a 100644
--- a/src/common/textevents.in
+++ b/src/common/textevents.in
@@ -148,6 +148,12 @@ pevt_chanop_help
 %C22*%O$t%C26$1%O gives channel operator status to %C18$2%O
 2
 
+Channel Quiet
+XP_TE_CHANQUIET
+pevt_chanquiet_help
+%C22*%O$t%C26$1%O sets quiet on %C18$2%O
+2
+
 Channel Remove Exempt
 XP_TE_CHANRMEXEMPT
 pevt_chanrmexempt_help
@@ -190,6 +196,12 @@ pevt_chanunban_help
 %C22*%O$t%C26$1%O removes ban on %C18$2%O
 2
 
+Channel UnQuiet
+XP_TE_CHANUNQUIET
+pevt_chanunquiet_help
+%C22*%O$t%C26$1%O removes quiet on %C18$2%O
+2
+
 Channel Voice
 XP_TE_CHANVOICE
 pevt_chanvoice_help