xref: /plan9/sys/src/liblex/allprint.c (revision 86abb9fb23a9f11dbfd9e6dc2fe0c20d62417d94)
1*86abb9fbSDavid du Colombier #include	"/sys/src/cmd/lex/ldefs.h"
23e12c5d1SDavid du Colombier #include	<stdio.h>
33e12c5d1SDavid du Colombier 
43e12c5d1SDavid du Colombier extern	FILE*	yyout;
53e12c5d1SDavid du Colombier 
63e12c5d1SDavid du Colombier int
printable(int c)73e12c5d1SDavid du Colombier printable(int c)
83e12c5d1SDavid du Colombier {
93e12c5d1SDavid du Colombier 	return 040 < c && c < 0177;
103e12c5d1SDavid du Colombier }
113e12c5d1SDavid du Colombier 
123e12c5d1SDavid du Colombier void
allprint(int c)13*86abb9fbSDavid du Colombier allprint(int c)
143e12c5d1SDavid du Colombier {
153e12c5d1SDavid du Colombier 
163e12c5d1SDavid du Colombier 	switch(c) {
173e12c5d1SDavid du Colombier 	case '\n':
183e12c5d1SDavid du Colombier 		fprintf(yyout,"\\n");
193e12c5d1SDavid du Colombier 		break;
203e12c5d1SDavid du Colombier 	case '\t':
213e12c5d1SDavid du Colombier 		fprintf(yyout,"\\t");
223e12c5d1SDavid du Colombier 		break;
233e12c5d1SDavid du Colombier 	case '\b':
243e12c5d1SDavid du Colombier 		fprintf(yyout,"\\b");
253e12c5d1SDavid du Colombier 		break;
263e12c5d1SDavid du Colombier 	case ' ':
273e12c5d1SDavid du Colombier 		fprintf(yyout,"\\\bb");
283e12c5d1SDavid du Colombier 		break;
293e12c5d1SDavid du Colombier 	default:
303e12c5d1SDavid du Colombier 		if(!printable(c))
313e12c5d1SDavid du Colombier 			fprintf(yyout,"\\%-3o",c);
323e12c5d1SDavid du Colombier 		else
333e12c5d1SDavid du Colombier 			c = putc(c,yyout);
343e12c5d1SDavid du Colombier 			USED(c);
353e12c5d1SDavid du Colombier 		break;
363e12c5d1SDavid du Colombier 	}
373e12c5d1SDavid du Colombier 	return;
383e12c5d1SDavid du Colombier }
39