xref: /original-bsd/old/lib2648/rawchar.c (revision 18f6d767)
1 /*
2  * Copyright (c) 1980 Regents of the University of California.
3  * All rights reserved.  The Berkeley software License Agreement
4  * specifies the terms and conditions for redistribution.
5  */
6 
7 #ifndef lint
8 static char sccsid[] = "@(#)rawchar.c	5.1 (Berkeley) 04/26/85";
9 #endif not lint
10 
11 /*
12  * get a character from the terminal, with no line buffering.
13  */
14 
15 #include "2648.h"
16 
17 rawchar()
18 {
19 	char c;
20 
21 	sync();
22 	escseq(NONE);
23 	fflush(stdout);
24 	if (_pb_front && _on2648) {
25 		c = *_pb_front++;
26 #ifdef TRACE
27 		if (trace)
28 			fprintf(trace, "%s from queue, front=%d, back=%d\n", rdchar(c), _pb_front-_pushback, _pb_back-_pushback);
29 #endif
30 		if (_pb_front > _pb_back) {
31 			_pb_front = _pb_back = NULL;
32 #ifdef TRACE
33 			if (trace)
34 				fprintf(trace, "reset pushback to null\n");
35 #endif
36 		}
37 		return (c);
38 	}
39 	_outcount = 0;
40 	c = getchar();
41 #ifdef TRACE
42 	if (trace)
43 		fprintf(trace, "rawchar '%s'\n", rdchar(c));
44 #endif
45 	return (c);
46 }
47