Date: Thu, 11 Jan 2001 10:38:52 +0900 From: "Daniel C. Sobral" <dcs@newsguy.com> To: Chris <ccsanady@iastate.edu> Cc: freebsd-hackers@FreeBSD.ORG Subject: Re: forth/loader question.. Message-ID: <3A5D0EAC.4E6E00B1@newsguy.com> References: <3A472397.A806A3FD@iastate.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
Chris wrote: > > I am attempting to add some functionality to the loader, but have come > across a minor problem. Is there some way to include forth files, > given a string? > > s" file" included (gforth example) Yes, there is... I just can't recall the exact name right now. :-) You can always do a s" include file" evaluate, but... :-) Also, "include" is a builtin, so you can pass arguments to it when compiling it: : whatever s" file" include ; Read the finer details for builtins on the loader.4th(8) man page, or, worse yet, check out it's exact definition on /sys/boot/common/interp_forth.c. Their behavior is highly complex... > What I would like to do is read in a /boot/loader.rc.$ip or something > similar. This would allow a number of machines to be booted diskless > and yet have different boot configurations. IMHO, what *should* be done is expanding environment variables in the loader_conf_files="xyzyz" lines. Previously, there was no support in loader(8) to be able to do this on support.4th, but now there is. A function that went through all environment variables in a string and expanded them would be an useful addition in a number of places. One such a function is written, it can be used at set_conf_files, right after strdup. Then you can have loader_conf_files="loader.conf.$ip". If you still wish to have Forth code executing, you can just place an exec="include loader.rc.whatever" line there, but I'd prefer to keep the configuration passive as much as possible. > : read_loader_rc_specific > s" boot.netif.hwaddr" getenv > dup -1 = if > drop > s" boot.netif.ip" getenv > dup -1 = if > drop 0 0 > then > then > s" /boot/loader.rc." > 2over nip over + allocate > if ( out of memory ) > 2drop 2drop > 100 exit > then > 0 2swap strcat 2swap strcat > read-conf > ; read-conf reads conf files, it doesn't execute anything. In a private discussion long ago, Jordan said he would like for .rc and .4th files to remain scripts, and .conf files to be variable-setting files (like they are now :). Except, of course, that there are a couple of exceptions on the .conf files format to allow for the cases where it is absolutely necessary to execute code. -- Daniel C. Sobral (8-DCS) dcs@newsguy.com dcs@freebsd.org capo@a.crazy.bsdconspiracy.net "There is no spoon." -- Kiki To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3A5D0EAC.4E6E00B1>