diff options
author | Rob Clark | 2017-09-09 06:47:40 -0400 |
---|---|---|
committer | Tom Rini | 2017-09-12 17:57:59 -0400 |
commit | 78178bb0c9dfe2a91a636a411291d8bab50e8a7d (patch) | |
tree | 5c4ebb4800d57ca58b6b5a74948abec199215083 /lib/efi_loader/efi_console.c | |
parent | 4a85663ec7eddd955d22f1b0f34a9708eac82314 (diff) |
lib: add some utf16 handling helpers
We'll eventually want these in a few places in efi_loader, and also
vsprintf.
Signed-off-by: Rob Clark <robdclark@gmail.com>
Diffstat (limited to 'lib/efi_loader/efi_console.c')
-rw-r--r-- | lib/efi_loader/efi_console.c | 17 |
1 files changed, 3 insertions, 14 deletions
diff --git a/lib/efi_loader/efi_console.c b/lib/efi_loader/efi_console.c index 5ebce4b544d..3fc82b87261 100644 --- a/lib/efi_loader/efi_console.c +++ b/lib/efi_loader/efi_console.c @@ -7,6 +7,7 @@ */ #include <common.h> +#include <charset.h> #include <efi_loader.h> static bool console_size_queried; @@ -138,20 +139,8 @@ static efi_status_t EFIAPI efi_cout_reset( static void print_unicode_in_utf8(u16 c) { - char utf8[4] = { 0 }; - char *b = utf8; - - if (c < 0x80) { - *(b++) = c; - } else if (c < 0x800) { - *(b++) = 192 + c / 64; - *(b++) = 128 + c % 64; - } else { - *(b++) = 224 + c / 4096; - *(b++) = 128 + c / 64 % 64; - *(b++) = 128 + c % 64; - } - + char utf8[MAX_UTF8_PER_UTF16] = { 0 }; + utf16_to_utf8((u8 *)utf8, &c, 1); puts(utf8); } |