summaryrefslogtreecommitdiff
path: root/apps/language.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/language.c')
-rw-r--r--apps/language.c31
1 files changed, 15 insertions, 16 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 @@
43#define HEADER_SIZE 4 43#define HEADER_SIZE 4
44 44
45static unsigned char language_buffer[MAX_LANGUAGE_SIZE]; 45static unsigned char language_buffer[MAX_LANGUAGE_SIZE];
46
47void lang_init(void)
48{
49 int i;
50 unsigned char *ptr = (unsigned char *) language_builtin;
51
52 for (i = 0; i < LANG_LAST_INDEX_IN_ARRAY; i++) {
53 language_strings[i] = ptr;
54 ptr += strlen((char *)ptr) + 1; /* advance pointer to next string */
55 }
56}
57
58static unsigned char lang_options = 0; 46static unsigned char lang_options = 0;
59 47
60int lang_is_rtl(void) 48void lang_init(const unsigned char *builtin, unsigned char **dest, int count)
61{ 49{
62 return (lang_options & LANGUAGE_FLAG_RTL) != 0; 50 while(count--) {
51 *dest++ = (unsigned char *)builtin;
52 /* advance pointer to next string */
53 builtin += strlen((char *)builtin) + 1;
54 }
63} 55}
64 56
65int lang_load(const char *filename) 57int lang_load(const char *filename)
@@ -79,7 +71,9 @@ int lang_load(const char *filename)
79 read(fd, language_buffer, MAX_LANGUAGE_SIZE); 71 read(fd, language_buffer, MAX_LANGUAGE_SIZE);
80 unsigned char *ptr = language_buffer; 72 unsigned char *ptr = language_buffer;
81 int id; 73 int id;
82 lang_init(); /* initialize with builtin */ 74 /* initialize with builtin */
75 lang_init(language_builtin, language_strings,
76 LANG_LAST_INDEX_IN_ARRAY);
83 77
84 while(fsize>3) { 78 while(fsize>3) {
85 id = (ptr[0]<<8) | ptr[1]; /* get two-byte id */ 79 id = (ptr[0]<<8) | ptr[1]; /* get two-byte id */
@@ -113,7 +107,7 @@ int lang_load(const char *filename)
113 return retcode; 107 return retcode;
114} 108}
115 109
116int lang_english_to_id(const char* english) 110int lang_english_to_id(const char *english)
117{ 111{
118 int i; 112 int i;
119 unsigned char *ptr = (unsigned char *) language_builtin; 113 unsigned char *ptr = (unsigned char *) language_builtin;
@@ -125,3 +119,8 @@ int lang_english_to_id(const char* english)
125 } 119 }
126 return -1; 120 return -1;
127} 121}
122
123int lang_is_rtl(void)
124{
125 return (lang_options & LANGUAGE_FLAG_RTL) != 0;
126}