X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8e6efd1fd2f6cedda23140aff17f56b26ef7c2d2..8e77fd8bca165aab9709649d79a7cbc6a172d4e1:/include/wx/unix/pipe.h diff --git a/include/wx/unix/pipe.h b/include/wx/unix/pipe.h index d1a058beca..e4799024ed 100644 --- a/include/wx/unix/pipe.h +++ b/include/wx/unix/pipe.h @@ -52,6 +52,16 @@ public: return true; } + // switch the given end of the pipe to non-blocking IO + bool MakeNonBlocking(Direction which) + { + const int flags = fcntl(m_fds[which], F_GETFL, 0); + if ( flags == -1 ) + return false; + + return fcntl(m_fds[which], F_SETFL, flags | O_NONBLOCK) == 0; + } + // return TRUE if we were created successfully bool IsOk() const { return m_fds[Read] != INVALID_FD; } @@ -108,6 +118,20 @@ public: virtual bool CanRead() const; }; +// ---------------------------------------------------------------------------- +// wxPipeOutputStream: stream for writing to a pipe +// ---------------------------------------------------------------------------- + +class wxPipeOutputStream : public wxFileOutputStream +{ +public: + wxPipeOutputStream(int fd) : wxFileOutputStream(fd) { } + + // Override the base class version to ignore "pipe full" errors: this is + // not an error for this class. + size_t OnSysWrite(const void *buffer, size_t size); +}; + #endif // wxUSE_STREAMS && wxUSE_FILE #endif // _WX_UNIX_PIPE_H_