From 8577fec976c58a0bd1c2c767f9dba058043624f4 Mon Sep 17 00:00:00 2001 From: Rob Herring Date: Sun, 2 Dec 2012 21:00:27 -0600 Subject: pxe: add support for ontimeout token ontimeout is similar to default, but is the selection on menu timeout. This is how cobbler sets a default. The label default is supposed to be the default selection when is pressed. If both default and ontimeout are set, last one parsed wins. Signed-off-by: Rob Herring --- common/cmd_pxe.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'common/cmd_pxe.c') diff --git a/common/cmd_pxe.c b/common/cmd_pxe.c index 079d2265818..5a239edebe6 100644 --- a/common/cmd_pxe.c +++ b/common/cmd_pxe.c @@ -672,6 +672,7 @@ enum token_type { T_PROMPT, T_INCLUDE, T_FDT, + T_ONTIMEOUT, T_INVALID }; @@ -700,6 +701,7 @@ static const struct token keywords[] = { {"initrd", T_INITRD}, {"include", T_INCLUDE}, {"fdt", T_FDT}, + {"ontimeout", T_ONTIMEOUT,}, {NULL, T_INVALID} }; @@ -997,10 +999,8 @@ static int parse_label_menu(char **c, struct pxe_menu *cfg, switch (t.type) { case T_DEFAULT: - if (cfg->default_label) - free(cfg->default_label); - - cfg->default_label = strdup(label->name); + if (!cfg->default_label) + cfg->default_label = strdup(label->name); if (!cfg->default_label) return -ENOMEM; @@ -1159,6 +1159,7 @@ static int parse_pxefile_top(char *p, struct pxe_menu *cfg, int nest_level) break; case T_DEFAULT: + case T_ONTIMEOUT: err = parse_sliteral(&p, &label_name); if (label_name) { @@ -1280,7 +1281,7 @@ static struct menu *pxe_menu_to_menu(struct pxe_menu *cfg) return NULL; } if (cfg->default_label && - (strcmp(label->name, cfg->default_label) == 0)) + (strcmp(label->name, cfg->default_label) == 0)) default_num = label->num; } -- cgit v1.2.3