module ReadFileF(readFileF,readBinaryFileF,readXdgFileF,readDirF) where
import Fudget() -- synonym KEvent, for hbc
import NullF
import FudgetIO
import IoF(ioF)
import HaskellIO(haskellIO)
import Message(Message(..))
import DialogueIO hiding (IOError)
readFileF = ioF readFileK
readBinaryFileF = ioF readBinaryFileK
readXdgFileF = ioF . readXdgFileK
readFileK = readFileK' ReadFile
readBinaryFileK = readFileK' ReadBinaryFile
readXdgFileK = readFileK' . ReadXdgFile
readFileK' req =
getK $ \ msg ->
case msg of
High filename ->
haskellIO (req filename) $ \ resp ->
putHigh (filename,case resp of
Str s -> Right s
Failure err -> Left err)
readFileK
_ -> readFileK
readDirF = ioF readDirK
readDirK =
getK $ \ msg ->
case msg of
High dirname ->
haskellIO (ReadDirectory dirname) $ \ resp ->
putHigh (dirname,case resp of
StrList filenames -> Right filenames
Failure err -> Left err)
readDirK
_ -> readDirK