]> code.citadel.org Git - citadel.git/blobdiff - webcit/roomops.c
Worked around issue where gotoroom() is called with WC->CurRoom.name and the contents...
[citadel.git] / webcit / roomops.c
index ff18f8f691e8ff8996f8a01587fad02a24e991b3..b93a4910dae0f249182604160dc92974e39cc5bf 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);
 
@@ -337,8 +349,8 @@ void ParseGoto(folder *room, StrBuf *Line)
        room->Floor = (const Floor*) vFloor;
 }
 
-/**
- * \brief Delete the current room
+/*
+ * Delete the current room
  */
 void delete_room(void)
 {
@@ -362,8 +374,8 @@ void delete_room(void)
        }
 }
 
-/**
- * \brief zap a room
+/*
+ * zap a room
  */
 void zap(void)
 {
@@ -982,8 +994,8 @@ void change_view(void) {
 
 
 
-/**
- * \brief Set the message expire policy for this room and/or floor
+/*
+ * Set the message expire policy for this room and/or floor
  */
 void set_room_policy(void) {
        char buf[SIZ];
@@ -1011,8 +1023,8 @@ void set_room_policy(void) {
 
 
 
-/**
- * \brief Perform changes to a room's network configuration
+/*
+ * Perform changes to a room's network configuration
  */
 void netedit(void) {
        FILE *fp;