tty/vt: consolemap: make conv_uni_to_pc() more readable
1) Fetch *conp->vc_uni_pagedir_loc first and do the NULL check on the local variable. 2) Decouple the large "if" into few smaller "if"s. 3) Remove a \n from the definition line. This makes the code more readable. Signed-off-by: Jiri Slaby <jslaby@suse.cz> Link: https://lore.kernel.org/r/20220607104946.18710-31-jslaby@suse.cz Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
1a086f5d63
commit
9ec9b79a2b
@ -849,8 +849,7 @@ int conv_uni_to_8bit(u32 uni)
|
||||
return -1;
|
||||
}
|
||||
|
||||
int
|
||||
conv_uni_to_pc(struct vc_data *conp, long ucs)
|
||||
int conv_uni_to_pc(struct vc_data *conp, long ucs)
|
||||
{
|
||||
struct uni_pagedict *dict;
|
||||
u16 **dir, *row, glyph;
|
||||
@ -869,17 +868,24 @@ conv_uni_to_pc(struct vc_data *conp, long ucs)
|
||||
*/
|
||||
else if ((ucs & ~UNI_DIRECT_MASK) == UNI_DIRECT_BASE)
|
||||
return ucs & UNI_DIRECT_MASK;
|
||||
|
||||
if (!*conp->vc_uni_pagedir_loc)
|
||||
return -3;
|
||||
|
||||
dict = *conp->vc_uni_pagedir_loc;
|
||||
if ((dir = dict->uni_pgdir[UNI_DIR(ucs)]) &&
|
||||
(row = dir[UNI_ROW(ucs)]) &&
|
||||
(glyph = row[UNI_GLYPH(ucs)]) < MAX_GLYPH)
|
||||
return glyph;
|
||||
if (!dict)
|
||||
return -3;
|
||||
|
||||
return -4; /* not found */
|
||||
dir = dict->uni_pgdir[UNI_DIR(ucs)];
|
||||
if (!dir)
|
||||
return -4;
|
||||
|
||||
row = dir[UNI_ROW(ucs)];
|
||||
if (!row)
|
||||
return -4;
|
||||
|
||||
glyph = row[UNI_GLYPH(ucs)];
|
||||
if (glyph >= MAX_GLYPH)
|
||||
return -4;
|
||||
|
||||
return glyph;
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
x
Reference in New Issue
Block a user