io.streams.zeros: adding zero-file.

db4
John Benediktsson 2012-10-25 21:46:11 -07:00
parent 7847b55cea
commit 032458e5d7
1 changed files with 19 additions and 1 deletions

View File

@ -1,6 +1,7 @@
! Copyright (C) 2010 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
USING: destructors io kernel sequences ;
USING: combinators destructors io io.directories
io.encodings.binary io.files kernel math sequences ;
IN: io.streams.zeros
TUPLE: zero-stream ;
@ -18,3 +19,20 @@ M: zero-stream stream-read-partial-unsafe stream-read-unsafe ;
M: zero-stream dispose drop ;
INSTANCE: zero-stream input-stream
<PRIVATE
: (zero-file) ( n path -- )
binary
[ 1 - seek-absolute seek-output 0 write1 ] with-file-writer ;
PRIVATE>
ERROR: invalid-file-size n path ;
: zero-file ( n path -- )
{
{ [ over 0 < ] [ invalid-file-size ] }
{ [ over 0 = ] [ nip touch-file ] }
[ (zero-file) ]
} cond ;