X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fbasic%2Fterminal-util.c;h=51abc78ce2b98cbd2a56d8b972e8fae6652a3123;hp=73e5c2e571b681233dfc5135bf5616fd7903d280;hb=4ebadef69ff96e92122a133cfecadf60816c4fa3;hpb=bd1ce0bdbfc97a958a6c56fe062bed892f08444a diff --git a/src/basic/terminal-util.c b/src/basic/terminal-util.c index 73e5c2e57..51abc78ce 100644 --- a/src/basic/terminal-util.c +++ b/src/basic/terminal-util.c @@ -1092,3 +1092,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; +}