Commit 9ec9b79a authored by Jiri Slaby's avatar Jiri Slaby Committed by Greg Kroah-Hartman
Browse files

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: default avatarJiri Slaby <jslaby@suse.cz>
Link: https://lore.kernel.org/r/20220607104946.18710-31-jslaby@suse.cz


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 1a086f5d
Loading
Loading
Loading
Loading
+16 −10
Original line number Diff line number Diff line
@@ -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;
@@ -870,16 +869,23 @@ 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)
	dict = *conp->vc_uni_pagedir_loc;
	if (!dict)
		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;
	dir = dict->uni_pgdir[UNI_DIR(ucs)];
	if (!dir)
		return -4;

	return -4;		/* not found */
	row = dir[UNI_ROW(ucs)];
	if (!row)
		return -4;

	glyph = row[UNI_GLYPH(ucs)];
	if (glyph >= MAX_GLYPH)
		return -4;

	return glyph;
}

/*