fix write
[enigma2.git] / lib / base / console.cpp
index c923da52ea6ef2d6b44f8013cbe4c2b50867ecc1..0a01094be3c153390623cd413591ede55696e159 100644 (file)
@@ -371,18 +371,17 @@ void eConsoleAppContainer::readyWrite(int what)
        if (what&eSocketNotifier::Write && outbuf.size() )
        {
                queue_data d = outbuf.front();
-               outbuf.pop();
-               if ( ::write( fd[1], d.data, d.len ) != d.len )
-               {
-                       /* emit */ dataSent(-1);
-//                     eDebug("writeError");
-               }
+               int wr = ::write( fd[1], d.data+d.dataSent, d.len-d.dataSent );
+               if (wr < 0)
+                       eDebug("eConsoleAppContainer write failed (%m)");
                else
+                       d.dataSent += wr;
+               if (d.dataSent == d.len)
                {
+                       outbuf.pop();
+                       delete [] d.data;
                        /* emit */ dataSent(0);
-//                     eDebug("write ok");
                }
-               delete [] d.data;
        }
        if ( !outbuf.size() )
                out->stop();