xref: /plan9/sys/src/cmd/unix/drawterm/libc/utfecpy.c (revision 8ccd4a6360d974db7bd7bbd4f37e7018419ea908)
1*8ccd4a63SDavid du Colombier #include <u.h>
2*8ccd4a63SDavid du Colombier #include <libc.h>
3*8ccd4a63SDavid du Colombier 
4*8ccd4a63SDavid du Colombier char*
utfecpy(char * to,char * e,char * from)5*8ccd4a63SDavid du Colombier utfecpy(char *to, char *e, char *from)
6*8ccd4a63SDavid du Colombier {
7*8ccd4a63SDavid du Colombier 	char *end;
8*8ccd4a63SDavid du Colombier 
9*8ccd4a63SDavid du Colombier 	if(to >= e)
10*8ccd4a63SDavid du Colombier 		return to;
11*8ccd4a63SDavid du Colombier 	end = memccpy(to, from, '\0', e - to);
12*8ccd4a63SDavid du Colombier 	if(end == nil){
13*8ccd4a63SDavid du Colombier 		end = e-1;
14*8ccd4a63SDavid du Colombier 		while(end>to && (*--end&0xC0)==0x80)
15*8ccd4a63SDavid du Colombier 			;
16*8ccd4a63SDavid du Colombier 		*end = '\0';
17*8ccd4a63SDavid du Colombier 	}else{
18*8ccd4a63SDavid du Colombier 		end--;
19*8ccd4a63SDavid du Colombier 	}
20*8ccd4a63SDavid du Colombier 	return end;
21*8ccd4a63SDavid du Colombier }
22