xref: /plan9/sys/src/libbio/bputrune.c (revision eaba85aa6b158bdf68fdb77f770e3ba0899a8b5e)
13e12c5d1SDavid du Colombier #include	<u.h>
23e12c5d1SDavid du Colombier #include	<libc.h>
33e12c5d1SDavid du Colombier #include	<bio.h>
43e12c5d1SDavid du Colombier 
53e12c5d1SDavid du Colombier int
Bputrune(Biobufhdr * bp,long c)63e12c5d1SDavid du Colombier Bputrune(Biobufhdr *bp, long c)
73e12c5d1SDavid du Colombier {
83e12c5d1SDavid du Colombier 	Rune rune;
9*eaba85aaSDavid du Colombier 	char str[UTFmax];
103e12c5d1SDavid du Colombier 	int n;
113e12c5d1SDavid du Colombier 
123e12c5d1SDavid du Colombier 	rune = c;
133e12c5d1SDavid du Colombier 	if(rune < Runeself) {
143e12c5d1SDavid du Colombier 		Bputc(bp, rune);
153e12c5d1SDavid du Colombier 		return 1;
163e12c5d1SDavid du Colombier 	}
173e12c5d1SDavid du Colombier 	n = runetochar(str, &rune);
183e12c5d1SDavid du Colombier 	if(n == 0)
193e12c5d1SDavid du Colombier 		return Bbad;
203e12c5d1SDavid du Colombier 	if(Bwrite(bp, str, n) != n)
213e12c5d1SDavid du Colombier 		return Beof;
223e12c5d1SDavid du Colombier 	return n;
233e12c5d1SDavid du Colombier }
24