1/* Licensed to the Apache Software Foundation (ASF) under one or more
2 * contributor license agreements.  See the NOTICE file distributed with
3 * this work for additional information regarding copyright ownership.
4 * The ASF licenses this file to You under the Apache License, Version 2.0
5 * (the "License"); you may not use this file except in compliance with
6 * the License.  You may obtain a copy of the License at
7 *
8 *     http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#include "apr.h"        /* configuration data */
18/**
19 * @file apr_want.h
20 * @brief APR Standard Headers Support
21 *
22 * <PRE>
23 * Features:
24 *
25 *   APR_WANT_STRFUNC:  strcmp, strcat, strcpy, etc
26 *   APR_WANT_MEMFUNC:  memcmp, memcpy, etc
27 *   APR_WANT_STDIO:    <stdio.h> and related bits
28 *   APR_WANT_IOVEC:    struct iovec
29 *   APR_WANT_BYTEFUNC: htons, htonl, ntohl, ntohs
30 *
31 * Typical usage:
32 *
33 *   \#define APR_WANT_STRFUNC
34 *   \#define APR_WANT_MEMFUNC
35 *   \#include "apr_want.h"
36 *
37 * The appropriate headers will be included.
38 *
39 * Note: it is safe to use this in a header (it won't interfere with other
40 *       headers' or source files' use of apr_want.h)
41 * </PRE>
42 */
43
44/* --------------------------------------------------------------------- */
45
46#ifdef APR_WANT_STRFUNC
47
48#if APR_HAVE_STRING_H
49#include <string.h>
50#endif
51#if APR_HAVE_STRINGS_H
52#include <strings.h>
53#endif
54
55#undef APR_WANT_STRFUNC
56#endif
57
58/* --------------------------------------------------------------------- */
59
60#ifdef APR_WANT_MEMFUNC
61
62#if APR_HAVE_STRING_H
63#include <string.h>
64#endif
65
66#undef APR_WANT_MEMFUNC
67#endif
68
69/* --------------------------------------------------------------------- */
70
71#ifdef APR_WANT_STDIO
72
73#if APR_HAVE_STDIO_H
74#include <stdio.h>
75#endif
76
77#undef APR_WANT_STDIO
78#endif
79
80/* --------------------------------------------------------------------- */
81
82#ifdef APR_WANT_IOVEC
83
84#if APR_HAVE_IOVEC
85
86#if APR_HAVE_SYS_UIO_H
87#include <sys/uio.h>
88#endif
89
90#else
91
92#ifndef APR_IOVEC_DEFINED
93#define APR_IOVEC_DEFINED
94struct iovec
95{
96    void *iov_base;
97    size_t iov_len;
98};
99#endif /* !APR_IOVEC_DEFINED */
100
101#endif /* APR_HAVE_IOVEC */
102
103#undef APR_WANT_IOVEC
104#endif
105
106/* --------------------------------------------------------------------- */
107
108#ifdef APR_WANT_BYTEFUNC
109
110/* Single Unix says they are in arpa/inet.h.  Linux has them in
111 * netinet/in.h.  FreeBSD has them in arpa/inet.h but requires that
112 * netinet/in.h be included first.
113 */
114#if APR_HAVE_NETINET_IN_H
115#include <netinet/in.h>
116#endif
117#if APR_HAVE_ARPA_INET_H
118#include <arpa/inet.h>
119#endif
120
121#undef APR_WANT_BYTEFUNC
122#endif
123
124/* --------------------------------------------------------------------- */
125