From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Hzsi1-0004u6-Tb for mharc-grub-devel@gnu.org; Sun, 17 Jun 2007 07:14:17 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Hzshz-0004tZ-LA for grub-devel@gnu.org; Sun, 17 Jun 2007 07:14:15 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Hzshy-0004t3-5a for grub-devel@gnu.org; Sun, 17 Jun 2007 07:14:15 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Hzshx-0004so-KZ for grub-devel@gnu.org; Sun, 17 Jun 2007 07:14:13 -0400 Received: from ug-out-1314.google.com ([66.249.92.170]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Hzshx-0006j6-6S for grub-devel@gnu.org; Sun, 17 Jun 2007 07:14:13 -0400 Received: by ug-out-1314.google.com with SMTP id 34so451178ugf for ; Sun, 17 Jun 2007 04:14:12 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:user-agent:x-accept-language:mime-version:to:subject:content-type; b=NlQMmlK3ZkaJAr16vKIkYxck4kusj3Aakonvmhuy3ulaa3B1jcYjiDutq7FLVAFvlgX4vyk3Op2TKWshoYKk6Y06l9n20Xe9mkS4PegieqIeSxOZK6RLKiifscL/BOTFCI4w2CU0ERDtjmwjvl9opleFyMuLzLgQ90zooQPm5hM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:user-agent:x-accept-language:mime-version:to:subject:content-type; b=Pzdnl/yiHOH2T6tUxfhBYZaRfK4HGYvy7mtsU6uxzgaEd7FPDODwj3G7BiuIAUASdF9AqnoNhzw1ai5rE7H6C3V/ORUZTmA0kAfjZ2Ui3MXxsT0SCCkNULYlT0uhUvrCKit78FIjuxjrL+hhT53WZ5OeqUG3fm3FoLRQ/NCySy8= Received: by 10.66.242.19 with SMTP id p19mr4211937ugh.1182078852433; Sun, 17 Jun 2007 04:14:12 -0700 (PDT) Received: from ?192.168.1.8? ( [88.9.199.48]) by mx.google.com with ESMTP id d26sm10247569nfh.2007.06.17.04.14.11 (version=TLSv1/SSLv3 cipher=RC4-MD5); Sun, 17 Jun 2007 04:14:12 -0700 (PDT) Message-ID: <4675177E.3010304@gmail.com> Date: Sun, 17 Jun 2007 13:14:06 +0200 From: adrian15 User-Agent: Mozilla Thunderbird 1.0.7 (Windows/20050923) X-Accept-Language: en-us, en MIME-Version: 1.0 To: The development of GRUB 2 Content-Type: multipart/mixed; boundary="------------040002050803060501080105" X-detected-kernel: Linux 2.4-2.6 (Google crawlbot) Subject: pause and echo patch X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: The development of GRUB 2 List-Id: The development of GRUB 2 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jun 2007 11:14:16 -0000 This is a multi-part message in MIME format. --------------040002050803060501080105 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit I attach the proposal of patch and I comment some doubts that I have. > diff -urN grub2_2007_05_31_original/commands/echo.c grub2_2007_05_31_pause/commands/echo.c > --- grub2_2007_05_31_original/commands/echo.c 2007-06-11 11:53:26.000000000 +0200 > +++ grub2_2007_05_31_pause/commands/echo.c 2007-06-17 04:25:26.000000000 +0200 > @@ -110,16 +110,35 @@ > return 0; > } > > +static grub_err_t > +grub_cmd_pause (struct grub_arg_list *state __attribute__ ((unused)), > + int argc, char **args) > + > +{ > + > + char key; > + if (argc!=0) > + grub_cmd_echo(state,argc,args); Here there is the trick for not duplicating code! > + key = grub_getkey (); > + > + return 0; > +} > + > > GRUB_MOD_INIT(echo) > { > + > + (void) mod; /* To stop warning. */ > + grub_register_command ("pause", grub_cmd_pause, GRUB_COMMAND_FLAG_BOTH, > + "pause [-e|-n] [MESSAGE]", "Pause and optionally show a message with echo command.", options); > (void) mod; /* To stop warning. */ > grub_register_command ("echo", grub_cmd_echo, GRUB_COMMAND_FLAG_BOTH, > - "echo [-e|-n] FILE", "Display a line of text.", > + "echo [-e|-n] \"STRING\"", "Display a line of text.", > options); > } > > GRUB_MOD_FINI(echo) > { > grub_unregister_command ("echo"); > + grub_unregister_command ("pause"); > } I do not understand very well what's a module. For instance should I have loaded the echo and pause commands in a different module? > > diff -urN grub2_2007_05_31_original/conf/common.rmk grub2_2007_05_31_pause/conf/common.rmk > --- grub2_2007_05_31_original/conf/common.rmk 2007-06-11 11:53:27.000000000 +0200 > +++ grub2_2007_05_31_pause/conf/common.rmk 2007-06-17 04:18:07.000000000 +0200 > @@ -168,7 +168,7 @@ > pkgdata_MODULES += hello.mod boot.mod terminal.mod ls.mod \ > cmp.mod cat.mod help.mod font.mod search.mod \ > loopback.mod configfile.mod \ > - terminfo.mod test.mod blocklist.mod > + terminfo.mod test.mod blocklist.mod echo.mod > > # For hello.mod. > hello_mod_SOURCES = hello/hello.c So if I needed to edit this rmk in order to have one more module I should replicate the lines where it is read echo.mod and put pause.mod, but I should not change the lines with echo.c to pause.c because both commands are in the same file... Am I right? adrian15 --------------040002050803060501080105 Content-Type: text/x-patch; name="grub2_pause_and_echo.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="grub2_pause_and_echo.patch" diff -urN grub2_2007_05_31_original/commands/echo.c grub2_2007_05_31_pause/commands/echo.c --- grub2_2007_05_31_original/commands/echo.c 2007-06-11 11:53:26.000000000 +0200 +++ grub2_2007_05_31_pause/commands/echo.c 2007-06-17 04:25:26.000000000 +0200 @@ -110,16 +110,35 @@ return 0; } +static grub_err_t +grub_cmd_pause (struct grub_arg_list *state __attribute__ ((unused)), + int argc, char **args) + +{ + + char key; + if (argc!=0) + grub_cmd_echo(state,argc,args); + key = grub_getkey (); + + return 0; +} + GRUB_MOD_INIT(echo) { + + (void) mod; /* To stop warning. */ + grub_register_command ("pause", grub_cmd_pause, GRUB_COMMAND_FLAG_BOTH, + "pause [-e|-n] [MESSAGE]", "Pause and optionally show a message with echo command.", options); (void) mod; /* To stop warning. */ grub_register_command ("echo", grub_cmd_echo, GRUB_COMMAND_FLAG_BOTH, - "echo [-e|-n] FILE", "Display a line of text.", + "echo [-e|-n] \"STRING\"", "Display a line of text.", options); } GRUB_MOD_FINI(echo) { grub_unregister_command ("echo"); + grub_unregister_command ("pause"); } diff -urN grub2_2007_05_31_original/conf/common.rmk grub2_2007_05_31_pause/conf/common.rmk --- grub2_2007_05_31_original/conf/common.rmk 2007-06-11 11:53:27.000000000 +0200 +++ grub2_2007_05_31_pause/conf/common.rmk 2007-06-17 04:18:07.000000000 +0200 @@ -168,7 +168,7 @@ pkgdata_MODULES += hello.mod boot.mod terminal.mod ls.mod \ cmp.mod cat.mod help.mod font.mod search.mod \ loopback.mod configfile.mod \ - terminfo.mod test.mod blocklist.mod + terminfo.mod test.mod blocklist.mod echo.mod # For hello.mod. hello_mod_SOURCES = hello/hello.c --------------040002050803060501080105--