xref: /plan9/sys/src/libc/port/utfecpy.c (revision ee7057f8d68075c0ad597fd08386cbf02120174d)
19a747e4fSDavid du Colombier #include <u.h>
29a747e4fSDavid du Colombier #include <libc.h>
39a747e4fSDavid du Colombier 
49a747e4fSDavid du Colombier char*
utfecpy(char * to,char * e,char * from)59a747e4fSDavid du Colombier utfecpy(char *to, char *e, char *from)
69a747e4fSDavid du Colombier {
79a747e4fSDavid du Colombier 	char *end;
89a747e4fSDavid du Colombier 
99a747e4fSDavid du Colombier 	if(to >= e)
109a747e4fSDavid du Colombier 		return to;
119a747e4fSDavid du Colombier 	end = memccpy(to, from, '\0', e - to);
129a747e4fSDavid du Colombier 	if(end == nil){
13*ee7057f8SDavid du Colombier 		end = e;
149a747e4fSDavid du Colombier 		while(end>to && (*--end&0xC0)==0x80)
159a747e4fSDavid du Colombier 			;
169a747e4fSDavid du Colombier 		*end = '\0';
179a747e4fSDavid du Colombier 	}else{
189a747e4fSDavid du Colombier 		end--;
199a747e4fSDavid du Colombier 	}
209a747e4fSDavid du Colombier 	return end;
219a747e4fSDavid du Colombier }
22