xref: /inferno-os/lib9/utfnlen.c (revision 37da2899f40661e3e9631e497da8dc59b971cbd0)
1 #include "lib9.h"
2 
3 int
utfnlen(char * s,long m)4 utfnlen(char *s, long m)
5 {
6 	int c;
7 	long n;
8 	Rune rune;
9 	char *es;
10 
11 	es = s + m;
12 	for(n = 0; s < es; n++) {
13 		c = *(uchar*)s;
14 		if(c < Runeself){
15 			if(c == '\0')
16 				break;
17 			s++;
18 			continue;
19 		}
20 		if(!fullrune(s, es-s))
21 			break;
22 		s += chartorune(&rune, s);
23 	}
24 	return n;
25 }
26