source getpty() out to pty.c - st - simple terminal HTML git clone https://git.parazyd.org/st DIR Log DIR Files DIR Refs DIR README DIR LICENSE --- DIR commit 47d8633f157156ef4701ce71ed7eff766206c107 DIR parent 0dedee5de8e35f4bab3d707d63be31943715264e HTML Author: Matthias-Christian Ott <ott@enolink.de> Date: Tue, 10 Jun 2008 17:30:15 +0200 source getpty() out to pty.c Diffstat: A pty.c | 41 +++++++++++++++++++++++++++++++ M std.c | 35 ------------------------------- 2 files changed, 41 insertions(+), 35 deletions(-) --- DIR diff --git a/pty.c b/pty.c @@ -0,0 +1,41 @@ +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <stdlib.h> +#if !(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) +#include <pty.h> +#endif + +extern int ptm, pts; + +void +getpty(void) { + char *ptsdev; + +#if defined(_GNU_SOURCE) + ptm = getpt(); +#elif _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600 + ptm = posix_openpt(O_RDWR); +#else + ptm = open("/dev/ptmx", O_RDWR); + if(ptm == -1) + if(openpty(&ptm, &pts, NULL, NULL, NULL) == -1) + eprintn("error, cannot open pty"); +#endif +#if defined(_XOPEN_SOURCE) + if(ptm != -1) { + if(grantpt(ptm) == -1) + eprintn("error, cannot grant access to pty"); + if(unlockpt(ptm) == -1) + eprintn("error, cannot unlock pty"); + ptsdev = ptsname(ptm); + if(!ptsdev) + eprintn("error, slave pty name undefined"); + pts = open(ptsdev, O_RDWR); + if(pts == -1) + eprintn("error, cannot open slave pty"); + } + else + eprintn("error, cannot open pty"); +#endif +} DIR diff --git a/std.c b/std.c @@ -6,9 +6,6 @@ #include <ctype.h> #include <errno.h> #include <fcntl.h> -#if !(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) -#include <pty.h> -#endif #include <signal.h> #include <stdarg.h> #include <stdio.h> @@ -101,38 +98,6 @@ eprintn(const char *errstr, ...) { } void -getpty(void) { - char *ptsdev; - -#if defined(_GNU_SOURCE) - ptm = getpt(); -#elif _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600 - ptm = posix_openpt(O_RDWR); -#else - ptm = open("/dev/ptmx", O_RDWR); - if(ptm == -1) - if(openpty(&ptm, &pts, NULL, NULL, NULL) == -1) - eprintn("error, cannot open pty"); -#endif -#if defined(_XOPEN_SOURCE) - if(ptm != -1) { - if(grantpt(ptm) == -1) - eprintn("error, cannot grant access to pty"); - if(unlockpt(ptm) == -1) - eprintn("error, cannot unlock pty"); - ptsdev = ptsname(ptm); - if(!ptsdev) - eprintn("error, slave pty name undefined"); - pts = open(ptsdev, O_RDWR); - if(pts == -1) - eprintn("error, cannot open slave pty"); - } - else - eprintn("error, cannot open pty"); -#endif -} - -void movea(int x, int y) { x = MAX(x, cols); y = MAX(y, lines);