From: Guy Harris Date: Mon, 20 Mar 2017 22:20:51 +0000 (-0700) Subject: Define more feature test macros and do so in a separate header file. X-Git-Tag: libpcap-1.9-bp~832 X-Git-Url: https://git.tcpdump.org/libpcap/commitdiff_plain/9e96bd4cf18a1e56867ac43b4da927939ceb7680?ds=sidebyside 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. --- 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 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 - #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 // for libpcap/WinPcap calls #include // for the errno variable #include // 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 +#include #include #include // for PCAP_ERRBUF_SIZE -#include "portability.h" // this includes +#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 // for the errno variable +#include // for strtok, etc #include // for malloc(), free(), ... #include // for PCAP_ERRBUF_SIZE #include // for signal() #include -#include "portability.h" // this includes +#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 #include /* for the errno variable */ #include /* for the stderr file */ #include /* for malloc() and free() */ @@ -59,7 +62,7 @@ #define INT_MAX 2147483647 #endif -#include "portability.h" /* this includes */ +#include "portability.h" #include "sockutils.h" #ifdef _WIN32