aboutsummaryrefslogtreecommitdiff
path: root/src/helper
diff options
context:
space:
mode:
authorAntonio Borneo <borneo.antonio@gmail.com>2020-05-10 19:35:56 +0200
committerAntonio Borneo <borneo.antonio@gmail.com>2021-04-18 15:33:30 +0100
commit41c95aa4ea1506a951dad0147f6cd4b8d7043358 (patch)
treef573214b497914549a9b81872dc528f0b70c7870 /src/helper
parent428938993742f4f961cdc948593d9553f721c321 (diff)
downloadriscv-openocd-41c95aa4ea1506a951dad0147f6cd4b8d7043358.zip
riscv-openocd-41c95aa4ea1506a951dad0147f6cd4b8d7043358.tar.gz
riscv-openocd-41c95aa4ea1506a951dad0147f6cd4b8d7043358.tar.bz2
helper/command: pass command prefix to command registration
Replace the "struct command *parent" parameter with a string that contains the command prefix. This abstracts the openocd code from the knowledge of the tree of struct command. This also makes unused the function command_find_in_context(), so remove it. Change-Id: I598d60719cfdc1811ee6f6edfff8a116f82c7ed6 Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-on: http://openocd.zylin.com/5668 Tested-by: jenkins Reviewed-by: Oleksij Rempel <linux@rempel-privat.de>
Diffstat (limited to 'src/helper')
-rw-r--r--src/helper/command.c22
-rw-r--r--src/helper/command.h23
2 files changed, 24 insertions, 21 deletions
diff --git a/src/helper/command.c b/src/helper/command.c
index 89e2173..114d073 100644
--- a/src/helper/command.c
+++ b/src/helper/command.c
@@ -244,12 +244,6 @@ static struct command *command_find(struct command *head, const char *name)
return NULL;
}
-struct command *command_find_in_context(struct command_context *cmd_ctx,
- const char *name)
-{
- return command_find(cmd_ctx->commands, name);
-}
-
/**
* Add the command into the linked list, sorted by name.
* @param head Address to head of command list pointer, which may be
@@ -391,7 +385,7 @@ static struct command *register_command(struct command_context *context,
return c;
}
-int __register_commands(struct command_context *cmd_ctx, struct command *parent,
+static int ___register_commands(struct command_context *cmd_ctx, struct command *parent,
const struct command_registration *cmds, void *data,
struct target *override_target)
{
@@ -412,7 +406,7 @@ int __register_commands(struct command_context *cmd_ctx, struct command *parent,
}
if (NULL != cr->chain) {
struct command *p = c ? : parent;
- retval = __register_commands(cmd_ctx, p, cr->chain, data, override_target);
+ retval = ___register_commands(cmd_ctx, p, cr->chain, data, override_target);
if (ERROR_OK != retval)
break;
}
@@ -424,6 +418,18 @@ int __register_commands(struct command_context *cmd_ctx, struct command *parent,
return retval;
}
+int __register_commands(struct command_context *cmd_ctx, const char *cmd_prefix,
+ const struct command_registration *cmds, void *data,
+ struct target *override_target)
+{
+ struct command *parent = NULL;
+
+ if (cmd_prefix)
+ parent = command_find(cmd_ctx->commands, cmd_prefix);
+
+ return ___register_commands(cmd_ctx, parent, cmds, data, override_target);
+}
+
int unregister_all_commands(struct command_context *context,
struct command *parent)
{
diff --git a/src/helper/command.h b/src/helper/command.h
index 871c064..9a04e9f 100644
--- a/src/helper/command.h
+++ b/src/helper/command.h
@@ -240,7 +240,7 @@ struct command_registration {
/** Use this as the last entry in an array of command_registration records. */
#define COMMAND_REGISTRATION_DONE { .name = NULL, .chain = NULL }
-int __register_commands(struct command_context *cmd_ctx, struct command *parent,
+int __register_commands(struct command_context *cmd_ctx, const char *cmd_prefix,
const struct command_registration *cmds, void *data,
struct target *override_target);
@@ -252,17 +252,17 @@ int __register_commands(struct command_context *cmd_ctx, struct command *parent,
* Otherwise, the chained commands are added as children of the command.
*
* @param cmd_ctx The command_context in which to register the command.
- * @param parent Register this command as a child of this, or NULL to
+ * @param cmd_prefix Register this command as a child of this, or NULL to
* register a top-level command.
* @param cmds Pointer to an array of command_registration records that
* contains the desired command parameters. The last record must have
* NULL for all fields.
* @returns ERROR_OK on success; ERROR_FAIL if any registration fails.
*/
-static inline int register_commands(struct command_context *cmd_ctx, struct command *parent,
+static inline int register_commands(struct command_context *cmd_ctx, const char *cmd_prefix,
const struct command_registration *cmds)
{
- return __register_commands(cmd_ctx, parent, cmds, NULL, NULL);
+ return __register_commands(cmd_ctx, cmd_prefix, cmds, NULL, NULL);
}
/**
@@ -270,7 +270,7 @@ static inline int register_commands(struct command_context *cmd_ctx, struct comm
* that command should override the current target
*
* @param cmd_ctx The command_context in which to register the command.
- * @param parent Register this command as a child of this, or NULL to
+ * @param cmd_prefix Register this command as a child of this, or NULL to
* register a top-level command.
* @param cmds Pointer to an array of command_registration records that
* contains the desired command parameters. The last record must have
@@ -279,10 +279,10 @@ static inline int register_commands(struct command_context *cmd_ctx, struct comm
* @returns ERROR_OK on success; ERROR_FAIL if any registration fails.
*/
static inline int register_commands_override_target(struct command_context *cmd_ctx,
- struct command *parent, const struct command_registration *cmds,
+ const char *cmd_prefix, const struct command_registration *cmds,
struct target *target)
{
- return __register_commands(cmd_ctx, parent, cmds, NULL, target);
+ return __register_commands(cmd_ctx, cmd_prefix, cmds, NULL, target);
}
/**
@@ -292,7 +292,7 @@ static inline int register_commands_override_target(struct command_context *cmd_
* is unregistered.
*
* @param cmd_ctx The command_context in which to register the command.
- * @param parent Register this command as a child of this, or NULL to
+ * @param cmd_prefix Register this command as a child of this, or NULL to
* register a top-level command.
* @param cmds Pointer to an array of command_registration records that
* contains the desired command parameters. The last record must have
@@ -301,10 +301,10 @@ static inline int register_commands_override_target(struct command_context *cmd_
* @returns ERROR_OK on success; ERROR_FAIL if any registration fails.
*/
static inline int register_commands_with_data(struct command_context *cmd_ctx,
- struct command *parent, const struct command_registration *cmds,
+ const char *cmd_prefix, const struct command_registration *cmds,
void *data)
{
- return __register_commands(cmd_ctx, parent, cmds, data, NULL);
+ return __register_commands(cmd_ctx, cmd_prefix, cmds, data, NULL);
}
/**
@@ -316,9 +316,6 @@ static inline int register_commands_with_data(struct command_context *cmd_ctx,
int unregister_all_commands(struct command_context *cmd_ctx,
struct command *parent);
-struct command *command_find_in_context(struct command_context *cmd_ctx,
- const char *name);
-
void command_set_output_handler(struct command_context *context,
command_output_handler_t output_handler, void *priv);