xref: /illumos-gate/usr/src/contrib/ast/src/lib/libast/comp/conf.sh (revision 78f5fe539528ce4afb4d8137ae7f8ff44765b467)
1b30d1939SAndy Fiddaman########################################################################
2b30d1939SAndy Fiddaman#                                                                      #
3b30d1939SAndy Fiddaman#               This software is part of the ast package               #
4b30d1939SAndy Fiddaman#          Copyright (c) 1985-2011 AT&T Intellectual Property          #
5b30d1939SAndy Fiddaman#                      and is licensed under the                       #
6b30d1939SAndy Fiddaman#                 Eclipse Public License, Version 1.0                  #
7b30d1939SAndy Fiddaman#                    by AT&T Intellectual Property                     #
8b30d1939SAndy Fiddaman#                                                                      #
9b30d1939SAndy Fiddaman#                A copy of the License is available at                 #
10b30d1939SAndy Fiddaman#          http://www.eclipse.org/org/documents/epl-v10.html           #
11b30d1939SAndy Fiddaman#         (with md5 checksum b35adb5213ca9657e911e9befb180842)         #
12b30d1939SAndy Fiddaman#                                                                      #
13b30d1939SAndy Fiddaman#              Information and Software Systems Research               #
14b30d1939SAndy Fiddaman#                            AT&T Research                             #
15b30d1939SAndy Fiddaman#                           Florham Park NJ                            #
16b30d1939SAndy Fiddaman#                                                                      #
17b30d1939SAndy Fiddaman#                 Glenn Fowler <gsf@research.att.com>                  #
18b30d1939SAndy Fiddaman#                  David Korn <dgk@research.att.com>                   #
19b30d1939SAndy Fiddaman#                   Phong Vo <kpv@research.att.com>                    #
20b30d1939SAndy Fiddaman#                                                                      #
21b30d1939SAndy Fiddaman########################################################################
22b30d1939SAndy Fiddaman: generate getconf and limits info
23b30d1939SAndy Fiddaman#
24b30d1939SAndy Fiddaman# @(#)conf.sh (AT&T Research) 2011-08-26
25b30d1939SAndy Fiddaman#
26b30d1939SAndy Fiddaman# this script generates these files from the table file in the first arg
27b30d1939SAndy Fiddaman# the remaining args are the C compiler name and flags
28b30d1939SAndy Fiddaman#
29b30d1939SAndy Fiddaman#	conflim.h	supplemental limits.h definitions
30b30d1939SAndy Fiddaman#	conftab.h	readonly string table definitions
31b30d1939SAndy Fiddaman#	conftab.c	readonly string table data
32b30d1939SAndy Fiddaman#
33b30d1939SAndy Fiddaman# you may think it should be simpler
34b30d1939SAndy Fiddaman# but you shall be confused anyway
35b30d1939SAndy Fiddaman#
36b30d1939SAndy Fiddaman
37b30d1939SAndy Fiddamancase $-:$BASH_VERSION in
38b30d1939SAndy Fiddaman*x*:[0123456789]*)	: bash set -x is broken :; set +ex ;;
39b30d1939SAndy Fiddamanesac
40b30d1939SAndy Fiddaman
41b30d1939SAndy FiddamanLC_ALL=C
42b30d1939SAndy Fiddamanexport LC_ALL
43b30d1939SAndy Fiddaman
44b30d1939SAndy Fiddamancommand=conf
45b30d1939SAndy Fiddaman
46b30d1939SAndy Fiddamanshell=`eval 'x=123&&integer n=\${#x}\${x#1?}&&((n==330/(10)))&&echo ksh' 2>/dev/null`
47b30d1939SAndy Fiddaman
48b30d1939SAndy Fiddamanappend=0
49b30d1939SAndy Fiddamandebug=
50b30d1939SAndy Fiddamanextra=0
51b30d1939SAndy Fiddamankeep_call='*'
52b30d1939SAndy Fiddamankeep_name='*'
53b30d1939SAndy Fiddamantrace=
54b30d1939SAndy Fiddamanverbose=0
55b30d1939SAndy Fiddamanwhile	:
56b30d1939SAndy Fiddamando	case $1 in
57b30d1939SAndy Fiddaman	-a)	append=1 ;;
58b30d1939SAndy Fiddaman	-c*)	keep_call=${1#-?} ;;
59b30d1939SAndy Fiddaman	-d*)	debug=$1 ;;
60b30d1939SAndy Fiddaman	-l)	extra=1 ;;
61b30d1939SAndy Fiddaman	-n*)	keep_name=${1#-?} ;;
62b30d1939SAndy Fiddaman	-t)	trace=1 ;;
63b30d1939SAndy Fiddaman	-v)	verbose=1 ;;
64b30d1939SAndy Fiddaman	-*)	echo "Usage: $command [-a] [-ccall-pattern] [-dN] [-l] [-nname_pattern] [-t] [-v] conf.tab" >&2; exit 2 ;;
65b30d1939SAndy Fiddaman	*)	break ;;
66b30d1939SAndy Fiddaman	esac
67b30d1939SAndy Fiddaman	shift
68b30d1939SAndy Fiddamandone
69b30d1939SAndy Fiddamanhead='#include "FEATURE/standards"
70b30d1939SAndy Fiddaman#include "FEATURE/common"'
71b30d1939SAndy Fiddamantail='#include "FEATURE/param"'
72b30d1939SAndy Fiddamangenerated="/* : : generated by $command from $1 : : */"
73b30d1939SAndy Fiddamanhdr=
74b30d1939SAndy Fiddamanifs=${IFS-'
75b30d1939SAndy Fiddaman	 '}
76b30d1939SAndy Fiddamannl='
77b30d1939SAndy Fiddaman'
78b30d1939SAndy Fiddamansp=' '
79b30d1939SAndy Fiddamanob='{'
80b30d1939SAndy Fiddamancb='}'
81b30d1939SAndy Fiddamansym=[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_]*
82b30d1939SAndy Fiddamantmp=conf.tmp
83b30d1939SAndy Fiddamancase $verbose:$debug$trace in
84b30d1939SAndy Fiddaman1:?*)	echo "$command: debug=$debug trace=$trace keep_call=$keep_call keep_name=$keep_name" >&2 ;;
85b30d1939SAndy Fiddamanesac
86b30d1939SAndy Fiddamancase $trace in
87b30d1939SAndy Fiddaman1)	PS4='+$LINENO+ '; set -x ;;
88b30d1939SAndy Fiddamanesac
89b30d1939SAndy Fiddaman
90b30d1939SAndy Fiddamancase $# in
91b30d1939SAndy Fiddaman0)	case $extra in
92b30d1939SAndy Fiddaman	0)	echo "$command: table argument expected" >&2
93b30d1939SAndy Fiddaman		exit 1
94b30d1939SAndy Fiddaman		;;
95b30d1939SAndy Fiddaman	esac
96b30d1939SAndy Fiddaman	tab=/dev/null
97b30d1939SAndy Fiddaman	;;
98b30d1939SAndy Fiddaman*)	tab=$1
99b30d1939SAndy Fiddaman	shift
100b30d1939SAndy Fiddaman	if	test ! -f $tab
101b30d1939SAndy Fiddaman	then	echo "$command: $tab: cannot read" >&2
102b30d1939SAndy Fiddaman		exit 1
103b30d1939SAndy Fiddaman	fi
104b30d1939SAndy Fiddaman	;;
105b30d1939SAndy Fiddamanesac
106b30d1939SAndy Fiddamancase $# in
107b30d1939SAndy Fiddaman0)	cc=cc ;;
108b30d1939SAndy Fiddaman*)	cc=$* ;;
109b30d1939SAndy Fiddamanesac
110b30d1939SAndy Fiddaman
111b30d1939SAndy Fiddamanrm -f $tmp.*
112b30d1939SAndy Fiddamancase $debug in
113b30d1939SAndy Fiddaman'')	trap "code=\$?; rm -f $tmp.*; exit \$code" 0 1 2 ;;
114b30d1939SAndy Fiddamanesac
115b30d1939SAndy Fiddaman
116b30d1939SAndy Fiddaman# determine the intmax_t printf format
117b30d1939SAndy Fiddaman
118b30d1939SAndy Fiddamancat > $tmp.c <<!
119b30d1939SAndy Fiddaman${head}
120b30d1939SAndy Fiddamanint
121b30d1939SAndy Fiddamanmain()
122b30d1939SAndy Fiddaman{
123b30d1939SAndy Fiddaman#if _ast_intmax_long
124b30d1939SAndy Fiddaman	return 1;
125b30d1939SAndy Fiddaman#else
126b30d1939SAndy Fiddaman	return 0;
127b30d1939SAndy Fiddaman#endif
128b30d1939SAndy Fiddaman}
129b30d1939SAndy Fiddaman!
130b30d1939SAndy Fiddamanif	$cc -o $tmp.exe $tmp.c >/dev/null 2>&1 && ./$tmp.exe
131b30d1939SAndy Fiddamanthen	LL_format='ll'
132b30d1939SAndy Fiddamanelse	LL_format='l'
133b30d1939SAndy Fiddamanfi
134b30d1939SAndy Fiddaman
135b30d1939SAndy Fiddaman# determine the intmax_t constant suffix
136b30d1939SAndy Fiddaman
137b30d1939SAndy Fiddamancat > $tmp.c <<!
138b30d1939SAndy Fiddaman${head}
139b30d1939SAndy Fiddamanint
140b30d1939SAndy Fiddamanmain()
141b30d1939SAndy Fiddaman{
142b30d1939SAndy Fiddaman#if _ast_intmax_long
143b30d1939SAndy Fiddaman	return 1;
144b30d1939SAndy Fiddaman#else
145b30d1939SAndy Fiddaman	_ast_intmax_t		s = 0x7fffffffffffffffLL;
146b30d1939SAndy Fiddaman	unsigned _ast_intmax_t	u = 0xffffffffffffffffLL;
147b30d1939SAndy Fiddaman
148b30d1939SAndy Fiddaman	return 0;
149b30d1939SAndy Fiddaman#endif
150b30d1939SAndy Fiddaman}
151b30d1939SAndy Fiddaman!
152b30d1939SAndy Fiddamanif	$cc -o $tmp.exe $tmp.c >/dev/null 2>&1
153b30d1939SAndy Fiddamanthen	if	./$tmp.exe
154b30d1939SAndy Fiddaman	then	LL_suffix='LL'
155b30d1939SAndy Fiddaman	else	LL_suffix='L'
156b30d1939SAndy Fiddaman	fi
157b30d1939SAndy Fiddamanelse	LL_suffix=''
158b30d1939SAndy Fiddamanfi
159b30d1939SAndy Fiddaman
160b30d1939SAndy Fiddamancat > $tmp.c <<!
161b30d1939SAndy Fiddaman${head}
162b30d1939SAndy Fiddamanint
163b30d1939SAndy Fiddamanmain()
164b30d1939SAndy Fiddaman{
165b30d1939SAndy Fiddaman	unsigned int	u = 1U;
166b30d1939SAndy Fiddaman	unsigned int	ul = 1UL;
167b30d1939SAndy Fiddaman
168b30d1939SAndy Fiddaman	return 0;
169b30d1939SAndy Fiddaman}
170b30d1939SAndy Fiddaman!
171b30d1939SAndy Fiddamanif	$cc -o $tmp.exe $tmp.c >/dev/null 2>&1
172b30d1939SAndy Fiddamanthen	U_suffix='U'
173b30d1939SAndy Fiddamanelse	U_suffix=''
174b30d1939SAndy Fiddamanfi
175b30d1939SAndy Fiddaman
176b30d1939SAndy Fiddaman# set up the names and keys
177b30d1939SAndy Fiddaman
178b30d1939SAndy Fiddamankeys=
179b30d1939SAndy Fiddamanstandards=
180b30d1939SAndy Fiddaman
181b30d1939SAndy Fiddamancase $append$extra in
182b30d1939SAndy Fiddaman00)	case $verbose in
183b30d1939SAndy Fiddaman	1)	echo "$command: read $tab" >&2 ;;
184b30d1939SAndy Fiddaman	esac
185b30d1939SAndy Fiddaman	exec < $tab
186b30d1939SAndy Fiddaman	while	:
187b30d1939SAndy Fiddaman	do	IFS=""
188b30d1939SAndy Fiddaman		read line
189b30d1939SAndy Fiddaman		eof=$?
190b30d1939SAndy Fiddaman		IFS=$ifs
191b30d1939SAndy Fiddaman		case $eof in
192b30d1939SAndy Fiddaman		0)	;;
193b30d1939SAndy Fiddaman		*)	break ;;
194b30d1939SAndy Fiddaman		esac
195b30d1939SAndy Fiddaman		case $line in
196b30d1939SAndy Fiddaman		""|\#*)	;;
197b30d1939SAndy Fiddaman		*)	set x $line
198b30d1939SAndy Fiddaman			shift; name=$1
199b30d1939SAndy Fiddaman			shift; standard=$1
200b30d1939SAndy Fiddaman			shift; call=$1
201b30d1939SAndy Fiddaman			shift; section=$1
202b30d1939SAndy Fiddaman			shift; flags=$1
203b30d1939SAndy Fiddaman			alternates=
204b30d1939SAndy Fiddaman			define=
205b30d1939SAndy Fiddaman			values=
206b30d1939SAndy Fiddaman			script=
207b30d1939SAndy Fiddaman			headers=
208b30d1939SAndy Fiddaman			while	:
209b30d1939SAndy Fiddaman			do	shift
210b30d1939SAndy Fiddaman				case $# in
211b30d1939SAndy Fiddaman				0)	break ;;
212b30d1939SAndy Fiddaman				esac
213b30d1939SAndy Fiddaman				case $1 in
214b30d1939SAndy Fiddaman				":")	shift
215b30d1939SAndy Fiddaman					eval script='$'script_$1
216b30d1939SAndy Fiddaman					break
217b30d1939SAndy Fiddaman					;;
218b30d1939SAndy Fiddaman				*"{")	case $1 in
219b30d1939SAndy Fiddaman					"sh{")	script="# $name" ;;
220b30d1939SAndy Fiddaman					*)	script= ;;
221b30d1939SAndy Fiddaman					esac
222b30d1939SAndy Fiddaman					shift
223b30d1939SAndy Fiddaman					args="$*"
224b30d1939SAndy Fiddaman					IFS=""
225b30d1939SAndy Fiddaman					while	read line
226b30d1939SAndy Fiddaman					do	case $line in
227b30d1939SAndy Fiddaman						"}")	break ;;
228b30d1939SAndy Fiddaman						esac
229b30d1939SAndy Fiddaman						script=$script$nl$line
230b30d1939SAndy Fiddaman					done
231b30d1939SAndy Fiddaman					IFS=$ifs
232b30d1939SAndy Fiddaman					break
233b30d1939SAndy Fiddaman					;;
234b30d1939SAndy Fiddaman				*.h)	case $shell in
235b30d1939SAndy Fiddaman					ksh)	f=${1%.h} ;;
236b30d1939SAndy Fiddaman					*)	f=`echo $1 | sed 's,\.h$,,'` ;;
237b30d1939SAndy Fiddaman					esac
238b30d1939SAndy Fiddaman					case " $hdr " in
239b30d1939SAndy Fiddaman					*" $f "*)
240b30d1939SAndy Fiddaman						headers=$headers$nl#include$sp'<'$1'>'
241b30d1939SAndy Fiddaman						;;
242b30d1939SAndy Fiddaman					*" -$f- "*)
243b30d1939SAndy Fiddaman						;;
244b30d1939SAndy Fiddaman					*)	if	iffe -c "$cc" -n - hdr $f | grep _hdr_$f >/dev/null
245b30d1939SAndy Fiddaman						then	hdr="$hdr $f"
246b30d1939SAndy Fiddaman							headers=$headers$nl#include$sp'<'$1'>'
247b30d1939SAndy Fiddaman						else	hdr="$hdr -$f-"
248b30d1939SAndy Fiddaman						fi
249b30d1939SAndy Fiddaman						;;
250b30d1939SAndy Fiddaman					esac
251b30d1939SAndy Fiddaman					;;
252b30d1939SAndy Fiddaman				*)	values=$values$sp$1
253b30d1939SAndy Fiddaman					case $1 in
254b30d1939SAndy Fiddaman					$sym)	echo "$1" >> $tmp.v ;;
255b30d1939SAndy Fiddaman					esac
256b30d1939SAndy Fiddaman					;;
257b30d1939SAndy Fiddaman				esac
258b30d1939SAndy Fiddaman			done
259b30d1939SAndy Fiddaman			case " $standards " in
260b30d1939SAndy Fiddaman			*" $standard "*)
261b30d1939SAndy Fiddaman				;;
262b30d1939SAndy Fiddaman			*)	standards="$standards $standard"
263b30d1939SAndy Fiddaman				;;
264b30d1939SAndy Fiddaman			esac
265b30d1939SAndy Fiddaman			case $name:$flags in
266b30d1939SAndy Fiddaman			*:*S*)	;;
267b30d1939SAndy Fiddaman			VERSION)flags="${flags}S" ;;
268b30d1939SAndy Fiddaman			esac
269b30d1939SAndy Fiddaman			case $name in
270b30d1939SAndy Fiddaman			*VERSION*)key=${standard}${section} ;;
271b30d1939SAndy Fiddaman			*)	  key= ;;
272b30d1939SAndy Fiddaman			esac
273b30d1939SAndy Fiddaman			case $key in
274b30d1939SAndy Fiddaman			''|*_)	key=${key}${name} ;;
275b30d1939SAndy Fiddaman			*)	key=${key}_${name} ;;
276b30d1939SAndy Fiddaman			esac
277b30d1939SAndy Fiddaman			eval sys='$'CONF_call_${key}
278b30d1939SAndy Fiddaman			case $sys in
279b30d1939SAndy Fiddaman			?*)	call=$sys ;;
280b30d1939SAndy Fiddaman			esac
281b30d1939SAndy Fiddaman			case $call in
282b30d1939SAndy Fiddaman			SI)	sys=CS ;;
283b30d1939SAndy Fiddaman			*)	sys=$call ;;
284b30d1939SAndy Fiddaman			esac
285b30d1939SAndy Fiddaman			key=${sys}_${key}
286b30d1939SAndy Fiddaman			keys="$keys$nl$key"
287b30d1939SAndy Fiddaman			eval CONF_name_${key}='$'name
288b30d1939SAndy Fiddaman			eval CONF_standard_${key}='$'standard
289b30d1939SAndy Fiddaman			eval CONF_call_${key}='$'call
290b30d1939SAndy Fiddaman			eval CONF_section_${key}='$'section
291b30d1939SAndy Fiddaman			eval CONF_flags_${key}='$'flags
292b30d1939SAndy Fiddaman			eval CONF_define_${key}='$'define
293b30d1939SAndy Fiddaman			eval CONF_values_${key}='$'values
294b30d1939SAndy Fiddaman			eval CONF_script_${key}='$'script
295b30d1939SAndy Fiddaman			eval CONF_args_${key}='$'args
296b30d1939SAndy Fiddaman			eval CONF_headers_${key}='$'headers
297b30d1939SAndy Fiddaman			eval CONF_keys_${name}=\"'$'CONF_keys_${name} '$'key\"
298b30d1939SAndy Fiddaman			;;
299b30d1939SAndy Fiddaman		esac
300b30d1939SAndy Fiddaman	done
301b30d1939SAndy Fiddaman	;;
302b30d1939SAndy Fiddamanesac
303b30d1939SAndy Fiddamancase $debug in
304b30d1939SAndy Fiddaman-d1)	for key in $keys
305b30d1939SAndy Fiddaman	do	eval name=\"'$'CONF_name_$key\"
306b30d1939SAndy Fiddaman		case $name in
307b30d1939SAndy Fiddaman		?*)	eval standard=\"'$'CONF_standard_$key\"
308b30d1939SAndy Fiddaman			eval call=\"'$'CONF_call_$key\"
309b30d1939SAndy Fiddaman			eval section=\"'$'CONF_section_$key\"
310b30d1939SAndy Fiddaman			eval flags=\"'$'CONF_flags_$key\"
311b30d1939SAndy Fiddaman			eval define=\"'$'CONF_define_$key\"
312b30d1939SAndy Fiddaman			eval values=\"'$'CONF_values_$key\"
313b30d1939SAndy Fiddaman			eval script=\"'$'CONF_script_$key\"
314b30d1939SAndy Fiddaman			eval args=\"'$'CONF_args_$key\"
315b30d1939SAndy Fiddaman			eval headers=\"'$'CONF_headers_$key\"
316b30d1939SAndy Fiddaman			printf "%29s %35s %8s %2s %1d %5s %s$nl" "$name" "$key" "$standard" "$call" "$section" "$flags" "$define${values:+$sp=$values}${headers:+$sp$headers$nl}${script:+$sp$ob$script$nl$cb}"
317b30d1939SAndy Fiddaman			;;
318b30d1939SAndy Fiddaman		esac
319b30d1939SAndy Fiddaman	done
320b30d1939SAndy Fiddaman	exit
321b30d1939SAndy Fiddaman	;;
322b30d1939SAndy Fiddamanesac
323b30d1939SAndy Fiddaman
324b30d1939SAndy Fiddamansysteminfo='
325b30d1939SAndy Fiddaman#if !defined(SYS_NMLEN)
326b30d1939SAndy Fiddaman#define SYS_NMLEN	9
327b30d1939SAndy Fiddaman#endif
328b30d1939SAndy Fiddaman#include <sys/systeminfo.h>'
329b30d1939SAndy Fiddamanecho "$systeminfo" > $tmp.c
330b30d1939SAndy Fiddaman$cc -E $tmp.c >/dev/null 2>&1 || systeminfo=
331b30d1939SAndy Fiddaman
332b30d1939SAndy Fiddaman# check for native getconf(1)
333b30d1939SAndy Fiddaman
334b30d1939SAndy FiddamanCONF_getconf=
335b30d1939SAndy FiddamanCONF_getconf_a=
336b30d1939SAndy Fiddamanfor d in /usr/bin /bin /usr/sbin /sbin
337b30d1939SAndy Fiddamando	if	test -x $d/getconf
338b30d1939SAndy Fiddaman	then	case `$d/getconf --?-version 2>&1` in
339b30d1939SAndy Fiddaman		*"AT&T"*"Research"*)
340b30d1939SAndy Fiddaman			: presumably an implementation also configured from conf.tab
341b30d1939SAndy Fiddaman			;;
342b30d1939SAndy Fiddaman		*)	CONF_getconf=$d/getconf
343b30d1939SAndy Fiddaman			if	$CONF_getconf -a >/dev/null 2>&1
344b30d1939SAndy Fiddaman			then	CONF_getconf_a=-a
345b30d1939SAndy Fiddaman			fi
346b30d1939SAndy Fiddaman			;;
347b30d1939SAndy Fiddaman		esac
348b30d1939SAndy Fiddaman		break
349b30d1939SAndy Fiddaman	fi
350b30d1939SAndy Fiddamandone
351b30d1939SAndy Fiddamanexport CONF_getconf CONF_getconf_a
352b30d1939SAndy Fiddaman
353b30d1939SAndy Fiddamancase $verbose in
354b30d1939SAndy Fiddaman1)	echo "$command: check ${CONF_getconf:+$CONF_getconf(1),}confstr(2),pathconf(2),sysconf(2),sysinfo(2) configuration names" >&2 ;;
355b30d1939SAndy Fiddamanesac
356b30d1939SAndy Fiddaman{
357b30d1939SAndy Fiddaman	echo "#include <unistd.h>$systeminfo
358b30d1939SAndy Fiddamanint i = 0;" > $tmp.c
359b30d1939SAndy Fiddaman	$cc -E $tmp.c
360b30d1939SAndy Fiddaman} |
361b30d1939SAndy Fiddamansed \
362b30d1939SAndy Fiddaman	-e '/^#[^0123456789]*1[ 	]*".*".*/!d' \
363b30d1939SAndy Fiddaman	-e 's/^#[^0123456789]*1[ 	]*"\(.*\)".*/\1/' |
364b30d1939SAndy Fiddamansort -u > $tmp.f
365b30d1939SAndy Fiddaman{
366b30d1939SAndy Fiddamansed \
367b30d1939SAndy Fiddaman	-e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789]/ /g' \
368*78f5fe53SAndy Fiddaman	-e 's/[ 	][ 	]*/%/g' \
369*78f5fe53SAndy Fiddaman	`cat $tmp.f` 2>/dev/null | tr '%' '\n' | \
370b30d1939SAndy Fiddaman	egrep '^(SI|_(CS|PC|SC|SI))_.'
371b30d1939SAndy Fiddaman	case $CONF_getconf_a in
372b30d1939SAndy Fiddaman	?*)	$CONF_getconf $CONF_getconf_a | sed 's,[=:    ].*,,'
373b30d1939SAndy Fiddaman		;;
374b30d1939SAndy Fiddaman	*)	case $CONF_getconf in
375b30d1939SAndy Fiddaman		?*)	for v in `strings $CONF_getconf | grep '^[ABCDEFGHIJKLMNOPQRSTUVWXYZ_][ABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789]*$'`
376b30d1939SAndy Fiddaman			do	if	$CONF_getconf $v >/dev/null
377b30d1939SAndy Fiddaman				then	echo $v
378b30d1939SAndy Fiddaman				fi
379b30d1939SAndy Fiddaman			done
380b30d1939SAndy Fiddaman			;;
381b30d1939SAndy Fiddaman		esac
382b30d1939SAndy Fiddaman		;;
383b30d1939SAndy Fiddaman	esac 2>/dev/null
384b30d1939SAndy Fiddaman} |
385b30d1939SAndy Fiddamanegrep -v '^_[ABCDEFGHIJKLMNOPQRSTUVWXYZ]+_(COUNT|LAST|N|STR)$' |
386b30d1939SAndy Fiddamansort -u > $tmp.g
387b30d1939SAndy Fiddaman{
388b30d1939SAndy Fiddaman	grep '^_' $tmp.g
389b30d1939SAndy Fiddaman	grep '^[^_]' $tmp.g
390b30d1939SAndy Fiddaman} > $tmp.t
391b30d1939SAndy Fiddamanmv $tmp.t $tmp.g
392b30d1939SAndy Fiddamancase $debug in
393b30d1939SAndy Fiddaman-d2)	exit ;;
394b30d1939SAndy Fiddamanesac
395b30d1939SAndy Fiddaman
396b30d1939SAndy FiddamanHOST=`package | sed -e 's,[0123456789.].*,,' | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`
397b30d1939SAndy Fiddamancase $HOST in
398b30d1939SAndy Fiddaman'')	HOST=SYSTEM ;;
399b30d1939SAndy Fiddamanesac
400b30d1939SAndy Fiddaman
401b30d1939SAndy Fiddamanexec < $tmp.g
402b30d1939SAndy Fiddaman
403b30d1939SAndy Fiddamanwhile	read line
404b30d1939SAndy Fiddamando	flags=F
405b30d1939SAndy Fiddaman	section=
406b30d1939SAndy Fiddaman	underscore=
407b30d1939SAndy Fiddaman	define=$line
408b30d1939SAndy Fiddaman	IFS=_
409b30d1939SAndy Fiddaman	set $line
410b30d1939SAndy Fiddaman	IFS=$ifs
411b30d1939SAndy Fiddaman	case $1 in
412b30d1939SAndy Fiddaman	'')	case $# in
413b30d1939SAndy Fiddaman		0)	continue ;;
414b30d1939SAndy Fiddaman		esac
415b30d1939SAndy Fiddaman		shift
416b30d1939SAndy Fiddaman		;;
417b30d1939SAndy Fiddaman	esac
418b30d1939SAndy Fiddaman	case $1 in
419b30d1939SAndy Fiddaman	CS|PC|SC|SI)
420b30d1939SAndy Fiddaman		call=$1
421b30d1939SAndy Fiddaman		shift
422b30d1939SAndy Fiddaman		standard=$1
423b30d1939SAndy Fiddaman		;;
424b30d1939SAndy Fiddaman	*)	flags=${flags}R
425b30d1939SAndy Fiddaman		standard=$1
426b30d1939SAndy Fiddaman		while	:
427b30d1939SAndy Fiddaman		do	case $# in
428b30d1939SAndy Fiddaman			0)	continue 2 ;;
429b30d1939SAndy Fiddaman			esac
430b30d1939SAndy Fiddaman			shift
431b30d1939SAndy Fiddaman			case $1 in
432b30d1939SAndy Fiddaman			CS|PC|SC|SI)
433b30d1939SAndy Fiddaman				call=$1
434b30d1939SAndy Fiddaman				shift
435b30d1939SAndy Fiddaman				break
436b30d1939SAndy Fiddaman				;;
437b30d1939SAndy Fiddaman			O|o|OLD|old)
438b30d1939SAndy Fiddaman				continue 2
439b30d1939SAndy Fiddaman				;;
440b30d1939SAndy Fiddaman			esac
441b30d1939SAndy Fiddaman			standard=${standard}_$1
442b30d1939SAndy Fiddaman		done
443b30d1939SAndy Fiddaman		;;
444b30d1939SAndy Fiddaman	esac
445b30d1939SAndy Fiddaman	case $1 in
446b30d1939SAndy Fiddaman	SET)	continue ;;
447b30d1939SAndy Fiddaman	esac
448b30d1939SAndy Fiddaman	case $standard in
449b30d1939SAndy Fiddaman	_*)	standard=`echo $standard | sed 's,^_*,,'` ;;
450b30d1939SAndy Fiddaman	esac
451b30d1939SAndy Fiddaman	case " $standards " in
452b30d1939SAndy Fiddaman	*" $standard "*)
453b30d1939SAndy Fiddaman		;;
454b30d1939SAndy Fiddaman	*)	case $standard in
455b30d1939SAndy Fiddaman		[0123456789]*)
456b30d1939SAndy Fiddaman			section=$standard
457b30d1939SAndy Fiddaman			standard=POSIX
458b30d1939SAndy Fiddaman			;;
459b30d1939SAndy Fiddaman		*[0123456789])
460b30d1939SAndy Fiddaman			eval `echo $standard | sed 's,\(.*\)\([0123456789]*\),standard=\1 section=\2,'`
461b30d1939SAndy Fiddaman			;;
462b30d1939SAndy Fiddaman		esac
463b30d1939SAndy Fiddaman		;;
464b30d1939SAndy Fiddaman	esac
465b30d1939SAndy Fiddaman	case $flags in
466b30d1939SAndy Fiddaman	*R*)	case $call in
467b30d1939SAndy Fiddaman		SI)	;;
468b30d1939SAndy Fiddaman		*)	underscore=U ;;
469b30d1939SAndy Fiddaman		esac
470b30d1939SAndy Fiddaman		;;
471b30d1939SAndy Fiddaman	*)	case " $standards " in
472b30d1939SAndy Fiddaman		" C ")	shift
473b30d1939SAndy Fiddaman			;;
474b30d1939SAndy Fiddaman		*" $standard "*)
475b30d1939SAndy Fiddaman			case $call in
476b30d1939SAndy Fiddaman			SI)	;;
477b30d1939SAndy Fiddaman			*)	flags=${flags}P
478b30d1939SAndy Fiddaman				underscore=U
479b30d1939SAndy Fiddaman				;;
480b30d1939SAndy Fiddaman			esac
481b30d1939SAndy Fiddaman			shift
482b30d1939SAndy Fiddaman			;;
483b30d1939SAndy Fiddaman		*)	standard=
484b30d1939SAndy Fiddaman			;;
485b30d1939SAndy Fiddaman		esac
486b30d1939SAndy Fiddaman		;;
487b30d1939SAndy Fiddaman	esac
488b30d1939SAndy Fiddaman	case $standard in
489b30d1939SAndy Fiddaman	'')	standard=$HOST
490b30d1939SAndy Fiddaman		case $call in
491b30d1939SAndy Fiddaman		SI)	;;
492b30d1939SAndy Fiddaman		*)	underscore=U ;;
493b30d1939SAndy Fiddaman		esac
494b30d1939SAndy Fiddaman		case $call in
495b30d1939SAndy Fiddaman		CS|PC|SC)
496b30d1939SAndy Fiddaman			case $define in
497b30d1939SAndy Fiddaman			_${call}_*)
498b30d1939SAndy Fiddaman				standard=POSIX
499b30d1939SAndy Fiddaman				;;
500b30d1939SAndy Fiddaman			esac
501b30d1939SAndy Fiddaman			;;
502b30d1939SAndy Fiddaman		esac
503b30d1939SAndy Fiddaman		;;
504b30d1939SAndy Fiddaman	esac
505b30d1939SAndy Fiddaman	part=$section
506b30d1939SAndy Fiddaman	case $section in
507b30d1939SAndy Fiddaman	'')	section=1
508b30d1939SAndy Fiddaman		case $standard in
509b30d1939SAndy Fiddaman		POSIX|XOPEN) part=$section ;;
510b30d1939SAndy Fiddaman		esac
511b30d1939SAndy Fiddaman		;;
512b30d1939SAndy Fiddaman	esac
513b30d1939SAndy Fiddaman	name=
514b30d1939SAndy Fiddaman	while	:
515b30d1939SAndy Fiddaman	do	case $# in
516b30d1939SAndy Fiddaman		0)	break ;;
517b30d1939SAndy Fiddaman		esac
518b30d1939SAndy Fiddaman		case $name in
519b30d1939SAndy Fiddaman		'')	name=$1 ;;
520b30d1939SAndy Fiddaman		*)	name=${name}_$1 ;;
521b30d1939SAndy Fiddaman		esac
522b30d1939SAndy Fiddaman		shift
523b30d1939SAndy Fiddaman	done
524b30d1939SAndy Fiddaman	case $name in
525b30d1939SAndy Fiddaman	'')	;;
526b30d1939SAndy Fiddaman	CONFORMANCE|FS_3D|HOSTTYPE|LIBPATH|LIBPREFIX|LIBSUFFIX|PATH_ATTRIBUTES|PATH_RESOLVE|UNIVERSE)
527b30d1939SAndy Fiddaman		;;
528b30d1939SAndy Fiddaman	*)	values=
529b30d1939SAndy Fiddaman		script=
530b30d1939SAndy Fiddaman		args=
531b30d1939SAndy Fiddaman		headers=
532b30d1939SAndy Fiddaman		case $name in
533b30d1939SAndy Fiddaman		V[123456789]_*|V[123456789][0123456789]_*)	underscore=VW ;;
534b30d1939SAndy Fiddaman		esac
535b30d1939SAndy Fiddaman		case $call in
536b30d1939SAndy Fiddaman		CS|SI)	key=CS ;;
537b30d1939SAndy Fiddaman		*)	key=$call ;;
538b30d1939SAndy Fiddaman		esac
539b30d1939SAndy Fiddaman		case $name in
540b30d1939SAndy Fiddaman		*VERSION*)key=${key}_${standard}${part} ;;
541b30d1939SAndy Fiddaman		esac
542b30d1939SAndy Fiddaman		key=${key}_${name}
543b30d1939SAndy Fiddaman		eval x='$'CONF_keys_$name
544b30d1939SAndy Fiddaman		case $x in
545b30d1939SAndy Fiddaman		'')	eval x='$'CONF_name_$key
546b30d1939SAndy Fiddaman			case $x in
547b30d1939SAndy Fiddaman			'')	case $call in
548b30d1939SAndy Fiddaman				SI)	flags=O$flags ;;
549b30d1939SAndy Fiddaman				esac
550b30d1939SAndy Fiddaman				case $underscore in
551b30d1939SAndy Fiddaman				?*)	flags=${flags}${underscore} ;;
552b30d1939SAndy Fiddaman				esac
553b30d1939SAndy Fiddaman				old=QQ
554b30d1939SAndy Fiddaman				case $name in
555b30d1939SAndy Fiddaman				*VERSION*)old=${old}_${standard}${part} ;;
556b30d1939SAndy Fiddaman				esac
557b30d1939SAndy Fiddaman				old=${old}_${name}
558b30d1939SAndy Fiddaman				eval x='$'CONF_name_$old
559b30d1939SAndy Fiddaman				case $x in
560b30d1939SAndy Fiddaman				?*)	eval CONF_name_$old=
561b30d1939SAndy Fiddaman					eval flags='$'flags'$'CONF_flags_$old
562b30d1939SAndy Fiddaman					eval values='$'CONF_values_$old
563b30d1939SAndy Fiddaman					eval script='$'CONF_script_$old
564b30d1939SAndy Fiddaman					eval args='$'CONF_args_$old
565b30d1939SAndy Fiddaman					eval headers='$'CONF_headers_$old
566b30d1939SAndy Fiddaman					;;
567b30d1939SAndy Fiddaman				esac
568b30d1939SAndy Fiddaman				keys="$keys$nl$key"
569b30d1939SAndy Fiddaman				eval CONF_name_${key}='$'name
570b30d1939SAndy Fiddaman				eval CONF_standard_${key}='$'standard
571b30d1939SAndy Fiddaman				eval CONF_call_${key}='$'call
572b30d1939SAndy Fiddaman				eval CONF_section_${key}='$'section
573b30d1939SAndy Fiddaman				eval CONF_flags_${key}=d'$'flags
574b30d1939SAndy Fiddaman				eval CONF_define_${key}='$'define
575b30d1939SAndy Fiddaman				eval CONF_values_${key}='$'values
576b30d1939SAndy Fiddaman				eval CONF_script_${key}='$'script
577b30d1939SAndy Fiddaman				eval CONF_args_${key}='$'args
578b30d1939SAndy Fiddaman				eval CONF_headers_${key}='$'headers
579b30d1939SAndy Fiddaman				;;
580b30d1939SAndy Fiddaman			*)	eval x='$'CONF_define_$key
581b30d1939SAndy Fiddaman				case $x in
582b30d1939SAndy Fiddaman				?*)	case $call in
583b30d1939SAndy Fiddaman					CS)	eval x='$'CONF_call_$key
584b30d1939SAndy Fiddaman						case $x in
585b30d1939SAndy Fiddaman						SI)	;;
586b30d1939SAndy Fiddaman						*)	define= ;;
587b30d1939SAndy Fiddaman						esac
588b30d1939SAndy Fiddaman						;;
589b30d1939SAndy Fiddaman					*)	define=
590b30d1939SAndy Fiddaman						;;
591b30d1939SAndy Fiddaman					esac
592b30d1939SAndy Fiddaman					;;
593b30d1939SAndy Fiddaman				esac
594b30d1939SAndy Fiddaman				case $define in
595b30d1939SAndy Fiddaman				?*)	eval CONF_define_${key}='$'define
596b30d1939SAndy Fiddaman					eval CONF_call_${key}='$'call
597b30d1939SAndy Fiddaman					eval x='$'CONF_call_${key}
598b30d1939SAndy Fiddaman					case $x in
599b30d1939SAndy Fiddaman					QQ)	;;
600b30d1939SAndy Fiddaman					*)	case $flags in
601b30d1939SAndy Fiddaman						*R*)	flags=R ;;
602b30d1939SAndy Fiddaman						*)	flags= ;;
603b30d1939SAndy Fiddaman						esac
604b30d1939SAndy Fiddaman						;;
605b30d1939SAndy Fiddaman					esac
606b30d1939SAndy Fiddaman					case $call in
607b30d1939SAndy Fiddaman					SI)	flags=O$flags ;;
608b30d1939SAndy Fiddaman					esac
609b30d1939SAndy Fiddaman					eval CONF_flags_${key}=d'$'flags'$'CONF_flags_${key}
610b30d1939SAndy Fiddaman					;;
611b30d1939SAndy Fiddaman				esac
612b30d1939SAndy Fiddaman				old=QQ
613b30d1939SAndy Fiddaman				case $name in
614b30d1939SAndy Fiddaman				*VERSION*)old=${old}_${standard}${part} ;;
615b30d1939SAndy Fiddaman				esac
616b30d1939SAndy Fiddaman				old=${old}_${name}
617b30d1939SAndy Fiddaman				eval CONF_name_$old=
618b30d1939SAndy Fiddaman			esac
619b30d1939SAndy Fiddaman			;;
620b30d1939SAndy Fiddaman		*)	for key in $x
621b30d1939SAndy Fiddaman			do	eval x='$'CONF_call_${key}
622b30d1939SAndy Fiddaman				case $x in
623b30d1939SAndy Fiddaman				XX)	eval CONF_call_${key}=QQ
624b30d1939SAndy Fiddaman					eval CONF_flags_${key}=S'$'CONF_flags_${key}
625b30d1939SAndy Fiddaman					;;
626b30d1939SAndy Fiddaman				esac
627b30d1939SAndy Fiddaman			done
628b30d1939SAndy Fiddaman		esac
629b30d1939SAndy Fiddaman		;;
630b30d1939SAndy Fiddaman	esac
631b30d1939SAndy Fiddamandone
632b30d1939SAndy Fiddaman
633b30d1939SAndy Fiddaman# sort keys by name
634b30d1939SAndy Fiddaman
635b30d1939SAndy Fiddamankeys=`for key in $keys
636b30d1939SAndy Fiddamando	eval echo '$'CONF_name_$key '$'key
637b30d1939SAndy Fiddamandone | sort -u | sed 's,.* ,,'`
638b30d1939SAndy Fiddamancase $debug in
639b30d1939SAndy Fiddaman-d3)	for key in $keys
640b30d1939SAndy Fiddaman	do	eval name=\"'$'CONF_name_$key\"
641b30d1939SAndy Fiddaman		case $name in
642b30d1939SAndy Fiddaman		?*)	eval standard=\"'$'CONF_standard_$key\"
643b30d1939SAndy Fiddaman			eval call=\"'$'CONF_call_$key\"
644b30d1939SAndy Fiddaman			eval section=\"'$'CONF_section_$key\"
645b30d1939SAndy Fiddaman			eval flags=\"'$'CONF_flags_$key\"
646b30d1939SAndy Fiddaman			eval define=\"'$'CONF_define_$key\"
647b30d1939SAndy Fiddaman			eval values=\"'$'CONF_values_$key\"
648b30d1939SAndy Fiddaman			eval script=\"'$'CONF_script_$key\"
649b30d1939SAndy Fiddaman			eval headers=\"'$'CONF_headers_$key\"
650b30d1939SAndy Fiddaman			printf "%29s %35s %8s %2s %1d %5s %s$nl" "$name" "$key" "$standard" "$call" "$section" "$flags" "$define${values:+$sp=$values}${headers:+$sp$headers$nl}${script:+$sp$ob$script$nl$cb}"
651b30d1939SAndy Fiddaman			;;
652b30d1939SAndy Fiddaman		esac
653b30d1939SAndy Fiddaman	done
654b30d1939SAndy Fiddaman	exit
655b30d1939SAndy Fiddaman	;;
656b30d1939SAndy Fiddamanesac
657b30d1939SAndy Fiddaman
658b30d1939SAndy Fiddaman# mark the dups CONF_PREFIXED
659b30d1939SAndy Fiddaman
660b30d1939SAndy Fiddamanprev_key=
661b30d1939SAndy Fiddamanprev_name=
662b30d1939SAndy Fiddamanfor key in $keys
663b30d1939SAndy Fiddamando	eval name=\"'$'CONF_name_$key\"
664b30d1939SAndy Fiddaman	case $name in
665b30d1939SAndy Fiddaman	'')	continue
666b30d1939SAndy Fiddaman		;;
667b30d1939SAndy Fiddaman	$prev_name)
668b30d1939SAndy Fiddaman		eval p='$'CONF_flags_${prev_key}
669b30d1939SAndy Fiddaman		eval c='$'CONF_flags_${key}
670b30d1939SAndy Fiddaman		case $p:$c in
671b30d1939SAndy Fiddaman		*L*:*L*);;
672b30d1939SAndy Fiddaman		*L*:*)	c=L${c} ;;
673b30d1939SAndy Fiddaman		*:*L*)	p=L${p} ;;
674b30d1939SAndy Fiddaman		*)	p=P$p c=P$c ;;
675b30d1939SAndy Fiddaman		esac
676b30d1939SAndy Fiddaman		eval CONF_flags_${prev_key}=$p
677b30d1939SAndy Fiddaman		eval CONF_flags_${key}=$c
678b30d1939SAndy Fiddaman		;;
679b30d1939SAndy Fiddaman	esac
680b30d1939SAndy Fiddaman	prev_name=$name
681b30d1939SAndy Fiddaman	prev_key=$key
682b30d1939SAndy Fiddamandone
683b30d1939SAndy Fiddaman
684b30d1939SAndy Fiddaman# collect all the macros/enums
685b30d1939SAndy Fiddaman
686b30d1939SAndy Fiddamanfor key in $keys
687b30d1939SAndy Fiddamando	eval name=\"'$'CONF_name_$key\"
688b30d1939SAndy Fiddaman	case $name in
689b30d1939SAndy Fiddaman	'')		continue ;;
690b30d1939SAndy Fiddaman	$keep_name)	;;
691b30d1939SAndy Fiddaman	*)		continue ;;
692b30d1939SAndy Fiddaman	esac
693b30d1939SAndy Fiddaman	eval call=\"'$'CONF_call_$key\"
694b30d1939SAndy Fiddaman	case $call in
695b30d1939SAndy Fiddaman	$keep_call)	;;
696b30d1939SAndy Fiddaman	*)		continue ;;
697b30d1939SAndy Fiddaman	esac
698b30d1939SAndy Fiddaman	eval standard=\"'$'CONF_standard_$key\"
699b30d1939SAndy Fiddaman	eval section=\"'$'CONF_section_$key\"
700b30d1939SAndy Fiddaman	eval flags=\"'$'CONF_flags_$key\"
701b30d1939SAndy Fiddaman	eval define=\"'$'CONF_define_$key\"
702b30d1939SAndy Fiddaman	eval values=\"'$'CONF_values_$key\"
703b30d1939SAndy Fiddaman	eval script=\"'$'CONF_script_$key\"
704b30d1939SAndy Fiddaman	eval args=\"'$'CONF_args_$key\"
705b30d1939SAndy Fiddaman	eval headers=\"'$'CONF_headers_$key\"
706b30d1939SAndy Fiddaman	conf_name=$name
707b30d1939SAndy Fiddaman	case $call in
708b30d1939SAndy Fiddaman	QQ)	call=XX
709b30d1939SAndy Fiddaman		for c in SC PC CS
710b30d1939SAndy Fiddaman		do	case $flags in
711b30d1939SAndy Fiddaman			*S*)	case $section in
712b30d1939SAndy Fiddaman				1)	eval x='$'CONF_call_${c}_${standard}_${name} ;;
713b30d1939SAndy Fiddaman				*)	eval x='$'CONF_call_${c}_${standard}${section}_${name} ;;
714b30d1939SAndy Fiddaman				esac
715b30d1939SAndy Fiddaman				;;
716b30d1939SAndy Fiddaman			*)	eval x='$'CONF_call_${c}_${name}
717b30d1939SAndy Fiddaman				;;
718b30d1939SAndy Fiddaman			esac
719b30d1939SAndy Fiddaman			case $x in
720b30d1939SAndy Fiddaman			?*)	call=$x
721b30d1939SAndy Fiddaman				break
722b30d1939SAndy Fiddaman				;;
723b30d1939SAndy Fiddaman			esac
724b30d1939SAndy Fiddaman		done
725b30d1939SAndy Fiddaman		case $call in
726b30d1939SAndy Fiddaman		XX)	for c in SC PC CS
727b30d1939SAndy Fiddaman			do	echo "_${c}_${name}"
728b30d1939SAndy Fiddaman				case $flags in
729b30d1939SAndy Fiddaman				*S*)	case $section in
730b30d1939SAndy Fiddaman					1)	echo "_${c}_${standard}_${name}" ;;
731b30d1939SAndy Fiddaman					*)	echo "_${c}_${standard}${section}_${name}" ;;
732b30d1939SAndy Fiddaman					esac
733b30d1939SAndy Fiddaman					;;
734b30d1939SAndy Fiddaman				esac
735b30d1939SAndy Fiddaman			done
736b30d1939SAndy Fiddaman			;;
737b30d1939SAndy Fiddaman		esac
738b30d1939SAndy Fiddaman		;;
739b30d1939SAndy Fiddaman	esac
740b30d1939SAndy Fiddaman	case $call in
741b30d1939SAndy Fiddaman	CS|PC|SC|SI|XX)
742b30d1939SAndy Fiddaman		;;
743b30d1939SAndy Fiddaman	*)	echo "$command: $name: $call: invalid call" >&2
744b30d1939SAndy Fiddaman		exit 1
745b30d1939SAndy Fiddaman		;;
746b30d1939SAndy Fiddaman	esac
747b30d1939SAndy Fiddaman	case $flags in
748b30d1939SAndy Fiddaman	*[ABEGHIJQTYZabcefghijklmnopqrstuvwxyz_123456789]*)
749b30d1939SAndy Fiddaman		echo "$command: $name: $flags: invalid flag(s)" >&2
750b30d1939SAndy Fiddaman		exit 1
751b30d1939SAndy Fiddaman		;;
752b30d1939SAndy Fiddaman	esac
753b30d1939SAndy Fiddaman	case $section in
754b30d1939SAndy Fiddaman	[01])	;;
755b30d1939SAndy Fiddaman	*)	case $flags in
756b30d1939SAndy Fiddaman		*N*)	;;
757b30d1939SAndy Fiddaman		*)	name=${section}_${name} ;;
758b30d1939SAndy Fiddaman		esac
759b30d1939SAndy Fiddaman		standard=${standard}${section}
760b30d1939SAndy Fiddaman		;;
761b30d1939SAndy Fiddaman	esac
762b30d1939SAndy Fiddaman	case $call in
763b30d1939SAndy Fiddaman	XX)	;;
764b30d1939SAndy Fiddaman	*)	case $flags in
765b30d1939SAndy Fiddaman		*d*)	conf_op=${define} ;;
766b30d1939SAndy Fiddaman		*O*)	conf_op=${call}_${name} ;;
767b30d1939SAndy Fiddaman		*R*)	conf_op=_${standard}_${call}_${name} ;;
768b30d1939SAndy Fiddaman		*S*)	conf_op=_${call}_${standard}_${name} ;;
769b30d1939SAndy Fiddaman		*)	conf_op=_${call}_${name} ;;
770b30d1939SAndy Fiddaman		esac
771b30d1939SAndy Fiddaman		echo "${conf_op}"
772b30d1939SAndy Fiddaman		;;
773b30d1939SAndy Fiddaman	esac
774b30d1939SAndy Fiddaman	case $standard:$flags in
775b30d1939SAndy Fiddaman	C:*)	;;
776b30d1939SAndy Fiddaman	*:*L*)	echo "${conf_name}"
777b30d1939SAndy Fiddaman		echo "_${standard}_${conf_name}"
778b30d1939SAndy Fiddaman		;;
779b30d1939SAndy Fiddaman	*:*M*)	case $section in
780b30d1939SAndy Fiddaman		1)	echo "_${standard}_${conf_name}" ;;
781b30d1939SAndy Fiddaman		*)	echo "_${standard}${section}_${conf_name}" ;;
782b30d1939SAndy Fiddaman		esac
783b30d1939SAndy Fiddaman		;;
784b30d1939SAndy Fiddaman	esac
785b30d1939SAndy Fiddamandone > $tmp.q
786b30d1939SAndy Fiddamansort -u < $tmp.q > $tmp.t
787b30d1939SAndy Fiddamanmv $tmp.t $tmp.q
788b30d1939SAndy Fiddamansort -u < $tmp.v > $tmp.t
789b30d1939SAndy Fiddamanmv $tmp.t $tmp.v
790b30d1939SAndy Fiddamancase $debug in
791b30d1939SAndy Fiddaman-d4)	exit ;;
792b30d1939SAndy Fiddamanesac
793b30d1939SAndy Fiddaman
794b30d1939SAndy Fiddaman# test all the macros in a few batches (some compilers have an error limit)
795b30d1939SAndy Fiddaman
796b30d1939SAndy Fiddamandefined() # list-file
797b30d1939SAndy Fiddaman{
798b30d1939SAndy Fiddaman	: > $tmp.p
799b30d1939SAndy Fiddaman	while	:
800b30d1939SAndy Fiddaman	do	{
801b30d1939SAndy Fiddaman			cat <<!
802b30d1939SAndy Fiddaman${head}
803b30d1939SAndy Fiddaman#include <sys/types.h>
804b30d1939SAndy Fiddaman#include <limits.h>
805b30d1939SAndy Fiddaman#include <unistd.h>$systeminfo$headers
806b30d1939SAndy Fiddaman${tail}
807b30d1939SAndy Fiddaman#undef conf
808b30d1939SAndy Fiddamanunsigned int conf[] = {
809b30d1939SAndy Fiddaman!
810b30d1939SAndy Fiddaman			sed 's/$/,/' $1
811b30d1939SAndy Fiddaman			echo "};"
812b30d1939SAndy Fiddaman		} > $tmp.c
813b30d1939SAndy Fiddaman		[ -f $tmp.1.c ] || cp $tmp.c $tmp.1.c
814b30d1939SAndy Fiddaman		if	$cc -c $tmp.c > $tmp.e 2>&1
815b30d1939SAndy Fiddaman		then	break
816b30d1939SAndy Fiddaman		fi
817b30d1939SAndy Fiddaman		[ -f $tmp.1.e ] || cp $tmp.e $tmp.1.e
818b30d1939SAndy Fiddaman		snl='\
819b30d1939SAndy Fiddaman'
820b30d1939SAndy Fiddaman		grep 'error:' $tmp.e | sed "s/did you mean.*//" |
821b30d1939SAndy Fiddaman		sed "s/[^_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789][^_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789]*/${snl}/g" |
822b30d1939SAndy Fiddaman		grep '^[_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz][_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789]*$' |
823b30d1939SAndy Fiddaman		sort -u > $tmp.n
824b30d1939SAndy Fiddaman		cmp -s $tmp.n $tmp.p && break
825b30d1939SAndy Fiddaman		fgrep -x -v -f $tmp.n $1 > $tmp.y
826b30d1939SAndy Fiddaman		mv $tmp.y $1
827b30d1939SAndy Fiddaman		mv $tmp.n $tmp.p
828b30d1939SAndy Fiddaman	done
829b30d1939SAndy Fiddaman	{
830b30d1939SAndy Fiddaman		cat <<!
831b30d1939SAndy Fiddaman${head}
832b30d1939SAndy Fiddaman#include <sys/types.h>
833b30d1939SAndy Fiddaman#include <limits.h>
834b30d1939SAndy Fiddaman#include <unistd.h>$systeminfo$headers
835b30d1939SAndy Fiddaman${tail}
836b30d1939SAndy Fiddaman#undef conf
837b30d1939SAndy Fiddaman!
838b30d1939SAndy Fiddaman		sed 's/.*/conf "&" = &/' $1
839b30d1939SAndy Fiddaman	} > $tmp.c
840b30d1939SAndy Fiddaman	$cc -E $tmp.c 2>/dev/null |
841b30d1939SAndy Fiddaman	sed -e '/conf[ 	]*".*"[ 	]*=[ 	]*/!d' -e '/[_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789][ 	]*(/!d' -e 's/.*"\(.*\)".*/\1/' > $tmp.n
842b30d1939SAndy Fiddaman	if	test -s $tmp.n
843b30d1939SAndy Fiddaman	then	fgrep -x -v -f $tmp.n $1 > $tmp.y
844b30d1939SAndy Fiddaman		mv $tmp.y $1
845b30d1939SAndy Fiddaman	fi
846b30d1939SAndy Fiddaman}
847b30d1939SAndy Fiddaman
848b30d1939SAndy Fiddamancase $verbose in
849b30d1939SAndy Fiddaman1)	echo "$command: check macros/enums as static initializers" >&2 ;;
850b30d1939SAndy Fiddamanesac
851b30d1939SAndy Fiddamandefined $tmp.q
852b30d1939SAndy Fiddamandefined $tmp.v
853b30d1939SAndy Fiddamancase $debug in
854b30d1939SAndy Fiddaman-d5)	exit ;;
855b30d1939SAndy Fiddamanesac
856b30d1939SAndy Fiddaman
857b30d1939SAndy Fiddaman# mark the constant macros/enums
858b30d1939SAndy Fiddaman
859b30d1939SAndy Fiddamanexec < $tmp.q
860b30d1939SAndy Fiddamanwhile	read line
861b30d1939SAndy Fiddamando	eval CONF_const_${line}=1
862b30d1939SAndy Fiddamandone
863b30d1939SAndy Fiddamanexec < $tmp.v
864b30d1939SAndy Fiddamanwhile	read line
865b30d1939SAndy Fiddamando	eval CONF_const_${line}=1
866b30d1939SAndy Fiddamandone
867b30d1939SAndy Fiddaman
868b30d1939SAndy Fiddaman# mark the string literal values
869b30d1939SAndy Fiddaman
870b30d1939SAndy Fiddaman{
871b30d1939SAndy Fiddaman	cat <<!
872b30d1939SAndy Fiddaman${head}
873b30d1939SAndy Fiddaman#include <sys/types.h>
874b30d1939SAndy Fiddaman#include <limits.h>
875b30d1939SAndy Fiddaman#include <unistd.h>$systeminfo$headers
876b30d1939SAndy Fiddaman${tail}
877b30d1939SAndy Fiddaman#undef conf
878b30d1939SAndy Fiddaman!
879b30d1939SAndy Fiddaman	sed 's/.*/conf "&" = &/' $tmp.q
880b30d1939SAndy Fiddaman} > $tmp.c
881b30d1939SAndy Fiddaman$cc -E $tmp.c 2>/dev/null |
882b30d1939SAndy Fiddamansed -e '/conf[ 	]*".*"[ 	]*=[ 	]*"/!d' -e 's/.*"\([^"]*\)".*/\1/' > $tmp.e
883b30d1939SAndy Fiddamanexec < $tmp.e
884b30d1939SAndy Fiddamanwhile	read line
885b30d1939SAndy Fiddamando	eval CONF_string_${line}=1
886b30d1939SAndy Fiddamandone
887b30d1939SAndy Fiddaman
888b30d1939SAndy Fiddaman# walk through the table
889b30d1939SAndy Fiddaman
890b30d1939SAndy Fiddamancase $shell in
891b30d1939SAndy Fiddamanksh)	integer len name_max ;;
892b30d1939SAndy Fiddamanesac
893b30d1939SAndy Fiddamanname_max=1
894b30d1939SAndy Fiddamanexport tmp name standard call cc
895b30d1939SAndy Fiddaman
896b30d1939SAndy Fiddamanexec > $tmp.t
897b30d1939SAndy Fiddamanfor key in $keys
898b30d1939SAndy Fiddamando	eval name=\"'$'CONF_name_$key\"
899b30d1939SAndy Fiddaman	case $name in
900b30d1939SAndy Fiddaman	'')		continue ;;
901b30d1939SAndy Fiddaman	$keep_name)	;;
902b30d1939SAndy Fiddaman	*)		continue ;;
903b30d1939SAndy Fiddaman	esac
904b30d1939SAndy Fiddaman	eval call=\"'$'CONF_call_$key\"
905b30d1939SAndy Fiddaman	case $call in
906b30d1939SAndy Fiddaman	$keep_call)	;;
907b30d1939SAndy Fiddaman	*)		continue ;;
908b30d1939SAndy Fiddaman	esac
909b30d1939SAndy Fiddaman	eval standard=\"'$'CONF_standard_$key\"
910b30d1939SAndy Fiddaman	eval section=\"'$'CONF_section_$key\"
911b30d1939SAndy Fiddaman	eval flags=\"'$'CONF_flags_$key\"
912b30d1939SAndy Fiddaman	eval define=\"'$'CONF_define_$key\"
913b30d1939SAndy Fiddaman	eval values=\"'$'CONF_values_$key\"
914b30d1939SAndy Fiddaman	eval script=\"'$'CONF_script_$key\"
915b30d1939SAndy Fiddaman	eval args=\"'$'CONF_args_$key\"
916b30d1939SAndy Fiddaman	eval headers=\"'$'CONF_headers_$key\"
917b30d1939SAndy Fiddaman	conf_name=$name
918b30d1939SAndy Fiddaman	case $call in
919b30d1939SAndy Fiddaman	QQ)	call=XX
920b30d1939SAndy Fiddaman		for c in SC PC CS
921b30d1939SAndy Fiddaman		do	case $flags in
922b30d1939SAndy Fiddaman			*S*)	case $section in
923b30d1939SAndy Fiddaman				1)	eval x='$'CONF_call_${c}_${standard}_${name} ;;
924b30d1939SAndy Fiddaman				*)	eval x='$'CONF_call_${c}_${standard}${section}_${name} ;;
925b30d1939SAndy Fiddaman				esac
926b30d1939SAndy Fiddaman				;;
927b30d1939SAndy Fiddaman			*)	eval x='$'CONF_call_${c}_${name}
928b30d1939SAndy Fiddaman				;;
929b30d1939SAndy Fiddaman			esac
930b30d1939SAndy Fiddaman			case $x in
931b30d1939SAndy Fiddaman			?*)	call=$x
932b30d1939SAndy Fiddaman				break
933b30d1939SAndy Fiddaman				;;
934b30d1939SAndy Fiddaman			esac
935b30d1939SAndy Fiddaman		done
936b30d1939SAndy Fiddaman		case $call in
937b30d1939SAndy Fiddaman		XX)	for c in SC PC CS
938b30d1939SAndy Fiddaman			do	case $flags in
939b30d1939SAndy Fiddaman				*S*)	case $section in
940b30d1939SAndy Fiddaman					1)	eval x='$'CONF_const__${c}_${standard}_${name} ;;
941b30d1939SAndy Fiddaman					*)	eval x='$'CONF_const__${c}_${standard}${section}_${name} ;;
942b30d1939SAndy Fiddaman					esac
943b30d1939SAndy Fiddaman					;;
944b30d1939SAndy Fiddaman				*)	eval x='$'CONF_const__${c}_${name}
945b30d1939SAndy Fiddaman					;;
946b30d1939SAndy Fiddaman				esac
947b30d1939SAndy Fiddaman				case $x in
948b30d1939SAndy Fiddaman				1)	call=$c
949b30d1939SAndy Fiddaman					break
950b30d1939SAndy Fiddaman					;;
951b30d1939SAndy Fiddaman				esac
952b30d1939SAndy Fiddaman			done
953b30d1939SAndy Fiddaman			;;
954b30d1939SAndy Fiddaman		esac
955b30d1939SAndy Fiddaman		case $call in
956b30d1939SAndy Fiddaman		XX)	case $standard in
957b30d1939SAndy Fiddaman			C)	standard=POSIX ;;
958b30d1939SAndy Fiddaman			esac
959b30d1939SAndy Fiddaman			case $flags in
960b30d1939SAndy Fiddaman			*L*)	flags=lFU ;;
961b30d1939SAndy Fiddaman			*)	flags=FU ;;
962b30d1939SAndy Fiddaman			esac
963b30d1939SAndy Fiddaman			;;
964b30d1939SAndy Fiddaman		esac
965b30d1939SAndy Fiddaman		;;
966b30d1939SAndy Fiddaman	esac
967b30d1939SAndy Fiddaman	case " $standards " in
968b30d1939SAndy Fiddaman	*" $standard "*)
969b30d1939SAndy Fiddaman		;;
970b30d1939SAndy Fiddaman	*)	standards="$standards $standard"
971b30d1939SAndy Fiddaman		;;
972b30d1939SAndy Fiddaman	esac
973b30d1939SAndy Fiddaman	conf_standard=CONF_${standard}
974b30d1939SAndy Fiddaman	case $call in
975b30d1939SAndy Fiddaman	CS)	conf_call=CONF_confstr
976b30d1939SAndy Fiddaman		;;
977b30d1939SAndy Fiddaman	PC)	conf_call=CONF_pathconf
978b30d1939SAndy Fiddaman		;;
979b30d1939SAndy Fiddaman	SC)	conf_call=CONF_sysconf
980b30d1939SAndy Fiddaman		;;
981b30d1939SAndy Fiddaman	SI)	conf_call=CONF_sysinfo
982b30d1939SAndy Fiddaman		;;
983b30d1939SAndy Fiddaman	XX)	conf_call=CONF_nop
984b30d1939SAndy Fiddaman		;;
985b30d1939SAndy Fiddaman	esac
986b30d1939SAndy Fiddaman	conf_op=-1
987b30d1939SAndy Fiddaman	for s in _${call}_${standard}${section}_${name} _${call}_${standard}_${name} _${call}_${section}_${name} _${call}_${name} ${call}_${name}
988b30d1939SAndy Fiddaman	do	eval x='$'CONF_const_${s}
989b30d1939SAndy Fiddaman		case $x in
990b30d1939SAndy Fiddaman		1)	conf_op=${s}
991b30d1939SAndy Fiddaman			break
992b30d1939SAndy Fiddaman			;;
993b30d1939SAndy Fiddaman		esac
994b30d1939SAndy Fiddaman	done
995b30d1939SAndy Fiddaman	conf_section=$section
996b30d1939SAndy Fiddaman	conf_flags=0
997b30d1939SAndy Fiddaman	case $flags in
998b30d1939SAndy Fiddaman	*C*)	conf_flags="${conf_flags}|CONF_DEFER_CALL" ;;
999b30d1939SAndy Fiddaman	esac
1000b30d1939SAndy Fiddaman	case $flags in
1001b30d1939SAndy Fiddaman	*D*)	conf_flags="${conf_flags}|CONF_DEFER_MM" ;;
1002b30d1939SAndy Fiddaman	esac
1003b30d1939SAndy Fiddaman	case $flags in
1004b30d1939SAndy Fiddaman	*F*)	conf_flags="${conf_flags}|CONF_FEATURE" ;;
1005b30d1939SAndy Fiddaman	esac
1006b30d1939SAndy Fiddaman	case $flags in
1007b30d1939SAndy Fiddaman	*L*)	conf_flags="${conf_flags}|CONF_LIMIT" ;;
1008b30d1939SAndy Fiddaman	esac
1009b30d1939SAndy Fiddaman	case $flags in
1010b30d1939SAndy Fiddaman	*M*)	conf_flags="${conf_flags}|CONF_MINMAX" ;;
1011b30d1939SAndy Fiddaman	esac
1012b30d1939SAndy Fiddaman	case $flags in
1013b30d1939SAndy Fiddaman	*N*)	conf_flags="${conf_flags}|CONF_NOSECTION" ;;
1014b30d1939SAndy Fiddaman	esac
1015b30d1939SAndy Fiddaman	case $flags in
1016b30d1939SAndy Fiddaman	*P*)	conf_flags="${conf_flags}|CONF_PREFIXED" ;;
1017b30d1939SAndy Fiddaman	esac
1018b30d1939SAndy Fiddaman	case $flags in
1019b30d1939SAndy Fiddaman	*S*)	conf_flags="${conf_flags}|CONF_STANDARD" ;;
1020b30d1939SAndy Fiddaman	esac
1021b30d1939SAndy Fiddaman	case $flags in
1022b30d1939SAndy Fiddaman	*U*)	conf_flags="${conf_flags}|CONF_UNDERSCORE" ;;
1023b30d1939SAndy Fiddaman	esac
1024b30d1939SAndy Fiddaman	case $flags in
1025b30d1939SAndy Fiddaman	*V*)	conf_flags="${conf_flags}|CONF_NOUNDERSCORE" ;;
1026b30d1939SAndy Fiddaman	esac
1027b30d1939SAndy Fiddaman	case $flags in
1028b30d1939SAndy Fiddaman	*W*)	conf_flags="${conf_flags}|CONF_PREFIX_ONLY" ;;
1029b30d1939SAndy Fiddaman	esac
1030b30d1939SAndy Fiddaman	case $debug in
1031b30d1939SAndy Fiddaman	?*)	case $standard in
1032b30d1939SAndy Fiddaman		????)	sep=" " ;;
1033b30d1939SAndy Fiddaman		???)	sep="  " ;;
1034b30d1939SAndy Fiddaman		??)	sep="   " ;;
1035b30d1939SAndy Fiddaman		?)	sep="    " ;;
1036b30d1939SAndy Fiddaman		*)	sep="" ;;
1037b30d1939SAndy Fiddaman		esac
1038b30d1939SAndy Fiddaman		echo "$command: test: $sep$standard $call $name" >&2
1039b30d1939SAndy Fiddaman		;;
1040b30d1939SAndy Fiddaman	esac
1041b30d1939SAndy Fiddaman	case $call in
1042b30d1939SAndy Fiddaman	CS|SI)	conf_flags="${conf_flags}|CONF_STRING"
1043b30d1939SAndy Fiddaman		string=1
1044b30d1939SAndy Fiddaman		;;
1045b30d1939SAndy Fiddaman	*)	eval string='$'CONF_string_${key}
1046b30d1939SAndy Fiddaman		;;
1047b30d1939SAndy Fiddaman	esac
1048b30d1939SAndy Fiddaman	conf_limit=0
1049b30d1939SAndy Fiddaman	case $flags in
1050b30d1939SAndy Fiddaman	*[Ll]*)	d=
1051b30d1939SAndy Fiddaman		case ${conf_name} in
1052b30d1939SAndy Fiddaman		LONG_MAX|SSIZE_MAX)
1053b30d1939SAndy Fiddaman			x=
1054b30d1939SAndy Fiddaman			;;
1055b30d1939SAndy Fiddaman		*)	eval x='$'CONF_const_${conf_name}
1056b30d1939SAndy Fiddaman			;;
1057b30d1939SAndy Fiddaman		esac
1058b30d1939SAndy Fiddaman		case $x in
1059b30d1939SAndy Fiddaman		'')	for s in ${values}
1060b30d1939SAndy Fiddaman			do	case $s in
1061b30d1939SAndy Fiddaman				$sym)	eval x='$'CONF_const_${s}
1062b30d1939SAndy Fiddaman					case $x in
1063b30d1939SAndy Fiddaman					1)	eval a='$'CONF_const_${standard}_${s}
1064b30d1939SAndy Fiddaman						case $a in
1065b30d1939SAndy Fiddaman						$x)	x= ;;
1066b30d1939SAndy Fiddaman						*)	x=$s ;;
1067b30d1939SAndy Fiddaman						esac
1068b30d1939SAndy Fiddaman						break
1069b30d1939SAndy Fiddaman						;;
1070b30d1939SAndy Fiddaman					esac
1071b30d1939SAndy Fiddaman					;;
1072b30d1939SAndy Fiddaman				[0123456789]*|[-+][0123456789]*)
1073b30d1939SAndy Fiddaman					d=$s
1074b30d1939SAndy Fiddaman					break
1075b30d1939SAndy Fiddaman					;;
1076b30d1939SAndy Fiddaman				esac
1077b30d1939SAndy Fiddaman			done
1078b30d1939SAndy Fiddaman			case ${x:+1}:$flags:$conf_op in
1079b30d1939SAndy Fiddaman			:*:-1|:*X*:*)
1080b30d1939SAndy Fiddaman				case $verbose in
1081b30d1939SAndy Fiddaman				1)	echo "$command: probe for ${conf_name} <limits.h> value" >&2 ;;
1082b30d1939SAndy Fiddaman				esac
1083b30d1939SAndy Fiddaman				x=
1084b30d1939SAndy Fiddaman				case $CONF_getconf in
1085b30d1939SAndy Fiddaman				?*)	if	$CONF_getconf $conf_name > $tmp.x 2>/dev/null
1086b30d1939SAndy Fiddaman					then	x=`cat $tmp.x`
1087b30d1939SAndy Fiddaman						case $x in
1088b30d1939SAndy Fiddaman						undefined)	x= ;;
1089b30d1939SAndy Fiddaman						esac
1090b30d1939SAndy Fiddaman					fi
1091b30d1939SAndy Fiddaman					;;
1092b30d1939SAndy Fiddaman				esac
1093b30d1939SAndy Fiddaman				case ${x:+1} in
1094b30d1939SAndy Fiddaman				'')	case $script in
1095b30d1939SAndy Fiddaman					'#'*)	echo "$script" > $tmp.sh
1096b30d1939SAndy Fiddaman						chmod +x $tmp.sh
1097b30d1939SAndy Fiddaman						x=`./$tmp.sh 2>/dev/null`
1098b30d1939SAndy Fiddaman						;;
1099b30d1939SAndy Fiddaman					'')	case $conf_name in
1100b30d1939SAndy Fiddaman						SIZE_*|U*|*_MAX)
1101b30d1939SAndy Fiddaman							f="%${LL_format}u"
1102b30d1939SAndy Fiddaman							t="unsigned _ast_intmax_t"
1103b30d1939SAndy Fiddaman							;;
1104b30d1939SAndy Fiddaman						*)	f="%${LL_format}d"
1105b30d1939SAndy Fiddaman							t="_ast_intmax_t"
1106b30d1939SAndy Fiddaman							;;
1107b30d1939SAndy Fiddaman						esac
1108b30d1939SAndy Fiddaman						cat > $tmp.c <<!
1109b30d1939SAndy Fiddaman${head}
1110b30d1939SAndy Fiddaman#include <stdio.h>
1111b30d1939SAndy Fiddaman#include <sys/types.h>
1112b30d1939SAndy Fiddaman#include <limits.h>
1113b30d1939SAndy Fiddaman#include <unistd.h>$systeminfo$headers
1114b30d1939SAndy Fiddaman${tail}
1115b30d1939SAndy Fiddamanint
1116b30d1939SAndy Fiddamanmain()
1117b30d1939SAndy Fiddaman{
1118b30d1939SAndy Fiddaman	printf("$f\n", ($t)$conf_name);
1119b30d1939SAndy Fiddaman	return 0;
1120b30d1939SAndy Fiddaman}
1121b30d1939SAndy Fiddaman!
1122b30d1939SAndy Fiddaman						;;
1123b30d1939SAndy Fiddaman					*)	cat > $tmp.c <<!
1124b30d1939SAndy Fiddaman${head}
1125b30d1939SAndy Fiddaman#include <stdio.h>
1126b30d1939SAndy Fiddaman#include <sys/types.h>
1127b30d1939SAndy Fiddaman#include <limits.h>
1128b30d1939SAndy Fiddaman#include <unistd.h>$systeminfo$headers
1129b30d1939SAndy Fiddaman${tail}
1130b30d1939SAndy Fiddaman${script}
1131b30d1939SAndy Fiddaman!
1132b30d1939SAndy Fiddaman						;;
1133b30d1939SAndy Fiddaman					esac
1134b30d1939SAndy Fiddaman					case $args in
1135b30d1939SAndy Fiddaman					'')	set "" ;;
1136b30d1939SAndy Fiddaman					*)	eval set '""' '"'$args'"'; shift ;;
1137b30d1939SAndy Fiddaman					esac
1138b30d1939SAndy Fiddaman					for a
1139b30d1939SAndy Fiddaman					do	case $script in
1140b30d1939SAndy Fiddaman						'#'*)	./$tmp.sh $a > $tmp.x 2>/dev/null
1141b30d1939SAndy Fiddaman							x=$?
1142b30d1939SAndy Fiddaman							;;
1143b30d1939SAndy Fiddaman						*)	$cc $a -o $tmp.exe $tmp.c >/dev/null 2>&1 && ./$tmp.exe > $tmp.x 2>/dev/null
1144b30d1939SAndy Fiddaman							x=$?
1145b30d1939SAndy Fiddaman							;;
1146b30d1939SAndy Fiddaman						esac
1147b30d1939SAndy Fiddaman						case $x in
1148b30d1939SAndy Fiddaman						0)	x=`cat $tmp.x`
1149b30d1939SAndy Fiddaman							case $x in
1150b30d1939SAndy Fiddaman							"-")	x=$a ;;
1151b30d1939SAndy Fiddaman							esac
1152b30d1939SAndy Fiddaman							break
1153b30d1939SAndy Fiddaman							;;
1154b30d1939SAndy Fiddaman						*)	x=
1155b30d1939SAndy Fiddaman							;;
1156b30d1939SAndy Fiddaman						esac
1157b30d1939SAndy Fiddaman					done
1158b30d1939SAndy Fiddaman					;;
1159b30d1939SAndy Fiddaman				esac
1160b30d1939SAndy Fiddaman				case $x in
1161b30d1939SAndy Fiddaman				'')	x=$d ;;
1162b30d1939SAndy Fiddaman				esac
1163b30d1939SAndy Fiddaman				;;
1164b30d1939SAndy Fiddaman			esac
1165b30d1939SAndy Fiddaman			case ${x:+1}:$flags:$conf_op in
1166b30d1939SAndy Fiddaman			1:*:-1|1:*X*:*)
1167b30d1939SAndy Fiddaman				conf_limit=$x
1168b30d1939SAndy Fiddaman				case $flags in
1169b30d1939SAndy Fiddaman				*L*)	;;
1170b30d1939SAndy Fiddaman				*)	conf_flags="${conf_flags}|CONF_LIMIT" ;;
1171b30d1939SAndy Fiddaman				esac
1172b30d1939SAndy Fiddaman				conf_flags="${conf_flags}|CONF_LIMIT_DEF"
1173b30d1939SAndy Fiddaman				case $string:$x in
1174b30d1939SAndy Fiddaman				1:*)	cat >> $tmp.l <<!
1175b30d1939SAndy Fiddamanprintf("#ifndef ${conf_name}\n");
1176b30d1939SAndy Fiddamanprintf("#define ${conf_name} \"${x}\"\n");
1177b30d1939SAndy Fiddamanprintf("#endif\n");
1178b30d1939SAndy Fiddaman!
1179b30d1939SAndy Fiddaman					;;
1180b30d1939SAndy Fiddaman				*:U*)	cat >> $tmp.l <<!
1181b30d1939SAndy Fiddamanprintf("#ifndef ${conf_name}\n");
1182b30d1939SAndy Fiddamanprintf("#ifndef ${x}\n");
1183b30d1939SAndy Fiddamanprintf("#define ${x} %lu\n", ${x});
1184b30d1939SAndy Fiddamanprintf("#endif\n");
1185b30d1939SAndy Fiddamanprintf("#define ${conf_name} ${x}\n");
1186b30d1939SAndy Fiddamanprintf("#endif\n");
1187b30d1939SAndy Fiddaman!
1188b30d1939SAndy Fiddaman					;;
1189b30d1939SAndy Fiddaman				*:$sym)	cat >> $tmp.l <<!
1190b30d1939SAndy Fiddamanprintf("#ifndef ${conf_name}\n");
1191b30d1939SAndy Fiddamanprintf("#ifndef ${x}\n");
1192b30d1939SAndy Fiddamanprintf("#define ${x} %ld\n", ${x});
1193b30d1939SAndy Fiddamanprintf("#endif\n");
1194b30d1939SAndy Fiddamanprintf("#define ${conf_name} ${x}\n");
1195b30d1939SAndy Fiddamanprintf("#endif\n");
1196b30d1939SAndy Fiddaman!
1197b30d1939SAndy Fiddaman					;;
1198b30d1939SAndy Fiddaman				*)	cat >> $tmp.l <<!
1199b30d1939SAndy Fiddamanprintf("#ifndef ${conf_name}\n");
1200b30d1939SAndy Fiddamanprintf("#define ${conf_name} ${x}\n");
1201b30d1939SAndy Fiddamanprintf("#endif\n");
1202b30d1939SAndy Fiddaman!
1203b30d1939SAndy Fiddaman					;;
1204b30d1939SAndy Fiddaman				esac
1205b30d1939SAndy Fiddaman				;;
1206b30d1939SAndy Fiddaman			esac
1207b30d1939SAndy Fiddaman			;;
1208b30d1939SAndy Fiddaman		esac
1209b30d1939SAndy Fiddaman		;;
1210b30d1939SAndy Fiddaman	esac
1211b30d1939SAndy Fiddaman	case $section in
1212b30d1939SAndy Fiddaman	[01])	;;
1213b30d1939SAndy Fiddaman	*)	case $flags in
1214b30d1939SAndy Fiddaman		*N*)	;;
1215b30d1939SAndy Fiddaman		*)	name=${section}_${name} ;;
1216b30d1939SAndy Fiddaman		esac
1217b30d1939SAndy Fiddaman		standard=${standard}${section}
1218b30d1939SAndy Fiddaman		;;
1219b30d1939SAndy Fiddaman	esac
1220b30d1939SAndy Fiddaman	conf_minmax=0
1221b30d1939SAndy Fiddaman	case $call:$standard:$flags in
1222b30d1939SAndy Fiddaman	*:C:*M*)for s in _${standard}_${conf_name} ${values}
1223b30d1939SAndy Fiddaman		do	case $s in
1224b30d1939SAndy Fiddaman			$sym)	;;
1225b30d1939SAndy Fiddaman			*)	conf_minmax=$s
1226b30d1939SAndy Fiddaman				conf_flags="${conf_flags}|CONF_MINMAX_DEF"
1227b30d1939SAndy Fiddaman				break
1228b30d1939SAndy Fiddaman				;;
1229b30d1939SAndy Fiddaman			esac
1230b30d1939SAndy Fiddaman		done
1231b30d1939SAndy Fiddaman		;;
1232b30d1939SAndy Fiddaman	*:C:*)	;;
1233b30d1939SAndy Fiddaman	[CPSX][CSX]:*:*[FM]*)
1234b30d1939SAndy Fiddaman		x=
1235b30d1939SAndy Fiddaman		for s in _${standard}_${conf_name} ${values}
1236b30d1939SAndy Fiddaman		do	case $s in
1237b30d1939SAndy Fiddaman			$sym)	eval x='$'CONF_const_${s} ;;
1238b30d1939SAndy Fiddaman			*)	x=1 ;;
1239b30d1939SAndy Fiddaman			esac
1240b30d1939SAndy Fiddaman			case $x in
1241b30d1939SAndy Fiddaman			1)	conf_minmax=$s
1242b30d1939SAndy Fiddaman				case $flags in
1243b30d1939SAndy Fiddaman				*M*)	conf_flags="${conf_flags}|CONF_MINMAX_DEF" ;;
1244b30d1939SAndy Fiddaman				esac
1245b30d1939SAndy Fiddaman				case $conf_minmax in
1246b30d1939SAndy Fiddaman				[-+0123456789]*)	x= ;;
1247b30d1939SAndy Fiddaman				esac
1248b30d1939SAndy Fiddaman				break
1249b30d1939SAndy Fiddaman				;;
1250b30d1939SAndy Fiddaman			esac
1251b30d1939SAndy Fiddaman		done
1252b30d1939SAndy Fiddaman		case ${x:+1}:${script:+1} in
1253b30d1939SAndy Fiddaman		:1)	case $verbose in
1254b30d1939SAndy Fiddaman			1)	echo "$command: probe for _${standard}_${conf_name} minmax value" >&2 ;;
1255b30d1939SAndy Fiddaman			esac
1256b30d1939SAndy Fiddaman			case $CONF_getconf in
1257b30d1939SAndy Fiddaman			?*)	if	$CONF_getconf _${standard}_${conf_name} > $tmp.x 2>/dev/null
1258b30d1939SAndy Fiddaman				then	x=`cat $tmp.x`
1259b30d1939SAndy Fiddaman					case $x in
1260b30d1939SAndy Fiddaman					undefined)	x= ;;
1261b30d1939SAndy Fiddaman					esac
1262b30d1939SAndy Fiddaman				fi
1263b30d1939SAndy Fiddaman				;;
1264b30d1939SAndy Fiddaman			esac
1265b30d1939SAndy Fiddaman			case $x in
1266b30d1939SAndy Fiddaman			'')	case $script in
1267b30d1939SAndy Fiddaman				'#'*)	echo "$script" > $tmp.sh
1268b30d1939SAndy Fiddaman					chmod +x $tmp.sh
1269b30d1939SAndy Fiddaman					x=`./$tmp.sh 2>/dev/null`
1270b30d1939SAndy Fiddaman					;;
1271b30d1939SAndy Fiddaman				*)	cat > $tmp.c <<!
1272b30d1939SAndy Fiddaman${head}
1273b30d1939SAndy Fiddaman#include <sys/types.h>
1274b30d1939SAndy Fiddaman#include <limits.h>
1275b30d1939SAndy Fiddaman#include <unistd.h>$systeminfo$headers
1276b30d1939SAndy Fiddaman${tail}
1277b30d1939SAndy Fiddaman${script}
1278b30d1939SAndy Fiddaman!
1279b30d1939SAndy Fiddaman					;;
1280b30d1939SAndy Fiddaman				esac
1281b30d1939SAndy Fiddaman				case $args in
1282b30d1939SAndy Fiddaman				'')	set "" ;;
1283b30d1939SAndy Fiddaman				*)	eval set '""' "$args"; shift ;;
1284b30d1939SAndy Fiddaman				esac
1285b30d1939SAndy Fiddaman				for a
1286b30d1939SAndy Fiddaman				do	case $script in
1287b30d1939SAndy Fiddaman					'#'*)	./$tmp.sh $a > $tmp.x 2>/dev/null
1288b30d1939SAndy Fiddaman						x=$?
1289b30d1939SAndy Fiddaman						;;
1290b30d1939SAndy Fiddaman					*)	$cc $a -o $tmp.exe $tmp.c >/dev/null 2>&1 && ./$tmp.exe > $tmp.x 2>/dev/null
1291b30d1939SAndy Fiddaman						x=$?
1292b30d1939SAndy Fiddaman						;;
1293b30d1939SAndy Fiddaman					esac
1294b30d1939SAndy Fiddaman					case $x in
1295b30d1939SAndy Fiddaman					0)	x=`cat $tmp.x`
1296b30d1939SAndy Fiddaman						case $x in
1297b30d1939SAndy Fiddaman						"-")	x=$a ;;
1298b30d1939SAndy Fiddaman						esac
1299b30d1939SAndy Fiddaman						break
1300b30d1939SAndy Fiddaman						;;
1301b30d1939SAndy Fiddaman					*)	x=
1302b30d1939SAndy Fiddaman						;;
1303b30d1939SAndy Fiddaman					esac
1304b30d1939SAndy Fiddaman				done
1305b30d1939SAndy Fiddaman				;;
1306b30d1939SAndy Fiddaman			esac
1307b30d1939SAndy Fiddaman			case $x in
1308b30d1939SAndy Fiddaman			?*)	conf_minmax=$x
1309b30d1939SAndy Fiddaman				case $flags in
1310b30d1939SAndy Fiddaman				*M*)	case "|$conf_flags|" in
1311b30d1939SAndy Fiddaman					*'|CONF_MINMAX_DEF|'*)
1312b30d1939SAndy Fiddaman						;;
1313b30d1939SAndy Fiddaman					*)	conf_flags="${conf_flags}|CONF_MINMAX_DEF"
1314b30d1939SAndy Fiddaman						;;
1315b30d1939SAndy Fiddaman					esac
1316b30d1939SAndy Fiddaman					;;
1317b30d1939SAndy Fiddaman				esac
1318b30d1939SAndy Fiddaman				;;
1319b30d1939SAndy Fiddaman			esac
1320b30d1939SAndy Fiddaman			;;
1321b30d1939SAndy Fiddaman		esac
1322b30d1939SAndy Fiddaman		;;
1323b30d1939SAndy Fiddaman	esac
1324b30d1939SAndy Fiddaman	case $string in
1325b30d1939SAndy Fiddaman	1)	conf_limit="{ 0, $conf_limit }" conf_minmax="{ 0, $conf_minmax }"
1326b30d1939SAndy Fiddaman		;;
1327b30d1939SAndy Fiddaman	*)	case $conf_limit in
1328b30d1939SAndy Fiddaman		0[xX]*|-*|+*|[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_]*)
1329b30d1939SAndy Fiddaman			;;
1330b30d1939SAndy Fiddaman		*[!0123456789abcdefABCDEF]*)
1331b30d1939SAndy Fiddaman			conf_limit=0
1332b30d1939SAndy Fiddaman			;;
1333b30d1939SAndy Fiddaman		*[!0123456789]*)
1334b30d1939SAndy Fiddaman			conf_limit=0x$conf_limit
1335b30d1939SAndy Fiddaman			;;
1336b30d1939SAndy Fiddaman		esac
1337b30d1939SAndy Fiddaman		case $conf_minmax in
1338b30d1939SAndy Fiddaman		0[xX]*|-*|+*|[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_]*)
1339b30d1939SAndy Fiddaman			;;
1340b30d1939SAndy Fiddaman		*[!0123456789abcdefABCDEF]*)
1341b30d1939SAndy Fiddaman			conf_minmax=0
1342b30d1939SAndy Fiddaman			;;
1343b30d1939SAndy Fiddaman		*[!0123456789]*)
1344b30d1939SAndy Fiddaman			conf_minmax=0x$conf_minmax
1345b30d1939SAndy Fiddaman			;;
1346b30d1939SAndy Fiddaman		esac
1347b30d1939SAndy Fiddaman		case $conf_limit in
1348b30d1939SAndy Fiddaman		?*[-+]*|*['()']*)
1349b30d1939SAndy Fiddaman			;;
1350b30d1939SAndy Fiddaman		*[lLuU])
1351b30d1939SAndy Fiddaman			case $LL_suffix in
1352b30d1939SAndy Fiddaman			??)	case $conf_limit in
1353b30d1939SAndy Fiddaman				*[!lL][lL]|*[!lL][lL][uU])
1354b30d1939SAndy Fiddaman					conf_limit=${conf_limit}L
1355b30d1939SAndy Fiddaman					;;
1356b30d1939SAndy Fiddaman				esac
1357b30d1939SAndy Fiddaman				;;
1358b30d1939SAndy Fiddaman			esac
1359b30d1939SAndy Fiddaman			;;
1360b30d1939SAndy Fiddaman		-*[2468])
1361b30d1939SAndy Fiddaman			case $shell in
1362b30d1939SAndy Fiddaman			ksh)	p=${conf_limit%?}
1363b30d1939SAndy Fiddaman				s=${conf_limit#$p}
1364b30d1939SAndy Fiddaman				((s=s-1))
1365b30d1939SAndy Fiddaman				;;
1366b30d1939SAndy Fiddaman			*)	eval `echo '' $conf_limit | sed 's/ *\(.*\)\(.\) */p=\1 s=\2/'`
1367b30d1939SAndy Fiddaman				s=`expr $s - 1`
1368b30d1939SAndy Fiddaman				;;
1369b30d1939SAndy Fiddaman			esac
1370b30d1939SAndy Fiddaman			conf_limit=${p}${s}${LL_suffix}-1${LL_suffix}
1371b30d1939SAndy Fiddaman			;;
1372b30d1939SAndy Fiddaman		0[xX]*[abcdefABCDEF])
1373b30d1939SAndy Fiddaman			conf_limit=${conf_limit}${LL_suffix}
1374b30d1939SAndy Fiddaman			;;
1375b30d1939SAndy Fiddaman		-*[0123456789])
1376b30d1939SAndy Fiddaman			conf_limit=${conf_limit}${LL_suffix}
1377b30d1939SAndy Fiddaman			;;
1378b30d1939SAndy Fiddaman		*[0123456789])
1379b30d1939SAndy Fiddaman			conf_limit=${conf_limit}${U_suffix}${LL_suffix}
1380b30d1939SAndy Fiddaman			;;
1381b30d1939SAndy Fiddaman		esac
1382b30d1939SAndy Fiddaman		case $conf_minmax in
1383b30d1939SAndy Fiddaman		?*[-+]*|*['()']*)
1384b30d1939SAndy Fiddaman			;;
1385b30d1939SAndy Fiddaman		*[lLuU])
1386b30d1939SAndy Fiddaman			case $LL_suffix in
1387b30d1939SAndy Fiddaman			??)	case $conf_minmax in
1388b30d1939SAndy Fiddaman				*[!lL][lL]|*[!lL][lL][uU])
1389b30d1939SAndy Fiddaman					conf_minmax=${conf_minmax}L
1390b30d1939SAndy Fiddaman					;;
1391b30d1939SAndy Fiddaman				esac
1392b30d1939SAndy Fiddaman				;;
1393b30d1939SAndy Fiddaman			esac
1394b30d1939SAndy Fiddaman			;;
1395b30d1939SAndy Fiddaman		-*[2468])
1396b30d1939SAndy Fiddaman			case $shell in
1397b30d1939SAndy Fiddaman			ksh)	p=${conf_minmax%?}
1398b30d1939SAndy Fiddaman				s=${conf_minmax#$p}
1399b30d1939SAndy Fiddaman				((s=s-1))
1400b30d1939SAndy Fiddaman				;;
1401b30d1939SAndy Fiddaman			*)	eval `echo '' $conf_minmax | sed 's/ *\(.*\)\(.\) */p=\1 s=\2/'`
1402b30d1939SAndy Fiddaman				s=`expr $s - 1`
1403b30d1939SAndy Fiddaman				;;
1404b30d1939SAndy Fiddaman			esac
1405b30d1939SAndy Fiddaman			conf_minmax=${p}${s}${LL_suffix}-1${LL_suffix}
1406b30d1939SAndy Fiddaman			;;
1407b30d1939SAndy Fiddaman		0[xX]*[abcdefABCDEF])
1408b30d1939SAndy Fiddaman			conf_minmax=${conf_minmax}${LL_suffix}
1409b30d1939SAndy Fiddaman			;;
1410b30d1939SAndy Fiddaman		-*[0123456789])
1411b30d1939SAndy Fiddaman			conf_minmax=${conf_minmax}${LL_suffix}
1412b30d1939SAndy Fiddaman			;;
1413b30d1939SAndy Fiddaman		*[0123456789])
1414b30d1939SAndy Fiddaman			conf_minmax=${conf_minmax}${U_suffix}${LL_suffix}
1415b30d1939SAndy Fiddaman			;;
1416b30d1939SAndy Fiddaman		esac
1417b30d1939SAndy Fiddaman		conf_limit="{ $conf_limit, 0 }" conf_minmax="{ $conf_minmax, 0 }"
1418b30d1939SAndy Fiddaman		;;
1419b30d1939SAndy Fiddaman	esac
1420b30d1939SAndy Fiddaman	case $conf_flags in
1421b30d1939SAndy Fiddaman	'0|'*)	case $shell in
1422b30d1939SAndy Fiddaman		ksh)	conf_flags=${conf_flags#0?} ;;
1423b30d1939SAndy Fiddaman		*)	conf_flags=`echo "$conf_flags" | sed 's/^0.//'` ;;
1424b30d1939SAndy Fiddaman		esac
1425b30d1939SAndy Fiddaman		;;
1426b30d1939SAndy Fiddaman	esac
1427b30d1939SAndy Fiddaman	echo "{ \"$conf_name\", $conf_limit, $conf_minmax, $conf_flags, $conf_standard, $conf_section, $conf_call, $conf_op },"
1428b30d1939SAndy Fiddaman	case $shell in
1429b30d1939SAndy Fiddaman	ksh)	len=${#conf_name}
1430b30d1939SAndy Fiddaman		if	((len>=name_max))
1431b30d1939SAndy Fiddaman		then	((name_max=len+1))
1432b30d1939SAndy Fiddaman		fi
1433b30d1939SAndy Fiddaman		;;
1434b30d1939SAndy Fiddaman	*)	len=`echo ${conf_name} | wc -c`
1435b30d1939SAndy Fiddaman		if	expr \( $len - 1 \) \>= ${name_max} >/dev/null
1436b30d1939SAndy Fiddaman		then	name_max=$len
1437b30d1939SAndy Fiddaman		fi
1438b30d1939SAndy Fiddaman		;;
1439b30d1939SAndy Fiddaman	esac
1440b30d1939SAndy Fiddamandone
1441b30d1939SAndy Fiddamanexec > /dev/null
1442b30d1939SAndy Fiddamancase $debug in
1443b30d1939SAndy Fiddaman-d6)	exit ;;
1444b30d1939SAndy Fiddamanesac
1445b30d1939SAndy Fiddaman
1446b30d1939SAndy Fiddaman# conf string table
1447b30d1939SAndy Fiddaman
1448b30d1939SAndy Fiddamanbase=conftab
1449b30d1939SAndy Fiddamancase $verbose in
1450b30d1939SAndy Fiddaman1)	echo "$command: generate ${base}.h string table header" >&2 ;;
1451b30d1939SAndy Fiddamanesac
1452b30d1939SAndy Fiddamancase $shell in
1453b30d1939SAndy Fiddamanksh)	((name_max=name_max+3)); ((name_max=name_max/4*4)) ;; # bsd /bin/sh !
1454b30d1939SAndy Fiddaman*)	name_max=`expr \( $name_max + 3 \) / 4 \* 4` ;;
1455b30d1939SAndy Fiddamanesac
1456b30d1939SAndy Fiddaman{
1457b30d1939SAndy Fiddamancat <<!
1458b30d1939SAndy Fiddaman#ifndef _CONFTAB_H
1459b30d1939SAndy Fiddaman#define _CONFTAB_H
1460b30d1939SAndy Fiddaman$systeminfo
1461b30d1939SAndy Fiddaman
1462b30d1939SAndy Fiddaman${generated}
1463b30d1939SAndy Fiddaman
1464b30d1939SAndy Fiddaman#if !defined(const) && !defined(__STDC__) && !defined(__cplusplus) && !defined(c_plusplus)
1465b30d1939SAndy Fiddaman#define const
1466b30d1939SAndy Fiddaman#endif
1467b30d1939SAndy Fiddaman
1468b30d1939SAndy Fiddaman#define conf		_ast_conf_data
1469b30d1939SAndy Fiddaman#define conf_elements	_ast_conf_ndata
1470b30d1939SAndy Fiddaman
1471b30d1939SAndy Fiddaman#define prefix		_ast_conf_prefix
1472b30d1939SAndy Fiddaman#define prefix_elements	_ast_conf_nprefix
1473b30d1939SAndy Fiddaman
1474b30d1939SAndy Fiddaman#define CONF_nop	0
1475b30d1939SAndy Fiddaman#define	CONF_confstr	1
1476b30d1939SAndy Fiddaman#define CONF_pathconf	2
1477b30d1939SAndy Fiddaman#define CONF_sysconf	3
1478b30d1939SAndy Fiddaman#define CONF_sysinfo	4
1479b30d1939SAndy Fiddaman
1480b30d1939SAndy Fiddaman!
1481b30d1939SAndy Fiddamanindex=0
1482b30d1939SAndy Fiddamanfor standard in $standards
1483b30d1939SAndy Fiddamando	echo "#define CONF_${standard}	${index}"
1484b30d1939SAndy Fiddaman	case $shell in
1485b30d1939SAndy Fiddaman	ksh)	((index=index+1)) ;;
1486b30d1939SAndy Fiddaman	*)	index=`expr ${index} + 1` ;;
1487b30d1939SAndy Fiddaman	esac
1488b30d1939SAndy Fiddamandone
1489b30d1939SAndy Fiddamanecho "#define CONF_call	${index}"
1490b30d1939SAndy Fiddamancase $CONF_getconf in
1491b30d1939SAndy Fiddaman?*)	echo
1492b30d1939SAndy Fiddaman	echo "#define _pth_getconf	\"$CONF_getconf\""
1493b30d1939SAndy Fiddaman	case $CONF_getconf_a in
1494b30d1939SAndy Fiddaman	?*)	echo "#define _pth_getconf_a	\"$CONF_getconf_a\"" ;;
1495b30d1939SAndy Fiddaman	esac
1496b30d1939SAndy Fiddaman	;;
1497b30d1939SAndy Fiddamanesac
1498b30d1939SAndy Fiddamancat <<!
1499b30d1939SAndy Fiddaman
1500b30d1939SAndy Fiddaman#define CONF_DEFER_CALL		0x0001
1501b30d1939SAndy Fiddaman#define CONF_DEFER_MM		0x0002
1502b30d1939SAndy Fiddaman#define CONF_FEATURE		0x0004
1503b30d1939SAndy Fiddaman#define CONF_LIMIT		0x0008
1504b30d1939SAndy Fiddaman#define CONF_LIMIT_DEF		0x0010
1505b30d1939SAndy Fiddaman#define CONF_MINMAX		0x0020
1506b30d1939SAndy Fiddaman#define CONF_MINMAX_DEF		0x0040
1507b30d1939SAndy Fiddaman#define CONF_NOSECTION		0x0080
1508b30d1939SAndy Fiddaman#define CONF_NOUNDERSCORE	0x0100
1509b30d1939SAndy Fiddaman#define CONF_PREFIX_ONLY	0x0200
1510b30d1939SAndy Fiddaman#define CONF_PREFIXED		0x0400
1511b30d1939SAndy Fiddaman#define CONF_STANDARD		0x0800
1512b30d1939SAndy Fiddaman#define CONF_STRING		0x1000
1513b30d1939SAndy Fiddaman#define CONF_UNDERSCORE		0x2000
1514b30d1939SAndy Fiddaman#define CONF_USER		0x4000
1515b30d1939SAndy Fiddaman
1516b30d1939SAndy Fiddamanstruct Conf_s; typedef struct Conf_s Conf_t;
1517b30d1939SAndy Fiddaman
1518b30d1939SAndy Fiddamantypedef struct Value_s
1519b30d1939SAndy Fiddaman{
1520b30d1939SAndy Fiddaman	intmax_t	number;
1521b30d1939SAndy Fiddaman	const char*	string;
1522b30d1939SAndy Fiddaman} Value_t;
1523b30d1939SAndy Fiddaman
1524b30d1939SAndy Fiddamanstruct Conf_s
1525b30d1939SAndy Fiddaman{
1526b30d1939SAndy Fiddaman	const char	name[${name_max}];
1527b30d1939SAndy Fiddaman	Value_t		limit;
1528b30d1939SAndy Fiddaman	Value_t		minmax;
1529b30d1939SAndy Fiddaman	unsigned int	flags;
1530b30d1939SAndy Fiddaman	short		standard;
1531b30d1939SAndy Fiddaman	short		section;
1532b30d1939SAndy Fiddaman	short		call;
1533b30d1939SAndy Fiddaman	short		op;
1534b30d1939SAndy Fiddaman};
1535b30d1939SAndy Fiddaman
1536b30d1939SAndy Fiddamantypedef struct Prefix_s
1537b30d1939SAndy Fiddaman{
1538b30d1939SAndy Fiddaman	const char	name[16];
1539b30d1939SAndy Fiddaman	short		length;
1540b30d1939SAndy Fiddaman	short		standard;
1541b30d1939SAndy Fiddaman	short		call;
1542b30d1939SAndy Fiddaman} Prefix_t;
1543b30d1939SAndy Fiddaman
1544b30d1939SAndy Fiddamanextern const Conf_t	conf[];
1545b30d1939SAndy Fiddamanextern const int	conf_elements;
1546b30d1939SAndy Fiddaman
1547b30d1939SAndy Fiddamanextern const Prefix_t	prefix[];
1548b30d1939SAndy Fiddamanextern const int	prefix_elements;
1549b30d1939SAndy Fiddaman
1550b30d1939SAndy Fiddaman#endif
1551b30d1939SAndy Fiddaman!
1552b30d1939SAndy Fiddaman} > $tmp.2
1553b30d1939SAndy Fiddamancase $debug in
1554b30d1939SAndy Fiddaman-d7)	echo $command: $tmp.2 ${base}.h ;;
1555b30d1939SAndy Fiddaman*)	cmp -s $tmp.2 ${base}.h 2>/dev/null || mv $tmp.2 ${base}.h ;;
1556b30d1939SAndy Fiddamanesac
1557b30d1939SAndy Fiddaman
1558b30d1939SAndy Fiddamancase $verbose in
1559b30d1939SAndy Fiddaman1)	echo "$command: generate ${base}.c string table" >&2 ;;
1560b30d1939SAndy Fiddamanesac
1561b30d1939SAndy Fiddaman{
1562b30d1939SAndy Fiddamancat <<!
1563b30d1939SAndy Fiddaman${head}
1564b30d1939SAndy Fiddaman#include <sys/types.h>
1565b30d1939SAndy Fiddaman#include <limits.h>
1566b30d1939SAndy Fiddaman#include <unistd.h>$systeminfo$headers
1567b30d1939SAndy Fiddaman${tail}
1568b30d1939SAndy Fiddaman#include "${base}.h"
1569b30d1939SAndy Fiddaman
1570b30d1939SAndy Fiddaman${generated}
1571b30d1939SAndy Fiddaman
1572b30d1939SAndy Fiddaman/*
1573b30d1939SAndy Fiddaman * prefix strings -- the first few are indexed by Conf_t.standard
1574b30d1939SAndy Fiddaman */
1575b30d1939SAndy Fiddaman
1576b30d1939SAndy Fiddamanconst Prefix_t prefix[] =
1577b30d1939SAndy Fiddaman{
1578b30d1939SAndy Fiddaman!
1579b30d1939SAndy Fiddamanfor standard in $standards
1580b30d1939SAndy Fiddamando	case $shell in
1581b30d1939SAndy Fiddaman	ksh)	len=${#standard} ;;
1582b30d1939SAndy Fiddaman	*)	len=`echo ${standard} | wc -c`; len=`expr $len - 1` ;;
1583b30d1939SAndy Fiddaman	esac
1584b30d1939SAndy Fiddaman	echo "	\"${standard}\",	${len},	CONF_${standard},	-1,"
1585b30d1939SAndy Fiddamandone
1586b30d1939SAndy Fiddamancat <<!
1587b30d1939SAndy Fiddaman	"XX",		2,	CONF_POSIX,	CONF_nop,
1588b30d1939SAndy Fiddaman	"CS",		2,	CONF_POSIX,	CONF_confstr,
1589b30d1939SAndy Fiddaman	"PC",		2,	CONF_POSIX,	CONF_pathconf,
1590b30d1939SAndy Fiddaman	"SC",		2,	CONF_POSIX,	CONF_sysconf,
1591b30d1939SAndy Fiddaman	"SI",		2,	CONF_SVID,	CONF_sysinfo,
1592b30d1939SAndy Fiddaman};
1593b30d1939SAndy Fiddaman
1594b30d1939SAndy Fiddamanconst int	prefix_elements = (int)sizeof(prefix) / (int)sizeof(prefix[0]);
1595b30d1939SAndy Fiddaman
1596b30d1939SAndy Fiddaman/*
1597b30d1939SAndy Fiddaman * conf strings sorted in ascending order
1598b30d1939SAndy Fiddaman */
1599b30d1939SAndy Fiddaman
1600b30d1939SAndy Fiddamanconst Conf_t conf[] =
1601b30d1939SAndy Fiddaman{
1602b30d1939SAndy Fiddaman!
1603b30d1939SAndy Fiddamancat $tmp.t
1604b30d1939SAndy Fiddamancat <<!
1605b30d1939SAndy Fiddaman};
1606b30d1939SAndy Fiddaman
1607b30d1939SAndy Fiddamanconst int	conf_elements = (int)sizeof(conf) / (int)sizeof(conf[0]);
1608b30d1939SAndy Fiddaman!
1609b30d1939SAndy Fiddaman} > $tmp.4
1610b30d1939SAndy Fiddamancase $debug in
1611b30d1939SAndy Fiddaman-d7)	echo $command: $tmp.4 ${base}.c ;;
1612b30d1939SAndy Fiddaman*)	cmp -s $tmp.4 ${base}.c 2>/dev/null || mv $tmp.4 ${base}.c ;;
1613b30d1939SAndy Fiddamanesac
1614b30d1939SAndy Fiddaman
1615b30d1939SAndy Fiddaman# limits.h generation code
1616b30d1939SAndy Fiddaman
1617b30d1939SAndy Fiddamanbase=conflim
1618b30d1939SAndy Fiddamancase $verbose in
1619b30d1939SAndy Fiddaman1)	echo "$command: generate ${base}.h supplemental <limits.h> values" >&2 ;;
1620b30d1939SAndy Fiddamanesac
1621b30d1939SAndy Fiddaman{
1622b30d1939SAndy Fiddamancat <<!
1623b30d1939SAndy Fiddaman${generated}
1624b30d1939SAndy Fiddaman
1625b30d1939SAndy Fiddaman/*
1626b30d1939SAndy Fiddaman * supplemental <limits.h> values
1627b30d1939SAndy Fiddaman */
1628b30d1939SAndy Fiddaman
1629b30d1939SAndy Fiddaman!
1630b30d1939SAndy Fiddamantest -f $tmp.l && cat $tmp.l
1631b30d1939SAndy Fiddaman} > $tmp.5
1632b30d1939SAndy Fiddamancase $debug in
1633b30d1939SAndy Fiddaman-d7)	echo $command: $tmp.5 ${base}.h ;;
1634b30d1939SAndy Fiddaman*)	cmp -s $tmp.5 ${base}.h 2>/dev/null || mv $tmp.5 ${base}.h ;;
1635b30d1939SAndy Fiddamanesac
1636b30d1939SAndy Fiddamanexit 0
1637