]> www.infradead.org Git - users/borneoa/openocd-next.git/commitdiff
target: remove events that are set to empty string
authorAntonio Borneo <borneo.antonio@gmail.com>
Sun, 23 Mar 2025 14:27:37 +0000 (15:27 +0100)
committerAntonio Borneo <borneo.antonio@gmail.com>
Sat, 5 Apr 2025 06:23:53 +0000 (06:23 +0000)
Current code allows replacing the body of an existing event, but
it doesn't provides a way to remove it.
Replacing the event with an empty string makes the event still
present and visible through
$target_name eventlist

The presence of empty events makes more complex checking for the
event not set or set to empty.

Remove the event when set to empty string.

While there, add 'Jim_Length' to the list of allowed CamelCase
symbols, avoiding the associated checkpatch error.

Change-Id: I1ec2e1a71d298a0eba0b6863902645bcc6c4cb09
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/8814
Tested-by: jenkins
src/target/target.c
tools/scripts/camelcase.txt

index 53850bf28827057efe3605b0bebf2ae1bfe0b590..8c5c8e5e303d15f700af77c086ba46d03f036de9 100644 (file)
@@ -4968,6 +4968,17 @@ no_params:
                                                LOG_INFO("DEPRECATED target event %s; use TPIU events {pre,post}-{enable,disable}", n->name);
                                        /* END_DEPRECATED_TPIU */
 
+                                       jim_getopt_obj(goi, &o);
+                                       if (Jim_Length(o) == 0) {
+                                               /* empty action, drop existing one */
+                                               if (teap) {
+                                                       list_del(&teap->list);
+                                                       Jim_DecrRefCount(teap->interp, teap->body);
+                                                       free(teap);
+                                               }
+                                               break;
+                                       }
+
                                        bool replace = true;
                                        if (!teap) {
                                                /* create new */
@@ -4976,7 +4987,6 @@ no_params:
                                        }
                                        teap->event = n->value;
                                        teap->interp = goi->interp;
-                                       jim_getopt_obj(goi, &o);
                                        if (teap->body)
                                                Jim_DecrRefCount(teap->interp, teap->body);
                                        teap->body  = Jim_DuplicateObj(goi->interp, o);
index b787902006fd073723ea7e1d80315c4c18173f3f..6c6c28daa5affe6350f0ee0346fec30869f89a4b 100644 (file)
@@ -122,6 +122,7 @@ Jim_GetWide
 Jim_IncrRefCount
 Jim_InitStaticExtensions
 Jim_Interp
+Jim_Length
 Jim_ListAppendElement
 Jim_ListGetIndex
 Jim_ListLength