]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/whois.cpp
Allow use of absolute paths with m_nationalchars
[user/henk/code/inspircd.git] / src / whois.cpp
index 3f034334342bd3dd944c08b927d5574ff3c330c6..27b07c9444b0b65ae771782097ac1f32e09339c6 100644 (file)
@@ -2,7 +2,7 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  InspIRCd: (C) 2002-2009 InspIRCd Development Team
+ *  InspIRCd: (C) 2002-2010 InspIRCd Development Team
  * See: http://wiki.inspircd.org/Credits
  *
  * This program is free but copyrighted software; see
@@ -22,21 +22,25 @@ void InspIRCd::DoWhois(User* user, User* dest,unsigned long signon, unsigned lon
        }
 
        std::string cl = dest->ChannelList(user, false);
+       const ServerConfig::OperSpyWhoisState state = user->HasPrivPermission("users/auspex") ? ServerInstance->Config->OperSpyWhois : ServerConfig::SPYWHOIS_NONE;
 
-       if (cl.length())
-               user->SplitChanList(dest,cl);
-       if (IS_OPER(user) && ServerInstance->Config->OperSpyWhois)
+       if (state == ServerConfig::SPYWHOIS_SINGLEMSG)
+               cl.append(dest->ChannelList(user, true));
+
+       user->SplitChanList(dest,cl);
+
+       if (state == ServerConfig::SPYWHOIS_SPLITMSG)
        {
                std::string scl = dest->ChannelList(user, true);
                if (scl.length())
                {
-                       this->SendWhoisLine(user, dest, 336, "%s %s :is on private/secret channels:",user->nick.c_str(), dest->nick.c_str());
+                       SendWhoisLine(user, dest, 336, "%s %s :is on private/secret channels:",user->nick.c_str(), dest->nick.c_str());
                        user->SplitChanList(dest,scl);
                }
        }
-       if (user != dest && *this->Config->HideWhoisServer && !user->HasPrivPermission("servers/auspex"))
+       if (user != dest && !this->Config->HideWhoisServer.empty() && !user->HasPrivPermission("servers/auspex"))
        {
-               this->SendWhoisLine(user, dest, 312, "%s %s %s :%s",user->nick.c_str(), dest->nick.c_str(), this->Config->HideWhoisServer, this->Config->Network);
+               this->SendWhoisLine(user, dest, 312, "%s %s %s :%s",user->nick.c_str(), dest->nick.c_str(), this->Config->HideWhoisServer.c_str(), this->Config->Network.c_str());
        }
        else
        {
@@ -53,7 +57,7 @@ void InspIRCd::DoWhois(User* user, User* dest,unsigned long signon, unsigned lon
                if (this->Config->GenericOper)
                        this->SendWhoisLine(user, dest, 313, "%s %s :is an IRC operator",user->nick.c_str(), dest->nick.c_str());
                else
-                       this->SendWhoisLine(user, dest, 313, "%s %s :is %s %s on %s",user->nick.c_str(), dest->nick.c_str(), (strchr("AEIOUaeiou",dest->oper[0]) ? "an" : "a"),irc::Spacify(dest->oper.c_str()), this->Config->Network);
+                       this->SendWhoisLine(user, dest, 313, "%s %s :is %s %s on %s",user->nick.c_str(), dest->nick.c_str(), (strchr("AEIOUaeiou",dest->oper->name[0]) ? "an" : "a"),dest->oper->NameStr(), this->Config->Network.c_str());
        }
 
        if (user == dest || user->HasPrivPermission("users/auspex"))