diff --git a/src/util/CMakeLists.txt b/src/util/CMakeLists.txt index e114e3c94..d021ada72 100644 --- a/src/util/CMakeLists.txt +++ b/src/util/CMakeLists.txt @@ -3,6 +3,7 @@ project(util C) SET(_TEST_FILES attrib.test.c base36.test.c +bsdstring.test.c # crmessage.test.c # dice.test.c # event.test.c @@ -21,7 +22,6 @@ password.test.c # resolve.test.c rng.test.c strings.test.c -bsdstring.test.c functions.test.c log.test.c # translation.test.c @@ -60,11 +60,6 @@ variant.c xml.c ) -IF(HAVE_BSDSTRING) - SET (_TEST_FILES ${_TEST_FILES} bsdstring.test.c) - SET (_FILES ${_FILES} bsdstring.c) -ENDIF(HAVE_BSDSTRING) - FOREACH(_FILE ${_FILES}) LIST(APPEND _SOURCES ${PROJECT_NAME}/${_FILE}) ENDFOREACH(_FILE) diff --git a/src/util/bsdstring.c b/src/util/bsdstring.c index 1ac1246fa..f4499465b 100644 --- a/src/util/bsdstring.c +++ b/src/util/bsdstring.c @@ -33,6 +33,7 @@ int wrptr(char **ptr, size_t * size, int result) return ERANGE; } +#ifndef HAVE_BSDSTRING size_t strlcpy(char *dst, const char *src, size_t siz) { /* copied from OpenBSD source code */ register char *d = dst; @@ -58,21 +59,6 @@ size_t strlcpy(char *dst, const char *src, size_t siz) return (s - src - 1); /* count does not include NUL */ } -char * strlcpy_w(char *dst, const char *src, size_t *siz, const char *err, const char *file, int line) -{ - size_t bytes = strlcpy(dst, src, *siz); - char * buf = dst; - assert(bytes <= INT_MAX); - if (wrptr(&buf, siz, (int)bytes) != 0) { - if (err) { - log_warning("%s: static buffer too small in %s:%d\n", err, file, line); - } else { - log_warning("static buffer too small in %s:%d\n", file, line); - } - } - return buf; -} - size_t strlcat(char *dst, const char *src, size_t siz) { register char *d = dst; @@ -99,3 +85,19 @@ size_t strlcat(char *dst, const char *src, size_t siz) return (dlen + (s - src)); /* count does not include NUL */ } +#endif + +char * strlcpy_w(char *dst, const char *src, size_t *siz, const char *err, const char *file, int line) +{ + size_t bytes = strlcpy(dst, src, *siz); + char * buf = dst; + assert(bytes <= INT_MAX); + if (wrptr(&buf, siz, (int)bytes) != 0) { + if (err) { + log_warning("%s: static buffer too small in %s:%d\n", err, file, line); + } else { + log_warning("static buffer too small in %s:%d\n", file, line); + } + } + return buf; +} diff --git a/src/util/bsdstring.h b/src/util/bsdstring.h index 463a043c8..77c1b94ed 100644 --- a/src/util/bsdstring.h +++ b/src/util/bsdstring.h @@ -2,27 +2,17 @@ #define UTIL_BSDSTRING_H #include -int wrptr(char **ptr, size_t * size, int bytes); -#undef HAVE_STRLCAT -#undef HAVE_STRLCPY -#undef HAVE_SLPRINTF -#ifdef HAVE_BSDSTRING -#define HAVE_STRLCAT -#define HAVE_STRLCPY +#ifndef HAVE_BSDSTRING +size_t strlcpy(char *dst, const char *src, size_t siz); +size_t strlcat(char *dst, const char *src, size_t siz); #else #include #endif -#ifndef HAVE_STRLCPY -size_t strlcpy(char *dst, const char *src, size_t siz); -#endif +int wrptr(char **ptr, size_t * size, int bytes); char * strlcpy_w(char *dst, const char *src, size_t *siz, const char *err, const char *file, int line); -#ifndef HAVE_STRLCAT -size_t strlcat(char *dst, const char *src, size_t siz); -#endif - #define WARN_STATIC_BUFFER_EX(foo) log_warning("%s: static buffer too small in %s:%d\n", (foo), __FILE__, __LINE__) #define WARN_STATIC_BUFFER() log_warning("static buffer too small in %s:%d\n", __FILE__, __LINE__) #define INFO_STATIC_BUFFER() log_info("static buffer too small in %s:%d\n", __FILE__, __LINE__)