Just curious... you mentioned a FILE * stream but then keep talking about the FD API? Which is it? And I don't see any FILE * streams in your guiOpen() call, the only thing resembling file I/O is this ipFdOpen() which seems to be pointing to some ridiculous internal function