github.com/tcnksm/go@v0.0.0-20141208075154-439b32936367/src/lib9/utf/utflen.c (about) 1 /* 2 * The authors of this software are Rob Pike and Ken Thompson. 3 * Copyright (c) 2002 by Lucent Technologies. 4 * Permission to use, copy, modify, and distribute this software for any 5 * purpose without fee is hereby granted, provided that this entire notice 6 * is included in all copies of any software which is or includes a copy 7 * or modification of this software and in all copies of the supporting 8 * documentation for such software. 9 * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED 10 * WARRANTY. IN PARTICULAR, NEITHER THE AUTHORS NOR LUCENT TECHNOLOGIES MAKE ANY 11 * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY 12 * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. 13 */ 14 #include "utf.h" 15 #include "utfdef.h" 16 17 int 18 utflen(const char *s) 19 { 20 int c; 21 int n; 22 Rune rune; 23 24 n = 0; 25 for(;;) { 26 c = *(uchar*)s; 27 if(c < Runeself) { 28 if(c == 0) 29 return n; 30 s++; 31 } else 32 s += chartorune(&rune, s); 33 n++; 34 } 35 }