-char floorlist[128][256];
+char floorlist[128][SIZ];
/*
void load_floorlist(void)
{
int a;
- char buf[256];
+ char buf[SIZ];
for (a = 0; a < 128; ++a)
floorlist[a][0] = 0;
*/
void listrms(char *variety)
{
- char buf[256];
+ char buf[SIZ];
int num_rooms = 0;
struct roomlisting *rl = NULL;
void list_all_rooms_by_floor(void)
{
int a;
- char buf[256];
+ char buf[SIZ];
load_floorlist();
{
output_headers(1);
wprintf("<TABLE WIDTH=100%% BORDER=0 BGCOLOR=770000><TR><TD>");
- wprintf("SIZE=+1 COLOR=\"FFFFFF\"");
+ wprintf("<FONT SIZE=+1 COLOR=\"FFFFFF\"");
wprintf("<B>Zapped (forgotten) rooms</B>\n");
wprintf("</TD></TR></TABLE><BR>\n");
listrms("LZRM -1");
/*
* read this room's info file (set v to 1 for verbose mode)
*/
-void readinfo(int v)
+void readinfo(void)
{
- char buf[256];
+ char buf[SIZ];
serv_puts("RINF");
serv_gets(buf);
fmout(NULL);
wprintf("</FONT>");
}
- else {
- if (v == 1)
- wprintf("<EM>%s</EM><BR>\n", &buf[4]);
- }
}
-void embed_room_banner(char *got) {
- char buf[256];
- char fakegot[256];
- static int remember_new_mail = (-1);
- /* We need to have the information returned by a GOTO server command.
- * If it isn't supplied, we fake it by issuing our own GOTO.
- */
- if (got == NULL) {
- serv_printf("GOTO %s", WC->wc_roomname);
- serv_gets(fakegot);
- got = fakegot;
- }
-
- /* Check for new mail. */
- WC->new_mail = extract_int(&got[4], 9);
-
- /* Now start spewing HTML. */
- wprintf("<CENTER><TABLE width=100%% border=0 cellpadding=5><TR>");
+/* Display room graphic. The server doesn't actually
+ * need the room name, but we supply it in order to
+ * keep the browser from using a cached graphic from
+ * another room.
+ */
+void embed_room_graphic(void) {
+ char buf[SIZ];
- if ((strlen(WC->ugname) > 0) && (strcasecmp(WC->ugname, WC->wc_roomname))) {
- wprintf("<TD VALIGN=TOP><A HREF=\"/ungoto\">");
- wprintf("<IMG SRC=\"/static/back.gif\" BORDER=0>");
- wprintf("<BR><FONT SIZE=-2>Previous room</FONT></A></TD>");
- }
- wprintf("<TD VALIGN=TOP BGCOLOR=444455>");
- wprintf("<FONT SIZE=+2 COLOR=FFFFEE>%s</FONT><BR>", WC->wc_roomname);
- wprintf("<FONT COLOR=DDDDCC>%d new of %d messages</FONT></TD>\n",
- extract_int(&got[4], 1),
- extract_int(&got[4], 2));
-
- /* Display room graphic. The server doesn't actually
- * need the room name, but we supply it in order to
- * keep the browser from using a cached graphic from
- * another room.
- */
serv_puts("OIMG _roompic_");
serv_gets(buf);
if (buf[0] == '2') {
serv_puts("CLOS");
serv_gets(buf);
}
- wprintf("<TD VALIGN=TOP>");
- readinfo(0);
- wprintf("</TD>");
- /* Let the user know if new mail has arrived */
- if ( (WC->new_mail > remember_new_mail) && (WC->new_mail>0) ) {
+}
+
+
+/* Let the user know if new mail has arrived
+ */
+void embed_newmail_button(void) {
+ if ( (WC->new_mail > WC->remember_new_mail) && (WC->new_mail>0) ) {
wprintf("<TD VALIGN=TOP>"
"<IMG SRC=\"/static/mail.gif\" border=0 "
"ALT=\"You have new mail\">"
"<BR><BLINK>%d</BLINK>", WC->new_mail);
wprintf("<FONT SIZE=-2> new mail messages</FONT></TD>");
- remember_new_mail = WC->new_mail;
+ WC->remember_new_mail = WC->new_mail;
+ }
+}
+
+
+
+void embed_room_banner(char *got) {
+ char fakegot[SIZ];
+
+ /* We need to have the information returned by a GOTO server command.
+ * If it isn't supplied, we fake it by issuing our own GOTO.
+ */
+ if (got == NULL) {
+ serv_printf("GOTO %s", WC->wc_roomname);
+ serv_gets(fakegot);
+ got = fakegot;
}
- wprintf("<TD VALIGN=TOP><A HREF=\"/gotonext\">");
- wprintf("<IMG SRC=\"/static/forward.gif\" border=0>");
- wprintf("<BR><FONT SIZE=-2>Next room</FONT></A></TD>");
- wprintf("</TR></TABLE></CENTER>\n");
+ /* Check for new mail. */
+ WC->new_mail = extract_int(&got[4], 9);
+
+ svprintf("ROOMNAME", WCS_STRING, "%s", WC->wc_roomname);
+ svprintf("NEWMSGS", WCS_STRING, "%d", extract_int(&got[4], 1));
+ svprintf("TOTALMSGS", WCS_STRING, "%d", extract_int(&got[4], 2));
+ svcallback("ROOMPIC", embed_room_graphic);
+ svcallback("ROOMINFO", readinfo);
+ svcallback("YOUHAVEMAIL", embed_newmail_button);
+
+ do_template("roombanner.html");
+ clear_local_substs();
}
*/
void gotoroom(char *gname, int display_name)
{
- char buf[256];
+ char buf[SIZ];
static long ls = (-1L);
wprintf("Cache-Control: no-store\n");
wprintf("<HTML><HEAD>\n"
+ "<META HTTP-EQUIV=\"refresh\" CONTENT=\"500363689;\">\n"
"<META HTTP-EQUIV=\"Pragma\" CONTENT=\"no-cache\">\n"
+ "<META HTTP-EQUIV=\"expired\" CONTENT=\"28-May-1971 18:10:00 GMT\">\n"
+ "<meta name=\"MSSmartTagsPreventParsing\" content=\"TRUE\">\n"
"</HEAD>\n");
do_template("background.html");
}
*/
void gotonext(void)
{
- char buf[256];
+ char buf[SIZ];
struct march *mptr, *mptr2;
char next_room[32];
*/
void slrp_highest(void)
{
- char buf[256];
+ char buf[SIZ];
/* set pointer */
serv_puts("SLRP HIGHEST");
*/
void ungoto(void)
{
- char buf[256];
+ char buf[SIZ];
if (!strcmp(WC->ugname, "")) {
smart_goto(WC->wc_roomname);
*/
void display_editroom(void)
{
- char buf[256];
+ char buf[SIZ];
char er_name[20];
char er_password[10];
char er_dirname[15];
*/
void editroom(void)
{
- char buf[256];
+ char buf[SIZ];
char er_name[20];
char er_password[10];
char er_dirname[15];
smart_goto(er_name);
}
+/*
+ * Invite, Kick, and show Who Knows a room
+ */
+void display_whok(void)
+{
+ char buf[SIZ], room[SIZ], username[SIZ];
+
+ serv_puts("GETR");
+ serv_gets(buf);
+
+ if (buf[0] != '2') {
+ display_error(&buf[4]);
+ return;
+ }
+ extract(room, &buf[4], 0);
+
+ strcpy(username, bstr("username"));
+
+ output_headers(1);
+
+ if(!strcmp(bstr("sc"), "Kick")) {
+ sprintf(buf, "KICK %s", username);
+ serv_puts(buf);
+ serv_gets(buf);
+
+ if (buf[0] != '2') {
+ display_error(&buf[4]);
+ return;
+ } else {
+ wprintf("User %s kicked out of room %s.\n",
+ username, room);
+ }
+ } else if(!strcmp(bstr("sc"), "Invite")) {
+ sprintf(buf, "INVT %s", username);
+ serv_puts(buf);
+ serv_gets(buf);
+
+ if (buf[0] != '2') {
+ display_error(&buf[4]);
+ return;
+ } else {
+ wprintf("User %s invited to room %s.\n",
+ username, room);
+ }
+ }
+
+
+ wprintf("<FORM METHOD=\"POST\" ACTION=\"/display_whok\">\n");
+ wprintf("<SELECT NAME=\"username\" SIZE=10>\n");
+ serv_puts("WHOK");
+ serv_gets(buf);
+ if (buf[0] == '1') {
+ while (serv_gets(buf), strcmp(buf, "000")) {
+ extract(username, buf, 0);
+ wprintf("<OPTION>");
+ escputs(username);
+ wprintf("\n");
+ }
+ }
+ wprintf("</SELECT>\n");
+
+ wprintf("<CENTER>\n");
+ wprintf("<input type=submit name=sc value=\"Kick\">");
+ wprintf("</CENTER>\n");
+ wprintf("</FORM>\n");
+ wprintf("<FORM METHOD=\"POST\" ACTION=\"/display_whok\">\n");
+ wprintf("Invite: ");
+ wprintf("<input type=text name=username>\n");
+ wprintf("<input type=hidden name=sc value=\"Invite\">");
+ wprintf("<input type=submit value=\"Invite\">");
+ wDumpContent(1);
+}
+
/*
*/
void display_entroom(void)
{
- char buf[256];
+ int i;
+ char buf[SIZ];
serv_puts("CRE8 0");
serv_gets(buf);
wprintf("<LI><INPUT TYPE=\"radio\" NAME=\"type\" VALUE=\"invonly\" ");
wprintf("> Private - invitation only\n");
+ wprintf("</UL>\n");
+
+ wprintf("<LI>Resides on floor: ");
+ load_floorlist();
+ wprintf("<SELECT NAME=\"er_floor\" SIZE=\"1\">\n");
+ for (i = 0; i < 128; ++i)
+ if (strlen(floorlist[i]) > 0) {
+ wprintf("<OPTION ");
+ wprintf("VALUE=\"%d\">", i);
+ escputs(floorlist[i]);
+ wprintf("</OPTION>\n");
+ }
+ wprintf("</SELECT>\n");
+ wprintf("</UL>\n");
+
wprintf("<CENTER>\n");
wprintf("<INPUT TYPE=\"submit\" NAME=\"sc\" VALUE=\"OK\">");
wprintf("<INPUT TYPE=\"submit\" NAME=\"sc\" VALUE=\"Cancel\">");
wprintf("</CENTER>\n");
- wprintf("</FORM>\n");
+ wprintf("</FORM>\n<HR>");
+ serv_printf("MESG roomaccess");
+ serv_gets(buf);
+ if (buf[0] == '1') {
+ fmout(NULL);
+ }
wDumpContent(1);
}
*/
void entroom(void)
{
- char buf[256];
+ char buf[SIZ];
char er_name[20];
char er_type[20];
char er_password[10];
+ int er_floor;
int er_num_type;
if (strcmp(bstr("sc"), "OK")) {
strcpy(er_name, bstr("er_name"));
strcpy(er_type, bstr("type"));
strcpy(er_password, bstr("er_password"));
+ er_floor = atoi(bstr("er_floor"));
er_num_type = 0;
if (!strcmp(er_type, "guessname"))
if (!strcmp(er_type, "invonly"))
er_num_type = 3;
- sprintf(buf, "CRE8 1|%s|%d|%s", er_name, er_num_type, er_password);
+ sprintf(buf, "CRE8 1|%s|%d|%s|%d",
+ er_name, er_num_type, er_password, er_floor);
serv_puts(buf);
serv_gets(buf);
if (buf[0] != '2') {
void goto_private(void)
{
char hold_rm[32];
- char buf[256];
+ char buf[SIZ];
if (strcasecmp(bstr("sc"), "OK")) {
display_main_menu();
*/
void zap(void)
{
- char buf[256];
- char final_destination[256];
+ char buf[SIZ];
+ char final_destination[SIZ];
/* If the forget-room routine fails for any reason, we fall back
* to the current room; otherwise, we go to the Lobby
*/
void confirm_delete_room(void)
{
- char buf[256];
+ char buf[SIZ];
serv_puts("KILL 0");
serv_gets(buf);
*/
void delete_room(void)
{
- char buf[256];
- char sc[256];
+ char buf[SIZ];
+ char sc[SIZ];
strcpy(sc, bstr("sc"));