10 | emptyBuffer = unsafePerformIO $
do
11 | Just buf <- newBuffer 0
12 | | Nothing => die "could not allocate empty buffer"
17 | readFileToBuffer : HasIO io => File -> io (Either FileError Buffer)
18 | readFileToBuffer file = do
19 | Right size <- fileSize file
20 | | Left err => pure (Left err)
21 | Just buf <- newBuffer size
22 | | Nothing => pure (Left FileReadError)
23 | Right ok <- readBufferData file buf 0 size
24 | | Left err => pure (Left err)
29 | readFileToBuffer' : HasIO io => File -> io Buffer
30 | readFileToBuffer' file = case !(readFileToBuffer file) of
31 | Left err => die "could not read file"
32 | Right val => pure val
36 | bufferToString : HasIO io => Buffer -> io String
37 | bufferToString buf = do
39 | getString buf 0 size
43 | bufferToStringUnsafe : Buffer -> String
44 | bufferToStringUnsafe = unsafePerformIO . bufferToString
47 | readFileToString : HasIO io => File -> io (Either FileError String)
48 | readFileToString file = do
49 | Right buf <- readFileToBuffer file
50 | | Left err => pure (Left err)
51 | map Right (bufferToString buf)
54 | readFileToString' : HasIO io => File -> io String
55 | readFileToString' file = case !(readFileToString file) of
56 | Left err => die "could not read file"
57 | Right val => pure val
60 | readSTDINBuffer : HasIO io => io (Either FileError Buffer)
61 | readSTDINBuffer = readFileToBuffer stdin
64 | readSTDINBuffer' : HasIO io => io Buffer
65 | readSTDINBuffer' = readFileToBuffer stdin >>= \case
66 | Left err => die "could not read STDIN"
67 | Right val => pure val
70 | readSTDIN : HasIO io => io (Either FileError String)
71 | readSTDIN = readFileToString stdin
74 | readSTDIN' : HasIO io => io String
75 | readSTDIN' = readSTDIN >>= \case
76 | Left err => die "could not read STDIN"
77 | Right val => pure val