svn commit: r329000 - head/stand/common
Warner Losh
imp at FreeBSD.org
Wed Feb 7 23:27:39 UTC 2018
Author: imp
Date: Wed Feb 7 23:27:38 2018
New Revision: 329000
URL: https://svnweb.freebsd.org/changeset/base/329000
Log:
Move simple interpreter 'perform' into interp.c and call it
interp_builtin_cmd().
Modified:
head/stand/common/bootstrap.h
head/stand/common/interp.c
head/stand/common/interp_simple.c
Modified: head/stand/common/bootstrap.h
==============================================================================
--- head/stand/common/bootstrap.h Wed Feb 7 23:27:25 2018 (r328999)
+++ head/stand/common/bootstrap.h Wed Feb 7 23:27:38 2018 (r329000)
@@ -47,6 +47,8 @@ extern char command_errbuf[COMMAND_ERRBUFSZ];
/* interp.c */
void interact(void);
void interp_emit_prompt(void);
+int interp_builtin_cmd(int argc, char *argv[]);
+
/* Called by interp.c for interp_*.c embedded interpreters */
int interp_include(const char *filename); /* Execute commands from filename */
void interp_init(void); /* Initialize interpreater */
Modified: head/stand/common/interp.c
==============================================================================
--- head/stand/common/interp.c Wed Feb 7 23:27:25 2018 (r328999)
+++ head/stand/common/interp.c Wed Feb 7 23:27:38 2018 (r329000)
@@ -139,3 +139,35 @@ interp_emit_prompt(void)
putchar(' ');
free(pr);
}
+
+/*
+ * Perform a builtin command
+ */
+int
+interp_builtin_cmd(int argc, char *argv[])
+{
+ int result;
+ struct bootblk_command **cmdp;
+ bootblk_cmd_t *cmd;
+
+ if (argc < 1)
+ 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);
+ } else {
+ command_errmsg = "unknown command";
+ }
+ return(result);
+}
Modified: head/stand/common/interp_simple.c
==============================================================================
--- head/stand/common/interp_simple.c Wed Feb 7 23:27:25 2018 (r328999)
+++ head/stand/common/interp_simple.c Wed Feb 7 23:27:38 2018 (r329000)
@@ -35,38 +35,6 @@ __FBSDID("$FreeBSD$");
#include <string.h>
#include "bootstrap.h"
-/*
- * Perform the command
- */
-static int
-perform(int argc, char *argv[])
-{
- int result;
- struct bootblk_command **cmdp;
- bootblk_cmd_t *cmd;
-
- if (argc < 1)
- 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);
- } else {
- command_errmsg = "unknown command";
- }
- return(result);
-}
-
void
interp_init(void)
{
@@ -86,7 +54,7 @@ interp_run(const char *input)
return CMD_ERROR;
}
- if (perform(argc, argv)) {
+ if (interp_builtin_cmd(argc, argv)) {
printf("%s: %s\n", argv[0], command_errmsg);
free(argv);
return CMD_ERROR;
@@ -195,7 +163,7 @@ interp_include(const char *filename)
/* Parse the command */
if (!parse(&argc, &argv, sp->text)) {
- if ((argc > 0) && (perform(argc, argv) != 0)) {
+ if ((argc > 0) && (interp_builtin_cmd(argc, argv) != 0)) {
/* normal command */
printf("%s: %s\n", argv[0], command_errmsg);
if (!(sp->flags & SL_IGNOREERR)) {
More information about the svn-src-all
mailing list