示例#1
0
/*!
    Reads a line of text from standard error, excluding any trailing
    newline or carriage return characters and returns it. Returns
    QString::null if canReadLineStderr() returns FALSE.

    By default, the text is interpreted to be in Latin-1 encoding. If you need
    other codecs, you can set a different codec with
    QTextCodec::setCodecForCStrings().

    \sa canReadLineStderr() readyReadStderr() readStderr() readLineStdout()
*/
QString QProcess::readLineStderr()
{
    QByteArray a( 256 );
    QMembuf *buf = membufStderr();
    if ( !buf->scanNewline( &a ) ) {
      if ( !canReadLineStderr() )
	return QString::null;

      if ( !buf->scanNewline( &a ) )
	return QString( buf->readAll() );
    }

    uint size = a.size();
    buf->consumeBytes( size, 0 );

    // get rid of terminating \n or \r\n
    if ( size>0 && a.at( size - 1 ) == '\n' ) {
      if ( size>1 && a.at( size - 2 ) == '\r' )
	a.at( size - 2 ) = '\0';
      else
	a.at( size - 1 ) = '\0';
    }
    return QString( a );
}
示例#2
0
/*!
    Reads a line of text from standard error, excluding any trailing
    newline or carriage return characters and returns it. Returns
    an empty string if canReadLineStderr() returns false.

    By default, the text is interpreted to be in Latin-1 encoding. If you need
    other codecs, you can set a different codec with
    QTextCodec::setCodecForCStrings().

    \sa canReadLineStderr() readyReadStderr() readStderr() readLineStdout()
*/
QString Q3Process::readLineStderr()
{
    QByteArray a( 256 );
    Q3Membuf *buf = membufStderr();
    if ( !buf->scanNewline( &a ) ) {
      if ( !canReadLineStderr() )
	return QString();

      if ( !buf->scanNewline( &a ) )
	return QString( QString::fromLatin1( buf->readAll().constData() ) );
    }

    uint size = a.size();
    buf->consumeBytes( size, 0 );

    // get rid of terminating \n or \r\n
    if ( size>0 && a.at( size - 1 ) == '\n' ) {
      if ( size>1 && a.at( size - 2 ) == '\r' )
	a.chop(2);
      else
	a.chop(1);
    }
    return QString( QString::fromLatin1( a.constData() ) );
}