Mon Jun 24 19:57:01 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
[kopensolaris-gnu/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_AIO_LISTIO_MAX:
200 #ifdef  AIO_LISTIO_MAX
201       return AIO_LISTIO_MAX;
202 #else
203       return -1;
204 #endif
205
206     case _SC_AIO_MAX:
207 #ifdef  AIO_MAX
208       return AIO_MAX;
209 #else
210       return -1;
211 #endif
212
213     case _SC_AIO_PRIO_DELTA_MAX:
214 #ifdef  AIO_PRIO_DELTA_MAX
215       return AIO_PRIO_DELTA_MAX;
216 #else
217       return -1;
218 #endif
219
220     case _SC_DELAYTIMER_MAX:
221 #ifdef  DELAYTIMER_MAX
222       return DELAYTIMER_MAX;
223 #else
224       return -1;
225 #endif
226
227     case _SC_MQ_OPEN_MAX:
228 #ifdef  MQ_OPEN_MAX
229       return MQ_OPEN_MAX;
230 #else
231       return -1;
232 #endif
233
234     case _SC_MQ_PRIO_MAX:
235 #ifdef  MQ_PRIO_MAX
236       return MQ_PRIO_MAX;
237 #else
238       return -1;
239 #endif
240
241     case _SC_RTSIG_MAX:
242 #ifdef  RTSIG_MAX
243       return RTSIG_MAX;
244 #else
245       return -1;
246 #endif
247
248     case _SC_SEM_NSEMS_MAX:
249 #ifdef  SEM_NSEMS_MAX
250       return SEM_NSEMS_MAX;
251 #else
252       return -1;
253 #endif
254
255     case _SC_SEM_VALUE_MAX:
256 #ifdef  SEM_VALUE_MAX
257       return SEM_VALUE_MAX;
258 #else
259       return -1;
260 #endif
261
262     case _SC_SIGQUEUE_MAX:
263 #ifdef  SIGQUEUE_MAX
264       return SIGQUEUE_MAX;
265 #else
266       return -1;
267 #endif
268
269     case _SC_TIMER_MAX:
270 #ifdef  TIMER_MAX
271       return TIMER_MAX;
272 #else
273       return -1;
274 #endif
275
276     case _SC_BC_BASE_MAX:
277 #ifdef  BC_BASE_MAX
278       return BC_BASE_MAX;
279 #else
280       return -1;
281 #endif
282
283     case _SC_BC_DIM_MAX:
284 #ifdef  BC_DIM_MAX
285       return BC_DIM_MAX;
286 #else
287       return -1;
288 #endif
289
290     case _SC_BC_SCALE_MAX:
291 #ifdef  BC_SCALE_MAX
292       return BC_SCALE_MAX;
293 #else
294       return -1;
295 #endif
296
297     case _SC_BC_STRING_MAX:
298 #ifdef  BC_STRING_MAX
299       return BC_STRING_MAX;
300 #else
301       return -1;
302 #endif
303
304     case _SC_EQUIV_CLASS_MAX:
305 #ifdef  EQUIV_CLASS_MAX
306       return EQUIV_CLASS_MAX;
307 #else
308       return -1;
309 #endif
310
311     case _SC_EXPR_NEST_MAX:
312 #ifdef  EXPR_NEST_MAX
313       return EXPR_NEST_MAX;
314 #else
315       return -1;
316 #endif
317
318     case _SC_LINE_MAX:
319 #ifdef  LINE_MAX
320       return LINE_MAX;
321 #else
322       return -1;
323 #endif
324
325     case _SC_RE_DUP_MAX:
326 #ifdef  RE_DUP_MAX
327       return RE_DUP_MAX;
328 #else
329       return -1;
330 #endif
331
332     case _SC_CHARCLASS_NAME_MAX:
333 #ifdef  CHARCLASS_NAME_MAX
334       return CHARCLASS_NAME_MAX;
335 #else
336       return -1;
337 #endif
338
339     case _SC_2_VERSION:
340       /* This is actually supposed to return the version
341          of the 1003.2 utilities on the system {POSIX2_VERSION}.  */
342       return _POSIX2_C_VERSION;
343
344     case _SC_2_C_BIND:
345 #ifdef  _POSIX2_C_BIND
346       return _POSIX2_C_BIND;
347 #else
348       return -1;
349 #endif
350
351     case _SC_2_C_DEV:
352 #ifdef  _POSIX2_C_DEV
353       return _POSIX2_C_DEV;
354 #else
355       return -1;
356 #endif
357
358     case _SC_2_FORT_DEV:
359 #ifdef  _POSIX2_FORT_DEV
360       return _POSIX2_FORT_DEV;
361 #else
362       return -1;
363 #endif
364
365     case _SC_2_LOCALEDEF:
366 #ifdef  _POSIX2_LOCALEDEF
367       return _POSIX2_LOCALEDEF;
368 #else
369       return -1;
370 #endif
371
372     case _SC_2_SW_DEV:
373 #ifdef  _POSIX2_SW_DEV
374       return _POSIX2_SW_DEV;
375 #else
376       return -1;
377 #endif
378     }
379 }
380
381 weak_alias (__sysconf, sysconf)