Author: imp
Date: Tue Dec 12 22:06:22 2017
New Revision: 326812
URL: https://svnweb.freebsd.org/changeset/base/326812

Log:
  Revert r326792, r326784, r326772, r326712
  
  Something subtle is creating problems for disk access on ubldr. Back
  it out unti that can be sorted out.
  
  Sponsored by: Netflix

Deleted:
  head/stand/common/interp.h
  head/stand/common/interp_simple.c
Modified:
  head/stand/common/bootstrap.h
  head/stand/common/interp.c
  head/stand/common/interp_forth.c
  head/stand/efi/loader/main.c
  head/stand/i386/loader/main.c
  head/stand/loader.mk
  head/stand/mips/beri/loader/main.c
  head/stand/ofw/common/main.c
  head/stand/powerpc/kboot/main.c
  head/stand/powerpc/ps3/main.c
  head/stand/sparc64/loader/main.c
  head/stand/uboot/common/main.c
  head/stand/userboot/userboot/main.c

Modified: head/stand/common/bootstrap.h
==============================================================================
--- head/stand/common/bootstrap.h       Tue Dec 12 20:41:11 2017        
(r326811)
+++ head/stand/common/bootstrap.h       Tue Dec 12 22:06:22 2017        
(r326812)
@@ -45,7 +45,7 @@ extern char   command_errbuf[COMMAND_ERRBUFSZ];
 #define CMD_FATAL      4
 
 /* interp.c */
-void   interact(void);
+void   interact(const char *rc);
 int    include(const char *filename);
 
 /* interp_backslash.c */
@@ -53,6 +53,10 @@ char *backslash(const char *str);
 
 /* interp_parse.c */
 int    parse(int *argc, char ***argv, const char *str);
+
+/* interp_forth.c */
+void   bf_init(const char *rc);
+int    bf_run(char *line);
 
 /* boot.c */
 int    autoboot(int timeout, char *prompt);

Modified: head/stand/common/interp.c
==============================================================================
--- head/stand/common/interp.c  Tue Dec 12 20:41:11 2017        (r326811)
+++ head/stand/common/interp.c  Tue Dec 12 22:06:22 2017        (r326812)
@@ -1,6 +1,5 @@
 /*-
  * Copyright (c) 1998 Michael Smith <msm...@freebsd.org>
- * Copyright (c) 2011 Wojciech A. Koszek <wkos...@freebsd.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -24,6 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
+
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
@@ -36,60 +36,112 @@ __FBSDID("$FreeBSD$");
 #include <stand.h>
 #include <string.h>
 #include "bootstrap.h"
-#include "interp.h"
 
+#ifdef BOOT_FORTH
+#include "ficl.h"
+#define        RETURN(x)       stackPushINT(bf_vm->pStack,!x); return(x)
 
-#define        MAXARGS 20                      /* maximum number of arguments 
allowed */
-
-struct interp  *interp =
-#if defined(BOOT_FORTH)
-       &boot_interp_forth;
+extern FICL_VM *bf_vm;
 #else
-       &boot_interp_simple;
+#define        RETURN(x)       return(x)
 #endif
 
+#define        MAXARGS 20                      /* maximum number of arguments 
allowed */
+
+static void    prompt(void);
+
+#ifndef BOOT_FORTH
+static int     perform(int argc, char *argv[]);
+
+/*
+ * Perform the command
+ */
 int
-default_load_config(void *ctx)
+perform(int argc, char *argv[])
 {
-       return INTERP_INCL(interp, "/boot/loader.rc");
+    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);
 }
+#endif /* ! BOOT_FORTH */
 
 /*
  * Interactive mode
  */
 void
