/**************************************************************************** * [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 }