source getpty() out to pty.c
This commit is contained in:
		
							parent
							
								
									0dedee5de8
								
							
						
					
					
						commit
						47d8633f15
					
				
							
								
								
									
										41
									
								
								pty.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								pty.c
									
									
									
									
									
										Normal file
									
								
							| @ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Matthias-Christian Ott
						Matthias-Christian Ott