summaryrefslogtreecommitdiffstats
path: root/discover/grub2
Commit message (Collapse)AuthorAgeFilesLines
...
* discover/grub2: Add linux16 commandJeremy Kerr2013-09-241-0/+4
| | | | Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Allow both delimiters and EOLs after a "then" reserved wordJeremy Kerr2013-09-241-2/+4
| | | | | | | | | | | Putting an if-statement on one line should be possible: if true; then echo "true"; else echo "false"; fi To do this, we'll need to allow both EOLs and TOKEN_DELIM after then and else. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Implement test builtinJeremy Kerr2013-09-241-1/+117
| | | | | | A faily simple implementation now, and could do with some testing... Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Add nops for unnecessary builtinsJeremy Kerr2013-09-241-0/+15
| | | | Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Implement statement_block_executeJeremy Kerr2013-09-243-1/+12
| | | | Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: unknown commands should failJeremy Kerr2013-09-241-1/+1
| | | | Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Populate option idsJeremy Kerr2013-09-241-0/+3
| | | | Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Allow EOF as a statement terminatorJeremy Kerr2013-09-241-1/+4
| | | | | | Files may not have a trailing newline. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Add print_tokenJeremy Kerr2013-09-241-0/+10
| | | | | | For better trace output. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: fix comment handlingJeremy Kerr2013-09-241-3/+2
| | | | | | | Remove '#' from the list of word chars. Also, don't need the '$' char in the comment regex Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Implement 'elif'Jeremy Kerr2013-09-243-9/+31
| | | | | | | Rather than just having one conditional in an if statement, we use a list of conditionals instead. This allows us to implement elif. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Create 'conditional' statementsJeremy Kerr2013-09-243-31/+65
| | | | | | | | Rather than holding the condition and conditional-statements in struct grub2_statment_if, create a new conditional type that contains these. We can then use this to implement elif statements. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Allow empty statementsJeremy Kerr2013-09-241-14/+12
| | | | | | | | Re-arrange the script/statements parse rules to allow empty statements. We also move the EOL token out of the 'statement' definition, and use it to separate 'statements'. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Implement submenuJeremy Kerr2013-09-242-0/+8
| | | | | | | Just recurse into the submenu items, as we flatten everything into the one menu. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Add function supportJeremy Kerr2013-09-243-0/+57
| | | | Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Improve error handlingJeremy Kerr2013-09-242-2/+6
| | | | | | | Only run the script if the parse succeeded, and and improve the error reporting by enabling verbose errors and line numbers. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Implement 'else' blocksJeremy Kerr2013-09-242-0/+10
| | | | Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Implement 'search' commandJeremy Kerr2013-09-241-0/+30
| | | | Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Implement 'linux' & 'initrd' commandsJeremy Kerr2013-09-243-10/+78
| | | | Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Function infrastructure improvementsJeremy Kerr2013-09-243-38/+52
| | | | | | | | For user-defined functions, we'll need a data pointer to the function's execution callback. Add this as a void *, and change references from 'command' to 'function'. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Add option state in menuentry processingJeremy Kerr2013-09-242-0/+17
| | | | | | | This will allow menuentry-specific commands to populate boot option data. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Add a reference to the context from grub2_scriptJeremy Kerr2013-09-243-10/+15
| | | | | | We'll need the context to add boot options. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Hook up flex/bison parser to discover serverJeremy Kerr2013-09-246-1/+196
| | | | Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Move parser-api definitions to parser.yJeremy Kerr2013-09-242-111/+109
| | | | | | No need for a separate file here. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Implement multiple-arv variable splittingJeremy Kerr2013-09-243-17/+101
| | | | | | | If we expand a variable containing word-delimiter chars, we need to create new argv items. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Add initial command executionJeremy Kerr2013-09-243-5/+144
| | | | | | .. with a simple 'set' command to update the environment Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Add menuentry executionJeremy Kerr2013-09-243-1/+16
| | | | Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Fix word appendJeremy Kerr2013-09-242-1/+5
| | | | | | | | The parser was setting word->next on the top-level word, resulting in word chains of a maximum length of 2. Instead, use a last pointer to always append to the last word. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Handle var tokens in lexerJeremy Kerr2013-09-244-75/+78
| | | | | | | Rather than post-processing to expand variables, use the lexer to identify variable tokens as a type of grub2_word. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Remove debug printfsJeremy Kerr2013-09-241-5/+0
| | | | Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Initial environment handlingJeremy Kerr2013-09-241-9/+26
| | | | | | A simple linked-list implementation of string pairs. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Add initial execution codeJeremy Kerr2013-09-243-3/+76
| | | | Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Fix statement reduce ruleJeremy Kerr2013-09-241-0/+1
| | | | Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Add var expansion codeJeremy Kerr2013-09-242-0/+99
| | | | | | Still todo: splitting. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Add initial script infrastructureJeremy Kerr2013-09-243-2/+22
| | | | | | | Now that we can parse scripts, we want some infrastructure for execution. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Use subclass-style structs for ASTJeremy Kerr2013-09-242-39/+41
| | | | | | | Use embedded 'struct grub2_statement' data to create a subclass-style syntax tree of statements. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Implement statement blocksJeremy Kerr2013-09-243-1/+22
| | | | Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Implement reduce rulesJeremy Kerr2013-09-242-31/+56
| | | | Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Add structures & API for parserJeremy Kerr2013-09-243-6/+156
| | | | Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Implement parserJeremy Kerr2013-09-241-1/+39
| | | | | | | | Add our simple parser to handle a grub2 script. Since we're not building a parse tree at the moment (we have no reduce rules), we just have a simple word-based %union for our tokens. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
* discover/grub2: Initial grub2 lexerJeremy Kerr2013-09-243-0/+186
Add a simple flex lexer to tokenise our grub2 config files. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
OpenPOWER on IntegriCloud