xref: /csrg-svn/old/lib2648/rawchar.c (revision 11488)
1*11488Sralph /*	rawchar.c	4.1	83/03/09	*/
2*11488Sralph /*
3*11488Sralph  * get a character from the terminal, with no line buffering.
4*11488Sralph  */
5*11488Sralph 
6*11488Sralph #include "2648.h"
7*11488Sralph 
8*11488Sralph rawchar()
9*11488Sralph {
10*11488Sralph 	char c;
11*11488Sralph 
12*11488Sralph 	sync();
13*11488Sralph 	escseq(NONE);
14*11488Sralph 	fflush(stdout);
15*11488Sralph 	if (_pb_front && _on2648) {
16*11488Sralph 		c = *_pb_front++;
17*11488Sralph #ifdef TRACE
18*11488Sralph 		if (trace)
19*11488Sralph 			fprintf(trace, "%s from queue, front=%d, back=%d\n", rdchar(c), _pb_front-_pushback, _pb_back-_pushback);
20*11488Sralph #endif
21*11488Sralph 		if (_pb_front > _pb_back) {
22*11488Sralph 			_pb_front = _pb_back = NULL;
23*11488Sralph #ifdef TRACE
24*11488Sralph 			if (trace)
25*11488Sralph 				fprintf(trace, "reset pushback to null\n");
26*11488Sralph #endif
27*11488Sralph 		}
28*11488Sralph 		return (c);
29*11488Sralph 	}
30*11488Sralph 	_outcount = 0;
31*11488Sralph 	c = getchar();
32*11488Sralph #ifdef TRACE
33*11488Sralph 	if (trace)
34*11488Sralph 		fprintf(trace, "rawchar '%s'\n", rdchar(c));
35*11488Sralph #endif
36*11488Sralph 	return (c);
37*11488Sralph }
38