m->menu_master_passwd = refstrdup(skipspace(p+6));
}
} else if ( (ep = looking_at(p, "include")) ) {
- p = skipspace(ep);
- parse_one_config(p);
+ goto do_include;
} else if ( (ep = looking_at(p, "background")) ) {
p = skipspace(ep);
refstr_put(m->menu_background);
m->fkeyhelp[fkeyno].background = refdup_word(&p);
}
} else if ( (ep = looking_at(p, "include")) ) {
- p = skipspace(ep);
- parse_one_config(p);
+ do_include:
+ {
+ const char *file;
+ p = skipspace(ep);
+ file = refdup_word(&p);
+ p = skipspace(p);
+ if (*p) {
+ record(m, &ld, append);
+ m = current_menu = begin_submenu(p);
+ parse_one_config(file);
+ record(m, &ld, append);
+ m = current_menu = end_submenu();
+ } else {
+ parse_one_config(file);
+ }
+ refstr_put(file);
+ }
} else if ( looking_at(p, "append") ) {
const char *a = refstrdup(skipspace(p+6));
if ( ld.label ) {
PASSWD can of course be set for this label.
-INCLUDE filename
-MENU INCLUDE filename
+INCLUDE filename [tagname]
+MENU INCLUDE filename [tagname]
Include the contents of the configuration file filename at
this point.
the menu system; the core syslinux code does not parse this
command, so any labels defined in it are unavailable.
+ If a tagname is included, the whole file is considered to have
+ been bracketed with a MENU BEGIN tagname ... MENU END pair,
+ and will therefore show up as a submenu.
+
MENU AUTOBOOT message