File indexing completed on 2023-12-03 09:19:04
0001 /* 0002 SPDX-FileCopyrightText: 2008-2022 Rolf Eike Beer <kde@opensource.sf-tec.de> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #include "klinebufferedprocess.h" 0007 0008 KLineBufferedProcess::KLineBufferedProcess(QObject *parent) 0009 : KProcess(parent), 0010 d(new KLineBufferedProcessPrivate(this)) 0011 { 0012 connect(this, &KLineBufferedProcess::readyReadStandardOutput, d, &KLineBufferedProcessPrivate::_k_receivedStdout); 0013 connect(this, &KLineBufferedProcess::readyReadStandardError, d, &KLineBufferedProcessPrivate::_k_receivedStderr); 0014 } 0015 0016 bool KLineBufferedProcess::readLineStandardOutput(QByteArray *line) 0017 { 0018 if (d->m_newlineInStdout < 0) { 0019 return false; 0020 } 0021 0022 // don't copy '\n' 0023 *line = d->m_stdoutBuffer.left(d->m_newlineInStdout); 0024 d->m_stdoutBuffer.remove(0, d->m_newlineInStdout + d->m_lineEnd.length()); 0025 0026 d->m_newlineInStdout = d->m_stdoutBuffer.indexOf(d->m_lineEnd); 0027 0028 return true; 0029 } 0030 0031 bool KLineBufferedProcess::readLineStandardError(QByteArray *line) 0032 { 0033 if (d->m_newlineInStderr < 0) { 0034 return false; 0035 } 0036 0037 // don't copy '\n' 0038 *line = d->m_stderrBuffer.left(d->m_newlineInStderr); 0039 d->m_stderrBuffer.remove(0, d->m_newlineInStderr + d->m_lineEnd.length()); 0040 0041 d->m_newlineInStderr = d->m_stderrBuffer.indexOf(d->m_lineEnd); 0042 0043 return true; 0044 } 0045 0046 bool KLineBufferedProcess::hasLineStandardOutput() const 0047 { 0048 return d->m_newlineInStdout >= 0; 0049 } 0050 0051 bool KLineBufferedProcess::hasLineStandardError() const 0052 { 0053 return d->m_newlineInStderr >= 0; 0054 }