source getpty() out to pty.c - st - Personal fork of st
 (HTM) git clone git://git.drkhsh.at/st.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 47d8633f157156ef4701ce71ed7eff766206c107
 (DIR) parent 0dedee5de8e35f4bab3d707d63be31943715264e
 (HTM) 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);