RosettaCodeData/Task/File-input-output/Toka/file-input-output-1.toka
2023-07-01 13:44:08 -04:00

22 lines
710 B
Text

( source dest -- )
{
value| source dest size buffer |
{
{
[ "W" file.open to dest ] is open-dest
[ "R" file.open to source ] is open-source
[ open-dest open-source ]
} is open-files
{
[ source file.size to size ] is obtain-size
[ size malloc to buffer ] is allocate-buffer
[ obtain-size allocate-buffer ]
} is create-buffer
[ source dest and 0 <> ] is check
[ open-files create-buffer check ]
} is prepare
[ source buffer size file.read drop ] is read-source
[ dest buffer size file.write drop ] is write-dest
[ source file.close dest file.close ] is close-files
[ prepare [ read-source write-dest close-files ] ifTrue ]
} is copy-file