Readline readHistory & writeHistory API broken

Krasimir Angelov kr.angelov at gmail.com
Sun Jun 8 11:30:34 EDT 2008


The current readHistory and writeHistory bindings are defined as:

-- |Read in a history file.  Returns 'False' on failure
-- (for example, if the file does not exist).
readHistory :: FilePath -- ^ The file to read (if null, read ~\/.history)
            -> IO Bool
readHistory fp = do
  ok <- withCString fp read_history
  return (ok==0)
foreign import ccall unsafe read_history :: Ptr CChar -> IO CInt

-- |Write out a history file.  Returns 'False' if there was a problem
writing the file.
writeHistory :: FilePath -- ^ The file to write (if null, write ~\/.history)
             -> IO Bool
writeHistory fp = do
  ok <- withCString fp write_history
  return (ok==0)
foreign import ccall unsafe write_history :: Ptr CChar -> IO CInt


Note the comments "(if null, write ~/.history)"! This is supported in
the original C API but in Haskell the filepath cannot be null. In the
best case it can be empty string. Either the type signatures have to
be changed to accept (Maybe FilePath) or the comments have to be
changed because the Haskell binding currently doesn't support this
functionality.

Comments?  I hope that this will not start another endless discussion.

Regards,
  Krasimir


More information about the Libraries mailing list