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

1991/1223/port/devcons.c (diff list | history)

1991/1220/sys/src/9/port/devcons.c:209,2231991/1223/sys/src/9/port/devcons.c:209,222 (short | long | prev | next)
1990/0227    
} 
 
void 
echo(int c) 
1991/1223    
echo(Rune r, char *buf, int n) 
1990/0227    
{ 
	char ch; 
1991/0607    
	static int ctrlt; 
1990/03091    
 
1990/0227    
	/* 
1991/0607    
	 * ^p hack 
1990/0227    
	 */ 
1991/0608    
	if(c==0x10 && conf.cntrlp) 
1991/1223    
	if(r==0x10 && conf.cntrlp) 
1991/0327    
		panic("^p"); 
1991/0608    
 
1991/0607    
	/* 
1991/1220/sys/src/9/port/devcons.c:225,2311991/1223/sys/src/9/port/devcons.c:224,230
1991/0607    
	 */ 
	if(ctrlt == 2){ 
		ctrlt = 0; 
		switch(c){ 
1991/1223    
		switch(r){ 
1991/0607    
		case 0x14: 
			break;	/* pass it on */ 
		case 'm': 
1991/1220/sys/src/9/port/devcons.c:241,2471991/1223/sys/src/9/port/devcons.c:240,246
1991/0607    
			exit(); 
			break; 
		} 
	}else if(c == 0x14){ 
1991/1223    
	}else if(r == 0x14){ 
1991/0607    
		ctrlt++; 
		return; 
	} 
1991/1220/sys/src/9/port/devcons.c:248,2591991/1223/sys/src/9/port/devcons.c:247,256
1991/0607    
	ctrlt = 0; 
	if(raw.ref) 
		return; 
1990/0227    
	if(c == 0x15) 
1991/1223    
	if(r == 0x15) 
1990/0227    
		putstrn("^U\n", 3); 
	else{ 
		ch = c; 
		putstrn(&ch, 1); 
	} 
1991/1223    
	else 
		putstrn(buf, n); 
1990/0227    
} 
 
/* 
1991/1220/sys/src/9/port/devcons.c:268,2861991/1223/sys/src/9/port/devcons.c:265,293
1991/0727    
} 
 
/* 
1991/1206    
 *  Put character into read queue at interrupt time. 
1991/1223    
 *  Put character, possibly a rune, into read queue at interrupt time. 
1991/1206    
 *  Always called splhi from processor 0. 
1990/0227    
 */ 
1991/0607    
int 
kbdputc(IOQ *q, int ch) 
1990/0227    
{ 
1991/1223    
	int i, n; 
	char buf[3]; 
	Rune r; 
 
1991/1115    
	USED(q); 
1991/0607    
	echo(ch); 
	kbdq.c = ch; 
	*kbdq.in++ = ch; 
1990/0227    
	if(kbdq.in == kbdq.buf+sizeof(kbdq.buf)) 
		kbdq.in = kbdq.buf; 
1991/0607    
	if(raw.ref || ch=='\n' || ch==0x04) 
1991/1223    
	r = ch; 
	n = runetochar(buf, &r); 
	if(n == 0) 
		return 0; 
	echo(r, buf, n); 
	kbdq.c = r; 
	for(i=0; i<n; i++){ 
		*kbdq.in++ = buf[i]; 
		if(kbdq.in == kbdq.buf+sizeof(kbdq.buf)) 
			kbdq.in = kbdq.buf; 
	} 
	if(raw.ref || r=='\n' || r==0x04) 
1990/0227    
		wakeup(&kbdq.r); 
1991/0607    
	return 0; 
1990/0227    
} 


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