update from main archive 960906
[glibc.git] / sysdeps / posix / sysconf.c
blob29d06135c6f29eda791084419a9f95de1d3380e3
1 /* Copyright (C) 1991, 1993, 1995, 1996 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
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.
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.
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. */
19 #include <errno.h>
20 #include <limits.h>
21 #include <grp.h>
22 #include <pwd.h>
23 #include <stddef.h>
24 #include <stdio.h>
25 #include <time.h>
26 #include <unistd.h>
28 extern int __getdtablesize __P ((void));
29 extern size_t __getpagesize __P ((void));
31 /* Get the value of the system variable NAME. */
32 long int
33 __sysconf (name)
34 int name;
36 switch (name)
38 default:
39 errno = EINVAL;
40 return -1;
42 case _SC_ARG_MAX:
43 #ifdef ARG_MAX
44 return ARG_MAX;
45 #else
46 return -1;
47 #endif
49 case _SC_CHILD_MAX:
50 #ifdef CHILD_MAX
51 return CHILD_MAX;
52 #else
53 return -1;
54 #endif
56 case _SC_CLK_TCK:
57 #ifdef CLK_TCK
58 return CLK_TCK;
59 #else
60 return 60;
61 #endif
63 case _SC_NGROUPS_MAX:
64 #ifdef NGROUPS_MAX
65 return NGROUPS_MAX;
66 #else
67 return -1;
68 #endif
70 case _SC_OPEN_MAX:
71 return __getdtablesize ();
73 case _SC_STREAM_MAX:
74 #ifdef STREAM_MAX
75 return STREAM_MAX;
76 #else
77 return FOPEN_MAX;
78 #endif
80 case _SC_TZNAME_MAX:
81 return __tzname_max ();
83 case _SC_JOB_CONTROL:
84 #ifdef _POSIX_JOB_CONTROL
85 return 1;
86 #else
87 return -1;
88 #endif
90 case _SC_SAVED_IDS:
91 #ifdef _POSIX_SAVED_IDS
92 return 1;
93 #else
94 return -1;
95 #endif
97 case _SC_REALTIME_SIGNALS:
98 #ifdef _POSIX_REALTIME_SIGNALS
99 return 1;
100 #else
101 return -1;
102 #endif
104 case _SC_PRIORITY_SCHEDULING:
105 #ifdef _POSIX_PRIORITY_SCHEDULING
106 return 1;
107 #else
108 return -1;
109 #endif
111 case _SC_TIMERS:
112 #ifdef _POSIX_TIMERS
113 return 1;
114 #else
115 return -1;
116 #endif
118 case _SC_ASYNCHRONOUS_IO:
119 #ifdef _POSIX_ASYNCHRONOUS_IO
120 return 1;
121 #else
122 return -1;
123 #endif
125 case _SC_PRIORITIZED_IO:
126 #ifdef _POSIX_PRIORITIZED_IO
127 return 1;
128 #else
129 return -1;
130 #endif
132 case _SC_SYNCHRONIZED_IO:
133 #ifdef _POSIX_SYNCHRONIZED_IO
134 return 1;
135 #else
136 return -1;
137 #endif
139 case _SC_FSYNC:
140 #ifdef _POSIX_FSYNC
141 return 1;
142 #else
143 return -1;
144 #endif
146 case _SC_MAPPED_FILES:
147 #ifdef _POSIX_MAPPED_FILES
148 return 1;
149 #else
150 return -1;
151 #endif
153 case _SC_MEMLOCK:
154 #ifdef _POSIX_MEMLOCK
155 return 1;
156 #else
157 return -1;
158 #endif
160 case _SC_MEMLOCK_RANGE:
161 #ifdef _POSIX_MEMLOCK_RANGE
162 return 1;
163 #else
164 return -1;
165 #endif
167 case _SC_MEMORY_PROTECTION:
168 #ifdef _POSIX_MEMORY_PROTECTION
169 return 1;
170 #else
171 return -1;
172 #endif
174 case _SC_MESSAGE_PASSING:
175 #ifdef _POSIX_MESSAGE_PASSING
176 return 1;
177 #else
178 return -1;
179 #endif
181 case _SC_SEMAPHORES:
182 #ifdef _POSIX_SEMAPHORES
183 return 1;
184 #else
185 return -1;
186 #endif
188 case _SC_SHARED_MEMORY_OBJECTS:
189 #ifdef _POSIX_SHARED_MEMORY_OBJECTS
190 return 1;
191 #else
192 return -1;
193 #endif
195 case _SC_VERSION:
196 return _POSIX_VERSION;
198 case _SC_PAGESIZE:
199 return __getpagesize ();
201 case _SC_AIO_LISTIO_MAX:
202 #ifdef AIO_LISTIO_MAX
203 return AIO_LISTIO_MAX;
204 #else
205 return -1;
206 #endif
208 case _SC_AIO_MAX:
209 #ifdef AIO_MAX
210 return AIO_MAX;
211 #else
212 return -1;
213 #endif
215 case _SC_AIO_PRIO_DELTA_MAX:
216 #ifdef AIO_PRIO_DELTA_MAX
217 return AIO_PRIO_DELTA_MAX;
218 #else
219 return -1;
220 #endif
222 case _SC_DELAYTIMER_MAX:
223 #ifdef DELAYTIMER_MAX
224 return DELAYTIMER_MAX;
225 #else
226 return -1;
227 #endif
229 case _SC_MQ_OPEN_MAX:
230 #ifdef MQ_OPEN_MAX
231 return MQ_OPEN_MAX;
232 #else
233 return -1;
234 #endif
236 case _SC_MQ_PRIO_MAX:
237 #ifdef MQ_PRIO_MAX
238 return MQ_PRIO_MAX;
239 #else
240 return -1;
241 #endif
243 case _SC_RTSIG_MAX:
244 #ifdef RTSIG_MAX
245 return RTSIG_MAX;
246 #else
247 return -1;
248 #endif
250 case _SC_SEM_NSEMS_MAX:
251 #ifdef SEM_NSEMS_MAX
252 return SEM_NSEMS_MAX;
253 #else
254 return -1;
255 #endif
257 case _SC_SEM_VALUE_MAX:
258 #ifdef SEM_VALUE_MAX
259 return SEM_VALUE_MAX;
260 #else
261 return -1;
262 #endif
264 case _SC_SIGQUEUE_MAX:
265 #ifdef SIGQUEUE_MAX
266 return SIGQUEUE_MAX;
267 #else
268 return -1;
269 #endif
271 case _SC_TIMER_MAX:
272 #ifdef TIMER_MAX
273 return TIMER_MAX;
274 #else
275 return -1;
276 #endif
278 case _SC_BC_BASE_MAX:
279 #ifdef BC_BASE_MAX
280 return BC_BASE_MAX;
281 #else
282 return -1;
283 #endif
285 case _SC_BC_DIM_MAX:
286 #ifdef BC_DIM_MAX
287 return BC_DIM_MAX;
288 #else
289 return -1;
290 #endif
292 case _SC_BC_SCALE_MAX:
293 #ifdef BC_SCALE_MAX
294 return BC_SCALE_MAX;
295 #else
296 return -1;
297 #endif
299 case _SC_BC_STRING_MAX:
300 #ifdef BC_STRING_MAX
301 return BC_STRING_MAX;
302 #else
303 return -1;
304 #endif
306 case _SC_COLL_WEIGHTS_MAX:
307 #ifdef COLL_WEIGHTS_MAX
308 return COLL_WEIGHTS_MAX;
309 #else
310 return -1;
311 #endif
313 case _SC_EQUIV_CLASS_MAX:
314 #ifdef EQUIV_CLASS_MAX
315 return EQUIV_CLASS_MAX;
316 #else
317 return -1;
318 #endif
320 case _SC_EXPR_NEST_MAX:
321 #ifdef EXPR_NEST_MAX
322 return EXPR_NEST_MAX;
323 #else
324 return -1;
325 #endif
327 case _SC_LINE_MAX:
328 #ifdef LINE_MAX
329 return LINE_MAX;
330 #else
331 return -1;
332 #endif
334 case _SC_RE_DUP_MAX:
335 #ifdef RE_DUP_MAX
336 return RE_DUP_MAX;
337 #else
338 return -1;
339 #endif
341 case _SC_CHARCLASS_NAME_MAX:
342 #ifdef CHARCLASS_NAME_MAX
343 return CHARCLASS_NAME_MAX;
344 #else
345 return -1;
346 #endif
348 case _SC_PII:
349 #ifdef _POSIX_PII
350 return 1;
351 #else
352 return -1;
353 #endif
355 case _SC_PII_XTI:
356 #ifdef _POSIX_PII_XTI
357 return 1;
358 #else
359 return -1;
360 #endif
362 case _SC_PII_SOCKET:
363 #ifdef _POSIX_PII_SOCKET
364 return 1;
365 #else
366 return -1;
367 #endif
369 case _SC_PII_INTERNET:
370 #ifdef _POSIX_PII_INTERNET
371 return 1;
372 #else
373 return -1;
374 #endif
376 case _SC_PII_OSI:
377 #ifdef _POSIX_PII_OSI
378 return 1;
379 #else
380 return -1;
381 #endif
383 case _SC_POLL:
384 #ifdef _POSIX_POLL
385 return 1;
386 #else
387 return -1;
388 #endif
390 case _SC_SELECT:
391 #ifdef _POSIX_SELECT
392 return 1;
393 #else
394 return -1;
395 #endif
397 case _SC_UIO_MAXIOV:
398 #ifdef UIO_MAXIOV
399 return UIO_MAXIOV;
400 #else
401 return -1;
402 #endif
404 case _SC_PII_INTERNET_STREAM:
405 #ifdef _POSIX_PII_INTERNET_STREAM
406 return 1;
407 #else
408 return -1;
409 #endif
411 case _SC_PII_INTERNET_DGRAM:
412 #ifdef _POSIX_PII_INTERNET_DGRAM
413 return 1;
414 #else
415 return -1;
416 #endif
418 case _SC_PII_OSI_COTS:
419 #ifdef _POSIX_PII_OSI_COTS
420 return 1;
421 #else
422 return -1;
423 #endif
425 case _SC_PII_OSI_CLTS:
426 #ifdef _POSIX_PII_OSI_CLTS
427 return 1;
428 #else
429 return -1;
430 #endif
432 case _SC_PII_OSI_M:
433 #ifdef _POSIX_PII_OSI_M
434 return 1;
435 #else
436 return -1;
437 #endif
439 case _SC_T_IOV_MAX:
440 #ifdef _T_IOV_MAX
441 return _T_IOV_MAX;
442 #else
443 return -1;
444 #endif
446 case _SC_2_VERSION:
447 /* This is actually supposed to return the version
448 of the 1003.2 utilities on the system {POSIX2_VERSION}. */
449 return _POSIX2_C_VERSION;
451 case _SC_2_C_BIND:
452 #ifdef _POSIX2_C_BIND
453 return _POSIX2_C_BIND;
454 #else
455 return -1;
456 #endif
458 case _SC_2_C_DEV:
459 #ifdef _POSIX2_C_DEV
460 return _POSIX2_C_DEV;
461 #else
462 return -1;
463 #endif
465 case _SC_2_FORT_DEV:
466 #ifdef _POSIX2_FORT_DEV
467 return _POSIX2_FORT_DEV;
468 #else
469 return -1;
470 #endif
472 case _SC_2_LOCALEDEF:
473 #ifdef _POSIX2_LOCALEDEF
474 return _POSIX2_LOCALEDEF;
475 #else
476 return -1;
477 #endif
479 case _SC_2_SW_DEV:
480 #ifdef _POSIX2_SW_DEV
481 return _POSIX2_SW_DEV;
482 #else
483 return -1;
484 #endif
486 /* POSIX 1003.1c (POSIX Threads). */
487 case _SC_THREADS:
488 #ifdef _POSIX_THREADS
489 return 1;
490 #else
491 return -1;
492 #endif
494 case _SC_THREAD_SAFE_FUNCTIONS:
495 #ifdef _POSIX_THREAD_SAFE_FUNCTIONS
496 return 1;
497 #else
498 return -1;
499 #endif
501 case _SC_GETGR_R_SIZE_MAX:
502 #ifdef NSS_BUFLEN_GROUP
503 return NSS_BUFLEN_GROUP;
504 #else
505 return -1;
506 #endif
508 case _SC_GETPW_R_SIZE_MAX:
509 #ifdef NSS_BUFLEN_PASSWD
510 return NSS_BUFLEN_PASSWD;
511 #else
512 return -1;
513 #endif
515 case _SC_LOGIN_NAME_MAX:
516 #ifdef _POSIX_LOGIN_NAME_MAX
517 return _POSIX_LOGIN_NAME_MAX;
518 #else
519 return -1;
520 #endif
522 case _SC_TTY_NAME_MAX:
523 #ifdef _POSIX_TTY_NAME_MAX
524 return _POSIX_TTY_NAME_MAX;
525 #else
526 return -1;
527 #endif
529 case _SC_THREAD_DESTRUCTOR_ITERATIONS:
530 #ifdef _POSIX_THREAD_DESTRUCTOR_ITERATIONS
531 return _POSIX_THREAD_DESTRUCTOR_ITERATIONS;
532 #else
533 return -1;
534 #endif
536 case _SC_THREAD_KEYS_MAX:
537 #ifdef PTHREAD_KEYS_MAX
538 return PTHREAD_KEYS_MAX;
539 #else
540 return -1;
541 #endif
543 case _SC_THREAD_STACK_MIN:
544 #ifdef PTHREAD_STACK_MIN
545 return PTHREAD_STACK_MIN;
546 #else
547 return -1;
548 #endif
550 case _SC_THREAD_THREADS_MAX:
551 #ifdef PTHREAD_THREADS_MAX
552 return PTHREAD_THREADS_MAX;
553 #else
554 return -1;
555 #endif
557 case _SC_THREAD_ATTR_STACKADDR:
558 #ifdef _POSIX_THREAD_ATTR_STACKADDR
559 return 1;
560 #else
561 return -1;
562 #endif
564 case _SC_THREAD_ATTR_STACKSIZE:
565 #ifdef _POSIX_THREAD_ATTR_STACKSIZE
566 return 1;
567 #else
568 return -1;
569 #endif
571 case _SC_THREAD_PRIORITY_SCHEDULING:
572 #ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
573 return 1;
574 #else
575 return -1;
576 #endif
578 case _SC_THREAD_PRIO_INHERIT:
579 #ifdef _POSIX_THREAD_PRIO_INHERIT
580 return 1;
581 #else
582 return -1;
583 #endif
585 case _SC_THREAD_PRIO_PROTECT:
586 #ifdef _POSIX_THREAD_PRIO_PROTECT
587 return 1;
588 #else
589 return -1;
590 #endif
592 case _SC_THREAD_PROCESS_SHARED:
593 #ifdef _POSIX_THREAD_PROCESS_SHARED
594 return 1;
595 #else
596 return -1;
597 #endif
601 weak_alias (__sysconf, sysconf)