(__sysconf): Correct names of _SC_PBS constants and add _SC_STREAMS.
[kopensolaris-gnu/glibc.git] / sysdeps / posix / sysconf.c
1 /* Copyright (C) 1991,93,95,96,97,99,2000,2001 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
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 not,
16    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17    Boston, MA 02111-1307, USA.  */
18
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>
27 #include <sys/sysinfo.h>
28 #include <sys/types.h>
29 #include <regex.h>
30
31
32 /* Get the value of the system variable NAME.  */
33 long int
34 __sysconf (name)
35      int name;
36 {
37   switch (name)
38     {
39     default:
40       __set_errno (EINVAL);
41       return -1;
42
43     case _SC_ARG_MAX:
44 #ifdef  ARG_MAX
45       return ARG_MAX;
46 #else
47       return -1;
48 #endif
49
50     case _SC_CHILD_MAX:
51 #ifdef  CHILD_MAX
52       return CHILD_MAX;
53 #else
54       return -1;
55 #endif
56
57     case _SC_CLK_TCK:
58       return __getclktck ();
59
60     case _SC_NGROUPS_MAX:
61 #ifdef  NGROUPS_MAX
62       return NGROUPS_MAX;
63 #else
64       return -1;
65 #endif
66
67     case _SC_OPEN_MAX:
68       return __getdtablesize ();
69
70     case _SC_STREAM_MAX:
71 #ifdef  STREAM_MAX
72       return STREAM_MAX;
73 #else
74       return FOPEN_MAX;
75 #endif
76
77     case _SC_TZNAME_MAX:
78       return __tzname_max ();
79
80     case _SC_JOB_CONTROL:
81 #ifdef  _POSIX_JOB_CONTROL
82       return 1;
83 #else
84       return -1;
85 #endif
86
87     case _SC_SAVED_IDS:
88 #ifdef  _POSIX_SAVED_IDS
89       return 1;
90 #else
91       return -1;
92 #endif
93
94     case _SC_REALTIME_SIGNALS:
95 #ifdef  _POSIX_REALTIME_SIGNALS
96       return 1;
97 #else
98       return -1;
99 #endif
100
101     case _SC_PRIORITY_SCHEDULING:
102 #ifdef  _POSIX_PRIORITY_SCHEDULING
103       return 1;
104 #else
105       return -1;
106 #endif
107
108     case _SC_TIMERS:
109 #ifdef  _POSIX_TIMERS
110       return 1;
111 #else
112       return -1;
113 #endif
114
115     case _SC_ASYNCHRONOUS_IO:
116 #ifdef  _POSIX_ASYNCHRONOUS_IO
117       return 1;
118 #else
119       return -1;
120 #endif
121
122     case _SC_PRIORITIZED_IO:
123 #ifdef  _POSIX_PRIORITIZED_IO
124       return 1;
125 #else
126       return -1;
127 #endif
128
129     case _SC_SYNCHRONIZED_IO:
130 #ifdef  _POSIX_SYNCHRONIZED_IO
131       return 1;
132 #else
133       return -1;
134 #endif
135
136     case _SC_FSYNC:
137 #ifdef  _POSIX_FSYNC
138       return 1;
139 #else
140       return -1;
141 #endif
142
143     case _SC_MAPPED_FILES:
144 #ifdef  _POSIX_MAPPED_FILES
145       return 1;
146 #else
147       return -1;
148 #endif
149
150     case _SC_MEMLOCK:
151 #ifdef  _POSIX_MEMLOCK
152       return 1;
153 #else
154       return -1;
155 #endif
156
157     case _SC_MEMLOCK_RANGE:
158 #ifdef  _POSIX_MEMLOCK_RANGE
159       return 1;
160 #else
161       return -1;
162 #endif
163
164     case _SC_MEMORY_PROTECTION:
165 #ifdef  _POSIX_MEMORY_PROTECTION
166       return 1;
167 #else
168       return -1;
169 #endif
170
171     case _SC_MESSAGE_PASSING:
172 #ifdef  _POSIX_MESSAGE_PASSING
173       return 1;
174 #else
175       return -1;
176 #endif
177
178     case _SC_SEMAPHORES:
179 #ifdef  _POSIX_SEMAPHORES
180       return 1;
181 #else
182       return -1;
183 #endif
184
185     case _SC_SHARED_MEMORY_OBJECTS:
186 #ifdef  _POSIX_SHARED_MEMORY_OBJECTS
187       return 1;
188 #else
189       return -1;
190 #endif
191
192     case _SC_VERSION:
193       return _POSIX_VERSION;
194
195     case _SC_PAGESIZE:
196       return __getpagesize ();
197
198     case _SC_AIO_LISTIO_MAX:
199 #ifdef  AIO_LISTIO_MAX
200       return AIO_LISTIO_MAX;
201 #else
202       return -1;
203 #endif
204
205     case _SC_AIO_MAX:
206 #ifdef  AIO_MAX
207       return AIO_MAX;
208 #else
209       return -1;
210 #endif
211
212     case _SC_AIO_PRIO_DELTA_MAX:
213 #ifdef  AIO_PRIO_DELTA_MAX
214       return AIO_PRIO_DELTA_MAX;
215 #else
216       return -1;
217 #endif
218
219     case _SC_DELAYTIMER_MAX:
220 #ifdef  DELAYTIMER_MAX
221       return DELAYTIMER_MAX;
222 #else
223       return -1;
224 #endif
225
226     case _SC_MQ_OPEN_MAX:
227 #ifdef  MQ_OPEN_MAX
228       return MQ_OPEN_MAX;
229 #else
230       return -1;
231 #endif
232
233     case _SC_MQ_PRIO_MAX:
234 #ifdef  MQ_PRIO_MAX
235       return MQ_PRIO_MAX;
236 #else
237       return -1;
238 #endif
239
240     case _SC_RTSIG_MAX:
241 #ifdef  RTSIG_MAX
242       return RTSIG_MAX;
243 #else
244       return -1;
245 #endif
246
247     case _SC_SEM_NSEMS_MAX:
248 #ifdef  SEM_NSEMS_MAX
249       return SEM_NSEMS_MAX;
250 #else
251       return -1;
252 #endif
253
254     case _SC_SEM_VALUE_MAX:
255 #ifdef  SEM_VALUE_MAX
256       return SEM_VALUE_MAX;
257 #else
258       return -1;
259 #endif
260
261     case _SC_SIGQUEUE_MAX:
262 #ifdef  SIGQUEUE_MAX
263       return SIGQUEUE_MAX;
264 #else
265       return -1;
266 #endif
267
268     case _SC_TIMER_MAX:
269 #ifdef  TIMER_MAX
270       return TIMER_MAX;
271 #else
272       return -1;
273 #endif
274
275     case _SC_BC_BASE_MAX:
276 #ifdef  BC_BASE_MAX
277       return BC_BASE_MAX;
278 #else
279       return -1;
280 #endif
281
282     case _SC_BC_DIM_MAX:
283 #ifdef  BC_DIM_MAX
284       return BC_DIM_MAX;
285 #else
286       return -1;
287 #endif
288
289     case _SC_BC_SCALE_MAX:
290 #ifdef  BC_SCALE_MAX
291       return BC_SCALE_MAX;
292 #else
293       return -1;
294 #endif
295
296     case _SC_BC_STRING_MAX:
297 #ifdef  BC_STRING_MAX
298       return BC_STRING_MAX;
299 #else
300       return -1;
301 #endif
302
303     case _SC_COLL_WEIGHTS_MAX:
304 #ifdef  COLL_WEIGHTS_MAX
305       return COLL_WEIGHTS_MAX;
306 #else
307       return -1;
308 #endif
309
310     case _SC_EXPR_NEST_MAX:
311 #ifdef  EXPR_NEST_MAX
312       return EXPR_NEST_MAX;
313 #else
314       return -1;
315 #endif
316
317     case _SC_LINE_MAX:
318 #ifdef  LINE_MAX
319       return LINE_MAX;
320 #else
321       return -1;
322 #endif
323
324     case _SC_RE_DUP_MAX:
325 #ifdef  RE_DUP_MAX
326       return RE_DUP_MAX;
327 #else
328       return -1;
329 #endif
330
331     case _SC_CHARCLASS_NAME_MAX:
332 #ifdef  CHARCLASS_NAME_MAX
333       return CHARCLASS_NAME_MAX;
334 #else
335       return -1;
336 #endif
337
338     case _SC_PII:
339 #ifdef  _POSIX_PII
340       return 1;
341 #else
342       return -1;
343 #endif
344
345     case _SC_PII_XTI:
346 #ifdef  _POSIX_PII_XTI
347       return 1;
348 #else
349       return -1;
350 #endif
351
352     case _SC_PII_SOCKET:
353 #ifdef  _POSIX_PII_SOCKET
354       return 1;
355 #else
356       return -1;
357 #endif
358
359     case _SC_PII_INTERNET:
360 #ifdef  _POSIX_PII_INTERNET
361       return 1;
362 #else
363       return -1;
364 #endif
365
366     case _SC_PII_OSI:
367 #ifdef  _POSIX_PII_OSI
368       return 1;
369 #else
370       return -1;
371 #endif
372
373     case _SC_POLL:
374 #ifdef  _POSIX_POLL
375       return 1;
376 #else
377       return -1;
378 #endif
379
380     case _SC_SELECT:
381 #ifdef  _POSIX_SELECT
382       return 1;
383 #else
384       return -1;
385 #endif
386
387     case _SC_UIO_MAXIOV:
388 #ifdef  UIO_MAXIOV
389       return UIO_MAXIOV;
390 #else
391       return -1;
392 #endif
393
394     case _SC_PII_INTERNET_STREAM:
395 #ifdef  _POSIX_PII_INTERNET_STREAM
396       return 1;
397 #else
398       return -1;
399 #endif
400
401     case _SC_PII_INTERNET_DGRAM:
402 #ifdef  _POSIX_PII_INTERNET_DGRAM
403       return 1;
404 #else
405       return -1;
406 #endif
407
408     case _SC_PII_OSI_COTS:
409 #ifdef  _POSIX_PII_OSI_COTS
410       return 1;
411 #else
412       return -1;
413 #endif
414
415     case _SC_PII_OSI_CLTS:
416 #ifdef  _POSIX_PII_OSI_CLTS
417       return 1;
418 #else
419       return -1;
420 #endif
421
422     case _SC_PII_OSI_M:
423 #ifdef  _POSIX_PII_OSI_M
424       return 1;
425 #else
426       return -1;
427 #endif
428
429     case _SC_T_IOV_MAX:
430 #ifdef  _T_IOV_MAX
431       return _T_IOV_MAX;
432 #else
433       return -1;
434 #endif
435
436     case _SC_2_VERSION:
437       return _POSIX2_VERSION;
438
439     case _SC_2_C_BIND:
440 #ifdef  _POSIX2_C_BIND
441       return _POSIX2_C_BIND;
442 #else
443       return -1;
444 #endif
445
446     case _SC_2_C_DEV:
447 #ifdef  _POSIX2_C_DEV
448       return _POSIX2_C_DEV;
449 #else
450       return -1;
451 #endif
452
453     case _SC_2_C_VERSION:
454 #ifdef  _POSIX2_C_VERSION
455       return _POSIX2_C_VERSION;
456 #else
457       return -1;
458 #endif
459
460     case _SC_2_FORT_DEV:
461 #ifdef  _POSIX2_FORT_DEV
462       return _POSIX2_FORT_DEV;
463 #else
464       return -1;
465 #endif
466
467     case _SC_2_LOCALEDEF:
468 #ifdef  _POSIX2_LOCALEDEF
469       return _POSIX2_LOCALEDEF;
470 #else
471       return -1;
472 #endif
473
474     case _SC_2_SW_DEV:
475 #ifdef  _POSIX2_SW_DEV
476       return _POSIX2_SW_DEV;
477 #else
478       return -1;
479 #endif
480
481     case _SC_2_CHAR_TERM:
482 #ifdef  _POSIX2_CHAR_TERM
483       return _POSIX2_CHAR_TERM;
484 #else
485       return -1;
486 #endif
487
488     case _SC_2_UPE:
489 #ifdef  _POSIX2_UPE
490       return _POSIX2_UPE;
491 #else
492       return -1;
493 #endif
494
495       /* POSIX 1003.1c (POSIX Threads).  */
496     case _SC_THREADS:
497 #ifdef  _POSIX_THREADS
498       return 1;
499 #else
500       return -1;
501 #endif
502
503     case _SC_THREAD_SAFE_FUNCTIONS:
504 #ifdef  _POSIX_THREAD_SAFE_FUNCTIONS
505       return 1;
506 #else
507       return -1;
508 #endif
509
510     case _SC_GETGR_R_SIZE_MAX:
511 #ifdef  NSS_BUFLEN_GROUP
512       return NSS_BUFLEN_GROUP;
513 #else
514       return -1;
515 #endif
516
517     case _SC_GETPW_R_SIZE_MAX:
518 #ifdef  NSS_BUFLEN_PASSWD
519       return NSS_BUFLEN_PASSWD;
520 #else
521       return -1;
522 #endif
523
524     case _SC_LOGIN_NAME_MAX:
525 #ifdef  _POSIX_LOGIN_NAME_MAX
526       return _POSIX_LOGIN_NAME_MAX;
527 #else
528       return -1;
529 #endif
530
531     case _SC_TTY_NAME_MAX:
532 #ifdef  _POSIX_TTY_NAME_MAX
533       return _POSIX_TTY_NAME_MAX;
534 #else
535       return -1;
536 #endif
537
538     case _SC_THREAD_DESTRUCTOR_ITERATIONS:
539 #ifdef  _POSIX_THREAD_DESTRUCTOR_ITERATIONS
540       return _POSIX_THREAD_DESTRUCTOR_ITERATIONS;
541 #else
542       return -1;
543 #endif
544
545     case _SC_THREAD_KEYS_MAX:
546 #ifdef  PTHREAD_KEYS_MAX
547       return PTHREAD_KEYS_MAX;
548 #else
549       return -1;
550 #endif
551
552     case _SC_THREAD_STACK_MIN:
553 #ifdef  PTHREAD_STACK_MIN
554       return PTHREAD_STACK_MIN;
555 #else
556       return -1;
557 #endif
558
559     case _SC_THREAD_THREADS_MAX:
560 #ifdef  PTHREAD_THREADS_MAX
561       return PTHREAD_THREADS_MAX;
562 #else
563       return -1;
564 #endif
565
566     case _SC_THREAD_ATTR_STACKADDR:
567 #ifdef  _POSIX_THREAD_ATTR_STACKADDR
568       return 1;
569 #else
570       return -1;
571 #endif
572
573     case _SC_THREAD_ATTR_STACKSIZE:
574 #ifdef  _POSIX_THREAD_ATTR_STACKSIZE
575       return 1;
576 #else
577       return -1;
578 #endif
579
580     case _SC_THREAD_PRIORITY_SCHEDULING:
581 #ifdef  _POSIX_THREAD_PRIORITY_SCHEDULING
582       return 1;
583 #else
584       return -1;
585 #endif
586
587     case _SC_THREAD_PRIO_INHERIT:
588 #ifdef  _POSIX_THREAD_PRIO_INHERIT
589       return 1;
590 #else
591       return -1;
592 #endif
593
594     case _SC_THREAD_PRIO_PROTECT:
595 #ifdef  _POSIX_THREAD_PRIO_PROTECT
596       return 1;
597 #else
598       return -1;
599 #endif
600
601     case _SC_THREAD_PROCESS_SHARED:
602 #ifdef  _POSIX_THREAD_PROCESS_SHARED
603       return 1;
604 #else
605       return -1;
606 #endif
607
608     case _SC_NPROCESSORS_CONF:
609       return __get_nprocs_conf ();
610
611     case _SC_NPROCESSORS_ONLN:
612       return __get_nprocs ();
613
614     case _SC_PHYS_PAGES:
615       return __get_phys_pages ();
616
617     case _SC_AVPHYS_PAGES:
618       return __get_avphys_pages ();
619
620     case _SC_ATEXIT_MAX:
621       /* We have no limit since we use lists.  */
622       return INT_MAX;
623
624     case _SC_PASS_MAX:
625       /* We have no limit but since the return value might be used to
626          allocate a buffer we restrict the value.  */
627       return BUFSIZ;
628
629     case _SC_XOPEN_VERSION:
630       return _XOPEN_VERSION;
631
632     case _SC_XOPEN_XCU_VERSION:
633       return _XOPEN_XCU_VERSION;
634
635     case _SC_XOPEN_UNIX:
636       return _XOPEN_UNIX;
637
638     case _SC_XOPEN_CRYPT:
639 #ifdef  _XOPEN_CRYPT
640       return _XOPEN_CRYPT;
641 #else
642       return -1;
643 #endif
644
645     case _SC_XOPEN_ENH_I18N:
646 #ifdef  _XOPEN_ENH_I18N
647       return _XOPEN_ENH_I18N;
648 #else
649       return -1;
650 #endif
651
652     case _SC_XOPEN_SHM:
653 #ifdef  _XOPEN_SHM
654       return _XOPEN_SHM;
655 #else
656       return -1;
657 #endif
658
659     case _SC_XOPEN_XPG2:
660 #ifdef  _XOPEN_XPG2
661       return _XOPEN_XPG2;
662 #else
663       return -1;
664 #endif
665
666     case _SC_XOPEN_XPG3:
667 #ifdef  _XOPEN_XPG3
668       return _XOPEN_XPG3;
669 #else
670       return -1;
671 #endif
672
673     case _SC_XOPEN_XPG4:
674 #ifdef  _XOPEN_XPG4
675       return _XOPEN_XPG4;
676 #else
677       return -1;
678 #endif
679
680     case _SC_CHAR_BIT:
681       return CHAR_BIT;
682
683     case _SC_CHAR_MAX:
684       return CHAR_MAX;
685
686     case _SC_CHAR_MIN:
687       return CHAR_MIN;
688
689     case _SC_INT_MAX:
690       return INT_MAX;
691
692     case _SC_INT_MIN:
693       return INT_MIN;
694
695     case _SC_LONG_BIT:
696       return sizeof (long int) * CHAR_BIT;
697
698     case _SC_WORD_BIT:
699       return sizeof (int) * CHAR_BIT;
700
701     case _SC_MB_LEN_MAX:
702       return MB_LEN_MAX;
703
704     case _SC_NZERO:
705       return NZERO;
706
707     case _SC_SSIZE_MAX:
708       return _POSIX_SSIZE_MAX;
709
710     case _SC_SCHAR_MAX:
711       return SCHAR_MAX;
712
713     case _SC_SCHAR_MIN:
714       return SCHAR_MIN;
715
716     case _SC_SHRT_MAX:
717       return SHRT_MAX;
718
719     case _SC_SHRT_MIN:
720       return SHRT_MIN;
721
722     case _SC_UCHAR_MAX:
723       return UCHAR_MAX;
724
725     case _SC_UINT_MAX:
726       return UINT_MAX;
727
728     case _SC_ULONG_MAX:
729       return ULONG_MAX;
730
731     case _SC_USHRT_MAX:
732       return USHRT_MAX;
733
734     case _SC_NL_ARGMAX:
735 #ifdef  NL_ARGMAX
736       return NL_ARGMAX;
737 #else
738       return -1;
739 #endif
740
741     case _SC_NL_LANGMAX:
742 #ifdef  NL_LANGMAX
743       return NL_LANGMAX;
744 #else
745       return -1;
746 #endif
747
748     case _SC_NL_MSGMAX:
749 #ifdef  NL_MSGMAX
750       return NL_MSGMAX;
751 #else
752       return -1;
753 #endif
754
755     case _SC_NL_NMAX:
756 #ifdef  NL_NMAX
757       return NL_NMAX;
758 #else
759       return -1;
760 #endif
761
762     case _SC_NL_SETMAX:
763 #ifdef  NL_SETMAX
764       return NL_SETMAX;
765 #else
766       return -1;
767 #endif
768
769     case _SC_NL_TEXTMAX:
770 #ifdef  NL_TEXTMAX
771       return NL_TEXTMAX;
772 #else
773       return -1;
774 #endif
775
776     case _SC_XBS5_ILP32_OFF32:
777 #ifdef _XBS5_ILP32_OFF32
778       return _XBS5_ILP32_OFF32;
779 #else
780       return -1;
781 #endif
782     case _SC_XBS5_ILP32_OFFBIG:
783 #ifdef _XBS5_ILP32_OFFBIG
784       return _XBS5_ILP32_OFFBIG;
785 #else
786       return -1;
787 #endif
788     case _SC_XBS5_LP64_OFF64:
789 #ifdef _XBS5_LP64_OFF64
790       return _XBS5_LP64_OFF64;
791 #else
792       return -1;
793 #endif
794     case _SC_XBS5_LPBIG_OFFBIG:
795 #ifdef _XBS5_LPBIG_OFFBIG
796       return _XBS5_LPBIG_OFFBIG;
797 #else
798       return -1;
799 #endif
800
801     case _SC_XOPEN_LEGACY:
802       return _XOPEN_LEGACY;
803
804     case _SC_XOPEN_REALTIME:
805 #ifdef _XOPEN_REALTIME
806       return _XOPEN_REALTIME;
807 #else
808       return -1;
809 #endif
810     case _SC_XOPEN_REALTIME_THREADS:
811 #ifdef _XOPEN_REALTIME_THREADS
812       return _XOPEN_REALTIME_THREADS;
813 #else
814       return -1;
815 #endif
816
817     case _SC_ADVISORY_INFO:
818 #ifdef _POSIX_ADVISORY_INFO
819       return _POSIX_ADVISORY_INFO;
820 #else
821       return -1;
822 #endif
823
824     case _SC_BARRIERS:
825 #ifdef _POSIX_BARRIERS
826       return _POSIX_BARRIERS;
827 #else
828       return -1;
829 #endif
830
831     case _SC_BASE:
832 #ifdef _POSIX_BASE
833       return _POSIX_BASE;
834 #else
835       return -1;
836 #endif
837     case _SC_C_LANG_SUPPORT:
838 #ifdef _POSIX_C_LANG_SUPPORT
839       return _POSIX_C_LANG_SUPPORT;
840 #else
841       return -1;
842 #endif
843     case _SC_C_LANG_SUPPORT_R:
844 #ifdef _POSIX_C_LANG_SUPPORT_R
845       return _POSIX_C_LANG_SUPPORT_R;
846 #else
847       return -1;
848 #endif
849
850     case _SC_CLOCK_SELECTION:
851 #ifdef _POSIX_CLOCK_SELECTION
852       return _POSIX_CLOCK_SELECTION;
853 #else
854       return -1;
855 #endif
856
857     case _SC_CPUTIME:
858 #ifdef _POSIX_CPUTIME
859       return _POSIX_CPUTIME;
860 #else
861       return -1;
862 #endif
863
864     case _SC_DEVICE_IO:
865 #ifdef _POSIX_DEVICE_IO
866       return _POSIX_DEVICE_IO;
867 #else
868       return -1;
869 #endif
870     case _SC_DEVICE_SPECIFIC:
871 #ifdef _POSIX_DEVICE_SPCIFIC
872       return _POSIX_DEVICE_SPECIFIC;
873 #else
874       return -1;
875 #endif
876     case _SC_DEVICE_SPECIFIC_R:
877 #ifdef _POSIX_DEVICE_SPCIFIC_R
878       return _POSIX_DEVICE_SPECIFIC_R;
879 #else
880       return -1;
881 #endif
882
883     case _SC_FD_MGMT:
884 #ifdef _POSIX_FD_MGMT
885       return _POSIX_FD_MGMT;
886 #else
887       return -1;
888 #endif
889
890     case _SC_FIFO:
891 #ifdef _POSIX_FIFO
892       return _POSIX_FIFO;
893 #else
894       return -1;
895 #endif
896     case _SC_PIPE:
897 #ifdef _POSIX_PIPE
898       return _POSIX_PIPE;
899 #else
900       return -1;
901 #endif
902
903     case _SC_FILE_ATTRIBUTES:
904 #ifdef _POSIX_FILE_ATTRIBUTES
905       return _POSIX_FILE_ATTRIBUTES;
906 #else
907       return -1;
908 #endif
909     case _SC_FILE_LOCKING:
910 #ifdef _POSIX_FILE_LOCKING
911       return _POSIX_FILE_LOCKING;
912 #else
913       return -1;
914 #endif
915     case _SC_FILE_SYSTEM:
916 #ifdef _POSIX_FILE_SYSTEM
917       return _POSIX_FILE_SYSTEM;
918 #else
919       return -1;
920 #endif
921
922     case _SC_MONOTONIC_CLOCK:
923 #ifdef _POSIX_MONOTONIC_CLOCK
924       return _POSIX_MONOTONIC_CLOCK;
925 #else
926       return -1;
927 #endif
928
929     case _SC_MULTIPLE_PROCESS:
930 #ifdef _POSIX_MULTIPLE_PROCESS
931       return _POSIX_MULTIPLE_PROCESS;
932 #else
933       return -1;
934 #endif
935     case _SC_SINGLE_PROCESS:
936 #ifdef _POSIX_SINGLE_PROCESS
937       return _POSIX_SINGLE_PROCESS;
938 #else
939       return -1;
940 #endif
941
942     case _SC_NETWORKING:
943 #ifdef _POSIX_NETWORKING
944       return _POSIX_NETWORKING;
945 #else
946       return -1;
947 #endif
948
949     case _SC_READER_WRITER_LOCKS:
950 #ifdef _POSIX_READER_WRITER_LOCKS
951       return _POSIX_READER_WRITER_LOCKS;
952 #else
953       return -1;
954 #endif
955     case _SC_SPIN_LOCKS:
956 #ifdef _POSIX_SPIN_LOCKS
957       return _POSIX_SPIN_LOCKS;
958 #else
959       return -1;
960 #endif
961
962     case _SC_REGEXP:
963 #ifdef _POSIX_REGEXP
964       return _POSIX_REGEXP;
965 #else
966       return -1;
967 #endif
968     case _SC_REGEX_VERSION:
969 #ifdef _POSIX_REGEX_VERSION
970       return _POSIX_REGEX_VERSION;
971 #else
972       return -1;
973 #endif
974
975     case _SC_SHELL:
976 #ifdef _POSIX_SHELL
977       return _POSIX_SHELL;
978 #else
979       return -1;
980 #endif
981
982     case _SC_SIGNALS:
983 #ifdef _POSUX_SIGNALS
984       return _POSIX_SIGNALS;
985 #else
986       return -1;
987 #endif
988
989     case _SC_SPAWN:
990 #ifdef _POSIX_SPAWN
991       return _POSIX_SPAWN;
992 #else
993       return -1;
994 #endif
995
996     case _SC_SPORADIC_SERVER:
997 #ifdef _POSIX_SPORADIC_SERVER
998       return _POSIX_SPORADIC_SERVER;
999 #else
1000       return -1;
1001 #endif
1002     case _SC_THREAD_SPORADIC_SERVER:
1003 #ifdef _POSIX_THREAD_SPORADIC_SERVER
1004       return _POSIX_THREAD_SPORADIC_SERVER;
1005 #else
1006       return -1;
1007 #endif
1008
1009     case _SC_SYSTEM_DATABASE:
1010 #ifdef _POSIX_SYSTEM_DATABASE
1011       return _POSIX_SYSTEM_DATABASE;
1012 #else
1013       return -1;
1014 #endif
1015     case _SC_SYSTEM_DATABASE_R:
1016 #ifdef _POSIX_SYSTEM_DATABASE_R
1017       return _POSIX_SYSTEM_DATABASE_R;
1018 #else
1019       return -1;
1020 #endif
1021
1022     case _SC_THREAD_CPUTIME:
1023 #ifdef _POSIX_THREAD_CPUTIME
1024       return _POSIX_THREAD_CPUTIME;
1025 #else
1026       return -1;
1027 #endif
1028
1029     case _SC_TIMEOUTS:
1030 #ifdef _POSIX_TIMEOUTS
1031       return _POSIX_TIMEOUTS;
1032 #else
1033       return -1;
1034 #endif
1035
1036     case _SC_TYPED_MEMORY_OBJECTS:
1037 #ifdef _POSIX_TYPED_MEMORY_OBJECTS
1038       return _POSIX_TYPED_MEMORY_OBJECTS;
1039 #else
1040       return -1;
1041 #endif
1042
1043     case _SC_USER_GROUPS:
1044 #ifdef _POSIX_USER_GROUPS
1045       return _POSIX_USER_GROUPS;
1046 #else
1047       return -1;
1048 #endif
1049     case _SC_USER_GROUPS_R:
1050 #ifdef _POSIX_USER_GROUPS_R
1051       return _POSIX_USER_GROUPS_R;
1052 #else
1053       return -1;
1054 #endif
1055
1056     case _SC_2_PBS:
1057 #ifdef _POSIX2_PBS
1058       return _POSIX2_PBS;
1059 #else
1060       return -1;
1061 #endif
1062     case _SC_2_PBS_ACCOUNTING:
1063 #ifdef _POSIX2_PBS_ACCOUNTING
1064       return _POSIX2_PBS_ACCOUNTING;
1065 #else
1066       return -1;
1067 #endif
1068     case _SC_2_PBS_CHECKPOINT:
1069 #ifdef _POSIX2_PBS_CHECKPOINT
1070       return _POSIX2_PBS_CHECKPOINT;
1071 #else
1072       return -1;
1073 #endif
1074     case _SC_2_PBS_LOCATE:
1075 #ifdef _POSIX2_PBS_LOCATE
1076       return _POSIX2_PBS_LOCATE;
1077 #else
1078       return -1;
1079 #endif
1080     case _SC_2_PBS_TRACK:
1081 #ifdef _POSIX2_PBS_TRACK
1082       return _POSIX2_PBS_TRACK;
1083 #else
1084       return -1;
1085 #endif
1086
1087     case _SC_SYMLOOP:
1088 #ifdef SYMLOOP_MAX
1089       return SYMLOOP_MAX;
1090 #else
1091       return -1;
1092 #endif
1093
1094     case _SC_STREAMS:
1095 #ifdef _XOPEN_STREAMS
1096       return _XOPEN_STREAMS;
1097 #else
1098       return -1;
1099 #endif
1100     }
1101 }
1102
1103 #undef __sysconf
1104 weak_alias (__sysconf, sysconf)