xref: /inferno-os/libkern/utflen.c (revision 3cd4f1d15146c08f05206d6328ecbc1c7fdc8dfa)
1*3cd4f1d1SCharles Forsyth #include "lib9.h"
237da2899SCharles.Forsyth 
337da2899SCharles.Forsyth int
utflen(char * s)437da2899SCharles.Forsyth utflen(char *s)
537da2899SCharles.Forsyth {
637da2899SCharles.Forsyth 	int c;
737da2899SCharles.Forsyth 	long n;
837da2899SCharles.Forsyth 	Rune rune;
937da2899SCharles.Forsyth 
1037da2899SCharles.Forsyth 	n = 0;
1137da2899SCharles.Forsyth 	for(;;) {
1237da2899SCharles.Forsyth 		c = *(uchar*)s;
1337da2899SCharles.Forsyth 		if(c < Runeself) {
1437da2899SCharles.Forsyth 			if(c == 0)
1537da2899SCharles.Forsyth 				return n;
1637da2899SCharles.Forsyth 			s++;
1737da2899SCharles.Forsyth 		} else
1837da2899SCharles.Forsyth 			s += chartorune(&rune, s);
1937da2899SCharles.Forsyth 		n++;
2037da2899SCharles.Forsyth 	}
2137da2899SCharles.Forsyth }
22