summaryrefslogtreecommitdiffstats
path: root/loader/simplemot
diff options
context:
space:
mode:
authorDavid Cantrell <dcantrell@redhat.com>2008-08-25 17:13:37 -1000
committerDavid Cantrell <dcantrell@redhat.com>2008-08-25 17:13:37 -1000
commit80713e3f73e48856221c667f32b94b0a023ebecc (patch)
treeaff4d9170fc24d2f1acc238a2d8908159a71d3dd /loader/simplemot
parentef5fbf7bc72572f3a6326b12f9187a5438e58e4c (diff)
downloadanaconda-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-xloader/simplemot81
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);
+ #}
+ }
+ }
+}