From 26628b93baee1eea9528e9ffb68eb72b9c2d5c6d Mon Sep 17 00:00:00 2001 From: Michele Calgaro Date: Wed, 15 May 2024 15:55:28 +0900 Subject: [PATCH] Use strlcat from libc instead of custom one. This resolves issue #29 Signed-off-by: Michele Calgaro --- ConfigureChecks.cmake | 3 +++ config.h.cmake | 12 ++++++++++++ k9vamps/cputest.cpp | 35 ----------------------------------- 3 files changed, 15 insertions(+), 35 deletions(-) diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake index 3a9bbd2..770673d 100644 --- a/ConfigureChecks.cmake +++ b/ConfigureChecks.cmake @@ -97,3 +97,6 @@ elseif( ${CMAKE_SYSTEM_PROCESSOR} MATCHES sparc* ) set( ARCH_SPARC 1 ) endif() + +### check for strlcat +check_symbol_exists( strlcat string.h HAVE_STRLCAT_PROTO ) diff --git a/config.h.cmake b/config.h.cmake index 5a397e7..0b26cdf 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -22,3 +22,15 @@ #cmakedefine ALPHA 1 #cmakedefine PPC 1 #cmakedefine SPARC 1 + +/* Define strlcat prototype if needed */ +#cmakedefine HAVE_STRLCAT_PROTO +#if !defined(HAVE_STRLCAT_PROTO) + #ifdef __cplusplus + extern "C" { + #endif + unsigned long strlcat(char*, const char*, unsigned long); + #ifdef __cplusplus + } + #endif +#endif diff --git a/k9vamps/cputest.cpp b/k9vamps/cputest.cpp index a7cd686..69b420c 100644 --- a/k9vamps/cputest.cpp +++ b/k9vamps/cputest.cpp @@ -187,41 +187,6 @@ void ac_mmtest() } else printf(" C\n"); } -/* - * Appends src to string dst of size siz (unlike strncat, siz is the - * full size of dst, not space left). At most siz-1 characters - * will be copied. Always NUL terminates (unless siz <= strlen(dst)). - * Returns strlen(src) + MIN(siz, strlen(initial dst)). - * If retval >= siz, truncation occurred. - */ -size_t -strlcat(char *dst, const char *src, size_t siz) -{ - char *d = dst; - const char *s = src; - size_t n = siz; - size_t dlen; - - /* Find the end of dst and adjust bytes left but don't go past end */ - while (n-- != 0 && *d != '\0') - d++; - dlen = d - dst; - n = siz - dlen; - - if (n == 0) - return(dlen + strlen(s)); - while (*s != '\0') { - if (n != 1) { - *d++ = *s; - n--; - } - s++; - } - *d = '\0'; - - return(dlen + (s - src)); /* count does not include NUL */ -} - char *ac_mmstr(int flag, int mode) { static char mmstr[64]="";