summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opieirc/ircmessageparser.cpp35
1 files changed, 25 insertions, 10 deletions
diff --git a/noncore/net/opieirc/ircmessageparser.cpp b/noncore/net/opieirc/ircmessageparser.cpp
index 32e1011..c449a65 100644
--- a/noncore/net/opieirc/ircmessageparser.cpp
+++ b/noncore/net/opieirc/ircmessageparser.cpp
@@ -595,3 +595,4 @@ void IRCMessageParser::parseNumericalNames(IRCMessage *message) {
/* Parse person flags */
- if (flagch == '@' || flagch == '+' || flagch=='%' || flagch == '*') {
+ if (flagch == '~' || flagch == '&' || flagch == '@' || flagch == '+' ||
+ flagch=='%' || flagch == '*') {
@@ -599,10 +600,24 @@ void IRCMessageParser::parseNumericalNames(IRCMessage *message) {
switch (flagch) {
- case '@': flag = IRCChannelPerson::PERSON_FLAG_OP; break;
- case '+': flag = IRCChannelPerson::PERSON_FLAG_VOICE; break;
- case '%': flag = IRCChannelPerson::PERSON_FLAG_HALFOP; break;
- default : flag = 0; break;
+ /**
+ * @note '~' and `&' are extensions of the unrealircd irc
+ * daemon. This app can't see users w/out checking for these
+ * chars.
+ */
+ case '~':
+ case '&':
+ case '@':
+ flag = IRCChannelPerson::PERSON_FLAG_OP;
+ break;
+ case '+':
+ flag = IRCChannelPerson::PERSON_FLAG_VOICE;
+ break;
+ case '%':
+ flag = IRCChannelPerson::PERSON_FLAG_HALFOP;
+ break;
+ default :
+ flag = 0;
+ break;
}
- } else {
+ } else
nick = temp;
- }
@@ -618,5 +633,5 @@ void IRCMessageParser::parseNumericalNames(IRCMessage *message) {
}
- } else {
- emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Server message with unknown channel")));
- }
+ } else
+ emit outputReady(IRCOutput(OUTPUT_ERROR,
+ tr("Server message with unknown channel")));
}