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