]> git.ipfire.org Git - thirdparty/glibc.git/blob - sysdeps/posix/sysconf.c
Sat Sep 16 17:47:19 1995 Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>
[thirdparty/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)