From 3c4a154f0a0b5b3abb85b09ee0c2b64d59ca0756 Mon Sep 17 00:00:00 2001 From: TingPing Date: Sun, 7 Apr 2013 17:49:30 -0400 Subject: [PATCH] Add events for quiet --- src/common/modes.c | 25 +++++++++++++++++++++++++ src/common/text.c | 10 ++++++++++ src/common/textevents.in | 12 ++++++++++++ 3 files changed, 47 insertions(+) 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