Commit f0a8d84f authored by Thomas Meyer's avatar Thomas Meyer Committed by Greg Kroah-Hartman
Browse files

vt: Use bsearch library function in is_double_width



Use bsearch library function instead of duplicated functionality.

Signed-off-by: default avatarThomas Meyer <thomas@m3y3r.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent a9be9270
Loading
Loading
Loading
Loading
+14 −15
Original line number Diff line number Diff line
@@ -102,6 +102,7 @@
#include <linux/uaccess.h>
#include <linux/kdb.h>
#include <linux/ctype.h>
#include <linux/bsearch.h>

#define MAX_NR_CON_DRIVER 16

@@ -2142,22 +2143,15 @@ struct interval {
	uint32_t last;
};

static int bisearch(uint32_t ucs, const struct interval *table, int max)
static int ucs_cmp(const void *key, const void *elt)
{
	int min = 0;
	int mid;
	uint32_t ucs = *(uint32_t *)key;
	struct interval e = *(struct interval *) elt;

	if (ucs < table[0].first || ucs > table[max].last)
		return 0;
	while (max >= min) {
		mid = (min + max) / 2;
		if (ucs > table[mid].last)
			min = mid + 1;
		else if (ucs < table[mid].first)
			max = mid - 1;
		else
	if (ucs > e.last)
		return 1;
	}
	else if (ucs < e.first)
		return -1;
	return 0;
}

@@ -2169,7 +2163,12 @@ static int is_double_width(uint32_t ucs)
		{ 0xFE10, 0xFE19 }, { 0xFE30, 0xFE6F }, { 0xFF00, 0xFF60 },
		{ 0xFFE0, 0xFFE6 }, { 0x20000, 0x2FFFD }, { 0x30000, 0x3FFFD }
	};
	return bisearch(ucs, double_width, ARRAY_SIZE(double_width) - 1);
	if (ucs < double_width[0].first ||
	    ucs > double_width[ARRAY_SIZE(double_width) - 1].last)
		return 0;

	return bsearch(&ucs, double_width, ARRAY_SIZE(double_width),
			sizeof(struct interval), ucs_cmp) != NULL;
}

static void con_flush(struct vc_data *vc, unsigned long draw_from,