From cd6ede759fadcf8cd1f8c069928611d18cef5c1a Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 14 Jul 1997 21:49:20 +0000 Subject: Update. 1997-07-14 23:37 Ulrich Drepper * inet/getnameinfo.c: Pretty print. Correctly enlarge buffers. * login/programs/utmpd.c: Use _() instead of gettext(). * nis/nss_nisplus/nisplus-hosts.c: Optimize some uses of stpcpy away. * nis/nss_nisplus/nisplus-network.c: Likewise. * nis/nss_nisplus/nisplus-proto.c: Likewise. * nis/nss_nisplus/nisplus-rpc.c: Likewise. * nis/nss_nisplus/nisplus-service.c: Likewise. * sysdeps/alpha/fpu/bits/mathinline.h: Only define functions if __OPTIMIZE__. * sysdeps/powerpc/bits/mathinline.h: Likewise. * sysdeps/i386/fpu/bits/mathinline.h: Define ISO C9x comparison function always. * sysdeps/m68k/fpu/bits/mathinline.h: Likewise. * sysdeps/stub/bits/mathinline.h: Add conditionals to show how it should look like in real files. * sysdeps/generic/bits/select.h (__FD_ZERO): Don't use memset to prevent prototype trouble, use simple loop. * sysdeps/i386/bits/select.h [!__GNUC__] (__FD_ZERO): Likewise. * sysdeps/mips/mips64/Implies: Imply ieee754. * sysdeps/unix/sysv/linux/Makefile: Make sure bits/syscall.h is installed. * sysdeps/unix/sysv/linux/sys/syscal.h: Pretty print. 1997-07-14 00:25 Ulrich Drepper * sysdeps/stub/bits/stdio_lim.h: Unify with standalone version. * sysdeps/standalone/bits/stdio_lim.h: Removed. Patch by Zack Weinberg . 1997-06-22 Paul Eggert * time/strftime.c (strftime): Use tm_zone if available, even if _LIBC. * time/tzfile.c (__tzstring): New decl. (__tzfile_read, __tzfile_default): Set __tzname to permanent strings. (__tzfile_default): First two args are now const char *. * time/tzset.c (__tzstring): New function. (tz_rule): Name is now const char *. (struct tzstring_head): New type. (tzstring_list, tzstring_last_buffer_size): New static vars. (__tzset_internal): Time zone names are now permanent, not temporary. --- ChangeLog | 52 + bits/select.h | 13 +- configure | 2754 +++++++++++++++++++++++++++++++++ inet/getnameinfo.c | 402 +++-- login/programs/utmpd.c | 51 +- manual/texinfo.tex | 6 +- nis/nss_nisplus/nisplus-hosts.c | 2 +- nis/nss_nisplus/nisplus-network.c | 2 +- nis/nss_nisplus/nisplus-proto.c | 2 +- nis/nss_nisplus/nisplus-rpc.c | 2 +- nis/nss_nisplus/nisplus-service.c | 2 +- sysdeps/alpha/fpu/bits/mathinline.h | 4 +- sysdeps/generic/bits/select.h | 13 +- sysdeps/i386/bits/select.h | 8 +- sysdeps/i386/fpu/bits/mathinline.h | 112 +- sysdeps/m68k/fpu/bits/mathinline.h | 113 +- sysdeps/mips/mips64/Implies | 2 + sysdeps/powerpc/bits/mathinline.h | 13 +- sysdeps/standalone/bits/stdio_lim.h | 26 - sysdeps/stub/bits/mathinline.h | 6 + sysdeps/stub/bits/stdio_lim.h | 35 +- sysdeps/unix/sysv/linux/Makefile | 9 + sysdeps/unix/sysv/linux/sys/syscall.h | 4 +- time/strftime.c | 12 +- time/tzfile.c | 15 +- time/tzset.c | 134 +- 26 files changed, 3372 insertions(+), 422 deletions(-) delete mode 100644 sysdeps/standalone/bits/stdio_lim.h diff --git a/ChangeLog b/ChangeLog index 696a336389..13e181e7e4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,55 @@ +1997-07-14 23:37 Ulrich Drepper + + * inet/getnameinfo.c: Pretty print. + Correctly enlarge buffers. + + * login/programs/utmpd.c: Use _() instead of gettext(). + + * nis/nss_nisplus/nisplus-hosts.c: Optimize some uses of stpcpy away. + * nis/nss_nisplus/nisplus-network.c: Likewise. + * nis/nss_nisplus/nisplus-proto.c: Likewise. + * nis/nss_nisplus/nisplus-rpc.c: Likewise. + * nis/nss_nisplus/nisplus-service.c: Likewise. + + * sysdeps/alpha/fpu/bits/mathinline.h: Only define functions if + __OPTIMIZE__. + * sysdeps/powerpc/bits/mathinline.h: Likewise. + * sysdeps/i386/fpu/bits/mathinline.h: Define ISO C9x comparison + function always. + * sysdeps/m68k/fpu/bits/mathinline.h: Likewise. + * sysdeps/stub/bits/mathinline.h: Add conditionals to show how + it should look like in real files. + + * sysdeps/generic/bits/select.h (__FD_ZERO): Don't use memset to + prevent prototype trouble, use simple loop. + * sysdeps/i386/bits/select.h [!__GNUC__] (__FD_ZERO): Likewise. + + * sysdeps/mips/mips64/Implies: Imply ieee754. + + * sysdeps/unix/sysv/linux/Makefile: Make sure bits/syscall.h is + installed. + * sysdeps/unix/sysv/linux/sys/syscal.h: Pretty print. + +1997-07-14 00:25 Ulrich Drepper + + * sysdeps/stub/bits/stdio_lim.h: Unify with standalone version. + * sysdeps/standalone/bits/stdio_lim.h: Removed. + Patch by Zack Weinberg . + +1997-06-22 Paul Eggert + + * time/strftime.c (strftime): Use tm_zone if available, even if _LIBC. + + * time/tzfile.c (__tzstring): New decl. + (__tzfile_read, __tzfile_default): Set __tzname to permanent strings. + (__tzfile_default): First two args are now const char *. + + * time/tzset.c (__tzstring): New function. + (tz_rule): Name is now const char *. + (struct tzstring_head): New type. + (tzstring_list, tzstring_last_buffer_size): New static vars. + (__tzset_internal): Time zone names are now permanent, not temporary. + 1997-07-13 01:18 Ulrich Drepper * setjmp/setjmp.h: Define _setjmp and _longjmp also if __USE_XOPEN. diff --git a/bits/select.h b/bits/select.h index 613919577c..7803335499 100644 --- a/bits/select.h +++ b/bits/select.h @@ -21,9 +21,16 @@ #endif -/* This line MUST be split! Otherwise m4 will not change it. */ -#define __FD_ZERO(set) \ - ((void) memset ((__ptr_t) (set), 0, sizeof (fd_set))) +/* This line MUST be split! Otherwise m4 will not change it. + + We don't use `memset' because this would require a prototype and + the array isn't too big. */ +#define __FD_ZERO(set) \ + do { \ + unsigned int __i; \ + for (__i = 0; __i < sizeof (__fd_set) / sizeof (__fd_mask); ++__i) \ + ((__fd_mask *) set)[__i] = '\0'; \ + } while (0) #define __FD_SET(d, set) ((set)->fds_bits[__FDELT(d)] |= __FDMASK(d)) #define __FD_CLR(d, set) ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d)) #define __FD_ISSET(d, set) ((set)->fds_bits[__FDELT(d)] & __FDMASK(d)) diff --git a/configure b/configure index e69de29bb2..1380a4904e 100755 --- a/configure +++ b/configure @@ -0,0 +1,2754 @@ +#! /bin/sh + +# From configure.in CVSid + + + + +# Guess values for system-dependent variables and create Makefiles. +# Generated automatically using autoconf version 2.12 +# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + +# Defaults: +ac_help= +ac_default_prefix=/usr/local +# Any additions from configure.in: +ac_help="$ac_help + --with-gmp=DIRECTORY find GMP source code in DIRECTORY (not needed)" +ac_help="$ac_help + --with-gettext=DIR find GNU gettext source code in DIR (not needed)" +ac_help="$ac_help + --with-fp if using floating-point hardware [default=yes]" +ac_help="$ac_help + --with-gnu-binutils if using GNU binutils (as and ld)" +ac_help="$ac_help + --with-gnu-ld if using GNU ld (in the binutils package)" +ac_help="$ac_help + --with-gnu-as if using GNU as (in the binutils package)" +ac_help="$ac_help + --with-elf if using the ELF object format" +ac_help="$ac_help + --enable-libio build in GNU libio instead of GNU stdio" +ac_help="$ac_help + --disable-sanity-checks really do not use threads (should not be used + except in special situations) [default=yes]" +ac_help="$ac_help + --enable-shared build shared library [default=yes if GNU ld & ELF]" +ac_help="$ac_help + --enable-profile build profiled library [default=yes]" +ac_help="$ac_help + --enable-omitfp build undebuggable optimized library [default=no]" +ac_help="$ac_help + --enable-bounded build with runtime bounds checking [default=no]" +ac_help="$ac_help + --enable-add-ons=DIR... configure and build named extra directories" +ac_help="$ac_help + --enable-static-nss build static NSS modules [default=no]" + +# Initialize some variables set by options. +# The variables have the same names as the options, with +# dashes changed to underlines. +build=NONE +cache_file=./config.cache +exec_prefix=NONE +host=NONE +no_create= +nonopt=NONE +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +target=NONE +verbose= +x_includes=NONE +x_libraries=NONE +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +# Initialize some other variables. +subdirs= +MFLAGS= MAKEFLAGS= +# Maximum number of lines to put in a shell here document. +ac_max_here_lines=12 + +ac_prev= +for ac_option +do + + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + case "$ac_option" in + -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) ac_optarg= ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case "$ac_option" in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir="$ac_optarg" ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build="$ac_optarg" ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file="$ac_optarg" ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir="$ac_optarg" ;; + + -disable-* | --disable-*) + ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + eval "enable_${ac_feature}=no" ;; + + -enable-* | --enable-*) + ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "enable_${ac_feature}='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix="$ac_optarg" ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he) + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat << EOF +Usage: configure [options] [host] +Options: [defaults in brackets after descriptions] +Configuration: + --cache-file=FILE cache test results in FILE + --help print this message + --no-create do not create output files + --quiet, --silent do not print \`checking...' messages + --version print the version of autoconf that created configure +Directory and file names: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [same as prefix] + --bindir=DIR user executables in DIR [EPREFIX/bin] + --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] + --libexecdir=DIR program executables in DIR [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data in DIR + [PREFIX/share] + --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data in DIR + [PREFIX/com] + --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] + --libdir=DIR object code libraries in DIR [EPREFIX/lib] + --includedir=DIR C header files in DIR [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] + --infodir=DIR info documentation in DIR [PREFIX/info] + --mandir=DIR man documentation in DIR [PREFIX/man] + --srcdir=DIR find the sources in DIR [configure dir or ..] + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM + run sed PROGRAM on installed program names +EOF + cat << EOF +Host type: + --build=BUILD configure for building on BUILD [BUILD=HOST] + --host=HOST configure for HOST [guessed] + --target=TARGET configure for TARGET [TARGET=HOST] +Features and packages: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR +EOF + if test -n "$ac_help"; then + echo "--enable and --with options recognized:$ac_help" + fi + exit 0 ;; + + -host | --host | --hos | --ho) + ac_prev=host ;; + -host=* | --host=* | --hos=* | --ho=*) + host="$ac_optarg" ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir="$ac_optarg" ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir="$ac_optarg" ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir="$ac_optarg" ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir="$ac_optarg" ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir="$ac_optarg" ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir="$ac_optarg" ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir="$ac_optarg" ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix="$ac_optarg" ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix="$ac_optarg" ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix="$ac_optarg" ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name="$ac_optarg" ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir="$ac_optarg" ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir="$ac_optarg" ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site="$ac_optarg" ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir="$ac_optarg" ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir="$ac_optarg" ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target="$ac_optarg" ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers) + echo "configure generated by autoconf version 2.12" + exit 0 ;; + + -with-* | --with-*) + ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "with_${ac_package}='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`echo $ac_option|sed -e 's/-*without-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + eval "with_${ac_package}=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes="$ac_optarg" ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries="$ac_optarg" ;; + + -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } + ;; + + *) + if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then + echo "configure: warning: $ac_option: invalid host type" 1>&2 + fi + if test "x$nonopt" != xNONE; then + { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } + fi + nonopt="$ac_option" + ;; + + esac +done + +if test -n "$ac_prev"; then + { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } +fi + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +# File descriptor usage: +# 0 standard input +# 1 file creation +# 2 errors and warnings +# 3 some systems may open it to /dev/tty +# 4 used on the Kubota Titan +# 6 checking for... messages and results +# 5 compiler messages saved in config.log +if test "$silent" = yes; then + exec 6>/dev/null +else + exec 6>&1 +fi +exec 5>./config.log + +echo "\ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. +" 1>&5 + +# Strip out --no-create and --no-recursion so they do not pile up. +# Also quote any args containing shell metacharacters. +ac_configure_args= +for ac_arg +do + case "$ac_arg" in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) + ac_configure_args="$ac_configure_args '$ac_arg'" ;; + *) ac_configure_args="$ac_configure_args $ac_arg" ;; + esac +done + +# NLS nuisances. +# Only set these to C if already set. These must not be set unconditionally +# because not all systems understand e.g. LANG=C (notably SCO). +# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! +# Non-C LC_CTYPE values break the ctype check. +if test "${LANG+set}" = set; then LANG=C; export LANG; fi +if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi +if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi +if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo > confdefs.h + +# A filename unique to this package, relative to the directory that +# configure is in, which we can look for to find out if srcdir is correct. +ac_unique_file=include/features.h + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_prog=$0 + ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` + test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } + else + { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } + fi +fi +srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` + +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + echo "loading site script $ac_site_file" + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + echo "loading cache $cache_file" + . $cache_file +else + echo "creating cache $cache_file" + > $cache_file +fi + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then + # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. + if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then + ac_n= ac_c=' +' ac_t=' ' + else + ac_n=-n ac_c= ac_t= + fi +else + ac_n= ac_c='\c' ac_t= +fi + + if test -r /vmunix; then + kernel_id=`strings /vmunix | grep UNIX` + elif test -r /dynix; then + kernel_id=`strings /dynix | grep DYNIX` + else + kernel_id= + fi + + + + +# This will get text that should go into config.make. +config_vars= + +# Check for a --with-gmp argument and set gmp-srcdir in config.make. +# Check whether --with-gmp or --without-gmp was given. +if test "${with_gmp+set}" = set; then + withval="$with_gmp" + case "$with_gmp" in +yes) { echo "configure: error: --with-gmp requires an argument; use --with-gmp=DIRECTORY" 1>&2; exit 1; } ;; +''|no) ;; +*) config_vars="$config_vars +gmp-srcdir = $withval" ;; +esac + +fi + +# Check for a --with-gettext argument and set gettext-srcdir in config.make. +# Check whether --with-gettext or --without-gettext was given. +if test "${with_gettext+set}" = set; then + withval="$with_gettext" + case "$with_gettext" in +yes) + { echo "configure: error: --with-gettext requires an argument; use --with-gettext=DIR" 1>&2; exit 1; } ;; +''|no) ;; +*) + config_vars="$config_vars +gettext-srcdir = $withval" ;; +esac + +fi + + +# Check whether --with-fp or --without-fp was given. +if test "${with_fp+set}" = set; then + withval="$with_fp" + with_fp=$withval +else + with_fp=yes +fi + +# Check whether --with-gnu-binutils or --without-gnu-binutils was given. +if test "${with_gnu_binutils+set}" = set; then + withval="$with_gnu_binutils" + gnu_binutils=$withval +else + gnu_binutils=no +fi + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + gnu_ld=$withval +else + gnu_ld=no +fi + +# Check whether --with-gnu-as or --without-gnu-as was given. +if test "${with_gnu_as+set}" = set; then + withval="$with_gnu_as" + gnu_as=$withval +else + gnu_as=no +fi + +test $gnu_binutils = yes && gnu_as=yes gnu_ld=yes +# Check whether --with-elf or --without-elf was given. +if test "${with_elf+set}" = set; then + withval="$with_elf" + elf=$withval +else + elf=no +fi + + +# Check whether --enable-libio or --disable-libio was given. +if test "${enable_libio+set}" = set; then + enableval="$enable_libio" + if test $enableval = yes; then + stdio=libio + else + stdio=stdio + fi +else + stdio=default +fi + + +# Check whether --enable-sanity-checks or --disable-sanity-checks was given. +if test "${enable_sanity_checks+set}" = set; then + enableval="$enable_sanity_checks" + enable_sanity=$enableval +else + enable_sanity=yes +fi + + +# Check whether --enable-shared or --disable-shared was given. +if test "${enable_shared+set}" = set; then + enableval="$enable_shared" + shared=$enableval +else + shared=default +fi + +# Check whether --enable-profile or --disable-profile was given. +if test "${enable_profile+set}" = set; then + enableval="$enable_profile" + profile=$enableval +else + profile=yes +fi + +# Check whether --enable-omitfp or --disable-omitfp was given. +if test "${enable_omitfp+set}" = set; then + enableval="$enable_omitfp" + omitfp=$enableval +else + omitfp=no +fi + +# Check whether --enable-bounded or --disable-bounded was given. +if test "${enable_bounded+set}" = set; then + enableval="$enable_bounded" + bounded=$enableval +else + bounded=no +fi + + +# Check whether --enable-add-ons or --disable-add-ons was given. +if test "${enable_add_ons+set}" = set; then + enableval="$enable_add_ons" + add_ons=`echo "$enableval" | sed 's/,/ /g'` +else + add_ons= +fi + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } +fi +ac_config_guess=$ac_aux_dir/config.guess +ac_config_sub=$ac_aux_dir/config.sub +ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. + +subdirs="$add_ons" + +add_ons_pfx= +if test x"$add_ons" != x; then + for f in $add_ons; do + add_ons_pfx="$add_ons_pfx $f/" + done +fi + +# Check whether --enable-static-nss or --disable-static-nss was given. +if test "${enable_static_nss+set}" = set; then + enableval="$enable_static_nss" + static_nss=$enableval +else + static_nss=no +fi + +if test x"$static_nss" = xyes; then + cat >> confdefs.h <<\EOF +#define DO_STATIC_NSS 1 +EOF + +fi + + +# Make sure we can run config.sub. +if $ac_config_sub sun4 >/dev/null 2>&1; then : +else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } +fi + +echo $ac_n "checking host system type""... $ac_c" 1>&6 +echo "configure:755: checking host system type" >&5 + +host_alias=$host +case "$host_alias" in +NONE) + case $nonopt in + NONE) + if host_alias=`$ac_config_guess`; then : + else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; } + fi ;; + *) host_alias=$nonopt ;; + esac ;; +esac + +host=`$ac_config_sub $host_alias` +host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +echo "$ac_t""$host" 1>&6 + + +# The way shlib-versions is used to generate soversions.mk uses a +# fairly simplistic model for name recognition that can't distinguish +# i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os +# of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can +# tell. This doesn't get used much beyond that, so it's fairly safe. +case "$host_os" in +linux*) + ;; +gnu*) + host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'` + ;; +esac + +# We keep the original values in `$config_*' and never modify them, so we +# can write them unchanged into config.make. Everything else uses +# $machine, $vendor, and $os, and changes them whenever convenient. +config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os + +# Some configurations imply other options. +case "$host_os" in +gnu* | linux* | bsd4.4* | netbsd* | freebsd*) + # These systems always use GNU tools. + gnu_ld=yes gnu_as=yes ;; +esac +case "$host_os" in +# i586-linuxaout is mangled into i586-pc-linux-gnuaout +linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*) + ;; +gnu* | linux* | sysv4* | solaris2*) + # These systems (almost) always use the ELF format. + elf=yes + ;; +esac + +machine=$config_machine +vendor=$config_vendor +os=$config_os + +# Expand the configuration machine name into a subdirectory by architecture +# type and particular chip. +case "$machine" in +a29k | am29000) base_machine=a29k machine=a29k ;; +alpha*) base_machine=alpha machine=alpha/$machine ;; +arm*) base_machine=arm machine=arm/$machine ;; +hppa*) base_machine=hppa machine=hppa/$machine ;; +i[3456]86) base_machine=i386 machine=i386/$machine ;; +m680?0) base_machine=m68k machine=m68k/$machine ;; +m68k) base_machine=m68k machine=m68k/m68020 ;; +m88???) base_machine=m88k machine=m88k/$machine ;; +m88k) base_machine=m88k machine=m88k/m88100 ;; +mips64*) base_machine=mips64 machine=mips/mips64/$machine ;; +mips*) base_machine=mips machine=mips/$machine ;; +sparc[6789]) base_machine=sparc machine=sparc/$machine ;; +supersparc) base_machine=sparc machine=sparc/sparc8 ;; +sparc64) base_machine=sparc64 machine=sparc64/$machine ;; +esac + + +# Compute the list of sysdep directories for this configuration. +# This can take a while to compute. +sysdep_dir=$srcdir/sysdeps +echo $ac_n "checking sysdep dirs""... $ac_c" 1>&6 +echo "configure:838: checking sysdep dirs" >&5 +# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1. +os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`" + +case "$os" in +gnu*) + base_os=mach/hurd ;; +netbsd* | 386bsd* | freebsd* | bsdi*) + base_os=unix/bsd/bsd4.4 ;; +osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*) + base_os=unix/bsd ;; +sysv* | isc* | esix* | sco* | minix* | irix4* | linux*) + base_os=unix/sysv ;; +solaris[2-9]*) + base_os=unix/sysv/sysv4 ;; +none) + base_os=standalone ;; +*) + base_os='' ;; +esac + +# For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos. +tail=$os +ostry=$os +while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do + ostry="$ostry /$o" + tail=$o +done +o=`echo $tail | sed 's/[0-9]*$//'` +if test $o != $tail; then + ostry="$ostry /$o" +fi +# For linux-gnu, try linux-gnu, then linux. +o=`echo $tail | sed 's/-.*$//'` +if test $o != $tail; then + ostry="$ostry /$o" +fi + +# For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix. +base= +tail=$base_os +while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do + set $b + base="$base /$1" + tail="$2" +done + +# For sparc/sparc9, try sparc/sparc9 and then sparc. +mach= +tail=$machine +while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do + set $m + # Prepend the machine's FPU directory unless --without-fp. + if test "$with_fp" = yes; then + mach="$mach /$1/fpu" + fi + mach="$mach /$1" + tail="$2" +done + + +# Find what sysdep directories exist. +sysnames= +IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" +for d in $add_ons_pfx ''; do + for b in $base ''; do + for m0 in $mach ''; do + for v in /$vendor ''; do + for o in /$ostry ''; do + for m in $mach ''; do + if test "$m0$b$v$o$m"; then + try="${d}sysdeps$m0$b$v$o$m" + test -n "$enable_debug_configure" && + echo "$0 DEBUG: try $try" >&2 + case $try in + /*) dest=$try ;; + *) dest=$srcdir/$try ;; + esac + if test -d $dest; then + sysnames="$sysnames $try" + { test -n "$o" || test -n "$b"; } && os_used=t + { test -n "$m" || test -n "$m0"; } && machine_used=t + fi + fi + done + done + done + done + done +done +IFS="$ac_save_ifs" + +if test -z "$os_used" && test "$os" != none; then + { echo "configure: error: Operating system $os is not supported." 1>&2; exit 1; } +fi +if test -z "$machine_used" && test "$machine" != none; then + { echo "configure: error: The $machine is not supported." 1>&2; exit 1; } +fi + +# We have now validated the configuration. + + +# If using ELF, look for an `elf' subdirectory of each machine directory. +# We prepend these rather than inserting them whereever the machine appears +# because things specified by the machine's ELF ABI should override +# OS-specific things, and should always be the same for any OS on the +# machine (otherwise what's the point of an ABI?). +if test "$elf" = yes; then + elf_dirs= + for d in $add_ons_pfx ''; do + case $d in + /*) xsrcdir= ;; + *) xsrcdir=$srcdir/ ;; + esac + for m in $mach; do + if test -d $xsrcdir${d}sysdeps$m/elf; then + elf_dirs="$elf_dirs ${d}sysdeps$m/elf" + fi + done + done + sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames" +fi + + +# Expand the list of system names into a full list of directories +# from each element's parent name and Implies file (if present). +set $sysnames +names= +while test $# -gt 0; do + name=$1 + shift + + case " $names " in *" $name "*) + # Already in the list. + continue + esac + + # Report each name as we discover it, so there is no long pause in output. + echo $ac_n "$name $ac_c" >&6 + + name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'` + + case $name in + /*) xsrcdir= ;; + *) xsrcdir=$srcdir/ ;; + esac + test -n "$enable_debug_configure" && + echo "DEBUG: name/Implies $xsrcdir$name/Implies" >&2 + + if test -f $xsrcdir$name/Implies; then + # Collect more names from the `Implies' file (removing comments). + implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`" + implied= + for x in $implied_candidate; do + if test -d $xsrcdir$name_base/$x; then + implied="$implied $name_base/$x"; + else + echo "configure: warning: $name/Implies specifies nonexistent $x" 1>&2 + fi + done + else + implied= + fi + + # Add NAME to the list of names. + names="$names $name" + + # Find the parent of NAME, using the empty string if it has none. + parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`" + + # Add the names implied by NAME, and NAME's parent (if it has one), to + # the list of names to be processed (the argument list). We prepend the + # implied names to the list and append the parent. We want implied + # directories to come before further directories inferred from the + # configuration components; this ensures that for sysv4, unix/common + # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*) + # after sysv4). + sysnames="`echo $implied $* $parent`" + test -n "$sysnames" && set $sysnames +done + +# Add the default directories. +sysnames="$names sysdeps/generic sysdeps/stub" + +# The other names were emitted during the scan. +echo "$ac_t""sysdeps/generic sysdeps/stub" 1>&6 + + +### Locate tools. + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 +echo "configure:1039: checking for a BSD compatible install" >&5 +if test -z "$INSTALL"; then +if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + # Account for people who put trailing slashes in PATH elements. + case "$ac_dir/" in + /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + for ac_prog in ginstall installbsd scoinst install; do + if test -f $ac_dir/$ac_prog; then + if test $ac_prog = install && + grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + # OSF/1 installbsd also uses dspmsg, but is usable. + : + else + ac_cv_path_install="$ac_dir/$ac_prog -c" + break 2 + fi + fi + done + ;; + esac + done + IFS="$ac_save_IFS" + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL="$ac_cv_path_install" + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL="$ac_install_sh" + fi +fi +echo "$ac_t""$INSTALL" 1>&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +if test "$INSTALL" = "${srcdir}/install-sh -c"; then + # The makefiles need to use a different form to find it in $srcdir. + INSTALL='$(..)./install-sh -c' +fi +echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 +echo "configure:1093: checking whether ln -s works" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + rm -f conftestdata +if ln -s X conftestdata 2>/dev/null +then + rm -f conftestdata + ac_cv_prog_LN_S="ln -s" +else + ac_cv_prog_LN_S=ln +fi +fi +LN_S="$ac_cv_prog_LN_S" +if test "$ac_cv_prog_LN_S" = "ln -s"; then + echo "$ac_t""yes" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +for ac_prog in msgfmt gmsgfmt +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1118: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$MSGFMT"; then + ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_MSGFMT="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +MSGFMT="$ac_cv_prog_MSGFMT" +if test -n "$MSGFMT"; then + echo "$ac_t""$MSGFMT" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$MSGFMT" && break +done +test -n "$MSGFMT" || MSGFMT=":" + + +# Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1151: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CC="gcc" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1180: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + ac_prog_rejected=no + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + break + fi + done + IFS="$ac_save_ifs" +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# -gt 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + set dummy "$ac_dir/$ac_word" "$@" + shift + ac_cv_prog_CC="$@" + fi +fi +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } +fi + +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 +echo "configure:1228: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then + ac_cv_prog_cc_works=yes + # If we can't run a trivial program, we are probably using a cross compiler. + if (./conftest; exit) 2>/dev/null; then + ac_cv_prog_cc_cross=no + else + ac_cv_prog_cc_cross=yes + fi +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_prog_cc_works=no +fi +rm -fr conftest* + +echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 +if test $ac_cv_prog_cc_works = no; then + cross_linkable=no + ac_cv_prog_cc_cross=yes +else + cross_linkable=yes +fi +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 +echo "configure:1265: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 + +cross_compiling=$ac_cv_prog_cc_cross + +echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 +echo "configure:1271: checking whether we are using GNU C" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gcc=yes +else + ac_cv_prog_gcc=no +fi +fi + +echo "$ac_t""$ac_cv_prog_gcc" 1>&6 + +if test $ac_cv_prog_gcc = yes; then + GCC=yes + + cat > conftest.c < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) + yes; +#endif +EOF + if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1297: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + if test -z "$CFLAGS"; then + CFLAGS="-g -O2" + fi + else + { echo "configure: error: We require GNU CC version 2.7 or newer" 1>&2; exit 1; } + fi +else + { echo "configure: error: GNU libc must be compiled using GNU CC" 1>&2; exit 1; } +fi + +echo $ac_n "checking build system type""... $ac_c" 1>&6 +echo "configure:1309: checking build system type" >&5 + +build_alias=$build +case "$build_alias" in +NONE) + case $nonopt in + NONE) build_alias=$host_alias ;; + *) build_alias=$nonopt ;; + esac ;; +esac + +build=`$ac_config_sub $build_alias` +build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +echo "$ac_t""$build" 1>&6 + +if test $host != $build; then + for ac_prog in gcc cc +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1332: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_BUILD_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$BUILD_CC"; then + ac_cv_prog_BUILD_CC="$BUILD_CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_BUILD_CC="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +BUILD_CC="$ac_cv_prog_BUILD_CC" +if test -n "$BUILD_CC"; then + echo "$ac_t""$BUILD_CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$BUILD_CC" && break +done + +fi + +echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 +echo "configure:1363: checking how to run the C preprocessor" >&5 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then +if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + # This must be in double quotes, not single quotes, because CPP may get + # substituted into the Makefile and "${CC-cc}" will confuse make. + CPP="${CC-cc} -E" + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1384: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP="${CC-cc} -E -traditional-cpp" + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1401: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP=/lib/cpp +fi +rm -f conftest* +fi +rm -f conftest* + ac_cv_prog_CPP="$CPP" +fi + CPP="$ac_cv_prog_CPP" +else + ac_cv_prog_CPP="$CPP" +fi +echo "$ac_t""$CPP" 1>&6 + +if test $host != $build; then + ac_tool_prefix=${host_alias}- +else + ac_tool_prefix= +fi + +# Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1432: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar" +fi +fi +AR="$ac_cv_prog_AR" +if test -n "$AR"; then + echo "$ac_t""$AR" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + + +# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1463: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +RANLIB="$ac_cv_prog_RANLIB" +if test -n "$RANLIB"; then + echo "$ac_t""$RANLIB" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + +if test -z "$ac_cv_prog_RANLIB"; then +if test -n "$ac_tool_prefix"; then + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1494: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_RANLIB="ranlib" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" +fi +fi +RANLIB="$ac_cv_prog_RANLIB" +if test -n "$RANLIB"; then + echo "$ac_t""$RANLIB" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +else + RANLIB=":" +fi +fi + + +# Extract the first word of "bash", so it can be a program name with args. +set dummy bash; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1529: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$BASH" in + /*) + ac_cv_path_BASH="$BASH" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_BASH="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_BASH" && ac_cv_path_BASH="no" + ;; +esac +fi +BASH="$ac_cv_path_BASH" +if test -n "$BASH"; then + echo "$ac_t""$BASH" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +if test "$BASH" != no && + $BASH -c 'test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then + libc_cv_have_bash2=yes +else + libc_cv_have_bash2=no +fi + + +if test "$BASH" = no; then + # Extract the first word of "ksh", so it can be a program name with args. +set dummy ksh; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1570: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_KSH'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$KSH" in + /*) + ac_cv_path_KSH="$KSH" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_KSH="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_KSH" && ac_cv_path_KSH="no" + ;; +esac +fi +KSH="$ac_cv_path_KSH" +if test -n "$KSH"; then + echo "$ac_t""$KSH" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + if test "$KSH" = no; then + libc_cv_have_ksh=no + else + libc_cv_have_ksh=yes + fi +else + KSH="$BASH" + + libc_cv_have_ksh=yes +fi + + +echo $ac_n "checking for signed size_t type""... $ac_c" 1>&6 +echo "configure:1612: checking for signed size_t type" >&5 +if eval "test \"`echo '$''{'libc_cv_signed_size_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + echo '#include +FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c +if eval "$ac_cpp conftest.c 2>/dev/null" \ +| grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null; then + libc_cv_signed_size_t=no +else + libc_cv_signed_size_t=yes +fi +rm -f conftest* +fi + +echo "$ac_t""$libc_cv_signed_size_t" 1>&6 +if test $libc_cv_signed_size_t = yes; then + cat >> confdefs.h <<\EOF +#undef __SIZE_TYPE__ +#define __SIZE_TYPE__ unsigned +EOF +fi + +echo $ac_n "checking for libc-friendly stddef.h""... $ac_c" 1>&6 +echo "configure:1636: checking for libc-friendly stddef.h" >&5 +if eval "test \"`echo '$''{'libc_cv_friendly_stddef'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#define __need_NULL +#include +int main() { +size_t size; wchar_t wchar; +#ifdef offsetof +#error stddef.h ignored __need_* +#endif +if (&size == NULL || &wchar == NULL) abort (); +; return 0; } +EOF +if { (eval echo configure:1656: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + libc_cv_friendly_stddef=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + libc_cv_friendly_stddef=no +fi +rm -f conftest* +fi + +echo "$ac_t""$libc_cv_friendly_stddef" 1>&6 +if test $libc_cv_friendly_stddef = yes; then + config_vars="$config_vars +override stddef.h = # The installed seems to be libc-friendly." +fi + +echo $ac_n "checking whether we need to use -P to assemble .S files""... $ac_c" 1>&6 +echo "configure:1675: checking whether we need to use -P to assemble .S files" >&5 +if eval "test \"`echo '$''{'libc_cv_need_minus_P'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.S </dev/null; then + libc_cv_need_minus_P=no +else + libc_cv_need_minus_P=yes +fi +rm -f conftest* +fi + +echo "$ac_t""$libc_cv_need_minus_P" 1>&6 +if test $libc_cv_need_minus_P = yes; then + config_vars="$config_vars +asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives." +fi + +echo $ac_n "checking for assembler global-symbol directive""... $ac_c" 1>&6 +echo "configure:1698: checking for assembler global-symbol directive" >&5 +if eval "test \"`echo '$''{'libc_cv_asm_global_directive'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + libc_cv_asm_global_directive=UNKNOWN +for ac_globl in .globl .global; do + cat > conftest.s </dev/null; then + libc_cv_asm_global_directive=${ac_globl} + fi + rm -f conftest* + test $libc_cv_asm_global_directive != UNKNOWN && break +done +fi + +echo "$ac_t""$libc_cv_asm_global_directive" 1>&6 +if test $libc_cv_asm_global_directive = UNKNOWN; then + { echo "configure: error: cannot determine asm global directive" 1>&2; exit 1; } +else + cat >> confdefs.h <&6 +echo "configure:1728: checking for .set assembler directive" >&5 +if eval "test \"`echo '$''{'libc_cv_asm_set_directive'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.s < conftest1.c <<\EOF +extern int glibc_conftest_frobozz; +main () { printf ("%d\n", glibc_conftest_frobozz); } +EOF +if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \ + -o conftest conftest.s conftest1.c 1>&5 2>&5; then + libc_cv_asm_set_directive=yes +else + libc_cv_asm_set_directive=no +fi +rm -f conftest* +fi + +echo "$ac_t""$libc_cv_asm_set_directive" 1>&6 +if test $libc_cv_asm_set_directive = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_ASM_SET_DIRECTIVE 1 +EOF + +fi + +echo $ac_n "checking for .symver assembler directive""... $ac_c" 1>&6 +echo "configure:1762: checking for .symver assembler directive" >&5 +if eval "test \"`echo '$''{'libc_cv_asm_symver_directive'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.s <&5 2>&5; then + libc_cv_asm_symver_directive=yes +else + libc_cv_asm_symver_directive=no +fi +rm -f conftest* +fi + +echo "$ac_t""$libc_cv_asm_symver_directive" 1>&6 +echo $ac_n "checking for ld --version-script""... $ac_c" 1>&6 +echo "configure:1781: checking for ld --version-script" >&5 +if eval "test \"`echo '$''{'libc_cv_ld_version_script_option'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test $libc_cv_asm_symver_directive = yes; then + cat > conftest.s < conftest.map <&5 2>&5; then + if { ac_try='${CC-cc} $CFLAGS -shared -o conftest.so conftest.o + -nostartfiles -nostdlib + -Wl,--version-script,conftest.map + 1>&5'; { (eval echo configure:1800: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; + then + libc_cv_ld_version_script_option=yes + else + libc_cv_ld_version_script_option=no + fi + else + libc_cv_ld_version_script_option=no + fi +else + libc_cv_ld_version_script_option=no +fi +rm -f conftest* +fi + +echo "$ac_t""$libc_cv_ld_version_script_option" 1>&6 +if test $libc_cv_asm_symver_directive = yes && + test $libc_cv_ld_version_script_option = yes; then + VERSIONING=yes + cat >> confdefs.h <<\EOF +#define DO_VERSIONING 1 +EOF + +else + VERSIONING=no +fi + + +if test $elf = yes; then + echo $ac_n "checking for .previous assembler directive""... $ac_c" 1>&6 +echo "configure:1830: checking for .previous assembler directive" >&5 +if eval "test \"`echo '$''{'libc_cv_asm_previous_directive'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.s <&5; (eval $ac_try) 2>&5; }; }; then + libc_cv_asm_previous_directive=yes + else + libc_cv_asm_previous_directive=no + fi + rm -f conftest* +fi + +echo "$ac_t""$libc_cv_asm_previous_directive" 1>&6 + if test $libc_cv_asm_previous_directive = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_ASM_PREVIOUS_DIRECTIVE 1 +EOF + + else + echo $ac_n "checking for .popsection assembler directive""... $ac_c" 1>&6 +echo "configure:1854: checking for .popsection assembler directive" >&5 +if eval "test \"`echo '$''{'libc_cv_asm_popsection_directive'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.s <&5; (eval $ac_try) 2>&5; }; }; then + libc_cv_asm_popsection_directive=yes + else + libc_cv_asm_popsection_directive=no + fi + rm -f conftest* +fi + +echo "$ac_t""$libc_cv_asm_popsection_directive" 1>&6 + if test $libc_cv_asm_popsection_directive = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_ASM_POPSECTION_DIRECTIVE 1 +EOF + + fi + fi +fi + +if test $elf != yes; then + echo $ac_n "checking for .init and .fini sections""... $ac_c" 1>&6 +echo "configure:1882: checking for .init and .fini sections" >&5 +if eval "test \"`echo '$''{'libc_cv_have_initfini'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + libc_cv_have_initfini=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + libc_cv_have_initfini=no +fi +rm -f conftest* +fi + +echo "$ac_t""$libc_cv_have_initfini" 1>&6 + if test $libc_cv_have_initfini = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_INITFINI 1 +EOF + + fi +fi + +if test $elf = yes; then + libc_cv_asm_underscores=no +else + echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6 +echo "configure:1921: checking for _ prefix on C symbol names" >&5 +if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + libc_cv_asm_underscores=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + libc_cv_asm_underscores=no +fi +rm -f conftest* +fi + +echo "$ac_t""$libc_cv_asm_underscores" 1>&6 +fi +if test $libc_cv_asm_underscores = no; then + cat >> confdefs.h <<\EOF +#define NO_UNDERSCORES 1 +EOF + +fi + +if test $elf = yes; then + libc_cv_weak_symbols=yes + libc_cv_asm_weak_directive=yes + libc_cv_asm_weakext_directive=no +else + echo $ac_n "checking for assembler .weak directive""... $ac_c" 1>&6 +echo "configure:1960: checking for assembler .weak directive" >&5 +if eval "test \"`echo '$''{'libc_cv_asm_weak_directive'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.s </dev/null; then + libc_cv_asm_weak_directive=yes + else + libc_cv_asm_weak_directive=no + fi + rm -f conftest* +fi + +echo "$ac_t""$libc_cv_asm_weak_directive" 1>&6 + +if test $libc_cv_asm_weak_directive = no; then + echo $ac_n "checking for assembler .weakext directive""... $ac_c" 1>&6 +echo "configure:1983: checking for assembler .weakext directive" >&5 +if eval "test \"`echo '$''{'libc_cv_asm_weakext_directive'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.s </dev/null; then + libc_cv_asm_weakext_directive=yes + else + libc_cv_asm_weakext_directive=no + fi + rm -f conftest* +fi + +echo "$ac_t""$libc_cv_asm_weakext_directive" 1>&6 + + fi # no .weak +fi # not ELF + +if test $libc_cv_asm_weak_directive = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_ASM_WEAK_DIRECTIVE 1 +EOF + +elif test $libc_cv_asm_weakext_directive = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_ASM_WEAKEXT_DIRECTIVE 1 +EOF + +fi + +echo $ac_n "checking for ld --no-whole-archive""... $ac_c" 1>&6 +echo "configure:2020: checking for ld --no-whole-archive" >&5 +if eval "test \"`echo '$''{'libc_cv_ld_no_whole_archive'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.c <<\EOF +_start () {} +int __eh_pc; +__throw () {} +EOF +if { ac_try='${CC-cc} $CFLAGS + -nostdlib -nostartfiles -Wl,--no-whole-archive + -o conftest conftest.c 1>&5'; { (eval echo configure:2031: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + libc_cv_ld_no_whole_archive=yes +else + libc_cv_ld_no_whole_archive=no +fi +rm -f conftest* +fi + +echo "$ac_t""$libc_cv_ld_no_whole_archive" 1>&6 + +echo $ac_n "checking for gcc -fno-exceptions""... $ac_c" 1>&6 +echo "configure:2042: checking for gcc -fno-exceptions" >&5 +if eval "test \"`echo '$''{'libc_cv_gcc_no_exceptions'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.c <<\EOF +_start () {} +int __eh_pc; +__throw () {} +EOF +if { ac_try='${CC-cc} $CFLAGS + -nostdlib -nostartfiles -fno-exceptions + -o conftest conftest.c 1>&5'; { (eval echo configure:2053: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + libc_cv_gcc_no_exceptions=yes +else + libc_cv_gcc_no_exceptions=no +fi +rm -f conftest* +fi + +echo "$ac_t""$libc_cv_gcc_no_exceptions" 1>&6 + +### End of automated tests. +### Now run sysdeps configure fragments. + +# sysdeps configure fragments may set these with files to be linked below. +libc_link_dests= +libc_link_sources= + +# Iterate over all the sysdep directories we will use, running their +# configure fragments, and looking for a uname implementation. +uname= +for dir in $sysnames; do + case $dir in + /*) dest=$dir ;; + *) dest=$srcdir/$dir ;; + esac + if test -r $dest/configure; then + echo "$ac_t""running configure fragment for $dest" 1>&6 + . $dest/configure + fi + + if test -z "$uname"; then + if test -r $dest/uname.c || + test -r $dest/uname.S || + { test -r $dest/syscalls.list && + grep '^uname[ ]' $dest/syscalls.list >/dev/null; }; then + uname=$dir + fi + fi +done + + + +# If we will use the generic uname implementation, we must figure out what +# it will say by examining the system, and write the results in config-name.h. +if test "$uname" = "sysdeps/generic"; then + + uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'` + if test $uname_sysname != $config_os; then + config_release=`echo $config_os | sed s/$uname_sysname//` + fi + + echo $ac_n "checking OS release for uname""... $ac_c" 1>&6 +echo "configure:2105: checking OS release for uname" >&5 +if eval "test \"`echo '$''{'libc_cv_uname_release'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'` + if test x`echo "$config_release" | sed "s/^$kernel_release//"` \ + != x$config_release; then + # The configuration release is a substring of the kernel release. + libc_cv_uname_release=$kernel_release + elif test x$config_release != x; then + libc_cv_uname_release=$config_release + elif test x$kernel_release != x; then + libc_cv_uname_release=$kernel_release + else + libc_cv_uname_release=unknown + fi +fi + +echo "$ac_t""$libc_cv_uname_release" 1>&6 + uname_release="$libc_cv_uname_release" + + echo $ac_n "checking OS version for uname""... $ac_c" 1>&6 +echo "configure:2127: checking OS version for uname" >&5 +if eval "test \"`echo '$''{'libc_cv_uname_version'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'` + if test -n "$kernel_version"; then + libc_cv_uname_version="$kernel_version" + else + libc_cv_uname_version=unknown + fi +fi + +echo "$ac_t""$libc_cv_uname_version" 1>&6 + uname_version="$libc_cv_uname_version" + + config_uname=config-name.h:config-name.in +else + # For non-generic uname, we don't need to create config-name.h at all. + config_uname= +fi + +echo $ac_n "checking stdio selection""... $ac_c" 1>&6 +echo "configure:2149: checking stdio selection" >&5 + +case $stdio in +libio) cat >> confdefs.h <<\EOF +#define USE_IN_LIBIO 1 +EOF + ;; +default) stdio=stdio ;; +esac +echo "$ac_t""$stdio" 1>&6 + + + + + + + + +if test $gnu_ld = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_GNU_LD 1 +EOF + +fi +if test $gnu_as = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_GNU_AS 1 +EOF + +fi +if test $elf = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_ELF 1 +EOF + +fi + + +if test $shared = default; then + if test $gnu_ld = yes; then + shared=$elf + else + # For now we do not assume shared libs are available. In future more + # tests might become available. + shared=no + fi +fi + + + + + + + + +if test "`(cd $srcdir; pwd)`" = "`pwd`"; then + config_makefile= +else + config_makefile=Makefile +fi + +VERSION=`sed -e 's/^#define VERSION "\([^"]*\)"/\1/p' -e d < $srcdir/version.h` + + +trap '' 1 2 15 +cat > confcache <<\EOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs. It is not useful on other systems. +# If it contains results you don't want to keep, you may remove or edit it. +# +# By default, configure uses ./config.cache as the cache file, +# creating it if it does not exist already. You can give configure +# the --cache-file=FILE option to use a different cache file; that is +# what configure does when it calls configure scripts in +# subdirectories, so they share the cache. +# Giving --cache-file=/dev/null disables caching, for debugging configure. +# config.status only pays attention to the cache file if you give it the +# --recheck option to rerun configure. +# +EOF +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +(set) 2>&1 | + case `(ac_space=' '; set) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote substitution + # turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + -e "s/'/'\\\\''/g" \ + -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' + ;; + esac >> confcache +if cmp -s $cache_file confcache; then + : +else + if test -w $cache_file; then + echo "updating cache $cache_file" + cat confcache > $cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Any assignment to VPATH causes Sun make to only execute +# the first set of double-colon rules, so remove it if not needed. +# If there is a colon in the path, we need to keep it. +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' +fi + +trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 + +DEFS=-DHAVE_CONFIG_H + +# Without the "./", some shells look in PATH for config.status. +: ${CONFIG_STATUS=./config.status} + +echo creating $CONFIG_STATUS +rm -f $CONFIG_STATUS +cat > $CONFIG_STATUS </dev/null | sed 1q`: +# +# $0 $ac_configure_args +# +# Compiler output produced by configure, useful for debugging +# configure, is in ./config.log if it exists. + +ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" +for ac_option +do + case "\$ac_option" in + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" + exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; + -version | --version | --versio | --versi | --vers | --ver | --ve | --v) + echo "$CONFIG_STATUS generated by autoconf version 2.12" + exit 0 ;; + -help | --help | --hel | --he | --h) + echo "\$ac_cs_usage"; exit 0 ;; + *) echo "\$ac_cs_usage"; exit 1 ;; + esac +done + +ac_given_srcdir=$srcdir +ac_given_INSTALL="$INSTALL" + +trap 'rm -fr `echo "config.make glibcbug ${config_makefile} ${config_uname} config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 +EOF +cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF +$ac_vpsub +$extrasub +s%@CFLAGS@%$CFLAGS%g +s%@CPPFLAGS@%$CPPFLAGS%g +s%@CXXFLAGS@%$CXXFLAGS%g +s%@DEFS@%$DEFS%g +s%@LDFLAGS@%$LDFLAGS%g +s%@LIBS@%$LIBS%g +s%@exec_prefix@%$exec_prefix%g +s%@prefix@%$prefix%g +s%@program_transform_name@%$program_transform_name%g +s%@bindir@%$bindir%g +s%@sbindir@%$sbindir%g +s%@libexecdir@%$libexecdir%g +s%@datadir@%$datadir%g +s%@sysconfdir@%$sysconfdir%g +s%@sharedstatedir@%$sharedstatedir%g +s%@localstatedir@%$localstatedir%g +s%@libdir@%$libdir%g +s%@includedir@%$includedir%g +s%@oldincludedir@%$oldincludedir%g +s%@infodir@%$infodir%g +s%@mandir@%$mandir%g +s%@subdirs@%$subdirs%g +s%@host@%$host%g +s%@host_alias@%$host_alias%g +s%@host_cpu@%$host_cpu%g +s%@host_vendor@%$host_vendor%g +s%@host_os@%$host_os%g +s%@base_machine@%$base_machine%g +s%@sysnames@%$sysnames%g +s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g +s%@INSTALL_DATA@%$INSTALL_DATA%g +s%@LN_S@%$LN_S%g +s%@MSGFMT@%$MSGFMT%g +s%@CC@%$CC%g +s%@cross_linkable@%$cross_linkable%g +s%@build@%$build%g +s%@build_alias@%$build_alias%g +s%@build_cpu@%$build_cpu%g +s%@build_vendor@%$build_vendor%g +s%@build_os@%$build_os%g +s%@BUILD_CC@%$BUILD_CC%g +s%@cross_compiling@%$cross_compiling%g +s%@CPP@%$CPP%g +s%@AR@%$AR%g +s%@RANLIB@%$RANLIB%g +s%@BASH@%$BASH%g +s%@libc_cv_have_bash2@%$libc_cv_have_bash2%g +s%@KSH@%$KSH%g +s%@libc_cv_have_ksh@%$libc_cv_have_ksh%g +s%@VERSIONING@%$VERSIONING%g +s%@libc_cv_have_initfini@%$libc_cv_have_initfini%g +s%@libc_cv_ld_no_whole_archive@%$libc_cv_ld_no_whole_archive%g +s%@libc_cv_gcc_no_exceptions@%$libc_cv_gcc_no_exceptions%g +s%@uname_sysname@%$uname_sysname%g +s%@uname_release@%$uname_release%g +s%@uname_version@%$uname_version%g +s%@stdio@%$stdio%g +s%@libc_cv_slibdir@%$libc_cv_slibdir%g +s%@libc_cv_sysconfdir@%$libc_cv_sysconfdir%g +s%@libc_cv_rootsbindir@%$libc_cv_rootsbindir%g +s%@has_ldconfig@%$has_ldconfig%g +s%@gnu_ld@%$gnu_ld%g +s%@gnu_as@%$gnu_as%g +s%@elf@%$elf%g +s%@shared@%$shared%g +s%@profile@%$profile%g +s%@omitfp@%$omitfp%g +s%@bounded@%$bounded%g +s%@static_nss@%$static_nss%g +s%@nopic_initfini@%$nopic_initfini%g +s%@DEFINES@%$DEFINES%g +s%@VERSION@%$VERSION%g + +CEOF +EOF + +cat >> $CONFIG_STATUS <<\EOF + +# Split the substitutions into bite-sized pieces for seds with +# small command number limits, like on Digital OSF/1 and HP-UX. +ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. +ac_file=1 # Number of current file. +ac_beg=1 # First line for current file. +ac_end=$ac_max_sed_cmds # Line after last line for current file. +ac_more_lines=: +ac_sed_cmds="" +while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file + else + sed "${ac_end}q" conftest.subs > conftest.s$ac_file + fi + if test ! -s conftest.s$ac_file; then + ac_more_lines=false + rm -f conftest.s$ac_file + else + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f conftest.s$ac_file" + else + ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" + fi + ac_file=`expr $ac_file + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_cmds` + fi +done +if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat +fi +EOF + +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. + + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` + else + ac_dir_suffix= ac_dots= + fi + + case "$ac_given_srcdir" in + .) srcdir=. + if test -z "$ac_dots"; then top_srcdir=. + else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; + /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + *) # Relative path. + srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" + top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + case "$ac_given_INSTALL" in + [/$]*) INSTALL="$ac_given_INSTALL" ;; + *) INSTALL="$ac_dots$ac_given_INSTALL" ;; + esac + + echo creating "$ac_file" + rm -f "$ac_file" + configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." + case "$ac_file" in + *Makefile*) ac_comsub="1i\\ +# $configure_input" ;; + *) ac_comsub= ;; + esac + + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + sed -e "$ac_comsub +s%@configure_input@%$configure_input%g +s%@srcdir@%$srcdir%g +s%@top_srcdir@%$top_srcdir%g +s%@INSTALL@%$INSTALL%g +" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file +fi; done +rm -f conftest.s* + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' +ac_dC='\3' +ac_dD='%g' +# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". +ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='\([ ]\)%\1#\2define\3' +ac_uC=' ' +ac_uD='\4%g' +# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_eB='$%\1#\2define\3' +ac_eC=' ' +ac_eD='%g' + +if test "${CONFIG_HEADERS+set}" != set; then +EOF +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +fi +for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + echo creating $ac_file + + rm -f conftest.frag conftest.in conftest.out + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + cat $ac_file_inputs > conftest.in + +EOF + +# Transform confdefs.h into a sed script conftest.vals that substitutes +# the proper values into config.h.in to produce config.h. And first: +# Protect against being on the right side of a sed subst in config.status. +# Protect against being in an unquoted here document in config.status. +rm -f conftest.vals +cat > conftest.hdr <<\EOF +s/[\\&%]/\\&/g +s%[\\$`]%\\&%g +s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp +s%ac_d%ac_u%gp +s%ac_u%ac_e%gp +EOF +sed -n -f conftest.hdr confdefs.h > conftest.vals +rm -f conftest.hdr + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >> conftest.vals <<\EOF +s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% +EOF + +# Break up conftest.vals because some shells have a limit on +# the size of here documents, and old seds have small limits too. + +rm -f conftest.tail +while : +do + ac_lines=`grep -c . conftest.vals` + # grep -c gives empty output for an empty file on some AIX systems. + if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi + # Write a limited-size here document to conftest.frag. + echo ' cat > conftest.frag <> $CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS + echo 'CEOF + sed -f conftest.frag conftest.in > conftest.out + rm -f conftest.in + mv conftest.out conftest.in +' >> $CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail + rm -f conftest.vals + mv conftest.tail conftest.vals +done +rm -f conftest.vals + +cat >> $CONFIG_STATUS <<\EOF + rm -f conftest.frag conftest.h + echo "/* $ac_file. Generated automatically by configure. */" > conftest.h + cat conftest.in >> conftest.h + rm -f conftest.in + if cmp -s $ac_file conftest.h 2>/dev/null; then + echo "$ac_file is unchanged" + rm -f conftest.h + else + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + fi + rm -f $ac_file + mv conftest.h $ac_file + fi +fi; done + +EOF + +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +srcdir=$ac_given_srcdir +while test -n "$ac_sources"; do + set $ac_dests; ac_dest=$1; shift; ac_dests=$* + set $ac_sources; ac_source=$1; shift; ac_sources=$* + + echo "linking $srcdir/$ac_source to $ac_dest" + + if test ! -r $srcdir/$ac_source; then + { echo "configure: error: $srcdir/$ac_source: File not found" 1>&2; exit 1; } + fi + rm -f $ac_dest + + # Make relative symlinks. + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dest_dir=`echo $ac_dest|sed 's%/[^/][^/]*$%%'` + if test "$ac_dest_dir" != "$ac_dest" && test "$ac_dest_dir" != .; then + # The dest file is in a subdirectory. + test ! -d "$ac_dest_dir" && mkdir "$ac_dest_dir" + ac_dest_dir_suffix="/`echo $ac_dest_dir|sed 's%^\./%%'`" + # A "../" for each directory in $ac_dest_dir_suffix. + ac_dots=`echo $ac_dest_dir_suffix|sed 's%/[^/]*%../%g'` + else + ac_dest_dir_suffix= ac_dots= + fi + + case "$srcdir" in + [/$]*) ac_rel_source="$srcdir/$ac_source" ;; + *) ac_rel_source="$ac_dots$srcdir/$ac_source" ;; + esac + + # Make a symlink if possible; otherwise try a hard link. + if ln -s $ac_rel_source $ac_dest 2>/dev/null || + ln $srcdir/$ac_source $ac_dest; then : + else + { echo "configure: error: can not link $ac_dest to $srcdir/$ac_source" 1>&2; exit 1; } + fi +done +EOF +cat >> $CONFIG_STATUS <> config.make; test -d bits || mkdir bits +EOF +cat >> $CONFIG_STATUS <<\EOF + +exit 0 +EOF +chmod +x $CONFIG_STATUS +rm -fr confdefs* $ac_clean_files +test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 + +if test "$no_recursion" != yes; then + + # Remove --cache-file and --srcdir arguments so they do not pile up. + ac_sub_configure_args= + ac_prev= + for ac_arg in $ac_configure_args; do + if test -n "$ac_prev"; then + ac_prev= + continue + fi + case "$ac_arg" in + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + ;; + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + ;; + *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;; + esac + done + + for ac_config_dir in $add_ons; do + + # Do not complain, so a configure script can configure whichever + # parts of a large source tree are present. + if test ! -d $srcdir/$ac_config_dir; then + continue + fi + + echo configuring in $ac_config_dir + + case "$srcdir" in + .) ;; + *) + if test -d ./$ac_config_dir || mkdir ./$ac_config_dir; then :; + else + { echo "configure: error: can not create `pwd`/$ac_config_dir" 1>&2; exit 1; } + fi + ;; + esac + + ac_popdir=`pwd` + cd $ac_config_dir + + # A "../" for each directory in /$ac_config_dir. + ac_dots=`echo $ac_config_dir|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'` + + case "$srcdir" in + .) # No --srcdir option. We are building in place. + ac_sub_srcdir=$srcdir ;; + /*) # Absolute path. + ac_sub_srcdir=$srcdir/$ac_config_dir ;; + *) # Relative path. + ac_sub_srcdir=$ac_dots$srcdir/$ac_config_dir ;; + esac + + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_sub_srcdir/configure; then + ac_sub_configure=$ac_sub_srcdir/configure + elif test -f $ac_sub_srcdir/configure.in; then + ac_sub_configure=$ac_configure + else + echo "configure: warning: no configuration information is in $ac_config_dir" 1>&2 + ac_sub_configure= + fi + + # The recursion is here. + if test -n "$ac_sub_configure"; then + + # Make the cache file name correct relative to the subdirectory. + case "$cache_file" in + /*) ac_sub_cache_file=$cache_file ;; + *) # Relative path. + ac_sub_cache_file="$ac_dots$cache_file" ;; + esac + case "$ac_given_INSTALL" in + [/$]*) INSTALL="$ac_given_INSTALL" ;; + *) INSTALL="$ac_dots$ac_given_INSTALL" ;; + esac + + echo "running ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir" + # The eval makes quoting arguments work. + if eval ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir + then : + else + { echo "configure: error: $ac_sub_configure failed for $ac_config_dir" 1>&2; exit 1; } + fi + fi + + cd $ac_popdir + done +fi + diff --git a/inet/getnameinfo.c b/inet/getnameinfo.c index 030447addb..037578f277 100644 --- a/inet/getnameinfo.c +++ b/inet/getnameinfo.c @@ -65,255 +65,313 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #ifndef AF_LOCAL -#define AF_LOCAL AF_UNIX +# define AF_LOCAL AF_UNIX #endif /* AF_LOCAL */ #if HOSTTABLE -struct hostent *_addr2hostname_hosts(const char *, int, int); +struct hostent *_addr2hostname_hosts (const char *, int, int); #endif /* HOSTTABLE */ #ifndef min -#define min(x,y) (((x) > (y)) ? (y) : (x)) +# define min(x,y) (((x) > (y)) ? (y) : (x)) #endif /* min */ -static const char *domain; -static char *nrl_domainname(void) +static char * +nrl_domainname (void) { + static const char *domain = NULL; static int first = 1; - if (first) { - - __libc_lock_define_initialized (static, lock); - __libc_lock_lock (lock); - - if (first) { - char *c; - struct hostent *h, th; - int tmpbuflen = 1024; - char *tmpbuf = __alloca(tmpbuflen); - int herror; - - first = 0; - - while (__gethostbyname_r("localhost", &th, tmpbuf, tmpbuflen, &h, - &herror)) { - if (herror == NETDB_INTERNAL) { - if (errno == ERANGE) { - tmpbuflen *= 2; - tmpbuf = __alloca(tmpbuflen); - } - } else { - break; - } - } - - if (h && (c = strchr(h->h_name, '.'))) { - domain = __strdup (++c); - goto ret; - } - - while (gethostname (tmpbuf, tmpbuflen)) { - tmpbuflen *= 2; - tmpbuf = __alloca (tmpbuflen); - } - if (c = strchr(tmpbuf, '.')) { - domain = __strdup(++c); - goto ret; - } - - while (__gethostbyname_r(tmpbuf, &th, tmpbuf, tmpbuflen, &h, - &herror)) { - if (herror == NETDB_INTERNAL) { - if (errno == ERANGE) { - tmpbuflen *= 2; - tmpbuf = __alloca(tmpbuflen); - } - } else { - break; - } - } - - if (h && (c = strchr(h->h_name, '.'))) { - domain = __strdup(++c); - goto ret; - } - - { - struct in_addr in_addr; + if (first) + { + __libc_lock_define_initialized (static, lock); + __libc_lock_lock (lock); + + if (first) + { + char *c; + struct hostent *h, th; + int tmpbuflen = 1024; + char *tmpbuf = alloca (tmpbuflen); + int herror; + + first = 0; + + while (__gethostbyname_r ("localhost", &th, tmpbuf, tmpbuflen, &h, + &herror)) + { + if (herror == NETDB_INTERNAL && errno == ERANGE) + { + tmpbuflen *= 2; + tmpbuf = alloca (tmpbuflen); + } + else + break; + } - in_addr.s_addr = htonl(0x7f000001); + if (h && (c = strchr (h->h_name, '.'))) + domain = __strdup (++c); + else + { + /* The name contains no domain information. Use the name + now to get more information. */ + while (gethostname (tmpbuf, tmpbuflen)) + { + tmpbuflen *= 2; + tmpbuf = alloca (tmpbuflen); + } - while (__gethostbyaddr_r((const char *)&in_addr, - sizeof(struct in_addr), AF_INET, &th, tmpbuf, - tmpbuflen, &h, &herror)) { - if (herror == NETDB_INTERNAL) { - if (errno == ERANGE) { - tmpbuflen *= 2; - tmpbuf = __alloca(tmpbuflen); + if ((c = strchr (tmpbuf, '.'))) + domain = __strdup (++c); + else + { + /* We need to preserve the hostname. */ + const char *hstname = strdupa (tmpbuf); + + while (__gethostbyname_r (hstname, &th, tmpbuf, tmpbuflen, + &h, &herror)) + { + if (herror == NETDB_INTERNAL && errno == ERANGE) + { + tmpbuflen *= 2; + tmpbuf = alloca (tmpbuflen); + } + else + break; + } + + if (h && (c = strchr(h->h_name, '.'))) + domain = __strdup (++c); + else + { + struct in_addr in_addr; + + in_addr.s_addr = htonl (0x7f000001); + + while (__gethostbyaddr_r ((const char *) &in_addr, + sizeof (struct in_addr), + AF_INET, &th, tmpbuf, + tmpbuflen, &h, &herror)) + { + if (herror == NETDB_INTERNAL && errno == ERANGE) + { + tmpbuflen *= 2; + tmpbuf = alloca (tmpbuflen); + } + else + break; + } + + if (h && (c = strchr (h->h_name, '.'))) + domain = __strdup (++c); + } + } } - } else { - break; - } - } - - if (h && (c = strchr(h->h_name, '.'))) { - domain = __strdup(++c); - goto ret; } - } + __libc_lock_unlock (lock); } - ret: - __libc_lock_unlock (lock); - } - return domain; }; -int getnameinfo(const struct sockaddr *sa, size_t addrlen, char *host, size_t hostlen, char *serv, size_t servlen, int flags) + +int +getnameinfo (const struct sockaddr *sa, size_t addrlen, char *host, + size_t hostlen, char *serv, size_t servlen, int flags) { int serrno = errno; int tmpbuflen = 1024; int herrno; - char *tmpbuf = __alloca(tmpbuflen); + char *tmpbuf = alloca (tmpbuflen); struct hostent th; - if (!sa) + if (sa == NULL) return -1; - if (host && (hostlen > 0)) - switch(sa->sa_family) { + if (host != NULL && hostlen > 0) + switch(sa->sa_family) + { case AF_INET: #if INET6 case AF_INET6: #endif /* INET6 */ - if (!(flags & NI_NUMERICHOST)) { - struct hostent *h = NULL; + if (!(flags & NI_NUMERICHOST)) + { + struct hostent *h = NULL; #if HOSTTABLE -#if INET6 - if (sa->sa_family == AF_INET6) - h = _addr2hostname_hosts((void *)&(((struct sockaddr_in6 *)sa)->sin6_addr), sizeof(struct in6_addr), AF_INET6); - else -#endif /* INET6 */ - h = _addr2hostname_hosts((void *)&(((struct sockaddr_in *)sa)->sin_addr), sizeof(struct in_addr), AF_INET); +# if INET6 + if (sa->sa_family == AF_INET6) + h = _addr2hostname_hosts ((void *) &(((struct sockaddr_in6 *) sa)->sin6_addr), + sizeof(struct in6_addr), AF_INET6); + else +# endif /* INET6 */ + h = _addr2hostname_hosts ((void *)& (((struct sockaddr_in *) sa)->sin_addr), + sizeof(struct in_addr), AF_INET); #endif /* HOSTTABLE */ #if RESOLVER - if (!h) { + if (h == NULL) + { #if INET6 - if (sa->sa_family == AF_INET6) { - while (__gethostbyaddr_r((void *)&(((struct sockaddr_in6 *)sa)->sin6_addr), sizeof(struct in6_addr), AF_INET6, &th, tmpbuf, tmpbuflen, &h, &herrno)) { - if (herrno == NETDB_INTERNAL) { - if (errno == ERANGE) { - tmpbuflen *= 2; - tmpbuf = __alloca(tmpbuflen); - } else { - __set_h_errno(herrno); - goto fail; + if (sa->sa_family == AF_INET6) + { + while (__gethostbyaddr_r ((void *) &(((struct sockaddr_in6 *) sa)->sin6_addr), + sizeof(struct in6_addr), + AF_INET6, &th, tmpbuf, tmpbuflen, + &h, &herrno)) + { + if (herrno == NETDB_INTERNAL) + { + if (errno == ERANGE) + { + tmpbuflen *= 2; + tmpbuf = alloca (tmpbuflen); + } + else + { + __set_h_errno (herrno); + goto fail; + } + } + else + { + break; + } + } } - } else { - break; - } - } - } else { + else + { #endif /* INET6 */ - while (__gethostbyaddr_r((void *)&(((struct sockaddr_in *)sa)->sin_addr), sizeof(struct in_addr), AF_INET, &th, tmpbuf, tmpbuflen, &h, &herrno)) { - if (errno == ERANGE) { - tmpbuflen *= 2; - tmpbuf = __alloca(tmpbuflen); - } else { - break; - } + while (__gethostbyaddr_r ((void *) &(((struct sockaddr_in *)sa)->sin_addr), + sizeof(struct in_addr), AF_INET, + &th, tmpbuf, tmpbuflen, + &h, &herrno)) + { + if (errno == ERANGE) + { + tmpbuflen *= 2; + tmpbuf = alloca (tmpbuflen); + } + else + { + break; + } + } + } } - } - } #endif /* RESOLVER */ - if (h) { - if (flags & NI_NOFQDN) { - char *c; - if ((c = nrl_domainname()) && (c = strstr(h->h_name, c)) && (c != h->h_name) && (*(--c) == '.')) { - strncpy(host, h->h_name, min(hostlen, (size_t) (c - h->h_name))); + if (h) + { + if (flags & NI_NOFQDN) + { + char *c; + if ((c = nrl_domainname ()) && (c = strstr(h->h_name, c)) + && (c != h->h_name) && (*(--c) == '.')) + { + strncpy (host, h->h_name, + min(hostlen, (size_t) (c - h->h_name))); + break; + } + } + strncpy (host, h->h_name, hostlen); break; - }; - }; - strncpy(host, h->h_name, hostlen); - break; - }; - }; + } + } if (flags & NI_NAMEREQD) goto fail; - - { - const char *c; + else + { + const char *c; #if INET6 - if (sa->sa_family == AF_INET6) - c = inet_ntop(AF_INET6, (void *)&(((struct sockaddr_in6 *)sa)->sin6_addr), host, hostlen); - else + if (sa->sa_family == AF_INET6) + c = inet_ntop (AF_INET6, + (void *) &(((struct sockaddr_in6 *) sa)->sin6_addr), + host, hostlen); + else #endif /* INET6 */ - c = inet_ntop(AF_INET, (void *)&(((struct sockaddr_in *)sa)->sin_addr), host, hostlen); + c = inet_ntop (AF_INET, + (void *) &(((struct sockaddr_in *) sa)->sin_addr), + host, hostlen); - if (!c) - goto fail; - }; + if (!c) + goto fail; + } break; + #if LOCAL case AF_LOCAL: - if (!(flags & NI_NUMERICHOST)) { - struct utsname utsname; + if (!(flags & NI_NUMERICHOST)) + { + struct utsname utsname; - if (!uname(&utsname)) { - strncpy(host, utsname.nodename, hostlen); - break; + if (!uname (&utsname)) + { + strncpy (host, utsname.nodename, hostlen); + break; + }; }; - }; if (flags & NI_NAMEREQD) goto fail; - strncpy(host, "localhost", hostlen); + strncpy (host, "localhost", hostlen); break; #endif /* LOCAL */ + default: return -1; - }; + } if (serv && (servlen > 0)) - switch(sa->sa_family) { + switch(sa->sa_family) + { case AF_INET: #if INET6 case AF_INET6: #endif /* INET6 */ - if (!(flags & NI_NUMERICSERV)) { - struct servent *s, ts; - while (__getservbyport_r(((struct sockaddr_in *)sa)->sin_port, ((flags & NI_DGRAM) ? "udp" : "tcp"), &ts, tmpbuf, tmpbuflen, &s)) { - if (herrno == NETDB_INTERNAL) { - if (errno == ERANGE) { - tmpbuflen *= 2; - tmpbuf = __alloca(tmpbuflen); - } else { - goto fail; + if (!(flags & NI_NUMERICSERV)) + { + struct servent *s, ts; + while (__getservbyport_r (((struct sockaddr_in *) sa)->sin_port, + ((flags & NI_DGRAM) ? "udp" : "tcp"), + &ts, tmpbuf, tmpbuflen, &s)) + { + if (herrno == NETDB_INTERNAL) + { + if (errno == ERANGE) + { + tmpbuflen *= 2; + tmpbuf = __alloca(tmpbuflen); + } + else + goto fail; + } + else + { + break; + } + } + if (s) + { + strncpy(serv, s->s_name, servlen); + break; } - } else { - break; - } } - if (s) { - strncpy(serv, s->s_name, servlen); - break; - }; - }; - snprintf(serv, servlen, "%d", ntohs(((struct sockaddr_in *)sa)->sin_port)); + snprintf (serv, servlen, "%d", + ntohs (((struct sockaddr_in *) sa)->sin_port)); break; + #if LOCAL case AF_LOCAL: - strncpy(serv, ((struct sockaddr_un *)sa)->sun_path, servlen); + strncpy (serv, ((struct sockaddr_un *) sa)->sun_path, servlen); break; #endif /* LOCAL */ - }; + } + if (host && (hostlen > 0)) host[hostlen-1] = 0; if (serv && (servlen > 0)) diff --git a/login/programs/utmpd.c b/login/programs/utmpd.c index 2fef776a69..1469d94ca7 100644 --- a/login/programs/utmpd.c +++ b/login/programs/utmpd.c @@ -44,7 +44,7 @@ #endif /* Get libc version number. */ -#include "../../version.h" +#include #define PACKAGE _libc_intl_domainname @@ -91,12 +91,12 @@ main (int argc, char *argv[]) /* Set the text message domain. */ textdomain (PACKAGE); - + /* Initialize local variables. */ debug = 0; do_help = 0; do_version = 0; - + while ((opt = getopt_long (argc, argv, "dhV", long_options, NULL)) != -1) switch (opt) { @@ -119,12 +119,12 @@ main (int argc, char *argv[]) if (do_version) { printf ("utmpd (GNU %s) %s\n", PACKAGE, VERSION); - printf (gettext ("\ + printf (_("\ Copyright (C) %s Free Software Foundation, Inc.\n\ This is free software; see the source for copying conditions. There is NO\n\ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ "), "1997"); - printf (gettext ("Written by %s.\n"), "Mark Kettenis"); + printf (_("Written by %s.\n"), "Mark Kettenis"); exit (EXIT_SUCCESS); } @@ -136,7 +136,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ signal (SIGINT, termination_handler); signal (SIGQUIT, termination_handler); signal (SIGTERM, termination_handler); - + /* Check if we are already running. */ if (check_pid (_PATH_UTMPDPID)) error (EXIT_FAILURE, 0, _("already running")); @@ -163,7 +163,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ if (!debug) { openlog ("utmpd", LOG_CONS | LOG_ODELAY, LOG_DAEMON); - + if (daemon (0, 0) < 0) error (EXIT_FAILURE, errno, _("cannot auto-background")); forked = 1; @@ -176,10 +176,10 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ signal (SIGTTIN, SIG_IGN); signal (SIGTSTP, SIG_IGN); } - + /* Drop priviliges. */ drop_priviliges (); - + /* Handle incoming requests. */ handle_requests (); } @@ -190,21 +190,21 @@ static void usage (int status) { if (status != EXIT_SUCCESS) - fprintf (stderr, gettext ("Try `%s --help' for more information.\n"), + fprintf (stderr, _("Try `%s --help' for more information.\n"), program_invocation_name); else { - printf (gettext ("\ + printf (_("\ Usage: %s [OPTION]...\n\ -d, --debug do not fork and display messages on the current tty\n\ -h, --help display this help and exit\n\ -V, --version output version information and exit\n"), program_invocation_name); - fputs (gettext ("\ -Report bugs to .\n"), + fputs (_("\ +Report bugs using the `glibcbug' script to .\n"), stdout); } - + exit (status); } @@ -247,10 +247,10 @@ make_socket (const char *name) terminating null byte. */ size = (offsetof (struct sockaddr_un, sun_path) + strlen (addr.sun_path)); - + if (bind (sock, (struct sockaddr *) &addr, size) < 0) error (EXIT_FAILURE, errno, "%s", name); - + return sock; } @@ -265,7 +265,7 @@ void handle_requests (void) fd_set read_fd_set; fd_set write_fd_set; int fd; - + /* Initialize the set of active sockets. */ FD_ZERO (&active_read_fd_set); FD_ZERO (&active_write_fd_set); @@ -329,7 +329,7 @@ void handle_requests (void) if (connection->write_ptr == connection->write_base) FD_CLR (fd, &active_write_fd_set); } - } + } } } @@ -344,7 +344,7 @@ termination_handler (int signum) /* Restore user id. */ seteuid (getuid ()); - + /* Clean up the files created by `bind'. */ unlink (_PATH_UTMPD_RO); unlink (_PATH_UTMPD_RW); @@ -354,7 +354,7 @@ termination_handler (int signum) /* Clean up pid file. */ unlink (_PATH_UTMPDPID); - + exit (EXIT_SUCCESS); } @@ -364,12 +364,12 @@ static int check_pid (const char *file) { FILE *fp; - + fp = fopen (_PATH_UTMPDPID, "r"); if (fp) { pid_t pid; - + fscanf (fp, "%d", &pid); fclose (fp); @@ -386,17 +386,16 @@ static int write_pid (const char *file) { FILE *fp; - + fp = fopen (_PATH_UTMPDPID, "w"); if (fp == NULL) return -1; - + fprintf (fp, "%d\n", getpid ()); if (ferror (fp)) return -1; - + fclose (fp); return 0; } - diff --git a/manual/texinfo.tex b/manual/texinfo.tex index cef44662d0..ad5db9cac6 100644 --- a/manual/texinfo.tex +++ b/manual/texinfo.tex @@ -1,5 +1,5 @@ %% TeX macros to handle Texinfo files. -%% $Id: texinfo.tex,v 2.208 1997/07/11 01:01:45 drepper Exp $ +%% $Id: texinfo.tex,v 2.209 1997/07/13 12:07:01 drepper Exp $ % Copyright (C) 1985, 86, 88, 90, 91, 92, 93, % 94, 95, 96, 97 Free Software Foundation, Inc. @@ -36,7 +36,7 @@ % This automatically updates the version number based on RCS. \def\deftexinfoversion$#1: #2 ${\def\texinfoversion{#2}} -\deftexinfoversion$Revision: 2.208 $ +\deftexinfoversion$Revision: 2.209 $ \message{Loading texinfo package [Version \texinfoversion]:} % If in a .fmt file, print the version number @@ -1152,7 +1152,7 @@ where each line of input produces a line of output.} \setfont\titlesc\scbshape{10}{\magstep4} \font\titlei=cmmi12 scaled \magstep3 \font\titlesy=cmsy10 scaled \magstep4 -\let\authorrm = \secrm +\def\authorrm{\secrm} % Chapter (and unnumbered) fonts (17.28pt). \setfont\chaprm\rmbshape{12}{\magstep2} diff --git a/nis/nss_nisplus/nisplus-hosts.c b/nis/nss_nisplus/nisplus-hosts.c index 19f9161076..d4dda5964e 100644 --- a/nis/nss_nisplus/nisplus-hosts.c +++ b/nis/nss_nisplus/nisplus-hosts.c @@ -118,7 +118,7 @@ _nss_nisplus_parse_hostent (nis_result *result, int af, struct hostent *host, __set_errno (ERANGE); return 0; } - p = stpcpy(p, " "); + *p++ = ' '; p = stpncpy (p, NISENTRYVAL (i, 1, result), NISENTRYLEN (i, 1, result)); *p = '\0'; diff --git a/nis/nss_nisplus/nisplus-network.c b/nis/nss_nisplus/nisplus-network.c index 9a46397149..183722633f 100644 --- a/nis/nss_nisplus/nisplus-network.c +++ b/nis/nss_nisplus/nisplus-network.c @@ -89,7 +89,7 @@ _nss_nisplus_parse_netent (nis_result *result, struct netent *network, __set_errno (ERANGE); return 0; } - p = stpcpy(p, " "); + *p++ = ' '; p = stpncpy (p, NISENTRYVAL (i, 1, result), NISENTRYLEN (i, 1, result)); *p = '\0'; diff --git a/nis/nss_nisplus/nisplus-proto.c b/nis/nss_nisplus/nisplus-proto.c index 1ee9a8944b..d98317a8a1 100644 --- a/nis/nss_nisplus/nisplus-proto.c +++ b/nis/nss_nisplus/nisplus-proto.c @@ -85,7 +85,7 @@ _nss_nisplus_parse_protoent (nis_result * result, struct protoent *proto, { if (NISENTRYLEN (i, 1, result) + 2 > room_left) goto no_more_room; - p = stpcpy(p, " "); + *p++ = ' '; p = stpncpy (p, NISENTRYVAL (i, 1, result), NISENTRYLEN (i, 1, result)); *p = '\0'; diff --git a/nis/nss_nisplus/nisplus-rpc.c b/nis/nss_nisplus/nisplus-rpc.c index cebd5d7183..47610a4dca 100644 --- a/nis/nss_nisplus/nisplus-rpc.c +++ b/nis/nss_nisplus/nisplus-rpc.c @@ -82,7 +82,7 @@ _nss_nisplus_parse_rpcent (nis_result *result, struct rpcent *rpc, { if (NISENTRYLEN (i, 1, result) + 2 > room_left) goto no_more_room; - p = stpcpy(p, " "); + *p++ = ' '; p = stpncpy (p, NISENTRYVAL (i, 1, result), NISENTRYLEN (i, 1, result)); *p = '\0'; diff --git a/nis/nss_nisplus/nisplus-service.c b/nis/nss_nisplus/nisplus-service.c index 50bc7e24c1..b97034e9b8 100644 --- a/nis/nss_nisplus/nisplus-service.c +++ b/nis/nss_nisplus/nisplus-service.c @@ -91,7 +91,7 @@ _nss_nisplus_parse_servent (nis_result *result, struct servent *serv, { if (NISENTRYLEN (i, 1, result) + 2 > room_left) goto no_more_room; - p = stpcpy(p, " "); + *p++ = ' '; p = stpncpy (p, NISENTRYVAL (i, 1, result), NISENTRYLEN (i, 1, result)); *p = '\0'; diff --git a/sysdeps/alpha/fpu/bits/mathinline.h b/sysdeps/alpha/fpu/bits/mathinline.h index 0f76027317..22703120b1 100644 --- a/sysdeps/alpha/fpu/bits/mathinline.h +++ b/sysdeps/alpha/fpu/bits/mathinline.h @@ -18,7 +18,8 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#if defined (__GNUC__) && !defined (__NO_MATH_INLINES) +#ifdef __GNUC__ +#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__ extern __inline double __copysign (double __x, double __y) @@ -42,3 +43,4 @@ atan (double __x) } #endif +#endif diff --git a/sysdeps/generic/bits/select.h b/sysdeps/generic/bits/select.h index 613919577c..7803335499 100644 --- a/sysdeps/generic/bits/select.h +++ b/sysdeps/generic/bits/select.h @@ -21,9 +21,16 @@ #endif -/* This line MUST be split! Otherwise m4 will not change it. */ -#define __FD_ZERO(set) \ - ((void) memset ((__ptr_t) (set), 0, sizeof (fd_set))) +/* This line MUST be split! Otherwise m4 will not change it. + + We don't use `memset' because this would require a prototype and + the array isn't too big. */ +#define __FD_ZERO(set) \ + do { \ + unsigned int __i; \ + for (__i = 0; __i < sizeof (__fd_set) / sizeof (__fd_mask); ++__i) \ + ((__fd_mask *) set)[__i] = '\0'; \ + } while (0) #define __FD_SET(d, set) ((set)->fds_bits[__FDELT(d)] |= __FDMASK(d)) #define __FD_CLR(d, set) ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d)) #define __FD_ISSET(d, set) ((set)->fds_bits[__FDELT(d)] & __FDMASK(d)) diff --git a/sysdeps/i386/bits/select.h b/sysdeps/i386/bits/select.h index 3912515a7f..e72b6f0a84 100644 --- a/sysdeps/i386/bits/select.h +++ b/sysdeps/i386/bits/select.h @@ -48,8 +48,14 @@ #else /* ! GNU CC */ +/* We don't use `memset' because this would require a prototype and + the array isn't too big. */ #define __FD_ZERO(set) \ - ((void) memset ((__ptr_t) (set), 0, sizeof (fd_set))) + do { \ + unsigned int __i; \ + for (__i = 0; __i < sizeof (__fd_set) / sizeof (__fd_mask); ++__i) \ + ((__fd_mask *) set)[__i] = '\0'; \ + } while (0) #define __FD_SET(d, set) ((set)->fds_bits[__FDELT(d)] |= __FDMASK(d)) #define __FD_CLR(d, set) ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d)) #define __FD_ISSET(d, set) ((set)->fds_bits[__FDELT(d)] & __FDMASK(d)) diff --git a/sysdeps/i386/fpu/bits/mathinline.h b/sysdeps/i386/fpu/bits/mathinline.h index dab5494ac5..42dae92a2a 100644 --- a/sysdeps/i386/fpu/bits/mathinline.h +++ b/sysdeps/i386/fpu/bits/mathinline.h @@ -21,7 +21,56 @@ #ifndef _BITS_MATHINLINE_H #define _BITS_MATHINLINE_H 1 -#if defined __GNUG__ && \ + +#if defined __USE_ISOC9X && defined __GNUC__ && __GNUC__ >= 2 +/* ISO C 9X defines some macros to perform unordered comparisons. The + ix87 FPU supports this with special opcodes and we should use them. + These must not be inline functions since we have to be able to handle + all floating-point types. */ +# define isgreater(x, y) \ + ({ int result; \ + __asm__ ("fucompp; fnstsw; andb $0x45, %%ah; setz %%al;" \ + "andl $0xff, %0" \ + : "=a" (result) : "t" (x), "u" (y) : "cc"); \ + result; }) + +# define isgreaterequal(x, y) \ + ({ int result; \ + __asm__ ("fucompp; fnstsw; testb $0x05, %%ah; setz %%al;" \ + "andl $0xff, %0" \ + : "=a" (result) : "t" (x), "u" (y) : "cc"); \ + result; }) + +# define isless(x, y) \ + ({ int result; \ + __asm__ ("fucompp; fnstsw; xorb $0x01, %%ah; testb $0x45, %%ah;" \ + "setz %%al; andl $0xff, %0" \ + : "=a" (result) : "t" (x), "u" (y) : "cc"); \ + result; }) + +# define islessequal(x, y) \ + ({ int result; \ + __asm__ ("fucompp; fnstsw; xorb $0x01, %%ah; testb $0x05, %%ah;" \ + "setz %%al; andl $0xff, %0" \ + : "=a" (result) : "t" (x), "u" (y) : "cc"); \ + result; }) + +# define islessgreater(x, y) \ + ({ int result; \ + __asm__ ("fucompp; fnstsw; testb $0x44, %%ah; setz %%al;" \ + "andl $0xff, %0" \ + : "=a" (result) : "t" (x), "u" (y) : "cc"); \ + result; }) + +# define isunordered(x, y) \ + ({ int result; \ + __asm__ ("fucompp; fnstsw; sahf; setp %%al; andl $0xff, %0" \ + : "=a" (result) : "t" (x), "u" (y) : "cc"); \ + result; }) +#endif + + +#if defined __GNUC__ && \ (__GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ <= 7)) /* gcc 2.7.2 and 2.7.2.1 have problems with inlining `long double' functions so we disable this now. */ @@ -29,8 +78,9 @@ # define __NO_MATH_INLINES #endif + #ifdef __GNUC__ -#ifndef __NO_MATH_INLINES +#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__ #ifdef __cplusplus # define __MATH_INLINE __inline @@ -258,10 +308,8 @@ __log2 (double __x) { register double __value; __asm __volatile__ - ("fld1\n\t" - "fxch\n\t" - "fyl2x" - : "=t" (__value) : "0" (__x)); + ("fyl2x" + : "=t" (__value) : "0" (__x), "u" (1.0)); return __value; } @@ -441,7 +489,10 @@ logb (double __x) return __value; } +#endif + +#ifdef __USE_MISC __MATH_INLINE double drem (double __x, double __y); __MATH_INLINE double drem (double __x, double __y) @@ -471,55 +522,6 @@ __finite (double __x) return __result; } - -/* ISO C 9X defines some macros to perform unordered comparisons. The - ix87 FPU supports this with special opcodes and we should use them. - These must not be inline functions since we have to be able to handle - all floating-point types. */ -# define isgreater(x, y) \ - ({ int result; \ - __asm__ ("fucompp; fnstsw; andb $0x45, %%ah; setz %%al;" \ - "andl $0xff, %0" \ - : "=a" (result) : "t" (x), "u" (y) : "cc"); \ - result; }) - -# define isgreaterequal(x, y) \ - ({ int result; \ - __asm__ ("fucompp; fnstsw; testb $0x05, %%ah; setz %%al;" \ - "andl $0xff, %0" \ - : "=a" (result) : "t" (x), "u" (y) : "cc"); \ - result; }) - -# define isless(x, y) \ - ({ int result; \ - __asm__ ("fucompp; fnstsw; xorb $0x01, %%ah; testb $0x45, %%ah;" \ - "setz %%al; andl $0xff, %0" \ - : "=a" (result) : "t" (x), "u" (y) : "cc"); \ - result; }) - -# define islessequal(x, y) \ - ({ int result; \ - __asm__ ("fucompp; fnstsw; xorb $0x01, %%ah; testb $0x05, %%ah;" \ - "setz %%al; andl $0xff, %0" \ - : "=a" (result) : "t" (x), "u" (y) : "cc"); \ - result; }) - -# define islessgreater(x, y) \ - ({ int result; \ - __asm__ ("fucompp; fnstsw; testb $0x44, %%ah; setz %%al;" \ - "andl $0xff, %0" \ - : "=a" (result) : "t" (x), "u" (y) : "cc"); \ - result; }) - -# define isunordered(x, y) \ - ({ int result; \ - __asm__ ("fucompp; fnstsw; sahf; setp %%al; andl $0xff, %0" \ - : "=a" (result) : "t" (x), "u" (y) : "cc"); \ - result; }) -#endif - - -#ifdef __USE_MISC __MATH_INLINE double coshm1 (double __x); __MATH_INLINE double coshm1 (double __x) diff --git a/sysdeps/m68k/fpu/bits/mathinline.h b/sysdeps/m68k/fpu/bits/mathinline.h index 79245c07a1..2ab570fba5 100644 --- a/sysdeps/m68k/fpu/bits/mathinline.h +++ b/sysdeps/m68k/fpu/bits/mathinline.h @@ -19,18 +19,69 @@ #ifdef __GNUC__ -#include +#ifdef __USE_ISOC9X + +/* ISO C 9X defines some macros to perform unordered comparisons. The + m68k FPU supports this with special opcodes and we should use them. + These must not be inline functions since we have to be able to handle + all floating-point types. */ +# define isgreater(x, y) \ + __extension__ \ + ({ char __result; \ + __asm__ ("fcmp%.x %2,%1; fsogt %0" \ + : "=dm" (__result) : "f" (x), "f" (y)); \ + (int) __result; }) + +# define isgreaterequal(x, y) \ + __extension__ \ + ({ char __result; \ + __asm__ ("fcmp%.x %2,%1; fsoge %0" \ + : "=dm" (__result) : "f" (x), "f" (y)); \ + (int) __result; }) + +# define isless(x, y) \ + __extension__ \ + ({ char __result; \ + __asm__ ("fcmp%.x %2,%1; fsolt %0" \ + : "=dm" (__result) : "f" (x), "f" (y)); \ + (int) __result; }) + +# define islessequal(x, y) \ + __extension__ \ + ({ char __result; \ + __asm__ ("fcmp%.x %2,%1; fsole %0" \ + : "=dm" (__result) : "f" (x), "f" (y)); \ + (int) __result; }) + +# define islessgreater(x, y) \ + __extension__ \ + ({ char __result; \ + __asm__ ("fcmp%.x %2,%1; fsogl %0" \ + : "=dm" (__result) : "f" (x), "f" (y)); \ + (int) __result; }) + +# define isunordered(x, y) \ + __extension__ \ + ({ char __result; \ + __asm__ ("fcmp%.x %2,%1; fsun %0" \ + : "=dm" (__result) : "f" (x), "f" (y)); \ + (int) __result; }) +#endif + + +#if (!defined __NO_MATH_INLINES && defined __OPTIMIZE__) \ + || defined __LIBC_M81_MATH_INLINES #ifdef __LIBC_M81_MATH_INLINES /* This is used when defining the functions themselves. Define them with __ names, and with `static inline' instead of `extern inline' so the bodies will always be used, never an external function call. */ -#define __m81_u(x) __CONCAT(__,x) -#define __m81_inline static __inline +# define __m81_u(x) __CONCAT(__,x) +# define __m81_inline static __inline #else -#define __m81_u(x) x -#define __m81_inline extern __inline -#define __M81_MATH_INLINES 1 +# define __m81_u(x) x +# define __m81_inline extern __inline +# define __M81_MATH_INLINES 1 #endif /* Define a const math function. */ @@ -385,55 +436,7 @@ __inline_forward(void,sincosl, #undef __inline_forward #undef __inline_forward_c -#ifdef __USE_ISOC9X - -/* ISO C 9X defines some macros to perform unordered comparisons. The - m68k FPU supports this with special opcodes and we should use them. - These must not be inline functions since we have to be able to handle - all floating-point types. */ -# define isgreater(x, y) \ - __extension__ \ - ({ char __result; \ - __asm__ ("fcmp%.x %2,%1; fsogt %0" \ - : "=dm" (__result) : "f" (x), "f" (y)); \ - (int) __result; }) - -# define isgreaterequal(x, y) \ - __extension__ \ - ({ char __result; \ - __asm__ ("fcmp%.x %2,%1; fsoge %0" \ - : "=dm" (__result) : "f" (x), "f" (y)); \ - (int) __result; }) - -# define isless(x, y) \ - __extension__ \ - ({ char __result; \ - __asm__ ("fcmp%.x %2,%1; fsolt %0" \ - : "=dm" (__result) : "f" (x), "f" (y)); \ - (int) __result; }) - -# define islessequal(x, y) \ - __extension__ \ - ({ char __result; \ - __asm__ ("fcmp%.x %2,%1; fsole %0" \ - : "=dm" (__result) : "f" (x), "f" (y)); \ - (int) __result; }) - -# define islessgreater(x, y) \ - __extension__ \ - ({ char __result; \ - __asm__ ("fcmp%.x %2,%1; fsogl %0" \ - : "=dm" (__result) : "f" (x), "f" (y)); \ - (int) __result; }) - -# define isunordered(x, y) \ - __extension__ \ - ({ char __result; \ - __asm__ ("fcmp%.x %2,%1; fsun %0" \ - : "=dm" (__result) : "f" (x), "f" (y)); \ - (int) __result; }) -#endif - #endif /* !__NO_MATH_INLINES && __OPTIMIZE__ */ +#endif #endif /* GCC. */ diff --git a/sysdeps/mips/mips64/Implies b/sysdeps/mips/mips64/Implies index a8cae95f9d..06b9091f3b 100644 --- a/sysdeps/mips/mips64/Implies +++ b/sysdeps/mips/mips64/Implies @@ -1 +1,3 @@ wordsize-64 +# MIPS uses IEEE 754 floating point. +ieee754 diff --git a/sysdeps/powerpc/bits/mathinline.h b/sysdeps/powerpc/bits/mathinline.h index db9688cfc5..d7f2a3ac0d 100644 --- a/sysdeps/powerpc/bits/mathinline.h +++ b/sysdeps/powerpc/bits/mathinline.h @@ -17,16 +17,13 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#ifndef __MATH_H -#define __MATH_H - #ifdef __GNUC__ -#ifndef __NO_MATH_INLINES +#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__ #ifdef __cplusplus -#define __MATH_INLINE __inline +# define __MATH_INLINE __inline #else -#define __MATH_INLINE extern __inline +# define __MATH_INLINE extern __inline #endif __MATH_INLINE double __sgn1 (double __x); @@ -64,7 +61,5 @@ fabs (double __x) return __value; } -#endif /* __NO_MATH_INLINES */ +#endif /* __NO_MATH_INLINES && __OPTIMZE__ */ #endif /* __GNUC__ */ - -#endif /* __MATH_H */ diff --git a/sysdeps/standalone/bits/stdio_lim.h b/sysdeps/standalone/bits/stdio_lim.h deleted file mode 100644 index f5a503471c..0000000000 --- a/sysdeps/standalone/bits/stdio_lim.h +++ /dev/null @@ -1,26 +0,0 @@ -/* Copyright (C) 1994, 1997 Free Software Foundation, Inc. - Ported to standalone by Joel Sherrill jsherril@redstone-emh2.army.mil, - On-Line Applications Research Corporation. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#define L_tmpnam 1 -#define TMPMAX 0 -#define L_ctermid 1 -#define L_cuserid 1 -#define FOPEN_MAX 16 -#define FILENAME_MAX 14 diff --git a/sysdeps/stub/bits/mathinline.h b/sysdeps/stub/bits/mathinline.h index 8159c89b94..5498af6b63 100644 --- a/sysdeps/stub/bits/mathinline.h +++ b/sysdeps/stub/bits/mathinline.h @@ -4,3 +4,9 @@ This file should define __MATH_INLINES if functions are actually defined as inlines. */ + +#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__ + +/* Here goes the real code. */ + +#endif diff --git a/sysdeps/stub/bits/stdio_lim.h b/sysdeps/stub/bits/stdio_lim.h index 59b6a40ebe..ef873777c9 100644 --- a/sysdeps/stub/bits/stdio_lim.h +++ b/sysdeps/stub/bits/stdio_lim.h @@ -1,4 +1,37 @@ +/* Copyright (C) 1994, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* : stdio limits for non-POSIX systems. + * Never include this file directly; use instead. + */ + +#ifndef _BITS_STDIO_LIM_H +#define _BITS_STDIO_LIM_H + #define L_tmpnam 1 -#define TMPMAX 0 +#define TMP_MAX 0 + +#ifdef __USE_POSIX +#define L_ctermid 1 +#define L_cuserid 1 +#endif + #define FOPEN_MAX 16 #define FILENAME_MAX 14 + +#endif diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile index 4ab97b2e92..2004a48b42 100644 --- a/sysdeps/unix/sysv/linux/Makefile +++ b/sysdeps/unix/sysv/linux/Makefile @@ -13,6 +13,8 @@ sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h sys/mtio.h \ sys/debugreg.h sys/kd.h sys/soundcard.h sys/vt.h \ sys/quota.h +install-others += $(inst_includedir)/bits/syscall.h + # Generate the list of SYS_* macros for the system calls (__NR_* macros). $(objpfx)syscall-%.h $(objpfx)syscall-%.d: ../sysdeps/unix/sysv/linux/sys/syscall.h rm -f $(@:.h=.d) @@ -24,6 +26,13 @@ $(objpfx)syscall-%.h $(objpfx)syscall-%.d: ../sysdeps/unix/sysv/linux/sys/syscal sed -n >> $(@:.d=.h).new \ 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' mv -f $(@:.d=.h).new $(@:.d=.h) + +$(inst_includedir)/bits/syscall.h: $(objpfx)syscall-list.h + $(make-target-directory) + if test -r $@ && cmp -s $< $@; \ + then echo 'bits/syscall.h unchanged'; \ + else $(INSTALL_DATA) $< $@; fi + ifndef no_deps # Get the generated list of dependencies (probably /usr/include/asm/unistd.h). -include $(objpfx)syscall-list.d diff --git a/sysdeps/unix/sysv/linux/sys/syscall.h b/sysdeps/unix/sysv/linux/sys/syscall.h index d6b14fcf0a..7eca4f086a 100644 --- a/sysdeps/unix/sysv/linux/sys/syscall.h +++ b/sysdeps/unix/sysv/linux/sys/syscall.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1995, 1996 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -29,7 +29,7 @@ programs expect the traditional form `SYS_'. So in building libc we scan the kernel's list and produce with macros for all the `SYS_' names. */ -#include +# include #endif #endif diff --git a/time/strftime.c b/time/strftime.c index c53f20872c..891d301f5c 100644 --- a/time/strftime.c +++ b/time/strftime.c @@ -424,15 +424,13 @@ strftime (s, maxsize, format, tp) const char *f; zone = NULL; -#if !defined _LIBC && HAVE_TM_ZONE - /* XXX We have some problems here. First, the string pointed to by - tm_zone is dynamically allocated while loading the zone data. But - when another zone is loaded since the information in TP were - computed this would be a stale pointer. - The second problem is the POSIX test suite which assumes setting +#if HAVE_TM_ZONE + /* The POSIX test suite assumes that setting the environment variable TZ to a new value before calling strftime() will influence the result (the %Z format) even if the information in - TP is computed with a totally different time zone. --drepper@gnu */ + TP is computed with a totally different time zone. + This is bogus: though POSIX allows bad behavior like this, + POSIX does not require it. Do the right thing instead. */ zone = (const char *) tp->tm_zone; #endif #if HAVE_TZNAME diff --git a/time/tzfile.c b/time/tzfile.c index 2d0752c147..88e86e33b1 100644 --- a/time/tzfile.c +++ b/time/tzfile.c @@ -43,6 +43,8 @@ struct leap long int change; /* Seconds of correction to apply. */ }; +extern const char * __tzstring (const char *); /* Defined in tzset.c. */ + static struct ttinfo *find_transition (time_t timer); static void compute_tzname_max (size_t); @@ -267,9 +269,9 @@ __tzfile_read (const char *file) info = find_transition (0); for (i = 0; i < num_types && i < sizeof (__tzname) / sizeof (__tzname[0]); ++i) - __tzname[types[i].isdst] = &zone_names[types[i].idx]; + __tzname[types[i].isdst] = __tzstring (&zone_names[types[i].idx]); if (info->isdst < sizeof (__tzname) / sizeof (__tzname[0])) - __tzname[info->isdst] = &zone_names[info->idx]; + __tzname[info->isdst] = __tzstring (&zone_names[info->idx]); compute_tzname_max (chars); @@ -285,7 +287,8 @@ __tzfile_read (const char *file) from the TZDEFRULES file. */ void -__tzfile_default (char *std, char *dst, long int stdoff, long int dstoff) +__tzfile_default (const char *std, const char *dst, + long int stdoff, long int dstoff) { size_t stdlen, dstlen, i; long int rule_offset, rule_stdoff, rule_dstoff; @@ -372,8 +375,8 @@ __tzfile_default (char *std, char *dst, long int stdoff, long int dstoff) types[1].isdst = 1; /* Reset the zone names to point to the user's names. */ - __tzname[0] = &zone_names[0]; - __tzname[1] = &zone_names[stdlen]; + __tzname[0] = (char *) std; + __tzname[1] = (char *) dst; compute_tzname_max (stdlen + dstlen); } @@ -455,7 +458,7 @@ __tzfile_compute (time_t timer, long int *leap_correct, int *leap_hit) void compute_tzname_max (size_t chars) { - extern size_t __tzname_cur_max; /* Defined in __tzset.c. */ + extern size_t __tzname_cur_max; /* Defined in tzset.c. */ const char *p; diff --git a/time/tzset.c b/time/tzset.c index 9eceb73cf5..d1c2c091a5 100644 --- a/time/tzset.c +++ b/time/tzset.c @@ -31,8 +31,9 @@ extern const unsigned short int __mon_yday[2][13]; extern int __use_tzfile; extern void __tzfile_read __P ((const char *file)); -extern void __tzfile_default __P ((char *std, char *dst, +extern void __tzfile_default __P ((const char *std, const char *dst, long int stdoff, long int dstoff)); +extern const char * __tzstring __P ((const char *string)); extern int __tz_compute __P ((time_t timer, const struct tm *tm)); char *__tzname[2] = { (char *) "GMT", (char *) "GMT" }; @@ -53,7 +54,7 @@ weak_alias (__timezone, timezone) timezone given in the POSIX standard TZ envariable. */ typedef struct { - char *name; + const char *name; /* When to change. */ enum { J0, J1, M } type; /* Interpretation of: */ @@ -74,6 +75,68 @@ static tz_rule tz_rules[2]; static int compute_change __P ((tz_rule *rule, int year)); +/* Header for a list of buffers containing time zone strings. */ +struct tzstring_head +{ + struct tzstring_head *next; + /* The buffer itself immediately follows the header. + The buffer contains zero or more (possibly overlapping) strings. + The last string is followed by 2 '\0's instead of the usual 1. */ +}; + +/* First in a list of buffers containing time zone strings. + All the buffers but the last are read-only. */ +static struct +{ + struct tzstring_head head; + char data[48]; +} tzstring_list; + +/* Size of the last buffer in the list, not counting its header. */ +static size_t tzstring_last_buffer_size = sizeof tzstring_list.data; + +/* Allocate a time zone string with given contents. + The string will never be moved or deallocated. + However, its contents may be shared with other such strings. */ +const char * +__tzstring (string) + const char *string; +{ + struct tzstring_head *h = &tzstring_list.head; + size_t needed; + char *p; + + /* Look through time zone string list for a duplicate of this one. */ + for (h = &tzstring_list.head; ; h = h->next) + { + for (p = (char *) (h + 1); p[0] | p[1]; p++) + if (strcmp (p, string) == 0) + return p; + if (! h->next) + break; + } + + /* No duplicate was found. Copy to the end of this buffer if there's room; + otherwise, append a large-enough new buffer to the list and use it. */ + p++; + needed = strlen (string) + 2; /* Need 2 trailing '\0's after last string. */ + + if ((size_t) ((char *) (h + 1) + tzstring_last_buffer_size - p) < needed) + { + size_t buffer_size = tzstring_last_buffer_size; + while ((buffer_size *= 2) < needed) + continue; + if (! (h = h->next = malloc (sizeof *h + buffer_size))) + return NULL; + h->next = NULL; + tzstring_last_buffer_size = buffer_size; + p = (char *) (h + 1); + } + + strncpy (p, string, needed); + return p; +} + static char *old_tz = NULL; /* Interpret the TZ envariable. */ @@ -85,6 +148,7 @@ __tzset_internal (always) static int is_initialized = 0; register const char *tz; register size_t l; + char *tzbuf; unsigned short int hh, mm, ss; unsigned short int whichrule; @@ -112,12 +176,6 @@ __tzset_internal (always) /* No change, simply return. */ return; - /* Free old storage. */ - if (tz_rules[0].name != NULL && *tz_rules[0].name != '\0') - free ((void *) tz_rules[0].name); - if (tz_rules[1].name != NULL && *tz_rules[1].name != '\0' && - tz_rules[1].name != tz_rules[0].name) - free ((void *) tz_rules[1].name); tz_rules[0].name = NULL; tz_rules[1].name = NULL; @@ -135,16 +193,7 @@ __tzset_internal (always) if (tz == NULL || *tz == '\0') { - static const char UTC[] = "UTC"; - size_t len = sizeof UTC; - tz_rules[0].name = (char *) malloc (len); - if (tz_rules[0].name == NULL) - return; - tz_rules[1].name = (char *) malloc (len); - if (tz_rules[1].name == NULL) - return; - memcpy ((void *) tz_rules[0].name, UTC, len); - memcpy ((void *) tz_rules[1].name, UTC, len); + tz_rules[0].name = tz_rules[1].name = "UTC"; tz_rules[0].type = tz_rules[1].type = J0; tz_rules[0].m = tz_rules[0].n = tz_rules[0].d = 0; tz_rules[1].m = tz_rules[1].n = tz_rules[1].d = 0; @@ -157,11 +206,11 @@ __tzset_internal (always) /* Clear out old state and reset to unnamed UTC. */ memset (tz_rules, 0, sizeof tz_rules); - tz_rules[0].name = tz_rules[1].name = (char *) ""; + tz_rules[0].name = tz_rules[1].name = ""; /* Get the standard timezone name. */ - tz_rules[0].name = (char *) malloc (strlen (tz) + 1); - if (tz_rules[0].name == NULL) + tzbuf = malloc (strlen (tz) + 1); + if (! tzbuf) { /* Clear the old tz name so we will try again. */ free (old_tz); @@ -169,25 +218,23 @@ __tzset_internal (always) return; } - if (sscanf (tz, "%[^0-9,+-]", tz_rules[0].name) != 1 || - (l = strlen(tz_rules[0].name)) < 3) + if (sscanf (tz, "%[^0-9,+-]", tzbuf) != 1 || + (l = strlen (tzbuf)) < 3) { - free (tz_rules[0].name); - tz_rules[0].name = (char *) ""; + free (tzbuf); return; } - { - char *n = realloc ((void *) tz_rules[0].name, l + 1); - if (n != NULL) - tz_rules[0].name = n; - } + tz_rules[0].name = __tzstring (tzbuf); tz += l; /* Figure out the standard offset from UTC. */ if (*tz == '\0' || (*tz != '+' && *tz != '-' && !isdigit (*tz))) - return; + { + free (tzbuf); + return; + } if (*tz == '-' || *tz == '+') tz_rules[0].offset = *tz++ == '-' ? 1L : -1L; @@ -196,6 +243,7 @@ __tzset_internal (always) switch (sscanf (tz, "%hu:%hu:%hu", &hh, &mm, &ss)) { default: + free (tzbuf); return; case 1: mm = 0; @@ -218,23 +266,14 @@ __tzset_internal (always) /* Get the DST timezone name (if any). */ if (*tz != '\0') { - char *n = malloc (strlen (tz) + 1); - if (n != NULL) - { - tz_rules[1].name = n; - if (sscanf (tz, "%[^0-9,+-]", tz_rules[1].name) != 1 || - (l = strlen (tz_rules[1].name)) < 3) - { - free (n); - tz_rules[1].name = (char *) ""; - goto done_names; /* Punt on name, set up the offsets. */ - } - n = realloc ((void *) tz_rules[1].name, l + 1); - if (n != NULL) - tz_rules[1].name = n; + char *n = tzbuf + strlen (tzbuf) + 1; + if (sscanf (tz, "%[^0-9,+-]", n) != 1 || + (l = strlen (n)) < 3) + goto done_names; /* Punt on name, set up the offsets. */ - tz += l; - } + tz_rules[1].name = __tzstring (n); + + tz += l; /* Figure out the DST offset from GMT. */ if (*tz == '-' || *tz == '+') @@ -271,6 +310,7 @@ __tzset_internal (always) tz_rules[1].name = tz_rules[0].name; done_names: + free (tzbuf); if (*tz == '\0' || (tz[0] == ',' && tz[1] == '\0')) { -- cgit v1.2.3