kpty: format and indent

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2023-06-21 02:39:54 +03:00
parent 8bce018375
commit 25bc102ae0
6 changed files with 156 additions and 157 deletions

View file

@ -446,7 +446,7 @@ bool KPty::setEcho(bool echo)
const char *KPty::ttyName() const
{
Q_D(const KPty);
return d->ttyName.data();
return d->ttyName.constData();
}
int KPty::masterFd() const

View file

@ -32,175 +32,174 @@ struct termios;
* Provides primitives for opening & closing a pseudo TTY pair, assigning the
* controlling TTY, utmp registration and setting various terminal attributes.
*/
class KPTY_EXPORT KPty {
class KPTY_EXPORT KPty
{
Q_DECLARE_PRIVATE(KPty)
public:
/**
* Constructor
*/
KPty();
/**
* Constructor
*/
KPty();
/**
* Destructor:
*
* If the pty is still open, it will be closed. Note, however, that
* an utmp registration is @em not undone.
*/
~KPty();
/**
* Destructor:
*
* If the pty is still open, it will be closed. Note, however, that
* an utmp registration is @em not undone.
*/
~KPty();
/**
* Create a pty master/slave pair.
*
* @return true if a pty pair was successfully opened
*/
bool open();
/**
* Create a pty master/slave pair.
*
* @return true if a pty pair was successfully opened
*/
bool open();
/**
* Open using an existing pty master.
*
* @param fd an open pty master file descriptor.
* The ownership of the fd remains with the caller;
* it will not be automatically closed at any point.
* @return true if a pty pair was successfully opened
*/
bool open(int fd);
/**
* Open using an existing pty master.
*
* @param fd an open pty master file descriptor.
* The ownership of the fd remains with the caller;
* it will not be automatically closed at any point.
* @return true if a pty pair was successfully opened
*/
bool open(int fd);
/**
* Close the pty master/slave pair.
*/
void close();
/**
* Close the pty master/slave pair.
*/
void close();
/**
* Close the pty slave descriptor.
*
* When creating the pty, KPty also opens the slave and keeps it open.
* Consequently the master will never receive an EOF notification.
* Usually this is the desired behavior, as a closed pty slave can be
* reopened any time - unlike a pipe or socket. However, in some cases
* pipe-alike behavior might be desired.
*
* After this function was called, slaveFd() and setCTty() cannot be
* used.
*/
void closeSlave();
/**
* Close the pty slave descriptor.
*
* When creating the pty, KPty also opens the slave and keeps it open.
* Consequently the master will never receive an EOF notification.
* Usually this is the desired behavior, as a closed pty slave can be
* reopened any time - unlike a pipe or socket. However, in some cases
* pipe-alike behavior might be desired.
*
* After this function was called, slaveFd() and setCTty() cannot be
* used.
*/
void closeSlave();
/**
* Open the pty slave descriptor.
*
* This undoes the effect of closeSlave().
*
* @return true if the pty slave was successfully opened
*/
bool openSlave();
/**
* Open the pty slave descriptor.
*
* This undoes the effect of closeSlave().
*
* @return true if the pty slave was successfully opened
*/
bool openSlave();
/**
* Creates a new session and process group and makes this pty the
* controlling tty.
*/
void setCTty();
/**
* Creates a new session and process group and makes this pty the
* controlling tty.
*/
void setCTty();
/**
* Creates an utmp entry for the tty.
* This function must be called after calling setCTty and
* making this pty the stdin.
* @param user the user to be logged on
* @param remotehost the host from which the login is coming. This is
* @em not the local host. For remote logins it should be the hostname
* of the client. For local logins from inside an X session it should
* be the name of the X display. Otherwise it should be empty.
*/
void login(const char *user = 0, const char *remotehost = 0);
/**
* Creates an utmp entry for the tty.
* This function must be called after calling setCTty and
* making this pty the stdin.
* @param user the user to be logged on
* @param remotehost the host from which the login is coming. This is
* @em not the local host. For remote logins it should be the hostname
* of the client. For local logins from inside an X session it should
* be the name of the X display. Otherwise it should be empty.
*/
void login(const char *user = 0, const char *remotehost = 0);
/**
* Removes the utmp entry for this tty.
*/
void logout();
/**
* Removes the utmp entry for this tty.
*/
void logout();
/**
* Wrapper around tcgetattr(3).
*
* This function can be used only while the PTY is open.
* You will need an #include &lt;termios.h&gt; to do anything useful
* with it.
*
* @param ttmode a pointer to a termios structure.
* Note: when declaring ttmode, @c struct @c ::termios must be used -
* without the '::' some version of HP-UX thinks, this declares
* the struct in your class, in your method.
* @return @c true on success, false otherwise
*/
bool tcGetAttr(struct ::termios *ttmode) const;
/**
* Wrapper around tcgetattr(3).
*
* This function can be used only while the PTY is open.
* You will need an #include &lt;termios.h&gt; to do anything useful
* with it.
*
* @param ttmode a pointer to a termios structure.
* Note: when declaring ttmode, @c struct @c ::termios must be used -
* without the '::' some version of HP-UX thinks, this declares
* the struct in your class, in your method.
* @return @c true on success, false otherwise
*/
bool tcGetAttr(struct ::termios *ttmode) const;
/**
* Wrapper around tcsetattr(3) with mode TCSANOW.
*
* This function can be used only while the PTY is open.
*
* @param ttmode a pointer to a termios structure.
* @return @c true on success, false otherwise. Note that success means
* that @em at @em least @em one attribute could be set.
*/
bool tcSetAttr(struct ::termios *ttmode);
/**
* Wrapper around tcsetattr(3) with mode TCSANOW.
*
* This function can be used only while the PTY is open.
*
* @param ttmode a pointer to a termios structure.
* @return @c true on success, false otherwise. Note that success means
* that @em at @em least @em one attribute could be set.
*/
bool tcSetAttr(struct ::termios *ttmode);
/**
* Change the logical (screen) size of the pty.
* The default is 24 lines by 80 columns.
*
* This function can be used only while the PTY is open.
*
* @param lines the number of rows
* @param columns the number of columns
* @return @c true on success, false otherwise
*/
bool setWinSize(int lines, int columns);
/**
* Change the logical (screen) size of the pty.
* The default is 24 lines by 80 columns.
*
* This function can be used only while the PTY is open.
*
* @param lines the number of rows
* @param columns the number of columns
* @return @c true on success, false otherwise
*/
bool setWinSize(int lines, int columns);
/**
* Set whether the pty should echo input.
*
* Echo is on by default.
* If the output of automatically fed (non-interactive) PTY clients
* needs to be parsed, disabling echo often makes it much simpler.
*
* This function can be used only while the PTY is open.
*
* @param echo true if input should be echoed.
* @return @c true on success, false otherwise
*/
bool setEcho(bool echo);
/**
* Set whether the pty should echo input.
*
* Echo is on by default.
* If the output of automatically fed (non-interactive) PTY clients
* needs to be parsed, disabling echo often makes it much simpler.
*
* This function can be used only while the PTY is open.
*
* @param echo true if input should be echoed.
* @return @c true on success, false otherwise
*/
bool setEcho(bool echo);
/**
* @return the name of the slave pty device.
*
* This function should be called only while the pty is open.
*/
const char *ttyName() const;
/**
* @return the name of the slave pty device.
*
* This function should be called only while the pty is open.
*/
const char *ttyName() const;
/**
* @return the file descriptor of the master pty
*
* This function should be called only while the pty is open.
*/
int masterFd() const;
/**
* @return the file descriptor of the master pty
*
* This function should be called only while the pty is open.
*/
int masterFd() const;
/**
* @return the file descriptor of the slave pty
*
* This function should be called only while the pty slave is open.
*/
int slaveFd() const;
/**
* @return the file descriptor of the slave pty
*
* This function should be called only while the pty slave is open.
*/
int slaveFd() const;
protected:
/**
* @internal
*/
KPty(KPtyPrivate *d);
/**
* @internal
*/
KPty(KPtyPrivate *d);
/**
* @internal
*/
KPtyPrivate * const d_ptr;
/**
* @internal
*/
KPtyPrivate * const d_ptr;
};
#endif

View file

@ -35,7 +35,8 @@ class KPtyDevicePrivate;
/**
* Encapsulates KPty into a QIODevice, so it can be used with Q*Stream, etc.
*/
class KPTY_EXPORT KPtyDevice : public QIODevice, public KPty { //krazy:exclude=dpointer (via macro)
class KPTY_EXPORT KPtyDevice : public QIODevice, public KPty
{
Q_OBJECT
Q_DECLARE_PRIVATE_MI(KPtyDevice, KPty)

View file

@ -37,7 +37,8 @@ class KPtyProcessPrivate : public KProcessPrivate
{
public:
KPtyProcessPrivate()
: ptyChannels(KPtyProcess::NoChannels),
: pty(nullptr),
ptyChannels(KPtyProcess::NoChannels),
addUtmp(false)
{
}

View file

@ -48,7 +48,6 @@ class KPTY_EXPORT KPtyProcess : public KProcess
{
Q_OBJECT
Q_DECLARE_PRIVATE(KPtyProcess)
public:
enum PtyChannelFlag {
NoChannels = 0, /**< The PTY is not connected to any channel. */
@ -58,7 +57,6 @@ public:
AllOutputChannels = 6, /**< Connect PTY to all output channels. */
AllChannels = 7 /**< Connect PTY to all channels. */
};
Q_DECLARE_FLAGS(PtyChannels, PtyChannelFlag)
/**

View file

@ -93,7 +93,7 @@ void KPtyProcessTest::test_shared_pty()
}
}
// This test (or KPtyProcess) is fragile, sometimes the \r\n is missing. Disabled.
//QCOMPARE(p.pty()->readAll(), QByteArray("hello from process 2\r\n"));
// QCOMPARE(p.pty()->readAll(), QByteArray("hello from process 2\r\n"));
// write to the first process' pty
p.pty()->write("hi from process 1\n");
@ -138,8 +138,9 @@ void KPtyProcessTest::slotReadyRead()
void KPtyProcessTest::slotDoRead()
{
while (sp.pty()->canReadLine())
while (sp.pty()->canReadLine()) {
log.append('>').append(sp.pty()->readLine()).append("$\n");
}
log.append("!\n");
}
@ -196,7 +197,6 @@ void KPtyProcessTest::test_pty_signals()
QCOMPARE(QLatin1String(log), QLatin1String(want));
}
void KPtyProcessTest::test_ctty()
{
KPtyProcess p;
@ -207,6 +207,6 @@ void KPtyProcessTest::test_ctty()
QCOMPARE(output, QLatin1String("this is a test\r\n"));
}
QTEST_KDEMAIN_CORE( KPtyProcessTest )
QTEST_KDEMAIN_CORE(KPtyProcessTest)
#include "moc_kptyprocesstest.cpp"