Fix up parse word so that it can correctly handle empty arguments and (encode-bootpath) word so that it can handle optional

arguments. With these fixes in place we can now switch the boot word to use (encode-bootpath) which means that the bootpath and 
bootarg properties are now set exactly the same when executing boot and/or load.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@siriusit.co.uk>


git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@803 f158a5a8-5612-0410-a976-696ce0be7e32
This commit is contained in:
Mark Cave-Ayland
2010-06-28 05:16:15 +00:00
committed by Mark Cave-Ayland
parent cab993ac04
commit 50e344721c
3 changed files with 20 additions and 7 deletions

View File

@@ -1,7 +1,7 @@
\ 7.4.3.5 User commands for booting
: boot ( "{param-text}<cr>" -- )
linefeed parse cr
(encode-bootpath)
s" platform-boot" $find if
execute
else

View File

@@ -704,6 +704,11 @@ variable span 0 span !
>r \ save delimiter
ib >in @ +
span @ >in @ - \ ib+offs len-offset.
dup 0 < if \ if we are already at the end of the string, return an empty string
+ 0 \ move to end of input string
r> drop
exit
then
2dup r> \ ib+offs len-offset ib+offs len-offset delim
findchar if \ look for the delimiter.
nip dup 1+

View File

@@ -56,14 +56,22 @@ variable file-size
;
: (encode-bootpath) ( "{params}<cr>" -- bootpath-str bootpath-len)
bl parse 2dup encode-string
\ Parse the current input buffer of a load/boot command and set both
\ the bootargs and bootpath properties as appropriate.
bl parse dup if
2dup encode-string
" /chosen" (find-dev) if
" bootpath" rot (property)
then
linefeed parse encode-string
then
linefeed parse dup if
encode-string
" /chosen" (find-dev) if
" bootargs" rot (property)
then
else
2drop
then
;
: load ( "{params}<cr>" -- )