summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/language.c57
1 files changed, 28 insertions, 29 deletions
diff --git a/apps/language.c b/apps/language.c
index a4b2b0dabc..614a4869d5 100644
--- a/apps/language.c
+++ b/apps/language.c
@@ -27,44 +27,43 @@ static unsigned char language_buffer[MAX_LANGUAGE_SIZE];
27 27
28void lang_load(char *filename) 28void lang_load(char *filename)
29{ 29{
30 int filesize; 30 int filesize;
31 int fd = open(filename, O_RDONLY); 31 int fd = open(filename, O_RDONLY);
32 if(fd == -1) 32 if(fd == -1)
33 return; 33 return;
34 filesize = read(fd, language_buffer, MAX_LANGUAGE_SIZE); 34 filesize = read(fd, language_buffer, MAX_LANGUAGE_SIZE);
35 if(filesize != MAX_LANGUAGE_SIZE) { 35 if(filesize != MAX_LANGUAGE_SIZE) {
36 if((language_buffer[0] == LANGUAGE_COOKIE) && 36 if((language_buffer[0] == LANGUAGE_COOKIE) &&
37 (language_buffer[1] == LANGUAGE_VERSION)) { 37 (language_buffer[1] == LANGUAGE_VERSION)) {
38 unsigned char *ptr=&language_buffer[2]; 38 unsigned char *ptr=&language_buffer[2];
39 int id; 39 int id;
40 filesize-=2; 40 filesize-=2;
41 41
42 while(filesize>3) { 42 while(filesize>3) {
43 id = (ptr[0]<<8) | ptr[1]; 43 id = (ptr[0]<<8) | ptr[1];
44 ptr+=2; 44 ptr+=2;
45 language_strings[id] = ptr; 45 language_strings[id] = ptr;
46 while(*ptr) { 46 while(*ptr) {
47 filesize--; 47 filesize--;
48 ptr++; 48 ptr++;
49 }
50 filesize-=3;
51 ptr++; /* pass the terminating newline */
52 }
53 }
54 else {
55 DEBUGF("Illegal language file\n");
49 } 56 }
50 filesize-=3;
51 ptr++; /* pass the terminating newline */
52 }
53
54 } 57 }
55 else { 58 else {
56 DEBUGF("Illegal language file\n"); 59 DEBUGF("Language %s too large: %d\n", filename, filesize);
57 } 60 }
58 } 61 close(fd);
59 else {
60 DEBUGF("Language %s too large: %d\n", filename, filesize);
61 }
62 close(fd);
63} 62}
64 63
65/* ----------------------------------------------------------------- 64/* -----------------------------------------------------------------
66 * local variables: 65 * local variables:
67 * eval: (load-file "../firmware/rockbox-mode.el") 66 * eval: (load-file "../firmware/rockbox-mode.el")
68 * vim: et sw=4 ts=8 sts=4 tw=78
69 * end: 67 * end:
68 * vim: et sw=4 ts=8 sts=4 tw=78
70 */ 69 */