Merge mainline into keylayouts
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Wed, 18 Aug 2010 20:28:47 +0000 (22:28 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Wed, 18 Aug 2010 20:28:47 +0000 (22:28 +0200)
18 files changed:
1  2 
commands/cat.c
conf/common.rmk
include/grub/term.h
kern/i386/pc/startup.S
kern/rescue_reader.c
kern/term.c
lib/crypto.c
normal/auth.c
normal/cmdline.c
normal/main.c
normal/menu.c
normal/menu_entry.c
term/at_keyboard.c
term/i386/pc/console.c
term/usb_keyboard.c
util/grub-fstest.c
util/grub-probe.c
util/i386/pc/grub-setup.c

diff --cc commands/cat.c
Simple merge
diff --cc conf/common.rmk
Simple merge
  #define GRUB_TERM_HEADER      1
  
  /* Internal codes used by GRUB to represent terminal input.  */
 -#define GRUB_TERM_LEFT                2
 -#define GRUB_TERM_RIGHT               6
 -#define GRUB_TERM_UP          16
 -#define GRUB_TERM_DOWN                14
 -#define GRUB_TERM_HOME                1
 -#define GRUB_TERM_END         5
 -#define GRUB_TERM_DC          4
 -#define GRUB_TERM_PPAGE               7
 -#define GRUB_TERM_NPAGE               3
 +#define GRUB_TERM_CTRL          0x02000000
 +#define GRUB_TERM_ALT           0x04000000
 +/* Used by keylayouts code. Never returned in grub_getkey.  */
 +#define GRUB_TERM_ALT_GR        0x08000000
 +#define GRUB_TERM_CAPS          0x10000000
 +
 +/* Keys without associated character.  */
 +#define GRUB_TERM_EXTENDED      0x1000000
 +#define GRUB_TERM_KEY_MASK      0x1ffffff
 +#define GRUB_TERM_KEY_LEFT      (GRUB_TERM_EXTENDED | 1)
 +#define GRUB_TERM_KEY_RIGHT     (GRUB_TERM_EXTENDED | 2)
 +#define GRUB_TERM_KEY_UP        (GRUB_TERM_EXTENDED | 3)
 +#define GRUB_TERM_KEY_DOWN      (GRUB_TERM_EXTENDED | 4)
 +#define GRUB_TERM_KEY_HOME      (GRUB_TERM_EXTENDED | 5)
 +#define GRUB_TERM_KEY_END       (GRUB_TERM_EXTENDED | 6)
 +#define GRUB_TERM_KEY_DC        (GRUB_TERM_EXTENDED | 7)
 +#define GRUB_TERM_KEY_PPAGE     (GRUB_TERM_EXTENDED | 8)
 +#define GRUB_TERM_KEY_NPAGE     (GRUB_TERM_EXTENDED | 9)
++
 +/* Used by keylayouts code. Never returned in grub_getkey.  */
 +#define GRUB_TERM_KEY_102       (GRUB_TERM_EXTENDED | 10)
 +#define GRUB_TERM_KEY_SHIFT_102 (GRUB_TERM_EXTENDED | 11)
 +
  #define GRUB_TERM_ESC         '\e'
  #define GRUB_TERM_TAB         '\t'
 -#define GRUB_TERM_BACKSPACE   8
 +#define GRUB_TERM_BACKSPACE   '\b'
  
  #ifndef ASM_FILE
  
@@@ -135,21 -123,21 +137,23 @@@ struct grub_term_inpu
    const char *name;
  
    /* Initialize the terminal.  */
-   grub_err_t (*init) (void);
+   grub_err_t (*init) (struct grub_term_input *term);
  
    /* Clean up the terminal.  */
-   grub_err_t (*fini) (void);
+   grub_err_t (*fini) (struct grub_term_input *term);
  
    /* Check if any input character is available.  */
-   int (*checkkey) (void);
+   int (*checkkey) (struct grub_term_input *term);
  
    /* Get a character.  */
-   int (*getkey) (void);
+   int (*getkey) (struct grub_term_input *term);
  
    /* Get keyboard modifier status.  */
-   int (*getkeystatus) (void);
+   int (*getkeystatus) (struct grub_term_input *term);
  
 +  grub_uint32_t flags;
++
+   void *data;
  };
  typedef struct grub_term_input *grub_term_input_t;
  
