diff options
author | Timo Sirainen <cras@irssi.org> | 2003-07-09 23:36:05 +0000 |
---|---|---|
committer | cras <cras@dbcabf3a-b0e7-0310-adc4-f8d773084564> | 2003-07-09 23:36:05 +0000 |
commit | 3906eead14807919b11789133614a3e29f73e8b3 (patch) | |
tree | 47bada4993589fb58d3e1e050074d0d4cde22d4e /src | |
parent | a619fe9a2ce6069edf15a3a53414fe0b17b4ac7a (diff) | |
download | irssi-3906eead14807919b11789133614a3e29f73e8b3.zip |
Show voices in netsplits. Fix voices breaking netjoins. Patch by Maarten van
der Zwaart.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@3125 dbcabf3a-b0e7-0310-adc4-f8d773084564
Diffstat (limited to 'src')
-rw-r--r-- | src/fe-common/irc/fe-netjoin.c | 18 | ||||
-rw-r--r-- | src/fe-common/irc/fe-netsplit.c | 2 |
2 files changed, 19 insertions, 1 deletions
diff --git a/src/fe-common/irc/fe-netjoin.c b/src/fe-common/irc/fe-netjoin.c index da786f1d..f00f1b03 100644 --- a/src/fe-common/irc/fe-netjoin.c +++ b/src/fe-common/irc/fe-netjoin.c @@ -325,11 +325,27 @@ static int netjoin_set_nickmode(NETJOIN_REC *rec, const char *channel, char mode) { GSList *pos; + char oldmode = 0; + + for (pos = rec->now_channels; pos != NULL; pos = pos->next) { + char *chan = pos->data; + char *realchannel = chan + + (isnickflag(*chan) && ischannel(chan[1])); + if (strcasecmp(realchannel, channel) == 0) { + if (strcasecmp(chan, channel) != 0) + oldmode = chan[0]; + break; + } + } - pos = gslist_find_icase_string(rec->now_channels, channel); if (pos == NULL) return FALSE; + if (oldmode == '@') + return TRUE; + if (oldmode == '%' && mode == '+') + return TRUE; + g_free(pos->data); pos->data = g_strdup_printf("%c%s", mode, channel); return TRUE; diff --git a/src/fe-common/irc/fe-netsplit.c b/src/fe-common/irc/fe-netsplit.c index 7e5d602e..dfa3a1fc 100644 --- a/src/fe-common/irc/fe-netsplit.c +++ b/src/fe-common/irc/fe-netsplit.c @@ -132,6 +132,8 @@ static void get_server_splits(void *key, NETSPLIT_REC *split, chanrec->nick_count <= netsplit_nicks_hide_threshold) { if (splitchan->op) g_string_append_c(chanrec->nicks, '@'); + else if (splitchan->voice) + g_string_append_c(chanrec->nicks, '+'); g_string_sprintfa(chanrec->nicks, "%s, ", split->nick); if (chanrec->nick_count == netsplit_max_nicks) |