mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-15 22:38:52 -04:00
Use strnstr implementation from FreeBSD if not provided by OS
(cherry picked from commit 5f07fe8cbb)
This commit is contained in:
parent
5568aca5a5
commit
9bb5157adf
6 changed files with 41 additions and 2 deletions
|
|
@ -429,6 +429,9 @@
|
|||
/* Define to 1 if you have the `strlcpy' function. */
|
||||
#undef HAVE_STRLCPY
|
||||
|
||||
/* Define to 1 if you have the `strnstr' function. */
|
||||
#undef HAVE_STRNSTR
|
||||
|
||||
/* Define to 1 if you have the `sysconf' function. */
|
||||
#undef HAVE_SYSCONF
|
||||
|
||||
|
|
|
|||
2
configure
vendored
2
configure
vendored
|
|
@ -19633,7 +19633,7 @@ fi
|
|||
#
|
||||
# Check for some other useful functions that are not ever-present.
|
||||
#
|
||||
for ac_func in strlcpy strlcat
|
||||
for ac_func in strlcpy strlcat strnstr
|
||||
do :
|
||||
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
|
||||
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
|
||||
|
|
|
|||
|
|
@ -1701,7 +1701,7 @@ AS_IF([test "$enable_tcp_fastopen" = "yes"],
|
|||
#
|
||||
# Check for some other useful functions that are not ever-present.
|
||||
#
|
||||
AC_CHECK_FUNCS([strlcpy strlcat])
|
||||
AC_CHECK_FUNCS([strlcpy strlcat strnstr])
|
||||
|
||||
AC_SUBST(READLINE_LIB)
|
||||
|
||||
|
|
|
|||
|
|
@ -32,6 +32,11 @@ size_t
|
|||
strlcat(char *dst, const char *src, size_t size);
|
||||
#endif /* if !defined(HAVE_STRLCAT) */
|
||||
|
||||
#if !defined(HAVE_STRNSTR)
|
||||
char *
|
||||
strnstr(const char *s, const char *find, size_t slen);
|
||||
#endif /* if !defined(HAVE_STRNSTR) */
|
||||
|
||||
int
|
||||
isc_string_strerror_r(int errnum, char *buf, size_t buflen);
|
||||
|
||||
|
|
|
|||
|
|
@ -12,9 +12,15 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*
|
||||
* Copyright (c) 2001 Mike Barcroft <mike@FreeBSD.org>
|
||||
* Copyright (c) 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Chris Torek.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
|
|
@ -48,6 +54,7 @@
|
|||
#include <string.h>
|
||||
|
||||
#include <isc/string.h> /* IWYU pragma: keep */
|
||||
#include <isc/util.h>
|
||||
|
||||
#if !defined(HAVE_STRLCPY)
|
||||
size_t
|
||||
|
|
@ -109,6 +116,29 @@ strlcat(char *dst, const char *src, size_t size) {
|
|||
}
|
||||
#endif /* !defined(HAVE_STRLCAT) */
|
||||
|
||||
#if !defined(HAVE_STRNSTR)
|
||||
char *
|
||||
strnstr(const char *s, const char *find, size_t slen) {
|
||||
char c, sc, *r;
|
||||
size_t len;
|
||||
|
||||
if ((c = *find++) != '\0') {
|
||||
len = strlen(find);
|
||||
do {
|
||||
do {
|
||||
if (slen-- < 1 || (sc = *s++) == '\0')
|
||||
return (NULL);
|
||||
} while (sc != c);
|
||||
if (len > slen)
|
||||
return (NULL);
|
||||
} while (strncmp(s, find, len) != 0);
|
||||
s--;
|
||||
}
|
||||
DE_CONST(s, r);
|
||||
return (r);
|
||||
}
|
||||
#endif
|
||||
|
||||
int
|
||||
isc_string_strerror_r(int errnum, char *buf, size_t buflen) {
|
||||
#if defined(_WIN32) || defined(_WIN64)
|
||||
|
|
|
|||
|
|
@ -778,6 +778,7 @@ pkcs_C_VerifyUpdate
|
|||
@END PKCS11
|
||||
strlcat
|
||||
strlcpy
|
||||
strnstr
|
||||
syslog
|
||||
|
||||
@IF NOLONGER
|
||||
|
|
|
|||
Loading…
Reference in a new issue