/****************************************************************************
* [S]imulated [M]edieval [A]dventure multi[U]ser [G]ame | \\._.// *
* -----------------------------------------------------------| (0...0) *
* SMAUG 1.4 (C) 1994, 1995, 1996, 1998 by Derek Snider | ).:.( *
* -----------------------------------------------------------| {o o} *
* SMAUG code team: Thoric, Altrag, Blodkai, Narn, Haus, | / ' ' \ *
* Scryn, Rennard, Swordbearer, Gorog, Grishnakh, Nivek, |~'~.VxvxV.~'~*
* Tricops and Fireblade | *
* ------------------------------------------------------------------------ *
* Special requests module *
* ------------------------------------------------------------------------ *
* - Only handles who requests currently, but will hopefully support much *
* more in the future. Including: reboot/shutdown etc. *
****************************************************************************/
#include <sys/types.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "mud.h"
int REQ;
void init_request_pipe()
{
#ifdef REQUESTS
if ((REQ = open(REQUEST_PIPE, O_RDONLY | O_NONBLOCK)) == -1)
{
bug("REQUEST pipe not found", 0);
exit(1);
}
#endif
}
void check_requests()
{
#ifdef REQUESTS
char buf[MSL];
char buf2[MSL];
int c;
if (read(REQ, buf, sizeof(buf)) > 0)
{
close(REQ);
init_request_pipe();
for (c = 0; c < MSL; c++)
if (buf[c] == '\n' || buf[c] == '\r')
{
buf[c] = '\0';
break;
}
sprintf(buf2, "REQUEST: %s", buf);
log_string(buf2);
if (strcmp(buf, "who") == 0)
do_who(NULL, "");
else if (strcmp(buf, "webwho") == 0)
do_who(NULL, "www");
}
#endif
}