mirror of
https://github.com/tmux/tmux.git
synced 2025-01-09 01:28:49 +00:00
80e6621298
On Cygwin and MSYS2 use a controlling pty for the server client handler instead of passing a file descriptor over the socket which is not possible on Cygwin platforms. Attach an event to STDIN on the client, passing data from it to the server and attach an event to the pty out_fd on the server client handler and pass data from it to the client. Signed-off-by: Rafael Kitover <rkitover@gmail.com>
125 lines
2.4 KiB
C
125 lines
2.4 KiB
C
/* $OpenBSD$ */
|
|
|
|
/*
|
|
* Copyright (c) 2021 Nicholas Marriott <nicholas.marriott@gmail.com>
|
|
*
|
|
* Permission to use, copy, modify, and distribute this software for any
|
|
* purpose with or without fee is hereby granted, provided that the above
|
|
* copyright notice and this permission notice appear in all copies.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
|
|
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
|
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
*/
|
|
|
|
#ifndef TMUX_PROTOCOL_H
|
|
#define TMUX_PROTOCOL_H
|
|
|
|
/* Protocol version. */
|
|
#define PROTOCOL_VERSION 8
|
|
|
|
/* Message types. */
|
|
enum msgtype {
|
|
MSG_VERSION = 12,
|
|
|
|
MSG_IDENTIFY_FLAGS = 100,
|
|
MSG_IDENTIFY_TERM,
|
|
MSG_IDENTIFY_TTYNAME,
|
|
MSG_IDENTIFY_OLDCWD, /* unused */
|
|
MSG_IDENTIFY_STDIN,
|
|
MSG_IDENTIFY_ENVIRON,
|
|
MSG_IDENTIFY_DONE,
|
|
MSG_IDENTIFY_CLIENTPID,
|
|
MSG_IDENTIFY_CWD,
|
|
MSG_IDENTIFY_FEATURES,
|
|
MSG_IDENTIFY_STDOUT,
|
|
MSG_IDENTIFY_LONGFLAGS,
|
|
MSG_IDENTIFY_TERMINFO,
|
|
|
|
MSG_COMMAND = 200,
|
|
MSG_DETACH,
|
|
MSG_DETACHKILL,
|
|
MSG_EXIT,
|
|
MSG_EXITED,
|
|
MSG_EXITING,
|
|
MSG_LOCK,
|
|
MSG_READY,
|
|
MSG_RESIZE,
|
|
MSG_SHELL,
|
|
MSG_SHUTDOWN,
|
|
MSG_OLDSTDERR, /* unused */
|
|
MSG_OLDSTDIN, /* unused */
|
|
MSG_OLDSTDOUT, /* unused */
|
|
MSG_SUSPEND,
|
|
MSG_UNLOCK,
|
|
MSG_WAKEUP,
|
|
MSG_EXEC,
|
|
MSG_FLAGS,
|
|
|
|
MSG_READ_OPEN = 300,
|
|
MSG_READ,
|
|
MSG_READ_DONE,
|
|
MSG_WRITE_OPEN,
|
|
MSG_WRITE,
|
|
MSG_WRITE_READY,
|
|
MSG_WRITE_CLOSE,
|
|
MSG_READ_CANCEL
|
|
#ifdef TTY_OVER_SOCKET
|
|
,
|
|
MSG_TTY_READ,
|
|
MSG_TTY_WRITE
|
|
#endif
|
|
};
|
|
|
|
/*
|
|
* Message data.
|
|
*
|
|
* Don't forget to bump PROTOCOL_VERSION if any of these change!
|
|
*/
|
|
struct msg_command {
|
|
int argc;
|
|
}; /* followed by packed argv */
|
|
|
|
struct msg_read_open {
|
|
int stream;
|
|
int fd;
|
|
}; /* followed by path */
|
|
|
|
struct msg_read_data {
|
|
int stream;
|
|
};
|
|
|
|
struct msg_read_done {
|
|
int stream;
|
|
int error;
|
|
};
|
|
|
|
struct msg_read_cancel {
|
|
int stream;
|
|
};
|
|
|
|
struct msg_write_open {
|
|
int stream;
|
|
int fd;
|
|
int flags;
|
|
}; /* followed by path */
|
|
|
|
struct msg_write_data {
|
|
int stream;
|
|
}; /* followed by data */
|
|
|
|
struct msg_write_ready {
|
|
int stream;
|
|
int error;
|
|
};
|
|
|
|
struct msg_write_close {
|
|
int stream;
|
|
};
|
|
|
|
#endif /* TMUX_PROTOCOL_H */
|