author | erik <erik> | 2007-02-09 21:10:30 (UTC) |
---|---|---|
committer | erik <erik> | 2007-02-09 21:10:30 (UTC) |
commit | 9abe862308081155837512dd5e6c581752c9ddb2 (patch) (unidiff) | |
tree | 0ba021365dab067f9783bdcf2fbc01d910c6802b | |
parent | b3cde0d17f52f996c04a55de90583ca60a7e0210 (diff) | |
download | opie-9abe862308081155837512dd5e6c581752c9ddb2.zip opie-9abe862308081155837512dd5e6c581752c9ddb2.tar.gz opie-9abe862308081155837512dd5e6c581752c9ddb2.tar.bz2 |
This commit is based on the patch attached to Opie bug 1735:
http://opie-bugs.oszine.de/view.php?id=1735
It changes the opie-irc app to be able to support the additional user
characters that the unrealircd irc daemon provides.
Thanks goes to andrewy for reporting and providing a patch.
-rw-r--r-- | noncore/net/opieirc/ircmessageparser.cpp | 37 |
1 files changed, 26 insertions, 11 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 | |||
@@ -590,38 +590,53 @@ void IRCMessageParser::parseNumericalNames(IRCMessage *message) { | |||
590 | stream >> temp; | 590 | stream >> temp; |
591 | 591 | ||
592 | char flagch = temp.at(0).latin1(); | 592 | char flagch = temp.at(0).latin1(); |
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. |
604 | } | 605 | */ |
605 | } else { | 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; | ||
620 | } | ||
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) { |
611 | person = new IRCPerson(); | 626 | person = new IRCPerson(); |
612 | person->setNick(nick); | 627 | person->setNick(nick); |
613 | m_session->addPerson(person); | 628 | m_session->addPerson(person); |
614 | } | 629 | } |
615 | IRCChannelPerson *chan_person = new IRCChannelPerson(person); | 630 | IRCChannelPerson *chan_person = new IRCChannelPerson(person); |
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) { |
625 | /* Done syncing to channel */ | 640 | /* Done syncing to channel */ |
626 | IRCChannel *channel = m_session->getChannel(message->param(1).lower()); | 641 | IRCChannel *channel = m_session->getChannel(message->param(1).lower()); |
627 | if (channel) { | 642 | if (channel) { |