]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - interactive.c
Drop support for Mac OS.
[paraslash.git] / interactive.c
index a568d3c5c82fb065eaaff9c86aeed02ff5310094..bda5a0b8c89093abfccb0c776d368f0f0c3c5854 100644 (file)
@@ -205,26 +205,7 @@ void i9e_attach_to_stdout(struct btr_node *producer)
 
 static void wipe_bottom_line(void)
 {
-       char x[] = "          ";
-       int n = i9ep->num_columns;
-
-       /*
-        * For reasons beyond my understanding, writing more than 68 characters
-        * here causes MacOS to mess up the terminal. Writing a line of spaces
-        * in smaller chunks works fine though. Weird.
-        */
-       fprintf(i9ep->stderr_stream, "\r");
-       while (n > 0) {
-               if (n >= sizeof(x)) {
-                       fprintf(i9ep->stderr_stream, "%s", x);
-                       n -= sizeof(x);
-                       continue;
-               }
-               x[n] = '\0';
-               fprintf(i9ep->stderr_stream, "%s", x);
-               break;
-       }
-       fprintf(i9ep->stderr_stream, "\r");
+       fprintf(i9ep->stderr_stream, "\r%s\r", i9ep->empty_line);
 }
 
 #ifndef RL_FREE_KEYMAP_DECLARED
@@ -437,6 +418,9 @@ static int dispatch_key(__a_unused int count, __a_unused int key)
 {
        int i, ret;
 
+again:
+       if (i9ep->key_sequence_length == 0)
+               return 0;
        for (i = i9ep->num_key_bindings - 1; i >= 0; i--) {
                if (strcmp(i9ep->key_sequence, i9ep->ici->bound_keyseqs[i]))
                        continue;
@@ -445,7 +429,15 @@ static int dispatch_key(__a_unused int count, __a_unused int key)
                ret = i9ep->ici->key_handler(i);
                return ret < 0? ret : 0;
        }
-       assert(0);
+       PARA_WARNING_LOG("ignoring key %d\n", i9ep->key_sequence[0]);
+       /*
+        * We received an undefined key sequence. Throw away the first byte,
+        * and try to parse the remainder.
+        */
+       memmove(i9ep->key_sequence, i9ep->key_sequence + 1,
+               i9ep->key_sequence_length); /* move also terminating zero byte */
+       i9ep->key_sequence_length--;
+       goto again;
 }
 
 /**