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 Colombierutfecpy(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