diff options
author | dcs <dcs@FreeBSD.org> | 2000-06-07 22:03:37 +0000 |
---|---|---|
committer | dcs <dcs@FreeBSD.org> | 2000-06-07 22:03:37 +0000 |
commit | f52e5ae84b417cfe1e980bae37deb342ff1d32a5 (patch) | |
tree | 879fbec5e03119c7b9f09aa18b5d923eb129d7ee /sys/boot | |
parent | e8eb747a92c43c89eff089f7a6162220c219729c (diff) | |
download | FreeBSD-src-f52e5ae84b417cfe1e980bae37deb342ff1d32a5.zip FreeBSD-src-f52e5ae84b417cfe1e980bae37deb342ff1d32a5.tar.gz |
Remove AGAIN definition, as FICL 2.04 provides it.
Add strlen, to help handling data generated by C code.
Add 2>r 2r>, because OO programming without them sucks.
Diffstat (limited to 'sys/boot')
-rw-r--r-- | sys/boot/forth/support.4th | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/sys/boot/forth/support.4th b/sys/boot/forth/support.4th index dbad5be..5b72b1c 100644 --- a/sys/boot/forth/support.4th +++ b/sys/boot/forth/support.4th @@ -64,6 +64,7 @@ \ \ strdup ( addr len -- addr' len) similar to strdup(3) \ strcat ( addr len addr' len' -- addr len+len' ) similar to strcat(3) +\ strlen ( addr -- len ) similar to strlen(3) \ s' ( | string' -- addr len | ) similar to s" \ rudimentary structure support @@ -131,6 +132,14 @@ create last_module_option sizeof module.next allot addr len len' + ; +: strlen ( addr -- len ) + 0 >r + begin + dup c@ while + 1+ r> 1+ >r repeat + drop r> +; + : s' [char] ' parse state @ if @@ -138,9 +147,8 @@ create last_module_option sizeof module.next allot then ; immediate -\ How come ficl doesn't have again? - -: again false postpone literal postpone until ; immediate +: 2>r postpone >r postpone >r ; immediate +: 2r> postpone r> postpone r> ; immediate \ Private definitions |