----- Forwarded message from "Gerrit P. Haase" -----
Date: Mon, 25 Oct 2004 13:46:43 +0200
From: "Gerrit P. Haase" <freeweb@nyckelpiga.de>
To: cygwin@cygwin.com
Cc: autoconf@gnu.org
Subject: Re: [bugreport] resolv.h test fails (was: Re: minires-devel-0.97-1:
resolv.h fails)
Gerrit wrote:
Pierre A. Humblet wrote:
At 01:03 PM 10/18/2004 +0200, Corinna Vinschen wrote:
On Oct 18 03:28, Reini Urban wrote:
minires-devel-0.97-1:
#include <resolv.h> fails suddenly.
Apparently /usr/include/resolv.h misses the definition for
sockaddr_in, which is defined in <cygwin/in.h>
Have no clue why it suddenly fails. Anyone else?
These headers didn't change for years...
Which file is supposed to include cygwin/in.h? I found nothing.
netinet/in.h
Its an upstream issue. According to the resolver man page,
netinet/in.h should be included before resolv.h.
For example
<http://www.mcsr.olemiss.edu/cgi-bin/man-cgi?resolver+3>
SYNOPSIS
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/nameser.h>
#include <resolv.h>
I think this is correct. What is buggy is the autoconf test which is
just including resolv.h and not netinet/in.h to compile the test exe.
This applies to the default test when calling
AC_CHECK_HEADERS([resolv.h])
Workaround is to use s.th. like this in configure.ac:
AC_CHECK_HEADERS([arpa/nameser.h netinet/in.h sys/socket.h sys/types.h])
AC_CHECK_HEADERS([resolv.h], [], [],
[[#if HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#ifdef HAVE_NETINET_IN_H
# include <netinet/in.h> /* inet_ functions / structs */
#endif
#ifdef HAVE_ARPA_NAMESER_H
# include <arpa/nameser.h> /* DNS HEADER struct */
#endif
#ifdef HAVE_SYS_SOCKET_H
# include <sys/socket.h> /* DNS HEADER struct */
#endif
]])
Anyway, there should be a macro which provides this functionity.