From 9fbf346368cea28f7f60a0edc1d493037e7c3e19 Mon Sep 17 00:00:00 2001 From: Tom Ross Date: Sat, 17 Oct 2009 06:07:50 +0000 Subject: Change lang_init() to take a source, destination, and count. Needed for translatable plugins. Minor stylist changes as well. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23221 a1c6a512-1295-4272-9138-f99709370657 --- apps/language.c | 31 +++++++++++++++---------------- apps/language.h | 4 ++-- apps/main.c | 4 ++-- 3 files changed, 19 insertions(+), 20 deletions(-) diff --git a/apps/language.c b/apps/language.c index cdcfbe19b2..fe9ad5e97d 100644 --- a/apps/language.c +++ b/apps/language.c @@ -43,23 +43,15 @@ #define HEADER_SIZE 4 static unsigned char language_buffer[MAX_LANGUAGE_SIZE]; - -void lang_init(void) -{ - int i; - unsigned char *ptr = (unsigned char *) language_builtin; - - for (i = 0; i < LANG_LAST_INDEX_IN_ARRAY; i++) { - language_strings[i] = ptr; - ptr += strlen((char *)ptr) + 1; /* advance pointer to next string */ - } -} - static unsigned char lang_options = 0; -int lang_is_rtl(void) +void lang_init(const unsigned char *builtin, unsigned char **dest, int count) { - return (lang_options & LANGUAGE_FLAG_RTL) != 0; + while(count--) { + *dest++ = (unsigned char *)builtin; + /* advance pointer to next string */ + builtin += strlen((char *)builtin) + 1; + } } int lang_load(const char *filename) @@ -79,7 +71,9 @@ int lang_load(const char *filename) read(fd, language_buffer, MAX_LANGUAGE_SIZE); unsigned char *ptr = language_buffer; int id; - lang_init(); /* initialize with builtin */ + /* initialize with builtin */ + lang_init(language_builtin, language_strings, + LANG_LAST_INDEX_IN_ARRAY); while(fsize>3) { id = (ptr[0]<<8) | ptr[1]; /* get two-byte id */ @@ -113,7 +107,7 @@ int lang_load(const char *filename) return retcode; } -int lang_english_to_id(const char* english) +int lang_english_to_id(const char *english) { int i; unsigned char *ptr = (unsigned char *) language_builtin; @@ -125,3 +119,8 @@ int lang_english_to_id(const char* english) } return -1; } + +int lang_is_rtl(void) +{ + return (lang_options & LANGUAGE_FLAG_RTL) != 0; +} diff --git a/apps/language.h b/apps/language.h index c2a1b70e18..4cfe2b22ce 100644 --- a/apps/language.h +++ b/apps/language.h @@ -22,13 +22,13 @@ ****************************************************************************/ /* Initialize language array with the builtin strings */ -void lang_init(void); +void lang_init(const unsigned char *builtin, unsigned char **dest, int count); /* load a given language file */ int lang_load(const char *filename); /* get the ID of an english string so it can be localised */ -int lang_english_to_id(const char* english); +int lang_english_to_id(const char *english); /* returns whether the loaded language is a right-to-left language */ int lang_is_rtl(void); diff --git a/apps/main.c b/apps/main.c index f48dd2d0a0..ca0cded351 100644 --- a/apps/main.c +++ b/apps/main.c @@ -312,7 +312,7 @@ static void init(void) button_init(); backlight_init(); sim_tasks_init(); - lang_init(); + lang_init(language_builtin, language_strings, LANG_LAST_INDEX_IN_ARRAY); #ifdef DEBUG debug_init(); #endif @@ -403,7 +403,7 @@ static void init(void) font_init(); show_logo(); - lang_init(); + lang_init(language_builtin, language_strings, LANG_LAST_INDEX_IN_ARRAY); #ifdef DEBUG debug_init(); -- cgit v1.2.3