void LocalProcess::handleOutput(const QByteArray &qba, bool stderror) { // Store in the raw output variable std::string rawoutput(qba.constData(), qba.size()); if (stderror) { emit standardErrDataAdded(rawoutput); } else { emit standardOutDataAdded(rawoutput); } }
void TextStreamBuffer::directflush(const char *str, unsigned int chars) { unsigned int ii = 0; unsigned int i = 0; rawoutput(str, chars); for(i = 0; i < chars; i++) { if((str[i] == '\n') || (str[i] == '\r')) { i++; directoutput(str, i); str += i; chars -= i; i = 0; curline = 0; } else if(curline + i >= wrap) { // track back to last space up to 1/4 in the line to wrap for(ii = 0; ii < min((wrap / 4), i); ii++) { if(isspace(str[i - ii])) break; } // if no space was found in the last 1/4 of the line to wrap, split it at the end anyway if(ii == min((wrap / 4), i)) ii = 0; i -= ii; directoutput(str, i); directoutput("\n", 1); str += i; chars -= i; i = 0; curline = 0; } } if(chars > 0) { directoutput(str, chars); curline += chars; } }