From 686221eae28ff58fb048fdc7132e1413dedb6eb9 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 29 Mar 2010 20:53:16 +1100 Subject: s4-waf: use the libreplace strerror_r if needed --- lib/replace/replace.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'lib/replace/replace.c') diff --git a/lib/replace/replace.c b/lib/replace/replace.c index 6a325400f4..12716ea6d3 100644 --- a/lib/replace/replace.c +++ b/lib/replace/replace.c @@ -748,10 +748,15 @@ char *rep_get_current_dir_name(void) } #endif -#ifndef HAVE_STRERROR_R -char *rep_strerror_r(int errnum, char *buf, size_t buflen) +#if !defined(HAVE_STRERROR_R) || !defined(STRERROR_R_PROTO_COMPATIBLE) +int rep_strerror_r(int errnum, char *buf, size_t buflen) { - strncpy(buf, strerror(errnum), buflen); - return buf; + char *s = strerror(errnum); + if (strlen(s)+1 > buflen) { + errno = ERANGE; + return -1; + } + strncpy(buf, s, buflen); + return 0; } #endif -- cgit