Diff for /gforth/kernel/require.fs between versions 1.1 and 1.4

version 1.1, 1997/05/21 20:40:17 version 1.4, 1998/06/17 16:55:18
Line 23 Line 23
 \ $Id$  \ $Id$
   
 create included-files 0 , 0 , ( pointer to and count of included files )  create included-files 0 , 0 , ( pointer to and count of included files )
 here ," the terminal" dup c@ swap 1 + swap , A, here 2 cells -  here ," ./the terminal" dup c@ swap 1 + swap , A, here 2 cells -
 create image-included-files  1 , A, ( pointer to and count of included files )  create image-included-files  1 , A, ( pointer to and count of included files )
 \ included-files points to ALLOCATEd space, while image-included-files  \ included-files points to ALLOCATEd space, while image-included-files
 \ points to ALLOTed objects, so it survives a save-system  \ points to ALLOTed objects, so it survives a save-system
Line 79  create image-included-files  1 , A, ( po Line 79  create image-included-files  1 , A, ( po
     throw ;      throw ;
           
 : included ( i*x addr u -- j*x ) \ file  : included ( i*x addr u -- j*x ) \ file
     open-fpath-file included1 ;      \G @code{include-file} the file whose name is given by the string
       \G @var{addr u}.
       open-fpath-file throw included1 ;
   
 : required ( i*x addr u -- j*x ) \ gforth  : required ( i*x addr u -- j*x ) \ gforth
     \G include the file with the name given by addr u, if it is not      \G include the file with the name given by @var{addr u}, if it is not
     \G included already. Currently this works by comparing the name of      \G @code{included} (or @code{required}) already. Currently this
     \G the file (with path) against the names of earlier included      \G works by comparing the name of the file (with path) against the
     \G files; however, it would probably be better to fstat the file,      \G names of earlier included files.
     \G and compare the device and inode. The advantages would be: no      \ however, it may be better to fstat the file,
     \G problems with several paths to the same file (e.g., due to      \ and compare the device and inode. The advantages would be: no
     \G links) and we would catch files included with include-file and      \ problems with several paths to the same file (e.g., due to
     \G write a require-file.      \ links) and we would catch files included with include-file and
     open-fpath-file 2dup included?      \ write a require-file.
       open-fpath-file throw 2dup included?
     if      if
         2drop close-file throw          2drop close-file throw
     else      else
Line 99  create image-included-files  1 , A, ( po Line 102  create image-included-files  1 , A, ( po
   
 \ INCLUDE                                               9may93jaw  \ INCLUDE                                               9may93jaw
   
 : include  ( "file" -- ) \ gforth  : include  ( ... "file" -- ... ) \ gforth
   \G includes @var{file}
   name included ;    name included ;
   
 : require  ( "file" -- ) \ gforth  : require  ( ... "file" -- ... ) \ gforth
   \G includes @var{file} only if it is not included already
   name required ;    name required ;
   
 0 [IF]  0 [IF]

Removed from v.1.1  
changed lines
  Added in v.1.4


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>