From 32bfc9940c4e35807979b739aa824e4867c13987 Mon Sep 17 00:00:00 2001 From: Björn Stenberg Date: Tue, 14 Jan 2003 14:49:19 +0000 Subject: Added unicode conversion from cyrillic, greek, hebrew, arabic and thai. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3086 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/fat.c | 48 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 7 deletions(-) (limited to 'firmware/drivers/fat.c') diff --git a/firmware/drivers/fat.c b/firmware/drivers/fat.c index a5b900216b..f468111278 100644 --- a/firmware/drivers/fat.c +++ b/firmware/drivers/fat.c @@ -1576,6 +1576,40 @@ int fat_opendir(struct fat_dir *dir, unsigned int startcluster) return 0; } +/* convert from unicode to a single-byte charset */ +void unicode2iso(unsigned char* unicode, unsigned char* iso, int count ) +{ + int i; + + for (i=0; i=0; j--) { unsigned char* ptr = cached_buf; @@ -1670,12 +1704,12 @@ int fat_getnext(struct fat_dir *dir, struct fat_direntry *entry) /* names are stored in unicode, but we only grab the low byte (iso8859-1). */ - for (k=0; k<5; k++) - entry->name[l++] = ptr[index + k*2 + 1]; - for (k=0; k<6; k++) - entry->name[l++] = ptr[index + k*2 + 14]; - for (k=0; k<2; k++) - entry->name[l++] = ptr[index + k*2 + 28]; + unicode2iso(ptr + index + 1, entry->name + l, 5); + l+= 5; + unicode2iso(ptr + index + 14, entry->name + l, 6); + l+= 6; + unicode2iso(ptr + index + 28, entry->name + l, 2); + l+= 2; } entry->name[l]=0; } -- cgit v1.2.3