Diff for /gforth/blocks.fs between versions 1.35 and 1.36

version 1.35, 2002/09/14 08:34:03 version 1.36, 2002/12/25 15:45:15
Line 44  Variable last-block Line 44  Variable last-block
   
 $20 Value buffers  $20 Value buffers
   
   \ limit block files to 2GB; gforth <0.6.0 erases larger block files on
   \ 32-bit systems
   $200000 Value block-limit
   
 User block-fid  User block-fid
 User block-offset ( -- addr ) \ gforth  User block-offset ( -- addr ) \ gforth
 \G User variable containing the number of the first block (default  \G User variable containing the number of the first block (default
Line 67  block-cold Line 71  block-cold
 Defer flush-blocks ( -- ) \ gforth  Defer flush-blocks ( -- ) \ gforth
   
 : open-blocks ( c-addr u -- ) \ gforth  : open-blocks ( c-addr u -- ) \ gforth
     \g Use the file, whose name is given by @i{c-addr u}, as the blocks file.  \g Use the file, whose name is given by @i{c-addr u}, as the blocks file.
     2dup open-fpath-file 0<>      try ( c-addr u )
     if          2dup open-fpath-file throw
         r/w bin create-file throw  
     else  
         rot close-file throw  2dup file-status throw bin open-file throw          rot close-file throw  2dup file-status throw bin open-file throw
         >r 2drop r>          >r 2drop r>
     then      recover ( c-addr u ior )
     block-fid @ IF  flush-blocks block-fid @ close-file throw  THEN          >r 2dup file-status nip 0= r> and throw \ does it really not exist?
           r/w bin create-file throw
       endtry
       block-fid @ IF
           flush-blocks block-fid @ close-file throw
       THEN
     block-fid ! ;      block-fid ! ;
   
 : use ( "file" -- ) \ gforth  : use ( "file" -- ) \ gforth
Line 95  Defer flush-blocks ( -- ) \ gforth Line 102  Defer flush-blocks ( -- ) \ gforth
     block-fid @ ;      block-fid @ ;
   
 : block-position ( u -- ) \ block  : block-position ( u -- ) \ block
     \G Position the block file to the start of block @i{u}.  \G Position the block file to the start of block @i{u}.
       dup block-limit u>= -35 and throw
     offset @ - chars/block chars um* get-block-fid reposition-file throw ;      offset @ - chars/block chars um* get-block-fid reposition-file throw ;
   
 : update ( -- ) \ block  : update ( -- ) \ block
Line 108  Defer flush-blocks ( -- ) \ gforth Line 116  Defer flush-blocks ( -- ) \ gforth
     if      if
         r@ buffer-block @ block-position          r@ buffer-block @ block-position
         r@ block-buffer chars/block  r@ buffer-fid @  write-file throw          r@ block-buffer chars/block  r@ buffer-fid @  write-file throw
         buffer-fid @ flush-file throw          r@ buffer-fid @ flush-file throw
         r@ buffer-dirty off          r@ buffer-dirty off 
     endif      endif
     rdrop ;      rdrop ;
   

Removed from v.1.35  
changed lines
  Added in v.1.36


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