]> git.ipfire.org Git - thirdparty/glibc.git/blob - sysdeps/unix/sysv/sysv4/sysconf.c
update from main archive
[thirdparty/glibc.git] / sysdeps / unix / sysv / sysv4 / sysconf.c
1 /* Copyright (C) 1993, 1995, 1996 Free Software Foundation, Inc.
2 Contributed by Brendan Kehoe (brendan@zen.org).
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public License as
6 published by the Free Software Foundation; either version 2 of the
7 License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Library General Public License for more details.
13
14 You should have received a copy of the GNU Library General Public
15 License along with the GNU C Library; see the file COPYING.LIB. If
16 not, write to the Free Software Foundation, Inc., 675 Mass Ave,
17 Cambridge, MA 02139, USA. */
18
19 #include <errno.h>
20 #include <limits.h>
21 #include <unistd.h>
22 #include <stdio.h>
23 #include <time.h>
24 #include <sysconfig.h>
25
26 extern int __sysconfig __P ((int));
27
28 /* Get the value of the system variable NAME. */
29 long int
30 __sysconf (name)
31 int name;
32 {
33 switch (name)
34 {
35 default:
36 __set_errno (EINVAL);
37 return -1;
38
39 case _SC_ARG_MAX:
40 #ifdef ARG_MAX
41 return ARG_MAX;
42 #else
43 return -1;
44 #endif
45
46 case _SC_CHILD_MAX:
47 #ifdef CHILD_MAX
48 return CHILD_MAX;
49 #else
50 return -1;
51 #endif
52
53 case _SC_CLK_TCK:
54 return __sysconfig (_CONFIG_CLK_TCK);
55
56 case _SC_NGROUPS_MAX:
57 #ifdef NGROUPS_MAX
58 return NGROUPS_MAX;
59 #else
60 return -1;
61 #endif
62
63 /* Both of these are looking for _CONFIG_OPEN_FILES. */
64 case _SC_OPEN_MAX:
65 case _SC_STREAM_MAX:
66 return __sysconfig (_CONFIG_OPEN_FILES);
67
68 case _SC_TZNAME_MAX:
69 return __tzname_max ();
70
71 case _SC_JOB_CONTROL:
72 #ifdef _POSIX_JOB_CONTROL
73 return 1;
74 #else
75 return -1;
76 #endif
77
78 case _SC_SAVED_IDS:
79 #ifdef _POSIX_SAVED_IDS
80 return 1;
81 #else
82 return -1;
83 #endif
84
85 case _SC_REALTIME_SIGNALS:
86 #ifdef _POSIX_REALTIME_SIGNALS
87 return 1;
88 #else
89 return -1;
90 #endif
91
92 case _SC_PRIORITY_SCHEDULING:
93 #ifdef _POSIX_PRIORITY_SCHEDULING
94 return 1;
95 #else
96 return -1;
97 #endif
98
99 case _SC_TIMERS:
100 #ifdef _POSIX_TIMERS
101 return 1;
102 #else
103 return -1;
104 #endif
105
106 case _SC_ASYNCHRONOUS_IO:
107 #ifdef _POSIX_ASYNCHRONOUS_IO
108 return 1;
109 #else
110 return -1;
111 #endif
112
113 case _SC_PRIORITIZED_IO:
114 #ifdef _POSIX_PRIORITIZED_IO
115 return 1;
116 #else
117 return -1;
118 #endif
119
120 case _SC_SYNCHRONIZED_IO:
121 #ifdef _POSIX_SYNCHRONIZED_IO
122 return 1;
123 #else
124 return -1;
125 #endif
126
127 case _SC_FSYNC:
128 #ifdef _POSIX_FSYNC
129 return 1;
130 #else
131 return -1;
132 #endif
133
134 case _SC_MAPPED_FILES:
135 #ifdef _POSIX_MAPPED_FILES
136 return 1;
137 #else
138 return -1;
139 #endif
140
141 case _SC_MEMLOCK:
142 #ifdef _POSIX_MEMLOCK
143 return 1;
144 #else
145 return -1;
146 #endif
147
148 case _SC_MEMLOCK_RANGE:
149 #ifdef _POSIX_MEMLOCK_RANGE
150 return 1;
151 #else
152 return -1;
153 #endif
154
155 case _SC_MEMORY_PROTECTION:
156 #ifdef _POSIX_MEMORY_PROTECTION
157 return 1;
158 #else
159 return -1;
160 #endif
161
162 case _SC_MESSAGE_PASSING:
163 #ifdef _POSIX_MESSAGE_PASSING
164 return 1;
165 #else
166 return -1;
167 #endif
168
169 case _SC_SEMAPHORES:
170 #ifdef _POSIX_SEMAPHORES
171 return 1;
172 #else
173 return -1;
174 #endif
175
176 case _SC_SHARED_MEMORY_OBJECTS:
177 #ifdef _POSIX_SHARED_MEMORY_OBJECTS
178 return 1;
179 #else
180 return -1;
181 #endif
182
183 case _SC_VERSION:
184 return _POSIX_VERSION;
185
186 case _SC_PAGESIZE:
187 return __sysconfig (_CONFIG_PAGESIZE);
188
189 case _SC_AIO_LISTIO_MAX:
190 #ifdef AIO_LISTIO_MAX
191 return AIO_LISTIO_MAX;
192 #else
193 return -1;
194 #endif
195
196 case _SC_AIO_MAX:
197 #ifdef AIO_MAX
198 return AIO_MAX;
199 #else
200 return -1;
201 #endif
202
203 case _SC_AIO_PRIO_DELTA_MAX:
204 #ifdef AIO_PRIO_DELTA_MAX
205 return AIO_PRIO_DELTA_MAX;
206 #else
207 return -1;
208 #endif
209
210 case _SC_DELAYTIMER_MAX:
211 #ifdef DELAYTIMER_MAX
212 return DELAYTIMER_MAX;
213 #else
214 return -1;
215 #endif
216
217 case _SC_MQ_OPEN_MAX:
218 #ifdef MQ_OPEN_MAX
219 return MQ_OPEN_MAX;
220 #else
221 return -1;
222 #endif
223
224 case _SC_MQ_PRIO_MAX:
225 #ifdef MQ_PRIO_MAX
226 return MQ_PRIO_MAX;
227 #else
228 return -1;
229 #endif
230
231 case _SC_RTSIG_MAX:
232 #ifdef RTSIG_MAX
233 return RTSIG_MAX;
234 #else
235 return -1;
236 #endif
237
238 case _SC_SEM_NSEMS_MAX:
239 #ifdef SEM_NSEMS_MAX
240 return SEM_NSEMS_MAX;
241 #else
242 return -1;
243 #endif
244
245 case _SC_SEM_VALUE_MAX:
246 #ifdef SEM_VALUE_MAX
247 return SEM_VALUE_MAX;
248 #else
249 return -1;
250 #endif
251
252 case _SC_SIGQUEUE_MAX:
253 #ifdef SIGQUEUE_MAX
254 return SIGQUEUE_MAX;
255 #else
256 return -1;
257 #endif
258
259 case _SC_TIMER_MAX:
260 #ifdef TIMER_MAX
261 return TIMER_MAX;
262 #else
263 return -1;
264 #endif
265
266 case _SC_BC_BASE_MAX:
267 #ifdef BC_BASE_MAX
268 return BC_BASE_MAX;
269 #else
270 return -1;
271 #endif
272
273 case _SC_BC_DIM_MAX:
274 #ifdef BC_DIM_MAX
275 return BC_DIM_MAX;
276 #else
277 return -1;
278 #endif
279
280 case _SC_BC_SCALE_MAX:
281 #ifdef BC_SCALE_MAX
282 return BC_SCALE_MAX;
283 #else
284 return -1;
285 #endif
286
287 case _SC_BC_STRING_MAX:
288 #ifdef BC_STRING_MAX
289 return BC_STRING_MAX;
290 #else
291 return -1;
292 #endif
293
294 case _SC_EQUIV_CLASS_MAX:
295 #ifdef EQUIV_CLASS_MAX
296 return EQUIV_CLASS_MAX;
297 #else
298 return -1;
299 #endif
300
301 case _SC_EXPR_NEST_MAX:
302 #ifdef EXPR_NEST_MAX
303 return EXPR_NEST_MAX;
304 #else
305 return -1;
306 #endif
307
308 case _SC_LINE_MAX:
309 #ifdef LINE_MAX
310 return LINE_MAX;
311 #else
312 return -1;
313 #endif
314
315 case _SC_RE_DUP_MAX:
316 #ifdef RE_DUP_MAX
317 return RE_DUP_MAX;
318 #else
319 return -1;
320 #endif
321
322 case _SC_CHARCLASS_NAME_MAX:
323 #ifdef CHARCLASS_NAME_MAX
324 return CHARCLASS_NAME_MAX;
325 #else
326 return -1;
327 #endif
328
329 case _SC_2_VERSION:
330 /* This is actually supposed to return the version
331 of the 1003.2 utilities on the system {POSIX2_VERSION}. */
332 return _POSIX2_C_VERSION;
333
334 case _SC_2_C_BIND:
335 #ifdef _POSIX2_C_BIND
336 return _POSIX2_C_BIND;
337 #else
338 return -1;
339 #endif
340
341 case _SC_2_C_DEV:
342 #ifdef _POSIX2_C_DEV
343 return _POSIX2_C_DEV;
344 #else
345 return -1;
346 #endif
347
348 case _SC_2_FORT_DEV:
349 #ifdef _POSIX2_FORT_DEV
350 return _POSIX2_FORT_DEV;
351 #else
352 return -1;
353 #endif
354
355 case _SC_2_SW_DEV:
356 #ifdef _POSIX2_SW_DEV
357 return _POSIX2_SW_DEV;
358 #else
359 return -1;
360 #endif
361 }
362 }
363
364 weak_alias (__sysconf, sysconf)