zig-files.tri (1425B)
1 !import base as B 2 !import io_v2 as IO 3 !export positioned 4 !export appended 5 !export emptyWrite 6 !export closed 7 !export readerWrite 8 !export failedAfterWrite 9 !export unknownWithPoison 10 11 positioned path = IO.io <| IO.scope (owner : do IO.require 12 file <- IO.openUpdate owner path 13 IO.writeSome file [97 98 99] 14 IO.seekFile file 1 15 content <- IO.readSome file 3 16 length <- IO.fileSize file 17 IO.seekFile file 10 18 IO.resizeFile file 1 19 IO.syncFile file 20 position <- IO.filePosition file 21 eof <- IO.readSome file 1 22 IO.pure [content length position eof]) 23 appended path = IO.io <| IO.scope (owner : do IO.require 24 file <- IO.openAppender owner path 25 IO.writeSome file [120 121] 26 IO.syncFile file 27 length <- IO.fileSize file 28 IO.bind (IO.seekFile file 0) (bad : IO.pure [length bad])) 29 emptyWrite path = IO.io <| IO.scope (owner : IO.require (IO.openWriter owner path) (file : IO.writeSome file [])) 30 closed path = IO.io <| IO.scope (owner : do IO.require 31 file <- IO.openReader owner path 32 IO.close file 33 IO.close file) 34 readerWrite path = IO.io <| IO.scope (owner : IO.require (IO.openReader owner path) (file : IO.writeSome file [0])) 35 failedAfterWrite path = IO.io <| IO.scope (owner : do IO.require 36 file <- IO.openWriter owner path 37 IO.writeSome file [42] 38 IO.fail "preserve bytes, release descriptor") 39 diverge seed = diverge seed 40 unknownWithPoison seed = IO.io (IO.request "file" 99 "open-reader" (diverge seed))