From a07c35c3e65c16264cb25206c2d564afdbae8a28 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 1 Sep 2015 20:12:25 +0200 Subject: machined: introduce a ptsname_namespace() call and make use of it The call is like ptsname() but does not assume the pty path was accessible in the local namespace. It uses the same internal ioctl though. --- src/basic/terminal-util.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/basic/terminal-util.c') diff --git a/src/basic/terminal-util.c b/src/basic/terminal-util.c index cf55263bbf..c5ef5ab0d1 100644 --- a/src/basic/terminal-util.c +++ b/src/basic/terminal-util.c @@ -1074,3 +1074,22 @@ int get_ctty(pid_t pid, dev_t *_devnr, char **r) { return 0; } + +int ptsname_namespace(int pty, char **ret) { + int no = -1, r; + + /* Like ptsname(), but doesn't assume that the path is + * accessible in the local namespace. */ + + r = ioctl(pty, TIOCGPTN, &no); + if (r < 0) + return -errno; + + if (no < 0) + return -EIO; + + if (asprintf(ret, "/dev/pts/%i", no) < 0) + return -ENOMEM; + + return 0; +} -- cgit v1.2.3-54-g00ecf