111488Sralph /*
2*18780Sdist * Copyright (c) 1980 Regents of the University of California.
3*18780Sdist * All rights reserved. The Berkeley software License Agreement
4*18780Sdist * specifies the terms and conditions for redistribution.
5*18780Sdist */
6*18780Sdist
7*18780Sdist #ifndef lint
8*18780Sdist static char sccsid[] = "@(#)rawchar.c 5.1 (Berkeley) 04/26/85";
9*18780Sdist #endif not lint
10*18780Sdist
11*18780Sdist /*
1211488Sralph * get a character from the terminal, with no line buffering.
1311488Sralph */
1411488Sralph
1511488Sralph #include "2648.h"
1611488Sralph
rawchar()1711488Sralph rawchar()
1811488Sralph {
1911488Sralph char c;
2011488Sralph
2111488Sralph sync();
2211488Sralph escseq(NONE);
2311488Sralph fflush(stdout);
2411488Sralph if (_pb_front && _on2648) {
2511488Sralph c = *_pb_front++;
2611488Sralph #ifdef TRACE
2711488Sralph if (trace)
2811488Sralph fprintf(trace, "%s from queue, front=%d, back=%d\n", rdchar(c), _pb_front-_pushback, _pb_back-_pushback);
2911488Sralph #endif
3011488Sralph if (_pb_front > _pb_back) {
3111488Sralph _pb_front = _pb_back = NULL;
3211488Sralph #ifdef TRACE
3311488Sralph if (trace)
3411488Sralph fprintf(trace, "reset pushback to null\n");
3511488Sralph #endif
3611488Sralph }
3711488Sralph return (c);
3811488Sralph }
3911488Sralph _outcount = 0;
4011488Sralph c = getchar();
4111488Sralph #ifdef TRACE
4211488Sralph if (trace)
4311488Sralph fprintf(trace, "rawchar '%s'\n", rdchar(c));
4411488Sralph #endif
4511488Sralph return (c);
4611488Sralph }
47