Unix hacking in Haskell: better pseudoterminal support