From 3425726cf33c2af84c9737a2501cd39517e42cdb Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Thu, 29 Mar 2012 00:05:22 +0100 Subject: [menu] Add menu commands Allow iPXE scripts to create menus. For example: #!ipxe menu iSCSI boot demonstration item install Install Fedora to ${root-path} item --default boot Boot from ${root-path} item shell Enter iPXE shell item exit Exit to BIOS choose label && goto ${label} :boot sanboot ${root-path} :install sanhook ${root-path} chain http://${next-server}/fedora.ipxe :shell shell :exit Inspired-by: Robin Smidsrød Tested-by: Robin Smidsrød Signed-off-by: Michael Brown --- src/core/parseopt.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/core') diff --git a/src/core/parseopt.c b/src/core/parseopt.c index 57140690b..432e856d0 100644 --- a/src/core/parseopt.c +++ b/src/core/parseopt.c @@ -26,6 +26,7 @@ FILE_LICENCE ( GPL2_OR_LATER ); #include #include #include +#include #include /** @file @@ -113,6 +114,29 @@ int parse_netdev ( const char *text, struct net_device **netdev ) { return 0; } +/** + * Parse menu name + * + * @v text Text + * @ret menu Menu + * @ret rc Return status code + */ +int parse_menu ( const char *text, struct menu **menu ) { + + /* Find menu */ + *menu = find_menu ( text ); + if ( ! *menu ) { + if ( text ) { + printf ( "\"%s\": no such menu\n", text ); + } else { + printf ( "No default menu\n" ); + } + return -ENOENT; + } + + return 0; +} + /** * Parse flag * -- cgit v1.2.3-55-g7522