-rw-r--r-- | noncore/net/opieirc/ircmessageparser.cpp | 35 |
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 | |||
@@ -593,18 +593,33 @@ void IRCMessageParser::parseNumericalNames(IRCMessage *message) { | |||
593 | int flag = 0; | 593 | int flag = 0; |
594 | QString nick; | 594 | QString nick; |
595 | /* Parse person flags */ | 595 | /* Parse person flags */ |
596 | if (flagch == '@' || flagch == '+' || flagch=='%' || flagch == '*') { | 596 | if (flagch == '~' || flagch == '&' || flagch == '@' || flagch == '+' || |
597 | flagch=='%' || flagch == '*') { | ||
597 | 598 | ||
598 | nick = temp.right(temp.length()-1); | 599 | nick = temp.right(temp.length()-1); |
599 | switch (flagch) { | 600 | switch (flagch) { |
600 | case '@': flag = IRCChannelPerson::PERSON_FLAG_OP; break; | 601 | /** |
601 | case '+': flag = IRCChannelPerson::PERSON_FLAG_VOICE; break; | 602 | * @note '~' and `&' are extensions of the unrealircd irc |
602 | case '%': flag = IRCChannelPerson::PERSON_FLAG_HALFOP; break; | 603 | * daemon. This app can't see users w/out checking for these |
603 | default : flag = 0; break; | 604 | * chars. |
605 | */ | ||
606 | case '~': | ||
607 | case '&': | ||
608 | case '@': | ||
609 | flag = IRCChannelPerson::PERSON_FLAG_OP; | ||
610 | break; | ||
611 | case '+': | ||
612 | flag = IRCChannelPerson::PERSON_FLAG_VOICE; | ||
613 | break; | ||
614 | case '%': | ||
615 | flag = IRCChannelPerson::PERSON_FLAG_HALFOP; | ||
616 | break; | ||
617 | default : | ||
618 | flag = 0; | ||
619 | break; | ||
604 | } | 620 | } |
605 | } else { | 621 | } else |
606 | nick = temp; | 622 | nick = temp; |
607 | } | ||
608 | 623 | ||
609 | IRCPerson *person = m_session->getPerson(nick); | 624 | IRCPerson *person = m_session->getPerson(nick); |
610 | if (person == 0) { | 625 | if (person == 0) { |
@@ -616,9 +631,9 @@ void IRCMessageParser::parseNumericalNames(IRCMessage *message) { | |||
616 | chan_person->setFlags(flag); | 631 | chan_person->setFlags(flag); |
617 | channel->addPerson(chan_person); | 632 | channel->addPerson(chan_person); |
618 | } | 633 | } |
619 | } else { | 634 | } else |
620 | emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Server message with unknown channel"))); | 635 | emit outputReady(IRCOutput(OUTPUT_ERROR, |
621 | } | 636 | tr("Server message with unknown channel"))); |
622 | } | 637 | } |
623 | 638 | ||
624 | void IRCMessageParser::parseNumericalEndOfNames(IRCMessage *message) { | 639 | void IRCMessageParser::parseNumericalEndOfNames(IRCMessage *message) { |