mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-08-14 17:12:14 +00:00
tree-wide: s/pts/pty/g
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
This commit is contained in:
parent
36a94ce8e3
commit
41808e20a1
@ -1152,11 +1152,11 @@ by KATOH Yasufumi <karma at jazz.email.ne.jp>
|
||||
<!--
|
||||
If set, the container will have a new pseudo tty
|
||||
instance, making this private to it. The value specifies
|
||||
the maximum number of pseudo ttys allowed for a pts
|
||||
the maximum number of pseudo ttys allowed for a pty
|
||||
instance (this limitation is not implemented yet).
|
||||
-->
|
||||
もし設定された場合、コンテナは新しい pseudo tty インスタンスを持ち、それを自身のプライベートとします。
|
||||
この値は pts インスタンスに許可される pseudo tty の最大数を指定します (この制限はまだ実装されていません)。
|
||||
この値は pty インスタンスに許可される pseudo tty の最大数を指定します (この制限はまだ実装されていません)。
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
@ -844,7 +844,7 @@ by Sungbae Yoo <sungbae.yoo at samsung.com>
|
||||
<!--
|
||||
If set, the container will have a new pseudo tty
|
||||
instance, making this private to it. The value specifies
|
||||
the maximum number of pseudo ttys allowed for a pts
|
||||
the maximum number of pseudo ttys allowed for a pty
|
||||
instance (this limitation is not implemented yet).
|
||||
-->
|
||||
만약 지정되었다면, 컨테이너는 새 pseudo tty 인스턴스를 갖는다. 그리고 이것을 자기자신 전용으로 만든다. 지정하는 값은 pseudo tty의 최대 개수를 지정한다. (이 제한은 아직 구현되지 않았다)
|
||||
|
@ -873,7 +873,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
<para>
|
||||
If set, the container will have a new pseudo tty
|
||||
instance, making this private to it. The value specifies
|
||||
the maximum number of pseudo ttys allowed for a pts
|
||||
the maximum number of pseudo ttys allowed for a pty
|
||||
instance (this limitation is not implemented yet).
|
||||
</para>
|
||||
</listitem>
|
||||
|
@ -38,7 +38,7 @@ int openpty (int *aptx, int *apts, char *name, struct termios *termp,
|
||||
struct winsize *winp)
|
||||
{
|
||||
char buf[PATH_MAX];
|
||||
int ptx, pts;
|
||||
int ptx, pty;
|
||||
|
||||
ptx = open(_PATH_DEVPTMX, O_RDWR);
|
||||
if (ptx == -1)
|
||||
@ -50,21 +50,21 @@ int openpty (int *aptx, int *apts, char *name, struct termios *termp,
|
||||
if (unlockpt(ptx))
|
||||
goto fail;
|
||||
|
||||
if (ptsname_r(ptx, buf, sizeof buf))
|
||||
if (ptyname_r(ptx, buf, sizeof buf))
|
||||
goto fail;
|
||||
|
||||
pts = open(buf, O_RDWR | O_NOCTTY);
|
||||
if (pts == -1)
|
||||
pty = open(buf, O_RDWR | O_NOCTTY);
|
||||
if (pty == -1)
|
||||
goto fail;
|
||||
|
||||
/* XXX Should we ignore errors here? */
|
||||
if (termp)
|
||||
tcsetattr(pts, TCSAFLUSH, termp);
|
||||
tcsetattr(pty, TCSAFLUSH, termp);
|
||||
if (winp)
|
||||
ioctl(pts, TIOCSWINSZ, winp);
|
||||
ioctl(pty, TIOCSWINSZ, winp);
|
||||
|
||||
*aptx = ptx;
|
||||
*apts = pts;
|
||||
*apts = pty;
|
||||
if (name != NULL)
|
||||
strcpy(name, buf);
|
||||
|
||||
|
@ -28,7 +28,7 @@
|
||||
#include <sys/ioctl.h>
|
||||
|
||||
/*
|
||||
* Create pseudo tty ptx pts pair with @__name and set terminal
|
||||
* Create pseudo tty ptx pty pair with @__name and set terminal
|
||||
* attributes according to @__termp and @__winp and return handles for both
|
||||
* ends in @__aptx and @__apts.
|
||||
*/
|
||||
|
@ -939,7 +939,7 @@ static inline void lxc_attach_terminal_close_ptx(struct lxc_terminal *terminal)
|
||||
|
||||
static inline void lxc_attach_terminal_close_pts(struct lxc_terminal *terminal)
|
||||
{
|
||||
close_prot_errno_disarm(terminal->pts);
|
||||
close_prot_errno_disarm(terminal->pty);
|
||||
}
|
||||
|
||||
static inline void lxc_attach_terminal_close_peer(struct lxc_terminal *terminal)
|
||||
@ -1377,7 +1377,7 @@ int lxc_attach(struct lxc_container *container, lxc_attach_exec_t exec_function,
|
||||
payload.ipc_socket = ipc_sockets[1];
|
||||
payload.options = options;
|
||||
payload.init_ctx = init_ctx;
|
||||
payload.terminal_pts_fd = terminal.pts;
|
||||
payload.terminal_pts_fd = terminal.pty;
|
||||
payload.exec_function = exec_function;
|
||||
payload.exec_payload = exec_payload;
|
||||
|
||||
|
@ -922,21 +922,21 @@ int lxc_allocate_ttys(struct lxc_conf *conf)
|
||||
struct lxc_terminal_info *tty = &ttys->tty[i];
|
||||
|
||||
tty->ptx = -EBADF;
|
||||
tty->pts = -EBADF;
|
||||
ret = openpty(&tty->ptx, &tty->pts, NULL, NULL, NULL);
|
||||
tty->pty = -EBADF;
|
||||
ret = openpty(&tty->ptx, &tty->pty, NULL, NULL, NULL);
|
||||
if (ret < 0) {
|
||||
ttys->max = i;
|
||||
return log_error_errno(-ENOTTY, ENOTTY, "Failed to create tty %zu", i);
|
||||
}
|
||||
|
||||
ret = ttyname_r(tty->pts, tty->name, sizeof(tty->name));
|
||||
ret = ttyname_r(tty->pty, tty->name, sizeof(tty->name));
|
||||
if (ret < 0) {
|
||||
ttys->max = i;
|
||||
return log_error_errno(-ENOTTY, ENOTTY, "Failed to retrieve name of tty %zu pts", i);
|
||||
return log_error_errno(-ENOTTY, ENOTTY, "Failed to retrieve name of tty %zu pty", i);
|
||||
}
|
||||
|
||||
DEBUG("Created tty \"%s\" with ptx fd %d and pts fd %d",
|
||||
tty->name, tty->ptx, tty->pts);
|
||||
DEBUG("Created tty \"%s\" with ptx fd %d and pty fd %d",
|
||||
tty->name, tty->ptx, tty->pty);
|
||||
|
||||
/* Prevent leaking the file descriptors to the container */
|
||||
ret = fd_cloexec(tty->ptx, true);
|
||||
@ -944,10 +944,10 @@ int lxc_allocate_ttys(struct lxc_conf *conf)
|
||||
SYSWARN("Failed to set FD_CLOEXEC flag on ptx fd %d of tty device \"%s\"",
|
||||
tty->ptx, tty->name);
|
||||
|
||||
ret = fd_cloexec(tty->pts, true);
|
||||
ret = fd_cloexec(tty->pty, true);
|
||||
if (ret < 0)
|
||||
SYSWARN("Failed to set FD_CLOEXEC flag on pts fd %d of tty device \"%s\"",
|
||||
tty->pts, tty->name);
|
||||
SYSWARN("Failed to set FD_CLOEXEC flag on pty fd %d of tty device \"%s\"",
|
||||
tty->pty, tty->name);
|
||||
|
||||
tty->busy = -1;
|
||||
}
|
||||
@ -965,7 +965,7 @@ void lxc_delete_tty(struct lxc_tty_info *ttys)
|
||||
for (int i = 0; i < ttys->max; i++) {
|
||||
struct lxc_terminal_info *tty = &ttys->tty[i];
|
||||
close_prot_errno_disarm(tty->ptx);
|
||||
close_prot_errno_disarm(tty->pts);
|
||||
close_prot_errno_disarm(tty->pty);
|
||||
}
|
||||
|
||||
free_disarm(ttys->tty);
|
||||
@ -987,14 +987,14 @@ static int lxc_send_ttys_to_parent(struct lxc_handler *handler)
|
||||
struct lxc_terminal_info *tty = &ttys->tty[i];
|
||||
|
||||
ttyfds[0] = tty->ptx;
|
||||
ttyfds[1] = tty->pts;
|
||||
ttyfds[1] = tty->pty;
|
||||
|
||||
ret = lxc_abstract_unix_send_fds(sock, ttyfds, 2, NULL, 0);
|
||||
if (ret < 0)
|
||||
break;
|
||||
|
||||
TRACE("Sent tty \"%s\" with ptx fd %d and pts fd %d to parent",
|
||||
tty->name, tty->ptx, tty->pts);
|
||||
TRACE("Sent tty \"%s\" with ptx fd %d and pty fd %d to parent",
|
||||
tty->name, tty->ptx, tty->pty);
|
||||
}
|
||||
|
||||
if (ret < 0)
|
||||
@ -1582,7 +1582,7 @@ static inline bool wants_console(const struct lxc_terminal *terminal)
|
||||
|
||||
static int lxc_setup_dev_console(const struct lxc_rootfs *rootfs,
|
||||
const struct lxc_terminal *console,
|
||||
int pts_mnt_fd)
|
||||
int pty_mnt_fd)
|
||||
{
|
||||
int ret;
|
||||
char path[PATH_MAX];
|
||||
@ -1615,12 +1615,12 @@ static int lxc_setup_dev_console(const struct lxc_rootfs *rootfs,
|
||||
if (ret < 0 && errno != EEXIST)
|
||||
return log_error_errno(-errno, errno, "Failed to create console");
|
||||
|
||||
ret = fchmod(console->pts, S_IXUSR | S_IXGRP);
|
||||
ret = fchmod(console->pty, S_IXUSR | S_IXGRP);
|
||||
if (ret < 0)
|
||||
return log_error_errno(-errno, errno, "Failed to set mode \"0%o\" to \"%s\"", S_IXUSR | S_IXGRP, console->name);
|
||||
|
||||
if (pts_mnt_fd >= 0) {
|
||||
ret = move_mount(pts_mnt_fd, "", -EBADF, path, MOVE_MOUNT_F_EMPTY_PATH);
|
||||
if (pty_mnt_fd >= 0) {
|
||||
ret = move_mount(pty_mnt_fd, "", -EBADF, path, MOVE_MOUNT_F_EMPTY_PATH);
|
||||
if (!ret) {
|
||||
DEBUG("Moved mount \"%s\" onto \"%s\"", console->name, path);
|
||||
goto finish;
|
||||
@ -1629,21 +1629,21 @@ static int lxc_setup_dev_console(const struct lxc_rootfs *rootfs,
|
||||
if (ret && errno != ENOSYS)
|
||||
return log_error_errno(-1, errno,
|
||||
"Failed to mount %d(%s) on \"%s\"",
|
||||
pts_mnt_fd, console->name, path);
|
||||
pty_mnt_fd, console->name, path);
|
||||
}
|
||||
|
||||
ret = safe_mount(console->name, path, "none", MS_BIND, 0, rootfs_path);
|
||||
if (ret < 0)
|
||||
return log_error_errno(-1, errno, "Failed to mount %d(%s) on \"%s\"", pts_mnt_fd, console->name, path);
|
||||
return log_error_errno(-1, errno, "Failed to mount %d(%s) on \"%s\"", pty_mnt_fd, console->name, path);
|
||||
|
||||
finish:
|
||||
DEBUG("Mounted pts device %d(%s) onto \"%s\"", pts_mnt_fd, console->name, path);
|
||||
DEBUG("Mounted pty device %d(%s) onto \"%s\"", pty_mnt_fd, console->name, path);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int lxc_setup_ttydir_console(const struct lxc_rootfs *rootfs,
|
||||
const struct lxc_terminal *console,
|
||||
char *ttydir, int pts_mnt_fd)
|
||||
char *ttydir, int pty_mnt_fd)
|
||||
{
|
||||
int ret;
|
||||
char path[PATH_MAX], lxcpath[PATH_MAX];
|
||||
@ -1686,13 +1686,13 @@ static int lxc_setup_ttydir_console(const struct lxc_rootfs *rootfs,
|
||||
if (ret < 0 && errno != EEXIST)
|
||||
return log_error_errno(-errno, errno, "Failed to create console");
|
||||
|
||||
ret = fchmod(console->pts, S_IXUSR | S_IXGRP);
|
||||
ret = fchmod(console->pty, S_IXUSR | S_IXGRP);
|
||||
if (ret < 0)
|
||||
return log_error_errno(-errno, errno, "Failed to set mode \"0%o\" to \"%s\"", S_IXUSR | S_IXGRP, console->name);
|
||||
|
||||
/* bind mount console->name to '/dev/<ttydir>/console' */
|
||||
if (pts_mnt_fd >= 0) {
|
||||
ret = move_mount(pts_mnt_fd, "", -EBADF, lxcpath, MOVE_MOUNT_F_EMPTY_PATH);
|
||||
if (pty_mnt_fd >= 0) {
|
||||
ret = move_mount(pty_mnt_fd, "", -EBADF, lxcpath, MOVE_MOUNT_F_EMPTY_PATH);
|
||||
if (!ret) {
|
||||
DEBUG("Moved mount \"%s\" onto \"%s\"", console->name, lxcpath);
|
||||
goto finish;
|
||||
@ -1701,12 +1701,12 @@ static int lxc_setup_ttydir_console(const struct lxc_rootfs *rootfs,
|
||||
if (ret && errno != ENOSYS)
|
||||
return log_error_errno(-1, errno,
|
||||
"Failed to mount %d(%s) on \"%s\"",
|
||||
pts_mnt_fd, console->name, lxcpath);
|
||||
pty_mnt_fd, console->name, lxcpath);
|
||||
}
|
||||
|
||||
ret = safe_mount(console->name, lxcpath, "none", MS_BIND, 0, rootfs_path);
|
||||
if (ret < 0)
|
||||
return log_error_errno(-1, errno, "Failed to mount %d(%s) on \"%s\"", pts_mnt_fd, console->name, lxcpath);
|
||||
return log_error_errno(-1, errno, "Failed to mount %d(%s) on \"%s\"", pty_mnt_fd, console->name, lxcpath);
|
||||
DEBUG("Mounted \"%s\" onto \"%s\"", console->name, lxcpath);
|
||||
|
||||
finish:
|
||||
@ -1722,13 +1722,13 @@ finish:
|
||||
|
||||
static int lxc_setup_console(const struct lxc_rootfs *rootfs,
|
||||
const struct lxc_terminal *console, char *ttydir,
|
||||
int pts_mnt_fd)
|
||||
int pty_mnt_fd)
|
||||
{
|
||||
|
||||
if (!ttydir)
|
||||
return lxc_setup_dev_console(rootfs, console, pts_mnt_fd);
|
||||
return lxc_setup_dev_console(rootfs, console, pty_mnt_fd);
|
||||
|
||||
return lxc_setup_ttydir_console(rootfs, console, ttydir, pts_mnt_fd);
|
||||
return lxc_setup_ttydir_console(rootfs, console, ttydir, pty_mnt_fd);
|
||||
}
|
||||
|
||||
static int parse_mntopt(char *opt, unsigned long *flags, char **data, size_t size)
|
||||
@ -2547,9 +2547,9 @@ struct lxc_conf *lxc_conf_init(void)
|
||||
new->console.peer = -1;
|
||||
new->console.proxy.busy = -1;
|
||||
new->console.proxy.ptx = -1;
|
||||
new->console.proxy.pts = -1;
|
||||
new->console.proxy.pty = -1;
|
||||
new->console.ptx = -1;
|
||||
new->console.pts = -1;
|
||||
new->console.pty = -1;
|
||||
new->console.name[0] = '\0';
|
||||
memset(&new->console.ringbuf, 0, sizeof(struct lxc_ringbuf));
|
||||
new->maincmd_fd = -1;
|
||||
@ -3183,7 +3183,7 @@ static int lxc_setup_boot_id(void)
|
||||
|
||||
int lxc_setup(struct lxc_handler *handler)
|
||||
{
|
||||
__do_close int pts_mnt_fd = -EBADF;
|
||||
__do_close int pty_mnt_fd = -EBADF;
|
||||
int ret;
|
||||
const char *lxcpath = handler->lxcpath, *name = handler->name;
|
||||
struct lxc_conf *lxc_conf = handler->conf;
|
||||
@ -3223,9 +3223,9 @@ int lxc_setup(struct lxc_handler *handler)
|
||||
}
|
||||
|
||||
if (wants_console(&lxc_conf->console)) {
|
||||
pts_mnt_fd = open_tree(-EBADF, lxc_conf->console.name,
|
||||
pty_mnt_fd = open_tree(-EBADF, lxc_conf->console.name,
|
||||
OPEN_TREE_CLONE | OPEN_TREE_CLOEXEC | AT_EMPTY_PATH);
|
||||
if (pts_mnt_fd < 0)
|
||||
if (pty_mnt_fd < 0)
|
||||
SYSTRACE("Failed to create detached mount for container's console \"%s\"",
|
||||
lxc_conf->console.name);
|
||||
else
|
||||
@ -3310,7 +3310,7 @@ int lxc_setup(struct lxc_handler *handler)
|
||||
return log_error(-1, "Failed to \"/proc\" LSMs");
|
||||
|
||||
ret = lxc_setup_console(&lxc_conf->rootfs, &lxc_conf->console,
|
||||
lxc_conf->ttys.dir, pts_mnt_fd);
|
||||
lxc_conf->ttys.dir, pty_mnt_fd);
|
||||
if (ret < 0)
|
||||
return log_error(-1, "Failed to setup console");
|
||||
|
||||
|
@ -67,7 +67,7 @@ struct criu_opts {
|
||||
struct lxc_handler *handler;
|
||||
int console_fd;
|
||||
/* The path that is bind mounted from /dev/console, if any. We don't
|
||||
* want to use `--ext-mount-map auto`'s result here because the pts
|
||||
* want to use `--ext-mount-map auto`'s result here because the pty
|
||||
* device may have a different path (e.g. if the pty number is
|
||||
* different) on the target host. NULL if lxc.console.path = "none".
|
||||
*/
|
||||
@ -1020,7 +1020,7 @@ static void do_restore(struct lxc_container *c, int status_pipe, struct migrate_
|
||||
os.action = "restore";
|
||||
os.user = opts;
|
||||
os.c = c;
|
||||
os.console_fd = c->lxc_conf->console.pts;
|
||||
os.console_fd = c->lxc_conf->console.pty;
|
||||
os.criu_version = criu_version;
|
||||
os.handler = handler;
|
||||
|
||||
|
@ -1297,14 +1297,14 @@ static int do_start(void *data)
|
||||
* setup on its console ie. the pty allocated in lxc_terminal_setup() so
|
||||
* make sure that that pty is stdin,stdout,stderr.
|
||||
*/
|
||||
if (handler->conf->console.pts >= 0) {
|
||||
if (handler->conf->console.pty >= 0) {
|
||||
if (handler->daemonize || !handler->conf->is_execute)
|
||||
ret = set_stdfds(handler->conf->console.pts);
|
||||
ret = set_stdfds(handler->conf->console.pty);
|
||||
else
|
||||
ret = lxc_terminal_set_stdfds(handler->conf->console.pts);
|
||||
ret = lxc_terminal_set_stdfds(handler->conf->console.pty);
|
||||
if (ret < 0) {
|
||||
ERROR("Failed to redirect std{in,out,err} to pty file descriptor %d",
|
||||
handler->conf->console.pts);
|
||||
handler->conf->console.pty);
|
||||
goto out_warn_father;
|
||||
}
|
||||
}
|
||||
@ -1331,7 +1331,7 @@ static int do_start(void *data)
|
||||
|
||||
close_prot_errno_disarm(handler->sigfd);
|
||||
|
||||
if (handler->conf->console.pts < 0 && handler->daemonize) {
|
||||
if (handler->conf->console.pty < 0 && handler->daemonize) {
|
||||
if (devnull_fd < 0) {
|
||||
devnull_fd = open_devnull();
|
||||
if (devnull_fd < 0)
|
||||
@ -1484,8 +1484,8 @@ static int lxc_recv_ttys_from_child(struct lxc_handler *handler)
|
||||
tty = &ttys->tty[i];
|
||||
tty->busy = -1;
|
||||
tty->ptx = ttyfds[0];
|
||||
tty->pts = ttyfds[1];
|
||||
TRACE("Received pty with ptx fd %d and pts fd %d from child", tty->ptx, tty->pts);
|
||||
tty->pty = ttyfds[1];
|
||||
TRACE("Received pty with ptx fd %d and pty fd %d from child", tty->ptx, tty->pty);
|
||||
}
|
||||
|
||||
if (ret < 0)
|
||||
|
@ -486,8 +486,8 @@ static void lxc_terminal_peer_proxy_free(struct lxc_terminal *terminal)
|
||||
close(terminal->proxy.ptx);
|
||||
terminal->proxy.ptx = -1;
|
||||
|
||||
close(terminal->proxy.pts);
|
||||
terminal->proxy.pts = -1;
|
||||
close(terminal->proxy.pty);
|
||||
terminal->proxy.pty = -1;
|
||||
|
||||
terminal->proxy.busy = -1;
|
||||
|
||||
@ -521,17 +521,17 @@ static int lxc_terminal_peer_proxy_alloc(struct lxc_terminal *terminal,
|
||||
/* This is the proxy terminal that will be given to the client, and
|
||||
* that the real terminal ptx will send to / recv from.
|
||||
*/
|
||||
ret = openpty(&terminal->proxy.ptx, &terminal->proxy.pts, NULL,
|
||||
ret = openpty(&terminal->proxy.ptx, &terminal->proxy.pty, NULL,
|
||||
NULL, NULL);
|
||||
if (ret < 0) {
|
||||
SYSERROR("Failed to open proxy terminal");
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = ttyname_r(terminal->proxy.pts, terminal->proxy.name,
|
||||
ret = ttyname_r(terminal->proxy.pty, terminal->proxy.name,
|
||||
sizeof(terminal->proxy.name));
|
||||
if (ret < 0) {
|
||||
SYSERROR("Failed to retrieve name of proxy terminal pts");
|
||||
SYSERROR("Failed to retrieve name of proxy terminal pty");
|
||||
goto on_error;
|
||||
}
|
||||
|
||||
@ -541,13 +541,13 @@ static int lxc_terminal_peer_proxy_alloc(struct lxc_terminal *terminal,
|
||||
goto on_error;
|
||||
}
|
||||
|
||||
ret = fd_cloexec(terminal->proxy.pts, true);
|
||||
ret = fd_cloexec(terminal->proxy.pty, true);
|
||||
if (ret < 0) {
|
||||
SYSERROR("Failed to set FD_CLOEXEC flag on proxy terminal pts");
|
||||
SYSERROR("Failed to set FD_CLOEXEC flag on proxy terminal pty");
|
||||
goto on_error;
|
||||
}
|
||||
|
||||
ret = lxc_setup_tios(terminal->proxy.pts, &oldtermio);
|
||||
ret = lxc_setup_tios(terminal->proxy.pty, &oldtermio);
|
||||
if (ret < 0)
|
||||
goto on_error;
|
||||
|
||||
@ -556,14 +556,14 @@ static int lxc_terminal_peer_proxy_alloc(struct lxc_terminal *terminal,
|
||||
goto on_error;
|
||||
|
||||
terminal->tty_state = ts;
|
||||
terminal->peer = terminal->proxy.pts;
|
||||
terminal->peer = terminal->proxy.pty;
|
||||
terminal->proxy.busy = sockfd;
|
||||
ret = lxc_terminal_mainloop_add_peer(terminal);
|
||||
if (ret < 0)
|
||||
goto on_error;
|
||||
|
||||
NOTICE("Opened proxy terminal with ptx fd %d and pts fd %d",
|
||||
terminal->proxy.ptx, terminal->proxy.pts);
|
||||
NOTICE("Opened proxy terminal with ptx fd %d and pty fd %d",
|
||||
terminal->proxy.ptx, terminal->proxy.pty);
|
||||
return 0;
|
||||
|
||||
on_error:
|
||||
@ -633,7 +633,7 @@ void lxc_terminal_free(struct lxc_conf *conf, int fd)
|
||||
if (terminal->proxy.busy != fd)
|
||||
return;
|
||||
|
||||
lxc_mainloop_del_handler(terminal->descr, terminal->proxy.pts);
|
||||
lxc_mainloop_del_handler(terminal->descr, terminal->proxy.pty);
|
||||
lxc_terminal_peer_proxy_free(terminal);
|
||||
}
|
||||
|
||||
@ -753,9 +753,9 @@ void lxc_terminal_delete(struct lxc_terminal *terminal)
|
||||
close(terminal->ptx);
|
||||
terminal->ptx = -1;
|
||||
|
||||
if (terminal->pts >= 0)
|
||||
close(terminal->pts);
|
||||
terminal->pts = -1;
|
||||
if (terminal->pty >= 0)
|
||||
close(terminal->pty);
|
||||
terminal->pty = -1;
|
||||
|
||||
if (terminal->log_fd >= 0)
|
||||
close(terminal->log_fd);
|
||||
@ -832,15 +832,15 @@ int lxc_terminal_create(struct lxc_terminal *terminal)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = openpty(&terminal->ptx, &terminal->pts, NULL, NULL, NULL);
|
||||
ret = openpty(&terminal->ptx, &terminal->pty, NULL, NULL, NULL);
|
||||
if (ret < 0) {
|
||||
SYSERROR("Failed to open terminal");
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = ttyname_r(terminal->pts, terminal->name, sizeof(terminal->name));
|
||||
ret = ttyname_r(terminal->pty, terminal->name, sizeof(terminal->name));
|
||||
if (ret < 0) {
|
||||
SYSERROR("Failed to retrieve name of terminal pts");
|
||||
SYSERROR("Failed to retrieve name of terminal pty");
|
||||
goto err;
|
||||
}
|
||||
|
||||
@ -850,9 +850,9 @@ int lxc_terminal_create(struct lxc_terminal *terminal)
|
||||
goto err;
|
||||
}
|
||||
|
||||
ret = fd_cloexec(terminal->pts, true);
|
||||
ret = fd_cloexec(terminal->pty, true);
|
||||
if (ret < 0) {
|
||||
SYSERROR("Failed to set FD_CLOEXEC flag on terminal pts");
|
||||
SYSERROR("Failed to set FD_CLOEXEC flag on terminal pty");
|
||||
goto err;
|
||||
}
|
||||
|
||||
@ -1134,14 +1134,14 @@ void lxc_terminal_info_init(struct lxc_terminal_info *terminal)
|
||||
{
|
||||
terminal->name[0] = '\0';
|
||||
terminal->ptx = -EBADF;
|
||||
terminal->pts = -EBADF;
|
||||
terminal->pty = -EBADF;
|
||||
terminal->busy = -1;
|
||||
}
|
||||
|
||||
void lxc_terminal_init(struct lxc_terminal *terminal)
|
||||
{
|
||||
memset(terminal, 0, sizeof(*terminal));
|
||||
terminal->pts = -EBADF;
|
||||
terminal->pty = -EBADF;
|
||||
terminal->ptx = -EBADF;
|
||||
terminal->peer = -EBADF;
|
||||
terminal->log_fd = -EBADF;
|
||||
@ -1167,13 +1167,13 @@ int lxc_terminal_map_ids(struct lxc_conf *c, struct lxc_terminal *terminal)
|
||||
if (strcmp(terminal->name, "") == 0)
|
||||
return 0;
|
||||
|
||||
ret = userns_exec_mapped_root(terminal->name, terminal->pts, c);
|
||||
ret = userns_exec_mapped_root(terminal->name, terminal->pty, c);
|
||||
if (ret < 0) {
|
||||
return log_error(-1, "Failed to chown terminal %d(%s)",
|
||||
terminal->pts, terminal->name);
|
||||
terminal->pty, terminal->name);
|
||||
}
|
||||
|
||||
TRACE("Chowned terminal %d(%s)", terminal->pts, terminal->name);
|
||||
TRACE("Chowned terminal %d(%s)", terminal->pty, terminal->name);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -15,14 +15,14 @@ struct lxc_conf;
|
||||
struct lxc_epoll_descr;
|
||||
|
||||
struct lxc_terminal_info {
|
||||
/* the path name of the pts side */
|
||||
/* the path name of the pty side */
|
||||
char name[PATH_MAX];
|
||||
|
||||
/* the file descriptor of the ptx */
|
||||
int ptx;
|
||||
|
||||
/* the file descriptor of the pts */
|
||||
int pts;
|
||||
/* the file descriptor of the pty */
|
||||
int pty;
|
||||
|
||||
/* whether the terminal is currently used */
|
||||
int busy;
|
||||
@ -57,7 +57,7 @@ struct lxc_terminal_state {
|
||||
};
|
||||
|
||||
struct lxc_terminal {
|
||||
int pts;
|
||||
int pty;
|
||||
int ptx;
|
||||
int peer;
|
||||
struct lxc_terminal_info proxy;
|
||||
@ -102,10 +102,10 @@ extern int lxc_terminal_allocate(struct lxc_conf *conf, int sockfd, int *ttynum
|
||||
|
||||
/**
|
||||
* Create a new terminal:
|
||||
* - calls openpty() to allocate a ptx/pts pair
|
||||
* - sets the FD_CLOEXEC flag on the ptx/pts fds
|
||||
* - calls openpty() to allocate a ptx/pty pair
|
||||
* - sets the FD_CLOEXEC flag on the ptx/pty fds
|
||||
* - allocates either the current controlling terminal (default) or a user
|
||||
* specified terminal as proxy for the newly created ptx/pts pair
|
||||
* specified terminal as proxy for the newly created ptx/pty pair
|
||||
* - sets up SIGWINCH handler, winsz, and new terminal settings
|
||||
* (Handlers for SIGWINCH and I/O are not registered in a mainloop.)
|
||||
*/
|
||||
@ -202,7 +202,7 @@ extern int lxc_setup_tios(int fd, struct termios *oldtios);
|
||||
* lxc_terminal_winsz: propagate winsz from one terminal to another
|
||||
*
|
||||
* @srcfd
|
||||
* - terminal to get size from (typically a pts pty)
|
||||
* - terminal to get size from (typically a pty pty)
|
||||
* @dstfd
|
||||
* - terminal to set size on (typically a ptx pty)
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user