From 47d8633f157156ef4701ce71ed7eff766206c107 Mon Sep 17 00:00:00 2001 From: Matthias-Christian Ott Date: Tue, 10 Jun 2008 17:30:15 +0200 Subject: source getpty() out to pty.c --- pty.c | 41 +++++++++++++++++++++++++++++++++++++++++ std.c | 35 ----------------------------------- 2 files changed, 41 insertions(+), 35 deletions(-) create mode 100644 pty.c diff --git a/pty.c b/pty.c new file mode 100644 index 0000000..a3e43b0 --- /dev/null +++ b/pty.c @@ -0,0 +1,41 @@ +#include +#include +#include +#include +#if !(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) +#include +#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 +} diff --git a/std.c b/std.c index fcfead9..1b918f5 100644 --- a/std.c +++ b/std.c @@ -6,9 +6,6 @@ #include #include #include -#if !(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) -#include -#endif #include #include #include @@ -100,38 +97,6 @@ eprintn(const char *errstr, ...) { exit(EXIT_FAILURE); } -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); -- cgit v1.2.3