From 129cda95361fe74d795cd4ea2b17a4281a625f5d Mon Sep 17 00:00:00 2001 From: Boris Faure Date: Thu, 4 Jun 2020 23:27:10 +0200 Subject: [PATCH] termiolink: switch case is better than broken bsearch (list was not correctly sorted) --- src/bin/termiolink.c | 95 ++++++++++++++++++++------------------------ 1 file changed, 42 insertions(+), 53 deletions(-) diff --git a/src/bin/termiolink.c b/src/bin/termiolink.c index c4bc1129..524e33ad 100644 --- a/src/bin/termiolink.c +++ b/src/bin/termiolink.c @@ -661,60 +661,49 @@ __attribute__((const)) static Eina_Bool _is_authorized_in_color(const int codepoint) { - static const Eina_Unicode authorized[] = { - '\t', - ' ', - '#', - '(', - ')', - '+', - ',', - '/', - '0', - '1', - '2', - '3', - '4', - '5', - '6', - '7', - '8', - '9', - ':', - 'A', - 'B', - 'C', - 'D', - 'E', - 'F', - 'a', - 'b', - 'c', - 'd', - 'e', - 'f', - 'g', - 'h', - 'l', - 'n', - 'o', - 'r', - 's', - 't', - 'u', - }; - size_t imax = (sizeof(authorized) / sizeof(authorized[0])) - 1, - imin = 0; - size_t imaxmax = imax; - - while (imax >= imin) + switch (codepoint) { - size_t imid = (imin + imax) / 2; - - if (authorized[imid] == codepoint) return EINA_TRUE; - else if (authorized[imid] < codepoint) imin = imid + 1; - else imax = imid - 1; - if (imax > imaxmax) break; + case '\t': return EINA_TRUE; + case ' ': return EINA_TRUE; + case '#': return EINA_TRUE; + case '(': return EINA_TRUE; + case ')': return EINA_TRUE; + case '+': return EINA_TRUE; + case ',': return EINA_TRUE; + case '.': return EINA_TRUE; + case '/': return EINA_TRUE; + case '0': return EINA_TRUE; + case '1': return EINA_TRUE; + case '2': return EINA_TRUE; + case '3': return EINA_TRUE; + case '4': return EINA_TRUE; + case '5': return EINA_TRUE; + case '6': return EINA_TRUE; + case '7': return EINA_TRUE; + case '8': return EINA_TRUE; + case '9': return EINA_TRUE; + case ':': return EINA_TRUE; + case 'A': return EINA_TRUE; + case 'B': return EINA_TRUE; + case 'C': return EINA_TRUE; + case 'D': return EINA_TRUE; + case 'E': return EINA_TRUE; + case 'F': return EINA_TRUE; + case 'a': return EINA_TRUE; + case 'b': return EINA_TRUE; + case 'c': return EINA_TRUE; + case 'd': return EINA_TRUE; + case 'e': return EINA_TRUE; + case 'f': return EINA_TRUE; + case 'g': return EINA_TRUE; + case 'h': return EINA_TRUE; + case 'l': return EINA_TRUE; + case 'n': return EINA_TRUE; + case 'o': return EINA_TRUE; + case 'r': return EINA_TRUE; + case 's': return EINA_TRUE; + case 't': return EINA_TRUE; + case 'u': return EINA_TRUE; } return EINA_FALSE; }