]> code.citadel.org Git - citadel.git/blobdiff - citadel/textclient/commands.c
Detect screen dimensions _before_ attaching to the server.
[citadel.git] / citadel / textclient / commands.c
index 7e5a80e884bdad868fff4ec038f3d20213ef39da..d5c93e84c66265fafae7354764ee25986f852957 100644 (file)
@@ -135,7 +135,7 @@ char was_a_key_pressed(void) {
         * in the middle of a data transfer from the server, in which case
         * sending a NOOP would throw the client protocol out of sync.
         */
-       if (FD_ISSET(0, &rfds)) {
+       if ((retval > 0) && FD_ISSET(0, &rfds)) {
                set_keepalives(KA_NO);
                the_character = inkey();
                set_keepalives(KA_YES);
@@ -284,7 +284,6 @@ void set_keepalives(int s)
 
 static time_t idlet = 0;
 static void really_do_keepalive(void) {
-       int r;                          /* IPC response code */
 
        time(&idlet);
 
@@ -298,7 +297,7 @@ static void really_do_keepalive(void) {
         * wait for a response.
         */
        if (keepalives_enabled == KA_YES) {
-               r = CtdlIPCNoop(ipc_for_signal_handlers);
+               CtdlIPCNoop(ipc_for_signal_handlers);
                if (instant_msgs > 0) {
                        if (ok_to_interrupt == 1) {
                                scr_printf("\r%64s\r", "");
@@ -756,9 +755,6 @@ void load_command_set(void)
                if (!strncasecmp(buf, "expcmd=", 7))
                        strcpy(rc_exp_cmd, &buf[7]);
 
-               if (!strncasecmp(buf, "local_screen_dimensions=", 24))
-                       have_xterm = (char) atoi(&buf[24]);
-
                if (!strncasecmp(buf, "use_floors=", 11)) {
                        if (!strcasecmp(&buf[11], "yes"))
                                rc_floor_mode = RC_YES;
@@ -1476,6 +1472,11 @@ void look_for_ansi(void)
                        if (FD_ISSET(0, &rfds)) {
                                abuf[strlen(abuf) + 1] = 0;
                                rv = read(0, &abuf[strlen(abuf)], 1);
+                               if (rv < 0) {
+                                       scr_printf("failed to read after select: %s", 
+                                                  strerror(errno));
+                                       break;
+                               }
                        }
                } while (FD_ISSET(0, &rfds));