menu: Add MENU GOTO support to the MENU DEFAULT parsing code
authorMatt Fleming <matt.fleming@intel.com>
Tue, 9 Oct 2012 12:45:00 +0000 (13:45 +0100)
committerMatt Fleming <matt.fleming@intel.com>
Tue, 9 Oct 2012 13:06:19 +0000 (14:06 +0100)
Tomas reported that the 'test1' submenu in the following config file
snippet doesn't honour the MENU DEFAULT directive,

    MENU BEGIN test0
       MENU START
       LABEL -
       MENU DEFAULT
       MENU LABEL OptionA
       MENU GOTO test1
    MENU END

    MENU BEGIN test1
       LABEL -
       MENU LABEL OptionA1
       MENU GOTO test0
       LABEL -
       MENU DEFAULT
       MENU LABEL OptionB1
       MENU GOTO test0
    MENU END

The reason is that the menu config code doesn't know how to handle a
default item that is a MENU GOTO directive. A trivial addition to the
code in record() fixes this.

Reported-by: Tomas M <tomas@slax.org>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
com32/menu/readconfig.c

index 0ac2564..431017f 100644 (file)
@@ -392,7 +392,9 @@ static void record(struct menu *m, struct labeldata *ld, const char *append)
            break;
        }
 
-       if (ld->menudefault && me->action == MA_CMD)
+       if (ld->menudefault && (me->action == MA_CMD ||
+                               me->action == MA_GOTO ||
+                               me->action == MA_GOTO_UNRES))
            m->defentry = m->nentries - 1;
     }