diff options
author | Daniel Stenberg <daniel@haxx.se> | 2002-09-24 12:38:00 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2002-09-24 12:38:00 +0000 |
commit | e770bc8be0717199e244ffe3756d866f25831e25 (patch) | |
tree | df09b6dbe92de2f0d0c50b6acab7f8bb58dec1cf /tools | |
parent | 2da8e8e1959f8949e263f47f396fbc5eee9632c1 (diff) | |
download | rockbox-e770bc8be0717199e244ffe3756d866f25831e25.tar.gz rockbox-e770bc8be0717199e244ffe3756d866f25831e25.zip |
funny little script to generate a binary language file
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2386 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/binlang | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/tools/binlang b/tools/binlang new file mode 100755 index 0000000000..284dbf738e --- /dev/null +++ b/tools/binlang @@ -0,0 +1,107 @@ +#!/usr/bin/perl +############################################################################ +# __________ __ ___. +# Open \______ \ ____ ____ | | _\_ |__ _______ ___ +# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / +# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < +# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ +# \/ \/ \/ \/ \/ +# $Id$ +# +# Copyright (C) 2002 by Daniel Stenberg <daniel@haxx.se> +# +# 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. +# +############################################################################ + +if(!$ARGV[0] || !$ARGV[1] || !$ARGV[2]) { + print <<MOO +Usage: binlang <english file> <language file> <output file> + +Generate a binary language file. +MOO +; + exit; +} + +my $english = $ARGV[0]; +my $input = $ARGV[1]; +my $output = $ARGV[2]; + +my $idnum=0; + +open(ENG, "<$english"); +open(LANG, "<$input"); +open(OFILE, ">$output"); + +my $langversion = 1; + +printf OFILE ("\x1a%c", $langversion); # magic lang file header + +# +# We scan the english file to get the correct order of the id numbers +# +while(<ENG>) { + if($_ =~ / *\#/) { + # comment + next; + } + # get rid of DOS newlines + $_ =~ s/\r//g; + if($_ =~ / *([a-z]+): *(.*)/) { + ($var, $value) = ($1, $2); + $set{$var} = $value; + + if($var eq "new") { + # the last one for a single phrase + $idnum{$set{'id'}}=$idnum; + $idnum++; + undef %set; + } + } +} +close(ENG); + + +while(<LANG>) { + if($_ =~ / *\#/) { + # comment + next; + } + # get rid of DOS newlines + $_ =~ s/\r//g; + if($_ =~ / *([a-z]+): *(.*)/) { + ($var, $value) = ($1, $2); + # print "$var => $value\n"; + + $set{$var} = $value; + + if($var eq "new") { + # the last one for a single phrase + + if(!$value) { + # if not set, get the english version + $value = $set{'eng'}; + } + + $value =~ s/^\"(.*)\"/$1/g; + + $idnum = $idnum{$set{'id'}}; + + printf OFILE ("%c%c%s\x00", + ($idnum>>8), ($idnum&0xff), + $value); + + undef %set; + } + + } + +} +close(LANG); + +close(OFILE); |