Diff for /gforth/kernel/require.fs between versions 1.27 and 1.29

version 1.27, 2003/01/22 17:12:49 version 1.29, 2006/01/31 15:25:44
Line 1 Line 1
 \ require.fs  \ require.fs
   
 \ Copyright (C) 1995,1996,1997,1998,2000 Free Software Foundation, Inc.  \ Copyright (C) 1995,1996,1997,1998,2000,2003 Free Software Foundation, Inc.
   
 \ This file is part of Gforth.  \ This file is part of Gforth.
   
Line 74  create image-included-files 1 , A, ( poi Line 74  create image-included-files 1 , A, ( poi
   
 has? new-input [IF]  has? new-input [IF]
 : included1 ( i*x file-id c-addr u -- j*x ) \ gforth  : included1 ( i*x file-id c-addr u -- j*x ) \ gforth
     \G Include the file file-id with the name given by @var{c-addr u}.  \G Include the file file-id with the name given by @var{c-addr u}.
     save-mem 2dup add-included-file ( file-id )      save-mem 2dup add-included-file
     ['] read-loop execute-parsing-named-file ;      includefilename 2@ 2>r 2dup includefilename 2!
       ['] read-loop execute-parsing-named-file
       2r> includefilename 2! ;
 [ELSE]  [ELSE]
 : included1 ( i*x file-id c-addr u -- j*x ) \ gforth  : included1 ( i*x file-id c-addr u -- j*x ) \ gforth
 \G Include the file file-id with the name given by @var{c-addr u}.  \G Include the file file-id with the name given by @var{c-addr u}.
     save-mem 2dup loadfilename>r      save-mem 2dup loadfilename>r
       includefilename 2@ 2>r 2dup includefilename 2!
     add-included-file ( file-id )      add-included-file ( file-id )
     ['] include-file2 catch      ['] include-file2 catch
     r>loadfilename      2r> includefilename 2! r>loadfilename
     throw ;      throw ;
 [THEN]  [THEN]
   
 : included ( i*x c-addr u -- j*x ) \ file  : included2 ( i*x c-addr u -- j*x ) \ file
     \G @code{include-file} the file whose name is given by the string  
     \G @var{c-addr u}.  
     open-fpath-file throw included1 ;      open-fpath-file throw included1 ;
   
 : required ( i*x addr u -- j*x ) \ gforth  : required2 ( i*x addr u -- i*x ) \ gforth
     \G @code{include-file} the file with the name given by @var{addr  
     \G u}, if it is not @code{included} (or @code{required})  
     \G already. Currently this works by comparing the name of the file  
     \G (with path) against the names of earlier included files.  
     \ however, it may be better to fstat the file,      \ however, it may be better to fstat the file,
     \ and compare the device and inode. The advantages would be: no      \ and compare the device and inode. The advantages would be: no
     \ problems with several paths to the same file (e.g., due to      \ problems with several paths to the same file (e.g., due to
Line 113  has? new-input [IF] Line 110  has? new-input [IF]
   
 : include  ( ... "file" -- ... ) \ gforth  : include  ( ... "file" -- ... ) \ gforth
     \G @code{include-file} the file @var{file}.      \G @code{include-file} the file @var{file}.
     name included ;      name included2 ;
   
 : require  ( ... "file" -- ... ) \ gforth  : require  ( ... "file" -- ... ) \ gforth
     \G @code{include-file} @var{file} only if it is not included already.      \G @code{include-file} @var{file} only if it is not included already.
     name required ;      name required2 ;
   
   \ we go through execute-parsing to get nicer output on errors
   
   : included ( i*x c-addr u -- j*x ) \ file
       \G @code{include-file} the file whose name is given by the string
       \G @var{c-addr u}.
       ['] include execute-parsing ;
   
   : required ( i*x addr u -- i*x ) \ gforth
       \G @code{include-file} the file with the name given by @var{addr
       \G u}, if it is not @code{included} (or @code{required})
       \G already. Currently this works by comparing the name of the file
       \G (with path) against the names of earlier included files.
       ['] require execute-parsing ;
   
 \ : \I  \ : \I
 \   here   \   here 

Removed from v.1.27  
changed lines
  Added in v.1.29


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