Skip to content

Commit 45c46b4

Browse files
committed
Fix dns.c on FreeBSD
The include directive of `netinet/in.h` must be before `resolv.h` on FreeBSD, otherwise, the following errors will occur: ``` In file included from dns.c:265: /usr/include/resolv.h:159:14: error: array has incomplete element type 'struct sockaddr_in' nsaddr_list[MAXNS]; /*%< address of name server */ ^ /usr/include/resolv.h:158:9: note: forward declaration of 'struct sockaddr_in' struct sockaddr_in ^ /usr/include/resolv.h:173:18: error: field has incomplete type 'struct in_addr' struct in_addr addr; ^ /usr/include/resolv.h:173:10: note: forward declaration of 'struct in_addr' struct in_addr addr; ^ /usr/include/resolv.h:198:21: error: field has incomplete type 'struct sockaddr_in' struct sockaddr_in sin; ^ /usr/include/resolv.h:158:9: note: forward declaration of 'struct sockaddr_in' struct sockaddr_in ^ 3 errors generated. ``` The reason is that the `resolv.h` on FreeBSD is not yet self-contained, see this bug report: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=182466 This fix was committed with the FreeBSD port `net/R-cran-pingr` in https://cgit.freebsd.org/ports/commit/?id=fce80f530301d0079d84bc4b818ba957ad29617b.
1 parent bfe03f4 commit 45c46b4

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

src/dns.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,8 +262,8 @@ SEXP r_nsl(SEXP hostname, SEXP server, SEXP class, SEXP type) {
262262

263263
#else
264264

265+
#include <netinet/in.h> // This should be before resolv.h for FreeBSD, see #19
265266
#include <resolv.h>
266-
#include <netinet/in.h>
267267
#include <arpa/inet.h>
268268
#include <sys/types.h>
269269
#include <arpa/nameser.h>

0 commit comments

Comments
 (0)