aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2017-03-20 15:20:51 -0700
committerGuy Harris <guy@alum.mit.edu>2017-03-20 15:20:51 -0700
commit9e96bd4cf18a1e56867ac43b4da927939ceb7680 (patch)
treeb617c71baf7c565d02aff1983e7a8042ce62a87e
parentb26a3719eb69f398f9af476bcf2291be7320543e (diff)
Define more feature test macros and do so in a separate header file.
On Linux, define _GNU_SOURCE to get as much stuff declared as possible. Define the feature test macros in ftmacros.h, and include that befoe including any header files other than config.h.
-rw-r--r--Makefile.in1
-rw-r--r--ftmacros.h58
-rw-r--r--portability.h18
-rwxr-xr-xrpcapd/daemon.c2
-rwxr-xr-xrpcapd/fileconf.c5
-rwxr-xr-xrpcapd/rpcapd.c5
-rw-r--r--sockutils.c5
7 files changed, 73 insertions, 21 deletions
diff --git a/Makefile.in b/Makefile.in
index cc383fcc..6ed8c015 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -119,6 +119,7 @@ HDR = $(PUBHDR) \
atmuni31.h \
ethertype.h \
extract.h \
+ ftmacros.h \
funcattrs.h \
gencode.h \
ieee80211.h \
diff --git a/ftmacros.h b/ftmacros.h
new file mode 100644
index 00000000..19b9fb43
--- /dev/null
+++ b/ftmacros.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 1994, 1995, 1996
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the Computer Systems
+ * Engineering Group at Lawrence Berkeley Laboratory.
+ * 4. Neither the name of the University nor of the Laboratory may be used
+ * to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef ftmacros_h
+#define ftmacros_h
+
+/*
+ * Define some feature test macros to make sure that everything we want
+ * to be declared gets declared.
+ *
+ * On some UN*Xes we need to force strtok_r() to be declared.
+ * We do *NOT* want to define _POSIX_C_SOURCE, as that tends
+ * to make non-POSIX APIs that we use unavailable.
+ * XXX - is there no portable way to say "please pollute the
+ * namespace to the maximum extent possible"?
+ *
+ * We also want to force crypt() to be declared on systems that use
+ * GNU libc, such as most Linux distributions.
+ */
+#if defined(sun) || defined(__sun)
+ #define __EXTENSIONS__
+#elif defined(_hpux) || defined(hpux) || defined(__hpux)
+ #define _REENTRANT
+#elif defined(__linux__) || defined(linux) || defined(__linux)
+ #define _GNU_SOURCE
+#endif
+
+#endif
diff --git a/portability.h b/portability.h
index bcaabae3..179ecd92 100644
--- a/portability.h
+++ b/portability.h
@@ -41,24 +41,6 @@
#include "funcattrs.h"
-/*
- * We include <string.h> ourselves, to make sure strtok_r() gets
- * declared if we have it.
- *
- * On some UN*Xes we need to force it to be declared.
- * We do *NOT* want to define _POSIX_C_SOURCE, as that tends
- * to make non-POSIX APIs that we use unavailable.
- * XXX - is there no portable way to say "please pollute the
- * namespace to the maximum extent possible"?
- */
-#if defined(sun) || defined(__sun)
- #define __EXTENSIONS__
-#elif defined(_hpux) || defined(hpux) || defined(__hpux)
- #define _REENTRANT
-#endif
-
-#include <string.h>
-
#ifdef __cplusplus
extern "C" {
#endif
diff --git a/rpcapd/daemon.c b/rpcapd/daemon.c
index 6a9da4e4..ad43682c 100755
--- a/rpcapd/daemon.c
+++ b/rpcapd/daemon.c
@@ -33,6 +33,8 @@
#include "config.h"
#endif
+#include "ftmacros.h"
+
#include <pcap.h> // for libpcap/WinPcap calls
#include <errno.h> // for the errno variable
#include <stdlib.h> // for malloc(), free(), ...
diff --git a/rpcapd/fileconf.c b/rpcapd/fileconf.c
index 5578d10a..701dd85c 100755
--- a/rpcapd/fileconf.c
+++ b/rpcapd/fileconf.c
@@ -35,11 +35,14 @@
#include "config.h"
#endif
+#include "ftmacros.h"
+
#include <stdio.h>
+#include <string.h>
#include <signal.h>
#include <pcap.h> // for PCAP_ERRBUF_SIZE
-#include "portability.h" // this includes <string.h>
+#include "portability.h"
#include "rpcapd.h"
#include "fileconf.h"
#include "sockutils.h" // for SOCK_ASSERT
diff --git a/rpcapd/rpcapd.c b/rpcapd/rpcapd.c
index a33ca6d2..d00204ab 100755
--- a/rpcapd/rpcapd.c
+++ b/rpcapd/rpcapd.c
@@ -38,13 +38,16 @@
#define USE_THREADS // threads vs. subprocesses
#endif
+#include "ftmacros.h"
+
#include <errno.h> // for the errno variable
+#include <string.h> // for strtok, etc
#include <stdlib.h> // for malloc(), free(), ...
#include <pcap.h> // for PCAP_ERRBUF_SIZE
#include <signal.h> // for signal()
#include <pthread.h>
-#include "portability.h" // this includes <string.h>
+#include "portability.h"
#include "rpcapd.h"
#include "fileconf.h" // for the configuration file management
#include "sockutils.h" // for socket calls
diff --git a/sockutils.c b/sockutils.c
index b6a7299c..33e2cc6c 100644
--- a/sockutils.c
+++ b/sockutils.c
@@ -50,6 +50,9 @@
* ways.
*/
+#include "ftmacros.h"
+
+#include <string.h>
#include <errno.h> /* for the errno variable */
#include <stdio.h> /* for the stderr file */
#include <stdlib.h> /* for malloc() and free() */
@@ -59,7 +62,7 @@
#define INT_MAX 2147483647
#endif
-#include "portability.h" /* this includes <string.h> */
+#include "portability.h"
#include "sockutils.h"
#ifdef _WIN32