diff options
author | David Cantrell <dcantrell@redhat.com> | 2008-08-25 17:13:37 -1000 |
---|---|---|
committer | David Cantrell <dcantrell@redhat.com> | 2008-08-25 17:13:37 -1000 |
commit | 80713e3f73e48856221c667f32b94b0a023ebecc (patch) | |
tree | aff4d9170fc24d2f1acc238a2d8908159a71d3dd /loader/simplemot | |
parent | ef5fbf7bc72572f3a6326b12f9187a5438e58e4c (diff) | |
download | anaconda-80713e3f73e48856221c667f32b94b0a023ebecc.tar.gz anaconda-80713e3f73e48856221c667f32b94b0a023ebecc.tar.xz anaconda-80713e3f73e48856221c667f32b94b0a023ebecc.zip |
Renamed loader2 subdirectory to loader (hooray for git)
Diffstat (limited to 'loader/simplemot')
-rwxr-xr-x | loader/simplemot | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/loader/simplemot b/loader/simplemot new file mode 100755 index 000000000..bebc1cfde --- /dev/null +++ b/loader/simplemot @@ -0,0 +1,81 @@ +#!/usr/bin/perl +# +# simplemot +# +# Copyright (C) 2007 Red Hat, Inc. All rights reserved. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# + +$inone = 0; +$intran = 0; +$total = 0; + +binmode(STDIN, ":raw"); +binmode(STDOUT, ":raw"); + +while (<>) { + if (!$inone && /^msgid/) { + chop; + $str = substr($_, 7, length($_) - 8); + $inone = 1; + } elsif ($inone && /^"/) { + chop; + $str .= substr($_, 1, length($_) - 2); + } elsif ($inone) { + $inone = 0; + + $str =~ s/\\n/\n/g; + $str =~ s/\\t/\t/g; + $str =~ s/\\"/"/g; + + # the string is complete -- calculate a hash + $sum = 0; + $xor = 0; + for ($i = 0; $i < length($str); $i++) { + $char = ord(substr($str, $i, 1)); + $sum += $char; + $xor ^= $char; + } + + $total = ($sum << 16) | (($xor & 0xFF) << 8) | (length($str) & 0xFF); + } + + if (!$intran && /^msgstr/) { + chop; + $tran = substr($_, 8, length($_) - 9); + $intran = 1; + } elsif ($intran && /^"/) { + chop; + $tran .= substr($_, 1, length($_) - 2); + } elsif ($intran) { + $intran = 0; + + $tran =~ s/\\n/\n/g; + $tran =~ s/\\t/\t/g; + $tran =~ s/\\"/"/g; + + if (!$total && $str) { + print STDERR "Missing string for $tran"; + exit 1 + } elsif ($str && $tran) { + print pack("Nn", $total, length($tran)); + print $tran; + + #if ($tran < 60) { + #printf STDERR ("0x%x %s\n", $total, $tran); + #} + } + } +} |