From e5888a1ffdae813d7575f5fb02275c6bb07e5199 Mon Sep 17 00:00:00 2001 From: Taru Karttunen Date: Wed, 30 Mar 2011 15:46:40 +0300 Subject: Import sources from 2011-03-30 iso image --- sys/src/cmd/rio/util.c | 149 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100755 sys/src/cmd/rio/util.c (limited to 'sys/src/cmd/rio/util.c') diff --git a/sys/src/cmd/rio/util.c b/sys/src/cmd/rio/util.c new file mode 100755 index 000000000..8a35d1d75 --- /dev/null +++ b/sys/src/cmd/rio/util.c @@ -0,0 +1,149 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "dat.h" +#include "fns.h" + +void +cvttorunes(char *p, int n, Rune *r, int *nb, int *nr, int *nulls) +{ + uchar *q; + Rune *s; + int j, w; + + /* + * Always guaranteed that n bytes may be interpreted + * without worrying about partial runes. This may mean + * reading up to UTFmax-1 more bytes than n; the caller + * knows this. If n is a firm limit, the caller should + * set p[n] = 0. + */ + q = (uchar*)p; + s = r; + for(j=0; j?@[\\]^`{|}~", c)) + return FALSE; + return TRUE; +} + +Rune* +strrune(Rune *s, Rune c) +{ + Rune c1; + + if(c == 0) { + while(*s++) + ; + return s-1; + } + + while(c1 = *s++) + if(c1 == c) + return s-1; + return nil; +} + +int +min(int a, int b) +{ + if(a < b) + return a; + return b; +} + +int +max(int a, int b) +{ + if(a > b) + return a; + return b; +} + +char* +runetobyte(Rune *r, int n, int *ip) +{ + char *s; + int m; + + s = emalloc(n*UTFmax+1); + m = snprint(s, n*UTFmax+1, "%.*S", n, r); + *ip = m; + return s; +} + -- cgit v1.2.3