diff options
author | Matthias-Christian Ott <ott@enolink.de> | 2008-06-10 17:30:15 +0200 |
---|---|---|
committer | Matthias-Christian Ott <ott@enolink.de> | 2008-06-10 17:30:15 +0200 |
commit | 3f14681cd64948d08b8320b7a95879ee4f9d1ee5 (patch) | |
tree | 78190354f0b6784063f5434821b40bbe0ebd8d1e | |
parent | 9995f245eea61fce3861b0dfa4edb5607d716f07 (diff) | |
download | st-3f14681cd64948d08b8320b7a95879ee4f9d1ee5.tar.gz st-3f14681cd64948d08b8320b7a95879ee4f9d1ee5.tar.bz2 |
source getpty() out to pty.c
-rw-r--r-- | pty.c | 41 | ||||
-rw-r--r-- | std.c | 35 |
2 files changed, 41 insertions, 35 deletions
@@ -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 +} @@ -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); |