summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Soltys <soltys@ziu.info>2016-07-27 00:57:01 +0200
committerMichal Soltys <soltys@ziu.info>2016-07-27 00:57:01 +0200
commitc2f2c51c53e91232e6f2aa686d734728ad703f9f (patch)
tree9a557156a60742c00ffa8001e94f710620f3983a
parent31d28eabc10967daf06ae6ac4959a59556f1e7ff (diff)
vconsole: don't do GIO_SCRNMAP / GIO_UNISCRNMAP
GIO_SCRNMAP / GIO_UNISCRNMAP are related to what setfont does with -m option - namely setting intermediate map from 8bit values into unicode values. This map is global, so single setfont invocation sets it for all applicable consoles. Furthermore calling GIO_SCRNMAP before GIO_UNISCRNMAP causes issues as the former corrupts values > 255 (UNI alone would be sufficient). The bug can be easily tested with the following conf: KEYMAP=pl FONT=LatArCyrHeb-16 FONT_MAP=8859-2
-rw-r--r--src/vconsole/vconsole-setup.c10
1 files changed, 0 insertions, 10 deletions
diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c
index 1118118450..abf3871fd8 100644
--- a/src/vconsole/vconsole-setup.c
+++ b/src/vconsole/vconsole-setup.c
@@ -192,8 +192,6 @@ static int font_load_and_wait(const char *vc, const char *font, const char *map,
*/
static void font_copy_to_all_vcs(int fd) {
struct vt_stat vcs = {};
- unsigned char map8[E_TABSZ];
- unsigned short map16[E_TABSZ];
struct unimapdesc unimapd;
_cleanup_free_ struct unipair* unipairs = NULL;
int i, r;
@@ -234,14 +232,6 @@ static void font_copy_to_all_vcs(int fd) {
cfo.height = vcs.v_active-1; /* tty1 == index 0 */
(void) ioctl(vcfd, KDFONTOP, &cfo);
- /* copy map of 8bit chars */
- if (ioctl(fd, GIO_SCRNMAP, map8) >= 0)
- (void) ioctl(vcfd, PIO_SCRNMAP, map8);
-
- /* copy map of 8bit chars -> 16bit Unicode values */
- if (ioctl(fd, GIO_UNISCRNMAP, map16) >= 0)
- (void) ioctl(vcfd, PIO_UNISCRNMAP, map16);
-
/* copy unicode translation table */
/* unimapd is a ushort count and a pointer to an
array of struct unipair { ushort, ushort } */