File indexing completed on 2024-04-21 05:50:49

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 }