xref: /plan9/sys/src/libc/port/utflen.c (revision b85a83648eec38fe82b6f00adfd7828ceec5ee8d)
13e12c5d1SDavid du Colombier #include <u.h>
23e12c5d1SDavid du Colombier #include <libc.h>
33e12c5d1SDavid du Colombier 
4*7dd7cddfSDavid du Colombier int
utflen(char * s)53e12c5d1SDavid du Colombier utflen(char *s)
63e12c5d1SDavid du Colombier {
73e12c5d1SDavid du Colombier 	int c;
83e12c5d1SDavid du Colombier 	long n;
93e12c5d1SDavid du Colombier 	Rune rune;
103e12c5d1SDavid du Colombier 
113e12c5d1SDavid du Colombier 	n = 0;
123e12c5d1SDavid du Colombier 	for(;;) {
133e12c5d1SDavid du Colombier 		c = *(uchar*)s;
143e12c5d1SDavid du Colombier 		if(c < Runeself) {
153e12c5d1SDavid du Colombier 			if(c == 0)
163e12c5d1SDavid du Colombier 				return n;
173e12c5d1SDavid du Colombier 			s++;
183e12c5d1SDavid du Colombier 		} else
193e12c5d1SDavid du Colombier 			s += chartorune(&rune, s);
203e12c5d1SDavid du Colombier 		n++;
213e12c5d1SDavid du Colombier 	}
223e12c5d1SDavid du Colombier }
23