/**************************************************************************** * [S]imulated [M]edieval [A]dventure multi[U]ser [G]ame | * * -----------------------------------------------------------| \\._.// * * SmaugWiz (C) 1998 by Russ Pillsbury (Windows NT version) | (0...0) * * -----------------------------------------------------------| ).:.( * * SMAUG (C) 1994, 1995, 1996 by Derek Snider | {o o} * * -----------------------------------------------------------| / ' ' \ * * SMAUG code team: Thoric, Altrag, Blodkai, Narn, Haus, |~'~.VxvxV.~'~* * Scryn, Swordbearer, Rennard, Tricops, and Gorog. | * * ------------------------------------------------------------------------ * * Merc 2.1 Diku Mud improvments copyright (C) 1992, 1993 by Michael * * Chastain, Michael Quan, and Mitchell Tse. * * Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, * * Michael Seifert, Hans Henrik Staerfeldt, Tom Madsen, and Katja Nyboe. * * ------------------------------------------------------------------------ * * Special requests module * * ------------------------------------------------------------------------ * * - Only handles who requests currently, but will hopefully support much * * more in the future. Including: reboot/shutdown etc. * ****************************************************************************/ #include "stdafx.h" #include "smaug.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); ThrowSmaugException (SE_BOOT); } #endif } void check_requests () { #ifdef REQUESTS char buf[MAX_STRING_LENGTH]; char buf2[MAX_STRING_LENGTH]; int c; if (read (REQ, buf, sizeof (buf)) != -1) { close (REQ); init_request_pipe (); for (c = 0; c < MAX_STRING_LENGTH; c++) if (buf[c] == '\n' || buf[c] == '\r') { buf[c] = '\0'; break; } sprintf (buf2, "REQUEST: %s", buf); gpDoc->LogString (buf2); if (strcmp (buf, "who") == 0) do_who (NULL, ""); else if (strcmp (buf, "webwho") == 0) do_who (NULL, "www"); } #endif }