// ----------------------------------------------------------------------------
#if defined(__GNUG__) && !defined(__APPLE__)
- #pragma implementation "exec.cpp"
- #pragma interface "exec.cpp"
+ #pragma implementation
+ #pragma interface
#endif
// For compilers that support precompilation, includes "wx/wx.h".
void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
{
- wxMessageBox(_T("Exec wxWidgets Sample\n© 2000-2002 Vadim Zeitlin"),
+ wxMessageBox(_T("Exec wxWidgets Sample\n(c) 2000-2002 Vadim Zeitlin"),
_T("About Exec"), wxOK | wxICON_INFORMATION, this);
}
bool MyPipedProcess2::HasInput()
{
- if ( !!m_input )
+ if ( !m_input.empty() )
{
wxTextOutputStream os(*GetOutputStream());
os.WriteString(m_input);
: wxFrame(parent, wxID_ANY, cmd),
m_process(process),
// in a real program we'd check that the streams are !NULL here
+ m_out(*process->GetOutputStream()),
m_in(*process->GetInputStream()),
- m_err(*process->GetErrorStream()),
- m_out(*process->GetOutputStream())
+ m_err(*process->GetErrorStream())
{
m_process->SetNextHandler(this);
while ( len )
{
const size_t CHUNK_SIZE = 4096;
- size_t lenChunk = len > CHUNK_SIZE ? CHUNK_SIZE : len;
+ m_out.Write(pc, len > CHUNK_SIZE ? CHUNK_SIZE : len);
- m_out.Write(pc, lenChunk);
+ // note that not all data could have been written as we don't block on
+ // the write end of the pipe
+ const size_t lenChunk = m_out.LastWrite();
pc += lenChunk;
len -= lenChunk;