Remove flex/bison-generated states files from repository.
[enscript.git] / afmlib / make-encoding.pl
1 #!/usr/local/bin/perl
2 #
3 # Create encoding files from the `*.txt' encoding files.
4 # Copyright (c) 1995-1998 Markku Rossi.
5 # Author: Markku Rossi <mtr@iki.fi>
6 #
7
8 #
9 # This file is part of GNU Enscript.
10 #
11 # Enscript is free software: you can redistribute it and/or modify
12 # it under the terms of the GNU General Public License as published by
13 # the Free Software Foundation, either version 3 of the License, or
14 # (at your option) any later version.
15 #
16 # Enscript is distributed in the hope that it will be useful,
17 # but WITHOUT ANY WARRANTY; without even the implied warranty of
18 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 # GNU General Public License for more details.
20 #
21 # You should have received a copy of the GNU General Public License
22 # along with Enscript.  If not, see <http://www.gnu.org/licenses/>.
23 #
24
25 #
26 # Handle arguments
27 #
28
29 if (@ARGV != 1) {
30     print "usage: make-encoding.pl encfile\n";
31     exit(1);
32 }
33
34 $file = shift(@ARGV);
35
36 open(FP, $file) || die "couldn't open input file `$file': $!\n";
37
38 # Find the start of the table.
39 $found = 0;
40 while (<FP>) {
41     if ($_ =~ /^-+$/) {
42         $found = 1;
43         last;
44     }
45 }
46
47 if (!$found) {
48     die "file `$file' is not a valid encoding file: couldn't find table\n";
49 }
50
51 $file =~ s/\.txt$//g;
52 $file =~ s/.*\///g;
53
54 # Print header.
55
56 print <<"EOF";
57 /*
58  * AFM $file encoding.
59  *
60  * This file is automatically generated from file \`$file.txt\'.  If you
61  * have any corrections to this file, please, edit file \`$file.txt\' instead.
62  */
63
64 /*
65  * Enscript is free software: you can redistribute it and/or modify
66  * it under the terms of the GNU General Public License as published by
67  * the Free Software Foundation, either version 3 of the License, or
68  * (at your option) any later version.
69  *
70  * Enscript is distributed in the hope that it will be useful,
71  * but WITHOUT ANY WARRANTY; without even the implied warranty of
72  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
73  * GNU General Public License for more details.
74  *
75  * You should have received a copy of the GNU General Public License
76  * along with Enscript.  If not, see <http://www.gnu.org/licenses/>.
77  */
78
79 EOF
80
81 print "#include \"afmint.h\"\n\n";
82
83 printf("AFMEncodingTable afm_%s_encoding[] =\n{\n",
84        $file);
85
86 # Process file.
87 while (<FP>) {
88     @cols = split;
89     if ($_ =~ /^\s*$/) {
90         next;
91     } elsif ($_ =~ /non-printable/) {
92         print "  {@cols[1], AFM_ENC_NONE},\n";
93     } elsif (@cols[2] =~ /-/) {
94         print "  {@cols[1], AFM_ENC_NON_EXISTENT},\n";
95     } else {
96         $name = @cols[2];
97         $name =~ s/\///g;
98         print "  {@cols[1], \"$name\"},\n";
99     }
100 }
101
102 # Print trailer.
103
104 printf("  {-1,   NULL},\n};\n");
105
106 close(FP);