On Fri, 17 Jun 2005, Patrice wrote:
> / int getsockname(/
> / int socket,/
> / struct sockaddr *address,/
> / socklen_t *address_len );/
OK, so nowadays it does want a socklen_t for the last argument.
> / [Tru64 UNIX] The following definition of the getsockname()
> function does/
> / not conform to current standards and is supported only for
> backward compa-/
> / tibility (see standards(5)):/
>
> / #include <sys/socket.h>/
>
> / int getsockname(/
> / int socket,/
> / struct sockaddr *address,/
> / int *address_len );/
That's the old format that Exim was trying to be compatible with.
> I made the modification you told me but the compilation stop :
>
> cc -c -O -I. -I/usr/local/include/openssl/ -I/usr/local/include
> daemon.c
> cc: Error: daemon.c, line 145: In this declaration, "socklen_t" must
> specify a type. (badparsedecl)
> EXIM_SOCKLEN_T ifsize = sizeof(interface_sockaddr);
> ^
Hmm. It wants socklen_t (according to the man page), and then it doesn't
recognize socklen_t. That's some kind of screw up in the include files.
> Do you have another idea for my warnings ?
Presumably, on your system, the definition of socklen_t is some include
file that is not the same as on other systems. On Linux, for example, it
seems to be in /usr/include/unistd.h, whereas on Solaris it seems to be
in /usr/include/sys/socket.h. Both of these are #included by Exim.
So I guess you need to find where this is in Tru64. However, your man
page just says sys/socket.h, so I'm not sure what is actually going on.
Perhaps it is worth trying a completely fresh start. Get a new Exim
tarball, delete the line
#define EXIM_SOCKLEN_T size_t
from the file OS/os.h-OSF1, and then try "make" (after setting up
Local/Makefile, of course).
--
Philip Hazel University of Cambridge Computing Service,
ph10@??? Cambridge, England. Phone: +44 1223 334714.
Get the Exim 4 book: http://www.uit.co.uk/exim-book