diff options
Diffstat (limited to 'contrib/unbound/compat/strsep.c')
| -rw-r--r-- | contrib/unbound/compat/strsep.c | 65 | 
1 files changed, 65 insertions, 0 deletions
diff --git a/contrib/unbound/compat/strsep.c b/contrib/unbound/compat/strsep.c new file mode 100644 index 000000000000..4e3f05c5237f --- /dev/null +++ b/contrib/unbound/compat/strsep.c @@ -0,0 +1,65 @@ +/**  + * strsep implementation for compatibility. + * +  * LICENSE +  * Copyright (c) 2016, NLnet Labs +  * All rights reserved. +  * +  * Redistribution and use in source and binary forms, with or without +  * modification, are permitted provided that the following conditions are met: +  * * Redistributions of source code must retain the above copyright notice, +  *     this list of conditions and the following disclaimer. +  * * 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. +  * * Neither the name of NLnetLabs 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 COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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. + **/ + +#include "config.h" + +/** see if character is in the delimiter array */ +static int +in_delim(char c, const char* delim) +{ +	const char* p; +	if(!delim) +		return 0; +	for(p=delim; *p; p++) { +		if(*p == c) +			return 1; +	} +	return 0; +} + +char *strsep(char **stringp, const char *delim) +{ +	char* s; +	char* orig; +	if(stringp == NULL || *stringp == NULL) +		return NULL; +	orig = *stringp; +	s = *stringp; +	while(*s && !in_delim(*s, delim)) +		s++; +	if(*s) { +		*s = 0; +		*stringp = s+1; +	} else { +		*stringp = NULL; +	} +	return orig; +}  | 