@@@ -264,18 -271,16 +291,15 @@@ grub_term_unregister_output (grub_term_
                    GRUB_AS_LIST (term));
  }
  
- #define FOR_ACTIVE_TERM_INPUTS(var) for (var = grub_term_inputs; var; var = var->next)
- #define FOR_DISABLED_TERM_INPUTS(var) for (var = grub_term_inputs_disabled; var; var = var->next)
- #define FOR_ACTIVE_TERM_OUTPUTS(var) for (var = grub_term_outputs; var; var = var->next)
- #define FOR_DISABLED_TERM_OUTPUTS(var) for (var = grub_term_outputs_disabled; var; var = var->next)
+ #define FOR_ACTIVE_TERM_INPUTS(var) FOR_LIST_ELEMENTS((var), (grub_term_inputs))
+ #define FOR_DISABLED_TERM_INPUTS(var) FOR_LIST_ELEMENTS((var), (grub_term_inputs_disabled))
+ #define FOR_ACTIVE_TERM_OUTPUTS(var) FOR_LIST_ELEMENTS((var), (grub_term_outputs))
+ #define FOR_DISABLED_TERM_OUTPUTS(var) FOR_LIST_ELEMENTS((var), (grub_term_outputs_disabled))
  
- void EXPORT_FUNC(grub_putchar) (int c);
- void EXPORT_FUNC(grub_putcode) (grub_uint32_t code,
-                               struct grub_term_output *term);
+ void grub_putcode (grub_uint32_t code, struct grub_term_output *term);
 -int EXPORT_FUNC(grub_getkey) (void);
 -int EXPORT_FUNC(grub_checkkey) (void);
 -int EXPORT_FUNC(grub_getkeystatus) (void);
 +extern int (*EXPORT_VAR(grub_getkey)) (void);
 +int grub_checkkey (void);
- void EXPORT_FUNC(grub_cls) (void);
- void EXPORT_FUNC(grub_setcolorstate) (grub_term_color_state state);
+ void grub_cls (void);
  void EXPORT_FUNC(grub_refresh) (void);
  void grub_puts_terminal (const char *str, struct grub_term_output *term);
  grub_uint16_t *grub_term_save_pos (void);
Simple merge
Simple merge
diff --cc kern/term.c
@@@ -75,8 -74,10 +74,10 @@@ grub_xputs_dumb (const char *str
      }
  }
  
 -int
 -grub_getkey (void)
+ void (*grub_xputs) (const char *str) = grub_xputs_dumb;
 +static int
 +grub_getkey_dumb (void)
  {
    grub_term_input_t term;
  
      {
        FOR_ACTIVE_TERM_INPUTS(term)
        {
-       int key = term->checkkey ();
+       int key = term->checkkey (term);
        if (key != -1)
-         return term->getkey () & 0xff;
 -        return term->getkey (term);
++        return term->getkey (term) & 0xff;
        }
  
        grub_cpu_idle ();
      }
  }
  
 -int
 -grub_checkkey (void)
 -{
 -  grub_term_input_t term;
 -
 -  FOR_ACTIVE_TERM_INPUTS(term)
 -  {
 -    int key = term->checkkey (term);
 -    if (key != -1)
 -      return key;
 -  }
 -
 -  return -1;
 -}
 -
 -int
 -grub_getkeystatus (void)
 -{
 -  int status = 0;
 -  grub_term_input_t term;
 -
 -  FOR_ACTIVE_TERM_INPUTS(term)
 -  {
 -    if (term->getkeystatus)
 -      status |= term->getkeystatus (term);
 -  }
 -
 -  return status;
 -}
 +int (*grub_getkey) (void) = grub_getkey_dumb;
  
