diff options
author | Daniel Stenberg <daniel@haxx.se> | 2007-08-10 22:04:47 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2007-08-10 22:04:47 +0000 |
commit | 3dabc565d995a34e0727a7c9980bbac6cc0d6e7b (patch) | |
tree | 8b9e6e4499fe2243247cecc8c6f9cd31a017a0a6 /tools/lngdump.c | |
parent | ffeaea65c8c2e90c6baea06bd94adc0292a90b90 (diff) |
tiny tool to help with dumping a binary lng file to the screen to make it
easier to compare with the generated lang.[ch]
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14272 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'tools/lngdump.c')
-rw-r--r-- | tools/lngdump.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/tools/lngdump.c b/tools/lngdump.c new file mode 100644 index 0000000000..f304fc8521 --- /dev/null +++ b/tools/lngdump.c @@ -0,0 +1,50 @@ +#include <stdio.h> +#include <sys/stat.h> +#include <fcntl.h> + +#define MAX_LANGUAGE_SIZE 20000 + +static char language_buffer[MAX_LANGUAGE_SIZE]; + +int lang_load(const char *filename) +{ + int fsize; + int fd = open(filename, O_RDONLY); + int retcode=0; + unsigned char lang_header[3]; + if(fd == -1) + return 1; + if(3 == read(fd, lang_header, 3)) { + unsigned char *ptr = language_buffer; + int id; + printf("%02x %02x %02x\n", + lang_header[0], lang_header[1], lang_header[2]); + + fsize = read(fd, language_buffer, MAX_LANGUAGE_SIZE); + + while(fsize>3) { + id = (ptr[0]<<8) | ptr[1]; /* get two-byte id */ + ptr+=2; /* pass the id */ + if(id < 2000) { + printf("%03d %s\n", id, ptr); + } + while(*ptr) { /* pass the string */ + fsize--; + ptr++; + } + fsize-=3; /* the id and the terminating zero */ + ptr++; /* pass the terminating zero-byte */ + } + } + close(fd); + return retcode; +} + +int main(int argc, char **argv) +{ + if(argc < 2) { + printf("Usage: lngdump <lng file>\n"); + return 2; + } + lang_load(argv[1]); +} |