Index: include/whois.h
--- include/whois.h.orig	2004-01-06 09:14:08 +0100
+++ include/whois.h	2009-02-19 23:40:50 +0100
@@ -42,6 +42,7 @@
 	void	whois_name(u_char *, u_char **);
 	void	whowas_name(u_char *, u_char **);
 	void	whois_channels(u_char *, u_char **);
+	void	whois_loggedinas(u_char *, u_char **);
 	void	whois_server(u_char *, u_char **);
 	void	whois_oper(u_char *, u_char **);
 	void	whois_lastcom(u_char *, u_char **);
Index: source/numbers.c
--- source/numbers.c.orig	2004-01-08 00:30:00 +0100
+++ source/numbers.c	2009-02-19 23:40:50 +0100
@@ -506,6 +506,10 @@
 		funny_mode(from, ArgList);
 		break;
 
+	case 330:		/* #define RPL_WHOISLOGGEDIN    330 */
+		whois_loggedinas(from, ArgList);
+		break;
+
 	case 341:		/* #define RPL_INVITING         341 */
 		invite(from, ArgList);
 		break;
Index: source/whois.c
--- source/whois.c.orig	2006-07-22 05:50:10 +0200
+++ source/whois.c	2009-02-19 23:40:50 +0100
@@ -541,6 +541,28 @@
 }
 
 /*
+ * whois_server: Called in numbers.c when a numeric of 330 is received.
+ * Ratbox IRC sends ":%s 330 %s %s %s :is logged in as" with args
+ * me.name, data->client->name, data->target->name, data->target->user->suser
+ */
+void
+whois_loggedinas(from, ArgList)
+	u_char	*from;
+	u_char	**ArgList;
+{
+	if (!ignore_whois_crap) {
+		u_char *nick, *user;
+		PasteArgs(ArgList, 2);
+		if ((nick = ArgList[0]) && (user = ArgList[1]) &&
+				do_hook(current_numeric, "%s %s %s %s", from,
+					nick, user, ArgList[2])) {
+			put_it("%s %s is logged in as %s", numeric_banner(),
+				nick, user);
+		}
+	}
+}
+
+/*
  * whois_oper: This displays the operator status of a user, as returned by
  * numeric 313 from the server.  If the ignore_whois_crap flag is set,
  * nothing is dispayed. 
