The branch main has been updated by imp:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=113dfadd5c8c2b8a566bf4d0e969e1dff62c9e2f

commit 113dfadd5c8c2b8a566bf4d0e969e1dff62c9e2f
Author:     Warner Losh <i...@freebsd.org>
AuthorDate: 2022-09-01 17:05:42 +0000
Commit:     Warner Losh <i...@freebsd.org>
CommitDate: 2022-09-01 17:08:16 +0000

    stand: separate the command lookup from the command execution
    
    Factor out interp_lookup_cmd to search for a command from
    interp_builtin_cmd. This simplifies the latter and can be used to expand
    lua to ask if a command exists.
    
    Sponsored by:           Netflix
    Differential Revision:  https://reviews.freebsd.org/D36363
---
 stand/common/interp.c | 31 +++++++++++++++++++------------
 1 file 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);
 }

Reply via email to