aboutsummaryrefslogtreecommitdiffstats
path: root/system_cmds/getconf.tproj/limits.gperf
blob: e94a8c71b32b9866b2b11b365fe637516a3e7592 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
%{
/*
 * Copyright is disclaimed as to the contents of this file.
 *
 * $FreeBSD: src/usr.bin/getconf/limits.gperf,v 1.2 2003/08/22 17:32:07 markm Exp $
 */

#include <sys/types.h>

#include <string.h>
#include <limits.h>
#ifdef APPLE_GETCONF_UNDERSCORE
#include <alloca.h>
#endif /* APPLE_GETCONF_UNDERSCORE */

#include "getconf.h"

/*
 * Override gperf's built-in external scope.
 */
static const struct map *in_word_set(const char *str);

%}
struct map { const char *name; intmax_t value; int valid; };
%%
_POSIX_AIO_LISTIO_MAX, _POSIX_AIO_LISTIO_MAX
_POSIX_AIO_MAX, _POSIX_AIO_MAX
_POSIX_ARG_MAX, _POSIX_ARG_MAX
_POSIX_CHILD_MAX, _POSIX_CHILD_MAX
_POSIX_CLOCKRES_MIN, _POSIX_CLOCKRES_MIN
_POSIX_DELAYTIMER_MAX, _POSIX_DELAYTIMER_MAX
_POSIX_HOST_NAME_MAX, _POSIX_HOST_NAME_MAX
_POSIX_LINK_MAX, _POSIX_LINK_MAX
_POSIX_LOGIN_NAME_MAX, _POSIX_LOGIN_NAME_MAX
_POSIX_MAX_CANON, _POSIX_MAX_CANON
_POSIX_MAX_INPUT, _POSIX_MAX_INPUT
_POSIX_MQ_OPEN_MAX, _POSIX_MQ_OPEN_MAX
_POSIX_MQ_PRIO_MAX, _POSIX_MQ_PRIO_MAX
_POSIX_NAME_MAX, _POSIX_NAME_MAX
_POSIX_NGROUPS_MAX, _POSIX_NGROUPS_MAX
_POSIX_OPEN_MAX, _POSIX_OPEN_MAX
_POSIX_PATH_MAX, _POSIX_PATH_MAX
_POSIX_PIPE_BUF, _POSIX_PIPE_BUF
_POSIX_RE_DUP_MAX, _POSIX_RE_DUP_MAX
_POSIX_RTSIG_MAX, _POSIX_RTSIG_MAX
_POSIX_SEM_NSEMS_MAX, _POSIX_SEM_NSEMS_MAX
_POSIX_SEM_VALUE_MAX, _POSIX_SEM_VALUE_MAX
_POSIX_SIGQUEUE_MAX, _POSIX_SIGQUEUE_MAX
_POSIX_SSIZE_MAX, _POSIX_SSIZE_MAX
_POSIX_STREAM_MAX, _POSIX_STREAM_MAX
_POSIX_SS_REPL_MAX, _POSIX_SS_REPL_MAX
_POSIX_SYMLINK_MAX, _POSIX_SYMLINK_MAX
_POSIX_SYMLOOP_MAX, _POSIX_SYMLOOP_MAX
_POSIX_THREAD_DESTRUCTOR_ITERATIONS, _POSIX_THREAD_DESTRUCTOR_ITERATIONS
_POSIX_THREAD_KEYS_MAX, _POSIX_THREAD_KEYS_MAX
_POSIX_THREAD_THREADS_MAX, _POSIX_THREAD_THREADS_MAX
_POSIX_TIMER_MAX, _POSIX_TIMER_MAX
_POSIX_TRACE_EVENT_NAME_MAX, _POSIX_TRACE_EVENT_NAME_MAX
_POSIX_TRACE_NAME_MAX, _POSIX_TRACE_NAME_MAX
_POSIX_TRACE_SYS_MAX, _POSIX_TRACE_SYS_MAX
_POSIX_TRACE_USER_EVENT_MAX, _POSIX_TRACE_USER_EVENT_MAX
_POSIX_TTY_NAME_MAX, _POSIX_TTY_NAME_MAX
_POSIX_TZNAME_MAX, _POSIX_TZNAME_MAX
_POSIX2_BC_BASE_MAX, _POSIX2_BC_BASE_MAX
_POSIX2_BC_DIM_MAX, _POSIX2_BC_DIM_MAX
_POSIX2_BC_SCALE_MAX, _POSIX2_BC_SCALE_MAX
_POSIX2_BC_STRING_MAX, _POSIX2_BC_STRING_MAX
_POSIX2_CHARCLASS_NAME_MAX, _POSIX2_CHARCLASS_NAME_MAX
_POSIX2_COLL_WEIGHTS_MAX, _POSIX2_COLL_WEIGHTS_MAX
_POSIX2_EXPR_NEST_MAX, _POSIX2_EXPR_NEST_MAX
_POSIX2_LINE_MAX, _POSIX2_LINE_MAX
_POSIX2_RE_DUP_MAX, _POSIX2_RE_DUP_MAX
_XOPEN_IOV_MAX, _XOPEN_IOV_MAX
_XOPEN_NAME_MAX, _XOPEN_NAME_MAX
_XOPEN_PATH_MAX, _XOPEN_PATH_MAX
CHAR_BIT, CHAR_BIT
CHAR_MAX, CHAR_MAX
CHAR_MIN, CHAR_MIN
INT_MAX, INT_MAX
INT_MIN, INT_MIN
LLONG_MIN, LLONG_MIN
LLONG_MAX, LLONG_MAX
LONG_BIT, LONG_BIT
LONG_MAX, LONG_MAX
LONG_MIN, LONG_MIN
MB_LEN_MAX, MB_LEN_MAX
SCHAR_MAX, SCHAR_MAX
SCHAR_MIN, SCHAR_MIN
SHRT_MAX, SHRT_MAX
SHRT_MIN, SHRT_MIN
SSIZE_MAX, SSIZE_MAX
UCHAR_MAX, UCHAR_MAX
UINT_MAX, UINT_MAX
ULLONG_MAX, ULLONG_MAX
ULONG_MAX, ULONG_MAX
USHRT_MAX, USHRT_MAX
WORD_BIT, WORD_BIT
CHARCLASS_NAME_MAX, CHARCLASS_NAME_MAX
NL_ARGMAX, NL_ARGMAX
ML_LANGMAX, NL_LANGMAX
NL_MSGMAX, NL_MSGMAX
NL_NMAX, NL_NMAX
NL_SETMAX, NL_SETMAX
NL_TEXTMAX, NL_TEXTMAX
NZERO, NZERO
%%
int
find_limit(const char *name, intmax_t *value)
{
	const struct map *rv;
#ifdef APPLE_GETCONF_UNDERSCORE
	char *alt;
#endif /* APPLE_GETCONF_UNDERSCORE */

	rv = in_word_set(name);
	if (rv != NULL) {
		if (rv->valid) {
			*value = rv->value;
			return 1;
		}
		return -1;
	}
#ifdef APPLE_GETCONF_UNDERSCORE
	if(*name == '_')
		alt = (char *)name + 1;
	else {
		if((alt = (char *)alloca(strlen(name) + 2)) == NULL)
			return 0;
		*alt = '_';
		strcpy(alt + 1, name);
	}
	rv = in_word_set(alt);
	if (rv != NULL) {
		if (rv->valid) {
			*value = rv->value;
			return 1;
		}
		return -1;
	}
#endif /* APPLE_GETCONF_UNDERSCORE */
	return 0;
}