diff options
Diffstat (limited to 'apps/language.c')
-rw-r--r-- | apps/language.c | 31 |
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 | ||
45 | static unsigned char language_buffer[MAX_LANGUAGE_SIZE]; | 45 | static unsigned char language_buffer[MAX_LANGUAGE_SIZE]; |
46 | |||
47 | void 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 | |||
58 | static unsigned char lang_options = 0; | 46 | static unsigned char lang_options = 0; |
59 | 47 | ||
60 | int lang_is_rtl(void) | 48 | void 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 | ||
65 | int lang_load(const char *filename) | 57 | int 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 | ||
116 | int lang_english_to_id(const char* english) | 110 | int 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 | |||
123 | int lang_is_rtl(void) | ||
124 | { | ||
125 | return (lang_options & LANGUAGE_FLAG_RTL) != 0; | ||
126 | } | ||