reunite pty.c with std.c
This commit is contained in:
		
							parent
							
								
									2346bd1d39
								
							
						
					
					
						commit
						76c66a3556
					
				
							
								
								
									
										42
									
								
								pty.c
									
									
									
									
									
								
							
							
						
						
									
										42
									
								
								pty.c
									
									
									
									
									
								
							| @ -1,42 +0,0 @@ | |||||||
| /* See LICENSE file for copyright and license details. */ |  | ||||||
| #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) |  | ||||||
| 			err(EXIT_FAILURE, "cannot open pty"); |  | ||||||
| #endif |  | ||||||
| #if defined(_XOPEN_SOURCE) |  | ||||||
| 	if(ptm != -1) { |  | ||||||
| 		if(grantpt(ptm) == -1) |  | ||||||
| 			err(EXIT_FAILURE, "cannot grant access to pty"); |  | ||||||
| 		if(unlockpt(ptm) == -1) |  | ||||||
| 			err(EXIT_FAILURE, "cannot unlock pty"); |  | ||||||
| 		ptsdev = ptsname(ptm); |  | ||||||
| 		if(!ptsdev) |  | ||||||
| 			err(EXIT_FAILURE, "slave pty name undefined"); |  | ||||||
| 		pts = open(ptsdev, O_RDWR); |  | ||||||
| 		if(pts == -1) |  | ||||||
| 			err(EXIT_FAILURE, "cannot open slave pty"); |  | ||||||
| 	} |  | ||||||
| 	else |  | ||||||
| 		err(EXIT_FAILURE, "cannot open pty"); |  | ||||||
| #endif |  | ||||||
| } |  | ||||||
							
								
								
									
										40
									
								
								std.c
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								std.c
									
									
									
									
									
								
							| @ -3,6 +3,10 @@ | |||||||
| #include <sys/wait.h> | #include <sys/wait.h> | ||||||
| #include <ctype.h> | #include <ctype.h> | ||||||
| #include <err.h> | #include <err.h> | ||||||
|  | #include <fcntl.h> | ||||||
|  | #if !(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) | ||||||
|  | #include <pty.h> | ||||||
|  | #endif | ||||||
| #include <signal.h> | #include <signal.h> | ||||||
| #include <stdarg.h> | #include <stdarg.h> | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| @ -17,7 +21,7 @@ | |||||||
| static void buffer(char c); | static void buffer(char c); | ||||||
| static void cmd(const char *cmdstr, ...); | static void cmd(const char *cmdstr, ...); | ||||||
| static int getch(); | static int getch(); | ||||||
| void getpty(void); | static void getpty(void); | ||||||
| static void movea(int x, int y); | static void movea(int x, int y); | ||||||
| static void mover(int x, int y); | static void mover(int x, int y); | ||||||
| static void parseesc(void); | static void parseesc(void); | ||||||
| @ -41,7 +45,7 @@ typedef struct { | |||||||
| static int cols = 80, lines = 25; | static int cols = 80, lines = 25; | ||||||
| static int cx = 0, cy = 0; | static int cx = 0, cy = 0; | ||||||
| static int c; | static int c; | ||||||
| int ptm, pts; | static int ptm, pts; | ||||||
| static _Bool bold, digit, qmark; | static _Bool bold, digit, qmark; | ||||||
| static pid_t pid; | static pid_t pid; | ||||||
| static RingBuffer buf; | static RingBuffer buf; | ||||||
| @ -207,6 +211,38 @@ scroll(int l) { | |||||||
| 	cmd("seek(%d,%d)", cx, cy + l); | 	cmd("seek(%d,%d)", cx, cy + l); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | 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) | ||||||
|  | 			err(EXIT_FAILURE, "cannot open pty"); | ||||||
|  | #endif | ||||||
|  | #if defined(_XOPEN_SOURCE) | ||||||
|  | 	if(ptm != -1) { | ||||||
|  | 		if(grantpt(ptm) == -1) | ||||||
|  | 			err(EXIT_FAILURE, "cannot grant access to pty"); | ||||||
|  | 		if(unlockpt(ptm) == -1) | ||||||
|  | 			err(EXIT_FAILURE, "cannot unlock pty"); | ||||||
|  | 		ptsdev = ptsname(ptm); | ||||||
|  | 		if(!ptsdev) | ||||||
|  | 			err(EXIT_FAILURE, "slave pty name undefined"); | ||||||
|  | 		pts = open(ptsdev, O_RDWR); | ||||||
|  | 		if(pts == -1) | ||||||
|  | 			err(EXIT_FAILURE, "cannot open slave pty"); | ||||||
|  | 	} | ||||||
|  | 	else | ||||||
|  | 		err(EXIT_FAILURE, "cannot open pty"); | ||||||
|  | #endif | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void | void | ||||||
| shell(void) { | shell(void) { | ||||||
| 	static char *shell = NULL; | 	static char *shell = NULL; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user