#include "client.h"
#include "hash.h"
#include "ircd.h"
-#include "ircd_policy.h"
+#include "ircd_features.h"
+#include "ircd_log.h"
#include "ircd_reply.h"
#include "ircd_string.h"
#include "msg.h"
#include "send.h"
#include "whowas.h"
-#include <assert.h>
+/* #include <assert.h> -- Now using assert in ircd_log.h */
#include <stdlib.h>
/*
*
* parv[0] = sender prefix
* parv[1] = nickname queried
- * parv[2] = maximum returned items (optional, default is unlimitted)
+ * parv[2] = maximum returned items (optional, default is unlimited)
* parv[3] = remote server target (Opers only, max returned items 20)
*/
int m_whowas(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
{
send_reply(sptr, RPL_WHOWASUSER, temp->name, temp->username,
temp->hostname, temp->realname);
-#ifdef HEAD_IN_SAND_WHOIS_SERVERNAME
- if (!IsOper(sptr))
- send_reply(sptr, RPL_WHOISSERVER, temp->name, "*.undernet.org",
- myctime(temp->logoff));
- else
-#endif
- send_reply(sptr, RPL_WHOISSERVER, temp->name, temp->servername,
- myctime(temp->logoff));
+ if (IsAnOper(sptr) && temp->realhost)
+ send_reply(sptr, RPL_WHOISACTUALLY, temp->name, temp->username, temp->realhost, "<untracked>");
+ send_reply(sptr, RPL_WHOISSERVER, temp->name,
+ (feature_bool(FEAT_HIS_WHOIS_SERVERNAME) && !IsOper(sptr)) ?
+ feature_str(FEAT_HIS_SERVERNAME) :
+ temp->servername,
+ myctime(temp->logoff));
if (temp->away)
send_reply(sptr, RPL_AWAY, temp->name, temp->away);
cur++;