|  |  | @ -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); | 
			
		
	
	
		
			
				
					|  |  | 
 |