File input/output: Difference between revisions

Line 2,533:
Alternative solution for large files with comparable performance to shell cp; also returns number of bytes written.
<lang snabel>
procfunc: do-write {(
rwfile $1 write yield
{_ yieldyield1} for
)};
 
Line 2,541:
"Init queue and writer proc"
let: q io-queue;
func: w @q $1 do-write _ _proc;
 
_ rfile read 0 $1 {
"Push to queue and run writer if incoming data"
len $ +? {
@q $2 push do-writew
} when _ +
} for
 
"Run writer until done if data left in queue"
@q len +? {&do-writew run} when _
};