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 https://review.openocd.org/c/openocd/+/7471

-- gerrit

commit 5a42af73b4d60e6f76fd57de5a4d029c3f281f60
Author: Antonio Borneo <borneo.anto...@gmail.com>
Date:   Mon Dec 19 19:41:46 2022 +0100

    helper: command: drop last LF ('\n') from sequence of command_print()
    
    The OpenOCD commands produce their TCL text result through the
    pair command_print() and command_print_sameline().
    The latter is used to concatenate output in a single line.
    
    At the end of a sequence of command_print(), the last LF is taken
    as part of the command result, while it is not always needed, and
    it is even annoying when the output of two commands needs to be
    concatenate in a single line.
    
    Using command_print_sameline() in place of the last call to
    command_print() would solve the problem but it's quite expensive
    in term of coding to fix all the existing commands.
    
    Drop the last LF, if present.
    Commands that would specifically need a LF as last char, can add a
    second LF at the end of the output.
    
    Change-Id: I6757c20fbfce923dd393083146e8d5a1f3b790b4
    Signed-off-by: Antonio Borneo <borneo.anto...@gmail.com>

diff --git a/src/helper/command.c b/src/helper/command.c
index ca66cf7dd1..12434ec90e 100644
--- a/src/helper/command.c
+++ b/src/helper/command.c
@@ -543,8 +543,16 @@ static int run_command(struct command_context *context,
                if (retval != ERROR_OK)
                        LOG_DEBUG("Command '%s' failed with error code %d",
                                                words[0], retval);
-               /* Use the command output as the Tcl result */
-               Jim_SetResult(context->interp, cmd.output);
+               /*
+                * Use the command output as the Tcl result.
+                * Drop last '\n' to allow command output concatenation
+                * while keep using command_print() everywhere.
+                */
+               const char *output_txt = Jim_String(cmd.output);
+               int len = strlen(output_txt);
+               if (len && output_txt[len - 1] == '\n')
+                       --len;
+               Jim_SetResultString(context->interp, output_txt, len);
        }
        Jim_DecrRefCount(context->interp, cmd.output);
 

-- 

Reply via email to