Hi Vladimir,
  I don't know if l lose any update from you. Would you give me comments
about
  the latest hotkey patch?

  Summary of the patch:
  * allow function keys / delete / backspace to interrupt sleep and set
'hotkey' variable.
  * remove key aliases structure.
  * using grub_xasprintf instead of grub_snprintf
  * unset the 'hotkey' variable quickly when it is unneeded in
grub_menu_get_hotkey

  Many thanks!

Franz Hsieh

On Mon, Oct 14, 2013 at 2:02 PM, Franz Hsieh <franz.hs...@canonical.com>wrote:

> On 02.10.2013 10:50, Vladimir 'φ-coder/phcoder' Serbinenko wrote:
>
> >>* Hi, there*
> >>* *
> >>*   I had merged the patch for enabling hotkey in grub silent mode to*
> >>* grub-trunk.*
> >>*   The --function-key now has been removed from sleep.mod, now sleep.mod 
> >>will*
> >>*   monitor all function keys, delete, tab and backspace.*
> >>* *
>
> > Have you missed on-going opposition, discussion and improvement
> > proposals from me?
> > I was going to revert the patch but found out that you didn't actually
> > commit it, please see my comments to make it acceptable and don't push it.
>
> Sorry I did not say it clearly, I downloaded sources from grub-trunk, add my 
> changes,
> and finished the patch file. I haven't committed the patch to trunk yet.
>
> I looked at the codes, there is no ungetkey function to do like ungetc. So 
> currently
> I made it to read all keys but only accept function keys / delete / backspace 
> and Esc
> keys to interrupt the sleep thread.
>
> Only function keys / delete key / backspace key are allowed for hotkey
>
>
> and will be saved to the hotkey environment variable.
>
>
>
> On Wed, Oct 2, 2013 at 4:03 PM, Franz Hsieh <franz.hs...@canonical.com>wrote:
>
>> Hi, there
>>
>>   I had merged the patch for enabling hotkey in grub silent mode to
>> grub-trunk.
>>   The --function-key now has been removed from sleep.mod, now sleep.mod
>> will
>>   monitor all function keys, delete, tab and backspace.
>>
>> Thanks!
>>
>> Franz Hsieh
>>
>>
>> On Fri, Sep 13, 2013 at 5:18 PM, Franz Hsieh 
>> <franz.hs...@canonical.com>wrote:
>>
>>>
>>>
>>>
>>> On Wed, Sep 11, 2013 at 9:31 PM, Colin Watson <cjwat...@ubuntu.com>wrote:
>>>
>>>> Hi Franz,
>>>>
>>>> Throughout this patch, please take care to adhere to the GRUB coding
>>>> style.  This is definitely an improvement over previous versions I've
>>>> reviewed, but it still has a number of places where functions are called
>>>> or declared with no space before the opening parenthesis.  That is,
>>>> "function()" should become "function ()".  I know it's a minor point,
>>>> but it makes code much easier to read when it's all in the same style.
>>>>
>>>> On Wed, Sep 11, 2013 at 02:18:04PM +0100, Franz Hsieh (via Colin Watson)
>>>> wrote:
>>>> > +static struct
>>>> > +{
>>>> > +  char *name;
>>>> > +  int key;
>>>> > +} function_key_aliases[] =
>>>> > +  {
>>>> > +    {"f1", GRUB_TERM_KEY_F1},
>>>> > +    {"f2", GRUB_TERM_KEY_F2},
>>>> > +    {"f3", GRUB_TERM_KEY_F3},
>>>> > +    {"f4", GRUB_TERM_KEY_F4},
>>>> > +    {"f5", GRUB_TERM_KEY_F5},
>>>> > +    {"f6", GRUB_TERM_KEY_F6},
>>>> > +    {"f7", GRUB_TERM_KEY_F7},
>>>> > +    {"f8", GRUB_TERM_KEY_F8},
>>>> > +    {"f9", GRUB_TERM_KEY_F9},
>>>> > +    {"f10", GRUB_TERM_KEY_F10},
>>>> > +    {"f11", GRUB_TERM_KEY_F11},
>>>> > +    {"f12", GRUB_TERM_KEY_F12},
>>>> > +  };
>>>> > +
>>>>
>>>> This is essentially a copy of hotkey_aliases from
>>>> grub-core/commands/menuentry.c, and there's duplicated lookup code as
>>>> well.  Can you find any way to share it?  Since we certainly don't want
>>>> to put this in the kernel, and neither the sleep module nor the normal
>>>> module really ought to depend on the other, I suspect that doing so
>>>> would require a new module for shared menu code, which may well be
>>>> overkill for this, but it's worth a look.
>>>>
>>>
>>> I also agree to remove duplicate code, but seems not easy to do it unless
>>> we have a shared module, right? Well it would take me some time to
>>> evaluate.
>>>
>>> At the very least it would be a good idea to bring the contents of this
>>>> structure into sync with hotkey_aliases and add comments to encourage
>>>> developers to keep them that way.
>>>>
>>>> I think we should also call this kind of thing simply "hotkey"
>>>> consistently across the code, rather than it sometimes being
>>>> "function_key" or "fnkey".
>>>>
>>>
>>>
>>>>
>>>> > +      if (key == fnkey)
>>>> > +     {
>>>> > +       char hotkey[32] = {0};
>>>> > +       grub_snprintf(hotkey, 32, "%d", key);
>>>> > +       grub_env_set("hotkey", (char*)&hotkey);
>>>> > +       return 1;
>>>> > +     }
>>>>
>>>> We've generally tried to get rid of this kind of static allocation.  Use
>>>> grub_xasprintf instead:
>>>>
>>>>   if (key == fnkey)
>>>>     {
>>>>       char *hotkey = grub_xasprintf ("%d", key);
>>>>       grub_env_set ("hotkey", hotkey);
>>>>       grub_free (hotkey);
>>>>       return 1;
>>>>     }
>>>>
>>>> > +int
>>>> > +grub_menu_get_hotkey (void)
>>>>
>>>> This function is only used in this file, so it should be static.
>>>>
>>>
>>> These idea are good and I will do these changes in my patch.
>>>
>>> Rather than having to configure this explicitly, I have an alternative
>>>> suggestion, which ties into my earlier suggestion of making the hotkey
>>>> code a bit more shared.  Why not have sleep --interruptible look up the
>>>> hotkeys configured in the menu and automatically honour any of those?
>>>> That way you wouldn't have to configure hotkeys in two places (grub.cfg
>>>> and /etc/default/grub).  Plus, I'm always more comfortable with patches
>>>> that don't require adding configuration options.
>>>>
>>>
>>> Agree with Colin's points and I will update the patch.
>>> By the way I would like to combine --function-key and --interruptible. I
>>> think
>>> it is a simple way that sleep.mod always checks ESC for interrupt and
>>> f1~f12 for the
>>> hotkey.
>>>
>>> Thanks for your reviews and if there is any good suggestion, please feel
>>> free to tell me.
>>>
>>> Regards,
>>> Franz Hsieh
>>>
>>>
>>
>

Attachment: grub2-enable-hotkey-in-silent-mode.patch
Description: Binary data

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to