101 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /* Copyright (c) 1985 Ceriel J.H. Jacobs */
 | |
| 
 | |
| /*
 | |
|  * Handle output to screen
 | |
|  */
 | |
| 
 | |
| # ifndef lint
 | |
| static char rcsid[] = "$Header$";
 | |
| # endif
 | |
| 
 | |
| # define _OUTPUT_
 | |
| 
 | |
| # include "in_all.h"
 | |
| # include "output.h"
 | |
| # include "main.h"
 | |
| 
 | |
| # define OBUFSIZ 64*128
 | |
| 
 | |
| static char _outbuf[OBUFSIZ];
 | |
| 
 | |
| VOID
 | |
| flush() {			/* Flush output buffer, by writing it */
 | |
| 	register char *p = _outbuf;
 | |
| 
 | |
| 	_ocnt = OBUFSIZ;
 | |
| 	if (_optr) (VOID) write(1, p, _optr - p);
 | |
| 	_optr = p;
 | |
| }
 | |
| 
 | |
| VOID
 | |
| nflush() {			/* Flush output buffer, ignoring it */
 | |
| 
 | |
| 	_ocnt = OBUFSIZ;
 | |
| 	_optr = _outbuf;
 | |
| }
 | |
| 
 | |
| int
 | |
| fputch(ch) char ch; {		/* print a character */
 | |
| 	putch(ch);
 | |
| }
 | |
| 
 | |
| VOID
 | |
| putline(s) register char *s; {	/* Print string s */
 | |
| 
 | |
| 	if (!s) return;
 | |
| 	while (*s) {
 | |
| 		putch(*s++);
 | |
| 	}
 | |
| }
 | |
| 
 | |
| /*
 | |
|  * A safe version of putline. All control characters are echoed as ^X
 | |
|  */
 | |
| 
 | |
| VOID
 | |
| cputline(s) char *s; {
 | |
| 	register c;
 | |
| 
 | |
| 	while (c = *s++) {
 | |
| 		if ((unsigned) c > 0177) c &= 0177;
 | |
| 		if (c < ' ' || c == 0177) {
 | |
| 			putch('^');
 | |
| 			c ^= 0100;
 | |
| 		}
 | |
| 		putch(c);
 | |
| 	}
 | |
| }
 | |
| 
 | |
| /*
 | |
|  * Simple minded routine to print a number
 | |
|  */
 | |
| 
 | |
| VOID
 | |
| prnum(n) long n; {
 | |
| 
 | |
| 	putline(getnum(n));
 | |
| }
 | |
| 
 | |
| static char *
 | |
| fillnum(n, p)
 | |
| 	long n;
 | |
| 	char *p;
 | |
| {
 | |
| 	if (n >= 10) {
 | |
| 		p = fillnum(n / 10, p);
 | |
| 	}
 | |
| 	*p++ = (int) (n % 10) + '0';
 | |
| 	*p = '\0';
 | |
| 	return p;
 | |
| }
 | |
| 
 | |
| char *
 | |
| getnum(n)
 | |
| 	long n;
 | |
| {
 | |
| 	static char buf[20];
 | |
| 
 | |
| 	fillnum(n, buf);
 | |
| 	return buf;
 | |
| }
 | 
