buybuy plaintext important message.
[citadel.git] / webcit / roomops.c
index 3d1e3a12c27bbfbbe4e86461b74b70606eeeca0f..f16fb7f585708ed42480570359b96c863edea1e9 100644 (file)
@@ -186,18 +186,30 @@ long gotoroom(const StrBuf *gname)
        StrBuf *Buf;
        static long ls = (-1L);
        long err = 0;
+       int room_name_supplied = 0;
+       int is_baseroom = 0;
 
        /* store ungoto information */
-       if (StrLength(gname) > 0)
+       if (StrLength(gname) > 0) {
+               room_name_supplied = 1;
+       }
+       if (room_name_supplied) {
                strcpy(WCC->ugname, ChrPtr(WCC->CurRoom.name));
+               if (!strcasecmp(ChrPtr(gname), "_BASEROOM_")) {
+                       is_baseroom = 1;
+               }
+       }
        WCC->uglsn = ls;
        Buf = NewStrBuf();
 
        /* move to the new room */
-       if (StrLength(gname) > 0)
+       if (room_name_supplied) {
                serv_printf("GOTO %s", ChrPtr(gname));
-       else /* or just refresh the current state... */
+       }
+       else {
+               /* or just refresh the current state... */
                serv_printf("GOTO 00000000000000000000");
+       }
        StrBuf_ServGetln(Buf);
        if  (GetServerStatus(Buf, &err) != 2) {
                serv_puts("GOTO _BASEROOM_");
@@ -215,11 +227,11 @@ long gotoroom(const StrBuf *gname)
        FlushFolder(&WCC->CurRoom);
        ParseGoto(&WCC->CurRoom, Buf);
 
-       if (StrLength(gname) > 0)
-       {
+       if (room_name_supplied) {
                remove_march(WCC->CurRoom.name);
-               if (!strcasecmp(ChrPtr(gname), "_BASEROOM_"))
+               if (is_baseroom) {
                        remove_march(gname);
+               }
        }
        FreeStrBuf(&Buf);
 
@@ -342,16 +354,12 @@ void ParseGoto(folder *room, StrBuf *Line)
  */
 void delete_room(void)
 {
-       char buf[SIZ];
-
+       StrBuf *Line;
        
        serv_puts("KILL 1");
-       serv_getln(buf, sizeof buf);
-
-       if (buf[0] != '2') {
-               strcpy(WC->ImportantMessage, &buf[4]);
+       StrBuf_ServGetln(Line);
+       if (GetServerStatusMsg(Line, NULL, 1, 2) != 2) {
                display_main_menu();
-               return;
        } else {
                StrBuf *Buf;
                
@@ -360,6 +368,7 @@ void delete_room(void)
                smart_goto(Buf);
                FreeStrBuf(&Buf);
        }
+       FreeStrBuf(&Line);
 }
 
 /*
@@ -694,8 +703,7 @@ void editroom(void)
        int succ1, succ2;
 
        if (!havebstr("ok_button")) {
-               strcpy(WC->ImportantMessage,
-                      _("Cancelled.  Changes were not saved."));
+               AppendImportantMessage(_("Cancelled.  Changes were not saved."), -1);
                http_transmit_thing(ChrPtr(do_template("room_edit")), 0);
                return;
        }
@@ -902,7 +910,7 @@ void do_invt_kick(void)
  */
 void entroom(void)
 {
-       char buf[SIZ];
+       StrBuf *Line;
        const StrBuf *er_name;
        const StrBuf *er_type;
        const StrBuf *er_password;
@@ -912,8 +920,7 @@ void entroom(void)
        wcsession *WCC = WC;
 
        if (!havebstr("ok_button")) {
-               strcpy(WC->ImportantMessage,
-                      _("Cancelled.  No new room was created."));
+               AppendImportantMessage(_("Cancelled.  No new room was created."), -1);
                display_main_menu();
                return;
        }
@@ -941,9 +948,10 @@ void entroom(void)
                    0, 
                    er_view);
 
-       serv_getln(buf, sizeof buf);
-       if (buf[0] != '2') {
-               strcpy(WCC->ImportantMessage, &buf[4]);
+       Line = NewStrBuf();
+       StrBuf_ServGetln(Line);
+       if (GetServerStatusMsg(Line, NULL, 1, 2) != 2) {
+               FreeStrBuf(&Line);
                display_main_menu();
                return;
        }
@@ -951,7 +959,8 @@ void entroom(void)
        gotoroom(er_name);
 
        serv_printf("VIEW %d", er_view);
-       serv_getln(buf, sizeof buf);
+       StrBuf_ServGetln(Line);
+       FreeStrBuf(&Line); /* TODO: should we care about errors? */
        WCC->CurRoom.view = er_view;
 
        if ( (WCC != NULL) && ( (WCC->CurRoom.RAFlags & UA_ADMINALLOWED) != 0) )  {
@@ -959,7 +968,7 @@ void entroom(void)
        } else {
                smart_goto(WCC->CurRoom.name);
        }
-
+       FreeStrBuf(&Line);
 }
 
 
@@ -986,25 +995,24 @@ void change_view(void) {
  * Set the message expire policy for this room and/or floor
  */
 void set_room_policy(void) {
-       char buf[SIZ];
+       StrBuf *Line;
 
        if (!havebstr("ok_button")) {
-               strcpy(WC->ImportantMessage,
-                      _("Cancelled.  Changes were not saved."));
+               AppendImportantMessage(_("Cancelled.  Changes were not saved."), -1);
                http_transmit_thing(ChrPtr(do_template("room_edit")), 0);
                return;
        }
+       Line = NewStrBuf();
 
        serv_printf("SPEX roompolicy|%d|%d", ibstr("roompolicy"), ibstr("roomvalue"));
-       serv_getln(buf, sizeof buf);
-       strcpy(WC->ImportantMessage, &buf[4]);
-
+       StrBuf_ServGetln(Line);
+       GetServerStatusMsg(Line, NULL, 1, 0);
        if (WC->axlevel >= 6) {
-               strcat(WC->ImportantMessage, "<br>\n");
                serv_printf("SPEX floorpolicy|%d|%d", ibstr("floorpolicy"), ibstr("floorvalue"));
-               serv_getln(buf, sizeof buf);
-               strcat(WC->ImportantMessage, &buf[4]);
+               StrBuf_ServGetln(Line);
+               GetServerStatusMsg(Line, NULL, 1, 0);
        }
+       FreeStrBuf(&Line);
        ReloadCurrentRoom();
        http_transmit_thing(ChrPtr(do_template("room_edit")), 0);
 }