vte: fix up SM/RM modes
authorDavid Herrmann <dh.herrmann@googlemail.com>
Tue, 29 May 2012 13:27:50 +0000 (15:27 +0200)
committerDavid Herrmann <dh.herrmann@googlemail.com>
Tue, 29 May 2012 14:05:54 +0000 (16:05 +0200)
The ANSI and DEC modes overlap so fix up parsing of flags.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
src/vte.c

index 51a2ef6..a28e60d 100644 (file)
--- a/src/vte.c
+++ b/src/vte.c
@@ -802,25 +802,29 @@ static void csi_mode(struct kmscon_vte *vte, bool set)
        unsigned int i;
 
        for (i = 0; i < CSI_ARG_MAX; ++i) {
-               switch (vte->csi_argv[i]) {
-               case 2: /* KAM */
-                       set_reset_flag(vte, set, FLAG_KEYBOARD_ACTION_MODE);
-                       continue;
-               case 4: /* IRM */
-                       set_reset_flag(vte, set, FLAG_INSERT_REPLACE_MODE);
-                       continue;
-               case 12: /* SRM */
-                       set_reset_flag(vte, set, FLAG_SEND_RECEIVE_MODE);
-                       continue;
-               case 20: /* LNM */
-                       set_reset_flag(vte, set, FLAG_LINE_FEED_NEW_LINE_MODE);
-                       continue;
-               }
-
                if (!(vte->csi_flags & CSI_WHAT)) {
-                       log_debug("unknown non-DEC (Re)Set-Mode %d",
-                                 vte->csi_argv[i]);
-                       continue;
+                       switch (vte->csi_argv[i]) {
+                       case 2: /* KAM */
+                               set_reset_flag(vte, set,
+                                              FLAG_KEYBOARD_ACTION_MODE);
+                               continue;
+                       case 4: /* IRM */
+                               set_reset_flag(vte, set,
+                                              FLAG_INSERT_REPLACE_MODE);
+                               continue;
+                       case 12: /* SRM */
+                               set_reset_flag(vte, set,
+                                              FLAG_SEND_RECEIVE_MODE);
+                               continue;
+                       case 20: /* LNM */
+                               set_reset_flag(vte, set,
+                                              FLAG_LINE_FEED_NEW_LINE_MODE);
+                               continue;
+                       default:
+                               log_debug("unknown non-DEC (Re)Set-Mode %d",
+                                         vte->csi_argv[i]);
+                               continue;
+                       }
                }
 
                switch (vte->csi_argv[i]) {
@@ -887,6 +891,7 @@ static void csi_mode(struct kmscon_vte *vte, bool set)
                default:
                        log_debug("unknown DEC (Re)Set-Mode %d",
                                  vte->csi_argv[i]);
+                       continue;
                }
        }
 }