diff options
| -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);  |