diff options
Diffstat (limited to 'lib/isc/string.c')
| -rw-r--r-- | lib/isc/string.c | 54 | 
1 files changed, 51 insertions, 3 deletions
diff --git a/lib/isc/string.c b/lib/isc/string.c index cba517c568f96..56ec444bffaad 100644 --- a/lib/isc/string.c +++ b/lib/isc/string.c @@ -1,5 +1,5 @@  /* - * Copyright (C) 2004-2007, 2011, 2012  Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2007, 2011, 2012, 2014  Internet Systems Consortium, Inc. ("ISC")   * Copyright (C) 1999-2001, 2003  Internet Software Consortium.   *   * Permission to use, copy, modify, and/or distribute this software for any @@ -15,7 +15,34 @@   * PERFORMANCE OF THIS SOFTWARE.   */ -/* $Id$ */ +/* + * Copyright (c) 1990, 1993 + *	The Regents of the University of California.  All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *    notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *    notice, this list of conditions and the following disclaimer in the + *    documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + *    may be used to endorse or promote products derived from this software + *    without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */  /*! \file */ @@ -188,7 +215,7 @@ isc_string_regiondup(isc_mem_t *mctx, const isc_region_t *source) {  	target = (char *) isc_mem_allocate(mctx, source->length + 1);  	if (target != NULL) { -		memcpy(source->base, target, source->length); +		memmove(source->base, target, source->length);  		target[source->length] = '\0';  	} @@ -269,3 +296,24 @@ isc_string_strlcat(char *dst, const char *src, size_t size)  	return(dlen + (s - src));	/* count does not include NUL */  } + +char * +isc_string_strcasestr(const char *str, const char *search) { +	char c, sc, *s; +	size_t len; + +	if ((c = *search++) != 0) { +		c = tolower((unsigned char) c); +		len = strlen(search); +		do { +			do { +				if ((sc = *str++) == 0) +					return (NULL); +			} while ((char) tolower((unsigned char) sc) != c); +		} while (strncasecmp(str, search, len) != 0); +		str--; +	} +	DE_CONST(str, s); +	return (s); + +}  | 
