1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
/*
SPDX-FileCopyrightText: 2001 Shie Erlich <krusader@users.sourceforge.net>
SPDX-FileCopyrightText: 2001 Rafi Yanai <krusader@users.sourceforge.net>
SPDX-FileCopyrightText: 2004-2022 Krusader Krew <https://krusader.org>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#include "krlinecountingprocess.h"
KrLinecountingProcess::KrLinecountingProcess()
{
setOutputChannelMode(KProcess::SeparateChannels); // without this output redirection has no effect!
connect(this, &KrLinecountingProcess::readyReadStandardError, this, &KrLinecountingProcess::receivedError);
connect(this, &KrLinecountingProcess::readyReadStandardOutput, [=]() {
receivedOutput();
});
mergedOutput = true;
}
void KrLinecountingProcess::setMerge(bool value)
{
mergedOutput = value;
}
QString KrLinecountingProcess::getErrorMsg()
{
if (errorData.trimmed().isEmpty())
return QString::fromLocal8Bit(outputData);
else
return QString::fromLocal8Bit(errorData);
}
void KrLinecountingProcess::receivedError()
{
QByteArray newData(this->readAllStandardError());
emit newErrorLines(newData.count('\n'));
errorData += newData;
if (errorData.length() > 500)
errorData = errorData.right(500);
if (mergedOutput)
receivedOutput(newData);
}
void KrLinecountingProcess::receivedOutput(QByteArray newData)
{
if (newData.isEmpty())
newData = this->readAllStandardOutput();
emit newOutputLines(newData.count('\n'));
emit newOutputData(this, newData);
outputData += newData;
if (outputData.length() > 500)
outputData = outputData.right(500);
}
|