summaryrefslogtreecommitdiffstats
path: root/src/lib9/utf/utfnlen.c
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2004-02-29 22:11:15 +0000
committerrsc <devnull@localhost>2004-02-29 22:11:15 +0000
commit91c13e54b5d631b65e2f8344d5e0abd058f78ba1 (patch)
tree81d77fc6a74f182543603032462e865e34e43335 /src/lib9/utf/utfnlen.c
parent5a8e63b2f016735364d17866d5e2bcb35d20c78b (diff)
downloadplan9port-91c13e54b5d631b65e2f8344d5e0abd058f78ba1.tar.gz
plan9port-91c13e54b5d631b65e2f8344d5e0abd058f78ba1.zip
Move utf, fmt. Small header file changes.
Diffstat (limited to 'src/lib9/utf/utfnlen.c')
-rw-r--r--src/lib9/utf/utfnlen.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/lib9/utf/utfnlen.c b/src/lib9/utf/utfnlen.c
new file mode 100644
index 00000000..66d674fd
--- /dev/null
+++ b/src/lib9/utf/utfnlen.c
@@ -0,0 +1,41 @@
+/*
+ * The authors of this software are Rob Pike and Ken Thompson.
+ * Copyright (c) 2002 by Lucent Technologies.
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose without fee is hereby granted, provided that this entire notice
+ * is included in all copies of any software which is or includes a copy
+ * or modification of this software and in all copies of the supporting
+ * documentation for such software.
+ * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTY. IN PARTICULAR, NEITHER THE AUTHORS NOR LUCENT TECHNOLOGIES MAKE ANY
+ * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
+ * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
+ */
+#include <stdarg.h>
+#include <string.h>
+#include "utf.h"
+#include "utfdef.h"
+
+int
+utfnlen(char *s, long m)
+{
+ int c;
+ long n;
+ Rune rune;
+ char *es;
+
+ es = s + m;
+ for(n = 0; s < es; n++) {
+ c = *(uchar*)s;
+ if(c < Runeself){
+ if(c == '\0')
+ break;
+ s++;
+ continue;
+ }
+ if(!fullrune(s, es-s))
+ break;
+ s += chartorune(&rune, s);
+ }
+ return n;
+}