]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/cmd_who.cpp
Decide that it wasn't quite appropriate :(
[user/henk/code/inspircd.git] / src / cmd_who.cpp
index 9c74b29ebe9c9ab457400326027cba084bb7d92c..ecb52ea293c1c1d51a646f63b06e0b9f0457bc8b 100644 (file)
@@ -2,10 +2,10 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  Inspire is copyright (C) 2002-2005 ChatSpike-Dev.
+ *  InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev.
  *                       E-mail:
- *                <brain.net>
- *                <Craig.net>
+ *                <brain@chatspike.net>
+ *                <Craig@chatspike.net>
  *
  * Written by Craig Edwards, Craig McLure, and others.
  * This program is free but copyrighted software; see
@@ -60,7 +60,7 @@ extern chan_hash chanlist;
 extern whowas_hash whowas;
 extern std::vector<userrec*> all_opers;
 extern std::vector<userrec*> local_users;
-extern userrec* fd_ref_table[65536];
+extern userrec* fd_ref_table[MAX_DESCRIPTORS];
 
 void cmd_who::Handle (char **parameters, int pcnt, userrec *user)
 {
@@ -82,16 +82,15 @@ void cmd_who::Handle (char **parameters, int pcnt, userrec *user)
                                        if ((!common_channels(user,i->second)) && (isnick(i->second->nick)))
                                        {
                                                // Bug Fix #29
-                                               strcpy(tmp, "");
-                                               if (strcmp(i->second->awaymsg, "")) {
+                                               *tmp = 0;
+                                               if (*i->second->awaymsg) {
                                                        strlcat(tmp, "G", 9);
                                                } else {
                                                        strlcat(tmp, "H", 9);
                                                }
-                                               if (strchr(i->second->modes,'o')) { strlcat(tmp, "*", 9); }
+                                               if (*i->second->oper) { strlcat(tmp, "*", 9); }
                                                WriteServ(user->fd,"352 %s %s %s %s %s %s %s :0 %s",user->nick, Ptr ? Ptr->name : "*", i->second->ident, i->second->dhost, i->second->server, i->second->nick, tmp, i->second->fullname);
-                                               n_list++;
-                                               if (n_list > Config->MaxWhoResults)
+                                               if (n_list++ > Config->MaxWhoResults)
                                                {
                                                        WriteServ(user->fd,"523 %s WHO :Command aborted: More results than configured limit",user->nick);
                                                        break;
@@ -120,13 +119,13 @@ void cmd_who::Handle (char **parameters, int pcnt, userrec *user)
                                        if ((has_channel(i->second,Ptr)) && (isnick(i->second->nick)))
                                        {
                                                // Fix Bug #29 - Part 2..
-                                               strcpy(tmp, "");
-                                               if (strcmp(i->second->awaymsg, "")) {
+                                               *tmp = 0;
+                                               if (*i->second->awaymsg) {
                                                        strlcat(tmp, "G", 9);
                                                } else {
                                                        strlcat(tmp, "H", 9);
                                                }
-                                               if (strchr(i->second->modes,'o')) { strlcat(tmp, "*", 9); }
+                                               if (*i->second->oper) { strlcat(tmp, "*", 9); }
                                                strlcat(tmp, cmode(i->second, Ptr),5);
                                                WriteServ(user->fd,"352 %s %s %s %s %s %s %s :0 %s",user->nick, Ptr->name, i->second->ident, i->second->dhost, i->second->server, i->second->nick, tmp, i->second->fullname);
                                                 n_list++;
@@ -151,14 +150,14 @@ void cmd_who::Handle (char **parameters, int pcnt, userrec *user)
                        if (u)
                        {
                                // Bug Fix #29 -- Part 29..
-                               strcpy(tmp, "");
-                               if (strcmp(u->awaymsg, "")) {
+                               *tmp = 0;
+                               if (*u->awaymsg) {
                                        strlcat(tmp, "G" ,9);
                                } else {
                                        strlcat(tmp, "H" ,9);
                                }
-                               if (strchr(u->modes,'o')) { strlcat(tmp, "*" ,9); }
-                               WriteServ(user->fd,"352 %s %s %s %s %s %s %s :0 %s",user->nick, u->chans.size() ? u->chans[0].channel->name
+                               if (*u->oper) { strlcat(tmp, "*" ,9); }
+                               WriteServ(user->fd,"352 %s %s %s %s %s %s %s :0 %s",user->nick, u->chans.size() && u->chans[0].channel ? u->chans[0].channel->name
                                 : "*", u->ident, u->dhost, u->server, u->nick, tmp, u->fullname);
                        }
                        WriteServ(user->fd,"315 %s %s :End of /WHO list.",user->nick, parameters[0]);
@@ -173,13 +172,13 @@ void cmd_who::Handle (char **parameters, int pcnt, userrec *user)
                                // If i were a rich man.. I wouldn't need to me making these bugfixes..
                                // But i'm a poor bastard with nothing better to do.
                                userrec* oper = *i;
-                               strcpy(tmp, "");
-                               if (strcmp(oper->awaymsg, "")) {
+                               *tmp = 0;
+                               if (*oper->awaymsg) {
                                        strlcat(tmp, "G" ,9);
                                } else {
                                        strlcat(tmp, "H" ,9);
                                }
-                                WriteServ(user->fd,"352 %s %s %s %s %s %s %s* :0 %s", user->nick, oper->chans.size() ? oper->chans[0].channel->name 
+                                WriteServ(user->fd,"352 %s %s %s %s %s %s %s* :0 %s", user->nick, oper->chans.size() && oper->chans[0].channel ? oper->chans[0].channel->name 
                                : "*", oper->ident, oper->dhost, oper->server, oper->nick, tmp, oper->fullname);
                         }
                         WriteServ(user->fd,"315 %s %s :End of /WHO list.",user->nick, parameters[0]);