
We require code page 437 both for text input and for the Unicode collation protocol. We should have the translation table to Unicode only once.
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de --- include/charset.h | 6 ++++++ lib/charset.c | 3 +++ lib/efi_loader/efi_unicode_collation.c | 3 +-- 3 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/include/charset.h b/include/charset.h index 686db5a1fe..32cc66bf5c 100644 --- a/include/charset.h +++ b/include/charset.h @@ -13,6 +13,12 @@
#define MAX_UTF8_PER_UTF16 3
+/** + * codepage_437[] - Unicode code points for characters 0x80-0xff of + * code page 437. + */ +extern const u16 codepage_437[]; + /** * utf8_get() - get next UTF-8 code point from buffer * diff --git a/lib/charset.c b/lib/charset.c index 72c808ce64..f7ec2d25d3 100644 --- a/lib/charset.c +++ b/lib/charset.c @@ -7,6 +7,7 @@
#include <charset.h> #include <capitalization.h> +#include <cp437.h> #include <malloc.h>
static struct capitalization_table capitalization_table[] = @@ -18,6 +19,8 @@ static struct capitalization_table capitalization_table[] = CP437_CAPITALIZATION_TABLE; #endif
+const u16 codepage_437[] = CP437; + s32 utf8_get(const char **src) { s32 code = 0; diff --git a/lib/efi_loader/efi_unicode_collation.c b/lib/efi_loader/efi_unicode_collation.c index 7f3ea3c77e..e005f345a9 100644 --- a/lib/efi_loader/efi_unicode_collation.c +++ b/lib/efi_loader/efi_unicode_collation.c @@ -8,7 +8,6 @@ #include <common.h> #include <charset.h> #include <cp1250.h> -#include <cp437.h> #include <efi_loader.h>
/* Characters that may not be used in file names */ @@ -23,7 +22,7 @@ static const char illegal[] = "<>:"/\|?*"; static const u16 codepage[] = CP1250; #else /* Unicode code points for code page 437 characters 0x80 - 0xff */ -static const u16 codepage[] = CP437; +static const u16 *codepage = codepage_437; #endif
/* GUID of the EFI_UNICODE_COLLATION_PROTOCOL */