/*
* $Id$
*/
-/**
- * \defgroup DislpayWho Display a list of all users currently logged on to the Citadel server.
- * \ingroup WebcitDisplayItems
- */
-/*@{*/
-#include "webcit.h"
+#include "webcit.h"
typedef struct UserStateStruct {
char *UserName;
{
struct wcsession *WCC = WC; /* This is done to make it run faster; WC is a function */
UserStateStruct *User, *OldUser;
+ void *VOldUser;
char buf[SIZ], user[SIZ], room[SIZ], host[SIZ],
realroom[SIZ], realhost[SIZ];
size_t BufLen;
serv_getln(buf, sizeof buf);
if (buf[0] == '1') {
while (BufLen = serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
+ if (BufLen <= 0)
+ continue;
User = (UserStateStruct*) malloc(sizeof(UserStateStruct));
User->Session = extract_int(buf, 0);
User->Idle = (now - User->LastActive) > 900L;
User->SessionCount = 1;
- if (GetHash(List, User->UserName, User->UserNameLen, (void**)&OldUser)) {
+ if (GetHash(List, User->UserName, User->UserNameLen, &VOldUser)) {
+ OldUser = VOldUser;
OldUser->SessionCount++;
if (!User->Idle) {
if (User->Session == WCC->ctdl_pid)
return 0;
}
-/**
- * \brief Display inner div of Wholist
+/*
+ * Display inner div of Wholist
*/
void who_inner_div(void) {
UserStateStruct *User;
+ void *VUser;
char buf[SIZ];
struct wcsession *WCC = WC; /* This is done to make it run faster; WC is a function */
HashList *List;
now = time(NULL);
}
- List = NewHash();
+ List = NewHash(1, NULL);
if (GetWholistSection(List, now)) {
it = GetNewHashPos();
- while (GetNextHashPos(List, it, &len, &UserName, (void**)&User)) {
-
+ while (GetNextHashPos(List, it, &len, &UserName, &VUser)) {
+ User = VUser;
bg = 1 - bg;
wprintf("<tr class=\"%s\">",
(bg ? "even" : "odd")
}
wprintf("</td>");
- /** (link to page this user) */
- wprintf("<td width=\"5%\"><a href=\"display_page?recp=");
+ /* (link to page this user) */
+ wprintf("<td width=\"5%%\"><a href=\"display_page?recp=");
urlescputs(User->UserName);
wprintf("\">"
"<img align=\"middle\" "
" border=\"0\" /></a> ");
wprintf("</td>");
- /** (idle flag) */
- wprintf("<td width=\"5%\">");
+ /* (idle flag) */
+ wprintf("<td width=\"5%%\">");
if (User->Idle) {
wprintf(" "
"<img align=\"middle\" "
"src=\"static/inactiveuser_24x.gif\" "
- "alt=\"(%s %d %s)\" border=\"0\" />",
+ "alt=\"(%s %ld %s)\" border=\"0\" />",
_("idle since"),
(now - User->LastActive) / 60,
_("Minutes")
}
wprintf("</td>\n<td>");
- /** username (link to user bio/photo page) */
+ /* username (link to user bio/photo page) */
wprintf("<a href=\"showuser?who=");
urlescputs(User->UserName);
wprintf("\">");
wprintf(" [%d] ", User->SessionCount);
wprintf("</a>");
- /** room */
+ /* room */
wprintf("</td>\n\t<td>");
escputs(User->Room);
if (!IsEmptyStr(User->RealRoom) ) {
}
wprintf("</td>\n\t<td class=\"host_col\">");
- /** hostname */
+ /* hostname */
escputs(User->Host);
if (!IsEmptyStr(User->RealHost)) {
wprintf("<br /><i>");
}
-/**
- * \brief who is on?
+/*
+ * Display a list of users currently logged in to the system
*/
void who(void)
{
);
wprintf("</div></div>\n");
- /**
+ /*
* JavaScript to make the ajax refresh happen:
* See http://www.sergiopereira.com/articles/prototype.js.html for info on Ajax.PeriodicalUpdater
* It wants: 1. The div being updated
wDumpContent(1);
}
-/**
- * \brief end session \todo what??? does this belong here?
+/*
+ * end session
*/
void terminate_session(void)
{
}
-/**
- * \brief Change your session info (fake roomname and hostname)
+/*
+ * Change your session info (fake roomname and hostname)
*/
void edit_me(void)
{
char buf[SIZ];
- if (!IsEmptyStr(bstr("change_room_name_button"))) {
+ if (havebstr("change_room_name_button")) {
serv_printf("RCHG %s", bstr("fake_roomname"));
serv_getln(buf, sizeof buf);
http_redirect("who");
- } else if (!IsEmptyStr(bstr("change_host_name_button"))) {
+ } else if (havebstr("change_host_name_button")) {
serv_printf("HCHG %s", bstr("fake_hostname"));
serv_getln(buf, sizeof buf);
http_redirect("who");
- } else if (!IsEmptyStr(bstr("change_user_name_button"))) {
+ } else if (havebstr("change_user_name_button")) {
serv_printf("UCHG %s", bstr("fake_username"));
serv_getln(buf, sizeof buf);
http_redirect("who");
- } else if (!IsEmptyStr(bstr("cancel_button"))) {
+ } else if (havebstr("cancel_button")) {
http_redirect("who");
} else {
output_headers(1, 1, 0, 0, 0, 0);
wprintf("<br />\n");
wprintf("<form method=\"POST\" action=\"edit_me\">\n");
- wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%ld\">\n", WC->nonce);
+ wprintf("<input type=\"hidden\" name=\"nonce\" value=\"%d\">\n", WC->nonce);
wprintf("<table border=0 width=100%%>\n");
}
}
-/**
- * \brief Wholist section
+/*
+ * Wholist section
*/
void wholist_section(void) {
UserStateStruct *User;
+ void *VUser;
HashList *List;
HashPos *it;
char *UserName;
now = time(NULL);
}
- List = NewHash();
+ List = NewHash(1, NULL);
if (GetWholistSection(List, now)) {
SortByPayload(List, CompareUserStruct);
it = GetNewHashPos();
- while (GetNextHashPos(List, it, &len, &UserName, (void**)&User)) {
+ while (GetNextHashPos(List, it, &len, &UserName, &VUser)) {
+ User = VUser;
if (strcmp(User->UserName, NLI)) {
wprintf("<li class=\"");
if (User->Idle) {
}
DeleteHash(&List);
}
-
-
-
-/*@}*/