X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/655719367ac5e131d9642e5783f3ecf64d1a3385..66c2bf7b1d9326fb650acfaae22ec50528cfbf7c:/include/wx/unix/pipe.h diff --git a/include/wx/unix/pipe.h b/include/wx/unix/pipe.h index 33f6b40f79..e8e2d427cb 100644 --- a/include/wx/unix/pipe.h +++ b/include/wx/unix/pipe.h @@ -4,7 +4,6 @@ // Author: Vadim Zeitlin // Modified by: // Created: 24.06.2003 (extracted from src/unix/utilsunx.cpp) -// RCS-ID: $Id$ // Copyright: (c) 2003 Vadim Zeitlin // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// @@ -13,6 +12,7 @@ #define _WX_UNIX_PIPE_H_ #include +#include #include "wx/log.h" #include "wx/intl.h" @@ -28,8 +28,7 @@ public: enum Direction { Read, - Write, - Direction_Max + Write }; enum @@ -47,10 +46,20 @@ public: { wxLogSysError(_("Pipe creation failed")); - return FALSE; + return false; } - return TRUE; + 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 @@ -75,7 +84,10 @@ public: for ( size_t n = 0; n < WXSIZEOF(m_fds); n++ ) { if ( m_fds[n] != INVALID_FD ) + { close(m_fds[n]); + m_fds[n] = INVALID_FD; + } } } @@ -83,30 +95,8 @@ public: ~wxPipe() { Close(); } private: - int m_fds[Direction_Max]; -}; - -#if wxUSE_STREAMS - -#include "wx/wfstream.h" - -// ---------------------------------------------------------------------------- -// wxPipeInputStream: stream for reading from a pipe -// ---------------------------------------------------------------------------- - -class wxPipeInputStream : public wxFileInputStream -{ -public: - wxPipeInputStream(int fd) : wxFileInputStream(fd) { } - - // return TRUE if the pipe is still opened - bool IsOpened() const { return !Eof(); } - - // return TRUE if we have anything to read, don't block - virtual bool CanRead() const; + int m_fds[2]; }; -#endif // wxUSE_STREAMS - #endif // _WX_UNIX_PIPE_H_