Diff for /gforth/kernel/require.fs between versions 1.24 and 1.30

version 1.24, 2003/01/20 19:17:59 version 1.30, 2006/01/31 17:08:07
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 23 Line 23
 create included-files 0 , 0 , ( pointer to and count of included files )  create included-files 0 , 0 , ( pointer to and count of included files )
 \ note: these names must not contain a "/" or "\"; otherwise a part of  \ note: these names must not contain a "/" or "\"; otherwise a part of
 \ that name might be used when expanding "./" (see expandtopic).  \ that name might be used when expanding "./" (see expandtopic).
 here ," *a file*" dup c@ swap 1 + swap  here ," *somewhere*" dup c@ swap 1 + swap
 here ," *a block*" dup c@ swap 1 + swap  , A, here 2 cells -
 here ," *evaluated string*" dup c@ swap 1 + swap  create image-included-files 1 , A, ( pointer to and count of included files )
 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  \ 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 77  create image-included-files 4 , A, ( poi Line 74  create image-included-files 4 , 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
     ['] include-file2 catch      includefilename 2@ 2>r 2dup includefilename 2!
     throw ;      ['] 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}.
     loadfilename 2@ 2>r      save-mem 2dup loadfilename>r
     save-mem 2dup loadfilename 2!      includefilename 2@ 2>r 2dup includefilename 2!
     add-included-file ( file-id )      add-included-file ( file-id )
     ['] include-file2 catch      ['] include-file2 catch
     2r> loadfilename 2!      2r> includefilename 2! r>loadfilename
     throw ;      throw ;
 [THEN]  [THEN]
   
Line 97  has? new-input [IF] Line 95  has? new-input [IF]
     \G @var{c-addr u}.      \G @var{c-addr u}.
     open-fpath-file throw included1 ;      open-fpath-file throw included1 ;
   
 : required ( i*x addr u -- j*x ) \ gforth  : required ( i*x addr u -- i*x ) \ gforth
     \G @code{include-file} the file with the name given by @var{addr      \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 u}, if it is not @code{included} (or @code{required})
     \G already. Currently this works by comparing the name of the file      \G already. Currently this works by comparing the name of the file
Line 151  has? new-input [IF] Line 149  has? new-input [IF]
   
 : .included ( -- ) \ gforth  : .included ( -- ) \ gforth
     \G list the names of the files that have been @code{included}      \G list the names of the files that have been @code{included}
     included-files 2@ .strings ;      included-files 2@ 2 cells under+ 1- .strings ;

Removed from v.1.24  
changed lines
  Added in v.1.30


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