This is an automated email from Gerrit.

Antonio Borneo (borneo.anto...@gmail.com) just uploaded a new patch set to 
Gerrit, which you can find at http://openocd.zylin.com/6436

-- gerrit

commit 4e615adc8a98ecb2a05ad2ffe464c0306c87d47c
Author: Antonio Borneo <borneo.anto...@gmail.com>
Date:   Thu Aug 12 00:14:29 2021 +0200

    command: log the command only when it is executed
    
    In case of multi-word commands, the command dispatcher is nested
    called at each word during command name parsing.
    The improper position of the call to script_debug() causes the
    command line to be logged once at each parsed word.
    In the example of command "cpu arm disassemble 0" the full command
    is logged three times for "cpu", "arm" and "disassemble":
    
        Debug: 656617 61843 command.c:201 script_debug(): command - cpu arm 
disassemble 0
        Debug: 656618 61843 command.c:201 script_debug(): command - cpu arm 
disassemble 0
        Debug: 656619 61843 command.c:201 script_debug(): command - cpu arm 
disassemble 0
    
    Call script_debug() only when the parsing is terminated and the
    command handler is going to be executed.
    
    Change-Id: Ide4cb01b3b38912e2e24b073c94a9560f92d30bb
    Signed-off-by: Antonio Borneo <borneo.anto...@gmail.com>

diff --git a/src/helper/command.c b/src/helper/command.c
index 42cb8c7..e5529d9 100644
--- a/src/helper/command.c
+++ b/src/helper/command.c
@@ -954,8 +954,6 @@ static int exec_command(Jim_Interp *interp, struct 
command_context *cmd_ctx,
 
 static int jim_command_dispatch(Jim_Interp *interp, int argc, Jim_Obj * const 
*argv)
 {
-       script_debug(interp, argc, argv);
-
        /* check subcommands */
        if (argc > 1) {
                char *s = alloc_printf("%s %s", Jim_GetString(argv[0], NULL), 
Jim_GetString(argv[1], NULL));
@@ -971,6 +969,8 @@ static int jim_command_dispatch(Jim_Interp *interp, int 
argc, Jim_Obj * const *a
                Jim_DecrRefCount(interp, js);
        }
 
+       script_debug(interp, argc, argv);
+
        struct command *c = jim_to_command(interp);
        if (!c->jim_handler && !c->handler) {
                Jim_EvalObjPrefix(interp, Jim_NewStringObj(interp, "usage", 
-1), 1, argv);

-- 

Reply via email to