Subversion Repositories planix.SVN

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include "sam.h"
2
 
3
void
4
cvttorunes(char *p, int n, Rune *r, int *nb, int *nr, int *nulls)
5
{
6
	uchar *q;
7
	Rune *s;
8
	int j, w;
9
 
10
	/*
11
	 * Always guaranteed that n bytes may be interpreted
12
	 * without worrying about partial runes.  This may mean
13
	 * reading up to UTFmax-1 more bytes than n; the caller
14
	 * knows this.  If n is a firm limit, the caller should
15
	 * set p[n] = 0.
16
	 */
17
	q = (uchar*)p;
18
	s = r;
19
	for(j=0; j<n; j+=w){
20
		if(*q < Runeself){
21
			w = 1;
22
			*s = *q++;
23
		}else{
24
			w = chartorune(s, (char*)q);
25
			q += w;
26
		}
27
		if(*s)
28
			s++;
29
		else if(nulls)
30
			*nulls = TRUE;
31
	}
32
	*nb = (char*)q-p;
33
	*nr = s-r;
34
}
35
 
36
void*
37
fbufalloc(void)
38
{
39
	return emalloc(BUFSIZE);
40
}
41
 
42
void
43
fbuffree(void *f)
44
{
45
	free(f);
46
}
47
 
48
uint
49
min(uint a, uint b)
50
{
51
	if(a < b)
52
		return a;
53
	return b;
54
}