#!/usr/bin/perl -w # encode_all.pl - Don Yang (uguu.org) # # 2014-07-13 use strict; use constant BASE_OFFSET => 77; use constant PADDED_LENGTH => 1301; # Load source code open my $file, "< yoshino7_template.c" or die $!; my $code = join '', <$file>; close $file; # Load format templates my $a = join '', `perl encode.pl yoshino.txt`; my $b = join '', `perl encode.pl yoshinon.txt`; my $c = join '', `perl encode.pl zadkiel.txt`; $a =~ s/!\s*$//s; $b =~ s/!\s*$//s; $c =~ s/!\s*$//s; my $offset1 = BASE_OFFSET; my $offset2 = BASE_OFFSET + length($a); my $offset3 = $offset2 + length($b); my $total_length = length($a) + length($b) + length($c); if( $total_length > PADDED_LENGTH ) { die "Encoded text too large: $total_length < " . PADDED_LENGTH . "\n"; } $c .= 'z' x (PADDED_LENGTH - $total_length); # Build output string my $format_data = <<"EOT"; /* offset1 = $offset1 */ "$a" /* offset2 = $offset2 */ "$b" /* offset3 = $offset3 */ "$c" EOT # Write output $code =~ s,/\* FORMAT DATA \*/,$format_data, or die; $code =~ s,/\*OFFSET1\*/\d+,$offset1, or die; $code =~ s,/\*OFFSET2\*/\d+,$offset2, or die; $code =~ s,/\*OFFSET3\*/\d+,$offset3, or die; print $code;