aboutsummaryrefslogtreecommitdiff
path: root/stand
diff options
context:
space:
mode:
authorWarner Losh <imp@FreeBSD.org>2022-09-01 17:05:42 +0000
committerWarner Losh <imp@FreeBSD.org>2022-09-01 17:08:16 +0000
commit113dfadd5c8c2b8a566bf4d0e969e1dff62c9e2f (patch)
treeb664d2dd965da7dd8b220d5b50e7b59cc3196add /stand
parent991aef97957da8cb1fe5bf6ae4bbce4f8098a734 (diff)
Diffstat (limited to 'stand')
-rw-r--r--stand/common/interp.c31
1 files changed, 19 insertions, 12 deletions
diff --git a/stand/common/interp.c b/stand/common/interp.c
index de5ea55eab41..227e7ad91e29 100644
--- a/stand/common/interp.c
+++ b/stand/common/interp.c
@@ -152,6 +152,19 @@ interp_emit_prompt(void)
free(pr);
}
+static struct bootblk_command *
+interp_lookup_cmd(const char *cmd)
+{
+ struct bootblk_command **cmdp;
+
+ /* search the command set for the command */
+ SET_FOREACH(cmdp, Xcommand_set) {
+ if (((*cmdp)->c_name != NULL) && !strcmp(cmd, (*cmdp)->c_name))
+ return (*cmdp);
+ }
+ return (NULL);
+}
+
/*
* Perform a builtin command
*/
@@ -159,27 +172,21 @@ int
interp_builtin_cmd(int argc, char *argv[])
{
int result;
- struct bootblk_command **cmdp;
- bootblk_cmd_t *cmd;
+ struct bootblk_command *cmd;
if (argc < 1)
- return(CMD_OK);
+ return (CMD_OK);
/* set return defaults; a successful command will override these */
command_errmsg = command_errbuf;
strcpy(command_errbuf, "no error message");
- cmd = NULL;
result = CMD_ERROR;
- /* search the command set for the command */
- SET_FOREACH(cmdp, Xcommand_set) {
- if (((*cmdp)->c_name != NULL) && !strcmp(argv[0], (*cmdp)->c_name))
- cmd = (*cmdp)->c_fn;
- }
- if (cmd != NULL) {
- result = (cmd)(argc, argv);
+ cmd = interp_lookup_cmd(argv[0]);
+ if (cmd != NULL && cmd->c_fn) {
+ result = cmd->c_fn(argc, argv);
} else {
command_errmsg = "unknown command";
}
- return(result);
+ return (result);
}