From 43654efc88119674e78ef9242dca9b440260e36b Mon Sep 17 00:00:00 2001
From: Antonio Borneo <borneo.antonio@gmail.com>
Date: Mon, 8 Nov 2010 15:13:28 +0800
Subject: [PATCH 2/3] JIM: document "echo" command

Document "-n" option in manual;
Modify "echo" command definition as COMMAND_HANDLER to
easily add help message
Add help message aligned with manual.

Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
---
 doc/openocd.texi     |    3 ++-
 src/helper/command.c |   23 ++++++++++++++---------
 2 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/doc/openocd.texi b/doc/openocd.texi
index 5387082..f946bdf 100644
--- a/doc/openocd.texi
+++ b/doc/openocd.texi
@@ -5446,9 +5446,10 @@ file (which is normally the server's standard output).
 @xref{Running}.
 @end deffn
 
-@deffn Command echo message
+@deffn Command echo [-n] message
 Logs a message at "user" priority.
 Output @var{message} to stdout.
+Option "-n" suppresses trailing newline.
 @example
 echo "Downloading kernel -- please wait"
 @end example
diff --git a/src/helper/command.c b/src/helper/command.c
index 6c408ee..af1d66f 100644
--- a/src/helper/command.c
+++ b/src/helper/command.c
@@ -777,19 +777,16 @@ static int jim_find(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
 	return JIM_OK;
 }
 
-static int jim_echo(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
+COMMAND_HANDLER(jim_echo)
 {
-	const char *str;
-	str = Jim_GetString(argv[1], NULL);
-	if (argc == 3 && !strcmp(str, "-n"))
+	if (CMD_ARGC == 2 && !strcmp(CMD_ARGV[0], "-n"))
 	{
-		str = Jim_GetString(argv[2], NULL);
-		LOG_USER_N("%s", str);
+		LOG_USER_N("%s", CMD_ARGV[1]);
 		return JIM_OK;
 	}
-	if (argc != 2)
+	if (CMD_ARGC != 1)
 		return JIM_ERR;
-	LOG_USER("%s", str);
+	LOG_USER("%s", CMD_ARGV[0]);
 	return JIM_OK;
 }
 
@@ -1262,6 +1259,15 @@ static const struct command_registration command_subcommand_handlers[] = {
 
 static const struct command_registration command_builtin_handlers[] = {
 	{
+		.name = "echo",
+		.handler = jim_echo,
+		.mode = COMMAND_ANY,
+		.help = "Logs a message at \"user\" priority. "
+			"Output message to stdout. "
+			"Option \"-n\" suppresses trailing newline",
+		.usage = "[-n] string",
+	},
+	{
 		.name = "add_help_text",
 		.handler = handle_help_add_command,
 		.mode = COMMAND_ANY,
@@ -1364,7 +1370,6 @@ struct command_context* command_init(const char *startup_tcl, Jim_Interp *interp
 			Jim_NewStringObj(interp, HostOs , strlen(HostOs)));
 
 	Jim_CreateCommand(interp, "ocd_find", jim_find, NULL, NULL);
-	Jim_CreateCommand(interp, "echo", jim_echo, NULL, NULL);
 	Jim_CreateCommand(interp, "capture", jim_capture, NULL, NULL);
 
 	register_commands(context, NULL, command_builtin_handlers);
-- 
1.7.2.3

