|
Wil Baden 2000-07-26
From JARGON Fileslurp
Two simple ways to slurp a file: GUZZLE, or SLURP and
BURP.
GUZZLE ( file-id -- addr length )
HERE. Return
address and length.
SLURP ( file-id -- addr length )
BURP.
BURP ( -- )
SLURP.
Needed from Tool Belt: REWIND-FILE FILE-CHECK MEMORY-CHECK
Program Text 1: GUZZLE ( file-id -- addr length )
>R
R@ REWIND-FILE FILE-CHECK
R@ FILE-SIZE FILE-CHECK ( file-size 0)
DROP ( file-size)
HERE SWAP R> READ-FILE FILE-CHECK ( length)
HERE SWAP ;
2VARIABLE Slurp-Address
: SLURP ( file-id -- addr length )
>R
R@ REWIND-FILE FILE-CHECK
R@ FILE-SIZE FILE-CHECK ( file-size 0)
DROP ( file-size)
DUP ALLOCATE MEMORY-CHECK ( file-size addr)
2DUP Slurp-Address 2!
SWAP R> ( addr file-size file-id)
READ-FILE FILE-CHECK ( length)
Slurp-Address @ SWAP ( addr length)
;
: BURP ( -- )
Slurp-Address @ FREE MEMORY-CHECK ;