Updated from GMP 1.906.7
[kopensolaris-gnu/glibc.git] / sysdeps / posix / sysconf.c
1 /* Copyright (C) 1991, 1993, 1995 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
16 not, write to the Free Software Foundation, Inc., 675 Mass Ave,
17 Cambridge, MA 02139, USA.  */
18
19 #include <ansidecl.h>
20 #include <errno.h>
21 #include <limits.h>
22 #include <unistd.h>
23 #include <stddef.h>
24 #include <stdio.h>
25 #include <time.h>
26
27 extern int EXFUN(__getdtablesize, (NOARGS));
28 extern size_t EXFUN(__getpagesize, (NOARGS));
29
30 /* Get the value of the system variable NAME.  */
31 long int
32 DEFUN(__sysconf, (name), int name)
33 {
34   switch (name)
35     {
36     default:
37       errno = EINVAL;
38       return -1;
39
40     case _SC_ARG_MAX:
41 #ifdef  ARG_MAX
42       return ARG_MAX;
43 #else
44       return -1;
45 #endif
46
47     case _SC_CHILD_MAX:
48 #ifdef  CHILD_MAX
49       return CHILD_MAX;
50 #else
51       return -1;
52 #endif
53
54     case _SC_CLK_TCK:
55 #ifdef  CLK_TCK
56       return CLK_TCK;
57 #else
58       return 60;
59 #endif
60
61     case _SC_NGROUPS_MAX:
62 #ifdef  NGROUPS_MAX
63       return NGROUPS_MAX;
64 #else
65       return -1;
66 #endif
67
68     case _SC_OPEN_MAX:
69       return __getdtablesize ();
70
71     case _SC_STREAM_MAX:
72 #ifdef  STREAM_MAX
73       return STREAM_MAX;
74 #else
75       return FOPEN_MAX;
76 #endif
77
78     case _SC_TZNAME_MAX:
79       return __tzname_max ();
80
81     case _SC_JOB_CONTROL:
82 #ifdef  _POSIX_JOB_CONTROL
83       return 1;
84 #else
85       return -1;
86 #endif
87     case _SC_SAVED_IDS:
88 #ifdef  _POSIX_SAVED_IDS
89       return 1;
90 #else
91       return -1;
92 #endif
93     case _SC_VERSION:
94       return _POSIX_VERSION;
95
96     case _SC_PAGESIZE:
97       return __getpagesize ();
98
99     case _SC_BC_BASE_MAX:
100 #ifdef  BC_BASE_MAX
101       return BC_BASE_MAX;
102 #else
103       return -1;
104 #endif
105
106     case _SC_BC_DIM_MAX:
107 #ifdef  BC_DIM_MAX
108       return BC_DIM_MAX;
109 #else
110       return -1;
111 #endif
112
113     case _SC_BC_SCALE_MAX:
114 #ifdef  BC_SCALE_MAX
115       return BC_SCALE_MAX;
116 #else
117       return -1;
118 #endif
119
120     case _SC_BC_STRING_MAX:
121 #ifdef  BC_STRING_MAX
122       return BC_STRING_MAX;
123 #else
124       return -1;
125 #endif
126
127     case _SC_EQUIV_CLASS_MAX:
128 #ifdef  EQUIV_CLASS_MAX
129       return EQUIV_CLASS_MAX;
130 #else
131       return -1;
132 #endif
133
134     case _SC_EXPR_NEST_MAX:
135 #ifdef  EXPR_NEST_MAX
136       return EXPR_NEST_MAX;
137 #else
138       return -1;
139 #endif
140
141     case _SC_LINE_MAX:
142 #ifdef  LINE_MAX
143       return LINE_MAX;
144 #else
145       return -1;
146 #endif
147
148     case _SC_RE_DUP_MAX:
149 #ifdef  RE_DUP_MAX
150       return RE_DUP_MAX;
151 #else
152       return -1;
153 #endif
154
155
156     case _SC_2_VERSION:
157       /* This is actually supposed to return the version
158          of the 1003.2 utilities on the system {POSIX2_VERSION}.  */
159       return _POSIX2_C_VERSION;
160
161     case _SC_2_C_BIND:
162 #ifdef  _POSIX2_C_BIND
163       return _POSIX2_C_BIND;
164 #else
165       return -1;
166 #endif
167
168     case _SC_2_C_DEV:
169 #ifdef  _POSIX2_C_DEV
170       return _POSIX2_C_DEV;
171 #else
172       return -1;
173 #endif
174
175     case _SC_2_FORT_DEV:
176 #ifdef  _POSIX2_FORT_DEV
177       return _POSIX2_FORT_DEV;
178 #else
179       return -1;
180 #endif
181
182     case _SC_2_LOCALEDEF:
183 #ifdef  _POSIX2_LOCALEDEF
184       return _POSIX2_LOCALEDEF;
185 #else
186       return -1;
187 #endif
188
189     case _SC_2_SW_DEV:
190 #ifdef  _POSIX2_SW_DEV
191       return _POSIX2_SW_DEV;
192 #else
193       return -1;
194 #endif
195     }
196 }
197
198 weak_alias (__sysconf, sysconf)