+HashList *GetWholistHash(void)
+{
+ HashList *List;
+ char buf[SIZ];
+ time_t now;
+
+ serv_puts("TIME");
+ serv_getln(buf, sizeof buf);
+ if (buf[0] == '2') {
+ now = extract_long(&buf[4], 0);
+ }
+ else {
+ now = time(NULL);
+ }
+
+ List = NewHash(1, NULL);
+ GetWholistSection(List, now);
+ return List;
+}
+
+void WholistSubst(StrBuf *TemplBuffer, void *vContext)
+{
+ UserStateStruct *User = (UserStateStruct*) vContext;
+
+ SVPutBuf("WHO:NAME", User->UserName, 1);
+ SVPutBuf("WHO:ROOM", User->Room, 1);
+ SVPutBuf("WHO:HOST", User->Host, 1);
+ SVPutBuf("WHO:REALROOM", User->RealRoom, 1);
+ SVPutBuf("WHO:REALHOST", User->RealHost, 1);
+ svprintf(HKEY("WHO:LASTACTIVE"), WCS_STRING, "%ld", User->LastActive);
+ svprintf(HKEY("WHO:SESSION"), WCS_STRING, "%d", User->Session);
+ svprintf(HKEY("WHO:IDLE"), WCS_STRING, "%s", (User->Idle)? "Idle":"Active");
+ svprintf(HKEY("WHO:NSESSIONS"), WCS_STRING, "%d", User->SessionCount);
+
+}
+
+void DeleteWholistHash(HashList *KillMe)
+{
+ DeleteHash(&KillMe);
+}
+