20 lines
883 B
Plaintext
20 lines
883 B
Plaintext
import StdEnv
|
|
|
|
copyFile fromPath toPath world
|
|
# (ok, fromFile, world) = fopen fromPath FReadData world
|
|
| not ok = abort ("Cannot open " +++ fromPath +++ " for reading")
|
|
# (ok, toFile, world) = fopen toPath FWriteData world
|
|
| not ok = abort ("Cannot open " +++ toPath +++ " for writing")
|
|
# (fromFile, toFile) = copyData 1024 fromFile toFile
|
|
# (ok, world) = fclose fromFile world
|
|
| not ok = abort ("Cannot close " +++ fromPath +++ " after reading")
|
|
# (ok, world) = fclose toFile world
|
|
| not ok = abort ("Cannot close " +++ toPath +++ " after writing")
|
|
= world
|
|
where
|
|
copyData bufferSize fromFile toFile
|
|
# (buffer, fromFile) = freads fromFile bufferSize
|
|
# toFile = fwrites buffer toFile
|
|
| size buffer < bufferSize = (fromFile, toFile) // we're done
|
|
= copyData bufferSize fromFile toFile // continue recursively
|