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/+/8826

-- gerrit

commit 10b0c81d0e69d9d4c3d9d14837ee83870ae927a9
Author: Antonio Borneo <borneo.anto...@gmail.com>
Date:   Sat Dec 2 18:40:47 2023 +0100

    target: rewrite command 'invoke-event' as COMMAND_HANDLER
    
    The command shares with command 'target create' the
            struct jim_nvp nvp_target_event[]
    
    - Convert the 'struct jim_nvp' in 'struct nvp'.
    - Create an alias 'struct jim_nvp' to decouple the commands
      'invoke-event' and 'target create', abusing the fact that the
      actual layout of the two struct's type is the same. This alias
      will be dropped in a following change.
    - Rewrite the command 'invoke-event' and the helper function
      target_event_name().
    
    Change-Id: I537732fe4c08042cc02bcd0f72142254d7968fa6
    Signed-off-by: Antonio Borneo <borneo.anto...@gmail.com>

diff --git a/src/target/target.c b/src/target/target.c
index 36ad0eec83..3f16caaffe 100644
--- a/src/target/target.c
+++ b/src/target/target.c
@@ -162,7 +162,7 @@ static const char *target_strerror_safe(int err)
                return n->name;
 }
 
-static const struct jim_nvp nvp_target_event[] = {
+static const struct nvp nvp_target_event[] = {
 
        { .value = TARGET_EVENT_GDB_HALT, .name = "gdb-halt" },
        { .value = TARGET_EVENT_HALTED, .name = "halted" },
@@ -214,6 +214,8 @@ static const struct jim_nvp nvp_target_event[] = {
        { .name = NULL, .value = -1 }
 };
 
+static const struct jim_nvp *jim_nvp_target_event = (const struct jim_nvp 
*)nvp_target_event;
+
 static const struct nvp nvp_target_state[] = {
        { .name = "unknown", .value = TARGET_UNKNOWN },
        { .name = "running", .value = TARGET_RUNNING },
@@ -283,7 +285,7 @@ const char *target_state_name(const struct target *t)
 const char *target_event_name(enum target_event event)
 {
        const char *cp;
-       cp = jim_nvp_value2name_simple(nvp_target_event, event)->name;
+       cp = nvp_value2name(nvp_target_event, event)->name;
        if (!cp) {
                LOG_ERROR("Invalid target event: %d", (int)(event));
                cp = "(*BUG*unknown*BUG*)";
@@ -4932,9 +4934,9 @@ no_params:
                                return JIM_ERR;
                        }
 
-                       e = jim_getopt_nvp(goi, nvp_target_event, &n);
+                       e = jim_getopt_nvp(goi, jim_nvp_target_event, &n);
                        if (e != JIM_OK) {
-                               jim_getopt_nvp_unknown(goi, nvp_target_event, 
1);
+                               jim_getopt_nvp_unknown(goi, 
jim_nvp_target_event, 1);
                                return e;
                        }
 
@@ -5469,26 +5471,20 @@ COMMAND_HANDLER(handle_target_debug_reason)
        return ERROR_OK;
 }
 
-static int jim_target_invoke_event(Jim_Interp *interp, int argc, Jim_Obj 
*const *argv)
+COMMAND_HANDLER(handle_target_invoke_event)
 {
-       struct jim_getopt_info goi;
-       jim_getopt_setup(&goi, interp, argc - 1, argv + 1);
-       if (goi.argc != 1) {
-               const char *cmd_name = Jim_GetString(argv[0], NULL);
-               Jim_SetResultFormatted(goi.interp, "%s <eventname>", cmd_name);
-               return JIM_ERR;
-       }
-       struct jim_nvp *n;
-       int e = jim_getopt_nvp(&goi, nvp_target_event, &n);
-       if (e != JIM_OK) {
-               jim_getopt_nvp_unknown(&goi, nvp_target_event, 1);
-               return e;
+       if (CMD_ARGC != 1)
+               return ERROR_COMMAND_SYNTAX_ERROR;
+
+       const struct nvp *n = nvp_name2value(nvp_target_event, CMD_ARGV[0]);
+       if (!n->name) {
+               nvp_unknown_command_print(CMD, nvp_target_event, NULL, 
CMD_ARGV[0]);
+               return ERROR_COMMAND_ARGUMENT_INVALID;
        }
-       struct command_context *cmd_ctx = current_command_context(interp);
-       assert(cmd_ctx);
-       struct target *target = get_current_target(cmd_ctx);
+
+       struct target *target = get_current_target(CMD_CTX);
        target_handle_event(target, n->value);
-       return JIM_OK;
+       return ERROR_OK;
 }
 
 static const struct command_registration target_instance_command_handlers[] = {
@@ -5670,7 +5666,7 @@ static const struct command_registration 
target_instance_command_handlers[] = {
        {
                .name = "invoke-event",
                .mode = COMMAND_EXEC,
-               .jim_handler = jim_target_invoke_event,
+               .handler = handle_target_invoke_event,
                .help = "invoke handler for specified event",
                .usage = "event_name",
        },

-- 

Reply via email to