patch-1.3.96 linux/arch/m68k/kernel/console.c
Next file: linux/arch/m68k/kernel/entry.S
Previous file: linux/arch/m68k/ifpsp060/iskeleton.S
Back to the patch index
Back to the overall index
- Lines: 37
- Date:
Fri Apr 26 10:30:50 1996
- Orig file:
v1.3.95/linux/arch/m68k/kernel/console.c
- Orig date:
Tue Apr 23 13:57:07 1996
diff -u --recursive --new-file v1.3.95/linux/arch/m68k/kernel/console.c linux/arch/m68k/kernel/console.c
@@ -1561,7 +1561,7 @@
where we really draw the chars */
if (count > 2 &&
- !decim && currcons == fg_console) {
+ !decim && !utf && currcons == fg_console) {
static char putcs_buf[256];
char *p = putcs_buf;
int putcs_count = 1;
@@ -1582,14 +1582,25 @@
while (count)
{
+ enable_bh(CONSOLE_BH);
c = from_user ? get_user(buf) : *buf;
+ disable_bh(CONSOLE_BH);
tc = translate[toggle_meta ? (c|0x80) : c];
if (!tc ||
!(c >= 32
- || (disp_ctrl && c != 0x1b)
- || !((CTRL_ACTION >> c) & 1)))
+ || !(((disp_ctrl ? CTRL_ALWAYS
+ : CTRL_ACTION) >> c) & 1)))
break;
+ tc = conv_uni_to_pc(tc);
+ if (tc == -4)
+ tc = conv_uni_to_pc(0xfffd);
+ else if (tc == -3)
+ tc = c;
+
buf++; n++; count--;
+ if (tc & ~console_charmask)
+ continue; /* Conversion failed */
+
*p++ = tc;
*pos++ = tc | (attr << 8);
++putcs_count;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov
with Sam's (original) version of this