]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/exec/exec.cpp
update for 2.6.1 from Dennis Prochko
[wxWidgets.git] / samples / exec / exec.cpp
index 969f242b46d09b4d2a90dfb8c725217e167075bc..5ecdb7744d9b5458825c0b2035f7fcd39e2c6354 100644 (file)
@@ -18,8 +18,8 @@
 // ----------------------------------------------------------------------------
 
 #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".
@@ -499,7 +499,7 @@ void MyFrame::OnClear(wxCommandEvent& WXUNUSED(event))
 
 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);
 }
 
@@ -1028,7 +1028,7 @@ void MyPipedProcess::OnTerminate(int pid, int status)
 
 bool MyPipedProcess2::HasInput()
 {
-    if ( !!m_input )
+    if ( !m_input.empty() )
     {
         wxTextOutputStream os(*GetOutputStream());
         os.WriteString(m_input);
@@ -1053,9 +1053,9 @@ MyPipeFrame::MyPipeFrame(wxFrame *parent,
            : 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);
 
@@ -1114,9 +1114,11 @@ void MyPipeFrame::OnBtnSendFile(wxCommandEvent& WXUNUSED(event))
     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;