xref: /inferno-os/lib9/utfecpy.c (revision 6e425a9de8c003b5a733621a6b6730ec3cc902b8)
137da2899SCharles.Forsyth #include "lib9.h"
237da2899SCharles.Forsyth 
337da2899SCharles.Forsyth char*
utfecpy(char * to,char * e,char * from)437da2899SCharles.Forsyth utfecpy(char *to, char *e, char *from)
537da2899SCharles.Forsyth {
637da2899SCharles.Forsyth 	char *end;
737da2899SCharles.Forsyth 
837da2899SCharles.Forsyth 	if(to >= e)
937da2899SCharles.Forsyth 		return to;
1037da2899SCharles.Forsyth 	end = memccpy(to, from, '\0', e - to);
1137da2899SCharles.Forsyth 	if(end == nil){
12*6e425a9dSCharles.Forsyth 		end = e;
1337da2899SCharles.Forsyth 		while(end>to && (*--end&0xC0)==0x80)
1437da2899SCharles.Forsyth 			;
1537da2899SCharles.Forsyth 		*end = '\0';
1637da2899SCharles.Forsyth 	}else{
1737da2899SCharles.Forsyth 		end--;
1837da2899SCharles.Forsyth 	}
1937da2899SCharles.Forsyth 	return end;
2037da2899SCharles.Forsyth }
21