]> git.ipfire.org Git - thirdparty/glibc.git/blob - sysdeps/posix/sysconf.c
Wed May 1 09:10:04 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
[thirdparty/glibc.git] / sysdeps / posix / sysconf.c
1 /* Copyright (C) 1991, 1993, 1995, 1996 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
88 case _SC_SAVED_IDS:
89 #ifdef _POSIX_SAVED_IDS
90 return 1;
91 #else
92 return -1;
93 #endif
94
95 case _SC_REALTIME_SIGNALS:
96 #ifdef _POSIX_REALTIME_SIGNALS
97 return 1;
98 #else
99 return -1;
100 #endif
101
102 case _SC_PRIORITY_SCHEDULING:
103 #ifdef _POSIX_PRIORITY_SCHEDULING
104 return 1;
105 #else
106 return -1;
107 #endif
108
109 case _SC_TIMERS:
110 #ifdef _POSIX_TIMERS
111 return 1;
112 #else
113 return -1;
114 #endif
115
116 case _SC_ASYNCHRONOUS_IO:
117 #ifdef _POSIX_ASYNCHRONOUS_IO
118 return 1;
119 #else
120 return -1;
121 #endif
122
123 case _SC_PRIORITIZED_IO:
124 #ifdef _POSIX_PRIORITIZED_IO
125 return 1;
126 #else
127 return -1;
128 #endif
129
130 case _SC_SYNCHRONIZED_IO:
131 #ifdef _POSIX_SYNCHRONIZED_IO
132 return 1;
133 #else
134 return -1;
135 #endif
136
137 case _SC_FSYNC:
138 #ifdef _POSIX_FSYNC
139 return 1;
140 #else
141 return -1;
142 #endif
143
144 case _SC_MAPPED_FILES:
145 #ifdef _POSIX_MAPPED_FILES
146 return 1;
147 #else
148 return -1;
149 #endif
150
151 case _SC_MEMLOCK:
152 #ifdef _POSIX_MEMLOCK
153 return 1;
154 #else
155 return -1;
156 #endif
157
158 case _SC_MEMLOCK_RANGE:
159 #ifdef _POSIX_MEMLOCK_RANGE
160 return 1;
161 #else
162 return -1;
163 #endif
164
165 case _SC_MEMORY_PROTECTION:
166 #ifdef _POSIX_MEMORY_PROTECTION
167 return 1;
168 #else
169 return -1;
170 #endif
171
172 case _SC_MESSAGE_PASSING:
173 #ifdef _POSIX_MESSAGE_PASSING
174 return 1;
175 #else
176 return -1;
177 #endif
178
179 case _SC_SEMAPHORES:
180 #ifdef _POSIX_SEMAPHORES
181 return 1;
182 #else
183 return -1;
184 #endif
185
186 case _SC_SHARED_MEMORY_OBJECTS:
187 #ifdef _POSIX_SHARED_MEMORY_OBJECTS
188 return 1;
189 #else
190 return -1;
191 #endif
192
193 case _SC_VERSION:
194 return _POSIX_VERSION;
195
196 case _SC_PAGESIZE:
197 return __getpagesize ();
198
199 case _SC_BC_BASE_MAX:
200 #ifdef BC_BASE_MAX
201 return BC_BASE_MAX;
202 #else
203 return -1;
204 #endif
205
206 case _SC_BC_DIM_MAX:
207 #ifdef BC_DIM_MAX
208 return BC_DIM_MAX;
209 #else
210 return -1;
211 #endif
212
213 case _SC_BC_SCALE_MAX:
214 #ifdef BC_SCALE_MAX
215 return BC_SCALE_MAX;
216 #else
217 return -1;
218 #endif
219
220 case _SC_BC_STRING_MAX:
221 #ifdef BC_STRING_MAX
222 return BC_STRING_MAX;
223 #else
224 return -1;
225 #endif
226
227 case _SC_EQUIV_CLASS_MAX:
228 #ifdef EQUIV_CLASS_MAX
229 return EQUIV_CLASS_MAX;
230 #else
231 return -1;
232 #endif
233
234 case _SC_EXPR_NEST_MAX:
235 #ifdef EXPR_NEST_MAX
236 return EXPR_NEST_MAX;
237 #else
238 return -1;
239 #endif
240
241 case _SC_LINE_MAX:
242 #ifdef LINE_MAX
243 return LINE_MAX;
244 #else
245 return -1;
246 #endif
247
248 case _SC_RE_DUP_MAX:
249 #ifdef RE_DUP_MAX
250 return RE_DUP_MAX;
251 #else
252 return -1;
253 #endif
254
255 case _SC_CHARCLASS_NAME_MAX:
256 #ifdef CHARCLASS_NAME_MAX
257 return CHARCLASS_NAME_MAX;
258 #else
259 return -1;
260 #endif
261
262 case _SC_2_VERSION:
263 /* This is actually supposed to return the version
264 of the 1003.2 utilities on the system {POSIX2_VERSION}. */
265 return _POSIX2_C_VERSION;
266
267 case _SC_2_C_BIND:
268 #ifdef _POSIX2_C_BIND
269 return _POSIX2_C_BIND;
270 #else
271 return -1;
272 #endif
273
274 case _SC_2_C_DEV:
275 #ifdef _POSIX2_C_DEV
276 return _POSIX2_C_DEV;
277 #else
278 return -1;
279 #endif
280
281 case _SC_2_FORT_DEV:
282 #ifdef _POSIX2_FORT_DEV
283 return _POSIX2_FORT_DEV;
284 #else
285 return -1;
286 #endif
287
288 case _SC_2_LOCALEDEF:
289 #ifdef _POSIX2_LOCALEDEF
290 return _POSIX2_LOCALEDEF;
291 #else
292 return -1;
293 #endif
294
295 case _SC_2_SW_DEV:
296 #ifdef _POSIX2_SW_DEV
297 return _POSIX2_SW_DEV;
298 #else
299 return -1;
300 #endif
301 }
302 }
303
304 weak_alias (__sysconf, sysconf)