source getpty() out to pty.c
This commit is contained in:
		
							parent
							
								
									0dedee5de8
								
							
						
					
					
						commit
						47d8633f15
					
				|  | @ -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 | ||||
| } | ||||
							
								
								
									
										35
									
								
								std.c
								
								
								
								
							
							
						
						
									
										35
									
								
								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> | ||||
|  | @ -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); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue