github.com/tcnksm/go@v0.0.0-20141208075154-439b32936367/src/lib9/utf/utfecpy.c (about)

     1  /*
     2   * The authors of this software are Rob Pike and Ken Thompson.
     3   *              Copyright (c) 2002 by Lucent Technologies.
     4   * Permission to use, copy, modify, and distribute this software for any
     5   * purpose without fee is hereby granted, provided that this entire notice
     6   * is included in all copies of any software which is or includes a copy
     7   * or modification of this software and in all copies of the supporting
     8   * documentation for such software.
     9   * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
    10   * WARRANTY.  IN PARTICULAR, NEITHER THE AUTHORS NOR LUCENT TECHNOLOGIES MAKE ANY
    11   * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
    12   * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
    13   */
    14  #include <u.h>
    15  #include <libc.h>
    16  #include "utf.h"
    17  #include "utfdef.h"
    18  
    19  char*
    20  utfecpy(char *to, char *e, const char *from)
    21  {
    22  	char *end;
    23  
    24  	if(to >= e)
    25  		return to;
    26  	end = memccpy(to, from, '\0', (size_t)(e - to));
    27  	if(end == nil){
    28  		end = e-1;
    29  		while(end>to && (*--end&0xC0)==0x80)
    30  			;
    31  		*end = '\0';
    32  	}else{
    33  		end--;
    34  	}
    35  	return end;
    36  }