if (@ARGV != 1) {
print "usage: $0 encfile\n";
exit(1);
}
$file = shift(@ARGV);
open(FP, $file) || die "couldn't open input file `$file': $!\n";
$found = 0;
while (<FP>) {
if ($_ =~ /^-+$/) {
$found = 1;
last;
}
}
if (!$found) {
die "file `$file' is not a valid encoding file: couldn't find table\n";
}
$file =~ s/\.txt$//g;
$file =~ s/.*\///g;
print <<"EOF";
%
% $file encoding vector.
%
% This file is automatically generated from file \`$file.txt\'. If you
% have any corrections to this file, please, edit file \`$file.txt\' instead.
%
%
% This file is part of GNU enscript.
%
% 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, 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; see the file COPYING. If not, write to
% the Free Software Foundation, 59 Temple Place - Suite 330,
% Boston, MA 02111-1307, USA.
%
% -- code follows this line --
/encoding_vector [
EOF
$inum = 0;
$names_per_row = 4;
sub print_item {
($name) = @_;
printf("%-14s\t", $name);
if ((++$inum % $names_per_row) == 0) {
printf("\n");
}
}
while (<FP>) {
@cols = split;
if ($_ =~ /^\s*$/) {
next;
} elsif ($_ =~ /non-printable/) {
$fields{hex(@cols[1])} = "/.notdef";
} elsif (@cols[2] =~ /-/) {
$fields{hex(@cols[1])} = "/.notdef";
} else {
$fields{hex(@cols[1])} = @cols[2];
}
}
for ($i = 0; $i < 256; $i++) {
if (!defined($fields{$i})) {
print "* code $i is not defined, assuming `.notdef'\n";
$name = "/.notdef";
} else {
$name = $fields{$i};
}
print_item($name);
}
if (($inum % $names_per_row) != 0) {
printf("\n");
}
print "\] def\n";
close(FP);