|  |  | @ -31,8 +31,6 @@ void shell(void); | 
			
		
	
		
			
				
					|  |  |  | void sigchld(int n); | 
			
		
	
		
			
				
					|  |  |  | char unbuffer(void); | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | enum { QuestionMark = 1, Digit = 2 }; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | typedef struct { | 
			
		
	
		
			
				
					|  |  |  | unsigned char data[BUFSIZ]; | 
			
		
	
		
			
				
					|  |  |  | int s, e; | 
			
		
	
	
		
			
				
					|  |  | @ -41,10 +39,10 @@ typedef struct { | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | int cols = 80, lines = 25; | 
			
		
	
		
			
				
					|  |  |  | int cx = 0, cy = 0; | 
			
		
	
		
			
				
					|  |  |  | int c, s; | 
			
		
	
		
			
				
					|  |  |  | int c; | 
			
		
	
		
			
				
					|  |  |  | FILE *fptm = NULL; | 
			
		
	
		
			
				
					|  |  |  | int ptm, pts; | 
			
		
	
		
			
				
					|  |  |  | _Bool bold; | 
			
		
	
		
			
				
					|  |  |  | _Bool bold, digit, qmark; | 
			
		
	
		
			
				
					|  |  |  | pid_t pid; | 
			
		
	
		
			
				
					|  |  |  | RingBuffer buf; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
	
		
			
				
					|  |  | @ -151,28 +149,27 @@ parseesc(void) { | 
			
		
	
		
			
				
					|  |  |  | int arg[16]; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | memset(arg, 0, LENGTH(arg)); | 
			
		
	
		
			
				
					|  |  |  | s = 0; | 
			
		
	
		
			
				
					|  |  |  | c = getc(fptm); | 
			
		
	
		
			
				
					|  |  |  | switch(c) { | 
			
		
	
		
			
				
					|  |  |  | case '[': | 
			
		
	
		
			
				
					|  |  |  | c = getc(fptm); | 
			
		
	
		
			
				
					|  |  |  | for(j = 0; j < LENGTH(arg);) { | 
			
		
	
		
			
				
					|  |  |  | if(isdigit(c)) { | 
			
		
	
		
			
				
					|  |  |  | s |= Digit; | 
			
		
	
		
			
				
					|  |  |  | digit = 1; | 
			
		
	
		
			
				
					|  |  |  | arg[j] *= 10; | 
			
		
	
		
			
				
					|  |  |  | arg[j] += c - '0'; | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | else if(c == '?') | 
			
		
	
		
			
				
					|  |  |  | s |= QuestionMark; | 
			
		
	
		
			
				
					|  |  |  | qmark = 1; | 
			
		
	
		
			
				
					|  |  |  | else if(c == ';') { | 
			
		
	
		
			
				
					|  |  |  | if(!(s & Digit)) | 
			
		
	
		
			
				
					|  |  |  | if(!digit) | 
			
		
	
		
			
				
					|  |  |  | eprint("syntax error\n"); | 
			
		
	
		
			
				
					|  |  |  | s &= ~Digit; | 
			
		
	
		
			
				
					|  |  |  | digit = 0; | 
			
		
	
		
			
				
					|  |  |  | j++; | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | else { | 
			
		
	
		
			
				
					|  |  |  | if(s & Digit) { | 
			
		
	
		
			
				
					|  |  |  | s &= ~Digit; | 
			
		
	
		
			
				
					|  |  |  | if(digit) { | 
			
		
	
		
			
				
					|  |  |  | digit = 0; | 
			
		
	
		
			
				
					|  |  |  | j++; | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | break; | 
			
		
	
	
		
			
				
					|  |  | 
 |