/[svn]/qsampler/trunk/src/qsamplerMessages.cpp
ViewVC logotype

Diff of /qsampler/trunk/src/qsamplerMessages.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2668 by capela, Fri May 30 21:03:25 2014 UTC revision 2669 by capela, Sun Aug 3 16:56:18 2014 UTC
# Line 36  Line 36 
36    
37  #if !defined(WIN32)  #if !defined(WIN32)
38  #include <unistd.h>  #include <unistd.h>
39    #include <fcntl.h>
40  #endif  #endif
41    
42    
# Line 116  Messages::~Messages (void) Line 117  Messages::~Messages (void)
117  void Messages::stdoutNotify ( int fd )  void Messages::stdoutNotify ( int fd )
118  {  {
119  #if !defined(WIN32)  #if !defined(WIN32)
120            // Set non-blocking reads, if not already...
121            const int iFlags = ::fcntl(fd, F_GETFL, 0);
122            int iBlock = ((iFlags & O_NONBLOCK) == 0);
123            if (iBlock)
124                    iBlock = ::fcntl(fd, F_SETFL, iFlags | O_NONBLOCK);
125            // Read as much as is available...
126            QString sTemp;
127          char achBuffer[1024];          char achBuffer[1024];
128          const int cchBuffer = ::read(fd, achBuffer, sizeof(achBuffer) - 1);          const int cchBuffer = sizeof(achBuffer) - 1;
129          if (cchBuffer > 0) {          int cchRead = ::read(fd, achBuffer, cchBuffer);
130                  achBuffer[cchBuffer] = (char) 0;          while (cchRead > 0) {
131                  appendStdoutBuffer(achBuffer);                  achBuffer[cchRead] = (char) 0;
132                    sTemp.append(achBuffer);
133                    cchRead = (iBlock ? 0 : ::read(fd, achBuffer, cchBuffer));
134          }          }
135            // Needs to be non-empty...
136            if (!sTemp.isEmpty())
137                    appendStdoutBuffer(sTemp);
138  #endif  #endif
139  }  }
140    
# Line 148  void Messages::flushStdoutBuffer (void) Line 161  void Messages::flushStdoutBuffer (void)
161  {  {
162          if (!m_sStdoutBuffer.isEmpty()) {          if (!m_sStdoutBuffer.isEmpty()) {
163                  appendMessagesText(m_sStdoutBuffer);                  appendMessagesText(m_sStdoutBuffer);
164                  m_sStdoutBuffer.truncate(0);                  m_sStdoutBuffer.clear();
165          }          }
166  }  }
167    

Legend:
Removed from v.2668  
changed lines
  Added in v.2669

  ViewVC Help
Powered by ViewVC