Commit | Line | Data |
---|---|---|
97e3edfb DF |
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[] = "@(#)outchar.c 5.1 (Berkeley) %G%"; | |
9 | #endif not lint | |
f38ded87 RC |
10 | |
11 | #include "2648.h" | |
12 | ||
13 | outchar(c) | |
14 | char c; | |
15 | { | |
16 | extern int QUIET; | |
17 | #ifdef TRACE | |
18 | if (trace) | |
19 | fprintf(trace, "%s", rdchar(c)); | |
20 | #endif | |
21 | if (QUIET) | |
22 | return; | |
23 | _outcount++; | |
24 | putchar(c); | |
25 | ||
26 | /* Do 2648 ^E/^F handshake */ | |
27 | if (_outcount > TBLKSIZ && _on2648) { | |
28 | #ifdef TRACE | |
29 | if (trace) | |
30 | fprintf(trace, "ENQ .. "); | |
31 | #endif | |
32 | putchar(ENQ); | |
33 | fflush(stdout); | |
34 | c = getchar(); | |
35 | while (c != ACK) { | |
36 | if (_pb_front == NULL) { | |
37 | _pb_front = _pushback; | |
38 | _pb_back = _pb_front - 1; | |
39 | } | |
40 | *++_pb_back = c; | |
41 | #ifdef TRACE | |
42 | if (trace) | |
43 | fprintf(trace, "push back %s, front=%d, back=%d, ", rdchar(c), _pb_front-_pushback, _pb_front-_pushback); | |
44 | #endif | |
45 | c = getchar(); | |
46 | } | |
47 | #ifdef TRACE | |
48 | if (trace) | |
49 | fprintf(trace, "ACK\n"); | |
50 | #endif | |
51 | _outcount = 0; | |
52 | } | |
53 | } |