-struct command* register_command(struct command_context *cmd_ctx,
- struct command *parent, const struct command_registration *rec);
-
-#define COMMAND_REGISTER(_cmd_ctx, _parent, _name, _handler, _mode, _help) \
- ({ \
- struct command_registration cr = { \
- .name = _name, \
- .handler = _handler, \
- .mode = _mode, \
- .help = _help, \
- }; \
- register_command(_cmd_ctx, _parent, &cr); \
- })
+struct command *register_command(struct command_context *cmd_ctx,
+ struct command *parent, const struct command_registration *rec);
+
+/**
+ * Register one or more commands in the specified context, as children
+ * of @c parent (or top-level commends, if NULL). In a registration's
+ * record contains a non-NULL @c chain member and name is NULL, the
+ * commands on the chain will be registered in the same context.
+ * 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
+ * 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.
+ */
+int register_commands(struct command_context *cmd_ctx, struct command *parent,
+ const struct command_registration *cmds);
+