helper/command: do not replace new commands with ocd_ prefix 86/5086/4
authorPaul Fertser <fercerpav@gmail.com>
Thu, 4 Apr 2019 07:40:27 +0000 (09:40 +0200)
committerTomas Vanek <vanekt@fbl.cz>
Tue, 14 May 2019 18:38:43 +0000 (19:38 +0100)
The TCL return values are now consistent, no need anymore for the
hack of registering the commands with "ocd_" prefix and override
them with proc ocd_bouncer.

Clean-up the command registration and remove the proc ocd_bouncer.

This change was part of http://openocd.zylin.com/1815 from Paul
Fertser and has been extracted and rebased to simplify the review.

Change-Id: I2a467e73ecb068686ea3fda91bf961aba6db6427
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/5086
Tested-by: jenkins
src/helper/command.c
src/helper/startup.tcl

index bab98dfee9521d3e8a03db89a25f0a7c370cb7be..4883984f1486eba49281ad8a7f1181943f08f63a 100644 (file)
@@ -351,27 +351,11 @@ static int register_command_handler(struct command_context *cmd_ctx,
        struct command *c)
 {
        Jim_Interp *interp = cmd_ctx->interp;
-       char *ocd_name = alloc_printf("ocd_%s", c->name);
-       if (NULL == ocd_name)
-               return JIM_ERR;
 
-       LOG_DEBUG("registering '%s'...", ocd_name);
+       LOG_DEBUG("registering '%s'...", c->name);
 
        Jim_CmdProc *func = c->handler ? &script_command : &command_unknown;
-       int retval = Jim_CreateCommand(interp, ocd_name, func, c, NULL);
-       free(ocd_name);
-       if (JIM_OK != retval)
-               return retval;
-
-       /* we now need to add an overrideable proc */
-       char *override_name = alloc_printf(
-                       "proc %s {args} {eval ocd_bouncer %s $args}",
-                       c->name, c->name);
-       if (NULL == override_name)
-               return JIM_ERR;
-
-       retval = Jim_Eval_Named(interp, override_name, 0, 0);
-       free(override_name);
+       int retval = Jim_CreateCommand(interp, c->name, func, c, NULL);
 
        return retval;
 }
index cda3a8fa334dda1f031a57ffb46d63c7eb8277e6..691e3824fc753b10e211929180149fcb8ac656a8 100644 (file)
@@ -3,36 +3,6 @@
 # Embedded into OpenOCD executable
 #
 
-# All commands are registered with an 'ocd_' prefix, while the "real"
-# command is a wrapper that calls this function.  Its primary purpose is
-# to discard 'handler' command output.
-# Due to the two nested proc calls, this wrapper has to explicitly run
-# the wrapped command in the stack frame two levels above.
-proc ocd_bouncer {name args} {
-       set cmd [format "ocd_%s" $name]
-       set type [eval ocd_command type $cmd $args]
-       set errcode error
-       set skiplevel [expr [eval info level] > 1 ? 2 : 1]
-       if {$type == "native"} {
-               return [uplevel $skiplevel $cmd $args]
-       } else {if {$type == "simple"} {
-               set errcode [catch {uplevel $skiplevel $cmd $args}]
-               if {$errcode == 0} {
-                       return ""
-               } else {
-                       # 'classic' commands output error message as part of progress output
-                       set errmsg ""
-               }
-       } else {if {$type == "group"} {
-               catch {eval ocd_usage $name $args}
-               set errmsg [format "%s: command requires more arguments" \
-                       [concat $name " " $args]]
-       } else {
-               set errmsg [format "invalid subcommand \"%s\"" $args]
-       }}}
-       return -code $errcode $errmsg
-}
-
 # Try flipping / and \ to find file if the filename does not
 # match the precise spelling
 proc find {filename} {

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)