]> www.infradead.org Git - users/borneoa/openocd-next.git/commitdiff
target: rewrite commands 'configure' and 'cget' as COMMAND_HANDLER
authorAntonio Borneo <borneo.antonio@gmail.com>
Sat, 2 Dec 2023 22:40:56 +0000 (23:40 +0100)
committerAntonio Borneo <borneo.antonio@gmail.com>
Sat, 19 Apr 2025 09:22:27 +0000 (09:22 +0000)
Rewrite only the command, but still use the old jimtcl specific
code shared with 'target create'.

Change-Id: Ie5e1c9eb237531121c2d143d1732cf281dfdc9ff
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/8828
Tested-by: jenkins
src/target/target.c

index 9d9d73a28eb3c2eee830bf60bc7adb6c9891cde0..4bd2f24ccae7b423484a64e65330827b680f6280 100644 (file)
@@ -5223,22 +5223,28 @@ no_params:
        return JIM_OK;
 }
 
-static int jim_target_configure(Jim_Interp *interp, int argc, Jim_Obj * const *argv)
+COMMAND_HANDLER(handle_target_configure)
 {
-       struct command *c = jim_to_command(interp);
+       if (!CMD_ARGC)
+               return ERROR_COMMAND_SYNTAX_ERROR;
+
        struct jim_getopt_info goi;
 
-       jim_getopt_setup(&goi, interp, argc - 1, argv + 1);
-       goi.is_configure = !strcmp(c->name, "configure");
-       if (goi.argc < 1) {
-               Jim_WrongNumArgs(goi.interp, goi.argc, goi.argv,
-                                "missing: -option ...");
-               return JIM_ERR;
-       }
-       struct command_context *cmd_ctx = current_command_context(interp);
-       assert(cmd_ctx);
-       struct target *target = get_current_target(cmd_ctx);
-       return target_configure(&goi, target);
+       jim_getopt_setup(&goi, CMD_CTX->interp, CMD_ARGC, CMD_JIMTCL_ARGV);
+       goi.is_configure = !strcmp(CMD_NAME, "configure");
+
+       struct target *target = get_current_target(CMD_CTX);
+       int e = target_configure(&goi, target);
+
+       int reslen;
+       const char *result = Jim_GetString(Jim_GetResult(CMD_CTX->interp), &reslen);
+       if (reslen > 0)
+               command_print(CMD, "%s", result);
+
+       if (e != JIM_OK)
+               return ERROR_FAIL;
+
+       return ERROR_OK;
 }
 
 COMMAND_HANDLER(handle_target_examine)
@@ -5491,14 +5497,14 @@ static const struct command_registration target_instance_command_handlers[] = {
        {
                .name = "configure",
                .mode = COMMAND_ANY,
-               .jim_handler = jim_target_configure,
+               .handler = handle_target_configure,
                .help  = "configure a new target for use",
                .usage = "[target_attribute ...]",
        },
        {
                .name = "cget",
                .mode = COMMAND_ANY,
-               .jim_handler = jim_target_configure,
+               .handler = handle_target_configure,
                .help  = "returns the specified target attribute",
                .usage = "target_attribute",
        },