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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
/***************************************************************************
begin : Mon Sep 13 1999
copyright : (C) 1999 by John Birch
email : jbb@kdevelop.org
This code was originally written by Judin Maxim, from the
KDEStudio project.
It was then updated with later code from konsole (KDE).
It has also been enhanced with an idea from the code in kdbg
written by Johannes Sixt<Johannes.Sixt@telecom.at>
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef _STTY_H_
#define _STTY_H_
class QSocketNotifier;
class QProcess;
#include <QObject>
#include <QString>
#include <QScopedPointer>
namespace KDevMI {
class STTY : public QObject
{
Q_OBJECT
public:
explicit STTY(bool ext=false, const QString &termAppName=QString());
~STTY() override;
///Call it if getSlave returns an empty string.
QString lastError(){return m_lastError;}
QString getSlave() { return ttySlave; };
void readRemaining();
private Q_SLOTS:
void OutReceived(int);
Q_SIGNALS:
void OutOutput(const QByteArray&);
void ErrOutput(const QByteArray&);
private:
int findTTY();
bool findExternalTTY(const QString &termApp);
private:
int fout;
QSocketNotifier *out = nullptr;
QString ttySlave;
QString m_lastError;
QScopedPointer<QProcess> m_externalTerminal;
bool external_;
char pty_master[50]; // "/dev/ptyxx" | "/dev/ptmx"
char tty_slave[50]; // "/dev/ttyxx" | "/dev/pts/########..."
};
} // end of namespace KDevMI
#endif
|