plan 9 kernel history: overview | file list | diff list

1997/0820/port/devcons.c (diff list | history)

1997/0616/sys/src/9/port/devcons.c:522,5581997/0820/sys/src/9/port/devcons.c:522,566 (short | long | prev | next)
1993/0601    
			qunlock(&kbd); 
1990/0617    
			nexterror(); 
		} 
1997/0327    
		while(!qcanread(lineq)) { 
1993/0601    
			qread(kbdq, &kbd.line[kbd.x], 1); 
			ch = kbd.line[kbd.x]; 
			if(kbd.raw){ 
1994/1124    
				qiwrite(lineq, &kbd.line[kbd.x], 1); 
1993/0601    
				continue; 
1997/0820    
		if(kbd.raw) { 
			if(qcanread(lineq)) 
				n = qread(lineq, buf, n); 
			else 
				n = qread(kbdq, buf, n); 
		} else { 
			while(!qcanread(lineq)) { 
				qread(kbdq, &kbd.line[kbd.x], 1); 
				ch = kbd.line[kbd.x]; 
				if(kbd.raw){ 
					qiwrite(lineq, kbd.line, kbd.x+1); 
					kbd.x = 0; 
					continue; 
				} 
				eol = 0; 
				switch(ch){ 
				case '\b': 
					if(kbd.x) 
						kbd.x--; 
					break; 
				case 0x15: 
					kbd.x = 0; 
					break; 
				case '\n': 
				case 0x04: 
					eol = 1; 
				default: 
					kbd.line[kbd.x++] = ch; 
					break; 
				} 
				if(kbd.x == sizeof(kbd.line) || eol){ 
					if(ch == 0x04) 
						kbd.x--; 
					qwrite(lineq, kbd.line, kbd.x); 
					kbd.x = 0; 
				} 
1993/0601    
			} 
1993/0725    
			eol = 0; 
1993/0601    
			switch(ch){ 
			case '\b': 
				if(kbd.x) 
					kbd.x--; 
1990/0227    
				break; 
1993/0601    
			case 0x15: 
				kbd.x = 0; 
				break; 
1993/0725    
			case '\n': 
			case 0x04: 
				eol = 1; 
1993/0601    
			default: 
				kbd.line[kbd.x++] = ch; 
				break; 
			} 
1993/0725    
			if(kbd.x == sizeof(kbd.line) || eol){ 
1993/0601    
				if(ch == 0x04) 
					kbd.x--; 
1994/0902    
				qwrite(lineq, kbd.line, kbd.x); 
1993/0725    
				kbd.x = 0; 
1993/0601    
			} 
1997/0820    
			n = qread(lineq, buf, n); 
1990/0227    
		} 
1993/0601    
		n = qread(lineq, buf, n); 
		qunlock(&kbd); 
1993/0725    
		poperror(); 
1993/0601    
		return n; 


source code copyright © 1990-2005 Lucent Technologies; see license
Plan 9 distribution
comments to russ cox (rsc@swtch.com)