vte: fix up SM/RM modes

The ANSI and DEC modes overlap so fix up parsing of flags.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This commit is contained in:
David Herrmann 2012-05-29 15:27:50 +02:00
parent 5b84906662
commit 8f9270822c

View File

@ -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;
}
}
}