File indexing completed on 2024-05-12 17:22:25
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 }