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