grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: default menuentry matching similar entries is broken


From: Andreas Vogel
Subject: Re: default menuentry matching similar entries is broken
Date: Sat, 03 Mar 2012 20:04:09 +0100
User-agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20120216 Thunderbird/10.0.2


Am 03.03.2012 19:20, schrieb Vladimir 'φ-coder/phcoder' Serbinenko:
> On 03.03.2012 19:10, Andreas Vogel wrote:
>>> Hi,
>>>
>>>    This code in menu.c::menuentry_eq() looks wrong:
>>>
>>> {
>>>    const char *ptr1, *ptr2;
>>>    ptr1 = title;
>>>    ptr2 = spec;
>>>    while (1)
>>>      {
>>>        if (*ptr2 == '>'&&  ptr2[1] != '>'&&  *ptr1 == 0)
>>>          return 1;
>>>        if (*ptr2 == '>'&&  ptr2[1] != '>')
>>>          return 0;
>>>        if (*ptr2 == '>')
>>>          ptr2++;
>>>        if (*ptr1 != *ptr2)
>>>          return 0;
>>>        if (*ptr1 == 0)<----
>>>          return 1;
>>>        ptr1++;
>>>        ptr2++;
>>>      }
>>> }
>>>
>>>
>>>    Specifically, if there are two menuentries that differ by adding
>>> characters, this function will match the wrong one, i.e.:
>>>
>>> set default='entry a with more words'
>>>
>>> menuentry "entry a" {
>>> }
>>>
>>> menuentry "entry a with more words" {
>>> }
>> As far as I understand the code, using submenu references in the default
>> variable for automatic booting is not working at all.
>> This is due to the dynamic loading of submenus. When a menu is opened
>> and run, only the direct menu entries are known. Searching for menu
>> entries deeper in the menu tree is not done.
> No need. When timeout is reached the submenu is executed and first
> element is discarded and the rest is searched for again.
>

I'm sorry... and you're right! Actually the code was too obfuscated for
me...

BTW, one of the features which are missing and about what i read in
different forums is that it's not possible to reference entries in the
menu tree by number, e.g. "0>2>4>2". By reading the code i would say
it's not possible, but after my failure right now, I better ask.... :-)






reply via email to

[Prev in Thread] Current Thread [Next in Thread]