1*e2d15004SDag-Erling Smørgrav /**
2*e2d15004SDag-Erling Smørgrav * strsep implementation for compatibility.
3*e2d15004SDag-Erling Smørgrav *
4*e2d15004SDag-Erling Smørgrav * LICENSE
5*e2d15004SDag-Erling Smørgrav * Copyright (c) 2016, NLnet Labs
6*e2d15004SDag-Erling Smørgrav * All rights reserved.
7*e2d15004SDag-Erling Smørgrav *
8*e2d15004SDag-Erling Smørgrav * Redistribution and use in source and binary forms, with or without
9*e2d15004SDag-Erling Smørgrav * modification, are permitted provided that the following conditions are met:
10*e2d15004SDag-Erling Smørgrav * * Redistributions of source code must retain the above copyright notice,
11*e2d15004SDag-Erling Smørgrav * this list of conditions and the following disclaimer.
12*e2d15004SDag-Erling Smørgrav * * Redistributions in binary form must reproduce the above copyright
13*e2d15004SDag-Erling Smørgrav * notice, this list of conditions and the following disclaimer in the
14*e2d15004SDag-Erling Smørgrav * documentation and/or other materials provided with the distribution.
15*e2d15004SDag-Erling Smørgrav * * Neither the name of NLnetLabs nor the names of its
16*e2d15004SDag-Erling Smørgrav * contributors may be used to endorse or promote products derived from this
17*e2d15004SDag-Erling Smørgrav * software without specific prior written permission.
18*e2d15004SDag-Erling Smørgrav *
19*e2d15004SDag-Erling Smørgrav * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20*e2d15004SDag-Erling Smørgrav * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21*e2d15004SDag-Erling Smørgrav * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22*e2d15004SDag-Erling Smørgrav * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23*e2d15004SDag-Erling Smørgrav * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24*e2d15004SDag-Erling Smørgrav * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25*e2d15004SDag-Erling Smørgrav * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26*e2d15004SDag-Erling Smørgrav * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27*e2d15004SDag-Erling Smørgrav * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28*e2d15004SDag-Erling Smørgrav * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29*e2d15004SDag-Erling Smørgrav * POSSIBILITY OF SUCH DAMAGE.
30*e2d15004SDag-Erling Smørgrav **/
31*e2d15004SDag-Erling Smørgrav
32*e2d15004SDag-Erling Smørgrav #include "config.h"
33*e2d15004SDag-Erling Smørgrav
34*e2d15004SDag-Erling Smørgrav /** see if character is in the delimiter array */
35*e2d15004SDag-Erling Smørgrav static int
in_delim(char c,const char * delim)36*e2d15004SDag-Erling Smørgrav in_delim(char c, const char* delim)
37*e2d15004SDag-Erling Smørgrav {
38*e2d15004SDag-Erling Smørgrav const char* p;
39*e2d15004SDag-Erling Smørgrav if(!delim)
40*e2d15004SDag-Erling Smørgrav return 0;
41*e2d15004SDag-Erling Smørgrav for(p=delim; *p; p++) {
42*e2d15004SDag-Erling Smørgrav if(*p == c)
43*e2d15004SDag-Erling Smørgrav return 1;
44*e2d15004SDag-Erling Smørgrav }
45*e2d15004SDag-Erling Smørgrav return 0;
46*e2d15004SDag-Erling Smørgrav }
47*e2d15004SDag-Erling Smørgrav
strsep(char ** stringp,const char * delim)48*e2d15004SDag-Erling Smørgrav char *strsep(char **stringp, const char *delim)
49*e2d15004SDag-Erling Smørgrav {
50*e2d15004SDag-Erling Smørgrav char* s;
51*e2d15004SDag-Erling Smørgrav char* orig;
52*e2d15004SDag-Erling Smørgrav if(stringp == NULL || *stringp == NULL)
53*e2d15004SDag-Erling Smørgrav return NULL;
54*e2d15004SDag-Erling Smørgrav orig = *stringp;
55*e2d15004SDag-Erling Smørgrav s = *stringp;
56*e2d15004SDag-Erling Smørgrav while(*s && !in_delim(*s, delim))
57*e2d15004SDag-Erling Smørgrav s++;
58*e2d15004SDag-Erling Smørgrav if(*s) {
59*e2d15004SDag-Erling Smørgrav *s = 0;
60*e2d15004SDag-Erling Smørgrav *stringp = s+1;
61*e2d15004SDag-Erling Smørgrav } else {
62*e2d15004SDag-Erling Smørgrav *stringp = NULL;
63*e2d15004SDag-Erling Smørgrav }
64*e2d15004SDag-Erling Smørgrav return orig;
65*e2d15004SDag-Erling Smørgrav }
66