10 | emptyBuffer = unsafePerformIO $
do
11 | Just buf <- newBuffer 0
12 | | Nothing => die "could not allocate empty buffer"
17 | bufferSize : Buffer -> Int
18 | bufferSize = unsafePerformIO . rawSize
22 | readFileToBuffer : HasIO io => File -> io (Either FileError Buffer)
23 | readFileToBuffer file = do
24 | Right size <- fileSize file
25 | | Left err => pure (Left err)
26 | Just buf <- newBuffer size
27 | | Nothing => pure (Left FileReadError)
28 | Right ok <- readBufferData file buf 0 size
29 | | Left err => pure (Left err)
34 | readFileToBuffer' : HasIO io => File -> io Buffer
35 | readFileToBuffer' file = case !(readFileToBuffer file) of
36 | Left err => die "could not read file"
37 | Right val => pure val
41 | bufferToString : HasIO io => Buffer -> io String
42 | bufferToString buf = do
44 | getString buf 0 size
48 | bufferToStringUnsafe : Buffer -> String
49 | bufferToStringUnsafe = unsafePerformIO . bufferToString
52 | readFileToString : HasIO io => File -> io (Either FileError String)
53 | readFileToString file = do
54 | Right buf <- readFileToBuffer file
55 | | Left err => pure (Left err)
56 | map Right (bufferToString buf)
59 | readFileToString' : HasIO io => File -> io String
60 | readFileToString' file = case !(readFileToString file) of
61 | Left err => die "could not read file"
62 | Right val => pure val
65 | readSTDINBuffer : HasIO io => io (Either FileError Buffer)
66 | readSTDINBuffer = readFileToBuffer stdin
69 | readSTDINBuffer' : HasIO io => io Buffer
70 | readSTDINBuffer' = readFileToBuffer stdin >>= \case
71 | Left err => die "could not read STDIN"
72 | Right val => pure val
75 | readSTDIN : HasIO io => io (Either FileError String)
76 | readSTDIN = readFileToString stdin
79 | readSTDIN' : HasIO io => io String
80 | readSTDIN' = readSTDIN >>= \case
81 | Left err => die "could not read STDIN"
82 | Right val => pure val