1. [src/exitcode.h] IBM C compiler doesn't like trailing commas after last enum constant. 2. [src/clinet.c] Define h_errno for HP-UX 10.20. 3. [src/distcc.h] Forward declaration of 'struct sockaddr' gives problems with IBM C compiler. And, it's not needed. 4. [src/serve.c] Forgot to include <sys/socket.h> Needed on HP-UX 10.20, 11.00, 11i. 5. [src/types.h] Remove definition of socklen_t if unavailable. We not declare it correctly via autoconf. 6. [configure.ac] a) Better detection for socklen_t. This code is taken from curl but we submitted it so we own the copyright. Feel free to use as you please. b) Existence of mmap() doesn't imply MAP_FAILED exists. So, test and define it if unavailable. c) Replace the AC_CHECK_FUNCS(connect) mess.
These patches were tested on: AIX 4.3.2, 5.1; HP-UX 10.20, 11.00, 11i; IRIX 6.5; Redhat Linux 7.1, 9; Solaris 2.5.1, 2.6, 7, 8, 9; Tru64 UNIX 4.0D, 5.1 -- albert chin ([EMAIL PROTECTED]) -- snip snip --- src/exitcode.h.orig 2004-02-18 16:49:13.000000000 -0600 +++ src/exitcode.h 2004-02-18 16:49:19.000000000 -0600 @@ -53,7 +53,7 @@ EXIT_BUSY = 114, /**< In use by another process. */ EXIT_NO_SUCH_FILE = 115, EXIT_NO_HOSTS = 116, - EXIT_GONE = 117, /**< No longer relevant */ + EXIT_GONE = 117 /**< No longer relevant */ }; --- src/clinet.c.orig 2004-02-18 16:50:35.000000000 -0600 +++ src/clinet.c 2004-02-18 16:50:56.000000000 -0600 @@ -54,6 +54,10 @@ #include "util.h" #include "netutil.h" +#ifndef h_errno +extern int h_errno; +#endif + /** * @file --- src/distcc.h.orig 2004-02-18 16:48:18.000000000 -0600 +++ src/distcc.h 2004-02-18 16:48:27.000000000 -0600 @@ -142,8 +142,6 @@ #endif -struct sockaddr; - /* If --enable-rfc2553 was given, then we will try to enable compile-time IPv6 * support. This means we must have a sockaddr_storage large enough to hold * IPv6 addresses. If not, we'll just use a plain sockaddr, which is more --- src/serve.c.orig 2004-02-18 17:11:25.000000000 -0600 +++ src/serve.c 2004-02-18 17:11:34.000000000 -0600 @@ -69,6 +69,7 @@ # include <sys/signal.h> #endif /* HAVE_SYS_SIGNAL_H */ #include <sys/param.h> +#include <sys/socket.h> #include "distcc.h" #include "trace.h" --- src/types.h.orig 2004-02-18 16:54:07.000000000 -0600 +++ src/types.h 2004-02-18 16:54:13.000000000 -0600 @@ -20,11 +20,6 @@ * USA */ -#ifndef HAVE_SOCKLEN_T -#define HAVE_SOCKLEN_T -typedef size_t socklen_t; -#endif - #ifndef HAVE_IN_PORT_T #define HAVE_IN_PORT_T typedef int in_port_t; --- configure.ac.orig 2004-02-18 16:54:41.000000000 -0600 +++ configure.ac 2004-02-18 17:14:48.000000000 -0600 @@ -42,9 +42,41 @@ dnl Run the check for --with-docdir DISTCC_WITH_DOCDIR -# TODO: Check for socklen_t, and do something appropiate on systems -# that don't have it. It could be size_t or int. I'm not sure how -# we're supposed to tell. +# Check for socklen_t, and do something appropiate on systems +# that don't have it. +AC_CHECK_TYPE([socklen_t], ,[ + AC_MSG_CHECKING([for socklen_t equivalent]) + AC_CACHE_VAL([dcc_cv_socklen_t_equiv], + [ + # Systems have either "struct sockaddr *" or + # "void *" as the second argument to getpeername + dcc_cv_socklen_t_equiv= + for arg2 in "struct sockaddr" void; do + for t in int size_t unsigned long "unsigned long"; do + AC_TRY_COMPILE([ +#include <sys/types.h> +#include <sys/socket.h> + +int getpeername (int, $arg2 *, $t *); +],[ +$t len; +getpeername(0,0,&len); +],[ + dcc_cv_socklen_t_equiv="$t" + break +]) + done + done + + if test "x$dcc_cv_socklen_t_equiv" = x; then + AC_MSG_ERROR([Cannot find a type to use in place of socklen_t]) + fi + ]) + AC_MSG_RESULT($dcc_cv_socklen_t_equiv) + AC_DEFINE_UNQUOTED(socklen_t, $dcc_cv_socklen_t_equiv, + [type to use in place of socklen_t if not defined])], + [#include <sys/types.h> +#include <sys/socket.h>]) # TODO: Handle program transform rules by autoconf. @@ -198,7 +230,7 @@ ###################################################################### dnl Checks for types -AC_CHECK_TYPES([sa_family_t, socklen_t, in_port_t, in_addr_t], , , +AC_CHECK_TYPES([sa_family_t, in_port_t, in_addr_t], , , [ #if HAVE_SYS_TYPES_H # include <sys/types.h> @@ -225,36 +257,10 @@ # libsocket.so which has a bad implementation of gethostbyname (it # only looks in /etc/hosts), so we only look for -lsocket if we need # it. -AC_CHECK_FUNCS(connect) -if test x"$ac_cv_func_connect" = x"no"; then - case "$LIBS" in - *-lnsl*) ;; - *) AC_CHECK_LIB(nsl_s, printf) ;; - esac - case "$LIBS" in - *-lnsl*) ;; - *) AC_CHECK_LIB(nsl, printf) ;; - esac - case "$LIBS" in - *-lsocket*) ;; - *) AC_CHECK_LIB(socket, connect) ;; - esac - case "$LIBS" in - *-linet*) ;; - *) AC_CHECK_LIB(inet, connect) ;; - esac - dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value - dnl has been cached. - if test x"$ac_cv_lib_socket_connect" = x"yes" || - test x"$ac_cv_lib_inet_connect" = x"yes"; then - # ac_cv_func_connect=yes - # don't! it would cause AC_CHECK_FUNC to succeed next time configure is run - AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()]) - fi -fi - -AC_CHECK_LIB(resolv, hstrerror, , , [-lnsl -lsocket]) -AC_CHECK_LIB(resolv, inet_aton, , , [-lnsl -lsocket]) +AC_SEARCH_LIBS(gethostent, [nsl]) +AC_SEARCH_LIBS(setsockopt, [socket]) +AC_SEARCH_LIBS(hstrerror, [resolv]) +AC_SEARCH_LIBS(inet_aton, [resolv]) if test x"$with_included_popt" != x"yes" && test x"$with_included_popt" != xno then @@ -293,6 +299,22 @@ AC_CHECK_DECLS([snprintf, vsnprintf, vasprintf, asprintf, strndup]) +AC_MSG_CHECKING([if mmap() supports MAP_FAILED]) +AC_TRY_COMPILE([ +#ifdef HAVE_SYS_MMAN_H +# include <sys/mman.h> +#endif],[ +#ifdef HAVE_MMAP +if (mmap (NULL, 0, 0, 0, 0, 0) == MAP_FAILED) + return 0; +#else +#error mmap unavailable +#endif], ,[ + AC_DEFINE([MAP_FAILED], [(void *)-1L], + [Define if MAP_FAILED constant not available]) +]) +AC_MSG_RESULT() + dnl dnl Test if the preprocessor understand vararg macros __ distcc mailing list http://distcc.samba.org/ To unsubscribe or change options: http://lists.samba.org/mailman/listinfo/distcc