patch-2.0.17 linux/drivers/char/console.c
Next file: linux/drivers/char/ftape/fdc-io.c
Previous file: linux/drivers/cdrom/sbpcd.c
Back to the patch index
Back to the overall index
- Lines: 58
- Date:
Mon Sep 2 08:41:25 1996
- Orig file:
v2.0.16/linux/drivers/char/console.c
- Orig date:
Thu Aug 29 19:15:14 1996
diff -u --recursive --new-file v2.0.16/linux/drivers/char/console.c linux/drivers/char/console.c
@@ -1433,34 +1433,34 @@
tc = translate[toggle_meta ? (c|0x80) : c];
}
- /* If the original code was < 32 we only allow a
- * glyph to be displayed if the code is not normally
- * used (such as for cursor movement) or if the
- * disp_ctrl mode has been explicitly enabled.
- * Note: ESC is *never* allowed to be displayed as
- * that would disable all escape sequences!
- * To display font position 0x1B, go into UTF mode
- * and display character U+F01B, or change the mapping.
- */
- ok = (tc && (c >= 32 || (!utf && !(((disp_ctrl ? CTRL_ALWAYS
- : CTRL_ACTION) >> c) & 1))));
+ /* If the original code was a control character we
+ * only allow a glyph to be displayed if the code is
+ * not normally used (such as for cursor movement) or
+ * if the disp_ctrl mode has been explicitly enabled.
+ * Certain characters (as given by the CTRL_ALWAYS
+ * bitmap) are always displayed as control characters,
+ * as the console would be pretty useless without
+ * them; to display an arbitrary font position use the
+ * direct-to-font zone in UTF-8 mode.
+ */
+ ok = tc && (c >= 32 ||
+ (!utf && !(((disp_ctrl ? CTRL_ALWAYS
+ : CTRL_ACTION) >> c) & 1)))
+ && (c != 127 || disp_ctrl);
if (vc_state == ESnormal && ok) {
/* Now try to find out how to display it */
tc = conv_uni_to_pc(tc);
- if ( tc == -4 )
- {
- /* If we got -4 (not found) then see if we have
- defined a replacement character (U+FFFD) */
- tc = conv_uni_to_pc(0xfffd);
- }
- else if ( tc == -3 )
- {
- /* Bad hash table -- hope for the best */
- tc = c;
- }
+ if ( tc == -4 ) {
+ /* If we got -4 (not found) then see if we have
+ defined a replacement character (U+FFFD) */
+ tc = conv_uni_to_pc(0xfffd);
+ } else if ( tc == -3 ) {
+ /* Bad hash table -- hope for the best */
+ tc = c;
+ }
if (tc & ~console_charmask)
- continue; /* Conversion failed */
+ continue; /* Conversion failed */
if (need_wrap) {
cr(currcons);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov