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);
}
: 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;