Module Name: src Committed By: bouyer Date: Sun Nov 15 16:33:26 UTC 2015
Modified Files: src/usr.bin/tset [netbsd-6]: set.c Log Message: Pull up following revision(s) (requested by mlelstv in ticket #1308): usr.bin/tset/set.c: revision 1.18 Restore logic for setting the VERASE character. - use terminfo _unless_ the terminal does overstrike. - use terminfo data not only for an unset tty. To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.16.4.1 src/usr.bin/tset/set.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/tset/set.c diff -u src/usr.bin/tset/set.c:1.16 src/usr.bin/tset/set.c:1.16.4.1 --- src/usr.bin/tset/set.c:1.16 Mon Oct 3 12:36:32 2011 +++ src/usr.bin/tset/set.c Sun Nov 15 16:33:26 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: set.c,v 1.16 2011/10/03 12:36:32 roy Exp $ */ +/* $NetBSD: set.c,v 1.16.4.1 2015/11/15 16:33:26 bouyer Exp $ */ /*- * Copyright (c) 1991, 1993 @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__RCSID("$NetBSD: set.c,v 1.16 2011/10/03 12:36:32 roy Exp $"); +__RCSID("$NetBSD: set.c,v 1.16.4.1 2015/11/15 16:33:26 bouyer Exp $"); #include <err.h> #include <stdio.h> @@ -151,18 +151,20 @@ reset_mode(void) void set_control_chars(int erasechar, int intrchar, int killchar) { + int bs_char; + + if (key_backspace != NULL && key_backspace[1] == '\0') + bs_char = key_backspace[0]; + else + bs_char = 0; - if (mode.c_cc[VERASE] == 0 || erasechar != 0) { - if (erasechar == 0) { - if (over_strike && - key_backspace != NULL && - key_backspace[1] == '\0') - mode.c_cc[VERASE] = key_backspace[1]; - else - mode.c_cc[VERASE] = CERASE; - } else - mode.c_cc[VERASE] = erasechar; - } + if (erasechar == 0 && bs_char != 0 && !over_strike) + erasechar = -1; + if (erasechar < 0) + erasechar = (bs_char != 0) ? bs_char : CTRL('h'); + + if (mode.c_cc[VERASE] == 0 || erasechar != 0) + mode.c_cc[VERASE] = erasechar ? erasechar : CERASE; if (mode.c_cc[VINTR] == 0 || intrchar != 0) mode.c_cc[VINTR] = intrchar ? intrchar : CINTR;