1*ed775ee7SAntonio Huete Jimenez /* 2*ed775ee7SAntonio Huete Jimenez * Copyright (c) 1994, 1995, 1996 3*ed775ee7SAntonio Huete Jimenez * The Regents of the University of California. All rights reserved. 4*ed775ee7SAntonio Huete Jimenez * 5*ed775ee7SAntonio Huete Jimenez * Redistribution and use in source and binary forms, with or without 6*ed775ee7SAntonio Huete Jimenez * modification, are permitted provided that the following conditions 7*ed775ee7SAntonio Huete Jimenez * are met: 8*ed775ee7SAntonio Huete Jimenez * 1. Redistributions of source code must retain the above copyright 9*ed775ee7SAntonio Huete Jimenez * notice, this list of conditions and the following disclaimer. 10*ed775ee7SAntonio Huete Jimenez * 2. Redistributions in binary form must reproduce the above copyright 11*ed775ee7SAntonio Huete Jimenez * notice, this list of conditions and the following disclaimer in the 12*ed775ee7SAntonio Huete Jimenez * documentation and/or other materials provided with the distribution. 13*ed775ee7SAntonio Huete Jimenez * 3. All advertising materials mentioning features or use of this software 14*ed775ee7SAntonio Huete Jimenez * must display the following acknowledgement: 15*ed775ee7SAntonio Huete Jimenez * This product includes software developed by the Computer Systems 16*ed775ee7SAntonio Huete Jimenez * Engineering Group at Lawrence Berkeley Laboratory. 17*ed775ee7SAntonio Huete Jimenez * 4. Neither the name of the University nor of the Laboratory may be used 18*ed775ee7SAntonio Huete Jimenez * to endorse or promote products derived from this software without 19*ed775ee7SAntonio Huete Jimenez * specific prior written permission. 20*ed775ee7SAntonio Huete Jimenez * 21*ed775ee7SAntonio Huete Jimenez * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 22*ed775ee7SAntonio Huete Jimenez * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23*ed775ee7SAntonio Huete Jimenez * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24*ed775ee7SAntonio Huete Jimenez * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 25*ed775ee7SAntonio Huete Jimenez * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26*ed775ee7SAntonio Huete Jimenez * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27*ed775ee7SAntonio Huete Jimenez * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28*ed775ee7SAntonio Huete Jimenez * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29*ed775ee7SAntonio Huete Jimenez * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30*ed775ee7SAntonio Huete Jimenez * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31*ed775ee7SAntonio Huete Jimenez * SUCH DAMAGE. 32*ed775ee7SAntonio Huete Jimenez */ 33*ed775ee7SAntonio Huete Jimenez 34*ed775ee7SAntonio Huete Jimenez #ifndef ftmacros_h 35*ed775ee7SAntonio Huete Jimenez #define ftmacros_h 36*ed775ee7SAntonio Huete Jimenez 37*ed775ee7SAntonio Huete Jimenez /* 38*ed775ee7SAntonio Huete Jimenez * Define some feature test macros to make sure that everything we want 39*ed775ee7SAntonio Huete Jimenez * to be declared gets declared. 40*ed775ee7SAntonio Huete Jimenez * 41*ed775ee7SAntonio Huete Jimenez * On some UN*Xes we need to force strtok_r() to be declared. 42*ed775ee7SAntonio Huete Jimenez * We do *NOT* want to define _POSIX_C_SOURCE, as that tends 43*ed775ee7SAntonio Huete Jimenez * to make non-POSIX APIs that we use unavailable. 44*ed775ee7SAntonio Huete Jimenez * XXX - is there no portable way to say "please pollute the 45*ed775ee7SAntonio Huete Jimenez * namespace to the maximum extent possible"? 46*ed775ee7SAntonio Huete Jimenez */ 47*ed775ee7SAntonio Huete Jimenez #if defined(sun) || defined(__sun) 48*ed775ee7SAntonio Huete Jimenez #define __EXTENSIONS__ 49*ed775ee7SAntonio Huete Jimenez 50*ed775ee7SAntonio Huete Jimenez /* 51*ed775ee7SAntonio Huete Jimenez * We also need to define _XPG4_2 in order to get 52*ed775ee7SAntonio Huete Jimenez * the Single UNIX Specification version of 53*ed775ee7SAntonio Huete Jimenez * recvmsg(). 54*ed775ee7SAntonio Huete Jimenez */ 55*ed775ee7SAntonio Huete Jimenez #define _XPG4_2 56*ed775ee7SAntonio Huete Jimenez #elif defined(_hpux) || defined(hpux) || defined(__hpux) 57*ed775ee7SAntonio Huete Jimenez #define _REENTRANT 58*ed775ee7SAntonio Huete Jimenez 59*ed775ee7SAntonio Huete Jimenez /* 60*ed775ee7SAntonio Huete Jimenez * We need this to get the versions of socket functions that 61*ed775ee7SAntonio Huete Jimenez * use socklen_t. Define it only if it's not already defined, 62*ed775ee7SAntonio Huete Jimenez * so we don't get redefiniton warnings. 63*ed775ee7SAntonio Huete Jimenez */ 64*ed775ee7SAntonio Huete Jimenez #ifndef _XOPEN_SOURCE_EXTENDED 65*ed775ee7SAntonio Huete Jimenez #define _XOPEN_SOURCE_EXTENDED 66*ed775ee7SAntonio Huete Jimenez #endif 67*ed775ee7SAntonio Huete Jimenez 68*ed775ee7SAntonio Huete Jimenez /* 69*ed775ee7SAntonio Huete Jimenez * XXX - the list of PA-RISC options for GCC makes it sound as if 70*ed775ee7SAntonio Huete Jimenez * building code that uses a particular vintage of UNIX API/ABI 71*ed775ee7SAntonio Huete Jimenez * is complicated: 72*ed775ee7SAntonio Huete Jimenez * 73*ed775ee7SAntonio Huete Jimenez * https://gcc.gnu.org/onlinedocs/gcc/HPPA-Options.html 74*ed775ee7SAntonio Huete Jimenez * 75*ed775ee7SAntonio Huete Jimenez * See the description of the -munix flag. 76*ed775ee7SAntonio Huete Jimenez * 77*ed775ee7SAntonio Huete Jimenez * We probably want libpcap to work with programs built for any 78*ed775ee7SAntonio Huete Jimenez * UN*X standard. I'm not sure whether that's possible and, if 79*ed775ee7SAntonio Huete Jimenez * it is, what sort of stuff it'd have to do. 80*ed775ee7SAntonio Huete Jimenez * 81*ed775ee7SAntonio Huete Jimenez * It might also be a requirement that we build with a special 82*ed775ee7SAntonio Huete Jimenez * flag to allow the library to be used with threaded code, at 83*ed775ee7SAntonio Huete Jimenez * least with HP's C compiler; hopefully doing so won't make it 84*ed775ee7SAntonio Huete Jimenez * *not* work with *un*-threaded code. 85*ed775ee7SAntonio Huete Jimenez */ 86*ed775ee7SAntonio Huete Jimenez #else 87*ed775ee7SAntonio Huete Jimenez /* 88*ed775ee7SAntonio Huete Jimenez * Turn on _GNU_SOURCE to get everything GNU libc has to offer, 89*ed775ee7SAntonio Huete Jimenez * including asprintf(), if we're using GNU libc. 90*ed775ee7SAntonio Huete Jimenez * 91*ed775ee7SAntonio Huete Jimenez * Unfortunately, one thing it has to offer is a strerror_r() 92*ed775ee7SAntonio Huete Jimenez * that's not POSIX-compliant, but we deal with that in 93*ed775ee7SAntonio Huete Jimenez * pcap_fmt_errmsg_for_errno(). 94*ed775ee7SAntonio Huete Jimenez * 95*ed775ee7SAntonio Huete Jimenez * We don't limit this to, for example, Linux and Cygwin, because 96*ed775ee7SAntonio Huete Jimenez * this might, for example, be GNU/HURD or one of Debian's kFreeBSD 97*ed775ee7SAntonio Huete Jimenez * OSes ("GNU/FreeBSD"). 98*ed775ee7SAntonio Huete Jimenez */ 99*ed775ee7SAntonio Huete Jimenez #define _GNU_SOURCE 100*ed775ee7SAntonio Huete Jimenez 101*ed775ee7SAntonio Huete Jimenez /* 102*ed775ee7SAntonio Huete Jimenez * We turn on both _DEFAULT_SOURCE and _BSD_SOURCE to try to get 103*ed775ee7SAntonio Huete Jimenez * the BSD u_XXX types, such as u_int and u_short, defined. We 104*ed775ee7SAntonio Huete Jimenez * define _DEFAULT_SOURCE first, so that newer versions of GNU libc 105*ed775ee7SAntonio Huete Jimenez * don't whine about _BSD_SOURCE being deprecated; we still have 106*ed775ee7SAntonio Huete Jimenez * to define _BSD_SOURCE to handle older versions of GNU libc that 107*ed775ee7SAntonio Huete Jimenez * don't support _DEFAULT_SOURCE. 108*ed775ee7SAntonio Huete Jimenez * 109*ed775ee7SAntonio Huete Jimenez * But, if it's already defined, don't define it, so that we don't 110*ed775ee7SAntonio Huete Jimenez * get a warning of it being redefined if it's defined as, for 111*ed775ee7SAntonio Huete Jimenez * example, 1. 112*ed775ee7SAntonio Huete Jimenez */ 113*ed775ee7SAntonio Huete Jimenez #ifndef _DEFAULT_SOURCE 114*ed775ee7SAntonio Huete Jimenez #define _DEFAULT_SOURCE 115*ed775ee7SAntonio Huete Jimenez #endif 116*ed775ee7SAntonio Huete Jimenez /* Avoid redefining _BSD_SOURCE if it's already defined as for ex. 1 */ 117*ed775ee7SAntonio Huete Jimenez #ifndef _BSD_SOURCE 118*ed775ee7SAntonio Huete Jimenez #define _BSD_SOURCE 119*ed775ee7SAntonio Huete Jimenez #endif 120*ed775ee7SAntonio Huete Jimenez #endif 121*ed775ee7SAntonio Huete Jimenez 122*ed775ee7SAntonio Huete Jimenez #endif 123