Adjust memory layout for 2.6.22+ kernels with 32KB setup code
[mknbi.git] / menuc.pl
1 #!/usr/bin/perl -w
2
3 # Program to compile a menu description into a binary file
4 # Placed under GNU Public License by Ken Yap, January 2001
5
6 # This Perl program requires Parse::RecDescent
7 # If you cannot install this module in the standard directory, then
8 # install RecDescent.pm in a directory that you can in and
9 # edit the line below to include this directory in the search path.
10 #
11 # BEGIN {
12 #       push(@INC, '/usr/local/lib/mknbi');
13 # }
14
15 use strict;
16 use Getopt::Long;
17 use Socket;
18
19 use Parse::RecDescent;
20
21 use constant;
22 use constant DEBUG => 0;
23 use constant MAXINPUT => 102400;
24
25 use vars qw($output $status $text $grammar $parser $result);
26
27 $grammar = q(
28         specs:          spec(s?) eofile
29                 { $return = 1 }
30         spec:           global_option | menu | <error>
31         global_option:  timeout
32         timeout:        'timeout' number ';'
33         number:         'number'
34         menu:           'menu' name '{' menu_body '}'
35         name:           'name'
36         menu_body:      'title' strings ';'
37                         | menu_option
38                         | items
39         strings:        string(s)
40         string:         <perl_quotelike>
41         menu_option:    timeout
42         items:          item(s)
43         item:           'item'
44         eofile:         /^\Z/
45 );
46
47 $::RD_HINT = 1;
48
49 GetOptions('output=s' => \$output);
50
51 # If an output file is specified, redirect stdout to it
52 if (defined($output)) {
53         die "$output: $!\n" unless open(STDOUT, ">$output");
54 }
55 binmode(STDOUT);
56
57 # If an input file is specified, redirect stdin from it
58 if ($#ARGV >= 0) {
59         die "$ARGV[0]: $!\n" unless open(STDIN, "$ARGV[0]");
60 }
61
62 print "Menuc doesn't work yet\n";
63
64 $parser = new Parse::RecDescent($grammar);
65
66 # Read up to the maximum number of bytes allowed in a specification
67 $status = read(STDIN, $text, MAXINPUT);
68 die "read: $!\n" unless defined($status);
69
70 $result = $parser->specs($text);
71 unless (defined($result)) {
72         print "Syntax error in specification\n";
73 }
74 __END__
75
76 =head1 NAME
77
78 menuc - compile a menu description into a binary file
79
80 =head1 SYNOPSIS
81
82 B<menuc> [--output=I<outputfile>] [I<inputfile>]
83
84 =head1 DESCRIPTION
85
86 B<menuc> compiles menu descriptions to data file suitable for
87 interpretation by an Etherboot menu extension program.
88
89 B<--output=>I<outputfile> Specify the output file, can be used with
90 all variants.  Stdout is the default.
91
92 The package must be installed in the destination location before the
93 executables can be run, because it looks for library files.
94
95 =head1 BUGS
96
97 Please report all bugs to the author.
98
99 =head1 SEE ALSO
100
101 Etherboot tutorial at C<http://etherboot.sourceforge.net/>
102
103 =head1 COPYRIGHT
104
105 B<menuc> is under the GNU Public License
106
107 =head1 AUTHOR
108
109 Ken Yap (C<ken_yap@users.sourceforge.net>)
110
111 =head1 DATE
112
113 Version 0.9 January 2001