- void
- grub_cls (void)
- {
-   struct grub_term_output *term;
-   FOR_ACTIVE_TERM_OUTPUTS(term)  
-   {
-     if ((term->flags & GRUB_TERM_DUMB) || (grub_env_get ("debug")))
-       {
-       grub_putcode ('\n', term);
-       grub_term_refresh (term);
-       }
-     else
-       (term->cls) ();
-   }
- }
- void
- grub_setcolorstate (grub_term_color_state state)
- {
-   struct grub_term_output *term;
-   
-   FOR_ACTIVE_TERM_OUTPUTS(term)
-     grub_term_setcolorstate (term, state);
- }
  void
  grub_refresh (void)
  {
diff --cc lib/crypto.c
Simple merge
diff --cc normal/auth.c
Simple merge
Simple merge
diff --cc normal/main.c
Simple merge
diff --cc normal/menu.c
Simple merge
@@@ -1368,14 -1370,19 +1378,19 @@@ grub_menu_entry_run (grub_menu_entry_t 
          grub_cmdline_run (1);
          goto refresh;
  
 -      case 24: /* C-x */
 +      case GRUB_TERM_CTRL | 'x':
-         if (! run (screen))
-           goto fail;
+         {
+           int chars_before = grub_normal_get_char_counter ();
+           run (screen);
+           if (chars_before != grub_normal_get_char_counter ())
+             grub_wait_after_message ();
+         }
          goto refresh;
  
 -      case 18: /* C-r */
 -      case 19: /* C-s */
 -      case 20: /* C-t */
 +      case GRUB_TERM_CTRL | 'r':
 +      case GRUB_TERM_CTRL | 's':
 +      case GRUB_TERM_CTRL | 't':
          /* FIXME */
          break;
  
Simple merge
Simple merge
Simple merge
  
  #include "progname.h"
  
- void
- grub_putchar (int c)
+ void 
+ grub_xputs_real (const char *str)
  {
-   putchar (c);
+   fputs (str, stdout);
  }
  
 -int
 -grub_getkey (void)
+ void (*grub_xputs) (const char *str) = grub_xputs_real;
 +static int
 +grub_getkey_real (void)
  {
    return -1;
  }
@@@ -58,14 -60,16 +60,16 @@@ enum 
  int print = PRINT_FS;
  static unsigned int argument_is_device = 0;
  
- void
- grub_putchar (int c)
+ void 
+ grub_xputs_real (const char *str)
  {
-   putchar (c);
+   fputs (str, stdout);
  }
  
 -int
 -grub_getkey (void)
+ void (*grub_xputs) (const char *str) = grub_xputs_real;
 +static int
 +grub_getkey_real (void)
  {
    return -1;
  }
@@@ -57,14 -57,23 +57,23 @@@ static const grub_gpt_part_type_t grub_
  #define DEFAULT_BOOT_FILE     "boot.img"
  #define DEFAULT_CORE_FILE     "core.img"
  
- void
- grub_putchar (int c)
+ #define grub_target_to_host16(x)      grub_le_to_cpu16(x)
+ #define grub_target_to_host32(x)      grub_le_to_cpu32(x)
+ #define grub_target_to_host64(x)      grub_le_to_cpu64(x)
+ #define grub_host_to_target16(x)      grub_cpu_to_le16(x)
+ #define grub_host_to_target32(x)      grub_cpu_to_le32(x)
+ #define grub_host_to_target64(x)      grub_cpu_to_le64(x)
+ void 
+ grub_xputs_real (const char *str)
  {
-   putchar (c);
+   fputs (str, stdout);
  }
  
 -int
 -grub_getkey (void)
+ void (*grub_xputs) (const char *str) = grub_xputs_real;
 +static int
 +grub_getkey_real (void)
  {
    return -1;
  }