diff options
author | Andrew Bartlett <abartlet@samba.org> | 2012-11-19 23:25:45 +1100 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2013-01-19 10:32:17 +0100 |
commit | dda48146a2781fe685eeb9dc5194d142ee5ca0ef (patch) | |
tree | b098ac5828b4d226227e5f286e13985d1512d0d7 | |
parent | d90b709ebb22fb40cbd46bdddd28d9ec1be7b0ce (diff) | |
download | samba-dda48146a2781fe685eeb9dc5194d142ee5ca0ef.tar.gz samba-dda48146a2781fe685eeb9dc5194d142ee5ca0ef.tar.bz2 samba-dda48146a2781fe685eeb9dc5194d142ee5ca0ef.zip |
heimdal_build: Try again to sort out the strerror_r mess
Reviewed-by: Stefan Metzmacher <metze@samba.org>
-rw-r--r-- | lib/replace/replace.c | 2 | ||||
-rw-r--r-- | lib/replace/replace.h | 3 | ||||
-rw-r--r-- | source4/heimdal_build/roken.h | 8 | ||||
-rw-r--r-- | source4/heimdal_build/wscript_build | 1 | ||||
-rwxr-xr-x | source4/heimdal_build/wscript_configure | 7 |
5 files changed, 11 insertions, 10 deletions
diff --git a/lib/replace/replace.c b/lib/replace/replace.c index 8f1315a3a5..37edb310c5 100644 --- a/lib/replace/replace.c +++ b/lib/replace/replace.c @@ -785,7 +785,7 @@ char *rep_get_current_dir_name(void) } #endif -#if !defined(HAVE_STRERROR_R) && !defined(strerror_r) +#ifndef HAVE_STRERROR_R int rep_strerror_r(int errnum, char *buf, size_t buflen) { char *s = strerror(errnum); diff --git a/lib/replace/replace.h b/lib/replace/replace.h index 62172a9a12..9774da4673 100644 --- a/lib/replace/replace.h +++ b/lib/replace/replace.h @@ -570,7 +570,8 @@ ssize_t rep_pwrite(int __fd, const void *__buf, size_t __nbytes, off_t __offset) char *rep_get_current_dir_name(void); #endif -#if !defined(HAVE_STRERROR_R) && !defined(strerror_r) +#ifndef HAVE_STRERROR_R +#define strerror_r rep_strerror_r int rep_strerror_r(int errnum, char *buf, size_t buflen); #endif diff --git a/source4/heimdal_build/roken.h b/source4/heimdal_build/roken.h index b762545535..9752c04a74 100644 --- a/source4/heimdal_build/roken.h +++ b/source4/heimdal_build/roken.h @@ -123,14 +123,6 @@ #define HAVE_SETEUID #endif -/* force the use of the libreplace strerror_r */ -#ifndef HAVE_STRERROR_R -#define HAVE_STRERROR_R -#endif -#ifndef STRERROR_R_PROTO_COMPATIBLE -#define STRERROR_R_PROTO_COMPATIBLE -#endif - #ifndef HAVE_DIRFD #ifdef HAVE_DIR_DD_FD #define dirfd(x) ((x)->dd_fd) diff --git a/source4/heimdal_build/wscript_build b/source4/heimdal_build/wscript_build index f4837ace1b..f4471159eb 100644 --- a/source4/heimdal_build/wscript_build +++ b/source4/heimdal_build/wscript_build @@ -408,6 +408,7 @@ if not bld.CONFIG_SET('USING_SYSTEM_ROKEN'): lib/roken/resolve.c lib/roken/socket.c lib/roken/roken_gethostby.c + lib/roken/strerror_r.c ''' HEIMDAL_LIBRARY('roken', diff --git a/source4/heimdal_build/wscript_configure b/source4/heimdal_build/wscript_configure index 168be6d0e4..2bb465a1fd 100755 --- a/source4/heimdal_build/wscript_configure +++ b/source4/heimdal_build/wscript_configure @@ -28,6 +28,13 @@ conf.CHECK_FUNCS('''atexit cgetent getprogname setprogname gethostname strptime strsep strsep_copy strtok_r strupr swab umask uname unsetenv closefrom err warn errx warnx flock writev''') +if conf.CHECK_FUNCS('strerror_r'): + # Check if strerror_r is BSD compatible (default GNU implementation is not what Heimdal expects) + conf.CHECK_CODE('int strerror_r(int errnum, char *buf, size_t buflen);', + 'STRERROR_R_PROTO_COMPATIBLE', + headers='string.h', addmain=False, link=False, + msg="Checking for XSI (rather than GNU) prototype for strerror_r") + conf.CHECK_FUNCS_IN('hstrerror', 'resolv socket nsl', checklibc=True) conf.CHECK_FUNCS_IN('''getnameinfo sendmsg socket getipnodebyname gethostent gethostent_r sethostent endhostent getipnodebyaddr freehostent gethostbyname |