Skip to content

Commit 90f2006

Browse files
committed
Fix build 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 90f2006

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-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 needs to 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>

src/rping.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ void usleep(__int64 usec) {
4040
# define WINCLEANUP()
4141
#endif
4242

43+
#ifdef __FreeBSD__
44+
#include <netinet/in.h> // This needs to be before resolv.h for FreeBSD, see #19
45+
#endif
46+
4347
#include <sys/types.h>
4448
#include <sys/time.h>
4549
#include <errno.h>

0 commit comments

Comments
 (0)