|  |  | @ -263,20 +263,32 @@ ungetch(int c) { | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | int | 
			
		
	
		
			
				
					|  |  |  | main(int argc, char *argv[]) { | 
			
		
	
		
			
				
					|  |  |  | fd_set rfds; | 
			
		
	
		
			
				
					|  |  |  | int r; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | if(argc == 2 && !strcmp("-v", argv[1])) | 
			
		
	
		
			
				
					|  |  |  | eprint("std-"VERSION", © 2008 Matthias-Christian Ott\n"); | 
			
		
	
		
			
				
					|  |  |  | else if(argc == 1) | 
			
		
	
		
			
				
					|  |  |  | eprint("usage: st [-v]\n"); | 
			
		
	
		
			
				
					|  |  |  | getpty(); | 
			
		
	
		
			
				
					|  |  |  | shell(); | 
			
		
	
		
			
				
					|  |  |  | FD_ZERO(&rfds); | 
			
		
	
		
			
				
					|  |  |  | FD_SET(STDIN_FILENO, &rfds); | 
			
		
	
		
			
				
					|  |  |  | FD_SET(ptm, &rfds); | 
			
		
	
		
			
				
					|  |  |  | for(;;) { | 
			
		
	
		
			
				
					|  |  |  | c = getch(); | 
			
		
	
		
			
				
					|  |  |  | switch(c) { | 
			
		
	
		
			
				
					|  |  |  | case '\033': | 
			
		
	
		
			
				
					|  |  |  | parseesc(); | 
			
		
	
		
			
				
					|  |  |  | break; | 
			
		
	
		
			
				
					|  |  |  | default: | 
			
		
	
		
			
				
					|  |  |  | putchar(c); | 
			
		
	
		
			
				
					|  |  |  | r = select(ptm + 1, &rfds, NULL, NULL, NULL); | 
			
		
	
		
			
				
					|  |  |  | if(r == -1) | 
			
		
	
		
			
				
					|  |  |  | eprintn("error, cannot select"); | 
			
		
	
		
			
				
					|  |  |  | if(FD_ISSET(ptm, &rfds)) { | 
			
		
	
		
			
				
					|  |  |  | c = getch(); | 
			
		
	
		
			
				
					|  |  |  | switch(c) { | 
			
		
	
		
			
				
					|  |  |  | case '\033': | 
			
		
	
		
			
				
					|  |  |  | parseesc(); | 
			
		
	
		
			
				
					|  |  |  | break; | 
			
		
	
		
			
				
					|  |  |  | default: | 
			
		
	
		
			
				
					|  |  |  | putchar(c); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | fflush(stdout); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | return 0; | 
			
		
	
	
		
			
				
					|  |  | 
 |