xref: /plan9/sys/src/ape/lib/l/allprint.c (revision 3e12c5d1bb89fc02707907988834ef147769ddaf)
1*3e12c5d1SDavid du Colombier #include	<libl.h>
2*3e12c5d1SDavid du Colombier #include	<stdio.h>
3*3e12c5d1SDavid du Colombier 
4*3e12c5d1SDavid du Colombier extern	FILE*	yyout;
5*3e12c5d1SDavid du Colombier 
6*3e12c5d1SDavid du Colombier int
printable(int c)7*3e12c5d1SDavid du Colombier printable(int c)
8*3e12c5d1SDavid du Colombier {
9*3e12c5d1SDavid du Colombier 	return 040 < c && c < 0177;
10*3e12c5d1SDavid du Colombier }
11*3e12c5d1SDavid du Colombier 
12*3e12c5d1SDavid du Colombier void
allprint(char c)13*3e12c5d1SDavid du Colombier allprint(char c)
14*3e12c5d1SDavid du Colombier {
15*3e12c5d1SDavid du Colombier 
16*3e12c5d1SDavid du Colombier 	switch(c) {
17*3e12c5d1SDavid du Colombier 	case '\n':
18*3e12c5d1SDavid du Colombier 		fprintf(yyout,"\\n");
19*3e12c5d1SDavid du Colombier 		break;
20*3e12c5d1SDavid du Colombier 	case '\t':
21*3e12c5d1SDavid du Colombier 		fprintf(yyout,"\\t");
22*3e12c5d1SDavid du Colombier 		break;
23*3e12c5d1SDavid du Colombier 	case '\b':
24*3e12c5d1SDavid du Colombier 		fprintf(yyout,"\\b");
25*3e12c5d1SDavid du Colombier 		break;
26*3e12c5d1SDavid du Colombier 	case ' ':
27*3e12c5d1SDavid du Colombier 		fprintf(yyout,"\\\bb");
28*3e12c5d1SDavid du Colombier 		break;
29*3e12c5d1SDavid du Colombier 	default:
30*3e12c5d1SDavid du Colombier 		if(!printable(c))
31*3e12c5d1SDavid du Colombier 			fprintf(yyout,"\\%-3o",c);
32*3e12c5d1SDavid du Colombier 		else
33*3e12c5d1SDavid du Colombier 			c = putc(c,yyout);
34*3e12c5d1SDavid du Colombier 			USED(c);
35*3e12c5d1SDavid du Colombier 		break;
36*3e12c5d1SDavid du Colombier 	}
37*3e12c5d1SDavid du Colombier 	return;
38*3e12c5d1SDavid du Colombier }
39