/*
* Send whois information for acptr to sptr
*/
-static void do_whois(struct Client* sptr, struct Client *acptr)
+static void do_whois(struct Client* sptr, struct Client *acptr, int parc)
{
struct Client *a2cptr=0;
struct Channel *chptr=0;
* probably a good place to add them :)
*/
- if (MyConnect(acptr))
+ if (MyConnect(acptr)
+#ifdef HEAD_IN_SAND_WHOIS_IDLETIME
+ && (sptr == acptr || IsAnOper(sptr) || parc >= 3)
+#endif
+ )
send_reply(sptr, RPL_WHOISIDLE, name, CurrentTime - user->last,
cli_firsttime(acptr));
}
* returns the number of people found (or, obviously, 0, if none where
* found).
*/
-static int do_wilds(struct Client* sptr,char *nick,int count)
+static int do_wilds(struct Client* sptr, char *nick, int count, int parc)
{
struct Client *acptr; /* Current client we're concidering */
struct User *user; /* the user portion of the client */
/* Should we show this person now? */
if (showperson) {
found++;
- do_whois(sptr,acptr);
+ do_whois(sptr, acptr, parc);
if (count+found>MAX_WHOIS_LINES)
return found;
continue;
if (!showperson)
continue;
- do_whois(sptr,acptr);
+ do_whois(sptr, acptr, parc);
found++;
if (count+found>MAX_WHOIS_LINES)
return found;
/* No wildcards */
acptr = FindUser(nick);
if (acptr && !IsServer(acptr)) {
- do_whois(sptr,acptr);
+ do_whois(sptr, acptr, parc);
found = 1;
}
}
else /* wilds */
- found=do_wilds(sptr,nick,total);
+ found=do_wilds(sptr, nick, total, parc);
if (!found)
send_reply(sptr, ERR_NOSUCHNICK, nick);
acptr = FindUser(nick);
if (acptr && !IsServer(acptr)) {
found++;
- do_whois(sptr,acptr);
+ do_whois(sptr, acptr, parc);
}
if (!found)