Use strlcat from libc instead of custom one. This resolves issue #29

Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
(cherry picked from commit 26628b93ba)
r14.1.x
Michele Calgaro 6 months ago
parent 21f900e2b6
commit b6bc7d3ae3
Signed by: MicheleC
GPG Key ID: 2A75B7CA8ADED5CF

@ -97,3 +97,6 @@ elseif( ${CMAKE_SYSTEM_PROCESSOR} MATCHES sparc* )
set( ARCH_SPARC 1 ) set( ARCH_SPARC 1 )
endif() endif()
### check for strlcat
check_symbol_exists( strlcat string.h HAVE_STRLCAT_PROTO )

@ -22,3 +22,15 @@
#cmakedefine ALPHA 1 #cmakedefine ALPHA 1
#cmakedefine PPC 1 #cmakedefine PPC 1
#cmakedefine SPARC 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

@ -187,41 +187,6 @@ void ac_mmtest()
} else printf(" C\n"); } 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) char *ac_mmstr(int flag, int mode)
{ {
static char mmstr[64]=""; static char mmstr[64]="";

Loading…
Cancel
Save