diff options
| author | Daniel Stenberg <daniel@haxx.se> | 2002-09-24 12:39:33 +0000 |
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2002-09-24 12:39:33 +0000 |
| commit | 8d38c965ddbb0cd34189626a0002d33f1a9d1d2d (patch) | |
| tree | da9a25ff32b7e783bdacd0eec54f625c296ab9a9 /apps/language.c | |
| parent | a4d9fe3954e0f92b806c6b05851bf43825cad5ad (diff) | |
| download | rockbox-8d38c965ddbb0cd34189626a0002d33f1a9d1d2d.zip rockbox-8d38c965ddbb0cd34189626a0002d33f1a9d1d2d.tar.gz rockbox-8d38c965ddbb0cd34189626a0002d33f1a9d1d2d.tar.bz2 rockbox-8d38c965ddbb0cd34189626a0002d33f1a9d1d2d.tar.xz | |
binary language load support
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2388 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/language.c')
| -rw-r--r-- | apps/language.c | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/apps/language.c b/apps/language.c new file mode 100644 index 0000000..a4b2b0d --- /dev/null +++ b/apps/language.c @@ -0,0 +1,70 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (C) 2002 Daniel Stenberg + * + * All files in this archive are subject to the GNU General Public License. + * See the file COPYING in the source tree root for full license agreement. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ****************************************************************************/ + +#include <file.h> + +#include "language.h" +#include "lang.h" +#include "debug.h" + +static unsigned char language_buffer[MAX_LANGUAGE_SIZE]; + +void lang_load(char *filename) +{ + int filesize; + int fd = open(filename, O_RDONLY); + if(fd == -1) + return; + filesize = read(fd, language_buffer, MAX_LANGUAGE_SIZE); + if(filesize != MAX_LANGUAGE_SIZE) { + if((language_buffer[0] == LANGUAGE_COOKIE) && + (language_buffer[1] == LANGUAGE_VERSION)) { + unsigned char *ptr=&language_buffer[2]; + int id; + filesize-=2; + + while(filesize>3) { + id = (ptr[0]<<8) | ptr[1]; + ptr+=2; + language_strings[id] = ptr; + while(*ptr) { + filesize--; + ptr++; + } + filesize-=3; + ptr++; /* pass the terminating newline */ + } + + } + else { + DEBUGF("Illegal language file\n"); + } + } + else { + DEBUGF("Language %s too large: %d\n", filename, filesize); + } + close(fd); +} + +/* ----------------------------------------------------------------- + * local variables: + * eval: (load-file "../firmware/rockbox-mode.el") + * vim: et sw=4 ts=8 sts=4 tw=78 + * end: + */ |