* New commands (reboot, halt, help)
@ 2005-01-28 12:36 Marco Gerards
2005-01-28 12:52 ` chaac
` (3 more replies)
0 siblings, 4 replies; 15+ messages in thread
From: Marco Gerards @ 2005-01-28 12:36 UTC (permalink / raw)
To: grub-devel
Hi,
Here is a patch to add the commands reboot, halt (i386/pc) and reboot
(i386/pc). The halt and reboot commands for the PPC will follow
later.
I will commit this patch on Monday, if there are no problems with it.
Thanks,
Marco
2005-01-28 Marco Gerards <metgerards@student.han.nl>
* commands/help.c: New file.
* commands/i386/pc/halt.c: New file.
* commands/i386/pc/reboot.c: New file.
* conf/i386-pc.rmk (grub_emu_SOURCES): Add `commands/help.c'.
(pkgdata_MODULES): Add `reboot.mod', `halt.mod' and `help.mod'.
(help_mod_SOURCES, help_mod_CFLAGS, reboot_mod_SOURCES)
(reboot_mod_CFLAGS, halt_mod_SOURCES, halt_mod_CFLAGS): New
variables.
* conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Add
`commands/help.c'.
(pkgdata_MODULES): Add `help.mod'.
(help_mod_SOURCES, help_mod_CFLAGS): New variables.
* grub/i386/pc/init.h (grub_reboot): New prototype.
(grub_halt): Likewise.
* include/grub/normal.h (grub_iterate_commands): Export function.
(grub_help_init): New prototype.
(grub_help_fini): Likewise.
* util/grub-emu.c (main): Initialize and deinitialize the help
command.
* normal/cmdline.c (grub_cmdline_get): Doc fix.
* normal/command.c (grub_command_init): Fixed the description of
the `set' and `unset' commands.
diff -upNr grub2/commands/help.c grub2.cmds/commands/help.c
--- grub2/commands/help.c 1970-01-01 00:00:00.000000000 +0000
+++ grub2.cmds/commands/help.c 2005-01-27 22:22:09.000000000 +0000
@@ -0,0 +1,74 @@
+/* help.c - command to show a help text. */
+/*
+ * GRUB -- GRand Unified Bootloader
+ * Copyright (C) 2005 Free Software Foundation, Inc.
+ *
+ * GRUB is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GRUB; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <grub/normal.h>
+#include <grub/dl.h>
+#include <grub/arg.h>
+#include <grub/misc.h>
+
+static int
+print_command_info (grub_command_t cmd)
+{
+ if (cmd->flags & GRUB_COMMAND_FLAG_CMDLINE
+ || cmd->flags & GRUB_COMMAND_FLAG_BOTH)
+ grub_printf ("%s\t\t%s\n", cmd->name, cmd->description);
+ return 0;
+}
+
+static grub_err_t
+grub_cmd_help (struct grub_arg_list *state __attribute__ ((unused)),
+ int argc __attribute__ ((unused)),
+ char **args __attribute__ ((unused)))
+
+{
+ grub_printf ("All GRUB commands accept `--help'.\n\n");
+
+ grub_iterate_commands (print_command_info);
+ return 0;
+}
+
+
+\f
+#ifdef GRUB_UTIL
+void
+grub_help_init (void)
+{
+ grub_register_command ("help", grub_cmd_help, GRUB_COMMAND_FLAG_BOTH,
+ "help", "Shows a help message", 0);
+}
+
+void
+grub_help_fini (void)
+{
+ grub_unregister_command ("help");
+}
+#else /* ! GRUB_UTIL */
+GRUB_MOD_INIT
+{
+ (void)mod; /* To stop warning. */
+ grub_register_command ("help", grub_cmd_help, GRUB_COMMAND_FLAG_BOTH,
+ "help", "Shows a help message", 0);
+}
+
+GRUB_MOD_FINI
+{
+ grub_unregister_command ("help");
+}
+#endif /* ! GRUB_UTIL */
diff -upNr grub2/commands/i386/pc/halt.c grub2.cmds/commands/i386/pc/halt.c
--- grub2/commands/i386/pc/halt.c 1970-01-01 00:00:00.000000000 +0000
+++ grub2.cmds/commands/i386/pc/halt.c 2005-01-27 22:24:14.000000000 +0000
@@ -0,0 +1,74 @@
+/* halt.c - command to halt the computer. */
+/*
+ * GRUB -- GRand Unified Bootloader
+ * Copyright (C) 2005 Free Software Foundation, Inc.
+ *
+ * GRUB is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GRUB; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <grub/normal.h>
+#include <grub/dl.h>
+#include <grub/arg.h>
+#include <grub/machine/init.h>
+
+static const struct grub_arg_option options[] =
+ {
+ {"no-apm", 'n', 0, "Don't use APM to halt the computer", 0, 0},
+ {0, 0, 0, 0, 0, 0}
+ };
+
+static grub_err_t
+grub_cmd_halt (struct grub_arg_list *state,
+ int argc __attribute__ ((unused)),
+ char **args __attribute__ ((unused)))
+
+{
+ int no_apm = 0;
+ if (state[0].set)
+ no_apm = 1;
+ grub_halt (no_apm);
+ return 0;
+}
+
+
+\f
+#ifdef GRUB_UTIL
+void
+grub_halt_init (void)
+{
+ grub_register_command ("halt", grub_cmd_halt, GRUB_COMMAND_FLAG_BOTH,
+ "halt [OPTIONS...]",
+ "Halt the system, if possible using APM", options);
+}
+
+void
+grub_halt_fini (void)
+{
+ grub_unregister_command ("halt");
+}
+#else /* ! GRUB_UTIL */
+GRUB_MOD_INIT
+{
+ (void)mod; /* To stop warning. */
+ grub_register_command ("halt", grub_cmd_halt, GRUB_COMMAND_FLAG_BOTH,
+ "halt [OPTIONS...]",
+ "Halt the system, if possible using APM", options);
+}
+
+GRUB_MOD_FINI
+{
+ grub_unregister_command ("halt");
+}
+#endif /* ! GRUB_UTIL */
diff -upNr grub2/commands/i386/pc/reboot.c grub2.cmds/commands/i386/pc/reboot.c
--- grub2/commands/i386/pc/reboot.c 1970-01-01 00:00:00.000000000 +0000
+++ grub2.cmds/commands/i386/pc/reboot.c 2005-01-28 12:25:47.000000000 +0000
@@ -0,0 +1,63 @@
+/* reboot.c - command to reboot the computer. */
+/*
+ * GRUB -- GRand Unified Bootloader
+ * Copyright (C) 2005 Free Software Foundation, Inc.
+ *
+ * GRUB is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GRUB; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <grub/normal.h>
+#include <grub/dl.h>
+#include <grub/arg.h>
+#include <grub/machine/init.h>
+
+static grub_err_t
+grub_cmd_reboot (struct grub_arg_list *state __attribute__ ((unused)),
+ int argc __attribute__ ((unused)),
+ char **args __attribute__ ((unused)))
+
+{
+ grub_reboot ();
+ return 0;
+}
+
+
+\f
+#ifdef GRUB_UTIL
+void
+grub_reboot_init (void)
+{
+ grub_register_command ("reboot", grub_cmd_reboot, GRUB_COMMAND_FLAG_BOTH,
+ "reboot", "Reboot the computer", 0);
+}
+
+void
+grub_reboot_fini (void)
+{
+ grub_unregister_command ("reboot");
+}
+#else /* ! GRUB_UTIL */
+GRUB_MOD_INIT
+{
+ (void)mod; /* To stop warning. */
+ grub_register_command ("reboot", grub_cmd_reboot, GRUB_COMMAND_FLAG_BOTH,
+ "reboot", "Reboot the computer", 0);
+}
+
+GRUB_MOD_FINI
+{
+ grub_unregister_command ("reboot");
+}
+#endif /* ! GRUB_UTIL */
diff -upNr grub2/conf/i386-pc.rmk grub2.cmds/conf/i386-pc.rmk
--- grub2/conf/i386-pc.rmk 2005-01-21 21:32:03.000000000 +0000
+++ grub2.cmds/conf/i386-pc.rmk 2005-01-28 11:42:54.000000000 +0000
@@ -73,7 +73,8 @@ grub_emu_SOURCES = kern/main.c kern/devi
commands/terminal.c commands/boot.c commands/cmp.c commands/cat.c \
util/i386/pc/biosdisk.c fs/fat.c fs/ext2.c fs/ufs.c fs/minix.c fs/hfs.c fs/jfs.c fs/iso9660.c \
normal/cmdline.c normal/command.c normal/main.c normal/menu.c normal/arg.c \
- util/console.c util/grub-emu.c util/misc.c util/i386/pc/getroot.c disk/loopback.c
+ util/console.c util/grub-emu.c util/misc.c util/i386/pc/getroot.c commands/help.c \
+ disk/loopback.c
grub_emu_LDFLAGS = -lncurses
# For genmoddep.
@@ -83,7 +84,7 @@ genmoddep_SOURCES = util/genmoddep.c
pkgdata_MODULES = _chain.mod _linux.mod linux.mod fat.mod ufs.mod ext2.mod minix.mod \
hfs.mod jfs.mod normal.mod hello.mod vga.mod font.mod _multiboot.mod ls.mod \
boot.mod cmp.mod cat.mod terminal.mod fshelp.mod chain.mod multiboot.mod \
- amiga.mod apple.mod pc.mod loopback.mod
+ amiga.mod apple.mod pc.mod loopback.mod reboot.mod halt.mod help.mod
# For _chain.mod.
_chain_mod_SOURCES = loader/i386/pc/chainloader.c
@@ -163,6 +164,18 @@ cmp_mod_CFLAGS = $(COMMON_CFLAGS)
cat_mod_SOURCES = commands/cat.c
cat_mod_CFLAGS = $(COMMON_CFLAGS)
+# For help.mod.
+help_mod_SOURCES = commands/help.c
+help_mod_CFLAGS = $(COMMON_CFLAGS)
+
+# For reboot.mod.
+reboot_mod_SOURCES = commands/i386/pc/reboot.c
+reboot_mod_CFLAGS = $(COMMON_CFLAGS)
+
+# For halt.mod.
+halt_mod_SOURCES = commands/i386/pc/halt.c
+halt_mod_CFLAGS = $(COMMON_CFLAGS)
+
# For vga.mod.
vga_mod_SOURCES = term/i386/pc/vga.c
vga_mod_CFLAGS = $(COMMON_CFLAGS)
diff -upNr grub2/conf/powerpc-ieee1275.rmk grub2.cmds/conf/powerpc-ieee1275.rmk
--- grub2/conf/powerpc-ieee1275.rmk 2005-01-21 21:32:03.000000000 +0000
+++ grub2.cmds/conf/powerpc-ieee1275.rmk 2005-01-28 11:50:35.000000000 +0000
@@ -41,7 +41,7 @@ grub_emu_SOURCES = kern/main.c kern/devi
normal/cmdline.c normal/command.c normal/main.c normal/menu.c \
normal/arg.c kern/partition.c \
util/console.c util/grub-emu.c util/misc.c util/i386/pc/getroot.c \
- kern/env.c disk/loopback.c commands/ls.c \
+ kern/env.c disk/loopback.c commands/ls.c commands/help.c \
commands/terminal.c commands/boot.c commands/cmp.c commands/cat.c
grub_emu_LDFLAGS = -lncurses
@@ -65,7 +65,7 @@ genmoddep_SOURCES = util/genmoddep.c
pkgdata_MODULES = _linux.mod linux.mod fat.mod ufs.mod ext2.mod minix.mod \
hfs.mod jfs.mod normal.mod hello.mod font.mod \
boot.mod cmp.mod cat.mod terminal.mod fshelp.mod amiga.mod apple.mod \
- pc.mod suspend.mod loopback.mod
+ pc.mod suspend.mod loopback.mod help.mod
# For fshelp.mod.
fshelp_mod_SOURCES = fs/fshelp.c
@@ -160,3 +160,7 @@ loopback_mod_CFLAGS = $(COMMON_CFLAGS)
# For suspend.mod
suspend_mod_SOURCES = commands/ieee1275/suspend.c
suspend_mod_CFLAGS = $(COMMON_CFLAGS)
+
+# For help.mod.
+help_mod_SOURCES = commands/help.c
+help_mod_CFLAGS = $(COMMON_CFLAGS)
diff -upNr grub2/include/grub/i386/pc/init.h grub2.cmds/include/grub/i386/pc/init.h
--- grub2/include/grub/i386/pc/init.h 2004-12-27 13:46:20.000000000 +0000
+++ grub2.cmds/include/grub/i386/pc/init.h 2005-01-28 11:42:54.000000000 +0000
@@ -1,6 +1,6 @@
/*
* GRUB -- GRand Unified Bootloader
- * Copyright (C) 2002, 2004 Free Software Foundation, Inc.
+ * Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -54,4 +54,12 @@ grub_uint32_t grub_get_mmap_entry (struc
/* Turn on/off Gate A20. */
void grub_gate_a20 (int on);
+/* Reboot the machine. */
+void EXPORT_FUNC (grub_reboot) (void);
+
+/* Halt the system, using APM if possible. If NO_APM is true, don't
+ * use APM even if it is available. */
+void EXPORT_FUNC (grub_halt) (int no_apm);
+
+
#endif /* ! GRUB_INIT_MACHINE_HEADER */
diff -upNr grub2/include/grub/normal.h grub2.cmds/include/grub/normal.h
--- grub2/include/grub/normal.h 2005-01-21 21:32:03.000000000 +0000
+++ grub2.cmds/include/grub/normal.h 2005-01-28 11:42:54.000000000 +0000
@@ -1,7 +1,7 @@
/* normal.h - prototypes for the normal mode */
/*
* GRUB -- GRand Unified Bootloader
- * Copyright (C) 2002,2003,2005 Free Software Foundation, Inc.
+ * Copyright (C) 2002,2003 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -135,7 +135,7 @@ void EXPORT_FUNC(grub_register_command)
void EXPORT_FUNC(grub_unregister_command) (const char *name);
grub_command_t grub_command_find (char *cmdline);
grub_err_t grub_set_history (int newsize);
-int grub_iterate_commands (int (*iterate) (grub_command_t));
+int EXPORT_FUNC(grub_iterate_commands) (int (*iterate) (grub_command_t));
int grub_command_execute (char *cmdline);
void grub_command_init (void);
void grub_normal_init_page (void);
@@ -160,6 +160,8 @@ void grub_terminal_init (void);
void grub_terminal_fini (void);
void grub_loop_init (void);
void grub_loop_fini (void);
+void grub_help_init (void);
+void grub_help_fini (void);
#endif
#endif /* ! GRUB_NORMAL_HEADER */
diff -upNr grub2/normal/cmdline.c grub2.cmds/normal/cmdline.c
--- grub2/normal/cmdline.c 2004-12-29 22:43:48.000000000 +0000
+++ grub2.cmds/normal/cmdline.c 2005-01-28 11:42:54.000000000 +0000
@@ -1,6 +1,6 @@
/*
* GRUB -- GRand Unified Bootloader
- * Copyright (C) 1999,2000,2001,2002,2003,2004 Free Software Foundation, Inc.
+ * Copyright (C) 1999,2000,2001,2002,2003,2004,2005 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -459,7 +459,7 @@ grub_cmdline_run (int nested)
/* Get a command-line. If ECHO_CHAR is not zero, echo it instead of input
characters. If READLINE is non-zero, readline-like key bindings are
- available. If ESC is pushed, return non-zero, otherwise return zero. */
+ available. If ESC is pushed, return zero, otherwise return non-zero. */
/* FIXME: The dumb interface is not supported yet. */
int
grub_cmdline_get (const char *prompt, char cmdline[], unsigned max_len,
diff -upNr grub2/normal/command.c grub2.cmds/normal/command.c
--- grub2/normal/command.c 2004-09-17 09:36:52.000000000 +0000
+++ grub2.cmds/normal/command.c 2005-01-28 11:42:54.000000000 +0000
@@ -1,6 +1,6 @@
/*
* GRUB -- GRand Unified Bootloader
- * Copyright (C) 2003 Free Software Foundation, Inc.
+ * Copyright (C) 2003, 2005 Free Software Foundation, Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -316,10 +316,10 @@ grub_command_init (void)
"rescue", "Enter into the rescue mode.", 0);
grub_register_command ("set", set_command, GRUB_COMMAND_FLAG_BOTH,
- "unset ENVVAR", "Set an environment variable.", 0);
+ "set [ENVVAR=VALUE]", "Set an environment variable.", 0);
grub_register_command ("unset", unset_command, GRUB_COMMAND_FLAG_BOTH,
- "set [ENVVAR=VALUE]", "Remove an environment variable.", 0);
+ "unset ENVVAR", "Remove an environment variable.", 0);
grub_register_command ("insmod", insmod_command, GRUB_COMMAND_FLAG_BOTH,
"insmod MODULE|FILE", "Insert a module.", 0);
diff -upNr grub2/util/grub-emu.c grub2.cmds/util/grub-emu.c
--- grub2/util/grub-emu.c 2005-01-21 21:32:03.000000000 +0000
+++ grub2.cmds/util/grub-emu.c 2005-01-28 11:42:54.000000000 +0000
@@ -177,6 +177,7 @@ main (int argc, char *argv[])
grub_cat_init ();
grub_terminal_init ();
grub_loop_init ();
+ grub_help_init ();
/* XXX: Should normal mode be started by default? */
grub_normal_init ();
@@ -184,6 +185,7 @@ main (int argc, char *argv[])
/* Start GRUB! */
grub_main ();
+ grub_help_fini ();
grub_loop_fini ();
grub_util_biosdisk_fini ();
grub_normal_fini ();
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: New commands (reboot, halt, help) 2005-01-28 12:36 New commands (reboot, halt, help) Marco Gerards @ 2005-01-28 12:52 ` chaac 2005-01-28 14:33 ` Marco Gerards 2005-01-28 18:54 ` Marco Gerards ` (2 subsequent siblings) 3 siblings, 1 reply; 15+ messages in thread From: chaac @ 2005-01-28 12:52 UTC (permalink / raw) To: The development of GRUB 2 Marco Gerards wrote: > Hi, > > Here is a patch to add the commands reboot, halt (i386/pc) and reboot > (i386/pc). The halt and reboot commands for the PPC will follow > later. > > I will commit this patch on Monday, if there are no problems with it. Just a suggestion, halt is quite unixish way for saying shutdown. So would shutdown command be more intuitive to non unix users? Thanks, Vesa Jääskeläinen ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: New commands (reboot, halt, help) 2005-01-28 12:52 ` chaac @ 2005-01-28 14:33 ` Marco Gerards 0 siblings, 0 replies; 15+ messages in thread From: Marco Gerards @ 2005-01-28 14:33 UTC (permalink / raw) To: The development of GRUB 2 chaac <chaac@nic.fi> writes: > Marco Gerards wrote: >> Hi, >> Here is a patch to add the commands reboot, halt (i386/pc) and reboot >> (i386/pc). The halt and reboot commands for the PPC will follow >> later. >> I will commit this patch on Monday, if there are no problems with it. > > Just a suggestion, halt is quite unixish way for saying shutdown. So > would shutdown command be more intuitive to non unix users? Perhaps. On GRUB Legacy the command was halt so I just used that. It doesn't really matter to me what will be used. Shutdown sounds to me like a lot needs to be done before the system will stop. And halt is what people are used to. -- Marco ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: New commands (reboot, halt, help) 2005-01-28 12:36 New commands (reboot, halt, help) Marco Gerards 2005-01-28 12:52 ` chaac @ 2005-01-28 18:54 ` Marco Gerards 2005-01-29 1:23 ` Yoshinori K. Okuji 2005-01-30 17:15 ` Marco Gerards 3 siblings, 0 replies; 15+ messages in thread From: Marco Gerards @ 2005-01-28 18:54 UTC (permalink / raw) To: The development of GRUB 2 Marco Gerards <metgerards@student.han.nl> writes: > +grub_halt_init (void) Of course stuff like this is not required and it won't be in the patch when I commit it. -- Marco ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: New commands (reboot, halt, help) 2005-01-28 12:36 New commands (reboot, halt, help) Marco Gerards 2005-01-28 12:52 ` chaac 2005-01-28 18:54 ` Marco Gerards @ 2005-01-29 1:23 ` Yoshinori K. Okuji 2005-01-29 13:01 ` Marco Gerards 2005-01-30 17:15 ` Marco Gerards 3 siblings, 1 reply; 15+ messages in thread From: Yoshinori K. Okuji @ 2005-01-29 1:23 UTC (permalink / raw) To: The development of GRUB 2 On Friday 28 January 2005 13:36, Marco Gerards wrote: > +static int > +print_command_info (grub_command_t cmd) > +{ > + if (cmd->flags & GRUB_COMMAND_FLAG_CMDLINE > + || cmd->flags & GRUB_COMMAND_FLAG_BOTH) > + grub_printf ("%s\t\t%s\n", cmd->name, cmd->description); > + return 0; > +} Why do you test the flags with GRUB_COMMAND_FLAG_BOTH? BTW, I prefer a two-column format like GRUB Legacy and BASH. Otherwise, it can emit too many lines. > +static grub_err_t > +grub_cmd_help (struct grub_arg_list *state __attribute__ ((unused)), > + int argc __attribute__ ((unused)), > + char **args __attribute__ ((unused))) > + > +{ > + grub_printf ("All GRUB commands accept `--help'.\n\n"); > + > + grub_iterate_commands (print_command_info); > + return 0; > +} Please make it possible to specify arguments (e.g help ls). > + grub_register_command ("help", grub_cmd_help, > GRUB_COMMAND_FLAG_BOTH, + "help", "Shows a help message", 0); > +} I think GRUB_COMMAND_FLAG_CMDLINE should be used for this command. I cannot think of any case where help is useful in the menu interface. > EXPORT_FUNC(grub_register_command) > void EXPORT_FUNC(grub_unregister_command) (const char *name); > grub_command_t grub_command_find (char *cmdline); > grub_err_t grub_set_history (int newsize); > -int grub_iterate_commands (int (*iterate) (grub_command_t)); > +int EXPORT_FUNC(grub_iterate_commands) (int (*iterate) > (grub_command_t)); int grub_command_execute (char *cmdline); > void grub_command_init (void); > void grub_normal_init_page (void); This is strange. You don't have to specify EXPORT_FUNC in normal.h, because the function is defined in a module but not in a kernel. EXPORT_* are required only by the kernel (because the kernel may not be an ELF object). Okuji ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: New commands (reboot, halt, help) 2005-01-29 1:23 ` Yoshinori K. Okuji @ 2005-01-29 13:01 ` Marco Gerards 2005-01-29 14:30 ` Yoshinori K. Okuji 0 siblings, 1 reply; 15+ messages in thread From: Marco Gerards @ 2005-01-29 13:01 UTC (permalink / raw) To: The development of GRUB 2 "Yoshinori K. Okuji" <okuji@enbug.org> writes: > On Friday 28 January 2005 13:36, Marco Gerards wrote: >> +static int >> +print_command_info (grub_command_t cmd) >> +{ >> + if (cmd->flags & GRUB_COMMAND_FLAG_CMDLINE >> + || cmd->flags & GRUB_COMMAND_FLAG_BOTH) >> + grub_printf ("%s\t\t%s\n", cmd->name, cmd->description); >> + return 0; >> +} > > Why do you test the flags with GRUB_COMMAND_FLAG_BOTH? Not all commands, for example `title', should be printed. > BTW, I prefer a two-column format like GRUB Legacy and BASH. Otherwise, > it can emit too many lines. This is a two column format. The output is, for example: boot Boot an operating system cat Show the contents of a file cmp Compare two files help Shows a help message insmod Insert a module. loopback Makes a device of a file ls List devices and files lsmod Show loaded modules. rescue Enter into the rescue mode. rmmod Remove a module. set Set an environment variable. terminal Select a terminal. unset Remove an environment variable. >> +static grub_err_t >> +grub_cmd_help (struct grub_arg_list *state __attribute__ ((unused)), >> + int argc __attribute__ ((unused)), >> + char **args __attribute__ ((unused))) >> + >> +{ >> + grub_printf ("All GRUB commands accept `--help'.\n\n"); >> + >> + grub_iterate_commands (print_command_info); >> + return 0; >> +} > > Please make it possible to specify arguments (e.g help ls). Ok. >> + grub_register_command ("help", grub_cmd_help, >> GRUB_COMMAND_FLAG_BOTH, + "help", "Shows a help message", 0); >> +} > > I think GRUB_COMMAND_FLAG_CMDLINE should be used for this command. I > cannot think of any case where help is useful in the menu interface. Ok. >> EXPORT_FUNC(grub_register_command) >> void EXPORT_FUNC(grub_unregister_command) (const char *name); >> grub_command_t grub_command_find (char *cmdline); >> grub_err_t grub_set_history (int newsize); >> -int grub_iterate_commands (int (*iterate) (grub_command_t)); >> +int EXPORT_FUNC(grub_iterate_commands) (int (*iterate) >> (grub_command_t)); int grub_command_execute (char *cmdline); >> void grub_command_init (void); >> void grub_normal_init_page (void); > > This is strange. You don't have to specify EXPORT_FUNC in normal.h, > because the function is defined in a module but not in a kernel. > EXPORT_* are required only by the kernel (because the kernel may not be > an ELF object). Ok. Perhaps I was confused because the other functions were exported. Thanks, Marco ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: New commands (reboot, halt, help) 2005-01-29 13:01 ` Marco Gerards @ 2005-01-29 14:30 ` Yoshinori K. Okuji 2005-01-29 15:11 ` Marco Gerards 0 siblings, 1 reply; 15+ messages in thread From: Yoshinori K. Okuji @ 2005-01-29 14:30 UTC (permalink / raw) To: The development of GRUB 2 On Saturday 29 January 2005 14:01, Marco Gerards wrote: > > Why do you test the flags with GRUB_COMMAND_FLAG_BOTH? > > Not all commands, for example `title', should be printed. Why? And, do you know that GRUB_COMMAND_FLAG_BOTH is a sum of GRUB_COMMAND_FLAG_CMDLINE and GRUB_COMMAND_FLAG_MENU? The conditional is at least redundant. > This is a two column format. The output is, for example: [snip] It's not a two-column format. Try help on bash. You will see what I mean. Okuji ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: New commands (reboot, halt, help) 2005-01-29 14:30 ` Yoshinori K. Okuji @ 2005-01-29 15:11 ` Marco Gerards 2005-01-29 15:31 ` Serbinenko Vladimir ` (2 more replies) 0 siblings, 3 replies; 15+ messages in thread From: Marco Gerards @ 2005-01-29 15:11 UTC (permalink / raw) To: The development of GRUB 2 "Yoshinori K. Okuji" <okuji@enbug.org> writes: > On Saturday 29 January 2005 14:01, Marco Gerards wrote: >> > Why do you test the flags with GRUB_COMMAND_FLAG_BOTH? >> >> Not all commands, for example `title', should be printed. > > Why? I was under the impression title was a special case. It does not even have a description. > And, do you know that GRUB_COMMAND_FLAG_BOTH is a sum of > GRUB_COMMAND_FLAG_CMDLINE and GRUB_COMMAND_FLAG_MENU? The conditional > is at least redundant. Right. What the code does is making sure GRUB_COMMAND_FLAG_CMDLINE and GRUB_COMMAND_FLAG_MENU commands and commands with both set are shown. I fail to see the redundancy. What do you propose? >> This is a two column format. The output is, for example: > [snip] > > It's not a two-column format. Try help on bash. You will see what I > mean. Right, I see. I can make this change so it works more like GRUB Legacy. Is it ok if I add a --description so it works like the patch as it is now? It's how I like it, that's why I added it this way, but if you don't like it I just remove it. Thanks, Marco ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: New commands (reboot, halt, help) 2005-01-29 15:11 ` Marco Gerards @ 2005-01-29 15:31 ` Serbinenko Vladimir 2005-01-29 16:17 ` Marco Gerards 2005-01-29 15:43 ` Marco Gerards 2005-01-29 17:45 ` Yoshinori K. Okuji 2 siblings, 1 reply; 15+ messages in thread From: Serbinenko Vladimir @ 2005-01-29 15:31 UTC (permalink / raw) To: The development of GRUB 2 >Right. What the code does is making sure GRUB_COMMAND_FLAG_CMDLINE >and GRUB_COMMAND_FLAG_MENU commands and commands with both set are >shown. I fail to see the redundancy. > > > In normal.h: /* Can be run in the command-line. */ #define GRUB_COMMAND_FLAG_CMDLINE 0x1 /* Can be run in the menu. */ #define GRUB_COMMAND_FLAG_MENU 0x2 /* Can be run in both interfaces. */ #define GRUB_COMMAND_FLAG_BOTH 0x3 so GRUB_COMMAND_FLAG_BOTH is 11 in binary, so x&GRUB_COMMAND_FLAG_BOTH will not be zero if and only if bit 0 *or* bit 1 is set Example GRUB_COMMAND_FLAG_CMDLINE &GRUB_COMMAND_FLAG_BOTH=1 GRUB_COMMAND_FLAG_MENU&GRUB_COMMAND_FLAG_BOTH=2 GRUB_COMMAND_FLAG_BOTH&GRUB_COMMAND_FLAG_BOTH=3 *GRUB_COMMAND_FLAG_BOTH&GRUB_COMMAND_FLAG_CMDLINE=1* The last example shows that for command with attribute GRUB_COMMAND_FLAG_BOTH already cmd->flags & GRUB_COMMAND_FLAG_CMDLINE will be true ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: New commands (reboot, halt, help) 2005-01-29 15:31 ` Serbinenko Vladimir @ 2005-01-29 16:17 ` Marco Gerards 0 siblings, 0 replies; 15+ messages in thread From: Marco Gerards @ 2005-01-29 16:17 UTC (permalink / raw) To: The development of GRUB 2 Serbinenko Vladimir <serbinenko.vova@list.ru> writes: >>Right. What the code does is making sure GRUB_COMMAND_FLAG_CMDLINE >>and GRUB_COMMAND_FLAG_MENU commands and commands with both set are >>shown. I fail to see the redundancy. >> >> >> > In normal.h: > /* Can be run in the command-line. */ > #define GRUB_COMMAND_FLAG_CMDLINE 0x1 > /* Can be run in the menu. */ > #define GRUB_COMMAND_FLAG_MENU 0x2 > /* Can be run in both interfaces. */ > #define GRUB_COMMAND_FLAG_BOTH 0x3 > so GRUB_COMMAND_FLAG_BOTH is 11 in binary, so x&GRUB_COMMAND_FLAG_BOTH > will not be zero if and only if bit 0 *or* bit 1 is set > Example > GRUB_COMMAND_FLAG_CMDLINE &GRUB_COMMAND_FLAG_BOTH=1 > GRUB_COMMAND_FLAG_MENU&GRUB_COMMAND_FLAG_BOTH=2 > GRUB_COMMAND_FLAG_BOTH&GRUB_COMMAND_FLAG_BOTH=3 > *GRUB_COMMAND_FLAG_BOTH&GRUB_COMMAND_FLAG_CMDLINE=1* > The last example shows that for command with attribute > GRUB_COMMAND_FLAG_BOTH already > > cmd->flags & GRUB_COMMAND_FLAG_CMDLINE will be true Right I know that and what you described was exactly my intention. I wanted it to be true for all these 3 cases. As you can see GRUB_COMMAND_FLAG_TITLE is set to 4. And these commands will not be shown and that was also my intention. So I am under the impression that my code is right. However, perhaps you don't think it is clean, in that case you could say what would be better. Or if you don't agree with how it works, only showing the commands used in the menu and the command line while not showing title, we can talk about that. I hope I was clearer now. Sometimes English makes the communication about such things a bit difficult for me. Thanks, Marco ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: New commands (reboot, halt, help) 2005-01-29 15:11 ` Marco Gerards 2005-01-29 15:31 ` Serbinenko Vladimir @ 2005-01-29 15:43 ` Marco Gerards 2005-01-29 17:47 ` Yoshinori K. Okuji 2005-01-29 17:45 ` Yoshinori K. Okuji 2 siblings, 1 reply; 15+ messages in thread From: Marco Gerards @ 2005-01-29 15:43 UTC (permalink / raw) To: The development of GRUB 2 Marco Gerards <metgerards@student.han.nl> writes: > What do you propose? > >>> This is a two column format. The output is, for example: >> [snip] >> >> It's not a two-column format. Try help on bash. You will see what I >> mean. > > Right, I see. I can make this change so it works more like GRUB > Legacy. > > Is it ok if I add a --description so it works like the patch as it is > now? It's how I like it, that's why I added it this way, but if you > don't like it I just remove it. BTW. That is how it works in rescue mode. So if help only has the behavior you described both will be completely different. Thanks, Marco ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: New commands (reboot, halt, help) 2005-01-29 15:43 ` Marco Gerards @ 2005-01-29 17:47 ` Yoshinori K. Okuji 0 siblings, 0 replies; 15+ messages in thread From: Yoshinori K. Okuji @ 2005-01-29 17:47 UTC (permalink / raw) To: The development of GRUB 2 On Saturday 29 January 2005 16:43, Marco Gerards wrote: > BTW. That is how it works in rescue mode. So if help only has the > behavior you described both will be completely different. I don't care. Rescue mode has different requirements. I want to make rescue mode resemble normal mode as much as possible, but the code size is the most important in rescue mode. Okuji ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: New commands (reboot, halt, help) 2005-01-29 15:11 ` Marco Gerards 2005-01-29 15:31 ` Serbinenko Vladimir 2005-01-29 15:43 ` Marco Gerards @ 2005-01-29 17:45 ` Yoshinori K. Okuji 2005-01-29 18:36 ` Marco Gerards 2 siblings, 1 reply; 15+ messages in thread From: Yoshinori K. Okuji @ 2005-01-29 17:45 UTC (permalink / raw) To: The development of GRUB 2 On Saturday 29 January 2005 16:11, Marco Gerards wrote: > Right. What the code does is making sure GRUB_COMMAND_FLAG_CMDLINE > and GRUB_COMMAND_FLAG_MENU commands and commands with both set are > shown. I fail to see the redundancy. > > What do you propose? Help should show only commands available on the command-line interface. > Is it ok if I add a --description so it works like the patch as it is > now? It's how I like it, that's why I added it this way, but if you > don't like it I just remove it. I have no strong objection, but how useful? You could get all information by "help COMMAND". Okuji ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: New commands (reboot, halt, help) 2005-01-29 17:45 ` Yoshinori K. Okuji @ 2005-01-29 18:36 ` Marco Gerards 0 siblings, 0 replies; 15+ messages in thread From: Marco Gerards @ 2005-01-29 18:36 UTC (permalink / raw) To: The development of GRUB 2 "Yoshinori K. Okuji" <okuji@enbug.org> writes: > On Saturday 29 January 2005 16:11, Marco Gerards wrote: >> Right. What the code does is making sure GRUB_COMMAND_FLAG_CMDLINE >> and GRUB_COMMAND_FLAG_MENU commands and commands with both set are >> shown. I fail to see the redundancy. >> >> What do you propose? > > Help should show only commands available on the command-line interface. Ok, fine for me. :) I will update the patch and send in a new one tomorrow. I still hope I can apply that one on Monday because after Monday I won't be hacking for a while. I will still be on the list but I just won't hack that much anymore for some weeks, I think. :-/ >> Is it ok if I add a --description so it works like the patch as it is >> now? It's how I like it, that's why I added it this way, but if you >> don't like it I just remove it. > > I have no strong objection, but how useful? You could get all > information by "help COMMAND". I will think more about this when working on it. Thanks, Marco ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: New commands (reboot, halt, help) 2005-01-28 12:36 New commands (reboot, halt, help) Marco Gerards ` (2 preceding siblings ...) 2005-01-29 1:23 ` Yoshinori K. Okuji @ 2005-01-30 17:15 ` Marco Gerards 3 siblings, 0 replies; 15+ messages in thread From: Marco Gerards @ 2005-01-30 17:15 UTC (permalink / raw) To: The development of GRUB 2 Marco Gerards <metgerards@student.han.nl> writes: > Hi, > > Here is a patch to add the commands reboot, halt (i386/pc) and reboot > (i386/pc). The halt and reboot commands for the PPC will follow > later. > > I will commit this patch on Monday, if there are no problems with it. Here is an updated patch. The only changes are to hello.mod. It now prints the help output in two columns. It can also print help output for the patterns passed as arguments. So: help l t Will show help output (the same as --help) for all arguments starting with `l' and `t', just like with GRUB Legacy. I will commit this patch tomorrow evening if I don't hear complaints. :) Thanks, Marco 2005-01-30 Marco Gerards <metgerards@student.han.nl> * commands/help.c: New file. * normal/arg.c (show_help): Renamed to... (grub_arg_show_help): ... this. * commands/i386/pc/halt.c: New file. * commands/i386/pc/reboot.c: New file. * conf/i386-pc.rmk (grub_emu_SOURCES): Add `commands/help.c'. (pkgdata_MODULES): Add `reboot.mod', `halt.mod' and `help.mod'. (help_mod_SOURCES, help_mod_CFLAGS, reboot_mod_SOURCES) (reboot_mod_CFLAGS, halt_mod_SOURCES, halt_mod_CFLAGS): New variables. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Add `commands/help.c'. (pkgdata_MODULES): Add `help.mod'. (help_mod_SOURCES, help_mod_CFLAGS): New variables. * grub/i386/pc/init.h (grub_reboot): New prototype. (grub_halt): Likewise. * include/grub/normal.h (grub_arg_show_help): New prototype. (grub_help_init): Likewise. (grub_help_fini): Likewise. * util/grub-emu.c (main): Initialize and deinitialize the help command. * normal/cmdline.c (grub_cmdline_get): Doc fix. * normal/command.c (grub_command_init): Fixed the description of the `set' and `unset' commands. diff -upNr --exclude=CVS grub2/commands/help.c grub2.cmds/commands/help.c --- grub2/commands/help.c 1970-01-01 00:00:00.000000000 +0000 +++ grub2.cmds/commands/help.c 2005-01-30 17:11:43.000000000 +0000 @@ -0,0 +1,115 @@ +/* help.c - command to show a help text. */ +/* + * GRUB -- GRand Unified Bootloader + * Copyright (C) 2005 Free Software Foundation, Inc. + * + * GRUB is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GRUB; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <grub/normal.h> +#include <grub/dl.h> +#include <grub/arg.h> +#include <grub/misc.h> + +/* XXX: This has to be changed into a function so the screen can be + optimally used. */ +#define TERM_WIDTH 80 + +static grub_err_t +grub_cmd_help (struct grub_arg_list *state __attribute__ ((unused)), int argc, + char **args) + +{ + int cnt = 0; + char *currarg; + + auto int print_command_info (grub_command_t cmd); + auto int print_command_help (grub_command_t cmd); + + int print_command_info (grub_command_t cmd) + { + if (cmd->flags & GRUB_COMMAND_FLAG_CMDLINE) + { + char description[TERM_WIDTH / 2]; + int desclen = grub_strlen (cmd->summary); + + /* Make a string with a length of TERM_WIDTH / 2 - 1 filled + with the description followed by spaces. */ + grub_memset (description, ' ', TERM_WIDTH / 2 - 1); + description[TERM_WIDTH / 2 - 1] = '\0'; + grub_memcpy (description, cmd->summary, + (desclen < TERM_WIDTH / 2 - 1 + ? desclen : TERM_WIDTH / 2 - 1)); + + grub_printf ("%s%s", description, (cnt++) % 2 ? "\n" : " "); + } + + return 0; + } + + int print_command_help (grub_command_t cmd) + { + if (!grub_strncmp (cmd->name, currarg, grub_strlen (currarg))) + { + grub_arg_show_help (cmd); + grub_printf ("\n\n"); + } + return 0; + } + + if (argc == 0) + grub_iterate_commands (print_command_info); + else + { + int i; + + for (i = 0; i < argc; i++) + { + currarg = args[i]; + grub_iterate_commands (print_command_help); + } + } + + return 0; +} + + +\f +#ifdef GRUB_UTIL +void +grub_help_init (void) +{ + grub_register_command ("help", grub_cmd_help, GRUB_COMMAND_FLAG_CMDLINE, + "help [PATTERN ...]", "Shows a help message", 0); +} + +void +grub_help_fini (void) +{ + grub_unregister_command ("help"); +} +#else /* ! GRUB_UTIL */ +GRUB_MOD_INIT +{ + (void)mod; /* To stop warning. */ + grub_register_command ("help", grub_cmd_help, GRUB_COMMAND_FLAG_CMDLINE, + "help [PATTERN ...]", "Shows a help message", 0); +} + +GRUB_MOD_FINI +{ + grub_unregister_command ("help"); +} +#endif /* ! GRUB_UTIL */ diff -upNr --exclude=CVS grub2/commands/i386/pc/halt.c grub2.cmds/commands/i386/pc/halt.c --- grub2/commands/i386/pc/halt.c 1970-01-01 00:00:00.000000000 +0000 +++ grub2.cmds/commands/i386/pc/halt.c 2005-01-27 22:24:14.000000000 +0000 @@ -0,0 +1,74 @@ +/* halt.c - command to halt the computer. */ +/* + * GRUB -- GRand Unified Bootloader + * Copyright (C) 2005 Free Software Foundation, Inc. + * + * GRUB is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GRUB; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <grub/normal.h> +#include <grub/dl.h> +#include <grub/arg.h> +#include <grub/machine/init.h> + +static const struct grub_arg_option options[] = + { + {"no-apm", 'n', 0, "Don't use APM to halt the computer", 0, 0}, + {0, 0, 0, 0, 0, 0} + }; + +static grub_err_t +grub_cmd_halt (struct grub_arg_list *state, + int argc __attribute__ ((unused)), + char **args __attribute__ ((unused))) + +{ + int no_apm = 0; + if (state[0].set) + no_apm = 1; + grub_halt (no_apm); + return 0; +} + + +\f +#ifdef GRUB_UTIL +void +grub_halt_init (void) +{ + grub_register_command ("halt", grub_cmd_halt, GRUB_COMMAND_FLAG_BOTH, + "halt [OPTIONS...]", + "Halt the system, if possible using APM", options); +} + +void +grub_halt_fini (void) +{ + grub_unregister_command ("halt"); +} +#else /* ! GRUB_UTIL */ +GRUB_MOD_INIT +{ + (void)mod; /* To stop warning. */ + grub_register_command ("halt", grub_cmd_halt, GRUB_COMMAND_FLAG_BOTH, + "halt [OPTIONS...]", + "Halt the system, if possible using APM", options); +} + +GRUB_MOD_FINI +{ + grub_unregister_command ("halt"); +} +#endif /* ! GRUB_UTIL */ diff -upNr --exclude=CVS grub2/commands/i386/pc/reboot.c grub2.cmds/commands/i386/pc/reboot.c --- grub2/commands/i386/pc/reboot.c 1970-01-01 00:00:00.000000000 +0000 +++ grub2.cmds/commands/i386/pc/reboot.c 2005-01-28 12:25:47.000000000 +0000 @@ -0,0 +1,63 @@ +/* reboot.c - command to reboot the computer. */ +/* + * GRUB -- GRand Unified Bootloader + * Copyright (C) 2005 Free Software Foundation, Inc. + * + * GRUB is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GRUB; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <grub/normal.h> +#include <grub/dl.h> +#include <grub/arg.h> +#include <grub/machine/init.h> + +static grub_err_t +grub_cmd_reboot (struct grub_arg_list *state __attribute__ ((unused)), + int argc __attribute__ ((unused)), + char **args __attribute__ ((unused))) + +{ + grub_reboot (); + return 0; +} + + +\f +#ifdef GRUB_UTIL +void +grub_reboot_init (void) +{ + grub_register_command ("reboot", grub_cmd_reboot, GRUB_COMMAND_FLAG_BOTH, + "reboot", "Reboot the computer", 0); +} + +void +grub_reboot_fini (void) +{ + grub_unregister_command ("reboot"); +} +#else /* ! GRUB_UTIL */ +GRUB_MOD_INIT +{ + (void)mod; /* To stop warning. */ + grub_register_command ("reboot", grub_cmd_reboot, GRUB_COMMAND_FLAG_BOTH, + "reboot", "Reboot the computer", 0); +} + +GRUB_MOD_FINI +{ + grub_unregister_command ("reboot"); +} +#endif /* ! GRUB_UTIL */ diff -upNr --exclude=CVS grub2/conf/i386-pc.rmk grub2.cmds/conf/i386-pc.rmk --- grub2/conf/i386-pc.rmk 2005-01-21 21:32:03.000000000 +0000 +++ grub2.cmds/conf/i386-pc.rmk 2005-01-28 11:42:54.000000000 +0000 @@ -73,7 +73,8 @@ grub_emu_SOURCES = kern/main.c kern/devi commands/terminal.c commands/boot.c commands/cmp.c commands/cat.c \ util/i386/pc/biosdisk.c fs/fat.c fs/ext2.c fs/ufs.c fs/minix.c fs/hfs.c fs/jfs.c fs/iso9660.c \ normal/cmdline.c normal/command.c normal/main.c normal/menu.c normal/arg.c \ - util/console.c util/grub-emu.c util/misc.c util/i386/pc/getroot.c disk/loopback.c + util/console.c util/grub-emu.c util/misc.c util/i386/pc/getroot.c commands/help.c \ + disk/loopback.c grub_emu_LDFLAGS = -lncurses # For genmoddep. @@ -83,7 +84,7 @@ genmoddep_SOURCES = util/genmoddep.c pkgdata_MODULES = _chain.mod _linux.mod linux.mod fat.mod ufs.mod ext2.mod minix.mod \ hfs.mod jfs.mod normal.mod hello.mod vga.mod font.mod _multiboot.mod ls.mod \ boot.mod cmp.mod cat.mod terminal.mod fshelp.mod chain.mod multiboot.mod \ - amiga.mod apple.mod pc.mod loopback.mod + amiga.mod apple.mod pc.mod loopback.mod reboot.mod halt.mod help.mod # For _chain.mod. _chain_mod_SOURCES = loader/i386/pc/chainloader.c @@ -163,6 +164,18 @@ cmp_mod_CFLAGS = $(COMMON_CFLAGS) cat_mod_SOURCES = commands/cat.c cat_mod_CFLAGS = $(COMMON_CFLAGS) +# For help.mod. +help_mod_SOURCES = commands/help.c +help_mod_CFLAGS = $(COMMON_CFLAGS) + +# For reboot.mod. +reboot_mod_SOURCES = commands/i386/pc/reboot.c +reboot_mod_CFLAGS = $(COMMON_CFLAGS) + +# For halt.mod. +halt_mod_SOURCES = commands/i386/pc/halt.c +halt_mod_CFLAGS = $(COMMON_CFLAGS) + # For vga.mod. vga_mod_SOURCES = term/i386/pc/vga.c vga_mod_CFLAGS = $(COMMON_CFLAGS) diff -upNr --exclude=CVS grub2/conf/powerpc-ieee1275.rmk grub2.cmds/conf/powerpc-ieee1275.rmk --- grub2/conf/powerpc-ieee1275.rmk 2005-01-21 21:32:03.000000000 +0000 +++ grub2.cmds/conf/powerpc-ieee1275.rmk 2005-01-28 11:50:35.000000000 +0000 @@ -41,7 +41,7 @@ grub_emu_SOURCES = kern/main.c kern/devi normal/cmdline.c normal/command.c normal/main.c normal/menu.c \ normal/arg.c kern/partition.c \ util/console.c util/grub-emu.c util/misc.c util/i386/pc/getroot.c \ - kern/env.c disk/loopback.c commands/ls.c \ + kern/env.c disk/loopback.c commands/ls.c commands/help.c \ commands/terminal.c commands/boot.c commands/cmp.c commands/cat.c grub_emu_LDFLAGS = -lncurses @@ -65,7 +65,7 @@ genmoddep_SOURCES = util/genmoddep.c pkgdata_MODULES = _linux.mod linux.mod fat.mod ufs.mod ext2.mod minix.mod \ hfs.mod jfs.mod normal.mod hello.mod font.mod \ boot.mod cmp.mod cat.mod terminal.mod fshelp.mod amiga.mod apple.mod \ - pc.mod suspend.mod loopback.mod + pc.mod suspend.mod loopback.mod help.mod # For fshelp.mod. fshelp_mod_SOURCES = fs/fshelp.c @@ -160,3 +160,7 @@ loopback_mod_CFLAGS = $(COMMON_CFLAGS) # For suspend.mod suspend_mod_SOURCES = commands/ieee1275/suspend.c suspend_mod_CFLAGS = $(COMMON_CFLAGS) + +# For help.mod. +help_mod_SOURCES = commands/help.c +help_mod_CFLAGS = $(COMMON_CFLAGS) Binary files grub2/core.img and grub2.cmds/core.img differ diff -upNr --exclude=CVS grub2/include/grub/i386/pc/init.h grub2.cmds/include/grub/i386/pc/init.h --- grub2/include/grub/i386/pc/init.h 2004-12-27 13:46:20.000000000 +0000 +++ grub2.cmds/include/grub/i386/pc/init.h 2005-01-28 11:42:54.000000000 +0000 @@ -1,6 +1,6 @@ /* * GRUB -- GRand Unified Bootloader - * Copyright (C) 2002, 2004 Free Software Foundation, Inc. + * Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -54,4 +54,12 @@ grub_uint32_t grub_get_mmap_entry (struc /* Turn on/off Gate A20. */ void grub_gate_a20 (int on); +/* Reboot the machine. */ +void EXPORT_FUNC (grub_reboot) (void); + +/* Halt the system, using APM if possible. If NO_APM is true, don't + * use APM even if it is available. */ +void EXPORT_FUNC (grub_halt) (int no_apm); + + #endif /* ! GRUB_INIT_MACHINE_HEADER */ diff -upNr --exclude=CVS grub2/include/grub/normal.h grub2.cmds/include/grub/normal.h --- grub2/include/grub/normal.h 2005-01-21 21:32:03.000000000 +0000 +++ grub2.cmds/include/grub/normal.h 2005-01-30 16:18:33.000000000 +0000 @@ -1,7 +1,7 @@ /* normal.h - prototypes for the normal mode */ /* * GRUB -- GRand Unified Bootloader - * Copyright (C) 2002,2003,2005 Free Software Foundation, Inc. + * Copyright (C) 2002,2003 Free Software Foundation, Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -141,6 +141,7 @@ void grub_command_init (void); void grub_normal_init_page (void); int grub_arg_parse (grub_command_t parser, int argc, char **argv, struct grub_arg_list *usr, char ***args, int *argnum); +void grub_arg_show_help (grub_command_t cmd); #ifdef GRUB_UTIL @@ -160,6 +161,8 @@ void grub_terminal_init (void); void grub_terminal_fini (void); void grub_loop_init (void); void grub_loop_fini (void); +void grub_help_init (void); +void grub_help_fini (void); #endif #endif /* ! GRUB_NORMAL_HEADER */ diff -upNr --exclude=CVS grub2/normal/arg.c grub2.cmds/normal/arg.c --- grub2/normal/arg.c 2004-07-12 17:53:07.000000000 +0000 +++ grub2.cmds/normal/arg.c 2005-01-30 16:18:31.000000000 +0000 @@ -101,8 +101,8 @@ show_usage (grub_command_t cmd) grub_printf ("Usage: %s\n", cmd->summary); } -static void -show_help (grub_command_t cmd) +void +grub_arg_show_help (grub_command_t cmd) { static void showargs (const struct grub_arg_option *opt) { @@ -140,7 +140,7 @@ parse_option (grub_command_t cmd, int ke switch (key) { case 'h': - show_help (cmd); + grub_arg_show_help (cmd); return -1; case 'u': diff -upNr --exclude=CVS grub2/normal/cmdline.c grub2.cmds/normal/cmdline.c --- grub2/normal/cmdline.c 2004-12-29 22:43:48.000000000 +0000 +++ grub2.cmds/normal/cmdline.c 2005-01-28 11:42:54.000000000 +0000 @@ -1,6 +1,6 @@ /* * GRUB -- GRand Unified Bootloader - * Copyright (C) 1999,2000,2001,2002,2003,2004 Free Software Foundation, Inc. + * Copyright (C) 1999,2000,2001,2002,2003,2004,2005 Free Software Foundation, Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -459,7 +459,7 @@ grub_cmdline_run (int nested) /* Get a command-line. If ECHO_CHAR is not zero, echo it instead of input characters. If READLINE is non-zero, readline-like key bindings are - available. If ESC is pushed, return non-zero, otherwise return zero. */ + available. If ESC is pushed, return zero, otherwise return non-zero. */ /* FIXME: The dumb interface is not supported yet. */ int grub_cmdline_get (const char *prompt, char cmdline[], unsigned max_len, diff -upNr --exclude=CVS grub2/normal/command.c grub2.cmds/normal/command.c --- grub2/normal/command.c 2004-09-17 09:36:52.000000000 +0000 +++ grub2.cmds/normal/command.c 2005-01-28 11:42:54.000000000 +0000 @@ -1,6 +1,6 @@ /* * GRUB -- GRand Unified Bootloader - * Copyright (C) 2003 Free Software Foundation, Inc. + * Copyright (C) 2003, 2005 Free Software Foundation, Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -316,10 +316,10 @@ grub_command_init (void) "rescue", "Enter into the rescue mode.", 0); grub_register_command ("set", set_command, GRUB_COMMAND_FLAG_BOTH, - "unset ENVVAR", "Set an environment variable.", 0); + "set [ENVVAR=VALUE]", "Set an environment variable.", 0); grub_register_command ("unset", unset_command, GRUB_COMMAND_FLAG_BOTH, - "set [ENVVAR=VALUE]", "Remove an environment variable.", 0); + "unset ENVVAR", "Remove an environment variable.", 0); grub_register_command ("insmod", insmod_command, GRUB_COMMAND_FLAG_BOTH, "insmod MODULE|FILE", "Insert a module.", 0); diff -upNr --exclude=CVS grub2/util/grub-emu.c grub2.cmds/util/grub-emu.c --- grub2/util/grub-emu.c 2005-01-21 21:32:03.000000000 +0000 +++ grub2.cmds/util/grub-emu.c 2005-01-28 11:42:54.000000000 +0000 @@ -177,6 +177,7 @@ main (int argc, char *argv[]) grub_cat_init (); grub_terminal_init (); grub_loop_init (); + grub_help_init (); /* XXX: Should normal mode be started by default? */ grub_normal_init (); @@ -184,6 +185,7 @@ main (int argc, char *argv[]) /* Start GRUB! */ grub_main (); + grub_help_fini (); grub_loop_fini (); grub_util_biosdisk_fini (); grub_normal_fini (); ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2005-01-30 18:01 UTC | newest] Thread overview: 15+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2005-01-28 12:36 New commands (reboot, halt, help) Marco Gerards 2005-01-28 12:52 ` chaac 2005-01-28 14:33 ` Marco Gerards 2005-01-28 18:54 ` Marco Gerards 2005-01-29 1:23 ` Yoshinori K. Okuji 2005-01-29 13:01 ` Marco Gerards 2005-01-29 14:30 ` Yoshinori K. Okuji 2005-01-29 15:11 ` Marco Gerards 2005-01-29 15:31 ` Serbinenko Vladimir 2005-01-29 16:17 ` Marco Gerards 2005-01-29 15:43 ` Marco Gerards 2005-01-29 17:47 ` Yoshinori K. Okuji 2005-01-29 17:45 ` Yoshinori K. Okuji 2005-01-29 18:36 ` Marco Gerards 2005-01-30 17:15 ` Marco Gerards
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.