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/*
18 * Note:
19 * This is the netware-specific autoconf-like config file
20 * which unix creates at ./configure time.
21 */
22
23#ifdef NETWARE
24
25#ifndef APR_PRIVATE_H
26#define APR_PRIVATE_H
27
28/* Pick up publicly advertised headers and symbols before the
29 * APR internal private headers and symbols
30 */
31#include <apr.h>
32
33/* Pick up privately consumed headers */
34#include <ndkvers.h>
35
36/* Include alloca.h to get compiler-dependent defines */
37#include <alloca.h>
38
39#include <sys/types.h>
40#include <stddef.h>
41#include <stdio.h>
42#include <stdlib.h>
43#include <time.h>
44#include <library.h>
45#include <netware.h>
46
47/* Use this section to define all of the HAVE_FOO_H
48 * that are required to build properly.
49 */
50#define HAVE_DLFCN_H    1
51#define HAVE_LIMITS_H   1
52#define HAVE_SIGNAL_H   1
53#define HAVE_STDDEF_H   1
54#define HAVE_STDLIB_H   1
55#ifndef USE_WINSOCK
56#define HAVE_SYS_SELECT_H 1
57#define HAVE_WRITEV       1
58#endif
59#define HAVE_SYS_STAT_H 1
60#define HAVE_SYS_MMAN_H 1
61#define HAVE_FCNTL_H    1
62#define HAVE_ICONV_H    1
63#define HAVE_UTIME_H    1
64
65#define HAVE_STRICMP    1
66#define HAVE_STRNICMP   1
67#define HAVE_STRDUP     1
68#define HAVE_STRSTR     1
69#define HAVE_MEMCHR     1
70#define HAVE_CALLOC     1
71#define HAVE_UTIME      1
72
73#define HAVE_GETENV     1
74#define HAVE_SETENV     1
75#define HAVE_UNSETENV   1
76
77#define HAVE_WRITEV     1
78
79#define HAVE_GETPASS_R  1
80/*
81 * Hack around older NDKs which have only the getpassword() function,
82 * a threadsafe, API-equivilant of getpass_r().
83 */
84#if (CURRENT_NDK_THRESHOLD < 709060000)
85#define getpass_r       getpassword
86#endif
87
88/*#define DSO_USE_DLFCN */
89
90#ifdef NW_BUILD_IPV6
91#define HAVE_GETADDRINFO 1
92#define HAVE_GETNAMEINFO 1
93#endif
94
95/* 1 is used for SIGABRT on netware */
96/* 2 is used for SIGFPE on netware */
97/* 3 is used for SIGILL on netware */
98/* 4 is used for SIGINT on netware */
99/* 5 is used for SIGSEGV on netware */
100/* 6 is used for SIGTERM on netware */
101/* 7 is used for SIGPOLL on netware */
102
103#if (CURRENT_NDK_THRESHOLD < 306030000)
104#define SIGKILL         11
105#define SIGALRM         13
106#define SIGCHLD         14
107#define SIGCONT         15
108#define SIGHUP          16
109#define SIGPIPE         17
110#define SIGQUIT         18
111#define SIGSTOP         19
112#define SIGTSTP         20
113#define SIGTTIN         21
114#define SIGTTOU         22
115#define SIGUSR1         23
116#define SIGUSR2         24
117#endif
118
119#define SIGTRAP         25
120#define SIGIOT          26
121#define SIGSTKFLT       28
122#define SIGURG          29
123#define SIGXCPU         30
124#define SIGXFSZ         31
125#define SIGVTALRM       32
126#define SIGPROF         33
127#define SIGWINCH        34
128#define SIGIO           35
129
130#if (CURRENT_NDK_THRESHOLD < 406230000)
131#undef  SA_NOCLDSTOP
132#define SA_NOCLDSTOP    0x00000001
133#endif
134#ifndef SIGBUS
135#define SIGBUS          SIGSEGV
136#endif
137
138#define _getch          getcharacter
139
140#define SIZEOF_SHORT    2
141#define SIZEOF_INT      4
142#define SIZEOF_LONGLONG 8
143#define SIZEOF_CHAR     1
144#define SIZEOF_SSIZE_T  SIZEOF_INT
145
146void netware_pool_proc_cleanup();
147
148/* NLM registration routines for managing which NLMs
149    are using the library. */
150int register_NLM(void *NLMHandle);
151int unregister_NLM(void *NLMHandle);
152
153/* Application global data management */
154extern int  gLibId;
155extern void *gLibHandle;
156
157typedef struct app_data {
158    int     initialized;
159    void*   gPool;
160    void*   gs_aHooksToSort;
161    void*   gs_phOptionalHooks;
162    void*   gs_phOptionalFunctions;
163    void*   gs_nlmhandle;
164    rtag_t  gs_startup_rtag;
165    rtag_t  gs_socket_rtag;
166    rtag_t  gs_lookup_rtag;
167    rtag_t  gs_event_rtag;
168    rtag_t  gs_pcp_rtag;
169    void*   gs_ldap_xref_lock;
170    void*   gs_xref_head;
171} APP_DATA;
172
173int setGlobalPool(void *data);
174void* getGlobalPool();
175int setStatCache(void *data);
176void* getStatCache();
177
178/* Redefine malloc to use the library malloc call so
179    that all of the memory resources will be owned
180    and can be shared by the library. */
181#undef malloc
182#define malloc(x) library_malloc(gLibHandle,x)
183#ifndef __MWERKS__
184#define _alloca         alloca
185#endif
186
187/* 64-bit integer conversion function */
188#define APR_INT64_STRFN strtoll
189
190#if APR_HAS_LARGE_FILES
191#define APR_OFF_T_STRFN strtoll
192#else
193#define APR_OFF_T_STRFN strtol
194#endif
195
196/* used to check DWORD overflow for 64bit compiles */
197#define APR_DWORD_MAX   0xFFFFFFFFUL
198
199/*
200 * Include common private declarations.
201 */
202#include "../apr_private_common.h"
203
204#endif  /*APR_PRIVATE_H*/
205#endif  /*NETWARE*/
206