]> code.citadel.org Git - citadel.git/commitdiff
roomops.c: fixed buggy implementation of ungoto
authorArt Cancro <ajc@citadel.org>
Mon, 14 Dec 1998 04:25:09 +0000 (04:25 +0000)
committerArt Cancro <ajc@citadel.org>
Mon, 14 Dec 1998 04:25:09 +0000 (04:25 +0000)
webcit/ChangeLog
webcit/roomops.c

index e42a7b9dc2dab111cc39a4007559809cb289342b..8f95ed9417d32a977102ee6704af0f6dc203f0ea 100644 (file)
@@ -8,6 +8,7 @@ Sun Dec 13 13:35:12 EST 1998 Art Cancro <ajc@uncnsrd.mt-kisco.ny.us>
        * messages.c: added "delete message" functionality
        * messages.c: added "move message" functionality
        * userlist.c: added.  This adds "userlist" and "show user" functions.
+       * roomops.c: fixed buggy implementation of ungoto
 
 Fri Dec 11 21:14:36 EST 1998 Art Cancro <ajc@uncnsrd.mt-kisco.ny.us>
        * Brought over message reading and entry functions from old WebCit
index 99ebee7248d1cfb85a639b3bd716879a163104cb..13d96c24779570e2dc5c33e7c1c438d2846a1233 100644 (file)
@@ -18,7 +18,7 @@ struct march {
 
 char floorlist[128][256];
 char ugname[128];
-long uglsn;
+long uglsn = (-1L);
 unsigned room_flags;
 int is_aide = 0;
 int is_room_aide = 0;
@@ -189,7 +189,7 @@ void readinfo(int v)
 void gotoroom(char *gname, int display_name)
 {
        char buf[256];
-       static long ls = 0L;
+       static long ls = (-1L);
 
 
        printf("HTTP/1.0 200 OK\n");
@@ -198,8 +198,10 @@ void gotoroom(char *gname, int display_name)
 
        if (display_name != 2) {
                /* store ungoto information */
-               strcpy(ugname,wc_roomname);
+               strcpy(ugname, wc_roomname);
                uglsn = ls;
+               fprintf(stderr, "setting ugname to %s and uglsn to %ld\n",
+                       ugname, uglsn);
                }
 
        /* move to the new room */
@@ -218,6 +220,13 @@ void gotoroom(char *gname, int display_name)
 
        extract(wc_roomname,&buf[4],0);
        room_flags = extract_int(&buf[4],4);
+       /* highest_msg_read = extract_int(&buf[4],6);
+       maxmsgnum = extract_int(&buf[4],5);
+       is_mail = (char) extract_int(&buf[4],7); */
+       ls = extract_long(&buf[4], 6);
+
+       if (is_aide) is_room_aide = is_aide;
+       else is_room_aide = (char) extract_int(&buf[4],8);
 
        remove_march(wc_roomname);
        if (!strcasecmp(gname,"_BASEROOM_")) remove_march(gname);
@@ -260,15 +269,7 @@ void gotoroom(char *gname, int display_name)
                wprintf("<IMG SRC=\"/static/forward.gif\" border=0></A></TD>");
 
                wprintf("</TR></TABLE></CENTER>\n");
-
                }
-       /* highest_msg_read = extract_int(&buf[4],6);
-       maxmsgnum = extract_int(&buf[4],5);
-       is_mail = (char) extract_int(&buf[4],7); */
-       ls = extract_long(&buf[4],6);
-
-       if (is_aide) is_room_aide = is_aide;
-       else is_room_aide = (char) extract_int(&buf[4],8);
 
        strcpy(wc_roomname, wc_roomname);
        wDumpContent();
@@ -375,20 +376,22 @@ void slrp_highest(void) {
 void ungoto(void) { 
        char buf[256];
        
-       if (!strcmp(ugname,"")) return;
-       sprintf(buf,"GOTO %s",ugname);
-       serv_puts(buf);
+       if (!strcmp(ugname, "")) {
+               gotoroom(wc_roomname, 1);
+               return;
+               }
+       serv_printf("GOTO %s", ugname);
        serv_gets(buf);
        if (buf[0]!='2') {
-               wprintf("%s\n",&buf[4]);
+               gotoroom(wc_roomname, 1);
                return;
                }
-       sprintf(buf,"SLRP %ld",uglsn);
-       serv_puts(buf);
-       serv_gets(buf);
-       if (buf[0]!='2') wprintf("%s\n",&buf[4]);
+       if (uglsn >= 0L) {
+               serv_printf("SLRP %ld",uglsn);
+               serv_gets(buf);
+               }
        strcpy(buf,ugname);
-       strcpy(ugname,"");
+       strcpy(ugname, "");
        gotoroom(buf,1);
        }