-interact(void)
+interact(const char *rc)
 {
-       static char     input[256];                     /* big enough? */
+    static char        input[256];                     /* big enough? */
+#ifndef BOOT_FORTH
+    int                argc;
+    char       **argv;
+#endif
 
-       INTERP_INIT(interp);
+#ifdef BOOT_FORTH
+    bf_init((rc) ? "" : NULL);
+#endif
 
-       /*
-        * Read our default configuration
-        */
-       INTERP_LOAD_DEF_CONFIG(interp);
-       printf("\n");
-       /*
-        * Before interacting, we might want to autoboot.
-        */
-       autoboot_maybe();
+    if (rc == NULL) {
+       /* Read our default configuration. */
+       include("/boot/loader.rc");
+    } else if (*rc != '\0')
+       include(rc);
 
-       /*
-        * Not autobooting, go manual
-        */
-       printf("\nType '?' for a list of commands, 'help' for more detailed 
help.\n");
-       if (getenv("prompt") == NULL)
-               setenv("prompt", "${interpret}", 1);
-       if (getenv("interpret") == NULL)
-               setenv("interpret", "OK", 1);
+    printf("\n");
 
+    /*
+     * Before interacting, we might want to autoboot.
+     */
+    autoboot_maybe();
+    
+    /*
+     * Not autobooting, go manual
+     */
+    printf("\nType '?' for a list of commands, 'help' for more detailed 
help.\n");
+    if (getenv("prompt") == NULL)
+       setenv("prompt", "${interpret}", 1);
+    if (getenv("interpret") == NULL)
+        setenv("interpret", "OK", 1);
+    
 
-       for (;;) {
-               input[0] = '\0';
-               prompt();
-               ngets(input, sizeof(input));
-               INTERP_RUN(interp, input);
+    for (;;) {
+       input[0] = '\0';
+       prompt();
+       ngets(input, sizeof(input));
+#ifdef BOOT_FORTH
+       bf_vm->sourceID.i = 0;
+       bf_run(input);
+#else
+       if (!parse(&argc, &argv, input)) {
+           if (perform(argc, argv))
+               printf("%s: %s\n", argv[0], command_errmsg);
+           free(argv);
+       } else {
+           printf("parse error\n");
        }
+#endif
+    }
 }
 
 /*
@@ -106,90 +158,214 @@ COMMAND_SET(include, "include", "read commands from a 
 static int
 command_include(int argc, char *argv[])
 {
-       int             i;
-       int             res;
-       char    **argvbuf;
+    int                i;
+    int                res;
+    char       **argvbuf;
 
-       /*
-        * Since argv is static, we need to save it here.
-        */
-       argvbuf = (char**) calloc((u_int)argc, sizeof(char*));
-       for (i = 0; i < argc; i++)
-               argvbuf[i] = strdup(argv[i]);
+    /* 
+     * Since argv is static, we need to save it here.
+     */
+    argvbuf = (char**) calloc((u_int)argc, sizeof(char*));
+    for (i = 0; i < argc; i++)
+       argvbuf[i] = strdup(argv[i]);
 
-       res=CMD_OK;
-       for (i = 1; (i < argc) && (res == CMD_OK); i++)
-               res = INTERP_INCL(interp, argvbuf[i]);
+    res=CMD_OK;
+    for (i = 1; (i < argc) && (res == CMD_OK); i++)
+       res = include(argvbuf[i]);
 
-       for (i = 0; i < argc; i++)
-               free(argvbuf[i]);
-       free(argvbuf);
+    for (i = 0; i < argc; i++)
+       free(argvbuf[i]);
+    free(argvbuf);
 
-       if (res != CMD_OK)
-               printf("%s", command_errbuf);
-
-       return(res);
+    return(res);
 }
 
 /*
- * Perform the command
+ * Header prepended to each line. The text immediately follows the header.
+ * We try to make this short in order to save memory -- the loader has
+ * limited memory available, and some of the forth files are very long.
  */
+struct includeline 
+{
+    struct includeline *next;
+#ifndef BOOT_FORTH
+    int                        flags;
+    int                        line;
+#define SL_QUIET       (1<<0)
+#define SL_IGNOREERR   (1<<1)
+#endif
+    char               text[0];
+};
+
 int
-perform(int argc, char *argv[])
+include(const char *filename)
 {
-       int                             result;
-       struct bootblk_command  **cmdp;
-       bootblk_cmd_t           *cmd;
+    struct includeline *script, *se, *sp;
+    char               input[256];                     /* big enough? */
+#ifdef BOOT_FORTH
+    int                        res;
+    char               *cp;
+    int                        prevsrcid, fd, line;
+#else
+    int                        argc,res;
+    char               **argv, *cp;
+    int                        fd, flags, line;
+#endif
 
-       if (argc < 1)
-               return(CMD_OK);
+    if (((fd = open(filename, O_RDONLY)) == -1)) {
+       snprintf(command_errbuf, sizeof(command_errbuf),
+           "can't open '%s': %s", filename, strerror(errno));
+       return(CMD_ERROR);
+    }
 
-       /* 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;
+    /*
+     * Read the script into memory.
+     */
+    script = se = NULL;
+    line = 0;
+       
+    while (fgetstr(input, sizeof(input), fd) >= 0) {
+       line++;
+#ifdef BOOT_FORTH
+       cp = input;
+#else
+       flags = 0;
+       /* Discard comments */
+       if (strncmp(input+strspn(input, " "), "\\ ", 2) == 0)
+           continue;
+       cp = input;
+       /* Echo? */
+       if (input[0] == '@') {
+           cp++;
+           flags |= SL_QUIET;
        }
-       if (cmd != NULL) {
-               result = (cmd)(argc, argv);
+       /* Error OK? */
+       if (input[0] == '-') {
+           cp++;
+           flags |= SL_IGNOREERR;
+       }
+#endif
+       /* Allocate script line structure and copy line, flags */
+       if (*cp == '\0')
+               continue;       /* ignore empty line, save memory */
+       sp = malloc(sizeof(struct includeline) + strlen(cp) + 1);
+       /* On malloc failure (it happens!), free as much as possible and exit */
+       if (sp == NULL) {
+               while (script != NULL) {
+                       se = script;
+                       script = script->next;
+                       free(se);
+               }
+               snprintf(command_errbuf, sizeof(command_errbuf),
+                   "file '%s' line %d: memory allocation failure - aborting",
+                   filename, line);
+               return (CMD_ERROR);
+       }
+       strcpy(sp->text, cp);
+#ifndef BOOT_FORTH
+       sp->flags = flags;
+       sp->line = line;
+#endif
+       sp->next = NULL;
+           
+       if (script == NULL) {
+           script = sp;
        } else {
-               command_errmsg = "unknown command";
+           se->next = sp;
        }
-       return result;
+       se = sp;
+    }
+    close(fd);
+    
+    /*
+     * Execute the script
+     */
+#ifndef BOOT_FORTH
+    argv = NULL;
+#else
+    prevsrcid = bf_vm->sourceID.i;
+    bf_vm->sourceID.i = fd;
+#endif
+    res = CMD_OK;
+    for (sp = script; sp != NULL; sp = sp->next) {
+       
+#ifdef BOOT_FORTH
+       res = bf_run(sp->text);
+       if (res != VM_OUTOFTEXT) {
+               snprintf(command_errbuf, sizeof(command_errbuf),
+                   "Error while including %s, in the line:\n%s",
+                   filename, sp->text);
+               res = CMD_ERROR;
+               break;
+       } else
+               res = CMD_OK;
+#else
+       /* print if not being quiet */
+       if (!(sp->flags & SL_QUIET)) {
+           prompt();
+           printf("%s\n", sp->text);
+       }
+
+       /* Parse the command */
+       if (!parse(&argc, &argv, sp->text)) {
+           if ((argc > 0) && (perform(argc, argv) != 0)) {
+               /* normal command */
+               printf("%s: %s\n", argv[0], command_errmsg);
+               if (!(sp->flags & SL_IGNOREERR)) {
+                   res=CMD_ERROR;
+                   break;
+               }
+           }
+           free(argv);
+           argv = NULL;
+       } else {
+           printf("%s line %d: parse error\n", filename, sp->line);
+           res=CMD_ERROR;
+           break;
+       }
+#endif
+    }
+#ifndef BOOT_FORTH
+    if (argv != NULL)
+       free(argv);
+#else
+    bf_vm->sourceID.i = prevsrcid;
+#endif
+    while(script != NULL) {
+       se = script;
+       script = script->next;
+       free(se);
+    }
+    return(res);
 }
 
 /*
  * Emit the current prompt; use the same syntax as the parser
  * for embedding environment variables.
  */
-void
-prompt(void)
+static void
+prompt(void) 
 {
-       char    *pr, *p, *cp, *ev;
+    char       *pr, *p, *cp, *ev;
+    
+    if ((cp = getenv("prompt")) == NULL)
+       cp = ">";
+    pr = p = strdup(cp);
 
-       if ((cp = getenv("prompt")) == NULL)
-               cp = ">";
-       pr = p = strdup(cp);
-
-       while (*p != 0) {
-               if ((*p == '$') && (*(p+1) == '{')) {
-                       for (cp = p + 2; (*cp != 0) && (*cp != '}'); cp++)
-                               ;
-                       *cp = 0;
-                       ev = getenv(p + 2);
-
-                       if (ev != NULL)
-                               printf("%s", ev);
-                       p = cp + 1;
-                       continue;
-               }
-               putchar(*p++);
+    while (*p != 0) {
+       if ((*p == '$') && (*(p+1) == '{')) {
+           for (cp = p + 2; (*cp != 0) && (*cp != '}'); cp++)
+               ;
+           *cp = 0;
+           ev = getenv(p + 2);
+           
+           if (ev != NULL)
+               printf("%s", ev);
+           p = cp + 1;
+           continue;
        }
-       putchar(' ');
-       free(pr);
+       putchar(*p++);
+    }
+    putchar(' ');
+    free(pr);
 }

Modified: head/stand/common/interp_forth.c
==============================================================================
--- head/stand/common/interp_forth.c    Tue Dec 12 20:41:11 2017        
(r326811)
+++ head/stand/common/interp_forth.c    Tue Dec 12 22:06:22 2017        
(r326812)
@@ -1,6 +1,5 @@
 /*-
  * Copyright (c) 1998 Michael Smith <msm...@freebsd.org>
- * Copyright (c) 2011 Wojciech A. Koszek <wkos...@freebsd.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -33,7 +32,6 @@ __FBSDID("$FreeBSD$");
 #include <stand.h>
 #include "bootstrap.h"
 #include "ficl.h"
-#include "interp.h"
 
 extern unsigned bootprog_rev;
 
@@ -62,14 +60,9 @@ extern unsigned bootprog_rev;
 /*
  * BootForth   Interface to Ficl Forth interpreter.
  */
-struct interp_forth_softc {
-       FICL_SYSTEM *bf_sys;
-       FICL_VM *bf_vm;
-       FICL_WORD *pInterp;
-};
-struct interp_forth_softc      forth_softc = { NULL, NULL, NULL };
 
-#define        RETURN(x)       stackPushINT(bf_vm->pStack,!x); return(x)
+FICL_SYSTEM *bf_sys;
+FICL_VM        *bf_vm;
 
 /*
  * Shim for taking commands from BF and passing them out to 'standard'
@@ -78,93 +71,91 @@ struct interp_forth_softc   forth_softc = { NULL, NULL, 
 static void
 bf_command(FICL_VM *vm)
 {
-       char                    *name, *line, *tail, *cp;
-       size_t                  len;
-       struct bootblk_command  **cmdp;
-       bootblk_cmd_t           *cmd;
-       int                     nstrings, i;
-       int                     argc, result;
-       char                    **argv;
+    char                       *name, *line, *tail, *cp;
+    size_t                     len;
+    struct bootblk_command     **cmdp;
+    bootblk_cmd_t              *cmd;
+    int                                nstrings, i;
+    int                                argc, result;
+    char                       **argv;
 
-       /* Get the name of the current word */
-       name = vm->runningWord->name;
+    /* Get the name of the current word */
+    name = vm->runningWord->name;
+    
+    /* Find our command structure */
+    cmd = NULL;
+    SET_FOREACH(cmdp, Xcommand_set) {
+       if (((*cmdp)->c_name != NULL) && !strcmp(name, (*cmdp)->c_name))
+           cmd = (*cmdp)->c_fn;
+    }
+    if (cmd == NULL)
+       panic("callout for unknown command '%s'", name);
+   
+    /* Check whether we have been compiled or are being interpreted */
+    if (stackPopINT(vm->pStack)) {
+       /*
+        * Get parameters from stack, in the format:
+        * an un ... a2 u2 a1 u1 n --
+        * Where n is the number of strings, a/u are pairs of
+        * address/size for strings, and they will be concatenated
+        * in LIFO order.
+        */
+       nstrings = stackPopINT(vm->pStack);
+       for (i = 0, len = 0; i < nstrings; i++)
+           len += stackFetch(vm->pStack, i * 2).i + 1;
+       line = malloc(strlen(name) + len + 1);
+       strcpy(line, name);
 
-       /* Find our command structure */
-       cmd = NULL;
-       SET_FOREACH(cmdp, Xcommand_set) {
-               if (((*cmdp)->c_name != NULL) && !strcmp(name, (*cmdp)->c_name))
-                       cmd = (*cmdp)->c_fn;
+       if (nstrings)
+           for (i = 0; i < nstrings; i++) {
+               len = stackPopINT(vm->pStack);
+               cp = stackPopPtr(vm->pStack);
+               strcat(line, " ");
+               strncat(line, cp, len);
+           }
+    } else {
+       /* Get remainder of invocation */
+       tail = vmGetInBuf(vm);
+       for (cp = tail, len = 0; cp != vm->tib.end && *cp != 0 && *cp != '\n'; 
cp++, len++)
+           ;
+    
+       line = malloc(strlen(name) + len + 2);
+       strcpy(line, name);
+       if (len > 0) {
+           strcat(line, " ");
+           strncat(line, tail, len);
+           vmUpdateTib(vm, tail + len);
        }
-       if (cmd == NULL)
-               panic("callout for unknown command '%s'", name);
+    }
+    DEBUG("cmd '%s'", line);
+    
+    command_errmsg = command_errbuf;
+    command_errbuf[0] = 0;
+    if (!parse(&argc, &argv, line)) {
+       result = (cmd)(argc, argv);
+       free(argv);
+    } else {
+       result=BF_PARSE;
+    }
 
-       /* Check whether we have been compiled or are being interpreted */
-       if (stackPopINT(vm->pStack)) {
-               /*
-               * Get parameters from stack, in the format:
-               * an un ... a2 u2 a1 u1 n --
-               * Where n is the number of strings, a/u are pairs of
-               * address/size for strings, and they will be concatenated
-               * in LIFO order.
-               */
-               nstrings = stackPopINT(vm->pStack);
-               for (i = 0, len = 0; i < nstrings; i++)
-                       len += stackFetch(vm->pStack, i * 2).i + 1;
-               line = malloc(strlen(name) + len + 1);
-               strcpy(line, name);
+    switch (result) {
+    case CMD_CRIT:
+       printf("%s\n", command_errmsg);
+       break;
+    case CMD_FATAL:
+       panic("%s\n", command_errmsg);
+    }
 
-               if (nstrings)
-                       for (i = 0; i < nstrings; i++) {
-                               len = stackPopINT(vm->pStack);
-                               cp = stackPopPtr(vm->pStack);
-                               strcat(line, " ");
-                               strncat(line, cp, len);
-                       }
-       } else {
-               /* Get remainder of invocation */
-               tail = vmGetInBuf(vm);
-               for (cp = tail, len = 0; cp != vm->tib.end && *cp != 0 && *cp 
!= '\n'; cp++, len++)
-                       ;
+    free(line);
+    /*
+     * If there was error during nested ficlExec(), we may no longer have
+     * valid environment to return.  Throw all exceptions from here.
+     */
+    if (result != CMD_OK)
+       vmThrow(vm, result);
 
-               line = malloc(strlen(name) + len + 2);
-               strcpy(line, name);
-               if (len > 0) {
-                       strcat(line, " ");
-                       strncat(line, tail, len);
-                       vmUpdateTib(vm, tail + len);
-               }
-       }
-       DEBUG("cmd '%s'", line);
-
-       command_errmsg = command_errbuf;
-       command_errbuf[0] = 0;
-       if (!parse(&argc, &argv, line)) {
-               result = (cmd)(argc, argv);
-               free(argv);
-       } else {
-               result=BF_PARSE;
-       }
-
-       /* XXX Not sure about the rest of this -- imp */
-
-       switch (result) {
-       case CMD_CRIT:
-               printf("%s\n", command_errmsg);
-               break;
-       case CMD_FATAL:
-               panic("%s\n", command_errmsg);
-       }
-
-       free(line);
-       /*
-        * If there was error during nested ficlExec(), we may no longer have
-        * valid environment to return.  Throw all exceptions from here.
-        */
-       if (result != CMD_OK)
-               vmThrow(vm, result);
-
-       /* This is going to be thrown!!! */
-       stackPushINT(vm->pStack,result);
+    /* This is going to be thrown!!! */
+    stackPushINT(vm->pStack,result);
 }
 
 /*
@@ -258,23 +249,16 @@ bf_command(FICL_VM *vm)
 /*
  * Initialise the Forth interpreter, create all our commands as words.
  */
-static void
-interp_forth_init(void *ctx)
+void
+bf_init(const char *rc)
 {
-    struct interp_forth_softc   *softc;
     struct bootblk_command     **cmdp;
     char create_buf[41];       /* 31 characters-long builtins */
-    FICL_SYSTEM *bf_sys;
-    FICL_VM    *bf_vm;
+    int fd;
 
-    softc = ctx;
+    bf_sys = ficlInitSystem(BF_DICTSIZE);
+    bf_vm = ficlNewVM(bf_sys);
 
-    assert((softc->bf_sys == NULL) && (softc->bf_vm == NULL) &&
-       (softc->pInterp == NULL));      /* No Forth context at this stage */
-
-    bf_sys = softc->bf_sys = ficlInitSystem(BF_DICTSIZE);
-    bf_vm = softc->bf_vm = ficlNewVM(bf_sys);
-
     /* Put all private definitions in a "builtins" vocabulary */
     ficlExec(bf_vm, "vocabulary builtins also builtins definitions");
 
@@ -294,21 +278,29 @@ interp_forth_init(void *ctx)
     /* Export some version numbers so that code can detect the loader/host 
version */
     ficlSetEnv(bf_sys, "FreeBSD_version", __FreeBSD_version);
     ficlSetEnv(bf_sys, "loader_version", bootprog_rev);
+
+    /* try to load and run init file if present */
+    if (rc == NULL)
+       rc = "/boot/boot.4th";
+    if (*rc != '\0') {
+       fd = open(rc, O_RDONLY);
+       if (fd != -1) {
+           (void)ficlExecFD(bf_vm, fd);
+           close(fd);
+       }
+    }
 }
 
 /*
  * Feed a line of user input to the Forth interpreter
  */
-static int
-interp_forth_run(void *ctx, const char *line)
+int
+bf_run(char *line)
 {
-    struct interp_forth_softc *softc;
     int                result;
 
-    softc = ctx;
+    result = ficlExec(bf_vm, line);
 
-    result = ficlExec(softc->bf_vm, (char *)line);
-
     DEBUG("ficlExec '%s' = %d", line, result);
     switch (result) {
     case VM_OUTOFTEXT:
@@ -334,34 +326,7 @@ interp_forth_run(void *ctx, const char *line)
     
     if (result == VM_USEREXIT)
        panic("interpreter exit");
-    setenv("interpret", softc->bf_vm->state ? "" : "OK", 1);
+    setenv("interpret", bf_vm->state ? "" : "OK", 1);
 
     return (result);
 }
-
-static int
-interp_forth_incl(void *ctx, const char *filename)
-{
-       struct interp_forth_softc *softc;
-       int     fd;
-
-       softc = ctx;
-
-       fd = open(filename, O_RDONLY);
-       if (fd == -1) {
-               /* Hihger layers print the error message */
-               snprintf(command_errbuf, sizeof(command_errbuf),
-                   "can't open %s\n", filename);
-               return (CMD_ERROR);
-       }
-       return (ficlExecFD(softc->bf_vm, fd));
-}
-
-
-struct interp boot_interp_forth = {
-       .init = interp_forth_init,
-       .run = interp_forth_run,
-       .incl = interp_forth_incl,
-       .load_configs = default_load_config,
-       .context = &forth_softc
-};

Modified: head/stand/efi/loader/main.c
==============================================================================
--- head/stand/efi/loader/main.c        Tue Dec 12 20:41:11 2017        
(r326811)
+++ head/stand/efi/loader/main.c        Tue Dec 12 22:06:22 2017        
(r326812)
@@ -501,7 +501,7 @@ main(int argc, CHAR16 *argv[])
 #endif
        }
 
-       interact();                     /* doesn't return */
+       interact(NULL);                 /* doesn't return */
 
        return (EFI_SUCCESS);           /* keep compiler happy */
 }

Modified: head/stand/i386/loader/main.c
==============================================================================
--- head/stand/i386/loader/main.c       Tue Dec 12 20:41:11 2017        
(r326811)
+++ head/stand/i386/loader/main.c       Tue Dec 12 22:06:22 2017        
(r326812)
@@ -232,7 +232,7 @@ main(void)
     
     bios_getsmap();
 
-    interact();
+    interact(NULL);
 
     /* if we ever get here, it is an error */
     return (1);

Modified: head/stand/loader.mk
==============================================================================
--- head/stand/loader.mk        Tue Dec 12 20:41:11 2017        (r326811)
+++ head/stand/loader.mk        Tue Dec 12 22:06:22 2017        (r326812)
@@ -59,8 +59,6 @@ SRCS+=        pnp.c
 .if ${MK_FORTH} != "no"
 SRCS+= interp_forth.c
 .include "${BOOTSRC}/ficl.mk"
-.else
-SRCS+= interp_simple.c
 .endif
 
 .if defined(BOOT_PROMPT_123)

Modified: head/stand/mips/beri/loader/main.c
==============================================================================
--- head/stand/mips/beri/loader/main.c  Tue Dec 12 20:41:11 2017        
(r326811)
+++ head/stand/mips/beri/loader/main.c  Tue Dec 12 22:06:22 2017        
(r326812)
@@ -149,7 +149,7 @@ main(int argc, char *argv[], char *envv[], struct boot
        printf("bootpath=\"%s\"\n", bootpath);
 #endif
 
-       interact();
+       interact(NULL);
        return (0);
 }
 

Modified: head/stand/ofw/common/main.c
==============================================================================
--- head/stand/ofw/common/main.c        Tue Dec 12 20:41:11 2017        
(r326811)
+++ head/stand/ofw/common/main.c        Tue Dec 12 22:06:22 2017        
(r326812)
@@ -157,7 +157,7 @@ main(int (*openfirm)(void *))
        archsw.arch_readin = ofw_readin;
        archsw.arch_autoload = ofw_autoload;
 
-       interact();                             /* doesn't return */
+       interact(NULL);                         /* doesn't return */
 
        OF_exit();
 

Modified: head/stand/powerpc/kboot/main.c
==============================================================================
--- head/stand/powerpc/kboot/main.c     Tue Dec 12 20:41:11 2017        
(r326811)
+++ head/stand/powerpc/kboot/main.c     Tue Dec 12 22:06:22 2017        
(r326812)
@@ -122,7 +122,7 @@ main(int argc, const char **argv)
        setenv("loaddev", bootdev, 1);
        setenv("LINES", "24", 1);
 
-       interact();                     /* doesn't return */
+       interact(NULL);                 /* doesn't return */
 
        return (0);
 }

Modified: head/stand/powerpc/ps3/main.c
==============================================================================
--- head/stand/powerpc/ps3/main.c       Tue Dec 12 20:41:11 2017        
(r326811)
+++ head/stand/powerpc/ps3/main.c       Tue Dec 12 22:06:22 2017        
(r326812)
@@ -140,7 +140,7 @@ main(void)
        setenv("LINES", "24", 1);
        setenv("hw.platform", "ps3", 1);
 
-       interact();                     /* doesn't return */
+       interact(NULL);                 /* doesn't return */
 
        return (0);
 }

Modified: head/stand/sparc64/loader/main.c
==============================================================================
--- head/stand/sparc64/loader/main.c    Tue Dec 12 20:41:11 2017        
(r326811)
+++ head/stand/sparc64/loader/main.c    Tue Dec 12 22:06:22 2017        
(r326812)
@@ -902,7 +902,7 @@ main(int (*openfirm)(void *))
        printf("bootpath=\"%s\"\n", bootpath);
 
        /* Give control to the machine independent loader code. */
-       interact();
+       interact(NULL);
        return (1);
 }
 

Modified: head/stand/uboot/common/main.c
==============================================================================
--- head/stand/uboot/common/main.c      Tue Dec 12 20:41:11 2017        
(r326811)
+++ head/stand/uboot/common/main.c      Tue Dec 12 22:06:22 2017        
(r326812)
@@ -500,7 +500,7 @@ main(int argc, char **argv)
        archsw.arch_readin = uboot_readin;
        archsw.arch_autoload = uboot_autoload;
 
-       interact();                             /* doesn't return */
+       interact(NULL);                         /* doesn't return */
 
        return (0);
 }

Modified: head/stand/userboot/userboot/main.c
==============================================================================
--- head/stand/userboot/userboot/main.c Tue Dec 12 20:41:11 2017        
(r326811)
+++ head/stand/userboot/userboot/main.c Tue Dec 12 22:06:22 2017        
(r326812)
@@ -142,7 +142,7 @@ loader_main(struct loader_callbacks *cb, void *arg, in
        if (setjmp(jb))
                return;
 
-       interact();                     /* doesn't return */
+       interact(NULL);                 /* doesn't return */
 
        exit(0);
 }
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to