Index: grub/stage2/builtins.c =================================================================== RCS file: /cvs/grub/stage2/builtins.c,v retrieving revision 1.102 diff -u -r1.102 builtins.c --- grub/stage2/builtins.c 2001/01/06 22:14:59 1.102 +++ grub/stage2/builtins.c 2001/01/07 03:45:38 @@ -779,6 +779,41 @@ }; +/* delay */ +static int +delay_func (char *arg, int flags) +{ + int delay_timeout, time1, time2 = -1; + if (! safe_parse_maxint (&arg, &delay_timeout)) + return 1; + + while ((time1 = getrtsecs()) == 0xFF); + while (1) + { + if (delay_timeout >= 0 && (time1 = getrtsecs()) != time2 && time1 != 0xFF) + { + if (delay_timeout <= 0) + { + delay_timeout = -1; + break; + } + delay_timeout--; + time2 = time1; + } + } + return 0; +} + +static struct builtin builtin_delay = +{ + "delay", + delay_func, + BUILTIN_MENU | BUILTIN_CMDLINE | BUILTIN_HIDDEN, + "delay SEC", + "Pause for a timeout, in SEC seconds, before continuing." +}; + + #ifdef GRUB_UTIL /* device */ static int @@ -937,6 +972,24 @@ }; +/* echo */ +static int +echo_func (char *arg, int flags) +{ + grub_printf ("%s\n", arg); + return 0; +} + +static struct builtin builtin_echo = +{ + "echo", + echo_func, + BUILTIN_CMDLINE | BUILTIN_MENU | BUILTIN_HIDDEN, + "echo [MESSAGE]", + "Print MESSAGE" +}; + + static char embed_info[32]; /* embed */ /* Embed a Stage 1.5 in the first cylinder after MBR or in the @@ -4096,6 +4149,7 @@ #endif /* SUPPORT_NETBOOT */ + /* timeout */ static int timeout_func (char *arg, int flags) @@ -4320,6 +4374,7 @@ &builtin_configfile, &builtin_debug, &builtin_default, + &builtin_delay, #ifdef GRUB_UTIL &builtin_device, #endif /* GRUB_UTIL */ @@ -4328,6 +4383,7 @@ #endif /* SUPPORT_NETBOOT */ &builtin_displayapm, &builtin_displaymem, + &builtin_echo, &builtin_embed, &builtin_fallback, &builtin_find,