File indexing completed on 2024-05-12 05:54:58

0001 /*
0002     SPDX-FileCopyrightText: 2001 Shie Erlich <krusader@users.sourceforge.net>
0003     SPDX-FileCopyrightText: 2001 Rafi Yanai <krusader@users.sourceforge.net>
0004     SPDX-FileCopyrightText: 2004-2022 Krusader Krew <https://krusader.org>
0005 
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 #include "krlinecountingprocess.h"
0010 
0011 KrLinecountingProcess::KrLinecountingProcess()
0012 {
0013     setOutputChannelMode(KProcess::SeparateChannels); // without this output redirection has no effect!
0014     connect(this, &KrLinecountingProcess::readyReadStandardError, this, &KrLinecountingProcess::receivedError);
0015     connect(this, &KrLinecountingProcess::readyReadStandardOutput, [=]() {
0016         receivedOutput();
0017     });
0018     mergedOutput = true;
0019 }
0020 
0021 void KrLinecountingProcess::setMerge(bool value)
0022 {
0023     mergedOutput = value;
0024 }
0025 
0026 QString KrLinecountingProcess::getErrorMsg()
0027 {
0028     if (errorData.trimmed().isEmpty())
0029         return QString::fromLocal8Bit(outputData);
0030     else
0031         return QString::fromLocal8Bit(errorData);
0032 }
0033 
0034 void KrLinecountingProcess::receivedError()
0035 {
0036     QByteArray newData(this->readAllStandardError());
0037     emit newErrorLines(newData.count('\n'));
0038     errorData += newData;
0039     if (errorData.length() > 500)
0040         errorData = errorData.right(500);
0041     if (mergedOutput)
0042         receivedOutput(newData);
0043 }
0044 
0045 void KrLinecountingProcess::receivedOutput(QByteArray newData)
0046 {
0047     if (newData.isEmpty())
0048         newData = this->readAllStandardOutput();
0049     emit newOutputLines(newData.count('\n'));
0050     emit newOutputData(this, newData);
0051     outputData += newData;
0052     if (outputData.length() > 500)
0053         outputData = outputData.right(500);
0054 }