From 7dc8d754a26c88f376d67e63b1da1adf5e770817 Mon Sep 17 00:00:00 2001 From: Aidan MacDonald Date: Fri, 29 Mar 2024 00:27:11 +0000 Subject: Disable legacy codepage handling in bootloaders Turn off legacy codepage handling in the filesystem code for bootloaders, and support ISO-8859-1 (Latin-1) only. This only affects DOS 8.3 filename parsing when FAT32 long names are unavailable; long names are Unicode and can always be decoded properly regardless of this setting. In reality, bootloaders never supported codepages other than Latin-1 in the first place. They did contain the code to load codepages from disk, but had no way to actually change the codepage away from Latin-1. Compiling out this useless codepage handling code frees up precious space for very size-constrained bootloaders like the Sansa e200v2. Change-Id: I26b049dd648fed4a0cc61fa938faa84e9816ab7d --- firmware/common/file_internal.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'firmware/common') diff --git a/firmware/common/file_internal.c b/firmware/common/file_internal.c index a73d9beaa2..e4554670af 100644 --- a/firmware/common/file_internal.c +++ b/firmware/common/file_internal.c @@ -223,6 +223,7 @@ int test_dir_empty_internal(struct filestr_base *stream) /* iso decode the name to UTF-8 */ void iso_decode_d_name(char *d_name) { +#ifdef HAVE_FILESYSTEM_CODEPAGE if (is_dotdir_name(d_name)) return; @@ -232,6 +233,9 @@ void iso_decode_d_name(char *d_name) /* This MUST be the default codepage thus not something that could be loaded on call */ iso_decode(shortname, d_name, -1, len + 1); +#else + (void)d_name; +#endif } #ifdef HAVE_DIRCACHE -- cgit v1.2.3