mirror of
https://github.com/NLnetLabs/unbound.git
synced 2025-12-20 23:00:56 -05:00
- compat strsep implementation.
git-svn-id: file:///svn/unbound/trunk@3738 be551aaa-1e26-0410-a405-d3ace91eadb9
This commit is contained in:
parent
0b193d9c88
commit
8072ea6930
6 changed files with 106 additions and 8 deletions
20
Makefile.in
20
Makefile.in
|
|
@ -136,7 +136,8 @@ compat/memcmp.c compat/memmove.c compat/snprintf.c compat/strlcat.c \
|
||||||
compat/strlcpy.c compat/strptime.c compat/getentropy_linux.c \
|
compat/strlcpy.c compat/strptime.c compat/getentropy_linux.c \
|
||||||
compat/getentropy_osx.c compat/getentropy_solaris.c compat/getentropy_win.c \
|
compat/getentropy_osx.c compat/getentropy_solaris.c compat/getentropy_win.c \
|
||||||
compat/explicit_bzero.c compat/arc4random.c compat/arc4random_uniform.c \
|
compat/explicit_bzero.c compat/arc4random.c compat/arc4random_uniform.c \
|
||||||
compat/arc4_lock.c compat/sha512.c compat/reallocarray.c compat/isblank.c
|
compat/arc4_lock.c compat/sha512.c compat/reallocarray.c compat/isblank.c \
|
||||||
|
compat/strsep.c
|
||||||
COMPAT_OBJ=$(LIBOBJS:.o=.lo)
|
COMPAT_OBJ=$(LIBOBJS:.o=.lo)
|
||||||
COMPAT_OBJ_WITHOUT_CTIME=$(LIBOBJ_WITHOUT_CTIME:.o=.lo)
|
COMPAT_OBJ_WITHOUT_CTIME=$(LIBOBJ_WITHOUT_CTIME:.o=.lo)
|
||||||
COMPAT_OBJ_WITHOUT_CTIMEARC4=$(LIBOBJ_WITHOUT_CTIMEARC4:.o=.lo)
|
COMPAT_OBJ_WITHOUT_CTIMEARC4=$(LIBOBJ_WITHOUT_CTIMEARC4:.o=.lo)
|
||||||
|
|
@ -627,9 +628,9 @@ msgencode.lo msgencode.o: $(srcdir)/util/data/msgencode.c config.h $(srcdir)/uti
|
||||||
$(srcdir)/sldns/sbuffer.h
|
$(srcdir)/sldns/sbuffer.h
|
||||||
msgparse.lo msgparse.o: $(srcdir)/util/data/msgparse.c config.h $(srcdir)/util/data/msgparse.h \
|
msgparse.lo msgparse.o: $(srcdir)/util/data/msgparse.c config.h $(srcdir)/util/data/msgparse.h \
|
||||||
$(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/sldns/pkthdr.h \
|
$(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/sldns/pkthdr.h \
|
||||||
$(srcdir)/sldns/rrdef.h $(srcdir)/util/data/dname.h $(srcdir)/util/data/packed_rrset.h \
|
$(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \
|
||||||
$(srcdir)/util/storage/lookup3.h $(srcdir)/util/regional.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/parseutil.h \
|
$(srcdir)/util/data/dname.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/regional.h $(srcdir)/sldns/sbuffer.h \
|
||||||
$(srcdir)/sldns/wire2str.h
|
$(srcdir)/sldns/parseutil.h $(srcdir)/sldns/wire2str.h
|
||||||
msgreply.lo msgreply.o: $(srcdir)/util/data/msgreply.c config.h $(srcdir)/util/data/msgreply.h \
|
msgreply.lo msgreply.o: $(srcdir)/util/data/msgreply.c config.h $(srcdir)/util/data/msgreply.h \
|
||||||
$(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/packed_rrset.h \
|
$(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/packed_rrset.h \
|
||||||
$(srcdir)/util/storage/lookup3.h $(srcdir)/util/alloc.h $(srcdir)/util/netevent.h $(srcdir)/util/net_help.h \
|
$(srcdir)/util/storage/lookup3.h $(srcdir)/util/alloc.h $(srcdir)/util/netevent.h $(srcdir)/util/net_help.h \
|
||||||
|
|
@ -721,7 +722,7 @@ modstack.lo modstack.o: $(srcdir)/services/modstack.c config.h $(srcdir)/service
|
||||||
$(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h \
|
$(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h \
|
||||||
$(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/dns64/dns64.h \
|
$(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/dns64/dns64.h \
|
||||||
$(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/validator/validator.h \
|
$(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/validator/validator.h \
|
||||||
$(srcdir)/validator/val_utils.h $(srcdir)/cachedb/cachedb.h
|
$(srcdir)/validator/val_utils.h $(PYTHONMOD_HEADER) $(srcdir)/cachedb/cachedb.h
|
||||||
outbound_list.lo outbound_list.o: $(srcdir)/services/outbound_list.c config.h \
|
outbound_list.lo outbound_list.o: $(srcdir)/services/outbound_list.c config.h \
|
||||||
$(srcdir)/services/outbound_list.h $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h \
|
$(srcdir)/services/outbound_list.h $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h \
|
||||||
$(srcdir)/util/netevent.h
|
$(srcdir)/util/netevent.h
|
||||||
|
|
@ -765,7 +766,8 @@ fptr_wlist.lo fptr_wlist.o: $(srcdir)/util/fptr_wlist.c config.h $(srcdir)/util/
|
||||||
$(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_sigcrypt.h $(srcdir)/validator/val_kentry.h \
|
$(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_sigcrypt.h $(srcdir)/validator/val_kentry.h \
|
||||||
$(srcdir)/validator/val_neg.h $(srcdir)/validator/autotrust.h $(srcdir)/libunbound/libworker.h \
|
$(srcdir)/validator/val_neg.h $(srcdir)/validator/autotrust.h $(srcdir)/libunbound/libworker.h \
|
||||||
$(srcdir)/libunbound/context.h $(srcdir)/util/alloc.h $(srcdir)/libunbound/unbound.h \
|
$(srcdir)/libunbound/context.h $(srcdir)/util/alloc.h $(srcdir)/libunbound/unbound.h \
|
||||||
$(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/cachedb/cachedb.h
|
$(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h \
|
||||||
|
$(PYTHONMOD_HEADER) $(srcdir)/cachedb/cachedb.h
|
||||||
locks.lo locks.o: $(srcdir)/util/locks.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h
|
locks.lo locks.o: $(srcdir)/util/locks.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h
|
||||||
log.lo log.o: $(srcdir)/util/log.c config.h $(srcdir)/util/log.h $(srcdir)/util/locks.h $(srcdir)/sldns/sbuffer.h
|
log.lo log.o: $(srcdir)/util/log.c config.h $(srcdir)/util/log.h $(srcdir)/util/locks.h $(srcdir)/sldns/sbuffer.h
|
||||||
mini_event.lo mini_event.o: $(srcdir)/util/mini_event.c config.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h \
|
mini_event.lo mini_event.o: $(srcdir)/util/mini_event.c config.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h \
|
||||||
|
|
@ -1120,7 +1122,7 @@ unbound-checkconf.lo unbound-checkconf.o: $(srcdir)/smallapp/unbound-checkconf.c
|
||||||
$(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_fwd.h \
|
$(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_fwd.h \
|
||||||
$(srcdir)/util/rbtree.h $(srcdir)/iterator/iter_hints.h $(srcdir)/util/storage/dnstree.h \
|
$(srcdir)/util/rbtree.h $(srcdir)/iterator/iter_hints.h $(srcdir)/util/storage/dnstree.h \
|
||||||
$(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h $(srcdir)/services/localzone.h \
|
$(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h $(srcdir)/services/localzone.h \
|
||||||
$(srcdir)/sldns/sbuffer.h
|
$(srcdir)/sldns/sbuffer.h $(PYTHONMOD_HEADER)
|
||||||
worker_cb.lo worker_cb.o: $(srcdir)/smallapp/worker_cb.c config.h $(srcdir)/libunbound/context.h \
|
worker_cb.lo worker_cb.o: $(srcdir)/smallapp/worker_cb.c config.h $(srcdir)/libunbound/context.h \
|
||||||
$(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \
|
$(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \
|
||||||
$(srcdir)/libunbound/unbound.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \
|
$(srcdir)/libunbound/unbound.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \
|
||||||
|
|
@ -1183,7 +1185,8 @@ pythonmod_utils.lo pythonmod_utils.o: $(srcdir)/pythonmod/pythonmod_utils.c conf
|
||||||
$(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \
|
$(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \
|
||||||
$(srcdir)/sldns/rrdef.h $(srcdir)/util/netevent.h $(srcdir)/util/net_help.h $(srcdir)/services/cache/dns.h \
|
$(srcdir)/sldns/rrdef.h $(srcdir)/util/netevent.h $(srcdir)/util/net_help.h $(srcdir)/services/cache/dns.h \
|
||||||
$(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/regional.h \
|
$(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/regional.h \
|
||||||
$(srcdir)/iterator/iter_delegpt.h $(srcdir)/sldns/sbuffer.h
|
$(srcdir)/iterator/iter_delegpt.h $(srcdir)/sldns/sbuffer.h \
|
||||||
|
|
||||||
win_svc.lo win_svc.o: $(srcdir)/winrc/win_svc.c config.h $(srcdir)/winrc/win_svc.h $(srcdir)/winrc/w_inst.h \
|
win_svc.lo win_svc.o: $(srcdir)/winrc/win_svc.c config.h $(srcdir)/winrc/win_svc.h $(srcdir)/winrc/w_inst.h \
|
||||||
$(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \
|
$(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \
|
||||||
$(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \
|
$(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \
|
||||||
|
|
@ -1222,6 +1225,7 @@ snprintf.lo snprintf.o: $(srcdir)/compat/snprintf.c config.h
|
||||||
strlcat.lo strlcat.o: $(srcdir)/compat/strlcat.c config.h
|
strlcat.lo strlcat.o: $(srcdir)/compat/strlcat.c config.h
|
||||||
strlcpy.lo strlcpy.o: $(srcdir)/compat/strlcpy.c config.h
|
strlcpy.lo strlcpy.o: $(srcdir)/compat/strlcpy.c config.h
|
||||||
strptime.lo strptime.o: $(srcdir)/compat/strptime.c config.h
|
strptime.lo strptime.o: $(srcdir)/compat/strptime.c config.h
|
||||||
|
strsep.lo strsep.o: $(srcdir)/compat/strsep.c config.h
|
||||||
getentropy_linux.lo getentropy_linux.o: $(srcdir)/compat/getentropy_linux.c config.h
|
getentropy_linux.lo getentropy_linux.o: $(srcdir)/compat/getentropy_linux.c config.h
|
||||||
getentropy_osx.lo getentropy_osx.o: $(srcdir)/compat/getentropy_osx.c config.h
|
getentropy_osx.lo getentropy_osx.o: $(srcdir)/compat/getentropy_osx.c config.h
|
||||||
getentropy_solaris.lo getentropy_solaris.o: $(srcdir)/compat/getentropy_solaris.c config.h
|
getentropy_solaris.lo getentropy_solaris.o: $(srcdir)/compat/getentropy_solaris.c config.h
|
||||||
|
|
|
||||||
65
compat/strsep.c
Normal file
65
compat/strsep.c
Normal file
|
|
@ -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)
|
||||||
|
{
|
||||||
|
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 = s;
|
||||||
|
}
|
||||||
|
return orig;
|
||||||
|
}
|
||||||
|
|
@ -383,6 +383,9 @@
|
||||||
/* Define to 1 if you have the `strptime' function. */
|
/* Define to 1 if you have the `strptime' function. */
|
||||||
#undef HAVE_STRPTIME
|
#undef HAVE_STRPTIME
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `strsep' function. */
|
||||||
|
#undef HAVE_STRSEP
|
||||||
|
|
||||||
/* Define to 1 if `ipi_spec_dst' is a member of `struct in_pktinfo'. */
|
/* Define to 1 if `ipi_spec_dst' is a member of `struct in_pktinfo'. */
|
||||||
#undef HAVE_STRUCT_IN_PKTINFO_IPI_SPEC_DST
|
#undef HAVE_STRUCT_IN_PKTINFO_IPI_SPEC_DST
|
||||||
|
|
||||||
|
|
@ -991,6 +994,11 @@ int memcmp(const void *x, const void *y, size_t n);
|
||||||
char *ctime_r(const time_t *timep, char *buf);
|
char *ctime_r(const time_t *timep, char *buf);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef HAVE_STRSEP
|
||||||
|
#define strsep unbound_strsep
|
||||||
|
char *strsep(char **stringp, const char *delim);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef HAVE_ISBLANK
|
#ifndef HAVE_ISBLANK
|
||||||
#define isblank unbound_isblank
|
#define isblank unbound_isblank
|
||||||
int isblank(int c);
|
int isblank(int c);
|
||||||
|
|
|
||||||
14
configure
vendored
14
configure
vendored
|
|
@ -19346,6 +19346,20 @@ esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
ac_fn_c_check_func "$LINENO" "strsep" "ac_cv_func_strsep"
|
||||||
|
if test "x$ac_cv_func_strsep" = xyes; then :
|
||||||
|
$as_echo "#define HAVE_STRSEP 1" >>confdefs.h
|
||||||
|
|
||||||
|
else
|
||||||
|
case " $LIBOBJS " in
|
||||||
|
*" strsep.$ac_objext "* ) ;;
|
||||||
|
*) LIBOBJS="$LIBOBJS strsep.$ac_objext"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Check whether --enable-allsymbols was given.
|
# Check whether --enable-allsymbols was given.
|
||||||
if test "${enable_allsymbols+set}" = set; then :
|
if test "${enable_allsymbols+set}" = set; then :
|
||||||
|
|
|
||||||
|
|
@ -1175,6 +1175,7 @@ fi
|
||||||
LIBOBJ_WITHOUT_CTIME="$LIBOBJS"
|
LIBOBJ_WITHOUT_CTIME="$LIBOBJS"
|
||||||
AC_SUBST(LIBOBJ_WITHOUT_CTIME)
|
AC_SUBST(LIBOBJ_WITHOUT_CTIME)
|
||||||
AC_REPLACE_FUNCS(ctime_r)
|
AC_REPLACE_FUNCS(ctime_r)
|
||||||
|
AC_REPLACE_FUNCS(strsep)
|
||||||
|
|
||||||
AC_ARG_ENABLE(allsymbols, AC_HELP_STRING([--enable-allsymbols], [export all symbols from libunbound and link binaries to it, smaller install size but libunbound export table is polluted by internal symbols]))
|
AC_ARG_ENABLE(allsymbols, AC_HELP_STRING([--enable-allsymbols], [export all symbols from libunbound and link binaries to it, smaller install size but libunbound export table is polluted by internal symbols]))
|
||||||
case "$enable_allsymbols" in
|
case "$enable_allsymbols" in
|
||||||
|
|
@ -1404,6 +1405,11 @@ AHX_MEMCMP_BROKEN(unbound)
|
||||||
char *ctime_r(const time_t *timep, char *buf);
|
char *ctime_r(const time_t *timep, char *buf);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef HAVE_STRSEP
|
||||||
|
#define strsep unbound_strsep
|
||||||
|
char *strsep(char **stringp, const char *delim);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef HAVE_ISBLANK
|
#ifndef HAVE_ISBLANK
|
||||||
#define isblank unbound_isblank
|
#define isblank unbound_isblank
|
||||||
int isblank(int c);
|
int isblank(int c);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
31 May 2016: Wouter
|
31 May 2016: Wouter
|
||||||
- Fix windows service to be created run with limited rights, as a
|
- Fix windows service to be created run with limited rights, as a
|
||||||
network service account, from Mario Turschmann.
|
network service account, from Mario Turschmann.
|
||||||
|
- compat strsep implementation.
|
||||||
|
|
||||||
30 May 2016: Wouter
|
30 May 2016: Wouter
|
||||||
- Fix time in case answer comes from cache in ub_resolve_event().
|
- Fix time in case answer comes from cache in ub_resolve_event().
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue