--- gforth/kernel/require.fs 2000/08/26 13:29:49 1.12 +++ gforth/kernel/require.fs 2000/09/11 20:56:39 1.15 @@ -21,17 +21,17 @@ \ Now: Kernel Module, Reloadable create included-files 0 , 0 , ( pointer to and count of included files ) -\ here ," ./the terminal" dup c@ swap 1 + swap , A, here 2 cells - -\ ./ is confusing for the search path stuff! There should be never a . -\ in sourcefilename.... -here ," #terminal#" dup c@ swap 1 + swap , A, here 2 cells - -create image-included-files 1 , A, ( pointer to and count of included files ) -\ included-files points to ALLOCATEd space, while image-included-files -\ points to ALLOTed objects, so it survives a save-system - -: loadfilename ( -- a-addr ) \ gforth-internal - \G @i{a-addr} @code{2@@} produces the current file name ( @i{c-addr u} ) - included-files 2@ loadfilename# @ min 2* cells + ; +\ note: these names must not contain a "/" or "\"; otherwise a part of +\ that name might be used when expanding "./" (see expandtopic). +here ," *a file*" dup c@ swap 1 + swap +here ," *a block*" dup c@ swap 1 + swap +here ," *evaluated string*" dup c@ swap 1 + swap +here ," *the terminal*" dup c@ swap 1 + swap +, A, , A, , A, , A, here 8 cells - +create image-included-files 4 , A, ( pointer to and count of included +\ files ) included-files points to ALLOCATEd space, while +\ image-included-files points to ALLOTed objects, so it survives a +\ save-system : sourcefilename ( -- c-addr u ) \ gforth \G The name of the source file which is currently the input @@ -39,7 +39,7 @@ create image-included-files 1 , A, ( po \G loaded. If the current input source is no (stream) file, the \G result is undefined. In Gforth, the result is valid during the \G whole seesion (but not across @code{savesystem} etc.). - loadfilename 2@ ; + loadfilename# @ loadfilename#>str ; : sourceline# ( -- u ) \ gforth sourceline-number \G The line number of the line that is currently being interpreted @@ -81,7 +81,7 @@ create image-included-files 1 , A, ( po loadfilename# @ >r save-mem add-included-file ( file-id ) included-files 2@ nip 1- loadfilename# ! - ['] include-file catch + ['] include-file2 catch r> loadfilename# ! throw ; @@ -146,11 +146,16 @@ create image-included-files 1 , A, ( po : loadfilename#>str ( n -- adr len ) included-files 2@ drop swap 2* cells + 2@ ; +: .strings ( addr u -- ) \ gforth + \G list the strings from an array of string descriptors at addr + \G with u entries, one per line. + 2* cells bounds ?DO + cr I 2@ type 2 cells +LOOP ; + : .included ( -- ) \ gforth \G list the names of the files that have been @code{included} - included-files 2@ 2* cells bounds ?DO - cr I 2@ type 2 cells +LOOP ; - + included-files 2@ .strings ; + \ contains tools/newrequire.fs -\ \I $Id: require.fs,v 1.12 2000/08/26 13:29:49 anton Exp $ +\ \I $Id: require.fs,v 1.15 2000/09/11 20:56:39 anton Exp $