diff -adurpN glibc-2.2/CONFORMANCE glibc-2.2.1/CONFORMANCE --- glibc-2.2/CONFORMANCE Tue Oct 17 14:53:53 2000 +++ glibc-2.2.1/CONFORMANCE Sat Jan 13 10:48:46 2001 @@ -148,9 +148,7 @@ builtins. For most of the headers required of freestanding implementations, glibc relies on GCC to provide correct versions. (At present, glibc provides , and GCC doesn't.) GCC's is missing -FLT_EVAL_METHOD and DECIMAL_DIG; glibc instead provides them in -, which is not what the standard specifies. GCC's -is broken: GCC lacks support for the _Bool type. +FLT_EVAL_METHOD and DECIMAL_DIG. Implementing MATH_ERRNO, MATH_ERREXCEPT and math_errhandling in needs compiler support: see @@ -165,7 +163,7 @@ Issues with headers There are various technical issues with the definitions contained in glibc's headers, listed below. The list below assumes current CVS GCC -as of 2000-10-08, and relates to i686-linux; older GCC may lead to +as of 2001-01-10, and relates to i686-linux; older GCC may lead to more problems in the headers. Note that the _t suffix is reserved by POSIX, but not by pure ISO C. @@ -181,7 +179,7 @@ than ISO C permits. should not declare wchar_t. - should not declare or use wchar_t, wint_t or off_t. + should not declare or use wchar_t or wint_t. does not support AMD1; to support it, the functions fwprintf, fwscanf, wprintf, wscanf, swprintf, swscanf, vfwprintf, diff -adurpN glibc-2.2/ChangeLog glibc-2.2.1/ChangeLog --- glibc-2.2/ChangeLog Thu Nov 9 17:19:41 2000 +++ glibc-2.2.1/ChangeLog Sat Jan 13 10:48:46 2001 @@ -1,13405 +1,2439 @@ -2000-11-09 Ulrich Drepper - - * version.h (VERSION): Bump to 2.2. - (RELEASE): Set to stable. - - * posix/Makefile (tst-dir-ARGS): Fix problem with compiling in - source directory. - (tst-chmod-ARGS): Likewise. - -2000-11-09 H.J. Lu - - * io/Versions (GLIBC_2.2): Add __open64. - -2000-11-09 Jakub Jelinek - - * locale/C-time.c (_nl_C_LC_TIME): Fix value for _NL_TIME_WEEK_1STWEEK. - -2000-11-09 Jakub Jelinek - - * locale/programs/ld-paper.c (paper_output): Fix offset into width - field. - -2000-10-27 Bruno Haible - - * locale/programs/charmap.c (charmap_read): Verify ASCII - compatibility of charmap. - -2000-11-08 Ulrich Drepper - - * catgets/gencat.c (main): Don't use exit() to avoid warnings with - broken compilers. - - * include/features.h (__STDC_ISO_10646__): Correct value to be - 200009L. Patch by Markus Kuhn . - -2000-11-08 H.J. Lu - - * pwd/Versions (GLIBC_2.1.2): Add getpwnam_r. - -2000-11-08 Jakub Jelinek - - * string/bits/string2.h: Check if _USE_STRING_ARCH_ macros are - defined, not _HAVE_STRING_ARCH_. - * sysdeps/i386/bits/string.h (_USE_STRING_ARCH_memset, - _USE_STRING_ARCH_strchr): Define. - * sysdeps/i386/i486/bits/string.h (_USE_STRING_ARCH_memset, - _USE_STRING_ARCH_strchr): Define. - * sysdeps/sparc/bits/string.h: New file. - -2000-11-08 Bruno Haible - - * locale/C-translit.h.in: Tweak result. - * locale/C-translit.h: Regenerated. - -2000-11-08 Ulrich Drepper - - * posix/unistd.h: Add attribute((const)) to sysconf prototype. - - * iconvdata/euc-kr.c (euckr_from_ucs4): Map 0x20a9 to \xa3dc. - (BODY from direction): Remove special handling of \x5c. - * iconvdata/EUC-KR.irreversible: Adjust for this change. - * iconvdata/testdata/EUC-KR..UTF8: Likewise. - Reported by Jungshik Shin . - -2000-11-07 Kazumoto Kojima - - * sysdeps/sh/sh3/setjmp.S (__sigsetjmp): Skip FPU fields. - -2000-11-06 Ulrich Drepper - - * iconvdata/big5.c: Regenerated after BIG5 charmap change. - Patch by Tung-Han Hsieh . - - * sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Fix typo in - comparison with new cache magic bytes. - Patch by Denis Zaitsev . - -2000-11-03 Bruno Haible - - * locale/C-translit.h.in: Update from translit_neutral. - * locale/C-translit.h: Regenerated. - * intl/tst-translit.c: Update. - -2000-11-04 Mark Kettenis - - * sysdeps/mach/hurd/Dist: Remove clk_tck.c. - - * sysdeps/mach/hurd/Versions [libc] (GLIBC_2.1.1): Remove - __libc_clk_tck. - * sysdeps/mach/hurd/Makefile [$(subdir)==posix] (sysdep_routines): - Remove clk_tck. - * sysdeps/mach/hurd/clk_tck.c: Removed. - * sysdeps/mach/hurd/getclktck.c: New file. - * sysdeps/mach/hurd/setitimer.c (quantize_timeval): Use - __getclktck instead of __libc_clk_tck. - * sysdeps/mach/hurd/bits/time.h: Use __sysconf for CLK_TCK instead - of __libc_clk_tck. - * sysdeps/mach/hurd/i386/bits/time.h: Likewise. - -2000-11-03 Ulrich Drepper - - * posix/Versions: Export __sysconf. - -2000-11-02 Ulrich Drepper - - * version.h (VERSION): Bump to 2.1.97. - - * iconvdata/Makefile (distribute): Add viscii.c. - - * elf/Makefile (distribute): Add tst-pathopt.sh. - - * sysdeps/i386/i486/bits/string.h (strcmp): Cast arguments to - __strcmp_cc, __strcmp_cg, and __strcmp_gc to unsigned char *. - (__strcmp_cc, __strcmp_cg, __strcmp_gc): Remove casts of values here. - Reported by Denis Zaitsev . - - * iconvdata/utf-16.c (PREPARE_LOOP): Correct typo preventing BOM from - being written. - - * manual/socket.texi (Local Namespace Concepts): Don't mention what - permissions are necessary to connect to a socket. - Reported by Peter Eisentraut . - - * sysdeps/generic/backtracesyms.c (__backtrace_symbols): Fix - computation of total for 64-bit machines. - Patch by Byron Stanoszek . - - * manual/arith.texi (Rounding): Correct description of fesetround - return value. Patch by Conrado Badenas . - -2000-10-30 Maciej W. Rozycki - - * sysdeps/mips/dl-machine.h (elf_machine_rel): Add the symbol's - value plus the run-time displacement to the relocation for non-GOT - symbols. Set the relocation to the GOT entry for GOT symbols. - -2000-11-02 Ulrich Drepper - - * sysdeps/unix/sysv/linux/s390/bits/time.h: Removed. - -2000-11-01 Ulrich Drepper - - * iconvdata/TESTS: Add entries for IBM856, IBM930, IBM933, IBM935, - IBM937, IBM939, and IBM1046. - * iconvdata/testdata/IBM1046: New file. - * iconvdata/testdata/IBM930..UTF8: New file. - * iconvdata/testdata/IBM1046..UTF8: New file. - * iconvdata/testdata/IBM933: New file. - * iconvdata/testdata/IBM935: New file. - * iconvdata/testdata/IBM937: New file. - * iconvdata/testdata/IBM856..UTF8: New file. - * iconvdata/testdata/IBM939: New file. - * iconvdata/testdata/IBM933..UTF8: New file. - * iconvdata/testdata/IBM935..UTF8: New file. - * iconvdata/testdata/IBM930: New file. - * iconvdata/testdata/IBM856: New file. - * iconvdata/testdata/IBM937..UTF8: New file. - * iconvdata/testdata/IBM939..UTF8: New file. - Contributed by Masahide Washizawa . - -2000-11-01 Martin Buchholz - - * manual/memory.texi (Hooks for Malloc): Fix `caller' arg docs to - agree with implementation. - -2000-11-01 Ulrich Drepper - - * sysdeps/unix/sysv/linux/bits/time.h (CLK_TCK): Cast sysconf result - to __clock_t. - * sysdeps/unix/sysv/linux/alpha/bits/time.h: Likewise. - * sysdeps/unix/sysv/linux/i386/bits/time.h: Likewise. - * sysdeps/unix/sysv/linux/ia64/bits/time.h: Likewise. - * sysdeps/unix/sysv/linux/s390/bits/time.h: Likewise. - - * sysdeps/unix/sysv/linux/bits/socket.h (CMSG_ALIGN): Cast result - of unary ~ to size_t. - - * stdlib/strtod.c: Make gcc shut up about SWAP use. - - * sysdeps/i386/fpu/bits/mathinline.h: Add support for builtin - unordered compare functions to gcc 2.97 and up. - - * string/bits/string2.h: Disable strstr optimizations for newer - gcc versions. Patch by Joseph S. Myers . - - * configure.in (with_cvs): Test for pserver access. - -2000-10-31 Ulrich Drepper - - * elf/Versions [ld] (GLIBC_2.2): Export _dl_clktck and _dl_pagesize. - * elf/dl-load.c: Define _dl_clktck. - * elf/elf.h: Define AT_CLKTCK. - * include/time.h: Declare __getclktck. - * misc/Makefile (routines): Add getclktck. - * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Handle AT_CLKTCK. - (_dl_show_auxv): Show AT_CLKTCK value. - * sysdeps/generic/getclktck.c: New file. - * sysdeps/unix/sysv/linux/getclktck.c: New file. - * sysdeps/unix/sysv/linux/alpha/getclktck.c: New file. - * sysdeps/unix/sysv/linux/ia64/getclktck.c: New file. - * sysdeps/posix/sysconf.c: Use __getclktck to handle _SC_CLK_TCK. - * sysdeps/unix/sysv/linux/getpagesize.c: New file. - * sysdeps/unix/sysv/linux/bits/time.h: Use __sysconf to for CLK_TCK. - * sysdeps/unix/sysv/linux/alpha/bits/time.h: Likewise. - * sysdeps/unix/sysv/linux/i386/bits/time.h: Likewise. - * sysdeps/unix/sysv/linux/ia64/bits/time.h: Likewise. - * sysdeps/unix/sysv/linux/s390/bits/time.h: Likewise. - - * sunrpc/clnt_gen.c (clnt_create): Don't set timeout with - clnt_control for any protocol. This would make it impossible for - the user to provide one in clnt_call(). - Reported by Hitoshi Guutara Maruyama . - * sunrpc/clnt_tcp.c (clnt_call): Don't use timeout in tests with zero, - use ct->ct_wait. - * sunrpc/clnt_unix.c (clnt_call): Likewise. - -2000-10-31 Jes Sorensen - - * sysdeps/ia64/fpu/s_isinfl.S: New file, - assembly based - implementation based on suggestion by Richard Henderson. - * sysdeps/ia64/fpu/s_isinfl.c: Removed. - -2000-10-30 Jes Sorensen - - * sysdeps/ia64/fpu/s_isnanl.S: New file - assembly based - implementation based on suggestion by Richard Henderson. - * sysdeps/ia64/fpu/s_isnanl.c: Removed. - -2000-10-31 Ulrich Drepper - - * locale/programs/locale.c (print_item): Fix one more problem with - string lists. Patch by Chen Xiangyang . - - * locale/categories.def: Add number of arguments to ctype-map-names - and ctype-class-names entries. Mark era as stringlist. - - * iconvdata/Makefile (modules): Add IBM856, IBM930, IBM933, IBM935, - IBM937, IBM939, and IBM1046. - (distribute): Add ibm856.c, ibm930.c, ibm933.c, ibm935.c, ibm937.c, - ibm939.c, ibm1046.c, ibm856.h, ibm930.h, ibm933.h, ibm935.h, ibm937.h, - ibm939.h, and ibm1046.h. - * iconvdata/gconv-modules: Add entries for IBM856, IBM930, IBM933, - IBM935, IBM937, IBM939, and IBM1046. - * iconvdata/ibm1046.c: New file. - * iconvdata/ibm1046.h: New file. - * iconvdata/ibm856.c: New file. - * iconvdata/ibm856.h: New file. - * iconvdata/ibm930.c: New file. - * iconvdata/ibm930.h: New file. - * iconvdata/ibm933.c: New file. - * iconvdata/ibm933.h: New file. - * iconvdata/ibm935.c: New file. - * iconvdata/ibm935.h: New file. - * iconvdata/ibm937.c: New file. - * iconvdata/ibm937.h: New file. - * iconvdata/ibm939.c: New file. - * iconvdata/ibm939.h: New file. - Patches by Masahide Washizawa . - -2000-10-30 Ulrich Drepper - - * locale/localeinfo.h (enum value_type): Add wstring, wstringarray, - and wstringlist. - * locale/categories.def: Mark wide char strings as wstring or - stringarray. - * locale/programs/locale.c (show_info): Handle wstring, wstringarray, - and wstringlist. Print keywords only if there is real output. - Reported by Chen Xiangyang . - - * sysdeps/sparc/fpu/bits/mathinline.h: Add __THROW where necessary. - Patch by Ben Collins . - - * stdio-common/Makefile (tests): Add tst-fmemopen. - * stdio-common/tst-fmemopen.c: New file. - Test case by Ben Collins . - - * libio/iofopncook.c (_IO_cookie_seek): Correct test for error. - - * libio/fmemopen.c (fmemopen_read): Return 0 at end of buffer. - (fmemopen_write): Set errno at end of buffer. - - * posix/runtests.c (main): Don't use exit() to avoid warning with - broken compilers. - - * string/bug-strncat1.c: Undefine __USE_STRING_INLINES before - defining it again to avoid warning. - * string/bug-strpbrk1.c: Likewise. - * string/bug-strspn1.c: Likewise. - -2000-10-29 Bruno Haible - - * locale/C-translit.h.in: Include more rules from translit_neutral. - Remove a few German and Danish specific rules. - * locale/gen-translit.pl: Avoid an error when printing a string - containing a '%' character. - * locale/C-translit.h: Regenerated. - * intl/translit.po: Choose different translations. - * intl/tst-translit.c: Update. - -2000-10-29 Bruno Haible - - * locale/programs/ld-ctype.c (translit_include_t): New type. - (locale_ctype_t): Remove translit_copy_locale, translit_copy_repertoire - fields, add translit_include field. - (ctype_read): After seeing "translit_start" in ignore_content mode, - skip the entire translit section, not only one line. Remove dead test - for tok_translit_end. Enqueue include statements into a list. - Signal error if tok_eof seen before tok_translit_end. - (translit_flatten): New function. - (allocate_arrays): Call translit_flatten. - -2000-10-30 Ulrich Drepper - - * locale/findlocale.c (free_mem): We can remove NODELETE marked - data, just not the C locale data. - - * intl/tst-gettext.c: Use setlocale() in addition to setting envvar. - * intl/tst-gettext.sh: Copy locale data if necessary. - * intl/Makefile (generated-dirs): Add localedir. - - * intl/dcigettext.c (guess_category_value): For libc always use - the setlocale() method. - - * intl/Makefile: Add rules to build, run and, distribute tst-gettext2. - * intl/tst-gettext2.c: New file. - * intl/tst-gettext2.sh: New file. - * intl/tstlang1.po: New file. - * intl/tstlang2.po: New file. - Patch by Andreas Jaeger . - -2000-10-26 GOTO Masanori - - * intl/locale.alias: Add ja_JP.ujis alias. - -2000-10-30 Ulrich Drepper - - * locale/findlocale.c (_nl_find_locale): Don't store normalized - name in *NAME. - -2000-10-29 Ben Collins - - * sysdeps/generic/lockf64.c: In the case of F_TEST, set l_type to - F_RDLCK explicitly. - * sysdeps/unix/sysv/linux/i386/lockf64.c: Likewise. - -2000-10-29 Ulrich Drepper - - * iconvdata/big5.c: Update. - Patch by Tung-Han Hsieh . - - * iconvdata/Makefile (distribute): Add BIG5.irreversible. - * iconvdata/BIG5.irreversible: New file. - -2000-10-29 Greg Louis - - * posix/regex.h (__restrict_arr): Move definition out of #ifndef block. - Required because egcs-2.91.66 (aka 1.1.2) defines __restrict, but - doesn't define __restrict_arr. - -2000-10-29 Ulrich Drepper - - * manual/search.texi: Correct description if VISIT values. - Patch by Ben Collins . - - * string/bits/string2.h (strspn): Evaluate first argument if - second is "". - (strpbrk): Likewise. - * sysdeps/i386/i486/bits/string.h: Likewise. - * string/Makefile (tests): Add bug-strspn1 and bug-strpbrk1. - * string/bug-strspn1.c: New file. - * string/bug-strpbrk1.c: New file. - Test cases by Joseph S. Myers . - - * string/bits/string2.h (strncat): Terminate string correctly. - * sysdeps/i386/i486/bits/string.h (strncat): Likewise. - * string/Makefile (tests): Add bug-strncat1. - * string/bug-strncat1.c: New file. - Test case by Joseph S. Myers . - -2000-10-27 Ben Collins - - * sysdeps/generic/lockf.c (lockf): Set l_type to F_RDLCK before - calling for F_GETLK. - -2000-10-29 Ulrich Drepper - - * elf/dl-load.c (open_path): Don't exit loop early if we didn't - use a directory at all. - - * elf/Makefile: Add rules to build and run tst-pathopt. - * elf/tst-pathopt.c: New file. - * elf/tst-pathopt.sh: New file. - * elf/pathoptobj.c: New file. - - * elf/elf.h (SHN_XINDEX): Define. - -2000-10-28 Ulrich Drepper - - * io/Makefile (tests): Add test-stat2. - (test-stat2-ARS): New variable. - * io/test-stat2.c: New file. - - * Makeconfig (ETAGS): Remove -T flag. - - * elf/dl-load.c (open_verify): Only try to load ET_DYN and ET_EXEC - objects. Reject all other types. - (_dl_map_object_from_fd): Optimize a bit. - -2000-10-27 Ulrich Drepper - - * stdio-common/Makefile (tests): Add tst-fseek. - * stdio-common/tst-fseek.c: New file. - - * posix/regex.c (gettext): Use correct translation domain for glibc. - - * argp/argp-parse.c: Use __dcgettext instead of dcgettext for glibc. - * argp/argp-help.c: Likewise. - * inet/getnameinfo.c (getnameinfo): Use __snprintf instead of snprintf. - * inet/rexec.c (rexec_af): Use __snprintf instead of snprintf. - * misc/regexp.c (__step): Use __regexec instead of regexec. - (__advance): Likewise. - * nss/digits_dots.c: Use __inet_aton instead of inet_aton. - * nscd/gethstbynm2_r.c (__inet_aton): Define as inet_aton since - the former is not exported. - * misc/daemon.c (daemon): Use __fork instead of fork. - - * stdlib/fmtmsg.c (fmtmsg): Change output format slightly to make - it look better and bring it closer to SysV behavior. - * stdlib/Makefile (distribute): Add tst-fmtmsg.sh. - (test-srcs): Add tst-fmtmsg. - (tests): Add $(objpfx)tst-fmtmsg.out. Add rule to generate it. - * stdlib/tst-fmtmsg.sh: New file. - * stdlib/tst-fmtmsg.c: New file. - - * iconvdata/Makefile (modules): Add VISCII. - (gen-8bit-modules): Add viscii. - * iconvdata/viscii.c: New file. - * iconvdata/gconv-modules: Add entries for VISCII. - * iconvdata/tst-tables.sh: Add VISCII. - -2000-10-27 Andreas Schwab - - * sysdeps/m68k/fpu/libm-test-ulps: Add some more ulps. - -2000-10-26 Ulrich Drepper - - * version.h (VERSION): Bump to 2.1.96. - - * inet/getipnodebyad.c: Removed. - * inet/getipnodebynm.c: Removed. - * inet/tst-ipnode.c: Removed. - * inet/freehostent.c: Removed. - - * sysdeps/unix/bsd/osf/=dirstream.h: Removed. - - * sysdeps/unix/sysv/linux/Dist: Add bits/initspin.h. - - * elf/Makefile (distribute): Add neededobj4.c. - - * iconvdata/Makefile (distribute): Add BIG5HKSCS.irreversible. - - * sysdeps/hppa/Dist: New file. - * sysdeps/unix/sysv/linux/hppa/Dist: New file. - - * posix/tst-chmod.c (do_test): Account for people running the - tests as root. - - * locale/langinfo.h (THOUSEP): Define this and don't duplicate - definition of THOUSANDS_SEP. - - * locale/C-monetary.c: Set mon_decimal to empty string. - Add missing entry _NL_MONETARY_CRNCYSTR. - * stdio-common/printf_fp.c: If MON_DECIAL_POINT is not provided use - DECIMAL_POINT information. - * locale/C-numeric.c: Set mon_grouping entry to empty string. - * locale/C-time.c: Add date_fmt entries. Remove two wrong entries. - Correct value for number of entries. - * locale/localeconv.c: Normalize result passed back in .grouping. - Fix assignment to .int_* entries. - - * locale/Makefile (tests): Add tst-C-locale. - * locale/tst-C-locale.c: New file. - - * locale/setlocale.c: Use LOCALEDIR and not LOCALE_PATH to locate - locale files. - * locale/newlocale.c: Likewise. - -2000-10-26 GOTO Masanori - - * locale/langinfo.h: Define _DATE_FMT and _NL_W_DATE_FMT. - * locale/categories.def: New support for date_fmt. - * locale/programs/ld-time.c: Likewise. - * locale/programs/locfile-kw.gperf: Likewise. - * locale/programs/locfile-kw.h: Likewise. - * locale/programs/locfile-token.h: Likewise. - -2000-10-26 Jakub Jelinek - - * sysdeps/ieee754/ldbl-128/e_hypotl.c: New. - - * math/libm-test.inc (cabs_test, cexp_test, csqrt_test, hypot_test): - Increase precision of constants. - * sysdeps/alpha/fpu/libm-test-ulps: Update. - * sysdeps/arm/libm-test-ulps: Update. - * sysdeps/i386/fpu/libm-test-ulps: Update. - * sysdeps/ia64/fpu/libm-test-ulps: Update. - * sysdeps/m68k/fpu/libm-test-ulps: Update. - * sysdeps/mips/fpu/libm-test-ulps: Update. - * sysdeps/powerpc/fpu/libm-test-ulps: Update. - * sysdeps/sparc/sparc32/fpu/libm-test-ulps: Update. - * sysdeps/sparc/sparc64/fpu/libm-test-ulps: Update. - * sysdeps/sh/sh4/fpu/libm-test-ulps: Update. - * sysdeps/s390/fpu/libm-test-ulps: Update. - -2000-10-26 Ulrich Drepper - - * io/Makefile (tests): Add tst-fcntl. - * io/tst-fcntl.c: New file. - - * posix/Makefile (tests): Add tst-chmod. - (tst-chmod-ARGS): Define. - * posix/tst-chmod.c: New file. - - * test-skeleton.c: Before calling user-defined function remove - parameters from argument list. - * posix/tst-exec.c: Adjust to this change. - * posix/tst-spawn.c: Likewise. - - * sysdeps/unix/opendir.c (__opendir): Optimize a bit. Add - __builtin_expect. - -2000-10-25 Ulrich Drepper - - * intl/Makefile (tests): Add tst-ngettext. - * intl/tst-ngettext.c: New file. - -2000-10-25 Bruno Haible - - * manual/charset.texi: Fix spelling of __GCONV_FULL_OUTPUT. - * manual/message.texi (Translation with gettext): Remove paragraph - about macros contained in libintl.h. - (bind_textdomain_codeset): Describe codeset argument. - (Using gettextized software): Add setlocale call to sample code. - -2000-10-26 Kazumoto Kojima - Yutaka Niibe - - * sysdeps/sh/dl-machine.h (elf_machine_rela): Handle in place - relocation which is generated by new ld. - * sysdeps/sh/elf/initfini.c (_init): Preseted __fpscr_values. - (_fini): Delete an obsolete register prefix. - * sysdeps/unix/sysv/linux/sh/Versions: Add __xstat64, __fxstat64, - __lxstat64, alphasort64, glob64, readdir64, readdir64_r, scandir64 - and versionsort64 as the 2.2-versioned symbols. - * sysdeps/unix/sysv/linux/sh/bits/fcntl.h: New file. - * sysdeps/unix/sysv/linux/sh/brk.c: Changes for the new system call - calling convention of the kernel. - * sysdeps/unix/sysv/linux/sh/pipe.S: Likewise. - * sysdeps/unix/sysv/linux/sh/socket.S: Likewise. - * sysdeps/unix/sysv/linux/sh/clone.S: Likewise. - * sysdeps/unix/sysv/linux/sh/vfork.S: Likewise. - * sysdeps/unix/sysv/linux/sh/sysdep.h: Likewise. - * sysdeps/unix/sysv/linux/sh/fcntl.c: New file. - * sysdeps/unix/sysv/linux/sh/lockf64.c: New file. - * sysdeps/unix/sysv/linux/sh/sys/user.h: Include the kernel header - file and delete the definitions of struct user and user_fp. - * sysdeps/unix/sysv/linux/sh/syscall.S: New file. - * sysdeps/unix/sysv/linux/sh/syscalls.list: Remove entries for - s_ioctl, s_ipc, s_llseek, s_chown, s_fchown, s_lchown, s_execve, - rt_sigaction, rt_sigpending, rt_sigprocmask, rt_sigqueueinfo, - rt_sigsuspend, rt_sigtimedwait, s_getcwd, s_getdents, s_getgroups, - s_getpriority, s_getegid, s_geteuid, s_getuid, getresgid, getresuid, - s_getrlimit, s_poll, s_pread64, s_ptrace, s_pwrite64, s_reboot, - s_setrlimit, s_sigaction, s_sigpending, s_sigprocmask, s_sigsuspend, - s_setfsgid, s_setfsuid, s_setgid, s_setgroups, s_setregid, - s_setresgid, s_setresuid, s_setreuid, s_setuid, s_sysctl, - s_ugetrlimit, s_ustat, sys_fstat, sys_lstat, sys_mknod, sys_readv, - sys_stat, sys_writev and syscall. - -2000-10-25 Ulrich Drepper - - * io/test-lfs.c (do_prepare): Rewrite so it doesn't fail on systems - without LFS support. - - * sysdeps/ieee754/dbl-64/e_jn.c: Use __ieee754_sqrt instead of __sqrt. - * sysdeps/ieee754/dbl-64/e_j1.c: Likewise. - * sysdeps/ieee754/dbl-64/e_j0.c: Likewise. - * sysdeps/ieee754/flt-32/e_j1f.c: Likewise. - * sysdeps/ieee754/flt-32/e_j0f.c: Likewise. - -2000-10-25 David Mosberger - - * sysdeps/unix/sysv/linux/ia64/profil-counter.h: Multiply slot - number by four to use bins of width 4 to get accurate - instruction-level profiling. - -2000-10-25 Andreas Jaeger - - * sysdeps/generic/dl-cache.h (CACHEMAGIC_VERSION_NEW): Correct string. - -2000-10-25 Jakub Jelinek - - * sysdeps/unix/sysv/linux/i386/fcntl.c (__libc_fcntl): When - converting struct flock64 to struct flock and back, use fcntl commands - which work on struct flock. - -2000-10-25 Jakub Jelinek - - * math/test-misc.c (main): Only check modfl if NO_LONG_DOUBLE is not - defined. - * sysdeps/sparc/sparc32/fpu/libm-test-ulps: Update. - * sysdeps/sparc/sparc64/fpu/libm-test-ulps: Update. - -2000-10-25 Ulrich Drepper - - * sysdeps/arm/libm-test-ulps: Updated. - - * sysdeps/generic/dl-cache.h (CACHEMAGIC_VERSION_NEW): New value. - -2000-10-25 Andreas Jaeger - - * elf/dl-load.c (_dl_map_object_from_fd): Remove unused variable. - (_dl_map_object): Likewise. - -2000-10-24 Paul Eggert - - * time/strftime.c (my_strftime macro) - [!defined _LIBC && HAVE_TZNAME && HAVE_TZSET]: - When redefining, do it without args, so that it works even if - emacs is defined and an extra argument is passed to my_stftime. - (my_strftime function): When evaluating a subformat, pass - ut_argument as well. - -2000-10-24 Andreas Schwab - - * sysdeps/unix/sysv/linux/ia64/Versions: Add pciconfig_read and - pciconfig_write. - -2000-10-25 Ulrich Drepper - - * sysdeps/generic/dl-cache.c (_dl_cache_verify_ptr): Correct test - for files with new cache format. - (_dl_load_cache_lookup): Add variable cache_data_size for size of the - data. Correctly report error if neither old not new signature is - found. Little optimizations. - Mostly based on a patch by Denis Zaitsev . - - * elf/dl-close.c (_dl_close): Optimize a bit by optimizing out the - nsearchlist variable. - -2000-10-24 Ulrich Drepper - - * elf/dl-lookup.c (add_dependency): Fix test to check whether - dependency already exists. - * elf/Makefile: Add testobj1 and testobj2 as dependencies of testobj6. - * elf/loadtest.c (main): Add test at the end that everything is - unloaded. - - * elf/dl-open.c (dl_open_worker): Fix typo in comment. - - * elf/elf.h: Add even more IA-64 relocations. - -2000-10-24 Geoffrey Keating - - * io/test-lfs.c (do_prepare): Call setrlimit64, in case the user - has a limit set---for instance, a limit of 2^31 bytes, which can't - easily be reset by non-LFS-aware shells. - - * sysdeps/unix/sysv/linux/powerpc/mmap64.c: Define PAGE_SHIFT - explicitly rather than getting it from . - -2000-10-24 Ulrich Drepper - - * elf/dl-close.c (_dl_close): Handle relocation dependencies of - the dependencies of the object currently unloaded. - - * elf/dl-close.c (_dl_close): Don't free memory for global scope - list immediately when empty. Move code to... - (free_mem): ...here. Called as part of __libc_subfreeres list. - - * elf/dl-deps.c (_dl_map_object_deps): Put l_initfini array before - r_list array in allocated memory. - * elf/dl-close.c (_dl_close): Optimize access to l_initfini list - and remove use of r_list. - - * elf/dl-close.c (_dl_close): Use correct list (l_initfini) when - computing new opencounts. - * elf/Makefile: Add rules to build and run neededtest3. - * neededtest3.c: New file. - * neededobj4.c: New file. - - * elf/neededtest.c (main): Correct tests for failing dlopen. - -2000-10-24 Andreas Jaeger - - * elf/dl-lookup.c (add_dependency): Remove unused variable j. - -2000-10-24 Ulrich Drepper - - * malloc/obstack.c (_obstack_newchunk): Correctly align first returned - block. - * malloc/tst-obstack.c: New file. - Patch and test case by Alexandre Duret-Lutz . - * malloc/Makefile (tests): Add tst-obstack. - - Complete revamp of the reference counter handling. - * include/link.h (struct link_map): Add l_idx field. - * elf/dl-close.c: Handle decrementing of reference counters more - correctly. If necessary decrement reference counters of dependencies - of dependencies. - * elf/dl-lookup.c (add_dependency): Only increment reference counter - of the object itself and not also its dependencies. - * elf/dl-open.c: Increment reference counters here. - * elf/dl-deps.c: Remove reference counter handling here. - * elf/dl-load.c: Likewise. - * elf/rtld.c: Adjust for _dl_map_deps not handling reference counters. - - * elf/loadtest.c: Print loaded objects at the beginning. - -2000-10-24 Andreas Jaeger - - * sysdeps/mips/dl-machine.h: Partly revert patch from 2000-10-18. - -2000-10-23 Ulrich Drepper - - * include/link.h (struct link_map): New bit field l_faked. - * elf/dl-deps.c: Use l_faked field in struct link_map instead of - the magic l_opencount==0. - * elf/dl-load.c: Likewise. - * elf/dl-version.c: Likewise. - * elf/rtld.c: Likewise. - - * elf/dl-close.c (_dl_close): Add a few more __builtin_expect. - -2000-10-23 Jim Meyering - - Allow this code to be used outside of glibc. - * sysdeps/generic/memrchr.c: Undef __memrchr, too. - [!weak_alias]: Define __memrchr to memrchr. - Guard weak_alias use with `#ifdef weak_alias'. - -2000-10-23 Ulrich Drepper - - * elf/unload.c: Generate more debugging output. - - * elf/neededtest.c: Make it more complicated. - * elf/neededtest2.c: New file. - * elf/Makefile: Add rules to build and run neededtest2. - - * elf/dl-sym.c (_dl_sym): Use exact check for caller PC in range - of DSO address space. - (_dl_vsym): Likewise. - - * elf/dl-sym.c (_dl_sym): For RTLD_DEFAULT, search in objects - global scope if we can determine it. - -2000-10-23 Andreas Schwab - - * sysdeps/unix/sysv/linux/ia64/bits/resource.h (RLIMIT_LOCKS): Added. - (RLIMIT_NLIMITS): Sync with kernel definition. - (PRIO_PROCESS, PRIO_PGRP, PRIO_USER): Also define as macros. - -2000-10-23 Andreas Schwab - - * sysdeps/m68k/fpu/libm-test-ulps: Updated. - -2000-10-23 Ulrich Drepper - - * elf/elf.h (R_IA64_GPREL32MSB, R_IA64_GPREL32LSB): New definitions. - -2000-10-22 Bruno Haible - - * iconvdata/big5hkscs.c (big5hkscs_to_ucs): Add irreversible mappings - for 0x8BF8, 0xA27E..0xA2A7. - * iconvdata/BIG5HKSCS.irreversible: New file. - -2000-10-23 Jakub Jelinek - - * timezone/zdump.c (main): setlocale LC_CTYPE as well as LC_MESSAGES. - * timezone/zic.c (main): Likewise. - -2000-10-23 Thorsten Kukuk - - * nscd/connections.c (invalidate_cache): Don't invalidate a cache - if it is not enabled. - -2000-10-23 Andreas Jaeger - - * sysdeps/s390/fpu/libm-test-ulps: New ulps. - - * sysdeps/unix/sysv/linux/mips/syscalls.list: Add fcntl64. - Patch by Ralf Baechle . - -2000-10-21 Ulrich Drepper - - * elf/dl-load.c (_dl_map_object_from_fd): Split out ELF file - verification in open_verify. - (open_verify): New function. Called instead of open. Ignores valid - files for other architectures. - (open_path): Call open_verify instead of open. - (_dl_map_object): Likewise. - Somewhat based on a patch by Don Dugger . - - * io/pwd.c (main): The output was missing a newline. - - * posix/fnmatch_loop.c: Make FNM_LEADING_DIR behave as GNU tar - expects it. Patch by Colin Watson . - * posix/tst-fnmatch.input: Add test cases for FNM_LEADING_DIR. - - * elf/dl-open.c (add_to_global): New function. Split out from - dl_open_worker. - (dl_open_worker): Call add_to_global not only for new objects, also for - previously loaded objects when (mode & RTLD_GLOBAL) and the object - was not yet in the global scope. - * elf/Makefile: Add rules to build and run lateglobal. - * elf/lateglobal.c: New file. - * elf/ltglobmod1.c: New file. - * elf/ltglobmod2.c: New file. - -2000-10-20 Ulrich Drepper - - * include/link.h (struct link_map): Add l_soname_added bitfield. - * elf/dl-load.c (_dl_map_object): Remember when we added the - SONAME to the l_libname list and don't try it again. - - * elf/dl-close.c: Decrement opencount for all dependencies which can - be removed even if the object is not yet unloaded. - * elf/dl-deps.c (_dl_map_object_deps): If dependency is already in - the list decrement opencount of all dependencies. - * elf/dl-load.c (_dl_map_object_from_fd): Increment object of object - and all dependencies. - (_dl_map_object): Likewise. - * elf/dl-lookup.c (add_dependency): Likewise. - - * elf/loadtest.c: Add debug when with more output. - - * elf/Makefile: Add rules to build and run unload2. - * elf/unload2.c: New file. - * elf/unload2mod.c: New file. - * elf/unload2dep.c: New file. - - * intl/libintl.h (ngettext macro): Add missing parameter. - (dngettext macro): Likewise. - -2000-10-19 H.J. Lu - - * elf/Makefile (distribute): Add neededtest.c, neededobj1.c, - neededobj2.c and neededobj3.c. - (tests): Add neededtest. - (modules-names): Add neededobj1, neededobj2 and neededobj3. - ($(objpfx)neededobj1.so): New target. - ($(objpfx)neededobj2.so): Likewise. - ($(objpfx)neededobj3.so): Likewise. - ($(objpfx)neededtest): Likewise. - ($(objpfx)neededtest.out): Likewise. - * elf/neededtest.c: New. Based on the bug report from - Allen Bauer . - * elf/neededobj1.c: Likewise. - * elf/neededobj2.c: Likewise. - * elf/neededobj3.c: Likewise. - -2000-10-20 Ulrich Drepper - - * elf/dl-load.c (_dl_map_object_from_fd): Pass pointer to ELF header - to elf_machine_matches_host. - * sysdeps/alpha/dl-machine.h (elf_machine_matches_host): Parameter - is now pointer to ELF header. - * sysdeps/arm/dl-machine.h: Likewise. - * sysdeps/generic/dl-machine.h: Likewise. - * sysdeps/hppa/dl-machine.h: Likewise. - * sysdeps/i386/dl-machine.h: Likewise. - * sysdeps/ia64/dl-machine.h: Likewise. - * sysdeps/m68k/dl-machine.h: Likewise. - * sysdeps/mips/dl-machine.h: Likewise. - * sysdeps/mips/mips64/dl-machine.h: Likewise. - * sysdeps/powerpc/dl-machine.h: Likewise. - * sysdeps/s390/dl-machine.h: Likewise. - * sysdeps/sh/dl-machine.h: Likewise. - * sysdeps/sparc/sparc32/dl-machine.h: Likewise. - * sysdeps/sparc/sparc64/dl-machine.h: Likewise. - Patch by Martin Schwidefsksy . - -2000-10-20 Jakub Jelinek - - * include/limits.h: Include bits/wordsize.h, use #if __WORDSIZE == 64 - check instead of #ifdef __alpha__. - * include/bits/xopen_lim.h (WORD_BIT, LONG_BIT): Don't count on - INT_MAX, __INT_MAX__, LONG_MAX or __LONG_MAX__ being defined when - this is included. - -2000-10-20 Ulrich Drepper - - * posix/wordexp-tst.sh (testout): Place output file in build - directory. Patch by Joseph S. Myers . - - * sysdeps/powerpc/fpu/bits/mathinline.h: Pretty print. - -2000-10-19 Ulrich Drepper - - * hesiod/nss_hesiod/hesiod-grp.c (_nss_hesiod_initgroups_dyn): - Correctly handle numeric group member information. - Patch by tomasw@cs.huji.ac.il. - - * hesiod/nss_hesiod/hesiod-grp.c (_nss_hesiod_initgroups_dyn): - Complete test for strtol overflow. - -2000-10-19 Jakub Jelinek - - * sysdeps/unix/sysv/linux/alpha/semctl.c (__new_semctl): Pass union - semun as 4th argument to semctl syscall, not address of it. - -2000-10-18 Franz Sirl - - * sysdeps/unix/sysv/linux/powerpc/syscalls.list: Add fcntl64() syscall. - -2000-10-17 Andreas Schwab - - * string/string.h: Remove declaration of __strcasecmp and __strcasestr. - * include/string.h: Declare them here. - -2000-10-18 Ralf Baechle - - * sysdeps/unix/sysv/linux/mips/sys/syscall.h: Include . - -2000-10-19 Geoffrey Keating - - * sysdeps/powerpc/fpu/bits/mathinline.h: Add versions - of the unordered comparison functions that use the GCC builtins. - - * sysdeps/powerpc/dl-machine.c (dl_reloc_overflow): New function. - (__process_machine_rela): Print the address of an overflowing - reloc. - -2000-10-18 Ulrich Drepper - - * sysdeps/unix/sysv/linux/shm_open.c: Correct default mount point - in comments. - (freeit): Remove unnecessary test. - -2000-10-18 Andreas Jaeger - - * sysdeps/mips/dl-machine.h (ELF_MIPS_GNU_GOT1_OK): New. - (ELF_MACHINE_BEFORE_RTLD_RELOC): Handle newer linkers. - (elf_machine_runtime_link_map): Likewise. - (elf_machine_runtime_setup): Likewise. - Handle dynamic linker's local got entries. - Patches by Ralf Baechle . - -2000-10-09 Maciej W. Rozycki - - * sysdeps/mips/dl-machine.h (_dl_runtime_resolve): Define $sp as - the frame pointer. Allocate stack space for $a0 for - __dl_runtime_resolve(). Do not save $sp in $s0 as it's - callee-saved anyway. - -2000-10-17 Ulrich Drepper - - * sysdeps/powerpc/fpu/libm-test-ulps: Update for changes in - libm-test.inc. - -2000-10-17 Andreas Schwab - - * sysdeps/m68k/fpu/libm-test-ulps: Update for changes in - libm-test.inc. - -2000-10-17 Jakub Jelinek - - * sysdeps/ieee754/ldbl-128/printf_fphex.c (PRINT_FPHEX_LONG_DOUBLE): - Add missing backslash. - -2000-10-16 Ulrich Drepper - - * sysdeps/generic/dl-sysdep.c (DL_FIND_ARG_COMPONENTS): Little cleanup. - - * sysdeps/i386/fpu/libm-test-ulps: Update for changes in libm-test.inc. - -2000-10-16 Jakub Jelinek - - * math/libm-test.inc (M_LOG_SQRT_PIl, M_LOG_2_SQRT_PIl): Increase - precision. - (acos_test, asin_text, cexp_test, cos_test, cproj_test, exp10_test, - sin_test, sincos_test, sqrt_test): Likewise. Add L suffixes also - to parameters. - (acosh_test, asinh_test, atan2_test, atanh_test, atan_test, cabs_test, - cacosh_test, cacos_test, casinh_test, casin_test, catanh_test, - catan_test, cbrt_test, ccosh_test, ccos_test, clog10_test, cosh_test, - csinh_test, csin_test, csqrt_test, ctanh_test, ctan_test, erfc_test, - erf_test, exp2_test, expm1_test, exp_test, fmod_test, hypot_test, - j0_test, j1_test, jn_test, lgamma_test, llrint_test, llround_test, - log10_test, log1p_test, log2_test, log_test, lrint_test, lround_test, - nextafter_test, nexttoward_test, pow_test, round_test, scalb_test, - sinh_test, static void, tanh_test, tan_test, tgamma_test, y0_test, - y1_test, yn_test): Add L suffixes also to parameters. - * sysdeps/ieee754/ldbl-128/s_ceill.c (__ceill): Fix mask. - * sysdeps/ieee754/ldbl-128/s_floorl.c (__floorl): Likewise. - * soft-fp/op-2.h (_FP_FRAC_SRS_2): Fix computation of sticky bit. - -2000-10-16 Ulrich Drepper - - * timezone/Makefile: Define HAVE_GETTEXT for zdump.c, zic.c, - ialloc.c, and scheck.c. - * malloc/obstack.c: Always include for glibc. - * posix/getopt.c: Likewise. - Reported by Petr Vandrovec . - -2000-10-15 Pete Wyckoff - - * Rules: Define _LIBC during generation of bits/stdio_lim.d. - -2000-10-15 Pete Wyckoff - - * iconvdata/tst-tables.sh: Invoke other shell scripts through ${SHELL}. - * iconvdata/tst-table.sh: Likewise. - -2000-10-15 Ulrich Drepper - - * elf/dl-error.c (_dl_signal_error): Allocate memory for objname - as well. Reported by Alexander V. Lukyanov . - - * iconvdata/gconv-modules: Add aliases for Winblowz charsets. - Patch by Joseph S. Myers . - -2000-10-13 Andreas Schwab - - * elf/elf.h (R_IA64_PCREL60B): Add relocation. - -2000-10-15 Ulrich Drepper - - * sysdeps/unix/sysv/linux/hppa/brk.c: Cleanups. - * sysdeps/unix/sysv/linux/hppa/umount.c: Likewise. - * sysdeps/unix/sysv/linux/hppa/bits/sigaction.h: Likewise. - * sysdeps/unix/sysv/linux/hppa/bits/signum.h: Likewise. - * sysdeps/unix/sysv/linux/hppa/sys/ucontext.h: Likewise. - -2000-10-14 Ulrich Drepper - - * math/libm-test.inc (frexp_test): Add L suffix also to parameters. - (hypot_test): Likewise. - - * sysdeps/generic/printf_fphex.c: Compute width of decimal point - string correctly. Handle padding correctly. - - * sysdeps/ia64/fpu/printf_fphex.c: Use sizeof in _itowa parameters - correctly. - * sysdeps/ieee754/ldbl-128/printf_fphex.c: Likewise. - * sysdeps/ieee754/ldbl-96/printf_fphex.c: Likewise. - -2000-10-12 Alan Modra - - * FAQ.in: Add --start-group and --end-group. - -2000-10-12 Alan Modra - - * malloc/memusage.c: Conditionalize stack usage calculation on - stack direction. - -2000-10-12 Alan Modra - - * config.h.in: Add ASM_LINE_SEP. - * configure.in: Add test for comment and line separators. - * include/libc-symbols.h: Define and use ASM_LINE_SEP, and add tabs to - placate some hppa assemblers. - * sysdeps/hppa/sysdep.h: Likewise. - * sysdeps/gnu/siglist.c: Insert \n and \t into inline asm. - * sysdeps/unix/sysv/linux/errlist.c: Likewise. - -2000-10-12 David Huggins-Daines - - * sysdeps/unix/sysv/linux/Makefile: Include in - $(sysdep_headers). - * sysdeps/unix/sysv/linux/bits/initspin.h: Dummy version for - non-threaded platforms. - -2000-10-12 David Huggins-Daines - - * configure.in: Add definitions for hppa. - * elf/elf.h: Add PLABEL32 relocation for hppa ELF32, comments - for IPLT and EPLT relocations. - * shlib-versions: Version symbol definitions for hppa-linux. - * sysdeps/unix/sysv/linux/configure.in: Define $arch_minimum_kernel - for hppa. - -2000-10-12 David Huggins-Daines - - * sysdeps/hppa/Makefile: New file. - * sysdeps/hppa/Versions: New file. - - * sysdeps/hppa/setjmp.S: New file. - * sysdeps/hppa/__longjmp.S: New file. - * sysdeps/hppa/bits/setjmp.h: New file. - * sysdeps/hppa/frame.h: New file. - - * sysdeps/hppa/add_n.s: Don't use %r19 (linkage table pointer). - * sysdeps/hppa/sub_n.s: Likewise. - * sysdeps/hppa/lshift.s: Likewise. - * sysdeps/hppa/rshift.s: Likewise. - * sysdeps/hppa/udiv_qrnnd.s: Likewise. - * sysdeps/hppa/hppa1.1/addmul_1.s: Likewise. - * sysdeps/hppa/hppa1.1/submul_1.s: Likewise. - * sysdeps/hppa/hppa1.1/mul_1.s: Likewise. - * sysdeps/hppa/hppa1.1/udiv_qrnnd.s: Likewise. - - * sysdeps/hppa/dl-machine.h: New file. - * sysdeps/hppa/dl-fptr.c: New file (note that this is almost - identical to the IA-64 one). - * sysdeps/hppa/dl-lookupcfg.h: Likewise. - * sysdeps/hppa/dl-symaddr.c: Likewise. - - * sysdeps/hppa/elf/initfini.c: New file. - * sysdeps/hppa/elf/start.S: New file. - - * sysdeps/hppa/fpu/bits/fenv.h: New file. - * sysdeps/hppa/fpu/fclrexcpt.c: New file. - * sysdeps/hppa/fpu/fedisblxcpt.c: New file. - * sysdeps/hppa/fpu/feenablxcpt.c: New file. - * sysdeps/hppa/fpu/fegetenv.c: New file. - * sysdeps/hppa/fpu/fegetexcept.c: New file. - * sysdeps/hppa/fpu/fegetround.c: New file. - * sysdeps/hppa/fpu/feholdexcpt.c: New file. - * sysdeps/hppa/fpu/fesetenv.c: New file. - * sysdeps/hppa/fpu/fesetround.c: New file. - * sysdeps/hppa/fpu/feupdateenv.c: New file. - * sysdeps/hppa/fpu/fegetexcptflg.c: New file. - * sysdeps/hppa/fpu/fraiseexcpt.c: New file. - * sysdeps/hppa/fpu/fsetexcptflg.c: New file. - * sysdeps/hppa/fpu/ftestexcept.c: New file. - - * sysdeps/unix/sysv/linux/hppa/Makefile: New file. - * sysdeps/unix/sysv/linux/hppa/Versions: New file. - * sysdeps/unix/sysv/linux/hppa/syscalls.list: New file. - * sysdeps/unix/sysv/linux/hppa/sysdep.c: New file. - * sysdeps/unix/sysv/linux/hppa/sysdep.h: New file. - - - * sysdeps/unix/sysv/linux/hppa/bits/fcntl.h: New file. - * sysdeps/unix/sysv/linux/hppa/bits/ioctls.h: New file. - * sysdeps/unix/sysv/linux/hppa/bits/mman.h: New file. - * sysdeps/unix/sysv/linux/hppa/bits/sigaction.h: New file. - * sysdeps/unix/sysv/linux/hppa/bits/signum.h: New file. - * sysdeps/unix/sysv/linux/hppa/brk.c: New file. - * sysdeps/unix/sysv/linux/hppa/clone.S: New file. - * sysdeps/unix/sysv/linux/hppa/socket.S: New file. - * sysdeps/unix/sysv/linux/hppa/syscall.S: New file. - * sysdeps/unix/sysv/linux/hppa/setrlimit.c: New file. - * sysdeps/unix/sysv/linux/hppa/getrlimit.c: New file. - * sysdeps/unix/sysv/linux/hppa/getrlimit64.c: New file. - * sysdeps/unix/sysv/linux/hppa/kernel_sigaction.h: New file. - * sysdeps/unix/sysv/linux/hppa/kernel_stat.h: New file. - * sysdeps/unix/sysv/linux/hppa/mmap.c: New file. - * sysdeps/unix/sysv/linux/hppa/profil-counter.h: New file. - * sysdeps/unix/sysv/linux/hppa/procfs.h: New file. - * sysdeps/unix/sysv/linux/hppa/ucontext.h: New file. - * sysdeps/unix/sysv/linux/hppa/umount.c: New file. - -2000-10-12 Alan Modra - - * sysdeps/hppa/hppa1.1/Implies: New file. - * sysdeps/hppa/memusage.h: New file. - -2000-10-28 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/Versions: Export ioperm, iopl, inb, - inw, inl, _inb, _inw, _inl, outb, outw, outl, _outb, _outw, - _outl. Reported by Bill Nottingham. - -2000-04-06 Andreas Schwab - - * sysdeps/ia64/dl-machine.h (TRAMPOLINE_TEMPLATE): Save and - restore register r8 for functions that return a structure. - -2000-10-12 Jakub Jelinek - - * math/libm-test.inc (M_PI_6l, M_E2l, M_E3l, M_2_SQRT_PIl, - M_SQRT_PIl): Increase precision. - (cbrt_test): If cbrt is not implemented, don't test it. - Add L suffix to double constants in results which differ from their - L suffixed counterparts. - (exp10_test, fmod_test, frexp_test, hypot_test, sqrt_test): Likewise. - - * sysdeps/sparc/sparc64/fpu/libm-test-ulps: Update. - -2000-10-11 Jakub Jelinek - - * inet/rexec.c (rexec_af): Convert rport to host order before - passing it to snprintf. - -2000-10-14 Ulrich Drepper - - * sysdeps/gnu/netinet/tcp.h: Use u_intXX_t types instead of - uintXX_t since this is what defines and we include - this header. Reported by Bernhard Rosenkraenzer . - - * intl/localealias.c (read_alias_file): Update string pointers - in map[] if realloc() changed the values. - Patch by Jakub Jelinek . - - * manual/stdio.texi: Update printf extension documentation after - z became a valid modifier. - Patch by Joseph S. Myers . - - * timezone/africa: Update from tzcode2000g and tzdata2000g. - * timezone/asia: Likewise. - * timezone/australasia: Likewise. - * timezone/backward: Likewise. - * timezone/europe: Likewise. - * timezone/iso3166.tab: Likewise. - * timezone/northamerica: Likewise. - * timezone/southamerica: Likewise. - * timezone/zone.tab: Likewise. - -2000-10-14 Geoffrey Keating - - * sysdeps/unix/sysv/linux/powerpc/syscalls.list: Add fcntl() - syscall. - -2000-10-13 Michael Fedrowitz - - * sysdeps/unix/sysv/linux/m68k/alphasort64.c: New file. - * sysdeps/unix/sysv/linux/m68k/fcntl.c: New file. - * sysdeps/unix/sysv/linux/m68k/getdents64.c: New file. - * sysdeps/unix/sysv/linux/m68k/getrlimit.c: New file. - * sysdeps/unix/sysv/linux/m68k/getrlimit64.c: New file. - * sysdeps/unix/sysv/linux/m68k/glob64.c: New file. - * sysdeps/unix/sysv/linux/m68k/lockf64.c: New file. - * sysdeps/unix/sysv/linux/m68k/oldgetrlimit64.c: New file. - * sysdeps/unix/sysv/linux/m68k/readdir64.c: New file. - * sysdeps/unix/sysv/linux/m68k/readdir64_r.c: New file. - * sysdeps/unix/sysv/linux/m68k/scandir64.c: New file. - * sysdeps/unix/sysv/linux/m68k/setrlimit.c: New file. - * sysdeps/unix/sysv/linux/m68k/versionsort64.c: New file. - * sysdeps/unix/sysv/linux/m68k/Dist: Add oldgetrlimit64.c. - * sysdeps/unix/sysv/linux/m68k/Makefile: Add oldgetrlimit64. - * sysdeps/unix/sysv/linux/m68k/Versions: Export __xstat64, - __fxstat64, __lxstat64, alphasort64, glob64, getrlimit, setrlimit, - getrlimit64, readdir64, readdir64_r, scandir64, versionsort64 at - GLIBC_2.2. - * sysdeps/unix/sysv/linux/m68k/syscalls.list: Add oldgetrlimit, - oldsetrlimit for GLIBC_2.0. - - * sysdeps/m68k/dl-machine.h (_dl_start_user): Pass correct - arguments to _dl_init. - -2000-10-13 Geoffrey Keating - - * sysdeps/i386/fpu/libm-test-ulps: Update ULPs for my Pentium III - building with the default options. - -2000-10-11 Andreas Jaeger - - * sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Set cache. - Patch by Denis Zaitsev . - -2000-10-09 Jakub Jelinek - - * sysdeps/ieee754/ldbl-128/s_nexttoward.c (__nexttoward): If x == y, - return y not x. - * manual/arith.texi (nextafter): Document it. - * sysdeps/ieee754/ldbl-96/s_nexttoward.c: Fix a comment. - -2000-10-08 Ulrich Drepper - - * version.h (VERSION): Bump to 2.1.95. - - * configure.in: Remove warning message. - - * nscd/Makefile (distribute): Add nscd-types.h. - * elf/Makefile (distribute): Add gccframe.h. - * sysdeps/sparc/sparc32/Dist: Add ieee754.h. - * sysdeps/ia64/Dist: Add ieee754.h. - -2000-10-07 Ulrich Drepper - - * elf/elf.h: Add a few section-related symbols. - - * include/features.h (__STDC_ISO_10646__): Set to correct date. - Patch by Markus Kuhn . - -2000-10-06 Jes Sorensen - - * sysdeps/ia64/fpu/fraiseexcpt.c (feraiseexcept): Implement - overflow generation by adding DBL_MAX to DBL_MAX instead of - setting the bits manually in the fpsr and generating the exception - with kill() if necessary. - (feraiseexcept): Implement underflow by dividing DBL_MIN by - DBL_MIN - similar to the overflow change described above. - -2000-08-27 H.J. Lu - - * sysdeps/unix/sysv/linux/ia64/clone.S: Make it a dummy as clone - is not supported under Linux/ia64, use clone2. - -2000-10-06 Jakub Jelinek - - * malloc/malloc.h (__THROW): Define to nothing if not gcc. - * misc/sys/cdefs.h (__THROW): Likewise. - -2000-10-05 Jakub Jelinek - - * sysdeps/sparc/sparc64/fpu/libm-test-ulps: New file. - -2000-10-02 Jakub Jelinek - - * sunrpc/svc_udp.c (svcudp_recv): Set msg_controllen to all - remaining xp_pad space. - -2000-10-05 Jakub Jelinek - - * elf/dl-close.c (_dl_close): Check imap's l_flags_1 for - DF_1_NODELETE, not list[i]'s. - -2000-10-04 Ulrich Drepper - - * iconvdata/euc-kr.c (euckr_from_ucs4): Handle U20a9. - (BODY from direction): Map \x5c to U20a9. - * iconvdata/testdata/EUC-KR..UTF8: Adjust to this change. - * iconvdata/EUC-KR.irreversible: New file. - * iconvdata/Makefile (distribute): Add EUC-KR.irreversible. - - * argp/argp-parse.c (argp_default_argp): Set libc as message domain. - (argp_version_argp): Likewise. - -2000-10-04 Jakub Jelinek - - * stdio-common/vfscanf.c (_IO_vfscanf): For [ conversion do - input_error() if EOF is seen before processing. - * stdio-common/tstscanf.c (main): Add testcase. - -2000-10-04 Ulrich Drepper - - * argp/argp-help.c: Make sure we get the correct gettext and - dgettext definitions. - * argp/argp-parse.c: Likewise. - -2000-10-03 Ulrich Drepper - - * locale/programs/linereader.c (get_string): Also clear wide - string info if illegal_string. - -2000-10-03 Andreas Schwab - - * sysdeps/unix/sysv/linux/m68k/bits/stat.h: New file. - -2000-10-02 Jakub Jelinek - - * elf/nextmod1.c (failing_rtld_next_use): Ensure it is not tail call - optimized. - - * sysdeps/sparc/sparc32/fpu/libm-test-ulps: New file. - -2000-10-02 Ralf Baechle - - * sysdeps/unix/sysv/linux/mips/sys/tas.h: Add missing .mips0 at the - end of inline assembler code. - -2000-10-02 Ulrich Drepper - - * include/features.h [__USE_FILE_OFFSET && !__REDIRECT]: Define - __USE_LARGEFILE64 and __USE_LARGEFILE to 1 and not nothing. - -2000-10-02 Andreas Jaeger - - * sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Synch with Linux - 2.4.0-test9-pre8. - - * sysdeps/unix/sysv/linux/alpha/bits/resource.h: Add RLIMIT_LOCKS. - -2000-10-01 Ralf Baechle - - * sysdeps/mips/dl-machine.h (RTLD_START): Fix computation of envp - argument passed to _dl_init. - -2000-09-30 Bruno Haible - - * locale/programs/charmap-dir.h: New file. - * locale/programs/charmap-dir.c: New file. - * locale/programs/linereader.h (lr_create): New declaration. - * locale/programs/linereader.c (lr_create): New function, split out - from lr_open. - (lr_open): Tailcall lr_create. - * locale/programs/locale.c: Include "charmap-dir.h". Don't include - . - (xstrdup): New declaration. - (more_help): Use xstrdup instead of strdup. - (write_locales): Likewise. When encountering a symbolic link, call - stat. - (write_charmaps): Simplify using the charmap-dir.h functions. - Use xstrdup instead of strdup. - * locale/programs/charmap.c: Include "charmap-dir.h". Don't include - and . - (cmlr_open): New function. - (charmap_read): Use cmlr_open instead of lr_open. Simplify using the - charmap-dir.h functions. - * locale/Makefile (distribute): Add charmap-dir.h. - (lib-modules): Add charmap-dir. - (CFLAGS-charmap-dir.c): Set to -Wno-write-strings, because posix_spawn - wants a 'char **', not a 'const char **'. - * include/spawn.h: New file. - -2000-09-30 Bruno Haible - - * posix/spawn_faction_init.c: Include "spawn_int.h". - (__posix_spawn_file_actions_realloc): Fix second realloc argument. - -2000-09-30 Bruno Haible - - * locale/programs/config.h (DEFAULT_CHARMAP): Set to ANSI_X3.4-1968. - -2000-09-30 Bruno Haible - - * wcsmbs/wcwidth.h (__ctype32_wctype): Remove declaration. - (internal_wcwidth): Remove the tests for L'\0' and iswprint. - * locale/programs/ld-ctype.c (find_idx): If max == NULL, return - a pointer to the table entry, without extending the table. - (allocate_arrays): Set a width only for characters with 'print' - property. Set the width of L'\0' to 0. - * locale/C-ctype.c (_nl_C_LC_CTYPE_width): Use default entry 0xff - for unprintable characters. Set entry of NUL to 0. - -2000-09-30 Bruno Haible - - * locale/programs/charmap.c (charmap_read): Avoid redundant tests. - Don't forget to call closedir when the filename was found as a - code_set_name. - -2000-09-30 Bruno Haible - - * iconv/gconv.h (__gconv_trans_context_fct): Change first argument's - type to 'void *'. - -2000-09-30 Bruno Haible - - * locale/programs/ld-ctype.c (wctype_table_init): Initialize level1, - level2, and level3 as well. - (wctype_table_add): Remove a few unnecessary conditionals. - -2000-09-30 Ralf Baechle - - * wcsmbs/Versions [libc] (GLIBC_2.0): Add __mbrtowc. - -2000-09-30 H.J. Lu - - * sysdeps/ieee754/ldbl-96/s_ceill.c (__ceill): Handle overflow. - * sysdeps/ieee754/ldbl-96/s_floorl.c (__floorl): Likewise. - -2000-09-29 H.J. Lu - - * math/libm-test.inc (init_max_error): Clear all exceptions - before starting test. - (acosh_test): Test for existence of function. - (asinh_test): Likewise. - (atan2_test): Likewise. - (cabs_test): Likewise. - (cacos_test): Likewise. - (cacosh_test): Likewise. - (casin_test): Likewise. - (casinh_test): Likewise. - (catan_test): Likewise. - (catanh_test): Likewise. - (ccos_test): Likewise. - (ccosh_test): Likewise. - (cexp_test): Likewise. - (clog_test): Likewise. - (clog10_test): Likewise. - (cosh_test): Likewise. - (cpow_test): Likewise. - (csin_test): Likewise. - (csinh_test): Likewise. - (csqrt_test): Likewise. - (ctan_test): Likewise. - (ctanh_test): Likewise. - (fmod_test): Likewise. - (hypot_test): Likewise. - (remainder_test): Likewise. - (remquo_test): Likewise. - (sincos_test): Likewise. - (sinh_test): Likewise. - (tanh_test): Likewise. - -2000-09-29 H.J. Lu - - * sysdeps/ia64/ieee754.h: New file. - - * sysdeps/ia64/fpu/math_ldbl.h: New file. - -2000-09-30 Jakub Jelinek - - * elf/ldconfig.h (FLAG_X8664_LIB64): Define. - * sysdeps/unix/sysv/linux/i386/readelflib.c: New file. - -2000-09-30 Ulrich Drepper - - * manual/charset.texi: Correct notations, reference to C90 amd 1, - and some other details. - * manual/ctype.texi: Likewise. - Patches by Markus Kuhn . - -2000-09-30 Franz Sirl - - * sysdeps/ieee754/flt-32/s_frexpf.c: Make it aliasing safe. - -2000-09-29 Ulrich Drepper - - * elf/cache.c (save_cache): Initialize __unused field in new cache - as well to get reproducable results. - -2000-09-29 H.J. Lu - - * sysdeps/ia64/fpu/libm-test-ulps: Updated for long double. - -2000-09-29 H.J. Lu - - * sysdeps/ia64/bits/huge_val.h: New file. - -2000-09-29 Ulrich Drepper - - * elf/chroot_canon.c: Don't report a failure if the last path - component is not available. - * elf/ldconfig.c (parse_conf): Use canonicalized name when reporting - error. - - * elf/cache.c (print_cache): Use stat64 instead of stat. - * elf/ldconfig.c (chroot_stat): Likewise. - (create_links): Likewise. - (manual_link): Likewise. - (search_dir): Likewise. - * elf/readlib.c (process_file): Likewise. - - * Makefile (install): Set LC_ALL and LANGUAGE to C before running - ldconfig. - -2000-09-29 Jakub Jelinek - - * elf/chroot_canon.c: New file. - * elf/Makefile: Build and distribute it. - * elf/ldconfig.h (process_file): Add real_file_name argument. - (chroot_canon): Add prototype. - * elf/ldconfig.c (cache_file): Remove const. - (chroot_stat): New. - (create_links): Add real_path argument. - If opt_chroot, maintain both real and given filenames. - (manual_link): Likewise. - (search_dir): Likewise. - (parse_conf): If opt_chroot, use chroot_canon to find the real - config file. - (main): For -r, try to use chroot, if it fails, leave opt_chroot set - and use chroot_canon where appropriate to do the same as if chroot - succeeded. - * elf/readlib.c (process_file): Add real_file_name argument, pass it - to fopen. - -2000-09-29 Ulrich Drepper - - * math/complex.h (_Complex): We can be more specific when _Complex - is defined by the compiler. - -2000-09-29 H.J. Lu - - * sysdeps/unix/sysv/linux/ia64/dl-cache.h: New. - - * elf/cache.c (print_entry): Replace 64bit with IA-64 in message - for x86/IA-64 binary. - -2000-09-29 Andreas Schwab - - * sysdeps/unix/sysv/linux/ia64/readelflib.c: New file. - - * elf/cache.c (print_entry): Check for FLAG_IA64_LIB64. - -2000-09-29 Mark Kettenis - - * sysdeps/mach/hurd/dl-sysdep.c (__access): New function. Dummy - implementation for use by the dynamic linker. - -2000-09-29 Andreas Jaeger - - * sysdeps/unix/sysv/linux/arm/bits/fcntl.h: Protect DN_* by - __USE_GNU. - * sysdeps/unix/sysv/linux/ia64/bits/fcntl.h: Likewise. - * sysdeps/unix/sysv/linux/m68k/bits/fcntl.h: Likewise. - * sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise. - * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: Likewise. - * sysdeps/unix/sysv/linux/s390/bits/fcntl.h: Likewise. - * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise. - -2000-09-29 Andreas Jaeger - - * sysdeps/unix/sysv/linux/arm/bits/fcntl.h: Synch with Linux - 2.4.0-test9-pre7. - * sysdeps/unix/sysv/linux/ia64/bits/fcntl.h: Likewise. - * sysdeps/unix/sysv/linux/m68k/bits/fcntl.h: Likewise. - * sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise. - * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: Likewise. - * sysdeps/unix/sysv/linux/s390/bits/fcntl.h: Likewise. - * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise. - -2000-09-29 David Mosberger - - * sysdeps/unix/sysv/linux/ia64/sysdep.S (__ia64_syscall): Cleanup. - - * sysdeps/unix/sysv/linux/ia64/sysdep.h (CALL_MCOUNT): Implement. - -2000-06-10 David Mosberger - - * sysdeps/unix/sysv/linux/ia64/setjmp.S: Fix it so it actually - works: call to __sigjmp_save must be done unconditionally to - ensure jmp_buf is initialized properly. - -2000-09-27 Andreas Jaeger - - * sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Synch with Linux - 2.4.0-test9-pre7. - -2000-09-29 Jakub Jelinek - - * nscd/nscd-client.h (NSCD_VERSION): Bump to 3. - Use nscd_ssize_t where appropriate. - * nscd/nscd_gethst_r.c (nscd_gethst_r): Use nscd_ssize_t instead of - ssize_t where appropriate. - * nscd/nscd_getgr_r.c (nscd_getgr_r): Likewise. - * nscd/hstcache.c (cache_addhst): Likewise. - * nscd/grpcache.c (cache_addgr): Likewise. - * sysdeps/generic/nscd-types.h: New file. - * sysdeps/alpha/nscd-types.h: New file. - -2000-09-29 Ulrich Drepper - - * inet/getnameinfo.c (nrl_domainname): Use symbolic constant - INADDR_LOOPBACK instead of numeric value. - -2000-09-28 H.J. Lu - - * sysdeps/ia64/dl-machine.h (RTLD_START): Adjust _dl_argv by - _dl_skip_args. - (ELF_MACHINE_FIXED_STACK): Removed. - -2000-09-29 Andreas Jaeger - - * sysdeps/unix/sysv/linux/s390/lockf64.c: New file. - - * sysdeps/unix/sysv/linux/s390/fcntl.c: New file. - - * sysdeps/unix/sysv/linux/powerpc/lockf64.c: New file. - - * sysdeps/unix/sysv/linux/powerpc/fcntl.c: New file. - -2000-09-28 Ulrich Drepper - - * sysdeps/alpha/dl-machine.h (elf_machine_rela): Handle unaligned - relocation also for R_ALPHA_RELATIVE. - Reported by Ivan Kokshaysky . - -2000-09-18 Bruno Haible - - * intl/dcigettext.c: Outside libc, use local variable names that don't - clash with those in libc. - * intl/bindtextdom.c: Likewise. - * intl/textdomain.c: Likewise. - -2000-09-28 Ulrich Drepper - - * elf/ldconfig.c (parse_conf): Print full name of config dir - including chroot() path. - (main): Remove trailing / from opt_chroot string. - - * include/features.h: Correct description of what happens if no - *_SOURCE macro is defined. - - * sysdeps/posix/getaddrinfo.c (gaih_inet): Handle req->ai_socktype - correctly. Reported by Felix von Leitner . - -2000-09-19 H.J. Lu - - * malloc/malloc.h (__memalign_hook): Fix the parameter order. - * malloc/malloc.c (__memalign_hook): Likewise. - (memalign_hook_ini): Likewise. - -2000-09-28 Ulrich Drepper - - * stdio-common/tmpnam.c (tmpnam): Optimize a bit. - - * sysdeps/posix/getaddrinfo.c (gaih_local): Don't use tmpnam, use - underlying functions directly. - - * sysdeps/unix/sysv/linux/bits/resource.h: Add RLIMIT_LOCKS. - * sysdeps/unix/sysv/linux/arm/bits/resource.h: Likewise. - * sysdeps/unix/sysv/linux/i386/bits/resource.h: Likewise. - * sysdeps/unix/sysv/linux/mips/bits/resource.h: Likewise. - * sysdeps/unix/sysv/linux/powerpc/bits/resource.h: Likewise. - * sysdeps/unix/sysv/linux/sh/bits/resource.h: Likewise. - * sysdeps/unix/sysv/linux/sparc/bits/resource.h: Likewise. - -2000-09-28 Franz Sirl - - * sysdeps/unix/sysv/linux/kernel-features.h: Add __ASSUME_IPC64, only - define it for powerpc for kernel >= 2.4.0. - * sysdeps/unix/sysv/linux/msgctl.c: Test for __ASSUME_IPC64, not - __ASSUME_32BITUIDS. - * sysdeps/unix/sysv/linux/semctl.c: Likewise. - * sysdeps/unix/sysv/linux/shmctl.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/bits/ipc.h: Sync with kernel. - * sysdeps/unix/sysv/linux/powerpc/bits/msq.h: New file. - * sysdeps/unix/sysv/linux/powerpc/bits/sem.h: New file. - * sysdeps/unix/sysv/linux/powerpc/bits/shm.h: New file. - -2000-09-28 Martin Schwidefsksy - - * sysdeps/s390/atomicity.h: Fix compare_and_swap. - - * sysdeps/unix/sysv/linux/s390/bits/fcntl.h - (F_GETLK64,F_SETLK64,F_SETLKW64): Use values from 2.4.0-test8. - -2000-09-28 Denis Joseph Barrow - - * sysdeps/unix/sysv/linux/s390/sys/procfs.h: Use definitions from - ucontext.h. - * sysdeps/unix/sysv/linux/s390/sys/ucontext.h: Fix ucontext structure. - -2000-09-27 Andreas Schwab - - * math/Makefile (distribute): Explicitly add the long double test - sources, to get them included even if long double is not supported. - -2000-09-27 Jes Sorensen - - * elf/soinit.c (struct object): Move definition to gccframe.h and - include it. Problem identified by HJ Lu. - - * sysdeps/ia64/gccframe.h: New file. ia64 specific version of - struct object to be searched for frame unwind info. - * sysdeps/generic/gccframe.h: New file. Generic version of - struct object to be searched for frame unwind info. - -2000-09-28 Ulrich Drepper - - * manual/errno.texi: Correct error text for ENXIO. - Reported by Jörg Schilling . - -2000-09-27 Jes Sorensen - - * sysdeps/ia64/fpu/fsetexcptflg.c (fesetexceptflag): Set the - exception status bits rather than the exception disable bits. - Don't include math.h. - - * sysdeps/ia64/fpu/fgetexcptflg.c (fegetexceptflag): Report the - status of exceptions currently raised rather than which exceptions - are enabled. - - * sysdeps/ia64/fpu/fclrexcpt.c (feclearexcept): Typecase to fenv_t - rather than unsigned long int. - - * sysdeps/ia64/fpu/fedisblxcpt.c (fedisableexcept): Only disable - the exceptions actually requested by the caller and not just - disable all exceptions. - - * sysdeps/ia64/fpu/feenablxcpt.c (feenableexcept): Exceptions on - the ia64 are enabled by clearing the respective bits in the fpsr, - not setting them. - - * sysdeps/ia64/bits/fenv.h: typedef fexcept_t and fenv_t to - unsigned long int rather than unsigned long to be consistent with - the coding conventions. - -2000-09-20 H.J. Lu - - * sysdeps/ia64/fpu/fesetenv.c (fesetenv): Use fenv_t instead of - unsigned long int. - * sysdeps/ia64/fpu/fesetround.c (fesetround): Likewise. - -2000-09-28 Ulrich Drepper - - * string/bits/string2.h: Unify #if usage. - -2000-09-27 Jakub Jelinek - - * math/test-fenv.c (feexcp_mask_test): If enabling all exceptions - and disabling underflow or overflow, disable inexact as well. - -2000-09-26 Andreas Jaeger - - * sysdeps/gnu/netinet/tcp.h: Add tcp_info defines and types. - - * sysdeps/unix/sysv/linux/sys/mount.h (enum): New flag MS_BIND. - - * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h (F_SETLKW64, - F_GETLK64, F_SETLK64): Update from Linux-2.4.0-test9-pre4. - - * elf/ldconfig.c (search_dir): Allow unlimited path length. - (create_links): Likewise. - -2000-09-27 Ulrich Drepper - - * posix/tst-dir.c: Test a few error cases of chdir. - -2000-09-26 Ulrich Drepper - - * math/math_private.h: Don't add long double prototypes if - NO_LONG_DOUBLE is defined. - - * sysdeps/unix/i386/i586/clock_nanosleep.c (CLOCK_P): Remove - CLOCK_MONOTONIC. - * sysdeps/unix/i386/i586/clock_gettime.c (EXTRA_CLOCK_CASES): Likewise. - * sysdeps/unix/i386/i586/clock_getres.c (EXTRA_CLOCK_CASES): Likewise. - - * sysdeps/unix/sysv/linux/i386/bits/time.h: Remove CLOCK_MONOTONIC. - -2000-09-26 Jakub Jelinek - - * sysdeps/sparc/sparc32/bits/endian.h: Remove. - * sysdeps/sparc/sparc32/ieee754.h: New. - * sysdeps/sparc/sparc64/bits/endian.h: Move... - * sysdeps/sparc/bits/endian.h: ...here. - * sysdeps/unix/sysv/linux/sparc/sparc32/clone.S (__clone): Optimize. - * sysdeps/unix/sysv/linux/sparc/sparc64/clone.S (__clone): Check - %o1, not %o0 to see if we're parent or child. Optimize. - -2000-09-26 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/fork.S: New file (based on code - by Hans Boehm). - * sysdeps/unix/sysv/linux/ia64/vfork.S: New file (based on - code by Hans Boehm). - * sysdeps/unix/sysv/linux/ia64/fork.c: Deleted (obsoleted by fork.S). - -2000-09-20 H.J. Lu - - * sysdeps/ia64/fpu/printf_fphex.c: New file. - - * sysdeps/ia64/fpu/libm-test-ulps: New file. - -2000-09-17 H.J. Lu - - * sysdeps/ia64/Makefile (long-double-fcts): New. Defined as yes. - - * sysdeps/ia64/fpu/s_isinfl.c: New file. Include - sysdeps/i386/fpu/s_isinfl.c. - - * sysdeps/ia64/fpu/s_isnanl.c: New file. Include - sysdeps/i386/fpu/s_isnanl.c. - - * sysdeps/ia64/fpu/s_nextafterl.c: New file. Include - sysdeps/i386/fpu/s_nextafterl.c. - - * sysdeps/ia64/fpu/bits/mathdef.h: New file. Copied from - sysdeps/i386/fpu/bits/mathdef.h. - -2000-09-16 H.J. Lu - - * sysdeps/generic/ldsodefs.h (DL_UNMAP): New. Defined if - DL_UNMAP_IS_SPECIAL is not defined. - - * sysdeps/ia64/dl-lookupcfg.h (DL_UNMAP_IS_SPECIAL): Defined. - (_dl_unmap): New prototype. - (DL_UNMAP): New. Defined as _dl_unmap. - - * sysdeps/ia64/Versions [ld] (GLIBC_2.2): Add _dl_unmap. - - * elf/dl-close.c (_dl_close): Replace __munmap with DL_UNMAP. - -2000-09-16 H.J. Lu - - * sysdeps/generic/ldsodefs.h (DL_LOOKUP_ADDRESS): New. Defined - if ELF_FUNCTION_PTR_IS_SPECIAL is not defined. - - * sysdeps/ia64/dl-lookupcfg.h (_dl_lookup_address): New - prototype. - (DL_LOOKUP_ADDRESS): New. Defined as _dl_lookup_address. - - * sysdeps/ia64/dl-fptr.c (_dl_lookup_address): New. Lookup - the memory location of a function from a function descriptor. - - * sysdeps/ia64/Versions [ld] (GLIBC_2.2): Add _dl_lookup_address. - - * elf/dl-addr.c (_dl_addr): Use DL_LOOKUP_ADDRESS to get the - memory location. - -2000-09-14 Jes Sorensen - - * sysdeps/ia64/bits/byteswap.h (__bswap_16): Don't mark output - variable as input argument. - (__bswap_32): Likewise. - - * sysdeps/ia64/dl-machine.h: Add missing stop bit in RTLD_START() - - found by Jim Wilson - -2000-09-26 Ulrich Drepper - - * string/strxfrm.c: Only require alignment on __alignof__ (int32_t) - instead of 4. - -2000-09-26 Andreas Schwab - - * locale/programs/ld-collate.c (collate_output): Only require - alignment on __alignof__ (int32_t) instead of 4. - * locale/loadlocale.c (_nl_load_locale): Likewise. - * string/strcoll.c: Likewise. - -2000-09-26 Jes Sorensen - - * sysdeps/ieee754/ldbl-96/e_atan2l.c (__ieee754_atan2l): Add - parentheses around arithmetic used in | statement to kill compiler - warning. - - * math/math_private.h: Add prototype for __finitel. - (__ilogbl): Likewise. - (__isinfl): Likewise. - (__isnanl): Likewise. - (__atanl): Likewise. - (__copysignl): Likewise. - (__expm1l): Likewise. - (__floorl): Likewise. - (__frexpl): Likewise. - (__ldexpl): Likewise. - (__log1pl): Likewise. - (__nanl): Likewise. - (__rintl): Likewise. - (__scalbnl): Likewise. - (__sqrtl): Likewise. - (fabsl): Likewise. - (__sincosl): Likewise. - -2000-09-26 Andreas Schwab - - * sysdeps/m68k/fpu/libm-test-ulps: New file - -2000-09-26 Ulrich Drepper - - * locale/langinfo.h (__nl_langinfo_l): Add prototype. - -2000-09-26 Andreas Jaeger - - * misc/mkstemp64.c: New file. - * misc/Makefile (routines): Add mkstemp64. - * stdlib/stdlib.h: Add prototype and redirection magic. - * misc/Versions: Add mkstemp64. - -2000-09-26 Thorsten Kukuk - - * nscd/dbg_log.c (dbg_log): Add missing format string. - -2000-09-26 Ulrich Drepper - - * catgets/catgets.c (catopen): Use getenv instead of __secure_getenv - since we filter out the variable once. - * iconv/gconv_conf.c (__gconv_get_path): Likewise. - * locale/newlocale.c (__newlocale): Likewise. - * locale/setlocale.c (setlocale): Likewise. - * malloc/malloc.c (ptmalloc_init): Likewise. - * resolv/res_hconf.c (_res_hconf_init): Likewise. - * resolv/res_init.c (__res_vinit): Likewise. - * time/tzfile.c (__tzfile_read): Likewise. - * sysdeps/generic/unsecvars.h: New file. - * elf/dl-support.c (non_dynamic_init): Use it here to remove variables. - * elf/rtld.c (process_envvars): Likewise. - * elf/Makefile (distribute): Add unsecvars.h. - - * misc/daemon.c (daemon): Fail if !noclose and we cannot open the - real /dev/null device. - - * sysdeps/generic/check_fds.c: Include device-nrs.h. - * sysdeps/generic/device-nrs.h: New file. - * sysdeps/unix/sysv/linux/device-nrs.h: New file. - * misc/Makefile (distribute): Add device-nrs.h. - - * sysdeps/unix/sysv/linux/gethostid.c (sethostid): Use O_TRUNC to - remove possible garbage at the end of the file. - -2000-09-25 Ulrich Drepper - - * stdio-common/tmpnam_r.c: Warn about insecure tmpnam_r. - * stdio-common/tmpnam.c: Warn about insecure tmpnam. - * stdio-common/tempnam.c: Warn about insecure tempnam. - * misc/mktemp.c: Warn about insecure mktemp. - - * sysdeps/generic/check_fds.c: Check that file opened is really - /dev/null. - * posix/wordexp.c (exec_comm_child): Likewise. - - * elf/rtld.c (process_envvars): Open debug output file with O_NOFOLLOW. - - * locale/Makefile (routines): Add nl_langinfo_l. - * locale/Versions [libc] (GLIBC_2.2): Add __nl_langinfo_l. - * locale/nl_langinfo_l.c: New file. - * locale/nl_langinfo.c: Allow use of file for __nl_langinfo_l - definition. - -2000-09-23 Bruno Haible - - * iconvdata/gbk.c (USE_PRIVATE_AREA): Define to 0. - (__gbk_to_ucs): Conditionalize private area mappings. - (__gbk_from_ucs4_tab9): Likewise. - (BODY for TO_LOOP): Likewise. - * iconvdata/testdata/GBK: Don't use characters not yet in Unicode. - * iconvdata/testdata/GBK..UTF-8: Likewise. - * iconvdata/tst-tables.sh: Enable GBK test. - -2000-09-23 Bruno Haible - - * iconvdata/gbk.c (__gbk_to_ucs): Swap U+2014 and U+2015. - (__gbk_from_ucs4_tab4): Swap entries for U+2014 and U+2015. - (BODY for FROM_LOOP): Reject input > 0xFEA0, avoids out-of-bounds - array access. - * iconvdata/gbgbk.c (BODY for FROM_LOOP): Map 0xA844 to 0xA1AA. - * iconvdata/testdata/GBK..UTF8: Swap U+2014 and U+2015. - -2000-09-23 Bruno Haible - - * iconvdata/johab.c (final_to_ucs): Fix typos. - (jamo_from_ucs_table): Likewise. - (BODY for FROM_LOOP): Map 0x5c to U+20A9. Reject ranges - 0xD9E6..0xD9FE and 0xDEF2..0xDEFE. - (BODY for TO_LOOP): Map U+20A9 to 0x5c. Don't produce values in - the range 0xD9E6..0xD9FE. - * iconvdata/tst-tables.sh: Enable JOHAB testing. - -2000-09-25 Ulrich Drepper - - * iconv/gconv_conf.c (__gconv_get_path): Fix problem with relative - GCONV_PATH. - -2000-09-24 Ulrich Drepper - - * libio/genops.c (_IO_doallocbuf): Don't use single byte buffer if - stream is in wide mode. - - * stdio-common/vfprintf.c (buffered_vfprintf): Orient stream. - -2000-09-21 Bruno Haible - - * iconvdata/iso-2022-cn-ext.c (EMIT_SHIFT_TO_INIT): Shift __count - by 3, not 2. - (INIT_PARAMS, UPDATE_PARAMS): Likewise. - -2000-09-21 Bruno Haible - - * stdio-common/vfscanf.c (__vfscanf, _IO_vfscanf): Fix bugs in - reallocation logic for MALLOC (%as, %aS formats). - -2000-09-24 Ulrich Drepper - - * stdio-common/vfprintf.c (process_arg): Handle %hhn. - Add missing case in va_arg handling for numbers. - * stdio-common/tst-printf.c (main): Add tests for %hhu and %hhn - handling. - * stdio/tst-printf.sh: Adjust expected results. - Reported by Joseph S. Myers . - -2000-09-20 Bruno Haible - - * iconvdata/iso-2022-jp.c (BODY for FROM_LOOP): Reject 0x80. - (BODY for TO_LOOP): Clear bit 7 when outputting ISO-8859-1 upper half - characters. - * iconvdata/gen-8bit-gap-1.sh: Recognize lowercase hexadecimal digits - as equivalent to uppercase hexadecimal digits. - -2000-09-20 Bruno Haible - - * iconvdata/testdata/EUC-KR..UTF8: New file. - * iconvdata/testdata/EUC-TW: New file. - * iconvdata/testdata/EUC-TW..UTF8: New file. - * iconvdata/testdata/EUC-JP: New file. - * iconvdata/testdata/EUC-JP..UTF8: New file. - * iconvdata/testdata/ISO-2022-JP: New file. - * iconvdata/testdata/ISO-2022-JP..UTF8: New file. - * iconvdata/testdata/ISO-2022-JP-2: New file. - * iconvdata/testdata/ISO-2022-JP-2..UTF8: New file. - * iconvdata/testdata/ISO-2022-KR: Add a few more lines. - * iconvdata/testdata/ISO-2022-KR..UTF8: New file. - * iconvdata/testdata/ISO-2022-CN: New file. - * iconvdata/testdata/ISO-2022-CN..UTF8: New file. - * iconvdata/testdata/ISO-2022-CN-EXT: New file. - * iconvdata/testdata/ISO-2022-CN-EXT..UTF8: New file. - * iconvdata/TESTS: Enable tests for ISO-2022-JP, ISO-2022-JP-2, - ISO-2022-CN, ISO-2022-CN-EXT, EUC-JP, EUC-TW. - -2000-09-24 Andreas Jaeger - - * elf/ldconfig.c (add_dir): Move logic to add entry to list to new - function add_single_dir. - (add_single_dir): New function. - (search_dir): Use add_single_dir instead of recursing. - - * sysdeps/generic/dl-cache.h: Include stdint.h. - (struct file_entry_new): Use fixed sizes for interoperability - between 32bit and 64bit systems, add __unused to make alignment - explicit. - (CACHE_VERSION): Increment. - (struct cache_file_new): Use fixed sizes, add one more unused - entry to make alignment explicit. - -2000-09-24 Ulrich Drepper - - * elf/ldconfig.c (search_dir): Make more use of d_type information. - -2000-09-23 Ulrich Drepper - - * stdio-common/printf-parse.h (parse_one_spec): Clear - spec->info.i18n. Patch by Joseph S. Myers . - -2000-09-18 Mark Kettenis - - * sysdeps/mach/hurd/bits/posix_opt.h (_POSIX_SYNCHRONIZED_IO): - #undef since we don't have msync. - - * sysdeps/mach/hurd/bits/time.h: (CLOCKS_PER_SEC): Make a long int - constant since that is what clock_t is. - * sysdeps/mach/hurd/i386/bits/time.h: Likewise. - -2000-09-11 Mark Kettenis - - * sysdeps/mach/getloadavg.c (getloadavg): Divide instead of - multiply by LOAD_SCALE. - -2000-09-22 Jakub Jelinek - - * crypt/crypt.h (crypt, setkey, encrypt): Add __THROW. - (crypt_r, setkey_r, encrypt_r): Likewise. - -2000-09-22 Andreas Jaeger - - * locale/programs/repertoire.c (repertoiremap_hash): Don't specify - array size. - - * sysdeps/alpha/fpu/libm-test-ulps: New file. - From Christian Iseli . - -2000-09-21 Andreas Jaeger - - * math/libm-test.inc (atan_test): Test for existence of function. - (expm1_test): Likewise. - (acos_test): Likewise. - (asin_test): Likewise. - (exp_test): Likewise. - (log10_test): Likewise. - (log_test): Likewise. - (pow_test): Likewise. - (sqrt_test): Likewise. - (cos_test): Likewise. - (sin_test): Likewise. - (tan_test): Likewise. - (log1p_test): Likewise. - (log2_test): Likewise. - - * sysdeps/i386/fpu/libm-test-ulps: Tweak some values for K6. - - * libio/oldiofsetpos64.c: Fix alias names. - -2000-09-21 Martin Buchholz - - * manual/terminal.texi (Allocation): Sample code correction. - -2000-09-20 Andreas Jaeger - - * iconvdata/Makefile (generated): Add tst-tables.out. - - * intl/Makefile (generated): Add test output. - -2000-09-19 Andreas Jaeger - - * sunrpc/clnt_simp.c (callrpc): Fix write beyond end of buffer. - Reported by Jens-Uwe Mager . - -2000-09-18 Ulrich Drepper - - * version.h (VERSION): Bump to 2.1.94. - - * sysdeps/mips/Dist: Add fpu/fenv_libc.h. - * sysdeps/sparc/sparc32/soft-fp/Dist: Add q_add.c. - * sysdeps/sparc/sparc64/soft-fp/Dist: Add qp_add.c. - * sysdeps/unix/sysv/linux/ia64/Dist: Add net/route.h. - - * malloc/mtrace.c (mtrace): Mark stream as close on exec. - -2000-09-17 Bruno Haible - - * iconvdata/utf-16.c (BODY for TO_LOOP): Reject UCS-4 input in the - range 0xD800..0xDFFF. - * iconvdata/unicode.c (BODY for TO_LOOP): Likewise. - (BODY for FROM_LOOP): Likewise. - * iconv/gconv_simple.c (ucs2_internal_loop): Likewise. - (internal_ucs2_loop): Likewise. - (ucs2reverse_internal_loop): Likewise. - (internal_ucs2reverse_loop): Likewise. - -2000-09-17 Bruno Haible - - * iconvdata/utf-16.c (gconv_init): Add missing slashes to encoding - names. - -2000-09-17 Bruno Haible - - * iconvdata/tst-table-from.c (main): Fix test for error on stdout. - * iconvdata/tst-table-to.c (main): Likewise. - -2000-09-17 Bruno Haible - - * iconvdata/iso-ir-165.c (__isoir165_from_tab): Renamed from - __isoir165_tab. - * iconvdata/cns11643.h (__cns11643l1_to_ucs4_tab): New declaration. - * iconvdata/iso-2022-cn-ext.c: Include "cns11643.h". - (GB7590_set, GB13132_set, CNS11643_3_set, CNS11643_4_set, - CNS11643_5_set, CNS11643_6_set, CNS11643_7_set): Change enum values. - (BODY for FROM_LOOP): Fix buffer overrun. Treat CNS11643 plane 3. - Return __GCONV_INCOMPLETE_INPUT instead of __GCONV_EMPTY_INPUT. - (BODY for TO_LOOP): Fix usage of `set' vs. `used'. Fix typo that - caused GB2312 to be used instead of ISO-IR-165. Treat CNS11643 - plane 3. Fix shift sequences. Output announcement for SS2 and SS3 - encodings when needed. When outputting an announcement, don't clear - most other announcements. - -2000-09-17 Bruno Haible - - * iconvdata/iso-2022-cn.c (BODY for FROM_LOOP): Fix buffer overrun. - (BODY for TO_LOOP): Fix usage of `set' vs. `used'. - -2000-09-14 Bruno Haible - - * intl/Versions: Add bind_textdomain_codeset. - -2000-09-16 Ralf Baechle - - * sysdeps/mips/dl-machine.h (_RTLD_PROLOGUE): Reformat. Declare - as function. - (_RTLD_EPILOGUE): Reformat. Declare size of entry function. - (ELF_MACHINE_BEFORE_RTLD_RELOC): Relocate the dynamic linker itself so - it will even work when not loaded to the standard address. - (RTLD_START): Reformat. Call _dl_start in a way that is safe even - before the dynamic linker itself is relocated. - -2000-09-18 Andreas Jaeger - - * sysdeps/unix/sysv/linux/kernel-features.h: Always define - __ASSUME_32BITUIDS for MIPS. - * sysdeps/unix/sysv/linux/mips/ipc_priv.h: New file. - * sysdeps/unix/sysv/linux/mips/Dist: Add ipc_priv.h. - -2000-09-17 H.J. Lu - - * catgets/Makefile ($(objpfx)de/libc.cat): Use - $(make-target-directory) instead of mkdir. - -2000-09-17 Franz Sirl - - * sysdeps/unix/sysv/linux/kernel-features.h: Always define - __ASSUME_32BITUIDS for __powerpc__. - * sysdeps/unix/sysv/linux/powerpc/ipc_priv.h: New file. - * sysdeps/unix/sysv/linux/powerpc/Dist: Add ipc_priv.h. - -2000-09-17 Ulrich Drepper - - * sysdeps/unix/sysv/linux/m68k/sysdep.h (INLINE_SYSCALL): Fix last - patch. - * sysdeps/unix/sysv/linux/arm/sysdep.h (INLINE_SYSCALL): Likewise. - -2000-09-16 Jakub Jelinek - - * sysdeps/ia64/Implies: Reorder ieee754 implies so that ldbl-* comes - first. - * sysdeps/m68k/Implies: Likewise. - * sysdeps/sparc/sparc64/Implies: Likewise. - -2000-09-16 Jakub Jelinek - - * elf/readlib.c (process_file): Don't error for stale .so links either. - -2000-09-16 Ulrich Drepper - - * elf/dl-load.c (_dl_map_object_from_fd): Add one more - __builtin_expect. - - * include/bits/xopen_lim.h (LONG_BIT): Use LONG_MAX, not INT_MAX. - Patch by Thorsten Kukuk . - - * dlfcn/Makefile (distribute): Add defaultmod1.c and defaultmod2.c. - (test): Add default. - (modules-names): Add defaultmod1 and defaultmod2. - Add rules to build test objects. - -2000-09-15 Ulrich Drepper - - * wctype/wctype.h: Always include . - Reported by Jim Meyering . - - * elf/rtld.c (_dl_dynamic_weak): Set to 1 by default for now. - * elf/dl-support.c: Likewise. - - * sysdeps/unix/sysv/linux/ia64/bits/stat.h: Correct position of - st_blocks member in stat and stat64 structs. - Patch by Bill Nottingham . - - * iconvdata/tst-tables.sh: Add warning that GB18030 test might - take longer. - - * math/complex.h: Don't define _Complex macro for gcc 3. Add - __extension__ to _Complex_I definition since gcc warns if -pedantic. - * math/bits/cmathcalls.h (conj): Add __extension__ since we use ~. - Patches by Joseph S. Myers . - - * include/limits.h: Define LLONG_MIN, LLONG_MAX, ULLONG_MAX if - necessary. Move includes of POSIX and Unix limits files to the end. - * stdlib/Makefile (tests): Add tst-limits. - * stdlib/tst-limits.h: New file. - -2000-09-15 Andreas Jaeger - - * sysdeps/mips/fpu/fesetenv.c (__fesetenv): Handle FE_NOMASK_ENV. - - * sysdeps/mips/bits/fenv.h (FE_NOMASK_ENV): Define. - -2000-09-15 Jakub Jelinek - - * sysdeps/unix/alpha/sysdep.h (inline_syscall_clobbers): Add memory - clobber. - * sysdeps/unix/sysv/linux/arm/sysdep.h (INLINE_SYSCALL): Likewise. - * sysdeps/unix/sysv/linux/m68k/sysdep.h (INLINE_SYSCALL): Likewise. - -2000-09-15 Ulrich Drepper - - * elf/Makefile (distribute): Add nextmod1.c and nextmod2.c. - (tests): Add next. - (modules-names): Add nextmod1 and nextmod2. - Add rules to build and run next. - * elf/next.c: New file. - * elf/nextmod1.c: New file. - * elf/nextmod2.c: New file. - -2000-09-14 Jakub Jelinek - - * elf/dl-lookup.c (_dl_lookup_symbol_skip): Fix a typo. - -2000-09-15 Andreas Jaeger - - * sysdeps/mips/fpu/fenv_libc.h: New file. - * sysdeps/mips/fpu/feenablxcpt.c: Use fenv_libc.h - * sysdeps/mips/fpu/fegetexcept.c: Likewise. - * sysdeps/mips/fpu/fedisblxcpt.c: Likewise. - - * sysdeps/mips/fpu/feenablxcpt.c: New file. - * sysdeps/mips/fpu/fegetexcept.c: New file. - * sysdeps/mips/fpu/fedisblxcpt.c: New file. - -2000-09-14 Ulrich Drepper - - * intl/Makefile: Avoid unnecessary test reruns. - - * stdio-common/tst-printf.sh: Also allow output from 64-bit machines. - - * sysdeps/unix/sysv/linux/dl-osinfo.h (DL_SYSDEP_OSCHECK): Change - to not use sysctl(). Too many architectures have problems with it. - -2000-09-14 Andreas Jaeger - - * scripts/config.sub: New version from subversions.gnu.org. - - * time/clocktest.c (main): Change format, CLOCKS_PER_SEC is now - long. - -2000-09-14 Jakub Jelinek - - * posix/regex.c (compile_range): Cast collseq index to unsigned char - to avoid accessing data before collseq. - - * sysdeps/sparc/fpu/bits/mathinline.h (__unordered_v9cmp): Avoid - pasting strings together. - -2000-09-14 Greg McGary - - * sysdeps/generic/bp-checks.h: Remove bogus reference to GNU MP in - copyright notice. - * sysdeps/generic/bp-semctl.h: Likewise. - * sysdeps/generic/bp-start.h: Likewise. - * sysdeps/generic/bp-sym.h: Likewise. - * sysdeps/generic/bp-thunks.h: Likewise. Include to get - rename prototype. - -2000-09-13 Ulrich Drepper - - * io/test-lfs.c (do_test): Allow stat64() to return EOVERFLOW and - don't fail. - - * elf/elf.h: Add missing official relocations. - - * libio/stdio.h: Define __FILE if __need___FILE is defined. - * stdio/stdio.h: Likewise. - * wcsmbs/wchar.h: Get definition of __FILE. Use __FILE instead of FILE. - * include/stdio.h: Handle __need___FILE like __need_FILE. - * include/wchar.h: Use __FILE instead of FILE. - * libio/fwprintf.c: Include for FILE definition. - * libio/fwscanf.c: Likewise. - * libio/getwc.c: Likewise. - - * sysdeps/generic/stdint.h (WINT_MAX): Define to 4294967295u. - * sysdeps/generic/bits/wchar.h (WCHAR_MIN): Define to -2147483647 - 1. - * sysdeps/unix/sysv/linux/i386/bits/wchar.h: Likewise. - - * assert/assert.h: Update comment header about ISO C section. - * math/complex.h: Likewise. - * ctype/ctype.h: Likewise. - * include/errno.h: Likewise. - * include/limits.h: Likewise. - * locale/locale.h: Likewise. - * math/math.h: Likewise. - * setjmp/setjmp.h: Likewise. - * signal/signal.h: Likewise. - * stdio/stdio.h: Likewise. - * libio/stdio.h: Likewise. - * stdlib/stdlib.h: Likewise. - * string/string.h: Likewise. - * time/time.h: Likewise. - * wcsmbs/wchar.h: Likewise. - * wctype/wctype.h: Likewise. - Patches by Joseph S. Myers . - -2000-09-13 Andreas Jaeger - - * sysdeps/unix/sysv/linux/bits/socket.h (__cmsg_nxthdr): Fix test - for no more entries. - * sysdeps/unix/sysv/aix/bits/socket.h (__cmsg_nxthdr): Likewise. - * sysdeps/unix/sysv/linux/mips/bits/socket.h (__cmsg_nxthdr): Likewise. - Reported by Eric S. Johnson , closes PR libc/1887. - -2000-09-13 Ulrich Drepper - - * sysdeps/unix/sysv/linux/bits/time.h (CLOCKS_PER_SEC): Make a long int - constant since this is what clock_t is. - * sysdeps/unix/sysv/linux/alpha/bits/time.h: Likewise. - * sysdeps/unix/sysv/linux/i386/bits/time.h: Likewise. - * sysdeps/unix/sysv/linux/ia64/bits/time.h: Likewise. - * sysdeps/unix/sysv/linux/s390/bits/time.h: Likewise. - - * time/time.h: Don't defined clockid_t and timer_t unless POSIX - definitions are requested. - -2000-09-13 Andreas Jaeger - - * shlib-versions: libBrokenLocale needs minimal version for ia64, - sparc64 and sh to synch with libc. - -2000-09-13 Ulrich Drepper - - * iconvdata/Makefile (modules): Add ISO-2022-CN-EXT. - (distribute): Add iso-2022-cn-ext.c. - Add definitions to compile the new module. - * iconvdata/gconv-modules: Add entries for ISO-2022-CN-EXT. - * iconvdata/iso-2022-cn-ext.c: New file. - * iconvdata/iso-ir-165.h (isoir165_to_ucs4): Renamed from - ucs4_from_isoir165. Increment input pointer if successful. - - * csu/Makefile: Work around a gcc bug when creating csu-dummies. - - * sysdeps/unix/sysv/linux/getdents.c: Pretty print. - -2000-09-01 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/syscalls.list: Add - __syscall_getdents64 wrapper. - - * sysdeps/unix/sysv/linux/ia64/net/route.h: New file. - -2000-09-12 Ulrich Drepper - - * iconvdata/gb18030.c: Many many changes. Make consistent with - charmap and with itself. - * iconvdata/tst-tables.sh: Test GB18030. - -2000-09-11 Ulrich Drepper - - * iconv/skeleton.c: Fix last patch, add missing parameter to - unaligned function call. - -2000-09-10 Bruno Haible - - * locale/programs/ld-collate.c (collate_read): Fix typo in handling - of decimal ellipsis. - -2000-09-11 Bruno Haible - - * locale/programs/ld-collate.c (collate_read): Always initialize - error_section.next. - -2000-09-10 Bruno Haible - - * locale/programs/ld-collate.c (collate_finish): Upper bound for - ruleidx is 128, not 256. - -2000-09-11 Ulrich Drepper - - * locale/programs/ld-collate.c (collate_read): Correct check for - already inserted entries. - -2000-09-10 Bruno Haible - - * iconv/skeleton.c (FUNCTION_NAME): Handle unaligned access in - second try as well. - -2000-09-10 Bruno Haible - - * iconv/skeleton.c (FUNCTION_NAME): Optimize an `if' if - MAX_NEEDED_FROM > 1 && MAX_NEEDED_TO > 1. - -2000-09-10 Bruno Haible - - * iconv/skeleton.c (gconv_init): Replace all uses of RESET_STATE with - SAVE_RESET_STATE. - -2000-09-10 Bruno Haible - - * iconvdata/utf-7.c: New file. - * iconvdata/gconv-modules (UTF-7): New module entries. - * iconvdata/Makefile (modules): Add UTF-7. - (distribute): Add utf-7.c. - * iconvdata/testdata/UTF-7: New file. - * iconvdata/testdata/UTF-7..UTF8: New file. - * iconvdata/TESTS (UTF-7): New entry. - * iconvdata/run-iconv-test.sh: Fix confusing output. - -2000-09-11 Ulrich Drepper - - * sysdeps/posix/tempname.c (__gen_tempname): Use __lxstat and __xstat. - -2000-09-10 David S. Miller - - * sysdeps/sparc/sparc32/__longjmp.S (__longjmp): Correct %fp - frame pointer offset for non-fast path. - -2000-09-10 Ulrich Drepper - - * locale/programs/3level.h (*_init): Initialize level1, level2, - and level3 as well. - (*_add): Remove a few unnecessary conditionals. - -2000-09-05 Wolfram Gloger - - * malloc/thread-m.h [_LIBC]: Even if not linking with libpthread, - ensure usability of mutex as an `in use' flag. - -2000-09-10 Ulrich Drepper - - * shlib-versions: Simplify libm entries. Correct a few Hurd entries. - - * sysdeps/generic/initfini.c: Rewrite slightly to get rid of the - ugly GMON_WEAK_START hack. - Patch by Philip Blundell . - - * sysdeps/i386/i486/bits/string.h: Pretty printing. - -2000-09-09 Ulrich Drepper - - * sysdeps/powerpc/dl-machine.c: Add volatile to PPC_DCBST, PPC_SYNC, - and PPC_ICBI asm for broken compilers. - Patch by Franz Sirl . - -2000-09-09 Andreas Jaeger - - * manual/message.texi (Advanced gettext functions): Fix typo. - - * sysdeps/unix/sysv/linux/dl-osinfo.h: Include for - strncpy prototype. - -2000-09-09 Ulrich Drepper - - * sysdeps/ia64/memchr.S: Add .pred.rel to avoid wrong assembler - warnings. - * sysdeps/ia64/memccpy.S: Likewise. - Patches by Jim Wilson . - - * sysdeps/unix/sysv/linux/dl-osinfo.h (DL_SYSDEP_OSCHECK): Use uname - before trying to read /proc. - Patch by Matt Wilson . - * include/sys/utsname.h: Declare __uname. - * sysdeps/generic/uname.c: Make uname a weak alias of __uname. - * sysdeps/mach/hurd/uname.c: Likewise. - * sysdeps/unix/syscalls.list: Likewise. - - * iconv/gconv_dl.c (do_release_shlib): Rewrite condition for - unloading a bit. - -2000-09-08 Ulrich Drepper - - * posix/getopt.c (_getopt_internal): When long_only is set always - recognize conflicts just like before. - -2000-09-08 Franz Sirl - - * sysdeps/ia64/Makefile (sysdep-rtld-routines): New variable. - -2000-09-08 Greg McGary - - * sysdeps/unix/sysv/linux/syscalls.list (mincore): Fix arg signature. - * sysdeps/unix/make-syscalls.sh: New signature keyletter `V'. - * sysdeps/generic/bp-checks.h (CHECK_N_PAGES): New macro. - -2000-09-08 Andreas Jaeger - - * sysdeps/unix/sysv/linux/arm/lockf64.c: New file. - - * sysdeps/unix/sysv/linux/arm/fcntl.c: New file. - - * sysdeps/unix/sysv/linux/arm/bits/fcntl.h - (F_GETLK64,F_SETLK64,F_SETLKW64): Use values from 2.4.0-test8. - (F_GETLK,F_SETLK,F_SETLKW): Handle __USE_FILE_OFFSET64 correctly. - -2000-09-07 Ulrich Drepper - - * iconvdata/tst-tables.sh: Enable EUC-KR test. - - * elf/dl-load.c (lose): Decrement _nl_loaded. - (_dl_map_object_from_fd): Don't try to dlopen executables. - - * iconvdata/tst-tables.sh: Actually return with an error if - something goes wrong. - * iconvdata/tst-table.sh: Return with an error if any of the cmp fails. - * iconvdata/big5hkscs.c (BODY of FROM_LOOP): Reject 0xff as input. - - * iconvdata/tst-tables.sh: Add BIG5HKSCS. - - * iconvdata/tst-table-to.c (main): Correct cast in iconv call. - * iconvdata/tst-table-from.c: Include . - (try): Correct cast in iconv call. - - * elf/Makefile (all-rtld-routines): Evaluate $(sysdep-rtld-routines) - too. - * sysdeps/powerpc/Makefile (sysdep-rtld-routines): New variable. - (sysdep_routines): Remove dl-start. - Patches by Franz Sirl . - - * assert/__assert.c: Undefine NDEBUG before include . - - * sysdeps/unix/sysv/linux/msgsnd.c (msgsnd): Add cast to avoid warning. - * sysdeps/unix/sysv/linux/shmat.c (shmat): Likewise. - -2000-09-06 Andreas Schwab - - * sysdeps/unix/sysv/linux/ia64/bits/time.h: New file. - -2000-09-07 Ulrich Drepper - - * sysdeps/unix/sysv/linux/gethostid.c: Find hostid file in /etc. - - * scripts/config.sub: Strip out -unknown for Linux targets. - Patch by Scott Bambrough . - - * posix/tst-dir.c (main): Correct one bug (missing NULL test) and - add one more test. - -2000-09-07 Andreas Jaeger - - * sysdeps/unix/sysv/linux/mips/lockf64.c: New file. - - * sysdeps/unix/sysv/linux/i386/fcntl.c: Add prototypes for the - syscalls. - - * sysdeps/unix/sysv/linux/mips/syscalls.list: Add __syscall_fcntl. - - * sysdeps/mips/dl-machine.h (RESOLVE_GOTSYM): Fix calls to dl_lookup. - (ELF_MACHINE_RUNTIME_TRAMPOLINE): Likewise. - - * sysdeps/unix/sysv/linux/mips/fcntl.c: New file. - - * stdlib/tst-bsearch.c (main): Add more test cases. - - * locale/programs/ld-collate.c (handle_ellipsis): Fix typo. - * elf/dl-load.c (_dl_map_object_from_fd): Likewise. - Reported by GOTO Masanori . - -2000-09-07 Ulrich Drepper - - * posix/Makefile (tests): Add tst-dir. - (tst-dir-ARGS): New variable. - * posix/tst-dir.c: New file. - -2000-09-07 Andreas Jaeger - - * sysdeps/unix/sysv/linux/mips/sys/syscall.h (SYS_getdents64): New. - (SYS_fcntl64): New. - - * sysdeps/unix/sysv/linux/mips/syscalls.list: Add getdents64. - -2000-09-06 Ulrich Drepper - - * sysdeps/unix/opendir.c: If O_DIRECTORY_WORKS is defined don't - use the hack with tryopen_o_directory to determine at runtime - whether it works. - * sysdeps/unix/sysv/linux/opendir.c: New file. - * sysdeps/unix/sysv/linux/kernel-features.h: Define - __ASSUME_O_DIRECTORY if kernel knows O_DIRECTORY. - - * catgets/Depend: New file. Add intl. - * catgets/Makefile (tests): Add tst-catgets. - (generated): Remove de.msg. - (generated-dirs): Add de. - Add dependency if tst-catgets output on de/libc.cat. - * catgets/tst-catgets.c: New file. - - * po/ja.po: New file. - * po/el.po: Update from translation team. - - * wcsmbs/Depend: New file. - * wcsmbs/Makefile (tests): Add tst-btowc. - (tst-btowc-ENV): Define. - * wcsmbs/tst-btowc.c: New file. - - * sysdeps/unix/sysv/linux/_G_config.h: Moved to... - * sysdeps/gnu/_G_config.h: ...here to be shared with Hurd. - - * sysdeps/posix/signal.c: Add sig to act.sa_mask for completeness. - - * stdlib/Makefile (tests): Add tst-bsearch. - * stdlib/tst-bsearch.c: New file. - - * posix/getopt.c (_getopt_internal): Don't recognize an option - name as ambiguous if it's a prefix for more than one name but the - other struct option values are identical. - - * posix/tstgetopt.c: Add test for improved ambiguity recognition. - Don't depend on visual inspection of the output file to recognize - errors. - * posix/Makefile (tstgetopt-ARGS): Add a few more parameters. - -2000-09-06 Andreas Jaeger - - * sysdeps/alpha/soft-fp/Dist: New file. - * sysdeps/i386/soft-fp/Dist: New file. - * sysdeps/mips/mips64/soft-fp/Dist: New file. - * sysdeps/mips/soft-fp/Dist: New file. - * sysdeps/powerpc/soft-fp/Dist: New file. - * sysdeps/sparc/sparc32/soft-fp/Dist: New file. - * sysdeps/sparc/sparc64/soft-fp/Dist: New file. - - * sysdeps/sparc/sparc64/soft-fp/Makefile [$(subdir) = soft-fp]: - Use sysdep_routines instead of routines to fix make dist failure. - * sysdeps/sparc/sparc32/soft-fp/Makefile: Likewise (in commented - out code). - * sysdeps/powerpc/soft-fp/Makefile [$(subdir) = soft-fp]: Likewise. - - * sysdeps/mips/Makefile [$(subdir) = misc]: Use - sysdep_headers instead of headers for make dist. - - * sysdeps/unix/sysv/linux/mips/Makefile [$(subdir) = misc]: - Likewise. - -2000-09-06 Andreas Schwab - - * sysdeps/unix/sysv/linux/m68k/bits/fcntl.h: New file. - -2000-09-06 Andreas Jaeger - - * soft-fp/Makefile (distribute): Remove ChangeLog. - - * sysdeps/sparc/sparc32/Makefile [$(subdir) = gnulib]: Use - sysdep_routines instead of routines for make dist. - -2000-09-05 Ulrich Drepper - - * libio/libio.h (_IO_fwide_maybe_incompatible): For glibc 2.0 - compatibility check for old stream and call _IO_wide in doubt. - (_IO_fwide): Use _IO_fwide_maybe_incompatible macro. - * libio/iofwide.c (_IO_fwide): If compatibility with glibc 2.0 is - needed tst for such an old structure and don't do anything. - * libio/freopen.c: Remove declaration of _IO_stdin_used. - -2000-09-06 Andreas Jaeger - - * sysdeps/powerpc/Makefile [$(subdir) = elf]: Modify - sysdep-dl-routines and sysdep_routines instead of rtld-routines - and dl-routines. - - * soft-fp/ChangeLog: Merged with this file. - -2000-06-13 Ulrich Drepper - - * soft-fp/Makefile (distribute): Add op-8.h and testit.c. - - * soft-fp/Makefile (distribute): Add the math functions, too. - - * soft-fp/Makefile (distribute): Add ChangeLog, Banner, and configure. - -2000-03-03 Geoff Keating - - * soft-fp/soft-fp.h (_FP_ROUND_ZERO): Cast 0 to void before using it - as a statement. - - * soft-fp/sysdeps/powerpc/Makefile (routines): New file. - * soft-fp/sysdeps/powerpc/q_*: New files. - -2000-09-05 Ulrich Drepper - - * stdio-common/vfprintf.c (process_string_arg): Handle precision - in wide char case correctly. Don't allocate too long temporary - strings with alloca. - - * stdio-common/Makefile (tests): Add tst-swprintf. - (tst-swprintf-ENV): New variable. - * stdio-common/tst-swprintf.c: New file. - -2000-09-05 Andreas Jaeger - - * sysdeps/unix/sysv/linux/mips/bits/stat.h: Use st_pad5. - * sysdeps/unix/sysv/linux/mips/xstatconv.c: Fix assignments. - Patch by Maciej W. Rozycki . - -2000-09-05 Ulrich Drepper - - * configure.in: Strip out "unknown" from configuration names. - -2000-09-05 Andreas Jaeger - - * sysdeps/powerpc/Subdirs: New file, adds soft-fp. - - * sysdeps/sparc/sparc64/Implies: Add soft-fp. - * sysdeps/sparc/sparc32/Implies: Likewise. - * sysdeps/powerpc/Implies: Likewise. - - * libio/oldiofsetpos64.c: Check for compatibility with glibc 2.1. - * libio/oldiofgetpos64.c: Likewise. - - * soft-fp/Makefile (distribute): Remove configure. - - * sysdeps/sparc/sparc64/soft-fp/Versions: Use version glibc 2.2. - - * soft-fp/configure: Remove. - - * soft-fp/sysdeps/sparc/sparc64/qp_neg.S: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_neg.S: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/Makefile: Move from here... - * sysdeps/sparc/sparc32/soft-fp/Makefile: ... to here. - - * soft-fp/sysdeps/powerpc/Makefile: Move from here... - * sysdeps/powerpc/soft-fp/Makefile: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/Makefile: Move from here... - * sysdeps/sparc/sparc64/soft-fp/Makefile: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/qp_neg.S: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_neg.S: ... to here. - - * soft-fp/sysdeps/powerpc/q_add.c: Move from here... - * sysdeps/powerpc/soft-fp/q_add.c: ... to here. - - * soft-fp/sysdeps/powerpc/q_cmp.c: Move from here... - * sysdeps/powerpc/soft-fp/q_cmp.c: ... to here. - - * soft-fp/sysdeps/powerpc/q_cmpe.c: Move from here... - * sysdeps/powerpc/soft-fp/q_cmpe.c: ... to here. - - * soft-fp/sysdeps/powerpc/q_div.c: Move from here... - * sysdeps/powerpc/soft-fp/q_div.c: ... to here. - - * soft-fp/sysdeps/powerpc/q_dtoq.c: Move from here... - * sysdeps/powerpc/soft-fp/q_dtoq.c: ... to here. - - * soft-fp/sysdeps/powerpc/q_feq.c: Move from here... - * sysdeps/powerpc/soft-fp/q_feq.c: ... to here. - - * soft-fp/sysdeps/powerpc/q_fge.c: Move from here... - * sysdeps/powerpc/soft-fp/q_fge.c: ... to here. - - * soft-fp/sysdeps/powerpc/q_fgt.c: Move from here... - * sysdeps/powerpc/soft-fp/q_fgt.c: ... to here. - - * soft-fp/sysdeps/powerpc/q_fle.c: Move from here... - * sysdeps/powerpc/soft-fp/q_fle.c: ... to here. - - * soft-fp/sysdeps/powerpc/q_flt.c: Move from here... - * sysdeps/powerpc/soft-fp/q_flt.c: ... to here. - - * soft-fp/sysdeps/powerpc/q_fne.c: Move from here... - * sysdeps/powerpc/soft-fp/q_fne.c: ... to here. - - * soft-fp/sysdeps/powerpc/q_itoq.c: Move from here... - * sysdeps/powerpc/soft-fp/q_itoq.c: ... to here. - - * soft-fp/sysdeps/powerpc/q_lltoq.c: Move from here... - * sysdeps/powerpc/soft-fp/q_lltoq.c: ... to here. - - * soft-fp/sysdeps/powerpc/q_mul.c: Move from here... - * sysdeps/powerpc/soft-fp/q_mul.c: ... to here. - - * soft-fp/sysdeps/powerpc/q_neg.c: Move from here... - * sysdeps/powerpc/soft-fp/q_neg.c: ... to here. - - * soft-fp/sysdeps/powerpc/q_qtod.c: Move from here... - * sysdeps/powerpc/soft-fp/q_qtod.c: ... to here. - - * soft-fp/sysdeps/powerpc/q_qtoi.c: Move from here... - * sysdeps/powerpc/soft-fp/q_qtoi.c: ... to here. - - * soft-fp/sysdeps/powerpc/q_qtoll.c: Move from here... - * sysdeps/powerpc/soft-fp/q_qtoll.c: ... to here. - - * soft-fp/sysdeps/powerpc/q_qtos.c: Move from here... - * sysdeps/powerpc/soft-fp/q_qtos.c: ... to here. - - * soft-fp/sysdeps/powerpc/q_qtou.c: Move from here... - * sysdeps/powerpc/soft-fp/q_qtou.c: ... to here. - - * soft-fp/sysdeps/powerpc/q_qtoull.c: Move from here... - * sysdeps/powerpc/soft-fp/q_qtoull.c: ... to here. - - * soft-fp/sysdeps/powerpc/q_sqrt.c: Move from here... - * sysdeps/powerpc/soft-fp/q_sqrt.c: ... to here. - - * soft-fp/sysdeps/powerpc/q_stoq.c: Move from here... - * sysdeps/powerpc/soft-fp/q_stoq.c: ... to here. - - * soft-fp/sysdeps/powerpc/q_sub.c: Move from here... - * sysdeps/powerpc/soft-fp/q_sub.c: ... to here. - - * soft-fp/sysdeps/powerpc/q_ulltoq.c: Move from here... - * sysdeps/powerpc/soft-fp/q_ulltoq.c: ... to here. - - * soft-fp/sysdeps/powerpc/q_util.c: Move from here... - * sysdeps/powerpc/soft-fp/q_util.c: ... to here. - - * soft-fp/sysdeps/powerpc/q_utoq.c: Move from here... - * sysdeps/powerpc/soft-fp/q_utoq.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/q_add.c: Move from here... - * sysdeps/sparc/sparc32/soft-fp/q_add.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/q_cmp.c: Move from here... - * sysdeps/sparc/sparc32/soft-fp/q_cmp.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/q_cmpe.c: Move from here... - * sysdeps/sparc/sparc32/soft-fp/q_cmpe.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/q_div.c: Move from here... - * sysdeps/sparc/sparc32/soft-fp/q_div.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/q_dtoq.c: Move from here... - * sysdeps/sparc/sparc32/soft-fp/q_dtoq.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/q_feq.c: Move from here... - * sysdeps/sparc/sparc32/soft-fp/q_feq.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/q_fge.c: Move from here... - * sysdeps/sparc/sparc32/soft-fp/q_fge.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/q_fgt.c: Move from here... - * sysdeps/sparc/sparc32/soft-fp/q_fgt.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/q_fle.c: Move from here... - * sysdeps/sparc/sparc32/soft-fp/q_fle.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/q_flt.c: Move from here... - * sysdeps/sparc/sparc32/soft-fp/q_flt.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/q_fne.c: Move from here... - * sysdeps/sparc/sparc32/soft-fp/q_fne.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/q_itoq.c: Move from here... - * sysdeps/sparc/sparc32/soft-fp/q_itoq.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/q_mul.c: Move from here... - * sysdeps/sparc/sparc32/soft-fp/q_mul.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/q_neg.c: Move from here... - * sysdeps/sparc/sparc32/soft-fp/q_neg.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/q_qtod.c: Move from here... - * sysdeps/sparc/sparc32/soft-fp/q_qtod.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/q_qtoi.c: Move from here... - * sysdeps/sparc/sparc32/soft-fp/q_qtoi.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/q_qtos.c: Move from here... - * sysdeps/sparc/sparc32/soft-fp/q_qtos.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/q_qtoui.c: Move from here... - * sysdeps/sparc/sparc32/soft-fp/q_qtoui.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/q_qtoux.c: Move from here... - * sysdeps/sparc/sparc32/soft-fp/q_qtoux.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/q_qtox.c: Move from here... - * sysdeps/sparc/sparc32/soft-fp/q_qtox.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/q_sqrt.c: Move from here... - * sysdeps/sparc/sparc32/soft-fp/q_sqrt.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/q_stoq.c: Move from here... - * sysdeps/sparc/sparc32/soft-fp/q_stoq.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/q_sub.c: Move from here... - * sysdeps/sparc/sparc32/soft-fp/q_sub.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/q_uitoq.c: Move from here... - * sysdeps/sparc/sparc32/soft-fp/q_uitoq.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/q_util.c: Move from here... - * sysdeps/sparc/sparc32/soft-fp/q_util.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/q_uxtoq.c: Move from here... - * sysdeps/sparc/sparc32/soft-fp/q_uxtoq.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/q_xtoq.c: Move from here... - * sysdeps/sparc/sparc32/soft-fp/q_xtoq.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/qp_add.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_add.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/qp_cmp.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_cmp.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/qp_cmpe.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_cmpe.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/qp_div.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_div.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/qp_dtoq.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_dtoq.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/qp_feq.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_feq.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/qp_fge.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_fge.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/qp_fgt.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_fgt.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/qp_fle.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_fle.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/qp_flt.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_flt.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/qp_fne.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_fne.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/qp_itoq.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_itoq.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/qp_mul.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_mul.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/qp_qtod.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_qtod.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/qp_qtoi.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_qtoi.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/qp_qtos.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_qtos.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/qp_qtoui.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_qtoui.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/qp_qtoux.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_qtoux.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/qp_qtox.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_qtox.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/qp_sqrt.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_sqrt.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/qp_stoq.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_stoq.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/qp_sub.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_sub.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/qp_uitoq.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_uitoq.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/qp_util.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_util.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/qp_uxtoq.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_uxtoq.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/qp_xtoq.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/qp_xtoq.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/s_frexpl.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/s_frexpl.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/s_ilogbl.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/s_ilogbl.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/s_scalblnl.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/s_scalblnl.c: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/s_scalbnl.c: Move from here... - * sysdeps/sparc/sparc64/soft-fp/s_scalbnl.c: ... to here. - - * soft-fp/sysdeps/alpha/sfp-machine.h: Move from here... - * sysdeps/alpha/soft-fp/sfp-machine.h: ... to here. - - * soft-fp/sysdeps/i386/sfp-machine.h: Move from here... - * sysdeps/i386/soft-fp/sfp-machine.h: ... to here. - - * soft-fp/sysdeps/mips/mips64/sfp-machine.h: Move from here... - * sysdeps/mips/mips64/soft-fp/sfp-machine.h: ... to here. - - * soft-fp/sysdeps/mips/sfp-machine.h: Move from here... - * sysdeps/mips/soft-fp/sfp-machine.h: ... to here. - - * soft-fp/sysdeps/powerpc/sfp-machine.h: Move from here... - * sysdeps/powerpc/soft-fp/sfp-machine.h: ... to here. - - * soft-fp/sysdeps/sparc/sparc32/sfp-machine.h: Move from here... - * sysdeps/sparc/sparc32/soft-fp/sfp-machine.h: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/sfp-machine.h: Move from here... - * sysdeps/sparc/sparc64/soft-fp/sfp-machine.h: ... to here. - - * soft-fp/sysdeps/powerpc/Versions: Move from here... - * sysdeps/powerpc/soft-fp/Versions: ... to here. - - * soft-fp/sysdeps/sparc/sparc64/Versions: Move from here... - * sysdeps/sparc/sparc64/soft-fp/Versions: ... to here. - - * libio/oldiofsetpos64.c: iofsetpos was introduced in glibc 2.1, - change symbol version. - * libio/oldiofgetpos64.c: Likewise. - Reported by Martin v. Loewis . - - * locale/programs/ld-ctype.c (charclass_charcode_ellipsis): Fix - typo. - Reported by dyky@kondara.org, closes PR libc/1886. - - * stdlib/tst-strtod.c: Add testcases for denormal numbers from PR - libc/1880. - -2000-09-04 Ulrich Drepper - - * iconvdata/run-iconv-test.sh: Add code to immediately stop the - script when ^C is hit. - - * locale/programs/localedef.c (construct_output_path): Correct - computation of endp after asprintf. - * locale/programs/locfile.c (write_locale_data): Don't add extra - slash in filename. - -2000-09-05 Andreas Jaeger - - * scripts/config.guess: New upstream version. - * scripts/config.sub: Likewise. - * manual/texinfo.tex: Likewise. - -2000-09-04 Andreas Schwab - - * elf/Makefile (all-dl-routines): New variable. - (elide-routines.os): Use it instead of $(dl-routines). - (all-rtld-routines): New variable. - (extra-objs): Use it instead of $(rtld-routines). - ($(objpfx)dl-allobjs.os): Likewise. - * sysdeps/ia64/Makefile [$(subdir) = elf]: Modify - sysdep-dl-routines and sysdep_routines instead of rtld-routines - and dl-routines. - -2000-09-03 Bruno Haible - - * iconv/gconv_trans.c (__gconv_translit_find): Update open_count. - Set fname to NULL if the module wasn't found. - -2000-09-03 Bruno Haible - - * iconv/gconv_trans.c (__gconv_translit_find): Don't set need_so to - true if trans->name already ends in ".so". - -2000-09-03 Bruno Haible - - * iconv/gconv_int.h (__gconv_release_shlib): Change return type to - void. - * iconv/gconv_dl.c (do_release_shlib): Don't decrement the counter - below -TRIES_BEFORE_UNLOAD-1, to avoid wraparound. - (__gconv_release_shlib): Change return type to void. - * iconv/gconv_builtin.c (__gconv_get_builtin_trans): Don't set - step->__counter here. - * iconv/gconv_db.c (free_derivation): Don't call a step's destructor - if the reference is zero. - (release_step): New function. - (gen_steps): Always initialize the __counter to 1. Use release_step. - Don't call the destructor on the step whose initializer failed. - (increment_counter): Use release_step. Don't normally run destructors - here. - (__gconv_close_transform): Use release_step. - -2000-09-03 Bruno Haible - - * iconv/gconv_simple.c (encoding_mask, encoding_byte): Remove. - (__gconv_transform_internal_utf8) [BODY]: Use simple shifts instead. - -2000-09-03 Bruno Haible - - * iconvdata/euc-tw.c (BODY for FROM_LOOP): Initialize ch2 correctly. - If the first byte is 0x8E, don't ask for 4 bytes until it has been - verified that the second byte is valid. Leave it to cns11643_to_ucs4 - to check for incomplete input. - * iconvdata/cns11643.h (cns11643_to_ucs4): The plane number is - ch - 0x20 - offset, not ch - 0x21 - offset. Upper bound for - __cns11643l1_to_ucs4_tab is 0x21f2, not 0x2196. - (ucs4_to_cns11643): Fix mapping for ranges 0x3105..0x3129 and - 0x9f9d..0x9fa5. - * iconvdata/cns11643l1.h (cns11643l1_to_ucs4): Upper bound for - __cns11643l1_to_ucs4_tab is 0x21f2, not 0x2196. - (ucs4_to_cns11643l1): Fix mapping for range 0x3105..0x3129. - * iconvdata/cns11643l1.c (__cns11643l1_from_ucs4_tab6): Extend - upto index 0x0052. - -2000-09-03 Bruno Haible - - * iconv/gconv_db.c (find_derivation): Always use the least-cost - solution. - -2000-09-03 Bruno Haible +2001-01-13 Jakub Jelinek - * iconvdata/big5.c (BODY for FROM_LOOP): Bytes 0x81..0xA0, 0xFA..0xFF - are invalid. + * inet/ether_ntoh.c (lookup_function): Change arguments to match + _nss_*_getntohost_r prototype. + (ether_ntohost): Pass errno pointer to NSS function. -2000-09-03 Bruno Haible +2001-01-12 Franz Sirl - * iconvdata/jis0208.c (__jis0208_to_ucs): Map EUC-JP 0xA1C0 to U+005C. - * iconvdata/jis0212.c (__jisx0212_to_ucs): Map EUC-JP 0x8FA2B7 to - U+007E. + * sysdeps/unix/sysv/linux/powerpc/bits/mman.h (MS_SYNC): Fix value. + (MAP_LOCKED): New definition. + (MAP_NORESERVE): New definition. -2000-09-03 Bruno Haible +2001-01-12 Ulrich Drepper - * iconvdata/sjis.c (cjk_block1): Map 0x815F to U+005C. + * assert/assert.h: Use static_cast instead of C-style cast for C++. + Patch by Enrico Scholz . -2000-09-03 Bruno Haible +2001-01-12 Ben Collins - * iconvdata/iso_6937-2.c (to_ucs4): Map 0xB4 to U+00D7. + * sysdeps/generic/segfault.c (install_handler): Use access, not + __access. -2000-09-03 Bruno Haible +2001-01-12 Andreas Jaeger - * iconvdata/tst-tables.sh: New file. - * iconvdata/tst-table.sh: New file. - * iconvdata/tst-table-from.c: New file. - * iconvdata/tst-table-to.c: New file. - * iconvdata/tst-table-charmap.sh: New file. - * iconvdata/Makefile (test-srcs): Set to tst-table-from tst-table-to. - (distribute): Add tst-tables.sh, tst-table.sh, tst-table-charmap.sh, - tst-table-from.c, tst-table-to.c, EUC-JP.irreversible, - ISIRI-3342.irreversible, SJIS.irreversible. - (tests): Add dependency on tst-tables.out. - (tst-tables.out, tst-tables-clean): New rules. - (do-tests-clean, common-mostlyclean): Require tst-tables-clean. - * iconvdata/ISIRI-3342.irreversible: New file. - * iconvdata/EUC-JP.irreversible: New file. - * iconvdata/SJIS.irreversible: New file. + * posix/fnmatch_loop.c (FCT): Remove signed warnings. + * posix/wordexp.c (do_parse_glob): Likewise. + * sysdeps/posix/sigblock.c (__sigblock): Likewise. + * sysdeps/posix/sigsetmask.c (__sigsetmask): Likewise. + * elf/dl-open.c (_dl_open): Likewise. + * elf/dl-close.c (_dl_close): Likewise. + * elf/dl-load.c (_dl_map_object): Likewise. + * iconv/iconv_prog.c (process_fd): Likewise. + * stdio-common/vfscanf.c (_IO_vfscanf): Likewise. -2000-09-04 Ulrich Drepper + * locale/localeinfo.h (struct locale_data): Use __flexarr instead + of a zero-length array. - * manual/locale.texi (General Numeric): Update description of - representation of the grouping information in the locale data. - Patch by Gaute B. Strokkenes . +2001-01-11 Jakub Jelinek -2000-09-04 Andreas Jaeger + * stdlib/cxa_atexit.c (__cxa_atexit): Cast to (void *, int) func. + * stdlib/cxa_finalize.c (__cxa_finalize): Add hidden second argument. + * stdlib/cxa_on_exit.c: Remove. + * stdlib/Makefile: Revert last patch. + * stdlib/Versions: Likewise. + * include/stdlib.h: Likewise. + * stdlib/exit.h: Revert last patch. + (struct exit_function): Add second argument to cxa fn. + * stdlib/exit.c: Revert last patch. + (exit): Add hidden second argument. - * locale/programs/ld-monetary.c (monetary_read): Fix typo. - * iconv/iconv_prog.c (options): Fix typo. - Reported by dyky@kondara.org, closes PR libc/1885. +2001-01-11 H.J. Lu -2000-09-04 Andreas Jaeger + * elf/dl-libc.c (do_dlopen): Move DL_STATIC_INIT to ... + * elf/dl-open.c (_dl_open): Here. + * sysdeps/unix/sysv/linux/ia64/dl-static.c (_dl_static_lock): + Make it static. + (_dl_static_init): Initialize the variables every time when possible. + * sysdeps/unix/sysv/linux/ia64/ldsodefs.h (DL_STATIC_INIT): + Undefine it first. - * sysdeps/generic/fegetenv.c: It's __fegetenv. - Reported by Rob Levin . +2001-01-11 Ulrich Drepper -2000-09-03 Ulrich Drepper + * stdlib/Makefile (routines): Add cxa_on_exit. + * stdlib/Versions [libc] (GLIBC_2.2.1): Add __cxa_on_exit. + * stdlib/cxa_on_exit.c: New file. + * include/stdlib.h: Add prototype for __cxa_on_exit. + * stdlib/exit.c: Handle ef_cxa2. + * stdlib/exit.h (enum): Add ef_cxa2. + (struct exit_function): Add cxa2. - * time/sys/time.h (gettimeofday): Move restrict for tz parameter - to the typedefs of __timezone_ptr_t. - Reported by MATSUMURA Hiromitsu . + * Versions.def [ld]: Add GLIBC_2.2.1. -2000-09-02 Jakub Jelinek +2001-01-10 H.J. Lu - * nss/nss_files/files-hosts.c (HOST_DB_LOOKUP): Increment counter in - the loop. + * elf/dl-libc.c (do_dlopen): Call DL_STATIC_INIT for static binaries. + * sysdeps/unix/sysv/linux/ia64/Makefile (sysdep-dl-routines): Add + dl-static. + * sysdeps/unix/sysv/linux/ia64/Versions (ld): Add _dl_var_init. + * sysdeps/generic/ldsodefs.h (DL_STATIC_INIT): Defined if not defined. + * sysdeps/unix/sysv/linux/ia64/ldsodefs.h: New file. + * sysdeps/unix/sysv/linux/ia64/dl-static.c: New file. + * sysdeps/unix/sysv/linux/ia64/Dist: Add dl-static.c. -2000-09-01 H.J. Lu +2001-01-11 Ulrich Drepper - * Makeconfig (built-program-cmd): Don't use the dynamic linker - to run a binary if it is in $(tests-static). + * libio/stdio.h: Remove definition of off_t. - * Rules (binaries-static): Add $(tests-static). +2001-01-11 Andreas Jaeger -2000-09-02 Andreas Jaeger + * wcsmbs/tst-mbrtowc.c (utf8_test): New function by Markus Kuhn + . - * sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Fixes for fcntl64. +2001-01-10 Ulrich Drepper - * libio/fmemopen.c (fmemopen_close): Revert one part of last - patch. + * sunrpc/Makefile (distribute): Add errqueue.h. -2000-09-01 Ulrich Drepper +2001-01-10 H.J. Lu - * iconvdata/big5hkscs.c: Regenerated from charmap. - * iconvdata/testdata/BIG5HKSCS: Regenerated. - * iconvdata/testdata/BIG5HKSCS..UTF8: Regenerated. + * sysdeps/ia64/dl-machine.h (TRAMPOLINE_TEMPLATE): Also preserve + r9, r10 and r11 for language specific registers. - * libio/fmemopen.c (fmemopen_seek): Add default case in switch - statement. General cleanup. +2001-01-10 Jakub Jelinek -2000-08-31 Bruno Haible + * sunrpc/clnt_udp.c (clntudp_bufcreate): Set IP_RECVERR on the + UDP socket. + (clntudp_call): Handle MSG_ERRQUEUE. + * sysdeps/generic/errqueue.h: New file. + * sysdeps/unix/sysv/linux/errqueue.h: New file. - * wctype/wcfuncs.c (iswblank): New function. - * wctype/wcfuncs_l.c (__iswblank_l): New function. - * wctype/wcextra.c: Remove file. - * wctype/wcextra_l.c: Remove file. - * wctype/Makefile (distribute): Remove wcextra and wcextra_l. +2001-01-10 H.J. Lu -2000-08-31 Bruno Haible + * sysdeps/unix/sysv/linux/ia64/syscalls.list (s_getpagesize): Removed. - * locale/programs/ld-collate.c (collate_output): Remove redundant - assert call. - * string/strcoll.c: Likewise. - * string/strxfrm.c: Include assert.h. Add assert calls like in - string/strcoll.c. +2001-01-10 Joseph S. Myers -2000-08-31 Bruno Haible + * CONFORMANCE: Update. - * locale/categories.def (_NL_COLLATE_HASH_SIZE, - _NL_COLLATE_HASH_LAYERS, _NL_COLLATE_NAMES, _NL_CTYPE_NAMES, - _NL_CTYPE_HASH_SIZE, _NL_CTYPE_HASH_LAYERS): Remove definitions. - * locale/langinfo.h (_NL_COLLATE_HASH_SIZE, _NL_COLLATE_HASH_LAYERS, - _NL_COLLATE_NAMES): Rename to _NL_COLLATE_GAP1/2/3 respectively. - (_NL_CTYPE_NAMES): Rename to _NL_CTYPE_GAP3. - (_NL_CTYPE_GAP3): Rename to _NL_CTYPE_GAP4. - (_NL_CTYPE_HASH_SIZE, _NL_CTYPE_HASH_LAYERS): Rename to - _NL_CTYPE_GAP5/6 respectively. +2001-01-09 Ulrich Drepper - * locale/C-ctype.c (_nl_C_LC_CTYPE): Update. - * ctype/ctype-info.c (__ctype_names, __ctype_width): Remove variables. - * locale/lc-ctype.c (_nl_postload_ctype): Assume new locale format. - Don't initialize __ctype_names and __ctype_width. - * wctype/cname-lookup.h: Remove file. - * wctype/Makefile (distribute): Remove cname-lookup.h. - * wctype/wchar-lookup.h: Include stdint.h. - * wctype/wctype.c (__wctype): Assume new locale format. - * wctype/wctype_l.c (__wctype_l): Likewise. - * wctype/iswctype.c: Don't include cname-lookup.h. - (__iswctype): Assume new locale format. - * wctype/iswctype_l.c: Don't include cname-lookup.h. - (__iswctype_l): Assume new locale format. - * wctype/wctrans.c: Don't include ctype.h. - (wctrans): Assume new locale format. - * wctype/wctrans_l.c (__wctrans_l): Likewise. - * wctype/towctrans.c: Don't include cname-lookup.h. - (__towctrans): Assume new locale format. - * wctype/towctrans_l.c: Don't include cname-lookup.h. - (__towctrans_l): Assume new locale format. - * wctype/wcfuncs.c: Don't include ctype.h and cname-lookup.h. Include - localeinfo.h instead. - (__NO_WCTYPE): Remove unused macro. - (__ctype32_b, __ctype32_toupper, __ctype32_tolower): Remove - declarations. - (iswalnum, iswalpha, iswcntrl, iswdigit, iswlower, iswgraph, iswprint, - iswpunct, iswspace, iswupper, iswxdigit): Assume new locale format. - (towlower, towupper): Likewise. - * wctype/wcfuncs_l.c: Don't include cname-lookup.h. Include - localeinfo.h instead. - (__NO_WCTYPE): Remove unused macro. - (__iswalnum_l, __iswalpha_l, __iswcntrl_l, __iswdigit_l, __iswlower_l, - __iswgraph_l, __iswprint_l, __iswpunct_l, __iswspace_l, __iswupper_l, - __iswxdigit_l): Assume new locale format. - (__towlower_l, __towupper_l): Likewise. - * wcsmbs/wcwidth.h: Don't include cname-lookup.h. - (__ctype32_b): Remove declaration. - (internal_wcwidth): Assume new locale format. - * locale/programs/ld-ctype.c (struct locale_ctype_t): Remove fields - plane_size, plane_cnt, names, width. Rename map to map_b, rename map32 - to map32_b, rename width_3level to width. - (ctype_output): Always create new locale format. Don't emit - _NL_CTYPE_NAMES, _NL_CTYPE_HASH_SIZE, _NL_CTYPE_HASH_LAYERS any more. - (allocate_arrays): Always create new locale format. + * sysdeps/generic/elf/backtracesyms.c (__backtrace_symbols): + Minimal cleanups. Add assert to ensure memory handling is correct. - * locale/C-collate.c (_nl_C_LC_COLLATE): Update. - * locale/weightwc.h (findidx): Assume new locale format. - * string/strcoll.c (wcscoll): Remove local variables size, layers, - names. - * string/strxfrm.c (wcsxfrm): Likewise. - * posix/fnmatch_loop.c (internal_fnwmatch): Likewise. Change type of - local variable collseq to 'const char *'. - (SUFFIX): Don't use, don't undefine. - * posix/fnmatch.c: Remove SUFFIX definition. - * locale/programs/ld-collate.c (struct locale_collate_t): Remove - fields plane_size, plane_cnt, wcheads, wcseqorder. Rename - wcheads_3level to wcheads, rename wcseqorder_3level to wcseqorder. - (collate_finish): Always create new locale format. Remove local - variables min_total, act_size. - (collate_output): Always create new locale format. Remove local - variables table_size, names, tablewc. Rename tablewc_3level to - tablewc. + * manual/conf.texi (File Minimums): Fix _POSIX_PATH_MAX value. + Reported by Ben Collins . -2000-08-31 Bruno Haible + * time/strftime.c (my_strftime): Mark previous GNU extensions + which are now in C99 as such. - * locale/programs/ld-collate.c (obstack_int32_grow, - obstack_int32_grow_fast): New inline functions. - (output_weightwc, collate_output): Use them where possible. +2001-01-08 Ulrich Drepper -2000-09-01 Ulrich Drepper + * elf/rtld.c (process_envvars): Place output files for profiling + in SUID binaries in /var/profile. - * libio/libio.h (_IO_flockfile, _IO_funlockfile): Fix typo in last - patch (_mode -> _flags). + * elf/dl-load.c (_dl_map_object): Don't look in cache for + preloading in SUID binaries. - * libio/Makefile (headers): Add stdio_ext.h. - (routines): Add __fbufsize, __freading, __fwriting, __freadable, - __fwritable, __flbf, __fpurge, __fpending, and __fsetlocking. - * libio/Versions [libc] (GLIBC_2.2): Add __fbufsize, __freading, - __fwriting, __freadable, __fwritable, __flbf, __fpurge, __fpending, - __fsetlocking, and _flushlbf. - * libio/__fbufsize.c: New file. - * libio/__flbf.c: New file. - * libio/__fpending.c: New file. - * libio/__fpurge.c: New file. - * libio/__freadable.c: New file. - * libio/__freading.c: New file. - * libio/__fsetlocking.c: New file. - * libio/__fwritable.c: New file. - * libio/__fwriting.c: New file. - * libio/stdio_ext.h: New file. - * libio/genops.c (_IO_flush_all_linebuffered): Add alias _flushlbf. - * libio/libio.h (_IO_USER_LOCK): Define. - [_IO_MTSAFE_IO] (_IO_flockfile, _IO_funlockfile): Add macros which - test _IO_USER_LOCK flag first. + * elf/dl-profile.c (_dl_start_profile): Open the output file with + O_NOFOLLOW if possible. - * iconv/gconv_open.c (__gconv_open): Set res to __GCONV_NOMEM is - malloc fails. + * include/stdlib.h: Add __posix_openpt declaration. + * stdlib/stdlib.h: Add posix_openpt declaration. + * login/Versions: Add posix_openpt for GLIBC_2.2.1. + * sysdeps/generic/getpt.c: Define posix_openpt. + * sysdeps/unix/bsd/getpt.c: Likewise. + * sysdeps/unix/sysv/linux/getpt.c: Likewise. -2000-09-01 Andreas Jaeger + * time/Makefile (tests): Add tst-mktime. + * time/tst-mktime.c: New file. - * sysdeps/unix/sysv/linux/bits/fcntl.h: Always fail. + * posix/tst-dir.c (main): One more mkdir() test. - * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: New file. + * sysdeps/unix/sysv/linux/ia64/getpagesize.c (__getpagesize): + Remove getpagesize syscall. We assume that the pagesize is always + determined from the auxiliary vector. -2000-08-31 Ulrich Drepper + * intl/dcigettext.c: Fix a few warnings. + Patch by Bruno Haible . - * math/Makefile (tests): Add tst-defintions. - * math/tst-definitions.c: New file. +2001-01-08 Andreas Jaeger - * stdlib/Makefile (headers): Add bits/wchar.h. - * sysdeps/unix/sysv/linux/i386/bits/wchar.h: New file. - * sysdeps/generic/bits/wchar.h: New file. - * sysdeps/generic/stdint.h: Include . Use values in this - file to define WCHAR_MIN and WCHAR_MAX. - Change UINT*8_MAX and UIN*16_MAX value to type int. - * wcsmbs/wchar.h: Include . Use values in this - file to define WCHAR_MIN and WCHAR_MAX. - * sysdeps/alpha/fpu/bits/mathdef.h: Make FP_ILOGB0 and FP_ILOGBNAN - int values. - * sysdeps/arm/fpu/bits/mathdef.h: Likewise. - * sysdeps/generic/bits/mathdef.h: Likewise. - * sysdeps/i386/fpu/bits/mathdef.h: Likewise. - * sysdeps/m68k/fpu/bits/mathdef.h: Likewise. - * sysdeps/powerpc/fpu/bits/mathdef.h: Likewise. - * sysdeps/sparc/fpu/bits/mathdef.h: Likewise. - * locale/locale.h (struct lconv): Add __ prefix to the new members - if not C99. - * sysdeps/generic/inttypes.h: Remove unnecessary imaxabs and - imaxdiv optimizations. - * sysdeps/wordsize-32/lldiv.c: Add hack to make alias work. - * sysdeps/wordsize-64/ldiv.c: Likewise. - * sysdeps/alpha/fpu/bits/fenv.h: Change type of FE_*_ENV macros to - const fenv_t*. - * sysdeps/generic/bits/fenv.h: Likewise. - * sysdeps/i386/fpu/bits/fenv.h: Likewise. - * sysdeps/ia64/bits/fenv.h: Likewise. - * sysdeps/m68k/fpu/bits/fenv.h: Likewise. - * sysdeps/mips/bits/fenv.h: Likewise. - * sysdeps/s390/fpu/bits/fenv.h: Likewise. - * sysdeps/sparc/fpu/bits/fenv.h: Likewise. + * io/test-lfs.c (do_test): Check lseek64 return for EINVAL. Reported by Joseph S. Myers . - * inet/rcmd.c: Use *stat64 instead of *stat internally. - * inet/ruserpass.c: Likewise. - * catgets/open_catalog.c: Likewise. - * intl/loadmsgcat.c: Likewise. - * io/getdirname.c: Likewise. - * locale/loadlocale.c: Likewise. - * misc/getusershell.c: Likewise. - * stdlib/canonicalize.c: Likewise. - * sysdeps/posix/euidaccess.c: Likewise. - * sysdeps/posix/isfdtype.c: Likewise. - * sysdeps/posix/posix_fallocate.c: Likewise. - * sysdeps/posix/tempname.c: Likewise. - * sysdeps/unix/grantpt.c: Likewise. - * sysdeps/unix/opendir.c: Likewise. - * sysdeps/unix/sysv/linux/fstatvfs.c: Likewise. - * sysdeps/unix/sysv/linux/internal_statvfs.c: Likewise. - * sysdeps/unix/sysv/linux/ptsname.c: Likewise. - * sysdeps/unix/sysv/linux/statvfs.c: Likewise. - * sysdeps/unix/sysv/linux/ttyname.c: Likewise. - * sysdeps/unix/sysv/linux/ttyname_r.c: Likewise. - * sysvipc/ftok.c: Likewise. - * time/getdate.c: Likewise. - - * time/getdate.c: Add extra access test. - -2000-08-31 Ulrich Drepper - - * version.h (VERSION): Bump to 2.1.93. - - * sysdeps/unix/sysv/linux/powerpc/Dist: Add fe_nomask.c. - * sysdeps/unix/sysv/linux/i386/Dist: Add olddirent.h. - - * intl/Makefile (tests): Depend in mtrace-tst-gettext. - Make this a new rule depending on tst-gettext.out and run mtrace. - * intl/tst-gettext.c: Call mtrace. - * intl/tst-gettext.sh: Put MALLOC_TRACE in environment of tst-gettext. - - * elf/dl-reloc.c: Add a few more __builtin_expect. - - * configure.in: Remove --with-gettext option. - - * intl/dcigettext.c (free_mem): Correct freeing of - _nl_domain_bindings list. - - * sysdeps/generic/setenv.c (free_mem): New function. Free all - allocated memory. - - * intl/locale.alias: Add aliases for bokmal and nynorsk. - - * locale/iso-639.def: Fix 639-1 code for Bokmal. - - * stdio-common/itoa-digits.c: Move upper digits to... - * stdio-common/itoa-udigits.c: ...here. New file. - * stdio-common/Makefile (routines): Add itoa-udigits. - - * sysdeps/i386/dl-machine.h (elf_machine_rel): For the version to - relocate ld.so don't add supprt for relocations which should not - appear in ld.so. - - * malloc/malloc.c (ptmalloc_init): Optimize a bit by not calling - __secure_getenv. Instead test __libc_enable_secure once. - - * io/pwd.c (main): Provide a good example, use *_unlocked function. - -2000-08-30 Ulrich Drepper - - * iconv/gconv_conf.c (insert_module): Take extra parameter to decide - whether the new record should be freed if it's a duplicate. - (add_module): Adjust insert_module call. - (__gconv_read_conf): Likewise. - * iconvdata/Makefile (generated): Add tst-loading.mtrace and - mtrace-tst-loading. - (tests): Make $(objpfx)mtrace-tst-loading a dependency. Add rule. - - * sysdeps/generic/ldsodefs.h: Add declaration for _dl_all_dirs and - _dl_all_init_dirs. - * include/link.h (struct r_search_path_struct): New. - (struct link_map): Use it for l_rpath_dirs and l_runpath_dirs. - * elf/Versions [ld] (GLIBC_2.2): Add _dl_all_dirs and - _dl_all_init_dirs. - * elf/dl-close.c (_dl_close): Free l_rpath_dirs and l_runpath_dirs. - * elf/dl-libc.c (free_mem): Free _dl_all_dirs list except elements - added at startup time. - * elf/dl-load.c: Fix memory handling. r_search_path_struct - contains element to remember fact that we can free memory. - (all_dirs): Renamed to _dl_all_dirs. Made global. - (_dl_init_all_dirs): New variable. - (fillin_rpath): Save one malloc call. - (decompose_rpath): Change interface. New first parameter points to - r_search_path_struct. - (_dl_init_paths): Adjust for changes. Mark all memory as not - deletable. Set _dl_init_all_paths value. - (open_path): Remove may_free_dirs parameter. r_search_path_elem *** - parameter replaced with r_search_path_struct *. Information about - freeing now contained in r_search_path_struct. - (_dl_map_object): Adjust for above changes. - - * elf/dl-open.c (dl_open_worker): Change format of debug info a bit. - - * elf/dl-load.c (fillin_rpath): Only check for trusted directories - when adding new entries. - - * elf/dl-load.c (fillin_rpath): Make local copy of where string - since the object being loaded can be unloaded. - - * iconvdata/Makefile (tests): Add tst-loading. - * iconvdata/tst-loading.c: New file. - -2000-08-29 Bruno Haible - - * stdio-common/vfscanf.c (_IO_vfscanf): Back out last ungetc change. - When comparing a char with an int, always cast the char to - 'unsigned char'. New macro ungetc_not_eof, to avoid warnings when - compiling with -funsigned-char. Use UCHAR_MAX+1 instead of UCHAR_MAX. - -2000-08-30 Ulrich Drepper - - * time/strftime.c (my_strftime): Add compatibility code for use - outside glibc. Patch by Jim Meyering . - - * sysdeps/posix/getaddrinfo.c (gaih_local): uname does not everywhere - return 0 for success but always < 0 on failure. - - * nss/getXXbyYY_r.c: Define result to *result before including - digits_dots.c. - -2000-08-30 Andreas Jaeger - - * math/gen-libm-test.pl (parse_ulps): Remove extra \. - -2000-08-29 Ulrich Drepper - - * iconvdata/big5hkscs.c: Rewritten. Regenerate data from the - official file. - * iconvdata/TESTS: Add BIG5HKSCS entry. - * iconvdata/testdata/BIG5HKSCS: New file. - * iconvdata/testdata/BIG5HKSCS..UTF8: New file. - - * iconvdata/big5.c (BODY for FROM_LOOP): Remove condition which is - always true. - - * libio/iogetline.c: Set mode before the loop in case n==0. - * libio/iogetwline.c: Likewise. - -2000-08-29 H.J. Lu - - * libio/fileops.c (new_do_write): Check fp->_mode <= 0 instead - of fp->_mode < 0. - (_IO_new_file_overflow): Likewise. - * libio/genops.c (_IO_flush_all): Likewise. - * libio/ioftell.c (_IO_ftell): Likewise. - -2000-08-29 Akira Higuchi - - * iconv/gconv_db.c (increment_counter): Reset __init_fct, __fct, - and __end_fct fields of struct __gconv_step. - * iconv/Makefile (tests): Add iconv-bug2. - * iconv/iconv-bug2.c: New file. - - * iconvdata/euc-kr.c (BODY for FROM_LOOP): Pass 'inend - inptr' - instead of 'inptr - inend' to ksc5601_to_ucs4. - - * iconvdata/sjis.c (BODY for FROM_LOOP): Allow 0x7f character. - - * iconvdata/iso-2022-cn.c (BODY for FROM_LOOP): If an incomplete - character or shift sequence is found at the end of the input - string, return__GCONV_INCOMPLETE_INPUT instead of - __GCONV_EMPTY_INPUT. - * iconvdata/iso-2022-jp.c (BODY for FROM_LOOP): Likewise. - * iconvdata/iso-2022-kr.c (BODY for FROM_LOOP): Likewise. - - * iconvdata/iso-2022-jp.c (BODY for FROM_LOOP): Return - __GCONV_ILLEGAL_INPUT for 8bit characters. - -2000-08-29 Ulrich Drepper - - * signal/signal.h (sigpause): Move __THROW before __asm__. - - * inet/rcmd.c (__checkhost_sa): If getnameinfo succeeds but the - names don't match don't return. - Patch by Olaf Kirch . - -2000-08-28 Ulrich Drepper - - * time/strftime.c (my_strftime): Handle # flag for %b as well. +2001-01-08 Ulrich Drepper -2000-08-27 H.J. Lu + * sysdeps/generic/segfault.c (install_handler): Check output file + name with access(). - * posix/Makefile (otherlibs): Add for building with static-nss - for "make check". + * resolv/res_query.c: Use simply getenv() for HOSTALIASES. + * sysdeps/generic/unsecvars.h (UNSECURE_ENVVARS): Add HOSTALIASES. -2000-08-28 Ulrich Drepper + * sysdeps/generic/unsecvars.h (UNSECURE_ENVVARS): Add missing comma. - * libio/stdio.h: Add fmemopen prototype. + * malloc/memusage.c (me): Use access() to determine whether we + should write the output file or not. -2000-08-25 Andreas Jaeger + * libio/bits/stdio.h (printf): Define macro to map printf call to + fprintf which gcc can optimize. + * stdio-common/printf.c: Undefine printf. - * libio/Makefile (routines): Add fmemopen. - (tests): Add test-fmemopen. - * libio/Versions: Add fmemopen with version GLIBC_2.2. - * libio/test-fmemopen.c: New file. - * libio/fmemopen.c: New file. - Patches by Hanno Mueller . +2001-01-07 Ulrich Drepper -2000-08-28 Ulrich Drepper + * sysdeps/generic/bits/byteswap.h (__bswap_64): Partly revert last + patch. We must use unsigned int for l member of union. - * sysdeps/unix/sysv/linux/ia64/bits/sigstack.h: Prevent double - inclusion. Patch by Jes Sorensen . + * sysdeps/powerpc/elf/libc-start.c (__libc_start_main): Don't call + _dl_aux_init for shared libraries. - * locale/localeinfo.h (LIMAGIC): Change base number to 0x20000828 - to avoid crashing statically linked applications. + * sysdeps/unix/sysv/linux/glob64.c: Moved to ... + * sysdeps/gnu/glob64.c: ...here. New file. -2000-08-27 Bruno Haible +2001-01-07 Ben Collins - * string/strxfrm.c (strxfrm, wcsxfrm): Include . - If nrules == 0 and srclen < n, copy only srclen + 1 characters. + * manual/examples/longopt.c: Make the "struct option" a little + more like it should be, adding usage of required_argument, + noargument and such, and also setting the options string right. - * sysdeps/generic/getdomain.c (getdomainname): Include . - If the result is fits in the buffer, copy only as many bytes as needed. + * manual/sysinfo.texi (Load Average): New section, documents + getloadavg(). - * sysdeps/generic/_strerror.c (__strerror_r): Don't zero-fill the - buffer after copying numbuf into it. - * sysdeps/mach/_strerror.c (__strerror_r): Likewise. +2001-01-06 Ulrich Drepper -2000-08-27 Bruno Haible + * version.h (VERSION): Bump to 2.2.1. - * posix/confstr.c (confstr): When string_len > len, NUL-terminate - the result. When string_len < len, don't clear the rest of the buffer. + * sysdeps/unix/sysv/linux/mips/Dist: Remove sys/acct.h. + * sysdeps/alpha/Dist: Add alphaev6/stxncpy.S and alphaev6/stxcpy.S. + * sysdeps/unix/sysv/aix/Dist: Add uitrunc.c, savef.S, and restf.S. + * dlfcn/Makefile (distribute): Add errmsg1mod.c. + * Makefile (distribute): Add include/libc-internal.h. + * libio/Makefile (distribute): Avoid overwriting. -2000-08-27 Bruno Haible + * iconvdata/ibm937.c (BODY to IBM937): Correct several mistakes in + buffer and table handling. - Support for new LC_COLLATE format. - * locale/coll-lookup.h: New file. - * locale/weightwc.h (findidx): When size == 0, call - collidx_table_lookup. - * wcsmbs/wcscoll.c: Include coll-lookup.h. - * wcsmbs/wcsxfrm.c: Likewise. - * posix/fnmatch.c: Likewise. - * posix/fnmatch_loop.c (internal_fnwmatch): When size == 0, call - collseq_table_lookup. - * locale/programs/3level.h: New file. - * locale/programs/ld-ctype.c: (wcwidth_table, wctrans_table): Define - by including "3level.h". - * locale/programs/ld-collate.c (wchead_table, collidx_table, - collseq_table): New types, defined by including "3level.h". - (locale_collate_t): New wcheads_3level, wcseqorder_3level fields. - (encoding_mask, encoding_byte): Remove. - (utf8_encode): Use simple shifts instead. - (collate_finish): When !oldstyle_tables, set plane_size and plane_cnt - to 0, and initialize and fill wcheads_3level and wcseqorder_3level. - (collate_output): New local variable tablewc_3level. When - !oldstyle_tables, set table_size to 0 and names to NULL and fill - tablewc_3level instead of tablewc. Change format of TABLEWC and - COLLSEQWC entries written to the file. - * locale/C-collate.c (collseqwc): Change format. - (_nl_C_LC_COLLATE): Set HASH_SIZE and HASH_LAYERS to 0, change format - of COLLSEQWC. - * locale/Makefile (distribute): Add coll-lookup.h, programs/3level.h. +2001-01-05 H.J. Lu -2000-08-27 Bruno Haible + * elf/dl-support.c (non_dynamic_init): Move the auxiliary + vector checking to ... + (_dl_aux_init): Here. New function. Defined only if + HAVE_AUX_VECTOR is defined. - * locale/programs/ld-ctype.c (MAX_CHARNAMES_IDX): New macro. - (locale_ctype_t): New charnames_idx field. - (ctype_startup): Initialize charnames_idx field. - (find_idx): Speed up dramatically by using charnames_idx inverse table. + * sysdeps/generic/libc-start.c (__libc_start_main): Call + _dl_aux_init for static binaries if HAVE_AUX_VECTOR is defined. -2000-08-27 Bruno Haible + * sysdeps/powerpc/elf/libc-start.c (__libc_start_main): Call + _dl_aux_init. - * locale/C-ctype.c: Switch to new locale format. - (_nl_C_LC_CTYPE_names): Remove array. - (STRUCT_CTYPE_CLASS): New macro. - (_nl_C_LC_CTYPE_class_{upper,lower,alpha,digit,xdigit,space,print, - graph,blank,cntrl,punct,alnum}, _nl_C_LC_CTYPE_map_{toupper,tolower}): - New three-level tables. - (_nl_C_LC_CTYPE_width): Change from array to three-level table. - (_nl_C_LC_CTYPE): Fix nstrings value. Set HASH_SIZE and HASH_LAYERS - to 0. Change WIDTH format. Set CLASS_OFFSET and MAP_OFFSET. Add - 12 class tables and 2 map tables at the end. - * ctype/ctype-info.c (_nl_C_LC_CTYPE_names): Remove declaration. - (_nl_C_LC_CTYPE_class_{upper,lower,alpha,digit,xdigit,space,print, - graph,blank,cntrl,punct,alnum}, _nl_C_LC_CTYPE_map_{toupper,tolower}): - New declarations. - (b): Remove trailing semicolon. - (__ctype_names, __ctype_width): Don't initialize. - (__ctype32_wctype, __ctype32_wctrans, __ctype32_width): Initialize. + * sysdeps/unix/sysv/linux/ldsodefs.h (DL_FIND_AUXV): Removed. + (HAVE_AUX_VECTOR): Defined. + (_dl_aux_init): Declared. -2000-08-27 Bruno Haible +2001-01-05 Ben Collins - * elf/dl-load.c (open_path): Add a argument telling whether *dirsp - is guaranteed to be allocated with the same malloc() and may be - passed to free(). - (_dl_map_object): Update open_path calls. If rtld_search_dirs has - been set to empty by an earlier open_path call, don't pass it again. + * manual/string.texi (Finding Tokens in a String): Document XPG + basename() and dirname(), as well as GNU basename(). -2000-08-28 Ulrich Drepper +2001-01-05 Jakub Jelinek - * include/libintl.h: Include since libintl.h doesn't if - we are not optimizing. + * Makeconfig (preprocess-version): Replace -traditional with + -x assembler-with-cpp. - * sysdeps/unix/sysv/linux/powerpc/sysdep.h: Protect against double - inclusion. +2001-01-05 Joseph S. Myers - * stdio-common/vfscanf.c (ungetc): Cast c to signed char first to - really match EOF. - Patch by Franz Sirl . + * math/bits/cmathcalls.h: Don't define inline cimag, creal or conj + for GCC 2.97 or later. -2000-08-28 Andreas Jaeger +2001-01-05 Ben Collins - * sysdeps/i386/fpu/libm-test-ulps: Tweaks for AMD Athlon. + * manual/stdio.texi (getline): Clarify the return value in the + case of EOF being reached before a newline. -2000-08-28 Mark Kettenis +2001-01-04 Jakub Jelinek - * sysdeps/mach/hurd/getpeername.c (__getpeername): Renamed from - getpeername. Use ISO C style function definition. - (getpeername): Provide weak alias. - * sysdeps/mach/hurd/setrlimit.c (__setrlimit): Renamed from - setrlimit. Use ISO C style function definition. - (setrlimit): Provide weak alias. + * sunrpc/pmap_clnt.c (__get_myaddress): Return TRUE if successful, + FALSE otherwise. + (pmap_set, pmap_unset): Check __get_myaddress return value. -2000-08-28 Martin Schwidefsky +2001-01-05 Mark Kettenis - * shlib-versions: Add a rule for S/390 to the libm version list. - * sysdeps/s390/Versions: New file. - * sysdeps/unix/sysv/linux/s390/Dist: Add oldgetrlimit64.c. - * sysdeps/unix/sysv/linux/s390/Makefile: Add oldgetrlimit64. - * sysdeps/unix/sysv/linux/s390/Versions: New file. - * sysdeps/unix/sysv/linux/s390/alphasort64.c: New file. - * sysdeps/unix/sysv/linux/s390/chown.c: New file. - * sysdeps/unix/sysv/linux/s390/fxstat.c: New file. - * sysdeps/unix/sysv/linux/s390/getdents64.c: New file. - * sysdeps/unix/sysv/linux/s390/getrlimit.c: New file. - * sysdeps/unix/sysv/linux/s390/getrlimit64.c: New file. - * sysdeps/unix/sysv/linux/s390/lxstat.c: New file. - * sysdeps/unix/sysv/linux/s390/oldgetrlimit64.c: New file. - * sysdeps/unix/sysv/linux/s390/readdir64.c: New file. - * sysdeps/unix/sysv/linux/s390/readdir64_r.c: New file. - * sysdeps/unix/sysv/linux/s390/scandir64.c: New file. - * sysdeps/unix/sysv/linux/s390/setrlimit.c: New file. - * sysdeps/unix/sysv/linux/s390/syscalls.list: New file. - * sysdeps/unix/sysv/linux/s390/versionsort64.c: New file. - * sysdeps/unix/sysv/linux/s390/xstat.c: New file. + * sysdeps/generic/netinet/if_ether.h: Include . + (struct ether_addr): Declare ether_addr_octet member as + `u_int8_t'. Add __attribute__ ((__packed__)). -2000-08-28 Ulrich Drepper +2001-01-06 Mark Kettenis - * sysdeps/unix/sysv/linux/powerpc/Makefile [$(subdir)==csu] - (CFLAGS-initfini.s): Add -DWEAK_GMON_START. + * sysdeps/mach/hurd/readdir64.c: New file. + * sysdeps/mach/hurd/readdir64_r.c: New file. - * elf/Versions [ld] (GLIBC_2.2): Export _dl_debug_files. - * elf/dl-close.c (_dl_close): Print debug message if object is not - unloaded. - * elf/dl-open.c (dl_open_worked): Print message about opencount before - returning to caller. +2001-01-07 Mark Kettenis - * po/zh.po: Renamed to... - * po/zh_TW.po: ...this. + * sysdeps/mach/hurd/fstatvfs.c (fstatvfs): Add comment about + `struct statfs' and `struct statvfs' being identical. + * sysdeps/mach/hurd/statvfs.c (statvfs): Likewise. -2000-08-27 Geoff Keating +2001-01-06 Mark Kettenis - * sysdeps/powerpc/fpu/feenablxcpt.c: Correct bogus checkin. + * sysdeps/mach/hurd/fstatfs64.c: New file. + * sysdeps/mach/hurd/fstatvfs64.c: New file. + * sysdeps/mach/hurd/statfs64.c: New file. + * sysdeps/mach/hurd/statvfs64.c: New file. + * sysdeps/mach/hurd/statfsconv.c: New file. + * sysdeps/mach/hurd/Dist: Add statfsconv.c. - * sysdeps/powerpc/fpu/fedisblxcpt.c: New file. - * sysdeps/powerpc/fpu/feenablxcpt.c: New file. - * sysdeps/powerpc/fpu/fegetexcept.c: New file. - * sysdeps/unix/sysv/linux/powerpc/fe_nomask.c: New file. +2001-01-06 Ulrich Drepper -2000-08-27 Ulrich Drepper + * iconv/skeleton.c: Reset outbuf for next round of the loop. + Reported by Owen Taylor . + * iconv/Makefile (tests): Add tst-iconv3. + * iconv/tst-iconv3.c: New file. - * locale/programs/ld-collate.c (insert_weights): Also update - backpointer of next element. - (collate_read): Allow definition of new collation symbols in stage 2. - Symbol after reorder-after can be UCS4 value. - Allow reordering of collation symbols and elements. - Do not only move reorder entry in new position. Instead call - insert_weight to do this and read the weights. + * iconvdata/ibm930.c: Fix handling of state. Optimize a bit. + * iconvdata/ibm933.c: Likewise. + * iconvdata/ibm935.c: Likewise. + * iconvdata/ibm937.c: Likewise. + * iconvdata/ibm939.c: Likewise. + * iconvdata/ibm930.h: Adjust single byte table for optimization. + * iconvdata/ibm933.h: Likewise. + * iconvdata/ibm935.h: Likewise. + * iconvdata/ibm939.h: Likewise. - * locale/findlocale.c (free_mem): Add cast to avoid warning. + * iconvdata/testdata/IBM930: Add misssing SI. + * iconvdata/testdata/IBM933: Likewise. + * iconvdata/testdata/IBM935: Likewise. + * iconvdata/testdata/IBM937: Likewise. + * iconvdata/testdata/IBM939: Likewise. - * intl/dcigettext.c (DCIGETTEXT): Remove _nl_find_language in code - to determine invalid locale name. - * locale/findlocale.c (_nl_find_locale): Likewise. +2001-01-06 Andreas Jaeger - * posix/annexc.c: Correct test for unavailable feature. + * configure.in: Check for old add-ons that shouldn't be used with + current glibc anymore. - * sysdeps/unix/sysv/linux/i386/sys/io.h (outw): Fix __INLINE -> - __inline. +2001-01-06 Mark Kettenis -2000-08-26 Ulrich Drepper + * sysdeps/mach/hurd/readdir_r.c (__readdir_r): Return error number + instead of -1 on failure. Don't forget to copy file name into + *ENTRY if successful. Set *RESULT to NULL upon reaching the end + of the directory. - * sysdeps/unix/sysv/linux/powerpc/syscalls.list: Add getdents64 - syscall. +2001-01-06 Mark Kettenis - * sysdeps/unix/sysv/linux/arm/Makefile [$(subdir)==resource] - (sysdep_routines): Add oldgetrlimit64. + * sysdeps/mach/hurd/xstatconv.c (xstat64_conv): Don't forget to + copy st_atime member. - * elf/Makefile (distribute): Add unloadmod.c, reldepmod1.c, - reldepmod2.c, reldepmod3.c, and reldepmod4.c. - (tests): Add unload, reldep, reldep2, and reldep3. - (modules-names): Add unloadmod, reldepmod1, reldepmod2, reldepmod3, - and reldepmod4. - Add rules to build and run unload, reldep, reldep2, and reldep3. - * elf/dl-lookup.c (_dl_lookup_symbol): Add new parameter explicit. - Don't create relocation dependency if it is nonzero. - (_dl_lookup_symbol_skip): Remove relocation dependency stuff. This - can never happen here. - (_dl_lookup_versioned_symbol): Add new parameter explicit. - Don't create relocation dependency if it is nonzero. - (_dl_lookup_versioned_symbol_skip): Remove relocation dependency - stuff. This can never happen here. - * sysdeps/generic/ldsodefs.h: Change prototypes. - * elf/dl-reloc.c (RESOLVE_MAP): Pass 0 in explicit parameter to - _dl_lookup_up and _dl_lookup_versioned_symbol. - (RESOLV): Likewise. - * elf/dl-runtime.c (fixup): Likewise. - (profile_fixup): Likewise. - * elf/dl-libc.c (do_dlsym): Pass 1 in explicit parameter to - _dl_lookup_symbol. - * elf/dl-symbol.c (_dl_symbol_value): Likewise. - * elf/rtld.c (dl_main): Likewise. - * elf/dl-sym.c (_dl_sym): Pass 1 in explicit parameter to - _dl_lookup_symbol if handle is not RTLD_DEFAULT. Always compute - and pass down the caller map. - (_dl_vsym): Likewise. - * elf/reldep.c: New file. - * elf/reldep2.c: New file. - * elf/reldep3.c: New file. - * elf/reldepmod1.c: New file. - * elf/reldepmod2.c: New file. - * elf/reldepmod3.c: New file. - * elf/reldepmod4.c: New file. - * elf/unload.c: New file. - * elf/unloadmod.c: New file. +2001-01-05 Ulrich Drepper - * elf/do-lookup.h: Remove unused undef_name parameter. - * elf/dl-lookup.c: Adjust callers. + * io/ftw.c (ftw_dir): Don't add a second slash at the beginning + for searches from the root directory. + Reported by loris [PR libc/1991]. + * io/Makefile (tests): Add bug-ftw1. + * io/bug-ftw1.c: New file. -2000-08-25 Ulrich Drepper + * elf/dl-support.c (non_dynamic_init): Don't define DL_FIND_AUXV + if it is not available. Instead use it only if it is available. + * sysdeps/unix/sysv/linux/ldsodefs.h: New file. - * iconv/gconv_trans.c (__gconv_transliterate): Pass NULL instead of - irreversible in recursive call of conversion function to signal that - no error handling is wanted. - * iconv/loop.c (ignore_errors_p): irreversible must be != NULL, too. - (STANDARD_ERR_HANDLER): Don't do anything if irreversible == NULL. - * iconv/skeleton.c (lirreversiblep): New variable. Set to NULL is - recursive error handling call, otherwise to &lirreversible. Use it - for calls to conversion functions. - * iconv/gconv_simple.c (ucs4_internal_loop): Don't handle errors when - transliterating. + * iconv/gconv_simple.c (internal_ics4_loop): Correct test for + overflowing output buffer. + (internal_ucs4_loop_unaligned): Likewise. + (ucs4_internal_loop): Likewise. (ucs4_internal_loop_unaligned): Likewise. + (internal_ucs4le_loop): Likewise. + (internal_ucs4le_loop_unaligned): Likewise. (ucs4le_internal_loop): Likewise. (ucs4le_internal_loop_unaligned): Likewise. + Reported by Owen Taylor . + * iconv/Makefile (tests): Add tst-iconv2. + * iconv/tst-iconv2.c: New file. -2000-08-25 Greg McGary - - * sysdeps/i386/memchr.S: Check high bound against chars - actually scanned. - * sysdeps/i386/memcmp.S: Likewise. - * sysdeps/i386/stpncpy.S: Adjust high-bound check to - account for pointers that lie one beyond end-of-buffer. - -2000-08-25 Ulrich Drepper - - * elf/Makefile (LDFLAGS-nodelete): Add -rdynamic. - * elf/nodelete.c (fini_ran): New global variable. - (do_test): Before every dlclose call clear fini_ran and test - afterwards that it is not set by the destructors. - * elf/nodelmod1.c: Add destructor which sets fini_ran. - * elf/nodelmod2.c: Likewise. - * elf/nodelmod4.c: Likewise. - -2000-08-21 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/syscalls.list: Add getrlimit and - getrlimit to the list. - -2000-08-18 Jes Sorensen - - * sysdeps/ia64/Implies: gcc now has support for the Intel 80 bit - long double format so use ldbl-96 instead of ldbl-128. - -2000-08-25 Ulrich Drepper - - * sysdeps/unix/sysv/linux/i386/mmap.S (__mmap): Return -EINVAL - even if bits 10 a 11 are non-zero. - * sysdeps/unix/sysv/linux/i386/mmap64.S (__mmap64): Likewise. - - * Makeconfig: Ensures the soversions.mk part of Makefile gets - included before building gnu/lib-names.h - Patch by Maciej W. Rozycki . - - * elf/dl-close.c (_dl_close): Don't run destructors of objects - marked DF_1_NODELETE. - - * sysdeps/posix/system.c (__libc_system): We cannot use vfork here - since we call sigaction in the child. - -2000-08-25 Andreas Jaeger - - * iconvdata/Makefile ($(objpfx)bug-iconv1.out): Depend on - gconv-modules. - -2000-08-25 Andreas Jaeger - - * manual/arith.texi (Control Functions): Clarify possible - arguments. Closes PR libc/1856. - -2000-08-24 H.J. Lu - - * stdio-common/Makefile (tests): Don't do it for cross compiling. - * malloc/Makefile (tests): Likewise. - -2000-08-24 Ulrich Drepper - - * iconvdata/unicode.c (gconv_init): Correct test for direction. - -2000-08-24 Andreas Jaeger - - * malloc/Makefile (extra-objs): Fix last patch, build memusagestat - only if LIBGD is available. - -2000-08-24 Ulrich Drepper - - * resolv/res_send.c (res_ourserver_p): Cleanup the type mess to avoid - problems with now restrict parameter types. - (convaddr4to6): Likewise. - -2000-08-24 Denis Joseph Barrow - - * sysdeps/s390/fpu/fedisblxcpt.c: New file. - * sysdeps/s390/fpu/feenablxcpt.c: New file. - * sysdeps/s390/fpu/fegetexcept.c: New file. - * sysdeps/s390/fpu/fenv_libc.h: Some reordering, new definition - FPC_VALID_MASK. - -2000-08-24 Andreas Jaeger - - * malloc/Makefile (extra-objs): Add memusagestat.o. - (generated): Added memusage and memusagestat for make clean. - - * libio/tst_putwc.c (do_test): Delete temporary file. - Move inclusion of test-skeleton to front to have prototype for - add_temp_file. - - * posix/Makefile (generated): Add wordexp-tst.out. - -2000-08-24 Ulrich Drepper - - * resolv/res_hconf.c (free_mem): Remove not needed if. - - * time/tzset.c (free_mem): New function. - * string/strsignal.c (free_mem): New function. - * inet/inet_ntoa.c (free_mem): New function. - * sunrpc/clnt_perr.c (free_mem): New function. - -2000-08-24 Andreas Jaeger - - * sysdeps/unix/syscalls.list: Use __setrlimit as strong name. - * sysdeps/unix/sysv/syscalls.list: Likewise. - - * posix/unistd.h: Move internal prototypes from here ... - * include/unistd.h: ... to here. - - * sysvipc/sys/shm.h: Add const attribute to __getpagesize. - -2000-08-24 Ulrich Drepper - - * grp/initgroups.c (initgroups): Deallocate groups array. - Reported by jani.raiha@sonera.com [PR libc/1868]. - - * sysdeps/s390/Dist: Add fpu/fenv_libc.h. - * sysdeps/alpha/Dist: Likewise. - -2000-08-23 Ulrich Drepper - - * crypt/md5-crypt.c (free_mem): Fix typo (constructor -> - destructor). Reported by Solar Designer . - - * iconv/gconv_conf.c (add_module): Remove some unneeded code to - avoid adding double slashes. - -2000-08-23 Jakub Jelinek - - * dirent/dirent.h (alphasort, versionsort): Move __attribute_pure__ - out of the __REDIRECT macro. - -2000-08-23 Ulrich Drepper - - * stdio-common/vfscanf.c: Add %F format support. - - * locale/programs/ld-ctype.c (ctype_output): Make sure - _NL_CTYPE_TRANSLIT_DEFAULT_MISSING_LEN and - _NL_CTYPE_TRANSLIT_IGNORE_LEN are aligned. - (ctype_read): Enable returning of wide character strings for reading - transliteration information. - -2000-08-23 Andreas Jaeger - - * sysdeps/unix/sysv/linux/i386/sys/io.h (_EXTERN_INLINE): Remove. - Use static __inline instead of _EXTERN_INLINE. - - * misc/sys/select.h: Move prototypes of __select from here ... - * include/sys/select.h: ... to here. - - * socket/sys/socket.h: Move prototypes of __send and __connect - from here.... - * include/sys/socket.h: ... to here. - - * locale/programs/ld-ctype.c (ctype_read): Fix parameter for - lr_error. - -2000-08-23 Jakub Jelinek - - * sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list: Use - __setrlimit as strong name. Takes only 2 arguments. - - * sysdeps/unix/sysv/linux/sh/syscalls.list: __syscall_setrlimit - takes only 2 arguments. - -2000-08-23 Martin Schwidefsky - - * sysdeps/s390/__longjmp.c: Add __ to JB_GPR*. - - * sysdeps/s390/bits/setjmp.h: Add __ to JB_GPR* defines. - -2000-08-23 Ulrich Drepper - - * locale/programs/ld-ctype.c (ctype_read): Allow more than one - default_missing character being specified, pick the first - representable. - -2000-08-23 Andreas Jaeger - - * include/wchar.h: Add some pure attributes. - - * time/time.h: Add const attribute for dysize. - - * include/stdlib.h: Add malloc attribute to __posix memalign. - - * stdlib/stdlib.h: Add some pure and malloc attributes. - * wcsmbs/wchar.h: Likewise. - - * dirent/dirent.h: Add some pure attributes. - * include/dirent.h: Likewise. - -2000-08-23 Jakub Jelinek - - * inet/netinet/in.h (struct in6_addr): Don't enforce 64bit alignment - on 64bit arches. - -2000-08-22 Ulrich Drepper - - * iconvdata/iso-2022-jp.c: In conversion to ISO-2022-JP, add two - missing buffer size checks. - -2000-08-23 Andreas Jaeger - - * sysdeps/unix/sysv/linux/alpha/syscalls.list: Use __setrlimit as - strong name. - * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. - - * sysdeps/unix/sysv/linux/dl-osinfo.h: Include "kernel-features.h", - otherwise __LINUX_KERNEL_VERSION might not be defined. - (MIN): Define if not already defined. - -2000-08-22 Ulrich Drepper - - * stdio-common/vfprintf.c: Handle %F format. - * stdio-common/printf-parse.h (parse_one_spec): Likewise. - Reported by Joseph S. Myers . - - * stdio-common/tstdiomisc.c: Add test for %F printf format. - - * po/zh.po: New file. - - * iconvdata/sjis.c: In conversion from UCS4, correct test for - enough room in target buffer. - Patch by KUSANO Takayuki [PR libc/1865]. - * iconvdata/bug-iconv1.c: New file. - * iconvdata/Makefile (tests): Add bug-iconv1. - - * locale/iso-4217.def: Update entry for Nicaragua. - -2000-08-22 Mark Kettenis - - * hurd/hurdsig.c: Rearrange headers a bit. - (_hurdsig_init): Block until _hurd_msgport_thread is initialized - when cthreads is being used. - -2000-08-22 Ulrich Drepper - - * elf/Makefile (distribute): Add dl-osinfo.h. - * sysdeps/generic/dl-osinfo.h: New file. - * sysdeps/unix/sysv/linux/dl-osinfo.h: New file. - * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Use DL_SYSDEP_OSCHECK - if defined. - * sysdeps/unix/sysv/linux/init-first.c: Perform kernel version test - only for !SHARED case. Get the code from dl-osinfo.h. - - * stdlib/random_r.c: Cleanups. - * stdlib/tst-random.c: New file. - * stdlib/Makefile (tests): Add tst-random. - Patches by Michael Fischer . - -2000-08-21 Martin Schwidefsky - - * sysdeps/unix/sysv/linux/s390/getmsg.c: Remove. - * sysdeps/unix/sysv/linux/s390/getpmsg.c: Remove. - * sysdeps/unix/sysv/linux/s390/putmsg.c: Remove. - * sysdeps/unix/sysv/linux/s390/putpmsg.c: Remove. - -2000-08-22 Jakub Jelinek - - * sysdeps/unix/sysv/linux/alpha/syscalls.list (sysctl): Remove. - * sysdeps/unix/sysv/linux/ia64/syscalls.list (sysctl): Remove. - (__syscall__sysctl): Add. - -2000-08-21 Andreas Jaeger - - * stdlib/tst-strtol.c: Add test for 0xFFFFFFFFFFFF00FF (from PR - libc/1864). - * stdlib/tst-strtoll.c: Likewise. - -2000-08-21 Ulrich Drepper - - * stdlib/random_r.c (__setstate_r): Also compute end_ptr - correctly. - (__initstate_r): Set errno on error. - (__random_r): Likewise. - (__setstate_r): Correct offset when computing - new rptr and fptr. Test for arg_state being NULL. - Reported by Michael Fischer . - - * posix/regex.h: Add macro definitions to allow compiling outside - glibc. - - * sysdeps/i370/Implies: Removed. - * sysdeps/mvs/Implies: Removed. - - * catgets/catgets.c (catopen): Filter out env_var values with / if - necessary. - - * locale/findlocale.c (_nl_find_locale): Move test for unusable - locale name after all getenvs. - - * configure.in: Allow sed versions like 3.02.8. - Patch by Rodrigo Barbosa . - -2000-08-21 Marko Myllynen - - * inet/netinet/icmp6.h: Add Mobile IPv6 extensions structures. - -2000-08-21 Ulrich Drepper - - * sysdeps/posix/getaddrinfo.c (gethosts): Handle TRY_AGAIN error - of gethostbyname2_r call. - - * intl/locale.alias: Add aliases for Korean. - -2000-08-21 Martin Schwidefsky - - * sysdeps/s390/__longjmp.c: Remove unused variable result. - * sysdeps/s390/fpu/bits/fenv.h: Move FPC_* definitions to fenv_libc.h. - * sysdeps/s390/fpu/fclrexcpt.c: Include fenv_libc.h instead of fenv.h. - * sysdeps/s390/fpu/fegetenv.c: New file. - * sysdeps/s390/fpu/fegetround.c: Include fenv_libc.h instead of fenv.h. - * sysdeps/s390/fpu/feholdexcpt.c: New file. - * sysdeps/s390/fpu/fenv_libc.h: New file. - * sysdeps/s390/fpu/fesetenv.c: New file. - * sysdeps/s390/fpu/fesetround.c: Include fenv_libc.h instead of fenv.h. - * sysdeps/s390/fpu/feupdateenv.c: New file. - * sysdeps/s390/fpu/fgetexcptflg.c: Reformatted. - * sysdeps/s390/fpu/fpu_control.h: Corrected header. - * sysdeps/s390/fpu/fraiseexcpt.c: New file. - * sysdeps/s390/fpu/fsetexcptflg.c: New file. - * sysdeps/s390/fpu/ftestexcept.c: New file. - * sysdeps/s390/fpu/libm-test-ulps: New file. - * sysdeps/s390/gmp-mparam.h: Add end of comment. - * sysdeps/s390/initfini.c: New file. - * sysdeps/unix/sysv/linux/s390/Dist: Add sys/procfs.h. - * sysdeps/unix/sysv/linux/s390/Makefile: Remove sys/reg.h. - * sysdeps/unix/sysv/linux/s390/bits/stat.h: New file. - * sysdeps/unix/sysv/linux/s390/lchown.c: New file. - * sysdeps/unix/sysv/linux/s390/sys/elf.h: Move elf definitions to - sys/procfs.h as proposed by Mark Kettenis. - * sysdeps/unix/sysv/linux/s390/sys/procfs.h: New file. - -2000-08-21 Andreas Jaeger - - * include/poll.h: Include include/sys/poll.h to get __poll - declaration. - - * io/sys/poll.h: Move __poll declaration from here... - * include/sys/poll.h: ...to here. - - * include/sys/socket.h (__getpeername): Add declaration. - - * include/wchar.h (__vswprintf): Add declaration. - - * include/stdio.h (__flockfile): Add declaration. - (__funlockfile): Likewise. - -2000-08-20 Ulrich Drepper - - * misc/sys/cdefs.h: Define __restrict_arr. - * include/sys/time.h: Add restrict where required by AGd4. - * inet/arpa/inet.h: Likewise. - * io/sys/stat.h: Likewise. - * io/sys/statvfs.h: Likewise. - * misc/search.h: Likewise. - * misc/sys/select.h: Likewise. - * posix/glob.h: Likewise. - * posix/regex.h: Likewise. - * posix/spawn.h: Likewise. - * posix/unistd.h: Likewise. - * rt/aio.h: Likewise. - * signal/signal.h: Likewise. - * socket/sys/socket.h: Likewise. - * stdlib/ucontext.h: Likewise. - * streams/stropts.h: Likewise. - * string/string.h: Likewise. - * time/time.h: Likewise. - * time/sys/time.h: Likewise. - - * posix/spawn.h: Add declarations for posix_spawnattr_getscheparam - and posix_spawnattr_setscheparam. - - * libio/stdio.h: Make cuserid prototype again available for all - XPG versions. - - * argp/argp-help.c: Unify use of function aliases to make more compact - PLT. - * include/libintl.h: Likewise. - * inet/rcmd.c: Likewise. - * intl/dcigettext.c: Likewise. - * libio/iofputws.c: Likewise. - * libio/iofputws_u.c: Likewise. - * libio/iogetwline.c: Likewise. - * libio/swprintf.c: Likewise. - * malloc/malloc.c: Likewise. - * nss/digits_dots.c: Likewise. - * posix/fnmatch.c: Likewise. - * posix/spawn_faction_addclose.c: Likewise. - * posix/spawn_faction_adddup2.c: Likewise. - * posix/spawn_faction_addopen.c: Likewise. - * posix/spawni.c: Likewise. - * posix/wordexp.c: Likewise. - * posix/spawni.c: Likewise. - * resolv/res_hconf.c: Likewise. - * resolv/res_init.c: Likewise. - * shadow/lckpwdf.c: Likewise. - * signal/sighold.c: Likewise. - * signal/sigrelse.c: Likewise. - * stdio-common/printf-parse.h: Likewise. - * stdio-common/printf-prs.c: Likewise. - * stdio-common/printf_fp.c: Likewise. - * stdio-common/vfprintf.c: Likewise. - * stdio-common/vfscanf.c: Likewise. - * stdlib/rpmatch.c: Likewise. - * sunrpc/create_xid.c: Likewise. - * sunrpc/key_call.c: Likewise. - * sysdeps/generic/setrlimit64.c: Likewise. - * sysdeps/generic/utmp_file.c: Likewise. - * sysdeps/generic/vlimit.c: Likewise. - * sysdeps/posix/posix_fallocate.c: Likewise. - * sysdeps/posix/posix_fallocate64.c: Likewise. - * sysdeps/posix/sigpause.c: Likewise. - * sysdeps/posix/sigset.c: Likewise. - * sysdeps/unix/grantpt.c: Likewise. - * sysdeps/unix/bsd/ualarm.c: Likewise. - * sysdeps/unix/sysv/linux/dl-origin.c: Likewise. - * sysdeps/unix/sysv/linux/getloadavg.c: Likewise. - * sysdeps/unix/sysv/linux/ttyname.c: Likewise. - * sysdeps/unix/sysv/linux/ulimit.c: Likewise. - * time/strftime.c: Likewise. - * wcsmbs/wcscoll.c: Likewise. - * wcsmbs/wcsxfrm.c: Likewise. - - * time/tst-getdate.c (main): Make error messages more human readable. - - * sysdeps/powerpc/fpu_control.h (_FPU_GETCW): Allow gcc to generate - postinc/predec instruction. - (_FPU_SETCW): Likewise. - Patch by Franz Sirl . - -2000-08-20 Andreas Jaeger - - * time/tst-getdate.c (main): Increase error in case of wrong - conversion. - Fix typo in test case. - -2000-08-20 Ulrich Drepper - - * ctype/ctype.h (isblank): Make available if ISO C99. - * wctype/wctype.h (iswblank): Make available if ISO C99. - * math/math.h (signgam): Don't make available if ISO C99. - * math/tgmath.h (tgamma): Renamed from gamma. - Patches by Joseph S. Myers . - - * intl/loadmsgcat.c (_nl_unload_domain): Also free conv_tab element. - Pretty printing. - * intl/plural.y (new_exp): Take number of optional parameters in - second parameter. Test for correct number of parameters and free - correctly in case of failure. Adjust all callers. - (yylex): Allow ';' as terminator character. - -2000-08-19 Ulrich Drepper - - * locale/lc-time.c (free_mem): New function. Free alt_digits and - walt_digits. - - * locale/findlocale.c (free_mem): Also free here->filename. - - * locale/loadlocale.c (_nl_unload_locale): Also free locale->name. - - * math/test-fenv.c (feenv_tests): Clear all exceptions before - first test. - (feexcp_nomask_test): Correct printf args. - (feexcp_mask_test): Likewise. - -2000-08-19 Andreas Jaeger - - * inet/tst-gethnm.c: Include string.h to provide prototype for - strcmp. - - * malloc/mtrace.pl (usage): Inform about --help. - -2000-08-19 Wolfram Gloger - - * malloc/malloc.c (new_heap): Try harder to get an aligned chunk of - size HEAP_MAX_SIZE. - -2000-08-19 Andreas Jaeger - - * shlib-versions: Remove libnss_db, libdb and libdb1. - -2000-08-19 Jakub Jelinek - - * sysdeps/unix/sysv/linux/alpha/readdir.c: Move... - * sysdeps/unix/sysv/linux/ia64/readdir.c: ...here and - * sysdeps/unix/sysv/linux/sparc/sparc64/readdir.c: ...here. - * sysdeps/unix/sysv/linux/alpha/readdir_r.c: Move... - * sysdeps/unix/sysv/linux/ia64/readdir_r.c: ...here and - * sysdeps/unix/sysv/linux/sparc/sparc64/readdir_r.c: ...here. - * sysdeps/unix/sysv/linux/alpha/readdir64.c: Remove. - * sysdeps/unix/sysv/linux/alpha/readdir64_r.c: Remove. - * sysdeps/unix/sysv/linux/alpha/getdents64.c: Remove. - * sysdeps/unix/sysv/linux/alpha/getdents.c: Only use for non-LFS - getdents. - * sysdeps/unix/sysv/linux/readdir64.c: Remove versioning. - * sysdeps/unix/sysv/linux/readdir64_r.c: Likewise. - -2000-08-18 Jakub Jelinek - - * include/glob.h (__glob64): Add prototype. - * sysdeps/generic/glob.c: If GLOB_ONLY_P is defined, only - define glob and glob_in_dir. - * sysdeps/unix/sysv/linux/i386/Versions: Add glob64@@GLIBC_2.2. - * sysdeps/unix/sysv/linux/arm/Versions: Likewise. - * sysdeps/unix/sysv/linux/powerpc/Versions: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc32/Versions: Likewise. - * sysdeps/unix/sysv/linux/i386/glob64.c: New file. - * sysdeps/unix/sysv/linux/arm/glob64.c: New file. - * sysdeps/unix/sysv/linux/powerpc/glob64.c: New file. - * sysdeps/unix/sysv/linux/sparc/sparc32/glob64.c: New file. - -2000-08-18 Jakub Jelinek - - * malloc/Makefile (memusage): libmemusage.so is installed in slibdir. - -2000-08-17 Andreas Jaeger - - * math/test-fenv.c (fe_single_test): New function. - (fe_env_tests): Use fe_single_test. - (feenable_test): New tests for feenable/fedisable and - fegetexcpetions. - (feexcp_mask_test): New function. - (feexcp_nomask_test): New function. - -2000-08-19 Richard Henderson - - * sysdeps/alpha/fpu/fenv_libc.h: New file. - * sysdeps/alpha/fpu/fclrexcpt.c: Use it. - * sysdeps/alpha/fpu/fegetenv.c: Likewise. - * sysdeps/alpha/fpu/fesetround.c: Likewise. - * sysdeps/alpha/fpu/fegetround.c: Likewise. - * sysdeps/alpha/fpu/fgetexcptflg.c: Likewise. - * sysdeps/alpha/fpu/fraiseexcpt.c: Likewise. - * sysdeps/alpha/fpu/ftestexcept.c: Likewise. - * sysdeps/alpha/fpu/fedisblxcpt.c: Likewise. Use the smaller mask. - * sysdeps/alpha/fpu/feenablxcpt.c: Likewise. - * sysdeps/alpha/fpu/fegetexcept.c: Likewise. - * sysdeps/alpha/fpu/feholdexcpt.c: Retain the SWCR_MAP bits. - * sysdeps/alpha/fpu/fesetenv.c: Likewise. - * sysdeps/alpha/fpu/feupdateenv.c: Likewise. - * sysdeps/alpha/fpu/fsetexcptflg.c: Likewise. - * sysdeps/alpha/fpu/bits/fenv.h (FE_DENORMAL): New. - (FE_MAP_DMZ, FE_MAP_UMZ, FE_NONIEEE_ENV): New. - -2000-08-19 Andreas Jaeger - - * elf/constload1.c: Include for puts prototype. - -2000-08-19 Ulrich Drepper - - * elf/Versions [ld] (GLIBC_2.2): Export _dl_check_map_versions. - * elf/dl-deps.c (_dl_map_object_deps): If object was dependency of - a dynamically loaded object remove old l_initfini list. - * elf/dl-libc.c (free_mem): Used as __libc_subfreeres callback to - remove some dynamically allocated memory blocks in the dynamic - loading data structures. - * elf/dl-load.c (add_name_to_object): Initialize dont_free to 0. - * elf/dl-open.c (dl_open_workder): Don't call _dl_check_all_versions. - Instead call _dl_check_map_versions only for the dependencies. - * elf/rtld.c: Avoid unneccessary initializations. Mark l_libname - information of initial objects as not free-able. - * sysdeps/generic/ldsodefs.h (struct libname_list): Add dont_free - element. - - * elf/filter.c: Call mtrace. - * elf/restest1.c: Likewise. Close the objects. - * elf/loadtest.c: Call mtrace. Check result of dlclose. Print more - debug information. - - * elf/constload1.c: Add comment explaining not freed memory. - -2000-08-18 Andreas Jaeger - - * sysdeps/unix/sysv/linux/mips/bits/stat.h: Add pads to show - alignment for structs stat and stat64. - Patch by Maciej W. Rozycki . - -2000-08-17 Ulrich Drepper - - * sysdeps/unix/sysv/linux/alpha/getdents.c: Remove special d_ino - handling. Patch by Richard Henderson . - - * nss/Versions: Remove libnss_db information. - -2000-08-16 Jakub Jelinek - - * sysdeps/sparc/fpu/fedisblxcpt.c: New file. - * sysdeps/sparc/fpu/feenablxcpt.c: New file. - * sysdeps/sparc/fpu/fegetexcept.c: New file. - * sysdeps/sparc/sparc64/fpu/e_sqrtl.c: New file. - - * sysdeps/sparc/sparc64/dl-machine.h: Subtract 4 .rela.plt entries - to match Solaris. - -2000-08-17 Ulrich Drepper - - * sysdeps/powerpc/fpu_control.h (_FPU_GETCW): Use type-correct code. - (_FPU_SETCW): Likewise. - Patch by Franz Sirl . - - * stdio-common/printf_fp.c: Fix chars_needed computation. - Patch by Greg McGary . - -2000-08-17 Jakub Jelinek - - * elf/dl-load.c (_dl_map_object): Don't crash if both loader and - _dl_loaded are NULL. - -2000-08-17 Jakub Jelinek - - * manual/arith.texi (feholdexcept): Returns 0 on success. - -2000-08-17 Andreas Jaeger - - * sysdeps/gnu/net/if.h (struct ifreq): Add ifru_newname. - (ifr_newname): New. - Reported by Andi Kleen . - -2000-08-17 Jakub Jelinek - - * sysdeps/alpha/fpu/fedisblxcpt.c: New file. - * sysdeps/alpha/fpu/feenablxcpt.c: New file. - * sysdeps/alpha/fpu/fegetexcept.c: New file. - -2000-08-16 Jakub Jelinek - - * sysdeps/unix/sysv/linux/xstatconv.c (xstat32_conv): Test sizes - of buf->st_ino and kbuf->st_ino, not __st_ino. - If _HAVE_STAT64___ST_INO is not defined, don't use __st_ino at all. - * sysdeps/unix/sysv/linux/getdents64.c: Change path in #include - directive so that only linux/getdents.c is used, not some - architecture specific one. - -2000-08-16 Jakub Jelinek - - * sysdeps/i386/fpu/fegetexcept.c (fegetexcept): Return currently - enabled, not disabled exceptions. - * sysdeps/i386/fpu/fedisblxcpt.c (fedisableexcept): Likewise. - * sysdeps/i386/fpu/feenablxcpt.c (feenableexcept): Likewise. - -2000-08-17 Greg McGary - - * Makeconfig (link-extra-libs-bounded): Strip `-bp' suffix - from test program name when constructing suffix for $(LDLIBS-*). - (bounded-thread-library): New variable. - * crypt/Makefile - [build-shared, build-static] (libcrypt-dep): Remove variable. - ($(addprefix $(objpfx),$(tests))): Consolidate individual dependencies. - [build-bounded] ($(tests:%=$(objpfx)%-bp)): Add dependencies. - * linuxthreads/Makefile (libpthread, librt): Remove variables. - (librt-tests): Add variable. (tests): Use it. - [build-shared, build-static] - ($(addprefix $(objpfx),$(tests)), - $(addprefix $(objpfx),$(librt-tests))): - Consolidate individual dependencies. - [build-bounded] - ($(tests:%=$(objpfx)%-bp), $(librt-tests:%=$(objpfx)%-bp)): - Add dependencies. - * math/Makefile (LDLIBS-*): Remove variables (they are redundant). - [build-bounded] ($(tests:%=$(objpfx)%-bp)): Add dependencies. - * misc/Makefile - [build-bounded] ($(objpfx)tst-tsearch-bp): Add dependencies. - * rt/Makefile - [build-shared, build-static] - ($(addprefix $(objpfx),$(tests))): Consolidate individual dependencies. - [build-bounded] ($(tests:%=$(objpfx)%-bp)): Add dependencies. - -2000-08-17 Greg McGary - - * sysdeps/generic/bp-checks.h: s/\(CHECK\w+\)opt/\1_NULL_OK/ - * sysdeps/unix/make-syscalls.sh: Likewise. - * sysdeps/unix/sysv/linux/shmctl.c: Likewise. - * sysdeps/unix/sysv/linux/sigprocmask.c: Likewise. - * sysdeps/unix/sysv/linux/ia64/sigaction.c: Likewise. - * sysdeps/unix/sysv/linux/ia64/sigprocmask.c: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c: Likewise. - -2000-08-17 Greg McGary - - * sysdeps/i386/fpu/s_frexp.S: Check bounds. - Wrap extern symbols in BP_SYM (). - * sysdeps/i386/fpu/s_frexpf.S: Likewise. - * sysdeps/i386/fpu/s_frexpl.S: Likewise. - * sysdeps/i386/fpu/s_remquo.S: Likewise. - * sysdeps/i386/fpu/s_remquof.S: Likewise. - * sysdeps/i386/fpu/s_remquol.S: Likewise. - * sysdeps/i386/fpu/s_sincos.S: Likewise. - * sysdeps/i386/fpu/s_sincosf.S: Likewise. - * sysdeps/i386/fpu/s_sincosl.S: Likewise. - * sysdeps/unix/sysv/linux/i386/clone.S: Likewise. - * sysdeps/unix/sysv/linux/i386/mmap64.S: Likewise. - -2000-08-16 Andreas Schwab - - * sysdeps/m68k/fpu/fegetexcept.c: New file. - * sysdeps/m68k/fpu/fedisblxcpt.c: New file. - * sysdeps/m68k/fpu/feenablxcpt.c: New file. - -2000-08-15 Ulrich Drepper - - * sysdeps/generic/ldsodefs.h: Declare _nl_nloaded. - * elf/Versions [ld] (GLIBC_2.2): Add _nl_nloaded. - * elf/dl-support.c: Define _nl_nloaded. - * elf/rtld.c: Likewise. Increment _nl_nloaded for rtld itself. - * elf/dl-object.c (_dl_new_object): Increment _nl_nloaded after adding - object to global list. - * elf/dl-close.c (_dl_close): Decrement _nl_nloaded after removing - from _dl_loaded list. - * elf/dl-load.c (_dl_map_object_from_fd): Likewise. - * elf/dl-fini.c (_dl_fini): Use _nl_nloaded instead of computing the - number here. - - * sysdeps/i386/fpu/fedisblxcpt.c (fedisableexcept): Mask, not - unmask, exceptions. - * sysdeps/i386/fpu/feenablxcpt.c (feenableexcept): Unmask, not mask, - exceptions. - Reported by Harvey J. Stein . - -2000-08-16 Andreas Jaeger - - * elf/elf.h (EM_X8664): Add official x86-64 specific value. - -2000-08-15 Marko Myllynen - - * inet/netinet/icmp6.h: Added Mobile IPv6 definitions. - -2000-08-15 Ulrich Drepper - - * sysdeps/unix/sysv/linux/powerpc/Dist: Add oldgetrlimit64.c. - * sysdeps/unix/sysv/linux/powerpc/Makefile [$(subdir)=resource] - (sysdep_routines): Add oldgetrlimit64. - * sysdeps/unix/sysv/linux/powerpc/oldgetrlimit64.c: New file. - Patch by Franz Sirl . - - * include/link.h: Undo last patches. Hurd now has stat64. - * elf/Makefile: Likewise. - * elf/dl-load.c: Likewise. - * elf/dl-misc.c: Likewise. - * elf/dl-profile.c: Likewise. - * sysdeps/generic/sysd-link.h: Removed. - * sysdeps/unix/sysv/linux/sysd-link.h: Removed. - - * rt/aio_notify.c (notify_func_wrapper): Wrapper function to call - thread event callback function. - (__aio_notify_only): Use function above. - Patch by Kaz Kylheku . - -2000-08-16 Mark Kettenis - - * sysdeps/mach/hurd/lseek64.c: New file. - -2000-08-15 Mark Kettenis - - * sysdeps/mach/hurd/i386/bits/time.h (__clockid_t, __timer_t): - Remove typedefs. - * sysdeps/mach/hurd/bits/time.h (__clockid_t, __timer_t): Remove - typedefs. - * sysdeps/generic/bits/time.h (__clockid_t, __timer_t): Remove - typedefs. - * sysdeps/generic/bits/types.h (__clockid_t, __timer_t): New typedefs. - -2000-08-15 Mark Kettenis - - * sysdeps/mach/hurd/xstatconv.c: New file. - * sysdeps/mach/hurd/fxstat64.c: New file. - * sysdeps/mach/hurd/lxstat64.c: New file. - * sysdeps/mach/hurd/xstat64.c: New file. - * sysdeps/mach/hurd/Dist: Add xstatconv.c. - -2000-08-15 Mark Kettenis - - * sysdeps/mach/hurd/dl-sysdep.c (__libc_multiple_libcs): - Initialize, needed for change in common symbol handling in newer - binutils. Mirrors 2000-01-03 change made by Andreas Schwab. - -2000-08-15 Ulrich Drepper - - * elf/constload1.c: Call mtrace. Check return value of dlclose call. - * elf/constload2.c: Add destructor to unload constload3. - - * include/link.h: Include sysd-link.h. - * sysdeps/generic/sysd-link.h: New file. - * sysdeps/unix/sysv/linux/sysd-link.h: New file. - * elf/Makefile (distribute): Add sysd-link.h. - * elf/dl-load.c: Use definitions from sysd-link.h instead of stat - types and functions directly. - * elf/dl-misc.c: Likewise. - * elf/dl-profile.c: Likewise. - - * elf/loadfail.c (main): Close all successfully loaded objects. +2001-01-04 H.J. Lu - * elf/multiload.c: Add mtrace call. Call dlclose for all handles and - free wd. - * elf/dl-deps.c (_dl_map_object_deps): Don't allocate needed list if - there is already one. + * elf/dl-support.c (DL_FIND_AUXV): New. Defined if not defined. + (_dl_clktck): Declared. + (non_dynamic_init): Take 3 arguments. + Set _dl_pagesize, _dl_platform and _dl_clktck from AUX. - * elf/dl-close.c: Pretty print. +2001-01-01 Bruno Haible -2000-08-14 Ulrich Drepper + Finish implementation of plural form handling. + * intl/dcigettext.c (known_translation_t): Rename 'domain' field to + 'domainname'. Remove 'plindex' field. Add 'domain' and + 'translation_length' fields. + (transcmp): Don't compare 'plindex' fields. + (plural_lookup): New function. + (DCIGETTEXT): Change cache handing in the plural case. Don't call + plural_eval before the translation and its catalog file have been + found. Remove plindex from cache key. Add 'translation_length' and + 'domain' to cache result. + (_nl_find_msg): Remove index argument, return length of translation + to the caller instead. Weaken comparison of string lengths, to account + for plural entries. Call iconv() on the entire result string, not + only on the portion needed so far. + * intl/loadinfo.h (_nl_find_msg): Remove index argument, add lengthp + argument. + * intl/loadmsgcat.c (_nl_load_domain): Adapt to _nl_find_msg change. - * sysdeps/posix/ttyname.c: Make name variable from getttyname function - global (with file scope). Add __libc_subfreeres function to free the - string. - * sysdeps/unix/sysv/linux/ttyname.c: Likewise. Also for buf variable - in ttyname function. +2001-01-04 Ulrich Drepper - * sysdeps/generic/strtok.c: Remove initializer for olds variable. + * intl/plural.y (yylex): Minimal improvement in number scanner. - * crypt/md5-crypt.c: Let destructor deallocate static buffer. +2000-07-31 Bruno Haible - * iconvdata/sjis.c (from_ucs4_lat1): Handle U005C and U007E by - mapping them to /x5c and /x7e respectively. + * intl/plural.y: Include config.h. Needed to define 'inline' away for + C compilers that don't support it. + (yylex): Don't use gcc specific case range syntax. + * intl/loadmsgcat.c (INIT_GERMANIC_PLURAL): New macro, for old + compilers. - * locale/programs/ld-ctype.c: Add support for more definitions after - copy statement. +2000-10-12 Bruno Haible -2000-08-14 Jakub Jelinek + * intl/finddomain.c: Remove unneeded includes. - * dirent/Versions (getdirentries64): Export at GLIBC_2.2. - * sysdeps/unix/sysv/linux/kernel-features.h - (__ASSUME_GETDENTS64_SYSCALL): Define. - * sysdeps/unix/sysv/linux/getdents.c (__getdents): Use getdents64 - syscall if available to get d_type fields. - * sysdeps/unix/sysv/linux/alpha/getdents.c (DIRENT_TYPE): Define. - * sysdeps/unix/sysv/linux/arm/Versions (__xstat64, __fxstat64, - __lxstat64): Export at GLIBC_2.2. - (alphasort64, readdir64, readdir64_r, scandir64, versionsort64): - Likewise. - * sysdeps/unix/sysv/linux/i386/Versions (getdirentries64): Remove. - * sysdeps/unix/sysv/linux/i386/getdents64.c (kernel_dirent64): Define. - * sysdeps/unix/sysv/linux/powerpc/Versions (alphasort64, - getdirentries64, versionsort64): Remove. - * sysdeps/unix/sysv/linux/sparc/sparc32/Versions (alphasort64, - getdirentries64, versionsort64): Remove. +2000-10-12 Bruno Haible -2000-08-13 Ulrich Drepper + * intl/localealias.c (memcpy): Return first argument, just like the + real memcpy function does. + * intl/bindtextdom.c (memcpy): Likewise. + * intl/finddomain.c (memcpy): Likewise. + * intl/l10nflist.c (memcpy): Likewise. + * intl/textdomain.c (memcpy): Likewise. + From Paul Eggert . - * posix/Makefile: Remove rules to generate glob package. +2001-01-03 Jakub Jelinek - * posix/Makefile (tests): Add tst-regexloc. - (tst-regexloc-ENV): Add LOCPATH. - * posix/tst-regexloc.c: New file. + * resolv/resolv.h (struct __res_state): Add nsinit field. + * resolv/res_send.c (res_nsend): Use it instead of nscount. + * resolv/res_init.c (__res_vinit): Initialize it. + (res_nclose): Clear it instead of nscount. -2000-08-12 Andreas Jaeger +2001-01-04 Ulrich Drepper - * include/features.h (__STDC_ISO_10646__): Define. - Reported by Markus Kuhn . + * malloc/mtrace.pl: Fix matching of addresses. + Patch by Aharon Robbins . -2000-08-13 Ulrich Drepper + * Versions.def (ld): Add GLIBC_2.2. - * include/features.h (__USE_ISOC99): Define for _XOPEN_SOURCE >= 600. + * catgets/gencat.c: Copyright 2001. + * csu/version.c: Likewise. + * debug/catchsegv.sh: Likewise. + * debug/xtrace.sh: Likewise. + * elf/ldconfig.c: Likewise. + * elf/sprof.c: Likewise. + * iconv/iconv_prog.c: Likewise. + * locale/locale.c: Likewise. + * locale/localedef.c: Likewise. + * malloc/memusage.sh: Likewise. + * malloc/mtrace.pl: Likewise. + * nscd/nscd.c: Likewise. + * posix/getconf.c: Likewise. - * locale/langinfo.h: Define YESSTR and NOSTR also for XPG4 (but not - for revision 6 and up). +2001-01-04 Mark Kettenis - * posix/sys/types.h: Define __need_timer_t and __need_clockid_t before - including . - * time/time.h: Allow __need_timer_t and __need_clockid_t to be defined - to get definitions of just these types. + * include/stdio.h: Only provide __getwc_unlocked prototype if + USE_IN_LIBIO is defined. - * signal/signal.h: Define thread signal handling functions also for - POSIX95. +2001-01-04 Kaz Kojima - * sysdeps/unix/sysv/linux/bits/types.h: Define thread types also for - POSIX95. - * sysdeps/unix/sysv/linux/alpha/bits/types.h: Likewise. - * sysdeps/unix/sysv/linux/ia64/bits/types.h: Likewise. - * sysdeps/unix/sysv/linux/mips/bits/types.h: Likewise. - * sysdeps/unix/sysv/linux/sparc/bits/types.h: Likewise. + * sysdeps/unix/sysv/linux/sh/socket.S (__socket): Fix error code + handling. - * sysvipc/sys/shm.h: Define pid_t for XPG. +2001-01-03 Andreas Schwab - * posix/unistd.h: Remove setkey, rename, and cuserid prototypes as - they are not anymore required here. + * sysdeps/generic/strtoll.c: Remove unused __strtoq_internal alias. + * sysdeps/generic/strtoull.c: Remove unused __strtouq_internal alias. - * wcsmbs/wchar.h: Make the various wide char string and stream - functions available for the respective XPG versions. + * sysdeps/wordsize-64/strtol.c: Add strtoq alias and fix strtoll alias. + * sysdeps/wordsize-64/strtoul.c: Add strtouq alias and fix + strtoull alias. + * sysdeps/wordsize-64/wcstol.c: Add wcstoq alias and fix wcstoll alias. + * sysdeps/wordsize-64/wcstoul.c: Add wcstouq alias and fix + wcstoull alias. - * nss/Makefile: Remove rules to build and distribute nss_db. + * sysdeps/generic/strtoul.c: Make sure we find strtol.c in this + directory. + * sysdeps/generic/strtol_l.c: Likewise. + * sysdeps/generic/strtoul_l.c: Likewise. + * sysdeps/generic/wcstoul.c: Likewise, for wcstol.c. - * sysdeps/generic/alphasort64.c: Remove unnecessary versioning. - * sysdeps/generic/scandir64.c: Likewise. - * sysdeps/generic/versionsort64.c: Likewise. + * sysdeps/wordsize-64/strtol_l.c: Fix alias. + * sysdeps/wordsize-64/strtoul_l.c: Likewise. + * sysdeps/wordsize-64/wcstol_l.c: Fix alias. + * sysdeps/wordsize-64/wcstoul_l.c: Likewise. -2000-08-13 Ulrich Drepper - Benjamin Koznik +2001-01-04 Andreas Jaeger - * libio/fileops.c: Merge with libstdc++-v3. - * libio/genops.c: Likewise. - * libio/iofclose.c: Likewise. - * libio/iofopen.c: Likewise. - * libio/iofwide.c: Likewise. - * libio/libio.h: Likewise. - * libio/libioP.h: Likewise. - * libio/stdfiles.c: Likewise. - * libio/stdio.c: Likewise. - * libio/wfileops.c: Likewise. - * libio/wgenops.c: Likewise. + * nss/nsswitch.c: Include files for missing prototypes, remove + buggy declaration of prototypes. - * libio/Versions: Export functions needed by libstdc++-v3 in GLIBC_2.2. +2001-01-03 Franz Sirl -2000-08-12 Ulrich Drepper + * resolv/Versions: Fix bracing. + * sysdeps/powerpc/soft-fp/Versions: Likewise. + * sysdeps/sparc/sparc64/soft-fp/Versions: Likewise. - * locale/programs/localedef.c: Implement --prefix option to allow - writing in standard places of alternative install directories. +2001-01-02 Franz Sirl - * posix/regex.c (compile_range): Implement collation sequence - handling for glibc. Use simple character ordering otherwise and - not strcoll. + * sysdeps/powerpc/dl-machine.c (__process_machine_rela): Fix typo. -2000-08-12 Mark Kettenis +2001-01-02 Ulrich Drepper - * sysdeps/generic/scandir64.c: Include . + * manual/Makefile (TEXI2PDF): Change to texi2dvi --pdf. + Suggested by Minko Markov . -2000-08-12 Andreas Jaeger +2001-01-02 Franz Sirl - * sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Handle - __USE_FILE_OFFSET64 correctly for locking. - * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise. + * sysdeps/powerpc/elf/start.S (__data_start): Make it global. + * sysdeps/powerpc/dl-machine.c (dl_reloc_overflow): Print the name of + the failing symbol. + (__process_machine_rela): Pass symbol to dl_reloc_overflow(). -2000-08-12 Jakub Jelinek +2001-01-02 Ben Collins - * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_FCNTL64): - Define for 2.4.1 on sparc as well. - * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Fill in correct values - for F_GETLK64, F_SETLK64, and F_SETLKW64. - * sysdeps/unix/sysv/linux/sparc/sparc32/fcntl.c: New file. - * sysdeps/unix/sysv/linux/sparc/sparc32/lockf64.c: New file. + * time/tzset.c (tzset_internal): Make sure we fall back to UTC + if TZ is not set and TZDEFAULT is not present. -2000-08-12 Ulrich Drepper +2001-01-01 Ben Collins - * io/fts.c (fts_stat): Recognize DT_WHT only if S_IFWHT is also + * string/strings.h: Make sure we declare our functions even if + string.h is already included, based on whether or not __USE_BSD is defined. -2000-08-12 Andreas Jaeger - - * sysdeps/unix/sysv/linux/alpha/bits/fcntl.h (F_GETLK64, - F_SETLK64, F_SETLKW64): Define with F_GETLK etc. - - * sysdeps/unix/sysv/linux/mips/sys/tas.h (_test_and_set): Add .set - mips2 for assembler. - - * sysdeps/unix/sysv/linux/i386/fcntl.c (__libc_fcntl): Try fcntl - if fnctl64 is not available for F_*LK*64. - - * sysdeps/unix/sysv/linux/i386/lockf64.c: New file. - -2000-08-12 Ulrich Drepper - - * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_FCNTL64): - Define for 2.4.1 on x86. - * sysdeps/unix/sysv/linux/i386/fcntl.c: New file. - * sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Fill in correct values - for F_GETLK64, F_SETLK64, and F_SETLKW64. - - * dirent/dirent.h: Define DT_WHT. - - * sysdeps/unix/sysv/linux/arm/alphasort64.c: New file. - * sysdeps/unix/sysv/linux/arm/getdents64.c: New file. - * sysdeps/unix/sysv/linux/arm/readdir64.c: New file. - * sysdeps/unix/sysv/linux/arm/readdir64_r.c: New file. - * sysdeps/unix/sysv/linux/arm/scandir64.c: New file. - * sysdeps/unix/sysv/linux/arm/versionsort64.c: New file. - -2000-08-11 Ulrich Drepper - - * nss/digits_dots.c: Don't pass NULL in h_aliases for successful - lookup, pass pointer to array with NULL pointer [PR libc/1858]. - * inet/Makefile (tests): Add tst-gethnm. - * inet/tst-gethnm.c: New file. - - * rt/aio_cancel.c: If canceling a specific request which is running - *really* do nothing. - * rt/aio_misc.h: Add `done' to states of a request. - * rt/aio_misc.c: Add several tests for the correct state. - Simplify request table memory handling. - -2000-08-10 Jakub Jelinek - - * dirent/scandir.c: Use it for scandir64 and old_scandir64 as well. - * dirent/scandir64.c: Move... - * sysdeps/generic/scandir64.c: ...here. - * dirent/alphasort64.c: Move... - * sysdeps/generic/alphasort64.c: ...here. - * dirent/versionsort64.c: Move... - * sysdeps/generic/versionsort64.c: ...here. - * sysdeps/unix/sysv/linux/i386/dirent/Versions (alphasort64, - getdirentries64, readdir64, readdir64_r, scandir64, versionsort64): - Export symbols at GLIBC_2.2. - * sysdeps/unix/sysv/linux/powerpc/dirent/Versions: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc32/dirent/Versions: Likewise. - * include/dirent.h (__readdir64_r, __scandir64, __alphasort64, - __versionsort64): Add prototypes. - * io/Versions (__xstat64, __fxstat64, __lxstat64): Export at GLIBC_2.2. - * sysdeps/unix/sysv/linux/alpha/kernel_stat.h (__xstat_conv): Remove - unused prototype. - * sysdeps/unix/sysv/linux/alpha/readdir.c: Export at both GLIBC_2.1 - and GLIBC_2.2. - * sysdeps/unix/sysv/linux/alpha/readdir_r.c: Likewise. - * sysdeps/unix/sysv/linux/alpha/getdents.c: New. - * sysdeps/unix/sysv/linux/alpha/getdents64.c: New. - * sysdeps/unix/sysv/linux/bits/types.h (__ino64_t): Change to - __u_quad_t. - * sysdeps/unix/sysv/linux/bits/stat.h (struct stat, struct stat64): - Adjust for kernel-2.4.0-test6 layout. - * sysdeps/unix/sysv/linux/i386/fxstat.c (__fxstat64): Export at both - GLIBC_2.1 and GLIBC_2.2. - * sysdeps/unix/sysv/linux/i386/lxstat.c (__lxstat64): Likewise. - * sysdeps/unix/sysv/linux/i386/xstat.c (__xstat64): Likewise. - * sysdeps/unix/sysv/linux/i386/getdents64.c: New. - * sysdeps/unix/sysv/linux/i386/olddirent.h: New. - * sysdeps/unix/sysv/linux/i386/readdir64.c: New. - * sysdeps/unix/sysv/linux/i386/readdir64_r.c: New. - * sysdeps/unix/sysv/linux/i386/scandir64.c: New. - * sysdeps/unix/sysv/linux/i386/alphasort64.c: New. - * sysdeps/unix/sysv/linux/i386/versionsort64.c: New. - * sysdeps/unix/sysv/linux/ia64/getdents.c: New. - * sysdeps/unix/sysv/linux/ia64/getdents64.c: New. - * sysdeps/unix/sysv/linux/ia64/readdir.c: Include alpha/readdir.c. - * sysdeps/unix/sysv/linux/ia64/readdir_r.c: Include alpha/readdir_r.c. - * sysdeps/unix/sysv/linux/mips/bits/types.h (__ino64_t): Change to - __u_quad_t. - * sysdeps/unix/sysv/linux/powerpc/bits/stat.h: New. - * sysdeps/unix/sysv/linux/powerpc/kernel_stat.h (_HAVE_STAT*): Define. - * sysdeps/unix/sysv/linux/powerpc/scandir64.c: New. - * sysdeps/unix/sysv/linux/powerpc/getdents64.c: New. - * sysdeps/unix/sysv/linux/powerpc/readdir64.c: New. - * sysdeps/unix/sysv/linux/powerpc/readdir64_r.c: New. - * sysdeps/unix/sysv/linux/sparc/bits/types.h (__ino64_t): Change to - __u_quad_t. - * sysdeps/unix/sysv/linux/sparc/bits/stat.h: New. - * sysdeps/unix/sysv/linux/sparc/sparc32/kernel_stat.h (_HAVE_STAT*): - Define. - * sysdeps/unix/sysv/linux/sparc/sparc32/getdents64.c: New. - * sysdeps/unix/sysv/linux/sparc/sparc32/readdir64.c: New. - * sysdeps/unix/sysv/linux/sparc/sparc32/readdir64_r.c: New. - * sysdeps/unix/sysv/linux/sparc/sparc32/scandir64.c: New. - * sysdeps/unix/sysv/linux/sparc/sparc64/kernel_stat.h (_HAVE_STAT*): - Define. - * sysdeps/unix/sysv/linux/sparc/sparc64/readdir.c: Include - alpha/readdir.c. - * sysdeps/unix/sysv/linux/sparc/sparc64/readdir_r.c: Include - alpha/readdir_r.c - * sysdeps/unix/sysv/linux/sparc/sparc64/getdents.c: New. - * sysdeps/unix/sysv/linux/sparc/sparc64/getdents64.c: New. - * sysdeps/unix/sysv/linux/fxstat64.c (__fxstat64): If - _HAVE_STAT64___ST_INO and __st_ino != (uint32_t)st_ino, set - st_ino from __st_ino. - * sysdeps/unix/sysv/linux/lxstat64.c (__lxstat64): Likewise. - * sysdeps/unix/sysv/linux/xstat64.c (__xstat64): Likewise. - * sysdeps/unix/sysv/linux/xstatconv.c (xstat_conv, xstat64_conv, - xstat32_conv): Use _HAVE_STAT* macros. If _HAVE_STAT64___ST_INO, - set __st_ino in addition to st_ino. - * sysdeps/unix/sysv/linux/kernel_stat.h (_HAVE_STAT*): Define. - * sysdeps/unix/sysv/linux/getdents.c: Use it for __getdents64 and - __old_getdents64 as well. - * sysdeps/unix/sysv/linux/getdirentries.c: Use it for - getdirentries64 and old_getdirentries64 as well. - * sysdeps/unix/sysv/linux/getdirentries64.c (GETDIRENTRIES, - __GETDENTS): Define. - (GETDENTS64): Remove. - * sysdeps/unix/sysv/linux/getdents64.c (__GETDENTS, DIRENT_TYPE): - Define. - (GETDENTS64): Remove. - * sysdeps/unix/sysv/linux/readdir64.c: Use sysdeps/unix/readdir.c. - * sysdeps/unix/sysv/linux/readdir64_r.c: Use sysdeps/unix/readdir_r.c. - * sysdeps/unix/readdir.c: Use it for readdir64 and __old_readdir64 - as well. - * sysdeps/unix/readdir_r.c: Use it for readdir64_r and - __old_readdir64_r as well. - * sysdeps/unix/sysv/linux/kernel-features.h: Define - __ASSUME_ST_INO_64_bit for kernel 2.4.1 and up. - -2000-08-08 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Add SI_KERNEL define. - Add missing ILL_BADIADDR to enum and make ILL_BREAK match the - define of the kernel. - Add missing __SEG_PSTKOVF definition. - Adjust the padding of struct siginfo and struct sigevent to - match the fact that sigval_t is 64 bit. - -2000-08-10 Ulrich Drepper - - * timezone/zic.c: Update from tzcode2000f. - * timezone/australasia: Update from tzdata2000f. - * timezone/europe: Likewise. - * timezone/southamerica: Likewise. - * timezone/yearistype: Likewise. - -2000-08-10 Andreas Jaeger - - * sysdeps/unix/sysv/linux/mips/bits/stat.h: Synch struct stat64 and - stat with current MIPS kernel. - -2000-08-01 Mark Kettenis - - * sysdeps/unix/sysv/linux/i386/sys/elf.h (elf_greg_t, ELF_NGREG, - elf_gregset_t, elf_fpregset_t, elf_fpxregset_t): Moved to - sysdeps/unix/sysv/linux/i386/sys/procfs.h. - Remove the junk that's only relevant in the Linux kernel itself. - Add a warning saying that this file is now obsolete, and include - . - * sysdeps/unix/sysv/linux/i386/sys/procfs.h (elf_greg_t, - ELF_NGREG, elf_gregset_t, elf_fpregset_t, elf_fpxregset_t): Moved - here from sysdeps/unix/sysv/linux/i386/sys/elf.h. Don't include - , and . Remove parts of - `struct elf_prstatus' that are #ifdef'ed out. Improve comments - and add the notice that the file is primarily there for GDB. - * sysdeps/unix/sysv/linux/i386/sys/user.h: Fix comment. - -2000-08-09 Jakub Jelinek - - * time/tzfile.c (__tzfile_compute): __tzstring zones - from zone_names. - -2000-08-09 Jakub Jelinek - - * resolv/resolv.h (__res_state): Surround prototype with - __BEGIN_DECLS/__END_DECLS. - * sysdeps/unix/sysv/linux/m68k/chown.c: Include kernel-features.h. - -2000-08-04 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/bits/resource.h (__rlimit_resource): - Make independant of asm/resource.h from the Linux kernel. - -2000-08-06 Bruno Haible - - * iconv/gconv_conf.c (__gconv_read_conf): Don't call realpath. - -2000-08-06 Bruno Haible - - * intl/Makefile (CPPFLAGS): Remove $(i18ndir) from LOCALE_ALIAS_PATH. - * locale/Makefile (locale-CPPFLAGS): Likewise. - -2000-08-09 Ulrich Drepper - - * sysdeps/i386/fpu/libm-test-ulps: Increase several error values - for AMD processors. - -2000-08-03 Jakub Jelinek - - * misc/Versions (mincore): Export at GLIBC_2.2. - -2000-08-03 Bruno Haible - - * intl/libintl.h (gettext, dgettext, dcgettext): Add back __THROW. - -2000-08-02 Mark Kettenis - - * sysdeps/mach/hurd/socketpair.c (__socketpair): Renamed from - socketpair. Made socketpair a weak alias. - * sysdeps/mach/hurd/pipe.c (__pipe): Reimplemented using - __socketpair. Use S_IFIFO protocol to make pipes POSIX - conforming, but fall back on the old protocol if the socket server - doesn't support it. - * include/sys/socket.h: Add prototype for __socketpair. - -2000-08-09 Andreas Schwab - - * stdio-common/vfprintf.c (vfprintf): Also set `is_long' if the - long long modifier is seen. - - * elf/nodelete.c (do_test): Remove reference to undefined member - sa_restorer. - * rt/tst-aio4.c (do_test): Likewise. - - * configure.in: Add `-lm' when checking for libgd. - * malloc/Makefile ($(objpfx)memusagestat): Add `-lm' during - linking. - -2000-08-09 Andreas Jaeger - - * configure.in: Change required make versions. - - * manual/install.texi (Tools for Compilation): Document required - make version. - (Supported Configurations): Update list of supported - configurations. - -2000-08-08 Ulrich Drepper - - * locale/linereader.c (get_string): Don't print an error is a string - contains an unknown character. - -2000-08-06 Ulrich Drepper - - * locale/programs/ld-collate.c (struct symbol_t): Add name element. - (new_symbol): Take new parameters with name of the symbol. - Adjust callers. - (handle_ellipsis): Don't only allow character symbols. - (collate_read): Allow string of collating elements contain invalid - characters; ignore entry in this case. - Handle ellipsis of collating symbols before first order_start. - Allow ellipsis in state 0. - -2000-08-04 Ulrich Drepper - - * locale/programs/ld-collate.c (handle_ellipsis): Fix typo in - error message. - Reported by Tung-Han Hsieh . - -2000-08-04 Greg McGary - - * posix/regex.c (SET_HIGH_BOUND): New macro. - (MOVE_BUFFER_POINTER): Use it. - (ELSE_EXTEND_BUFFER_HIGH_BOUND): New macro. - (EXTEND_BUFFER): Use it. - -2000-08-03 Ulrich Drepper - - * libio/iofwide.c (_IO_fwide): Initialize fp->_codecvt as well. - * libio/fileops.c (_IO_new_file_fopen): Use _codecvt not from - _wide_data but from _IO_FILE directly. - * libio/iofclose.c: Likewise. - * libio/wfileops.c: Likewise. - - * libio/genops.c (_IO_default_showmanyc): Change return type to size_t. - * libio/libioP.h: Change prototypes. - -2000-08-03 Greg McGary - - * sysdeps/i386/setjmp.S (__sigsetjmp): Pop our - frame pointer early so that we save caller's frame pointer. - * sysdeps/i386/elf/setjmp.S: Likewise. - - * sysdeps/unix/sysv/syscalls.list (time, utime): Correct signatures. - * io/test-utime.c: Test passing NULL as utimbuf* arg. - - * posix/regex.c (EXTEND_BUFFER_HIGH_BOUND): Remove macro. - (MOVE_BUFFER_POINTER): Handle high_bound properly. - (EXTEND_BUFFER): Don't call EXTEND_BUFFER_HIGH_BOUND. - -2000-08-03 Ulrich Drepper - - * iconvdata/big5.c: Updated. - Patch by Tung-Han Hsieh . - -2000-08-02 Ulrich Drepper - - * Makeconfig (all-subdirs): Add conform. - * conform/Makefile: Include ../Rules. - - * Makefile (README): Add rules to generate here as well. - -2000-08-02 Ulrich Drepper - - * version.h (VERSION): Bump to 2.1.92. - - * sysdeps/ia64/Dist: Add _mcount.S. - - * sysdeps/unix/sysv/linux/ia64/Dist: Add clone.S. - - * sysdeps/unix/sysv/linux/mips/Dist: Add _test_and_set.c. - - * elf/Makefile (distribute): Add missing modules. - - * sysdeps/unix/sysv/linux/s390/Dist: Remove nonexisting files. - - * posix/regex.c (compile_range): Translate range start and end - characters to avoid empty range in case of REG_ICASE [PR libc/1842]. - - * sysdeps/unix/sysv/linux/ia64/bits/resource.h: Don't include - asm/resource.h. - - * sysdeps/unix/sysv/linux/arm/Makefile: Undo last change. - -2000-08-02 Andreas Jaeger - - * elf/elf.h (EM_S390): Added. - (R_390_*): New relocs for S390. - - * sysdeps/unix/sysv/linux/s390/Dist: New file. - * sysdeps/unix/sysv/linux/s390/sysdep.h: New file. - * sysdeps/unix/sysv/linux/s390/sysdep.S: New file. - * sysdeps/unix/sysv/linux/s390/syscall.S: New file. - * sysdeps/unix/sysv/linux/s390/sys/user.h: New file. - * sysdeps/unix/sysv/linux/s390/sys/ucontext.h: New file. - * sysdeps/unix/sysv/linux/s390/sys/ptrace.h: New file. - * sysdeps/unix/sysv/linux/s390/sys/elf.h: New file. - * sysdeps/unix/sysv/linux/s390/socket.S: New file. - * sysdeps/unix/sysv/linux/s390/sigcontextinfo.h: New file. - * sysdeps/unix/sysv/linux/s390/shmctl.c: New file. - * sysdeps/unix/sysv/linux/s390/setreuid.c: New file. - * sysdeps/unix/sysv/linux/s390/setresuid.c: New file. - * sysdeps/unix/sysv/linux/s390/setresgid.c: New file. - * sysdeps/unix/sysv/linux/s390/setregid.c: New file. - * sysdeps/unix/sysv/linux/s390/setgroups.c: New file. - * sysdeps/unix/sysv/linux/s390/setgid.c: New file. - * sysdeps/unix/sysv/linux/s390/setfsuid.c: New file. - * sysdeps/unix/sysv/linux/s390/setfsgid.c: New file. - * sysdeps/unix/sysv/linux/s390/seteuid.c: New file. - * sysdeps/unix/sysv/linux/s390/setegid.c: New file. - * sysdeps/unix/sysv/linux/s390/semctl.c: New file. - * sysdeps/unix/sysv/linux/s390/register-dump.h: New file. - * sysdeps/unix/sysv/linux/s390/putpmsg.c: New file. - * sysdeps/unix/sysv/linux/s390/putmsg.c: New file. - * sysdeps/unix/sysv/linux/s390/profil-counter.h: New file. - * sysdeps/unix/sysv/linux/s390/msgctl.c: New file. - * sysdeps/unix/sysv/linux/s390/mmap.S: New file. - * sysdeps/unix/sysv/linux/s390/getuid.c: New file. - * sysdeps/unix/sysv/linux/s390/getresuid.c: New file. - * sysdeps/unix/sysv/linux/s390/getresgid.c: New file. - * sysdeps/unix/sysv/linux/s390/getpmsg.c: New file. - * sysdeps/unix/sysv/linux/s390/getmsg.c: New file. - * sysdeps/unix/sysv/linux/s390/getgroups.c: New file. - * sysdeps/unix/sysv/linux/s390/getegid.c: New file. - * sysdeps/unix/sysv/linux/s390/geteuid.c: New file. - * sysdeps/unix/sysv/linux/s390/fchown.c: New file. - * sysdeps/unix/sysv/linux/s390/clone.S: New file. - * sysdeps/unix/sysv/linux/s390/brk.c: New file. - * sysdeps/unix/sysv/linux/s390/bits/time.h: New file. - * sysdeps/unix/sysv/linux/s390/bits/resource.h: New file. - * sysdeps/unix/sysv/linux/s390/bits/mman.h: New file. - * sysdeps/unix/sysv/linux/s390/bits/fcntl.h: New file. - * sysdeps/unix/sysv/linux/s390/Makefile: New file. - * sysdeps/s390/sysdep.h: New file. - * sysdeps/s390/sys/ucontext.h: New file. - * sysdeps/s390/sub_n.S: New file. - * sysdeps/s390/strncpy.S: New file. - * sysdeps/s390/strcpy.S: New file. - * sysdeps/s390/stackinfo.h: New file. - * sysdeps/s390/setjmp.S: New file. - * sysdeps/s390/s390-mcount.S: New file. - * sysdeps/s390/mul_1.S: New file. - * sysdeps/s390/memusage.h: New file. - * sysdeps/s390/memset.S: New file. - * sysdeps/s390/memcpy.S: New file. - * sysdeps/s390/memchr.S: New file. - * sysdeps/s390/machine-gmon.h: New file. - * sysdeps/s390/ldbl2mpn.c: New file. - * sysdeps/s390/gmp-mparam.h: New file. - * sysdeps/s390/fpu/fpu_control.h: New file. - * sysdeps/s390/fpu/fesetround.c: New file. - * sysdeps/s390/fpu/fegetround.c: New file. - * sysdeps/s390/fpu/fclrexcpt.c: New file. - * sysdeps/s390/fpu/bits/fenv.h: New file. - * sysdeps/s390/ffs.c: New file. - * sysdeps/s390/elf/start.S: New file. - * sysdeps/s390/elf/setjmp.S: New file. - * sysdeps/s390/elf/bsd-setjmp.S: New file. - * sysdeps/s390/elf/bsd-_setjmp.S: New file. - * sysdeps/s390/dl-machine.h: New file. - * sysdeps/s390/bzero.S: New file. - * sysdeps/s390/bsd-setjmp.S: New file. - * sysdeps/s390/bsd-_setjmp.S: New file. - * sysdeps/s390/bits/string.h: New file. - * sysdeps/s390/bits/setjmp.h: New file. - * sysdeps/s390/bits/huge_val.h: New file. - * sysdeps/s390/bits/endian.h: New file. - * sysdeps/s390/bits/byteswap.h: New file. - * sysdeps/s390/bcopy.S: New file. - * sysdeps/s390/backtrace.c: New file. - * sysdeps/s390/atomicity.h: New file. - * sysdeps/s390/asm-syntax.h: New file. - * sysdeps/s390/addmul_1.S: New file. - * sysdeps/s390/add_n.S: New file. - * sysdeps/s390/abort-instr.h: New file. - * sysdeps/s390/__longjmp.c: New file. - * sysdeps/s390/Makefile: New file. - * sysdeps/s390/Implies: New file. - * sysdeps/s390/Dist: New file. - Patches by Martin Schwidefsky . - -2000-08-01 Ulrich Drepper - - Remove incompatible IPv6 extension of RPC. - * sunrpc/Makefile: Undo changes. - * sunrpc/rpc_main.c: Likewise. - * sunrpc/rpc/clnt.h: Likewise. - * sunrpc/rpc/svc.h: Likewise. - * sunrpc/bindrsvprt6.c: Removed. - * sunrpc/clnt_tcp6.c: Removed. - * sunrpc/clnt_udp6.c: Removed. - * sunrpc/svc_tcp6.c: Removed. - * sunrpc/svc_udp6.c: Removed. - - * intl/libintl.h: Don't use __attribute_format_arg__ for gettext, - dgettext, and dcgettetxt. - - * intl/locale.alias: Update japanese aliases. - - * sysdeps/ia64/bits/byteswap.h: New file. - Patch by Dan Pop . - - * misc/sys/cdefs.h: Define __attribute_format_arg__. - * intl/libintl.h: Use it here instead of using __attribute__ directly. - -2000-07-13 H.J. Lu - - * posix/regex.c (re_max_failures): Set to 4000. - -2000-08-01 Ulrich Drepper - - * gnulib/Makefile (tests): Add tst-gcc. - * gnulib/tst-gcc.c: New file. - - * assert/Makefile (routines): Add __assert. - * assert/Versions: Export __assert for glibc 2.2. - * assert/__assert.c: New file. - * assert/assert.h: Declare __assert. - -2000-07-27 Bruno Haible - - * locale/localeinfo.h (_ISCTYPE): New macro. - * posix/fnmatch_loop.c (internal_fnmatch): Use it, support new - LC_CTYPE locale format. - * locale/programs/ld-ctype.c (locale_ctype_t): New field class_b. - (ctype_output): Output class_b[nr] right before class_3level[nr]. - (allocate_arrays): Fill class_b, similarly to class_3level. - -2000-08-01 Ulrich Drepper - Joseph S. Myers - - * math/tgmath.h: Make standard compliant. Don't ask how. - -2000-07-04 H.J. Lu - - * elf/Makefile ($(inst_slibdir)/$(rtld-version-installed-name)): - Use $(do-install-program) instead of "$(INSTALL_PROGRAM) $< $@.new". - ($(inst_slibdir)/$(rtld-installed-name)): Use $(make-shlib-link) only. - -2000-07-30 Maciej W. Rozycki - - * include/features.h (_XOPEN_SOURCE): Update the explanation. - (__USE_LARGEFILE): Add an explanation. - (_POSIX_C_SOURCE): Define to 2 only if _XOPEN_SOURCE < 500. - (__USE_XOPEN2K): Define whenever _XOPEN_SOURCE >= 600. - -2000-08-01 Ulrich Drepper - - * libio/Makefile: Enable exception handling for genops, wgenops, - fileops, and wfileops. - -2000-07-29 Mark Kettenis - - * sysdeps/mach/hurd/dl-sysdep.c (_dl_sysdep_start): Take into - acount that elf/rtld's main program might remove some varibales - from the environment if we're trying to be secure. Move the Hurd - startup data if necessary, or, if we there is no startup data, - make sure the magical convention that ARGV[0] is stored just after - the environment list. - -2000-08-01 Philip Blundell - - * sysdeps/unix/sysv/linux/arm/Makefile [subdir=resource] - (sysdep_routines): Add oldgetrlimit, oldsetrlimit. - * sysdeps/unix/sysv/linux/arm/syscalls.list: Add oldgetrlimit, - oldsetrlimit for GLIBC_2.0. - -2000-08-01 Andreas Jaeger - - * nss/nss_files/files-ethers.c: Use case-insensitive lookup. - (LINE_PARSER): Allow any number of spaces between ip address and - number. Fixes PR libc/1833, reported by rp010gf@voruta.vu.lt. - - * conform/data/netdb.h-data: Remove getipnodebyaddr and friends. - - * include/netdb.h: Remove getipnodebyaddr and friends, leave - constants in. - - * nis/Versions: Remove _nss_nis_getipnodebyname_r and - _nss_nisplus_getipnodebyname_r. - - * nis/nss_nis/nis-hosts.c (_nss_nis_getipnodebyname_r): #if 0 for - now, getipnodebyname is deprecated. - * nis/nss_nisplus/nisplus-hosts.c (_nss_nisplus_getipnodebyname_r): - Likewise. - - * inet/Makefile (routines): Don't build getipnodebyaddr and - friends. - - * intl/Makefile (distribute): Add tst-translit.sh and translit.po. - - * hesiod/Makefile (distribute): Add nss_hesiod/nss_hesiod.h. - - * elf/Makefile (distribute): Add filtmod1.c and filtmod2.c. - - * wctype/Makefile (distribute): Add wchar-lookup.h. - - * sysdeps/generic/Dist: Add bp-checks.h and bp-semctl.h. - - * iconvdata/Makefile (distribute): Add isiri-3342.h. - -2000-08-01 Andreas Schwab - - * Make-dist (dist): Resolve `..' in file names. - -2000-08-01 Andreas Jaeger - - * stdio-common/Makefile (distribute): Remove removed files, add - new files. - - * Makefile (distribute): Remove include/db_185.h and db.h. - - * include/db_185.h: Remove, it's not needed anymore. - * include/db.h: Likewise. - -2000-07-31 Ulrich Drepper - - * inet/Makefile (tests): Remove tst-ipnode. - * include/netdb.h: Add stuff removed from resolv/netdb.h here for - now. - -2000-07-31 Jes Sorensen - - * sysdeps/ia64/elf/initfini.c: Kill dummy section since align and - endp statements have already been added. - -2000-04-18 David Mosberger - - * sysdeps/unix/sysv/linux/ia64/sysdep.h: Include - . - - * sysdeps/ia64/_mcount.S: New file. - - * sysdeps/ia64/elf/initfini.c (_init): Preserve gp around call to - __gmon_start__. Fix up extraneous whitespace. - -2000-01-12 H.J. Lu - - * sysdeps/ia64/elf/initfini.c: New file. - -2000-07-31 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/clone.S: Add stop bit to avoid WAW - dependency between branch and ar.pfs write. - -2000-07-31 H.J. Lu - - * sysdeps/generic/printf_fphex.c (__printf_fphex): Correctly - handle the wchar_t array. - -2000-07-31 Ulrich Drepper - - * iconvdata/gb18030.c: Don't map to and from positions in ISO - 10646 which are not yet assigned. - Patch by wang shouhua . - -2000-07-31 Andreas Jaeger - - * inet/Versions: Remove getipnodebyaddr and friends from - GLIBC_2.2. - - * resolv/netdb.h: Remove getipnodebyaddr and friends. - -2000-07-30 Bruno Haible - - * iconvdata/sjis.c (BODY for FROM_LOOP): Treat the case - ch >= 0x81 && ch2 < 0x40 as invalid. - -2000-07-30 Bruno Haible - - * iconvdata/uhc.c (BODY for FROM_LOOP): Reject ch2 == 0xff as invalid. - (BODY for TO_LOOP): Accept 0x7f. Increment outptr as needed. - -2000-07-30 Bruno Haible - - * iconvdata/johab.c (BODY for TO_LOOP): After calling - ucs4_to_ksc5601_sym, fix the conversion to JOHAB. - -2000-07-30 Bruno Haible - - * iconvdata/t.61.c (to_ucs4): Change values of 0xa4, 0a6, 0xa8, 0xb4, - 0xb8. - (from_ucs4): Change values of U+00A4, U+00BB, U+00ED. - -2000-07-30 Bruno Haible - - * iconvdata/macintosh.c (HAS_HOLES): Set to 1. - -2000-07-30 Bruno Haible - - * iconvdata/iso_6937.c (to_ucs4): Change values of 0x24 and 0xb4. - (from_ucs4): Change values of U+00A4 and U+00ED. - (BODY of TO_LOOP): Remove mapping from U+02DC to 0x0020. - -2000-07-30 Bruno Haible - - * iconvdata/ansi_x3.110.c (from_ucs4): Change entry for 0xed. - (BODY for TO_LOOP): Map U+2122, U+2126, not U+2022, U+2026. - -2000-07-30 Bruno Haible - - * iconvdata/Makefile (gen-8bit-gap-modules): Remove isiri-3342. - * iconvdata/isiri-3342.h: New file. - * iconvdata/isiri-3342.c (HAS_HOLES): Avoid gaps >= 0xe0, but don't - treat 0x80 as a gap. - -2000-07-30 Bruno Haible - - * string/strxfrm.c (encoding_mask, encoding_byte): Remove. - (utf8_encode): Use simple shifts instead. Fix return value. - -2000-07-31 Ulrich Drepper - - * timezone/private.h: Update from tzcode2000e. - * timezone/asia: Update from tzdata2000e. - * timezone/australasia: Likewise. - * timezone/europe: Likewise. - * timezone/northamerica: Likewise. - * timezone/zone-tab: Likewise. - -2000-07-30 Ralf Baechle - - * sysdeps/unix/sysv/linux/mips/bits/sigstack.h: New file. On MIPS - the order of struct sigaltstack members is different. - -2000-07-26 Philip Blundell - - * sysdeps/unix/sysv/linux/arm/bits/fcntl.h: New file. - -2000-07-29 Ulrich Drepper - - * locale/langinfo.h: Add entries for extra tables in CTYPE data. - * locale/programs/ld-ctype.c: Adjust for this. - - * locale/programs/ld-collate.c: Add more alignment checks. - * locale/string/strcoll.c: Likewise. - -2000-07-30 Mark Kettenis - - * stdio-common/vfprintf.c: Move inclusion of _i18n_number.h - outside USE_IN_LIBIO block. - -2000-07-26 Philip Blundell - - * sysdeps/arm/dl-machine.h (fix_bad_pc24): New function. - (elf_machine_rel): Use it for out-of-range PC24 relocs. - -2000-07-28 Philip Blundell - - * math/test-fpucw.c: Ignore reserved bits in control word. - -2000-07-28 Philip Blundell - - * sysdeps/unix/sysv/linux/arm/sysdep.h (PSEUDO_RET): New macro. - (ret): Redefine to PSEUDO_RET. - (PSEUDO): Remove jump to syscall_error. - -2000-07-29 Mark Kettenis - - * resolv/README: Add some information about using the resolver in - multi-threaded code and with C++. Spelling fixes. - -2000-07-29 Mark Kettenis - - * resolv/resolv.h (struct __sockaddr_in): Remove. - (struct __res_state) [!_LIBC]: Remove reference to __sockaddr_in. - -2000-07-29 Greg McGary - - * Rules (test-bp-inputs, make-test-out): New variables. - ($(objpfx)%-bp.out): New rule. - ($(objpfx)%.out): Rewrite in terms of new variables. - - * libio/iovswscanf.c (vswscanf): Pass _IO_FILE_plus pointer to - internal function that uses vtable. - * libio/vsnprintf.c (_IO_vsnprintf): Likewise. - * libio/vswprintf.c (_IO_vswprintf): Likewise. - - * malloc/malloc.c (mem2chunk): Define in terms of chunk_at_offset. - (malloc_extend_top): Convert brk to chunk using chunk_at_offset. - (chunk_align): Likewise. - - * time/asctime.c (ab_day_name, ab_month_name): Rewrite expression - in a way that conforms to decl, and avoids spurious bounds violation. - - * sysdeps/arm/frame.h (struct layout): Make pointers __unbounded. - * sysdeps/generic/frame.h: Likewise. - * sysdeps/generic/backtrace.c (ADVANCE_STACK_FRAME): Wrap bounds - around return value. - (__backtrace): Qualify frame-pointer chain and return address - pointers as __unbounded. Wrap bounds around variable `current'. - * sysdeps/generic/segfault.c (ADVANCE_STACK_FRAME): Wrap bounds - around return value. - (catch_segfault): Qualify frame-pointer chain and return address - pointers as __unbounded. Wrap bounds around variable `current'. - * sysdeps/i386/backtrace.c (struct layout): Make pointers __unbounded. - (ADVANCE_STACK_FRAME): Wrap bounds around return value. - * sysdeps/powerpc/backtrace.c (struct layout): Make pointers - __unbounded. - (__backtrace): Qualify frame-pointer chain and return address - pointers as __unbounded. Wrap bounds around variable `current'. - - * sysdeps/i386/addmul_1.S: s2_limb is scalar so remove bounds check. - * sysdeps/i386/mul_1.S: Likewise. - * sysdeps/i386/submul_1.S: Likewise. - * sysdeps/i386/i586/addmul_1.S: Likewise. - * sysdeps/i386/i586/mul_1.S: Add bounds checks. - * sysdeps/i386/i586/submul_1.S: Likewise. - -2000-07-27 Andreas Jaeger - - * libio/Depend: New file, libio needs localedata for tests. - * posix/Depend: Likewise. - -2000-07-28 Ulrich Drepper - - * stdio-common/_i18n_itoa.c: Removed. - * stdio-common/_i18n_itoa.h: Removed. - * stdio-common/_i18n_itowa.c: Removed. - * stdio-common/_i18n_itowa.h: Removed. - * stdio-common/_i18n_number.h: New file. - * stdio-common/Depend: New file. - * stdio-common/printf-parse.h: Handle I modifier correctly. Optimize. - * stdio-common/vfprintf.c: Rewrite buffer handling for integer - printing. Change printing of numbers with locale specific digits to - use new code in _i18n_number.h. - * stdio-common/Makefile (routines): Remove _i18n_itoa and - _i18n_itowa. - - * stdio-common/bug13.c: Improve messages. - - * locale/programs/ld-ctype.c (ctype_read): Improve error message. - (set_class_defaults): Always search also for Uxxxx names. - Detect insufficient number of outdigits. - - * locale/Makefile (C-translit.h): Use mv not $(move-if-changed). - -2000-07-27 Bruno Haible - - * locale/C-ctype.c (_nl_C_LC_CTYPE): Swap the two names in - _NL_CTYPE_MAP_NAMES. - * locale/localeinfo.h (__TOW_toupper, __TOW_tolower): New enum values. - * wctype/wcfuncs.c (towlower, towupper): Use them. - * wctype/wcfuncs_l.c (__towlower_l, __towupper_l): Likewise. - * wctype/wctrans.c (wctrans): Likewise. - * wctype/wctrans_l.c (__wctrans_l): Likewise. - -2000-07-27 Bruno Haible - - * posix/fnmatch.c (is_char_class): Fix logic. Avoid buffer overrun. - Use the optimized version of this function outside glibc as well. - -2000-07-27 Jakub Jelinek - - * locale/indigits.h (indigit_value): Correct. - * locale/indigitswc.h (indigitwc_value): Correct. - * stdio-common/vfscanf.c (__vfscanf): Fix I18N number - conversion, add GROUP checking for it, fix GROUP number - conversion with strlen(thousands) > 1. - Honour width correctly in the presence of floating - decimal points and thousands separators. - * stdio-common/tst-sscanf.c: New test. - * stdio-common/Makefile: Add it to tests. - * sysdeps/generic/strtol.c (strtol): Fix conversion if there are - thousands separators and group argument is non-zero. - -2000-07-25 Bruno Haible - - * locale/Versions: Enumerate __*_l functions individually. __wctrans_l - starts at GLIBC_2.2. - -2000-07-12 Maciej W. Rozycki - - * sysdeps/unix/sysv/linux/mips/Dist: Add sys/tas.h. - * sysdeps/unix/sysv/linux/mips/Makefile (sysdep_routines): Add - _test_and_set. - (headers): Add sys/tas.h. - * sysdeps/unix/sysv/linux/mips/Versions: Export _test_and_set for - GLIBC_2.2 from libc. - * sysdeps/unix/sysv/linux/mips/_test_and_set.c: New file. - * sysdeps/unix/sysv/linux/mips/sys/tas.h: New file for - _test_and_set. - -2000-07-28 Andreas Jaeger - - * sysdeps/gnu/netinet/tcp.h: Add TCP options from Linux 2.4. - - * dlfcn/Makefile ($(objpfx)tst-dladdr): New. - ($(objpfx)tst-dladdr.out): new. - (tests): Add tst-dladdr. - ($(objpfx)glrefmain): Use libdl. - - * dlfcn/tst-dladdr.c: New file. Based on a test by Volkmar Sieh - . - -2000-07-27 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/syscalls.list: Add truncate(64) and - ftruncate(64) calls. - -2000-07-27 Jes Sorensen - - * intl/tst-translit.c: Include string.h to get prototype for - strcmp(). - -2000-07-27 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/fork.c: Make __libc_fork the strong - name and add weak alias for __fork. - - * sysdeps/unix/sysv/linux/ia64/syscalls.list: Change llseek, pread - & pwrite to use __libc_ as strong names instead of - __syscall_. - - * include/sched.h: Add clone2 prototype. - -2000-07-26 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/sysdep.h (ENTRY): Don't declare the - procedure name twice. - -2000-07-27 Philip Blundell - - * malloc/malloc.c (HAVE_MREMAP): Undo change of 1997-12-04. - -2000-07-27 Andreas Jaeger - - * sysdeps/unix/sysv/linux/bits/socket.h: Rename MSG_URG TO - MSG_CONFIRM following kernel 2.4.0 (MSG_URG was never used). - * sysdeps/unix/sysv/linux/mips/bits/socket.h: Likewise. - Reported by Andi Kleen . - - * rt/tst-aio64.c: Add tests for aio_fsync64 and aio_cancel64. - (do_wait): Test requests with aio_return64. - (do_test): Change callers of do_wait. - -2000-07-26 Andreas Jaeger - - * rt/tst-aio.c: Add tests for aio_fsync and aio_cancel. - (do_wait): Test requests with aio_return. - (do_test): Change callers of do_wait. - -2000-07-27 Ulrich Drepper - - * rt/aio_misc.c (__aio_remove_request): New function. Handle removing - from request list. Don't do the list handling here, call - __aio_remove_request. - * rt/aio_misc.h: Add prototype for __aio_remove_request. - * rt/aio_cancel.c: Don't assume __aio_find_req_fd succeeds since the - request might already be processed. Don't do the list handling - here, call __aio_remove_request. - - * rt/aio_misc.c: Don't depend on aio_reqprio field for LIO_SYNC and - LIO_DSYNC. - - * rt/aio_misc.c: Add comment explaining why writer memory barriers - are missing. - -2000-07-27 Greg McGary - - * sysdeps/generic/bp-checks.h (BOUNDED_N): Make it work for void*. - * sysdeps/generic/bp-semctl.h (check_semctl): Fix syntax error - in union init. Pass zero for ignored semnum arg to semctl. - * sysdeps/unix/sysv/linux/shmat.c (shmat): Fix typo. - -2000-07-26 Greg McGary - - * sysdeps/gnu/bits/msq.h: Qualify kernel's - data structure pointers as __unbounded. - * sysdeps/unix/sysv/linux/mips/bits/shm.h: Likewise. - * sysdeps/generic/bp-semctl.h: New file. - * sysdeps/unix/sysv/linux/msgctl.c: Qualify kernel's data structure - pointers as __unbounded. Check bounds of syscall args. - * sysdeps/unix/sysv/linux/msgrcv.c: Likewise. - * sysdeps/unix/sysv/linux/msgsnd.c: Likewise. - * sysdeps/unix/sysv/linux/semctl.c: Likewise. - * sysdeps/unix/sysv/linux/semop.c: Likewise. - * sysdeps/unix/sysv/linux/shmat.c: Likewise. - * sysdeps/unix/sysv/linux/shmctl.c: Likewise. - * sysdeps/unix/sysv/linux/shmdt.c: Likewise. - * sysdeps/unix/sysv/linux/alpha/msgctl.c: Likewise. - * sysdeps/unix/sysv/linux/alpha/semctl.c: Likewise. - * sysdeps/unix/sysv/linux/alpha/shmctl.c: Likewise. - * sysdeps/unix/sysv/linux/i386/msgctl.c: Likewise. - * sysdeps/unix/sysv/linux/i386/semctl.c: Likewise. - * sysdeps/unix/sysv/linux/i386/shmctl.c: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/msgctl.c: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/semctl.c: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/shmctl.c: Likewise. - -2000-07-26 Ulrich Drepper - - * libio/iofwide.c: Enable transliteration for conversion from wchar_t - by default. - * locale/C-ctype.c: Likewise. - * wcsmbs/wcsmbsload.c: Likewise. - -2000-07-26 Greg McGary - - * Makeconfig (+link-bounded, link-libc-bounded, - link-extra-libs-bounded): New variables. - (built-program-cmd): Omit $(run-program-prefix) for static BP tests. - * Makerules (do-tests-clean, common-mostlyclean): Remove BP test files. - * Rules (tests-bp.out): New variable. - (tests): Conditionally add BP tests. - (binaries-bounded): Add variable and associated rule. - * csu/Makefile [build-bounded] (extra-objs, install-lib): - Move conditional stuff after place where condition is defined. - - * malloc/malloc.c (bp-checks.h): Add #include. - (mem2chunk, chunk_at_offset, bin_at): Wrap BOUNDED_1 around expression. - (_bin_at): Add unbounded version of bin_at. - (IAV, chunk_alloc): Use unbounded _bin_at. - (mALLOc, rEALLOc, chunk_realloc, mEMALIGn, cALLOc, - chunk2mem_check, realloc_check, malloc_starter, malloc_atfork): - Wrap BOUNDED_N around return value. - (chunk_realloc): Adjust oldsize once. - - * sysdeps/generic/bp-checks.h (__memchr): Remove incorrect decl. - (__ubp_memchr): Add correct decl. - (_CHECK_STRING): Use __ubp_memchr. - * sysdeps/alpha/memchr.S [!__BOUNDED_POINTERS__] (__ubp_memchr): - New alias for unbounded-pointer __memchr. - * sysdeps/i386/memchr.S: Likewise. - * sysdeps/ia64/memchr.S: Likewise. - * sysdeps/m68k/memchr.S: Likewise. - * sysdeps/sparc/sparc32/memchr.S: Likewise. - * sysdeps/sparc/sparc64/memchr.S: Likewise. - * sysdeps/vax/memchr.s: Likewise. - - * sysdeps/i386/strtok.S: Fix bounds checks to pass tests. - (SAVE_PTR): New macro. (save_ptr): Expand size as BP. - (strtok): Don't bother to write into SAVE_PTR when returning NULL. - * sysdeps/i386/i686/strtok.S: Likewise. - * sysdeps/i386/bp-asm.h (RETURN_BOUNDED_POINTER, - RETURN_NULL_BOUNDED_POINTER): Use %ecx as the scratch register. - - * sysdeps/i386/bits/string.h [!__BOUNDED_POINTERS__]: Disable inlines. - * sysdeps/i386/i486/bits/string.h [!__BOUNDED_POINTERS__]: Likewise. - - * sysdeps/unix/sysv/linux/getsysstats.c (get_proc_path): Copy - bounds of copy_result to mount_proc. - -2000-07-25 Bruno Haible - - * wctype/wctype.h (__wctrans_l): New declaration. - * wctype/wctrans_l.c: New file. - * wctype/Makefile (routines): Add wctrans_l. - -2000-07-26 Ulrich Drepper - - * posix/fnmatch_loop.c: Fixes for use outside glibc. - Patch by MacGyver . - -2000-07-26 Andreas Jaeger - - * rt/tst-aio4.c: New file, slightly modified version of tst-aio2. - * rt/tst-aio5.c: New file, slightly modified version of tst-aio2. - * rt/Makefile: Add rules to build and run tst-aio4 and tst-aio5. - - * rt/tst-aio.c (test_file): Fix typo. - * rt/tst-aio64.c (test_file): Likewise. - - * rt/tst-aio3.c: New file, slightly modified version of tst-aio2. - * rt/Makefile: Add rules to build and run tst-aio3. - - * sysdeps/unix/sysv/linux/netinet/ip.h: Removed ip_options since - it's not needed and confuses only. - -2000-07-26 Ulrich Drepper - - * resolv/res_init.c: Add support for nameserver communication with - IPv6. - * resolv/res_send.c: Likewise. - * resolv/resolv.h (struct __res_state): Store IPv6 address, not IPv4 - in nsaddrs field. - Patch by . - -2000-07-25 Bruno Haible - - * locale/programs/ld-ctype.c (wctype_table_get): New function. - (wcwidth_table_get): New function. - (wcwidth_table_add): Call it. - (wctrans_table_get): New function. - (wctrans_table_add): Call it. - -2000-07-25 Ulrich Drepper - - * rt/lio_listio.c (lio_listio): Always disable individual - notification. - * rt/Makefile: Add rules to build and run tst-aio2. - * rt/tst-aio2.c: New file. - - * rt/lio_listio.c (lio_listio): Handle case of SIG == NULL correctly. - Reported by Kevin Beard . - -2000-07-25 Mark Kettenis - - * nss/nss_files/files-netgrp.c (strip_whitespace): New function. - (_nss_netgroup_parseline): Use strip_whitespace to strip off any - leading and trailing spaces from host, user and domain name. - -2000-07-25 Jes Sorensen - - * csu/defs.awk: Add support for need_endp. - -2000-07-25 Mark Kettenis - - * resolv/resolv.h: Remove __P from res_send_qhook and - res_send_rhook typedefs. - -2000-07-25 Bruno Haible - - * intl/tst-translit.c (main): Unset OUTPUT_CHARSET. - -2000-07-25 Ulrich Drepper - - * iconv/gconv_builtin.h: Add WCHAR_T alias. - -2000-07-25 Mark Kettenis - - * hurd/thread-cancel.c (hurd_thread_cancel): When cancelling the - calling thread, set the cancellation flag and return success - instead of EINTR. - -2000-07-25 Ulrich Drepper - - * libio/Makefile: Add rules build, run, and distribute tst-widetext.c. - * libio/tst-widetext.c: New file. - * libio/tst-widetext.input: New file. - - * libio/iogetwline.c (_IO_getwline_info): Pretty print. - - * libio/wfileops.c (_IO_wfile_underflow): Handle not entirely - empty external buffer correctly. - -2000-07-25 Maciej W. Rozycki - - * sysdeps/mips/dl-machine.h (_RTLD_PROLOGUE): Stringify using - __STRING(entry) and not #entry. - (_RTLD_EPILOGUE): Likewise. - * sysdeps/mips/mips64/dl-machine.h: Likewise. - -2000-07-25 Andreas Jaeger - - * stdio-common/Makefile ($(objpfx)tst-unbputc.out): Change parameter - according to changes in test program, run also with static only - builds. - ($(objpfx)tst-printf.out): Likewise. - - * stdio-common/tst-unbputc.sh: Likewise. - * stdio-common/tst-printf.sh: Likewise. - -2000-07-25 Ulrich Drepper - - * libio/wfileops.c (_IO_wdo_write): Correct return value. - - * libio/wfileops.c (_IO_wdo_write): Allow partial conversions in the - loop. - - * libio/fileops.c: Pretty print. - -2000-07-23 Bruno Haible - - * wctype/wchar-lookup.h: New file. - * wctype/iswctype.c: Include "wchar-lookup.h". - (__iswctype): Support alternate locale format with 3-level tables. - * wctype/iswctype_l.c (__iswctype_l): Likewise. - * wctype/towctrans.c (__towctrans): Likewise. - * wctype/towctrans_l.c (__towctrans_l): Likewise. - * wctype/wcfuncs.c: Include "wchar-lookup.h". - (__ctype32_wctype, __ctype32_wctrans): Declare external. - (__iswalnum, __iswalpha, __iswcntrl, __iswdigit, __iswlower, - __iswgraph, __iswprint, __iswpunct, __iswspace, __iswupper, - __iswxdigit, towlower, towupper): Support alternate locale format - with 3-level tables. - * wctype/wcextra.c (iswblank): Likewise. - * wctype/wcfuncs_l.c: Include "wchar-lookup.h". - (__iswalnum_l, __iswalpha_l, __iswcntrl_l, __iswdigit_l, __iswlower_l, - __iswgraph_l, __iswprint_l, __iswpunct_l, __iswspace_l, __iswupper_l, - __iswxdigit_l, __towlower_l, __towupper_l): Support alternate locale - format with 3-level tables. - * wctype/wcextra_l.c (__iswblank_l): Likewise. - * wctype/wctype.c (__wctype): Likewise. In the alternate locale - format, return a 3-level table pointer. - * wctype/wctype_l.c (__wctype_l): Likewise. - * wctype/wctrans.c (wctrans): Likewise. - * wctype/wctype.h (__ISwupper, __ISwlower, __ISwalpha, __ISwdigit, - __ISwxdigit, __ISwspace, __ISwprint, __ISwgraph, __ISwblank, - __ISwcntrl, __ISwpunct, __ISwalnum): New enum values. - (iswctype): Remove macro definition. - * wcsmbs/wcwidth.h: Include "wchar-lookup.h". - (internal_wcwidth): Support alternate locale format with 3-level - tables. - * locale/langinfo.h (_NL_CTYPE_CLASS_OFFSET, _NL_CTYPE_MAP_OFFSET): - New nl_items. - * locale/categories.def (_NL_CTYPE_CLASS_OFFSET, _NL_CTYPE_MAP_OFFSET): - Define them as being type "word". - * locale/C-ctype.c (_nl_C_LC_CTYPE): Add initializers for them. - * ctype/ctype-info.c (__ctype32_wctype, __ctype32_wctrans, - __ctype32_width): New exported variables. - * locale/lc-ctype.c (_nl_postload_ctype): Initialize them in the - alternate locale format. Don't initialize __ctype_names and - __ctype_width in the alternate locale format. - * locale/programs/localedef.h (oldstyle_tables): New declaration. - * locale/programs/localedef.c (oldstyle_tables): New variable. - (OPT_OLDSTYLE): New macro. - (options): Add --old-style option. - (parse_opt): Handle --old-style option. - * locale/programs/ld-ctype.c (locale_ctype_t): Add class_offset, - map_offset, class_3level, map_3level, width_3level members. - (ctype_output): Support for alternate locale format: Computation of - nelems changes. _NL_CTYPE_TOUPPER32, _NL_CTYPE_TOLOWER32 and - _NL_CTYPE_CLASS32 only 256 characters. _NL_CTYPE_NAMES empty. - New fields _NL_CTYPE_CLASS_OFFSET, _NL_CTYPE_MAP_OFFSET. Field - _NL_CTYPE_WIDTH now contains the three-level table. Extra elems - now contain both class and map tables. - (struct wctype_table): New type. - (wctype_table_init, wctype_table_add, wctype_table_finalize): New - functions. - (struct wcwidth_table): New type. - (wcwidth_table_init, wcwidth_table_add, wcwidth_table_finalize): New - functions. - (struct wctrans_table): New type. - (wctrans_table_init, wctrans_table_add, wctrans_table_finalize): New - functions. - (allocate_arrays): Support for alternate locale format: Set - plane_size and plane_cnt to 0. Restrict ctype->ctype32_b to the first - 256 characters. Compute ctype->class_3level. Restrict ctype->map32[idx] - to the first 256 characters. Compute ctype->map_3level. Set - ctype->class_offset and ctype->map_offset. Compute ctype->width_3level - instead of ctype->width. - -2000-07-24 Ulrich Drepper - - * libio/iogetwline.c (_IO_getwline_info): Use wide character - string functions. - -2000-07-24 Jakub Jelinek - - * libio/wfiledoalloc.c (_IO_wfile_doallocate): Measure size - in wide characters, not bytes. - * libio/tst_putwc.c (do_test): Add test for writing lots of data - into file. - -2000-07-22 Bruno Haible - - * locale/nl_langinfo.c (nl_langinfo): Accept items belonging to the - new categories LC_PAPER, LC_NAME, LC_ADDRESS, LC_TELEPHONE, - LC_MEASUREMENT, LC_IDENTIFICATION. - - * locale/xlocale.h (struct __locale_struct): Increase size of - __locales array. - * locale/duplocale.c (__duplocale): Copy newly added categories as - well. - * locale/freelocale.c (__freelocale): Free newly added categories. - * locale/newlocale.c (__newlocale): Fix typo in sanity check. - If a base is given, use it, don't simply return it. - -2000-07-22 Bruno Haible - - * crypt/md5-crypt.c (__md5_crypt_r): Avoid gcc warnings: Use pointer - variables, copied_key and copied_salt, instead of boolean variables. - -2000-07-24 Andreas Jaeger - - * sysdeps/unix/sysv/linux/powerpc/mmap64.c (__mmap64): Really fix - check for offset. - - * grp/initgroups.c (initgroups_dyn_function): Renamed from - initgroups_function, adopted prototype for change from 2000-07-23. - (initgroups): Follow type change. - - * sysdeps/unix/sysv/linux/powerpc/mmap64.c (__mmap64): Fix offset - & PAGE_MASK case, reformat. - - * string/Makefile ($(objpfx)tst-svc.out): Fix rule to read input - from stdin and setup environment. - -2000-07-24 Andreas Schwab - - * sysdeps/unix/sysv/linux/m68k/mmap.S: Remove mmap64 alias. - -2000-07-23 Ulrich Drepper - - * string/endian.h: Explain the _*_ENDIAN constant values a bit - more. Patch by scarlet@mit.edu [PR libc/1799]. - - * io/ftwtest-sh: Add -f parameter to chmod if -R is also given. - [PR libc/1792]. - - * argp/argp-parse.c (parser_finalize): Reverse order in which - parsers are run for ARGP_KEY_END. [PR libc/1755]. - - * grp/initgroups.c (initgroups): Don't limit the possible number - of groups to NGROUPS_MAX. Allow dynamic resizing. Loop around - the setgroups call while the call fails and descrease the number - of groups each round. - The name of the initgroups function in the NSS modules changed. - (compat_call): Adapt for dynamic resizing. - * hesiod/nss_hesiod/hesiod-grp.c (_nss_hesiod_initgroups_dyn): - Implement dynamic resizing. - * nis/nss_compat/compat-initgroups.c (_nss_compat_initgroups_dyn): - Likewise. - * nis/nss_nis/compat-initgroups.c (_nss_nis_initgroups_dyn): Likewise. - * hesiod/Versions: Change exported interface name. - * nis/Versions: Change exported interface name. - -2000-07-23 Ulrich Drepper - - * locale/iso-639.def: Some errors corrected. - Patch by Keld Simonsen. - - * include/limits.h: Update non-gcc portion. - Patch by Joseph S. Myers . - -2000-07-22 Mark Kettenis - - * sysdeps/mach/hurd/brk.c (_hurd_set_brk): When shrinking the - program's data space, reallocate only the space that was just - deallocated to release its backing space. - -2000-07-23 Ulrich Drepper - - * stdio-common/vfprintf.c (process_string_arg): For wide character - version, handle precision also correctly. - - * nss/nss_files/files-hosts.c: Correct problem with three or more - entries with the same name. - - * nss/nss_files/files-hosts.c: Implement multi handling. - * resolv/Versions: Export _res_hconf for GLIBC_2.2 from libc. - -2000-07-22 Ulrich Drepper - - * nss/nss_files/files-parse.c: Don't pollute namespace by using - strcasecmp. - - * grp/Makefile: Change Makefiles and tests to run only when necessary. - * malloc/Makefile: Likewise. - * malloc/tst-mtrace.sh: Likewise. - * posix/Makefile: Likewise. - * posix/globtest.sh: Likewise. - * posix/wordexp-tst.sh: Likewise. - * string/Makefile: Likewise. - -2000-07-22 Mark Kettenis - - * locale/findlocale.c (locale_file_list): Use __LC_LAST as array - size instead of LC_ALL to take into account the new locale - categories. - -2000-07-22 Ulrich Drepper - - * iconv/gconv_trans.c: Correct a few bugs in the search loop. Remove - remainders of hash table. - * locale/categories.def: Remove remainders of transliteration - hash table. - * locale/langinfo.h: Likewise. - * locale/programs/ld-ctype.c: Likewise. Fix code to write out - transliteration tables. - - * locale/gen-translit.pl: New file. - * locale/C-translit.h.in: New file. - * locale/C-ctype.c: Include C-translit.h. Initialize transliteration - data pointers with data from this file. - * locale/Makefile (distribute): Add C-translit.h.in, C-translit.h, - and gen-translit.pl. - Add rule to generate C-translit.h. - * intl/tst-translit.c (main): Update for now performed - transliteration. - - * stdio-common/vfscanf.c: Handle input -- with format %f correctly - (it's no input error). - * stdio-common/tstscanf.c: Add test case for format %f with input --. - * stdio-common/scanf12.c: Correct expected result for first scanf. - - * stdio-common/vfprintf.c (process_string_arg): Correct handling - of multibyte character strings in %s format with precision. - -2000-07-21 Ulrich Drepper - - * locale/programs/ld-collate.c (collate_read): Allow collating - symbols and elements be named in reorder-after instructions. - Reported by Yoshito Kawada . - - * locale/programs/ld-collate.c (handle_ellipsis): Test for - duplication with generated name, not the name of the first - character. - Patch by Yong Li . - - * sysdeps/powerpc/strchr.S: Correct bugs introduced in BP-ification. - Patch by Franz Sirl . - -2000-07-21 Wolfram Gloger - - * malloc/malloc.c (chunk_alloc): Try mmap_chunk() for smaller - allocations only if a non-main arena cannot be extended. - -2000-07-21 Ulrich Drepper - - * elf/dl-load.c (_dl_map_object): Take loader==NULL into account - in DF_1_NODEFLIB handling. - -2000-07-21 Andreas Jaeger - - * elf/Makefile ($(test-modules)): Exclude filtmod1.so, it has its - own rule. - - * libio/fwide.c: Include for prototype. - -2000-07-21 Greg McGary - - * malloc/malloc.c (next_chunk, prev_chunk, inuse_bit_at_offset, - set_inuse_bit_at_offset, clear_inuse_bit_at_offset, set_foot): - Define in terms of chunk_at_offset. - (inuse, set_inuse, clear_inuse): Define in terms of next_chunk. - (next_bin, prev_bin): offset by size of real array elements. - (chunk_align): Make `m' a scalar, since that's how it's used. - -2000-07-21 Greg McGary - - * sysdeps/powerpc/bp-asm.h (DISCARD_BOUNDS): Rename from - UNCHECK_BOUNDS. - * sysdeps/powerpc/bits/setjmp.h (JB_SIZE): New constant. - * sysdeps/powerpc/elf/libc-start.c (__libc_start_main): - Wrap bounds around argv & envp and each of their string members. - * sysdeps/powerpc/elf/start.S: Designate BP symbols. - * sysdeps/unix/sysv/linux/powerpc/brk.S: Wrap entry-point - symbol in BP_SYM (). Discard bounds of address arg. - * sysdeps/unix/sysv/linux/powerpc/clone.S: Likewise. - * sysdeps/unix/sysv/linux/powerpc/mmap64.c (__mmap64): - Discard bounds on address arg, add bounds to return value. - -2000-07-20 Ulrich Drepper - - * elf/Makefile (tests): Add filter. Add rules to generate filter. - * elf/filter.c: New file. - * elf/filtmod1.c: New file. - * elf/filtmod2.c: New file. - - * elf/rtld.c: Define _dl_bind_not variable. - (process_envvars): Recognize LD_BIND_NOT and set _dl_bind_not. - * elf/dl-support.c: Likewise. - * sysdeps/generic/ldsodefs.h: Declare _dl_bind_not. - * elf/dl-runtime.c (fixup): Don't remember looked up value if - _dl_bind_not. - (profile_fixup): Likewise. - - * libio/Makefile (routines): Add fwide. - * libio/iofwide.c (_IO_fwide): Remove locking. This is done in - fwide now. Internal calls to _IO_fwide must do locking themselves - or don't need locking. - * libio/fwide.c: New file. - - * elf/dl-load.c (_dl_map_object): Implement handling of DF_1_NODEFLIB. - - * elf/Makefile: Add no modules for nodelete test. - * elf/nodelmod3.c: New file. - * elf/nodelmod4.c: New file. - * elf/nodelete.c: Also test case where dependency of dlopen() object - is marked nodelete. - - * elf/Makefile (tests): Add nodlopen. Add rules to generate nodlopen. - * elf/nodlopen.c: New file. - * elf/nodlopenmod.c: New file. - * include/dlfcn.h: Define __RTLD_DLOPEN. - * elf/dl-load.c (_dl_map_object_from_fd): If DF_1_NOOPEN is set - and this is a dlopen() call, do not load the binary. - * dlfcn/dlopen.c: Add __RTLD_DLOPEN to mode passed down to _dl_open. - * dlfcn/dlopenold.c: Likewise. - * configure.in: Add test for -z nodelete option. - * config.make.in: Define have-z-nodelete with libc_cv_z_nodelete. - -2000-07-20 Mark Kettenis - - Make Hesiod NSS module thread-safe. - - * hesiod/README.hesiod: Update. - - * hesiod/Versions [GLIBC_2.2]: Add _nss_hesiod_getservbyport_r, - _nss_hesiod_setprotoent, _nss_hesiod_endprotoent, - _nss_hesiod_getprotobyname_r, and _nss_hesiod_getprotobynumber_r. - * hesiod/Makefile (libnss_hesiod-routines): Add hesiod-init and - hesiod-proto. - * hesiod/nss_hesiod/hesiod-init.c: New file. - * hesiod/nss_hesiod/hesiod-pwd.c: Rewritten for thread-safeness. - * hesiod/nss_hesiod/hesiod-grp.c: Likewise. - * hesiod/nss_hesiod/nss_hesiod.h: New file. - * hesiod/nss_hesiod/hesiod-service.c - (_nss_hesiod_getservbyport_r): New function. Provide support for - looking up services by port number. - * hesiod/nss_hesiod/hesiod-proto.c: New file. - - * hesiod/hesiod.c: Update from BIND 8.2.3-T5B. - * hesiod/hesiod.h: Likewise. - * hesiod/hesiod_p.h: Likewise. - -2000-07-20 Mark Kettenis - - Fix problems with `struct __res_state' getting too big. - * resolv/resolv.h (struct __sockaddr_in): New definition. - (struct __res_state): Use __sockaddr_in instead of sockaddr_in in - the private parts of the structure to save some space. - * resolv/res_send.c (res_nsend): Cast &EXT(statp).nsaddrs[ns] to - (struct sockaddr_in *) in call to sock_eq. - Use memcpy to copy statp->nsaddr_list[ns] to &EXT(statp).nsaddrs[ns]. - -2000-07-20 Ulrich Drepper - - * elf/elf.h: Add various DF_1_*, DTF_1_*, and DF_P1_* entries. - * elf/dl-close.c (_dl_close): Don't close an object if it is marked - with nodelete. - * elf/dl-open.c (dl_open_worker): Pass RTLD_NOLOAD as new parameter - to _dl_map_object. Return immediately if no object loaded. - Set DF_1_NODELETE bit in l_flags_1 if RTLD_NODELETE was passed. - * elf/dynamic-link.h (elf_get_dynamic_info): Copy DT_FLAGS_1 entry - if it exists into l_flags_1 word. - * elf/dl-load.c (_dl_map_object_from_fd): Take no parameter and use - it to determine whether loading is wanted or not. - (_dl_map_object): Likewise. - Call _dl_map_object_from_fd with new parameter. - * sysdeps/generic/ldsodefs.h: Update prototype. - * elf/dl-deps.c: Add new parameter to _dl_map_object calls. - * elf/rtld.c: Likewise. - * sysdeps/mach/hurd/dl-sysdep.c: Likewise. - * elf/Makefile (tests): Add noload. Add rules to generate noload. - * elf/noload.c: New file. - * include/link.h (struct link_map): Add l_feature_1 and l_flags_1. - * sysdeps/generic/bits/dlfcn.h: Define RTLD_NOLOAD and RTLD_NODELETE. - * sysdeps/mips/bits/dlfcn.h: Likewise. - * elf/Makefile (tests): Add $(tests-nodelete-$(have-z-nodelete)). - (tests-nodelete-yes): Define. - (modules-names): Add $(modules-nodelete-$(have-z-nodelete)). - Add rules to build nodelete and modules. - * elf/nodelete.c: New file. - * elf/nodelmod1.c: New file. - * elf/nodelmod2.c: New file. - * configure.in: Add test for -z nodelete option. - * config.make.in: Define have-z-nodelete with libc_cv_z_nodelete. - - * libio/Makefile (tests): Add tst_wprintf2. - (tst_wprintf2-ARGS): Define. - * libio/tst_wprintf2.c: New file. - Based on a test case by Yoshito Kawada . - - * libio/wfiledoalloc.c: Only allocate external buffer if this - hasn't happened yet. - - * libio/wfileops.c (_IO_wdo_write): Overflow only if there is really - something in the buffer. gconv call can write up to end of the - buffer, not only _IO_write_end. - (_IO_wfile_overflow): Allocate also external buffer. - -2000-07-19 Ulrich Drepper - - * stdio-common/vfprintf.c (process_string_arg): Handle multibyte - strings with precision in vfwprintf correctly. - * stdio-common/vfprintf.c: Fix completely broken handling of - unbuffered wide character streams. - Reported by Yoshito Kawada . - - * resolv/Makefile (distribute): Add README. - - * resolv/README: New file. By Mark Kettenis . - -2000-07-18 Mark Kettenis - - Update resolver code to BIND 8.2.3-T5B. - - * resolv/Versions [GLIBC_2.2] (libc): Add __res_init and - __res_nclose. - [GLIBC_2.2] (libresolv): Add __dn_expand, __ns_samename, - __res_mkquery, __res_nsend, __res_query, __res_querydomain and - __res_search. - * resolv/Banner: BIND-8.2.3-T5B. - - * resolv/base64.c: Update from BIND 8.2.3-T5B. - * resolv/herror.c: Likewise. - * resolv/inet_addr.c: Likewise. - * resolv/inet_net_ntop.c: Likewise. - * resolv/inet_net_pton.c: Likewise. - * resolv/inet_neta.c: Likewise. - * resolv/inet_ntop.c: Likewise. - * resolv/nsap_addr.c: Likewise. - * resolv/inet_pton.c: Likewise. Reject a few more more invalid - IPv6 addresses (ISC bug #520). - - * resolv/ns_name.c: Avoid emitting RCS ID in object file. - * resolv/ns_parse.c: Likewise. - * resolv/ns_netint.c: Likewise. - * resolv/ns_samedomain.c: Likewise. - * resolv/ns_ttl.c: Likewise. - * resolv/ns_print.c: Update from BIND 8.2.3-T5B. Avoid emitting - RCS ID in object file. - - * resolv/res_debug.c: Update from BIND 8.2.3-T5B. - * resolv/res_mkquery.c: Likewise. - * resolv/res_query.c: Likewise. - * resolv/res_init.c: Likewise. - (res_setoptions): Mark internal. - * resolv/res_send.c: Likewise. - [_LIBC]: Fully reinstate the code that avoids the FD_SETSIZE limit - by using poll instead. - * resolv/res_comp.c: Likewise. - [SHLIB_COMPAT (libresolv, GLIBC_2_0, GLIBC_2_2)]: Make dn_expand a - weak alias for __dn_expand. - * resolv/res_data.c: Likewise. - (res_close) [_LIBC]: Don't call res_nclose if RES_INIT isn't set - in _res.options. Avoids a potential security risk by avoiding a - close (0). - [SHLIB_COMPAT (libresolv, GLIBC_2_0, GLIBC_2_2)]: Make - res_mkquery, res_query, res_querydomain adn res_search weak - aliases for __res_mkquery, __res_query, __res_querydomain and - __res_search. - * resolv/res_libc.c: (_res): Don't initialize. Fix res_close - instead to avoid close(0). - (res_init): Always use the static resolver context. - [SHLIB_COMPAT (libc, GLIBC_2.0, GLIBC_2_2)]: Make res_init a weak - alias for __res_init. - - * resolv/resolv.h: Update from BIND 8.2.3-T5B. Move definition of - RES_SET_H_ERRNO and accompanying comment to... - * include/resolv.h: ... here. - - * resolv/arpa/namser.h: Update from BIND 8.2.3-T5B. - * resolv/arpa/nameser_compat.h: Likewise. - -2000-07-18 Ulrich Drepper - - * nss/makedb.c (main): Compare result of load_db with - NSS_STATUS_SUCCESS and not 0. - Patch by Jan Rekorajski . - - * sysdeps/unix/sysv/linux/Versions: Export __sysctl for GLIBC_2.2. - -2000-07-18 Greg McGary - - * posix/regex.c (EXTEND_BUFFER_HIGH_BOUND): New macro. - (EXTEND_BUFFER): Use it. - -2000-07-18 Ulrich Drepper - - * include/libc-symbols.h: Define RETURN_ADDRESS macro. - * dlfcn/dlopen.c: Use RETURN_ADDRESS instead of - __builtin_return_address. - * dlfcn/dlopenold.c: Likewise. - * dlfcn/dlsym.c: Likewise. - * dlfcn/dlvsym.c: Likewise. - * elf/dl-profstub.c: Likewise. - * malloc/malloc.c: Likewise. - * sysdeps/generic/machine-gmon.h: Likewise. - Based on a patch by schwidefsky@de.ibm.com. - -2000-07-18 Andreas Jaeger - - * sysdeps/alpha/dl-machine.h (elf_machine_rela): Pass 0 instead of - NULL to elf_machine_fixup_plt t argument to silence GCC. - - * include/string.h: Add prototype for __memchr. - - * sysdeps/alpha/memchr.S: Fix copy & error in weak_alias. - - * sysdeps/generic/memchr.c: Fix copy & paste error: Use memchr - instead of memrchr. +2001-01-02 Ulrich Drepper -2000-07-18 Ulrich Drepper + * dlfcn/dlerror.c (dlerror): Handle call of dlerror() before any + other dlopen() and dlsym(). + Based on a patch by Ben Collins . - * intl/Makefile: Make sure tst-translit is run after tst-gettext. +2001-01-02 Andreas Jaeger - * locale/C-ctype.c: Add initializers for gap elements. - * locale/programs/ld-ctype.c (ctype_output): Write out index entries - for gap elements. + * dlfcn/errmsg1.c (main): Call dlerror initially. + Reported by Ben Collins . -2000-07-16 Ulrich Drepper +2001-01-02 Ulrich Drepper - * nscd/nscd.c (print_version): Update copyright year. + * intl/dcigettext.c (guess_category_value): Rewrite so that LANGUAGE + value is ignored if the selected locale is the C locale. + * intl/tst-gettext.c: Set locale for above change. + * intl/tst-translit.c: Likewise. -2000-07-17 Greg McGary +2001-01-02 Andreas Jaeger - * sysdeps/unix/make-syscalls.sh: Handle new arg signature - keyletters F, I, S, W. Remove unused keyletter V. Surround - signature argnames with angle-brackets for use as word delimiters, - and to induce syntax errors for any args not handled. Split - multi-echo echoes and comment each stage. - * sysdeps/unix/common/syscalls.list: Refine & correct signatures. - * sysdeps/unix/inet/syscalls.list: Likewise. - * sysdeps/unix/mman/syscalls.list: Likewise. - * sysdeps/unix/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/ia64/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/mips/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/syscalls.list: Likewise. - * sysdeps/unix/sysv/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/powerpc/syscalls.list + * libio/wgenops.c (_IO_wdoallocbuf): Use correct wide access macro. + (_IO_switch_to_wget_mode): Likewise. + (_IO_sputbackwc): Likewise. + (_IO_sungetwc): Use wint_t for result. - * sysdeps/generic/strcpy.c (strcpy): Stifle unused-value warnings. - * sysdeps/unix/sysv/linux/execve.c (__execve): Add const - qualifiers. Don't check NULL-terminator of argv & envp. - * sysdeps/unix/sysv/linux/getsysstats.c (get_proc_path): Use - unbounded pointer type in word-size assertion. - * sysdeps/unix/sysv/linux/ptrace.c (ptrace): Add missing - cases to stifle warnings. + * stdio-common/vfscanf.c (__vfscanf): Use WINT_T for done. - * libio/iofdopen.c (_IO_new_fdopen): Pass _IO_FILE_plus pointer to - _IO_file_attach. - * libio/iovdprintf.c (_IO_vdprintf): Likewise. + * sysdeps/generic/strtol.c (strtol): Make cnt size_t for correct + signedness. - * include/libc-symbols.h (symbol_set_declare): Revert 2000-06-26 mods. - * include/set-hooks.h (RUN_HOOK): Revert 2000-06-26 mods. Qualify - ptr as __unbouned. + * sysdeps/generic/printf_fphex.c (putc): Cast _IO_putwc_unlocked + to (int) to avoid warnings. + * stdio-common/printf_fp.c (putc): Likewise. + * stdio-common/printf_size.c (putc): Likewise. - * Makerules (o-objects): Supplement with $(o-objects$o). - * string/Makefile (o-objects.ob): Add variable to pull - unbounded versions of memcpy, memset and memchr into libc_b. + * sysdeps/generic/dl-sysdep.c (_dl_important_hwcaps): Make + constant unsigned. - * sysdeps/generic/bp-checks.h: Use unbounded __memchr - rather than non-existent __ubp_memchr. - (CHECK_STRINGopt, CHECK_FCNTL, BOUNDED_N, BOUNDED_1): New macros. - (_CHECK_STRING, _CHECK_N): New macros. - (CHECK_STRING, CHECK_N, CHECK_Nopt): Rewrite in terms of _CHECK_*. - (CHECK_IOCTL): Move inside `#if !__ASSEMBLER__'. - * sysdeps/alpha/memchr.S: Change strong name to "__memchr". - Add weak alias "memchr". - * sysdeps/generic/memchr.c: Likewise. - * sysdeps/i386/memchr.S: Likewise. - * sysdeps/ia64/memchr.S: Likewise. - * sysdeps/m68k/memchr.S: Likewise. - * sysdeps/sparc/sparc32/memchr.S: Likewise. - * sysdeps/sparc/sparc64/memchr.S: Likewise. - * sysdeps/vax/memchr.s: Likewise. +2001-01-01 Andreas Jaeger - * iconv/gconv_trans.c: Add #include to get malloc decl. + * inet/rcmd.c (rcmd_af): Use socklen_t for len. - * elf/dl-runtime.c (fixup): Trampoline passes unbounded pointer. - (profile_fixup): Don't define for __BOUNDED_POINTERS__. - * sysdeps/i386/dl-machine.h: Don't use regparm attribute for - __BOUNDED_POINTERS__. - (ELF_MACHINE_RUNTIME_TRAMPOLINE): Use non-regparm version - for __BOUNDED_POINTERS__. +2000-12-31 Andreas Jaeger -2000-07-17 Bruno Haible + * include/libc-internal.h: Add prototype for __libc_freeres. - * iconv/gconv_open.c (__gconv_open): Initialize the __data - field of struct __gconv_trans_data differently. Don't pass NULL to - trans_init_fct. Simplify list append operation. + * sysdeps/unix/sysv/linux/init-first.c: Include + for prototypes, remove redundant prototypes. + * gmon/gmon.c: Likewise. + * sysdeps/unix/i386/i586/clock_getres.c: Likewise. + * sysdeps/unix/i386/i586/clock_gettime.c: Likewise. + * malloc/mtrace.c: Likewise. -2000-07-14 Bruno Haible + * sysdeps/generic/enbl-secure.c: Include for + prototypes. + * elf/soinit.c: Likewise. + * sysdeps/generic/prof-freq.c: Likewise. + * sysdeps/mach/hurd/profil.c: Likewise. + * debug/noophooks.c: Likewise. + * debug/pcprofile.c: Likewise. + * sysdeps/unix/sysv/linux/i386/get_clockfreq.c: Likewise. + * sysdeps/generic/get_clockfreq.c: Likewise. + * malloc/set-freeres.c: Likewise. - * intl/dcigettext.c (dcigettext): Call plural_eval on all platforms, - not only those having tsearch. + * locale/localeinfo.h: Add internal prototypes. -2000-07-17 Ulrich Drepper + * elf/rtld.c (dl_main): Fix prototype. - * locale/langinfo.h: Add placeholder values in enum for removed - LC_CTYPE entries. + * iconvdata/tst-table-to.c (main): Use return instead of exit to + avoid warning. -2000-07-17 Jakub Jelinek + * nis/rpcsvc/yp_prot.h: Remove __P. + * nis/rpcsvc/ypupd.h: Likewise. + * nis/rpcsvc/yp.h: Likewise. - * elf/dl-addr.c (_dl_addr): Keep searching in the _dl_loaded - chain if the PHDR check fails. + * sunrpc/rpc_main.c: Add noreturn attributes. + * sunrpc/rpc_scan.h: Likewise. -2000-07-17 Mark Kettenis + * sunrpc/rpc_hout.c (storexdrfuncdecl): Make static. - * nss/getent.c (print_hosts): Make sure we always print a space - between numeric addresses and hostnames. + * sunrpc/rpcinfo.c: Add noreturn attribute to brdcst. -2000-07-17 Wolfram Gloger + * sunrpc/proto.h: Add noreturn attributes to error and crash. - * malloc/malloc.c (chunk_alloc): Use mmap_chunk() only if allowed, - i.e. if n_mmaps_max>0. + * posix/bsd-getpgrp.c: Add prototype to avoid warning. -2000-07-16 Mark Kettenis + * sunrpc/svc_unix.c: Include for prototypes. - * resolv/netdb.h (AI_V4MAPPED, AI_ALL, AI_ADDRCONFIG): Adjust - values to remove possible clash with other AI_* constants. - (AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST): Define as - hexadecimal constants to stress the fact they're in fact - bit flags. + * sunrpc/create_xid.c: Include for prototypes. -2000-07-15 Mark Kettenis + * include/rpc/rpc_msg.h: Add prototypes for some functions. + * include/rpc/auth.h: Likewise. + * include/rpc/auth_des.h: Likewise. + * include/rpc/clnt.h: Likewise. + * include/rpc/rpc.h: Likewise. + * include/rpc/svc.h: Likewise. + * include/rpc/svc_auth.h: Likewise. - * nss/getXXent_r.c [NEED__RES]: Include . - (SETFUNC_NAME, ENDFUNC_NAME, REENTRANT_GETNAME): Use res_ninit - instead of res_init. + * include/rpc/des_crypt.h: New file. -2000-07-16 Ulrich Drepper + * malloc/memusagestat.c (main): Use return instead of exit to + avoid warning. + * io/pwd.c (main): Likewise. + * iconvdata/tst-table-from.c (main): Likewise. + * ctype/test_ctype.c (main): Likewise. + * setjmp/tst-setjmp.c (main): Likewise. + * signal/tst-signal.c (main): Likewise. + * stdlib/tst-strtol.c (main): Likewise. + * stdlib/tst-strtod.c (main): Likewise. + * stdlib/tst-strtoll.c (main): Likewise. + * stdlib/tst-xpg-basename.c (main): Likewise. + * dirent/tst-seekdir.c (main): Likewise. + * grp/testgrp.c (main): Likewise. + * inet/test_ifindex.c (main): Likewise. + * io/test-utime.c (main): Likewise. + * posix/test-vfork.c (main): Likewise. + * posix/testfnm.c (main): Likewise. + * stdio-common/temptest.c (main): Likewise. + * stdio-common/test_rdwr.c (main): Likewise. + * stdio-common/tst-fileno.c (main): Likewise. + * stdio-common/tst-sscanf.c (main): Likewise. + * stdio-common/tstscanf.c (main): Likewise. + * string/bug-strncat1.c (main): Likewise. + * string/bug-strpbrk1.c (main): Likewise. + * string/bug-strspn1.c (main): Likewise. + * string/test-ffs.c (main): Likewise. + * string/tst-inlcall.c (main): Likewise. + * string/tst-svc.c (main): Likewise. + * timezone/test-tz.c (main): Likewise. + * wctype/test_wcfuncs.c (main): Likewise. + * wctype/test_wctype.c (main): Likewise. - * crypt/md5-crypt.c (__md5_crypt_r): Add casts for first - parameters of memset calls to avoid warnings. + * stdlib/tst-random.c: Add attribute noreturn to fail. -2000-07-15 Ulrich Drepper +2000-12-28 Wolfram Gloger - * stdlib/Makefile: Rewrite rules to avoid running isomac unless - necessary. + * malloc/malloc.c (MALLOC_COPY): Handle case if source and + destination overlap. Assume dest is always below source if + overlapping. - * sysdeps/unix/sysv/linux/getcwd.c: Correct last patch. - Patch by Greg McGary . +2000-12-30 Ulrich Drepper - * io/Makefile (tests): Add tst-getcwd. - * io/tst-getcwd.c: New file. + * elf/dl-close.c (_dl_close): We can ignore the NODELETE flag if the + object was not yet initialized. - * io/Makefile: Rewrite rules to avoid running ftwtest unless necessary. +2000-12-28 H.J. Lu -2000-07-15 Jakub Jelinek + * elf/dl-deps.c (_dl_map_object_deps): Make sure the DSO state + is always consistent even if its dependency is failed. - * iconv/gconv_open (__gconv_open): Initialize whole __gconv_trans_data - structure. + * elf/dl-open.c (_dl_open): Increment the open count before + calling _dl_close () in case of failure. -2000-07-13 Jakub Jelinek + * elf/neededtest4.c: New file. + * elf/neededobj5.c: New file. + * elf/neededobj6.c: New file. - * sysdeps/posix/sysconf.c: Undef __sysconf before weak_alias. - * sysdeps/unix/bsd/getpt.c: Undef __getpt before weak_alias. + * elf/Makefile (distribute): Add neededobj5.c and neededobj6.c. + (tests): Add neededtest4. + (modules-names): Add neededobj5 and neededobj6. + ($(objpfx)neededobj6.so): New target. + ($(objpfx)neededtest4): New target. + ($(objpfx)neededtest4.out): New target. -2000-07-12 H.J. Lu +2000-12-28 Joseph S. Myers - * sysdeps/unix/sysv/linux/ia64/Versions (libc): Add __clone2 to - GLIBC_2.2. - * sysdeps/unix/sysv/linux/ia64/Dist: Add clone2.S. - * sysdeps/unix/sysv/linux/ia64/Makefile [$(subdir)=misc] - (sysdep-routines): Add clone2. - * sysdeps/unix/sysv/linux/ia64/clone2.S: New. + * misc/sys/cdefs.h (__attribute_format_strfmon__): Define. + * stdlib/monetary.h: Add strfmon format attributes. -2000-07-13 Jes Sorensen +2000-12-28 Roland McGrath - * sysdeps/unix/sysv/linux/ia64/clone.S: New file. - * sysdeps/unix/sysv/linux/ia64/fork.c: New file. + * sysdeps/mach/hurd/ioctl.c (do_ioctl): Avoid double-increment after + __mempcpy does it for us. -2000-06-05 David Mosberger +2000-12-28 Andreas Jaeger - * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: New file - based on sysdeps/unix/sysv/linux/bits/siginfo.h. - Change type of si_band from "int" to "long". - (si_imm) [USE_GNU]: Define - (si_isr) [USE_GNU]: Likewise. - (ILL_BREAK) [USE_GNU]: Likewise. - (FPE_DECOVF) [USE_GNU]: Likewise. - (FPE_DECDIV) [USE_GNU]: Likewise. - (FPE_DECERR) [USE_GNU]: Likewise. - (FPE_INVASC) [USE_GNU]: Likewise. - (FPE_INVDEC) [USE_GNU]: Likewise. - (TRAP_BRANCH) [USE_GNU]: Likewise. - (TRAP_HWBKPT) [USE_GNU]: Likewise. + * sysdeps/generic/dl-environ.c: Add prototype for unsetenv. -2000-07-06 Jes Sorensen + * sysdeps/unix/sysv/linux/i386/setrlimit.c: Add prototype for + __new_setrlimit. - * sysdeps/unix/sysv/linux/ia64/sys/ucontext.h: Do not include - bits/sigcontext as struct mcontext does not depend on it. + * sysdeps/unix/sysv/linux/i386/oldgetrlimit64.c: Add prototype for + __old_getrlimit64. - * sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h: New file. + * sysdeps/unix/sysv/linux/i386/getrlimit.c: Add prototype for + __new_getrlimit. -2000-07-04 Jes Sorensen + * sysdeps/unix/sysv/linux/i386/chown.c: Add prototypes for + __chown_is_lchown and __real_chown. - * sysdeps/unix/sysv/linux/ia64/shmctl.c: Removed. + * sysdeps/generic/ldsodefs.h: Add noreturn attribute to + _dl_reloc_bad_type. -2000-07-04 David Mosberger-Tang + * sunrpc/rpc_hout.c (print_funcdef): Add break statement to shut + up GCC's warning about "deprecated use of label at end of compound + statement." + * sunrpc/rpc_cout.c (emit_inline): Likewise. - * sysdeps/unix/sysv/linux/ia64/bits/msq.h: New file. + * gmon/bb_exit_func.c: Include for internal + prototypes. + Remove struct bb and __bb_head since those are declared by + sys/gmon.h. -2000-06-22 Jes Sorensen +2000-12-22 Ben Collins - * sysdeps/unix/sysv/linux/ia64/bits/mman.h: New file. + * manual/charset.texi: Fix typo in description of WCHAR_MAX. -2000-07-15 Ulrich Drepper + * manual/argp.texi: Document argp_domain as part of struct argp. - * intl/Makefile (test-srcs): Add tst-translit. - (tests): Likewise. - Add rules to build and run tst-translit. - * intl/tst-translit.c: New file. - * intl/tst-translit.sh: New file. - * intl/translit.po: New file. +2000-12-28 Andreas Jaeger -2000-07-14 Ulrich Drepper + * catgets/Makefile (generated): Add sample.SJIS.cat. - * iconv/loop.c (STANDARD_ERR_HANDLER): If one of the - transliteration function did its job, continue, don't stop. + * sunrpc/rpc_dtable.c: Include rpc/clnt.h for prototypes. - * iconvdata/iso646.c: Little optimizations in body for conversion - from UCS4. + * elf/dl-minimal.c: Add prototypes. -2000-07-14 Mark Kettenis + * include/locale.h: Add internal prototypes. + * include/sys/gmon.h: Likewise. - * dlfcn/dlerror.c (free_key_mem): Add cast to silence compiler warning. + * dlfcn/errmsg1mod.c: Add prototype for foo to shut up GCC. -2000-07-14 Mark Kettenis +2000-12-27 Ben Collins - * configure.in: Check for pwd binary. - * config.make.in: Add PWD_P to be subsituted. - * Makerules: Use $(PWD_P) instead of /bin/pwd. + * elf/dl-open.c (_dl_open): Correctly set the new objname pointer + when reallocating the error strings. + Reported by Kalle Olavi Niemitalo -2000-07-14 Ulrich Drepper +2000-12-27 Ulrich Drepper - * iconvdata/Makefile (modules): Add GB18030. - (distribute): Add gb18030.c. - * iconvdata/gconv-modules: Add entries for GB18030 module. - * iconvdata/gb18030.c: New file. - Contributed by Wang ShouHua - and Wu Jian. + * dlfcn/Makefile (tests): Add errmsg1. + (modules-names): Add errmsg1mod. + Add rules to run errmsg1. + * dlfcn/errmsg1.c: New file. + * dlfcn/errmsg1mod.c: New file. -2000-07-13 Andreas Jaeger + * dlfcn/dlerror.c (dlerror): Always create output string which + includes object file name. - * sysdeps/unix/sysv/linux/getsysstats.c (free_mem): Revert last - patch. + * sysdeps/alpha/alphaev6/memcpy.S: Don't go through unrolled loop + if we would go through it only once. + Patch by Rick Gorton . - * grp/fgetgrent.c (free_mem): Remove if - free (0) is valid. - * inet/getnetgrent.c (free_mem): Likewise. - * misc/mntent.c (free_mem): Likewise. - * nss/getXXbyYY.c (free_mem): Likewise. - * nss/getXXent.c (free_mem): Likewise. - * pwd/fgetpwent.c (free_mem): Likewise. - * shadow/fgetspent.c (free_mem): Likewise. + * sysdeps/alpha/alphaev67/strncat.S: Fix handling of numeric parameter. + Patch by Richard Henderson . -2000-07-14 Ulrich Drepper +2000-12-27 Jakub Jelinek - * sunrpc/xdr.c (xdr_u_long): Handle reading of unsigned long on - 64-bit architecture correctly [PR libc/1794]. + * malloc/malloc.c (memmove): Add prototypes. + (MALLOC_MEMMOVE): Define. + (chunk_realloc): Use it instead of MALLOC_COPY if source and + destination might overlap. -2000-07-13 Ulrich Drepper +2000-12-27 Andreas Jaeger - * elf/Versions (ld): Export _dl_out_of_memory for GLIBC_2.2. - * dlfcn/dlerror.c (dlerror): Don't free the error string if it is the - report that we are out of memory. + * stdio-common/printf_fp.c (__printf_fp): Add prototype for nested + function. + * elf/dl-load.c (_dl_map_object_from_fd): Likewise. + * locale/programs/locale.c (show_locale_vars): Likewise. + (show_info): Likewise. + * locale/programs/ld-collate.c (collate_output): Likewise. + * locale/programs/ld-ctype.c (set_class_defaults): Likewise. * elf/dl-deps.c (_dl_map_object_deps): Likewise. - * elf/dl-libc.c (dlerror_run): Likewise. - * elf/dl-open.c (_dl_open): Likewise. - * elf/rtld.c (dl_main): Likewise. - * elf/dl-error.c: Define _dl_out_of_memory. - (_dl_signal_error): Return _dl_out_of_memory if we cannot duplicate - the error string. - * sysdeps/generic/ldsodefs.h: Declare _dl_out_of_memory. - [PR libc/1813]. - - * dlfcn/dlerror.c (free_key_mem): Also free error string. - - * iconv/loop.c: Fix comment. - - * malloc/mtrace.c (tr_freehook): Return immediately if ptr is NULL. - -2000-07-13 Andreas Jaeger - - * sysdeps/unix/sysv/linux/getcwd.c (__getcwd): Correctly handle - getcwd (NULL, size) with size > 0. - Fixes PR libc/1788, reported by John Buddery . - -2000-07-13 Andreas Jaeger - - * posix/Makefile: Remove build rules for libposix. - -2000-07-13 Andreas Schwab - - * sysdeps/generic/glob.c (glob): Fix memory leak. - [SHELL]: Remove reference to undefined variable `files'. - Fixes PR libc/1782. - -2000-07-13 Andreas Jaeger - - * sysdeps/unix/sysv/linux/mips/Versions: Add libgcc frame handling - functions. - - * sysdeps/unix/sysv/linux/getsysstats.c (free_mem): Only free - memory if it was allocated. - -2000-07-12 Ulrich Drepper - - * iconv/gconv_db.c (gen_steps): Always initialize __data field of - step. - - * iconv/gconv_open.c (__gconv_open): Reapply - 2000-07-12 Bruno Haible - - * iconv/gconv_open.c (__gconv_open): Merge duplicated code. - - * iconv/gconv_open.c: Undo last two changes for now. They break - everything. - -2000-07-12 Andreas Jaeger - - * elf/Makefile (SYSCONF-FLAGS): Added to pass sysconfdir to - compiler. - (CFLAGS-cache.c): Added, uses SYSCONF-FLAGS. - (CFLAGS-dl-cache.c): Likewise. - (CFLAGS-ldconfig.c): Added, passes directory locations. - - * sysdeps/generic/dl-cache.h (LD_SO_CACHE): Use SYSCONFDIR to - locate cache. - * elf/ldconfig.c (LD_SO_CONF): Likewise. - (main): Use configured LIBDIR and SLIBDIR. - -2000-07-11 Jakub Jelinek - - * math/bits/cmathcalls.h (cimag): Add __THROW. - (creal, conj): Likewise. - * wctype/wctype.h (_ISwbit): Avoid warnings about shifting left - by negative value. - -2000-07-12 H.J. Lu - - * resolv/Versions (libresolv): Add __res_hostalias to GLIBC_2.2 - for _nss_dns_gethostbyname2_r in resolv/nss_dns/dns-host.c. - -2000-07-12 Ulrich Drepper - - * wcsmbs/wcsmbsload.c (__wcsmbs_load_conv): Shut gcc up although - it is wrong. - -2000-07-12 Bruno Haible - - * iconv/gconv_open.c (__gconv_open): Merge duplicated code. - -2000-07-12 Bruno Haible - - * iconv/gconv_builtin.c (__gconv_get_builtin_trans): Initialize - __modname. - -2000-07-12 Bruno Haible - - * iconv/gconv_open.c (__gconv_open): Initialize - result->__steps[cnt].__data. - -2000-07-12 Mark Kettenis - - * nss/getent.c (services_keys): Pass port number in network byte - order in call to getservbyport. - -2000-07-11 Andreas Jaeger - - * stdlib/Makefile (test-canon-ARGS): Fix for building in the - source dir. - * intl/Makefile (do-gettext-test): Likewise. - * dirent/Makefile (opendir-tst1-ARGS): Likewise. - -2000-07-11 Andreas Schwab - - * Makeconfig (run-program-prefix): New rule. - (built-program-cmd): Use run-program-prefix. - -2000-07-12 Ulrich Drepper - - * locale/langinfo.h: Make CRNCYSTR, RADIXCHAR, THOUSANDS_SEP, YESEXPR, - and NOEXPR unconditionally available. - -2000-07-12 Greg McGary - - * sysdeps/generic/open64.c: Wrap extern symbols in BP_SYM (). - * sysdeps/posix/open64.c: Likewise. - * sysdeps/generic/fegetenv.c: Likewise. - * sysdeps/powerpc/fpu/fegetenv.c: Likewise. - * sysdeps/powerpc/fpu/fesetenv.c: Likewise. - * sysdeps/powerpc/fpu/feupdateenv.c: Likewise. - * sysdeps/powerpc/fpu/fgetexcptflg.c: Likewise. - * sysdeps/powerpc/fpu/fraiseexcpt.c: Likewise. - * sysdeps/powerpc/fpu/fsetexcptflg.c: Likewise. - -2000-07-11 Greg McGary - - * include/libc-symbols.h [!__ASSEMBLER__] (strong_alias): - Add extra level of macro expansion. - [!__ASSEMBLER__ && HAVE_WEAK_SYMBOLS] (weak_alias): nLikewise. - * sysdeps/generic/bp-thunks.h: Ensure `struct timeval' definition - is available at the time `select' prototype is declared. - * sysdeps/unix/make-syscalls.sh: Remove unused variables. - Collect non-versioned weak aliases. Consider only non-versioned - aliases for the user-visible systemcall name. Do checks inline with - call to primitive system call. - * sysdeps/unix/sysv/linux/ptrace.c (ptrace): Add void cast to - stand-alone bounds checks to suppress unused value warnings. - * sysdeps/unix/sysv/linux/sysctl.c (__sysctl): Likewise. - -2000-07-10 Mark Kettenis - - * sysdeps/mach/hurd/check_fds.c: New file. Implements - file descriptor checking in SUID programs for the Hurd. - - * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyname2_r): Use - res_hostalias instead of __hostalias for thread-safety. - -2000-07-09 Mark Kettenis - - * elf/rtld.c (dl_main): Move call to __libc_check_standard_fds... - * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): ... to here. - -2000-07-10 Ulrich Drepper - - * include/features.h: Include ISO C99 features if the compiler used - is an ISO C99 compiler. - Patch by Joseph S. Myers . - -2000-07-08 Mark Kettenis - - * iconv/gconv_conf.c: Include . - -2000-07-10 Andreas Jaeger - - * sysdeps/unix/sysv/linux/i386/sigaction.c: Make alias weak since - it's overridden by libpthreads. - * sysdeps/unix/sysv/linux/sigaction.c: Likewise. - * sysdeps/unix/sysv/linux/arm/sigaction.c: Likewise. - * sysdeps/unix/sysv/linux/ia64/sigaction.c: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c: Likewise. - - * malloc/Makefile: Run tst-mtrace only with shared libs. - - * stdio-common/Makefile: Run unbputc and tst-printf tests only - with shared libs. - -2000-07-10 Maciej W. Rozycki - - * sysdeps/mips/dl-machine.h (elf_machine_runtime_link_map): Verify - that gpreg really points to the GOT section of the calling object. - Scan all PT_LOAD segments of objects for stub_pc, instead of only - checking a start address of first one. - Fix typos. - * sysdeps/mips/mips64/dl-machine.h (elf_machine_runtime_link_map): - Likewise. - - * sysdeps/mips/dl-machine.h (__dl_runtime_resolve): Fix a typo. - -2000-07-10 Andreas Jaeger - - * sysdeps/unix/sysv/linux/sigaction.c: Fix typo - (string_alias->strong_alias). - -2000-07-08 Mark Kettenis - - * hurd/hurd/fd.h: Include instead of . - -2000-07-07 Greg McGary - - * sysdeps/unix/make-syscalls.sh: Tolerate syscalls that - have no names without leading underscores. - -2000-07-07 Ulrich Drepper - - * iconvdata/sjis.c (from_ucs4_lat1): Fix mappng of U005C and - U007E. - - * stdio-common/Makefile (tests): Remove tst-printf here... - (tests-srcs): ...and add it here. - (distribute): Add tst-unbputc.sh and tst-printf.sh. - Add rules to run tst-printf.sh. - * stdio-common/tst-printf.c: Move code around so that there is really - no further output where it's stated. - * stdio-common/tst-printf.sh: New file. - -2000-07-07 Mark Kettenis - - * hurd/vpprintf.c [USE_IN_LIBIO]: Include . - (do_write): Renamed from pwrite. - (vpprintf) [USE_IN_LIBIO]: Adjust for renaming and reshufling of - `struct _IO_cookie_file'. - -2000-07-07 Ulrich Drepper - - * malloc/mtrace.pl: Exit with exit code 1 if any leak was - detected. - * malloc/tst-mtrace.sh: Run mtrace script. - -2000-07-07 Greg McGary - - * posix/regex.c (EXTEND_BUFFER): Compute increment once. - Move all three components of a bounded pointer. - -2000-07-07 Ulrich Drepper - - * locale/programs/locale.c (write_locales): Don't simply add all - directories found in the subdir, test whether at least the - LC_CTYPE file is in there. - -2000-07-06 Ulrich Drepper - - * iconvdata/euc-jp.c: Map characters in C1 area to itself. - * iconvdata/euc-kr.c: Likewise. - - * stdio-common/vfprintf.c (process_string_arg): Check result of - wcrtomb call and bail out if it failed. - - * malloc/Makefile (test-srcs): Add tst-mtrace. - (distribute): Add tst-mtrace.sh. - Add rule to run tst-mtrace.sh. - * malloc/tst-mtrace.c: New file. - * malloc/tst-mtrace.sh: New file. - - * include/signal.h: Declare __libc_sigaction. - * sysdeps/unix/sysv/linux/Versions: Export __libc_sigaction. - * sysdeps/unix/sysv/linux/sigaction.c: Add __libc_sigaction alias. - * sysdeps/unix/sysv/linux/arm/sigaction.c: Likewise. - * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise. - * sysdeps/unix/sysv/linux/ia64/sigaction.c: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c: Likewise. - - * configure.in: Fix CFLAGS-memprofstat.c definition after - 2000-06-19 change. - Patch by Bradford W. Johnson . - -2000-07-06 Jakub Jelinek - - * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela): Pass 0 - instead of NULL to elf_machine_fixup_plt t argument. - * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela): Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc32/mmap64.c (__mmap64): Add - cast. - -2000-07-06 Andreas Jaeger - - * crypt/Makefile (LDLIBS-cert): Removed. - (LDLIBS-md5c-test): Removed. - ($(objpfx)cert): Renamed from cert.out to fix dependencies. - ($(objpfx)md5c-test): Likewise for md5c-test.out. - -2000-07-06 Andreas Jaeger - - * sysdeps/unix/sysv/linux/getsysstats.c (get_proc_path): The type - of the proc system is "proc". - - * sysdeps/generic/libc-start.c (__libc_start_main): Initialize - thread library for static programs. - -2000-07-06 Greg McGary - - * sysdeps/generic/bp-checks.h (CHECK_SIGSET, CHECK_SIGSETopt): - New macros. - * sysdeps/generic/strcpy.c: Add bounds checks. - * sysdeps/unix/fxstat.c: Likewise. - * sysdeps/unix/xstat.c: Likewise. - * sysdeps/unix/common/lxstat.c: Likewise. - * sysdeps/unix/sysv/linux/aio_sigqueue.c: Likewise. - * sysdeps/unix/sysv/linux/execve.c: Likewise. - * sysdeps/unix/sysv/linux/fxstat.c: Likewise. - * sysdeps/unix/sysv/linux/fxstat64.c: Likewise. - * sysdeps/unix/sysv/linux/getcwd.c: Likewise. - * sysdeps/unix/sysv/linux/getdents.c: Likewise. - * sysdeps/unix/sysv/linux/llseek.c: Likewise. - * sysdeps/unix/sysv/linux/lxstat.c: Likewise. - * sysdeps/unix/sysv/linux/lxstat64.c: Likewise. - * sysdeps/unix/sysv/linux/poll.c: Likewise. - * sysdeps/unix/sysv/linux/pread.c: Likewise. - * sysdeps/unix/sysv/linux/pread64.c: Likewise. - * sysdeps/unix/sysv/linux/ptrace.c: Likewise. - * sysdeps/unix/sysv/linux/pwrite.c: Likewise. - * sysdeps/unix/sysv/linux/pwrite64.c: Likewise. - * sysdeps/unix/sysv/linux/readv.c: Likewise. - * sysdeps/unix/sysv/linux/sigaction.c: Likewise. - * sysdeps/unix/sysv/linux/sigpending.c: Likewise. - * sysdeps/unix/sysv/linux/sigprocmask.c: Likewise. - * sysdeps/unix/sysv/linux/sigqueue.c: Likewise. - * sysdeps/unix/sysv/linux/sigsuspend.c: Likewise. - * sysdeps/unix/sysv/linux/sigtimedwait.c: Likewise. - * sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise. - * sysdeps/unix/sysv/linux/sysctl.c: Likewise. - * sysdeps/unix/sysv/linux/truncate64.c: Likewise. - * sysdeps/unix/sysv/linux/ustat.c: Likewise. - * sysdeps/unix/sysv/linux/writev.c: Likewise. - * sysdeps/unix/sysv/linux/xmknod.c: Likewise. - * sysdeps/unix/sysv/linux/xstat.c: Likewise. - * sysdeps/unix/sysv/linux/xstat64.c: Likewise. - * sysdeps/unix/sysv/linux/arm/sigaction.c: Likewise. - * sysdeps/unix/sysv/linux/i386/brk.c: Likewise. - * sysdeps/unix/sysv/linux/i386/chown.c: Likewise. - * sysdeps/unix/sysv/linux/i386/fxstat.c: Likewise. - * sysdeps/unix/sysv/linux/i386/getgroups.c: Likewise. - * sysdeps/unix/sysv/linux/i386/getresgid.c: Likewise. - * sysdeps/unix/sysv/linux/i386/getresuid.c: Likewise. - * sysdeps/unix/sysv/linux/i386/getrlimit.c: Likewise. - * sysdeps/unix/sysv/linux/i386/lchown.c: Likewise. - * sysdeps/unix/sysv/linux/i386/lxstat.c: Likewise. - * sysdeps/unix/sysv/linux/i386/setgroups.c: Likewise. - * sysdeps/unix/sysv/linux/i386/setrlimit.c: Likewise. - * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise. - * sysdeps/unix/sysv/linux/i386/xstat.c: Likewise. - * sysdeps/unix/sysv/linux/ia64/fxstat.c: Likewise. - * sysdeps/unix/sysv/linux/ia64/lxstat.c: Likewise. - * sysdeps/unix/sysv/linux/ia64/sigaction.c: Likewise. - * sysdeps/unix/sysv/linux/ia64/sigpending.c: Likewise. - * sysdeps/unix/sysv/linux/ia64/sigprocmask.c: Likewise. - * sysdeps/unix/sysv/linux/ia64/sigsuspend.c: Likewise. - * sysdeps/unix/sysv/linux/ia64/xstat.c: Likewise. - * sysdeps/unix/sysv/linux/m68k/chown.c: Likewise. - * sysdeps/unix/sysv/linux/mips/pread.c: Likewise. - * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise. - * sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise. - * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise. - * sysdeps/unix/sysv/linux/mips/truncate64.c: Likewise. - * sysdeps/unix/sysv/linux/mips/ustat.c: Likewise. - * sysdeps/unix/sysv/linux/mips/xmknod.c: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc32/mmap64.c: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/sigpending.c: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/sigsuspend.c: Likewise. - - * string/endian.h (__LONG_LONG_PAIR): New macro. - * sysdeps/unix/sysv/linux/ftruncate64.c: Use it. - * sysdeps/unix/sysv/linux/pread.c: Likewise. - * sysdeps/unix/sysv/linux/pread64.c: Likewise. - * sysdeps/unix/sysv/linux/pwrite.c: Likewise. - * sysdeps/unix/sysv/linux/pwrite64.c: Likewise. - * sysdeps/unix/sysv/linux/truncate64.c: Likewise. - * sysdeps/unix/sysv/linux/mips/ftruncate64.c: Likewise. - * sysdeps/unix/sysv/linux/mips/pread.c: Likewise. - * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise. - * sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise. - * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise. - * sysdeps/unix/sysv/linux/mips/truncate64.c: Likewise. - - * sysdeps/unix/sysv/linux/sys/ptrace.h (PT_SYSCALL): Fix LHS. - -2000-07-06 Andreas Jaeger - - * sysdeps/unix/sysv/linux/getsysstats.c (get_proc_path): - Initialize result. - - * math/test-fpucw.c: Include for printf. - -2000-07-05 Greg McGary - - * sysdeps/generic/bp-checks.h: New file. - * sysdeps/generic/bp-thunks.h: Replace generic thunk definitions - with list of #include files. - * sysdeps/unix/make-syscalls.sh: Handle new arg signature - keyletters a, b, B, f, n, N, P, v, V. Fixup some indentation. - Don't generate BP thunk if `V' appears in signature. - Generate thunks with complete bounds checks. - * sysdeps/unix/syscalls.list: Refine signatures using new keyletters. - * sysdeps/unix/inet/syscalls.list: Likewise. - * sysdeps/unix/mman/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/ia64/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/mips/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/powerpc/syscalls.list: Likewise. - -2000-07-05 Ulrich Drepper - - * sysdeps/unix/sysv/linux/getsysstats.c (get_proc_path): Cache - result. Search first in /etc/mtab (proc/mounts would be stupid). - If mount not in the file fall back on /proc. - - * crypt/md5-crypt.c (__md5_crypt_r): Clear arrays the key and salt - string got copied in. - Patch by Solar Designer . - -2000-07-05 Andreas Jaeger - - * manual/install.texi (Installation): Update information about - add-ons. - (Configuring and compiling): Update for glibc 2.2. - -2000-07-04 Andreas Jaeger - - * sysdeps/i386/fpu_control.h (_FPU_DEFAULT): Correct value. - (_FPU_IEEE): Likewise. - - * math/Makefile (tests): Add test-fpucw. - - * math/test-fpucw.c (main): New file. - -2000-07-05 Ulrich Drepper - - * locale/loadlocale.c (_nl_unload_locale): Add cast to avoid warning. - - * locale/programs/ld-collate.c (collate_output): Also write out the - collation sequence values and the wide character string for the - collation symbol table. - - * posix/fnmatch.c: Include "../locale/elem-hash.h". - * posix/fnmatch_loop.c: Implement collating symbol handling. - * posix/tst-fnmatch.input: Add more tests, especially for collating - symbol handling. - - * posix/regex.c: Fix comment. - -2000-07-05 Andreas Jaeger - - * sysdeps/mips/fpu_control.h: Fix type of fpu_control_t. - (_FPU_GETCW): Remove extra colon. - Patch by Ralf Baechle . - - * posix/fnmatch_loop.c (FCT): Only declare len if - !WIDE_CHAR_VERSION to silence GCC. - - * sysdeps/generic/rawmemchr.c: Include for abort - prototype. - * sysdeps/generic/strchrnul.c: Likewise. - * sysdeps/generic/strlen.c: Likewise. - * sysdeps/generic/strchr.c: Likewise. - * sysdeps/generic/memchr.c: Likewise. - -2000-07-04 Ulrich Drepper - - * posix/fnmatch_loop.c: Implement equivalence class handling. - * posix/tst-fnmatch.input: Add tests for equivalence class - handling. - - * posix/fnmatch_loop.c: Improve performance for single-byte - character sets by not using btowc. - - * posix/tst-fnmatch.input: Add tests for locale dependent - behaviour. - * posix/tst-fnmatch.c (main): Also set LC_CTYPE category. - - * posix/tst-fnmatch.input: Add more test cases. - - * crypt/md5-crypt.c (__md5_crypt_r): If buffers for key and salt - are not aligned to alignof(md5_uint32) do it before calling - __md5_process_bytes. - * crypt/md5.c: Make sure buffers are aligned. - * crypt/md5.h: Likewise. - Reported by Solar Designer . - - * crypt/Makefile: Add dependencies for test programs. - - * Rules: Define LC_ALL=C in environments of all programs we run. - - * intl/tst-gettext.sh (LC_ALL): Define to C and export. - -2000-07-03 H.J. Lu - - * locale/programs/ld-ctype.c (ctype_output): The size of iov - is 2 + elem + offset, not 2 + elem + offset + 2. - -2000-07-04 Ulrich Drepper - - * posix/fnmatch_loop.c: Fix two problems uncovered by the new test - suite. - * posix/Makefile (tests): Add tst-fnmatch. - (tst-fnmatch-ENV): Define. - * posix/tst-fnmatch.c: New file. - * posix/tst-fnmatch.sh: New file. - -2000-07-04 NIIBE Yutaka - - * locale/programs/charmap.c (charmap_read): Prepend - the condition filename == NULL. - -2000-07-03 Greg McGary - - * sysdeps/i386/bits/setjmp.h (PUSH_SIGNAL_MASK): Fix typo. - - * csu/Makefile (extra-objs, install-lib): Add BP objects conditionally. - ($(objpfx)b$(start-installed-name)): Add non-elf rule. - - * libio/libio.h (_IO_FILE): Revert type of _chain to _IO_FILE*. - * libio/libioP.h (_IO_ITER): Revert to type _IO_FILE*. - (FILEBUF_LITERAL): Add cast for CHAIN init. - * libio/genops.c (_IO_un_link, _IO_link_in, _IO_iter_begin): Add casts. - (_IO_flush_all, _IO_flush_all_linebuffered, _IO_unbuffer_write): - Revert type of `fp' to _IO_FILE*. - (_IO_iter_file): Remove cast. - (_IO_iter_next): Elide intermediate member reference. - - * sysdeps/powerpc/strchr.S: Check bounds. - Wrap extern symbols in BP_SYM (). - -2000-07-03 Andreas Jaeger - - * dlfcn/Makefile (generated): New. - -2000-07-03 Ulrich Drepper - - * libio/genops.c (__overflow): Use _IO_fwide to orient the stream. - (__uflow): Likewise. - (__underflow): Likewise. - * libio/wgenops.c (__wunderflow): Likewise. - * stdio-common/tst-unbputc.c: New file. - * stdio-common/tst-unbputc.sh: New file. - * stdio-common/Makefile: Add rules to build and run tst-unbputc. - - * po/en_GB.po: New file. - Contributed by Robert Brady . - -2000-07-01 Andreas Jaeger - - * intl/Makefile (generated-dirs): New. - - * elf/Makefile (generated): trusted-dirs.h is always generated, - move out of build-shared condition. - (generated): Merge the two entries for build-shared. - -2000-07-01 Ulrich Drepper - - * debug/Makefile (distribute): Add xtrace.sh. - -2000-06-30 Ulrich Drepper - - * version.h (VERSION): Bump to 2.1.91. - - * configure.in: Update warning comment. glibc should not be - broken anymore. - - * sysdeps/unix/sysv/linux/ia64/Dist: Remove old content. Add - ioperm.c, sys/procfs.h, and sys/io.h. - - * sysdeps/powerpc/Dist: Add bp-asm.h. - - * assert/Depend: Add localedata. - * assert/Makefile (test-assert-ENV): New. Define LANGUAGE=C. - (test-assert-perr-ENV): New. Define LANGUAGE=C. - - * sysdeps/alpha/dl-machine.h (elf_machine_rela) [r_type == - R_ALPHA_REFQUAD]: Use memcpy to load and store value from - relocation address to prevent unaligned trap. - Suggested by Richard Henderson . - -2000-06-30 Jakub Jelinek - - * io/sys/stat.h (stat64, lstat64, fstat64): Don't define inlines - if redirecting and either redirection is done using defines or - not optimizing. - -2000-06-30 Ulrich Drepper - - * sunrpc/rpc_cout.c (inline_struct): Add missing parenthesis in - generated expressions. - Patch by Darren McClelland . - - * timezone/Makefile (build-testdata): Set LANGUAGE and LC_ALL - since zic uses setlocale and gettext but we cannot make it use the - new locale data since zic calls a shell which might not use the - new libc. - - * stdlib/strfmon.c: Move somewhat closer to the standard wrt to - handling the internation currency symbol. POSIX says that the - fourth character is used to separate the currency symbol from the - value. Therefore it does not have to be printed. But we cannot - remove the space if the currency symbol is printed before the - number since this is what many locales expect. - - * iconv/gconv_trans.c: Test with _NL_CTYPE_TRANSLIT_DEFAULT_MISSING_LEN - whether this information is available. - - * intl/dcigettext.c (_nl_find_msg): Correct reallocation of - buffers in case the translation is too large. Remember allocated - memory blocks in a list. - (free_mem): Free memory for translations. - - * intl/tst-gettext.c: Use correct locale. Improve error messages. - - * locale/programs/ld-ctype.c (ctype_output): If no default_missing - information is available set the string length to zero. - - * sysdeps/i386/i686/strcmp.S: Little optimization in non-BP case. - -2000-06-30 Greg McGary - - * sysdeps/powerpc/bp-asm.h: New file. - * sysdeps/powerpc/__longjmp.S: Check bounds. - Wrap extern symbols in BP_SYM (). - * sysdeps/powerpc/bsd-_setjmp.S: Likewise. - * sysdeps/powerpc/bsd-setjmp.S: Likewise. - * sysdeps/powerpc/setjmp.S: Likewise. - * sysdeps/powerpc/add_n.S: Likewise. - * sysdeps/powerpc/addmul_1.S: Likewise. - * sysdeps/powerpc/lshift.S: Likewise. - * sysdeps/powerpc/rshift.S: Likewise. - * sysdeps/powerpc/mul_1.S: Likewise. - * sysdeps/powerpc/sub_n.S: Likewise. - * sysdeps/powerpc/submul_1.S: Likewise. - * sysdeps/powerpc/strlen.S: Likewise. - * sysdeps/powerpc/memset.S: Likewise. - * sysdeps/powerpc/stpcpy.S: Likewise. - * sysdeps/powerpc/strcmp.S: Likewise. - * sysdeps/powerpc/strcpy.S: Likewise. - * sysdeps/powerpc/elf/bzero.S: Likewise. - - * sysdeps/powerpc/stpcpy.S: Define & use symbolic register names. - Line up operands column with tabs. - -2000-06-30 Ulrich Drepper - - * elf/Makefile (LDFLAGS-origtest): Actually add it. - - * sysdeps/ia64/htonl.S: New file. - * sysdeps/ia64/htons.S: New file. - * sysdeps/ia64/memcpy.S: Replace with version which does not use - floating point registers. - Patches by Dan Pop . - -2000-06-30 Andreas Jaeger - - * posix/Makefile (tests): tst-exec and tst-spawn only work with - shared libraries. - - * io/Makefile (CFLAGS-test-lfs.c): New. - (tests): Add test-lfs. - - * io/test-lfs.c: New file. - -2000-06-30 Jakub Jelinek - - * sysdeps/i386/bits/string.h (strcmp): Use 8bit register in 8bit - instruction. - -2000-06-29 David Mosberger-Tang - - * sysdeps/unix/sysv/linux/ia64/ioperm.c: New file. - -2000-06-29 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/syscalls.list: Add __fstatfs64 - alias to the fstatfs call. - - * sysdeps/unix/sysv/linux/ia64/getrlimit64.c: New file. - * sysdeps/unix/sysv/linux/ia64/setrlimit64.c: New file. - - * sysdeps/unix/sysv/linux/ia64/ftruncate64.c: New file. - * sysdeps/unix/sysv/linux/ia64/truncate64.c: New file. - - * sysdeps/unix/sysv/linux/ia64/readdir.c: New file. - * sysdeps/unix/sysv/linux/ia64/readdir_r.c: New file. - * sysdeps/unix/sysv/linux/ia64/readdir64.c: New file. - * sysdeps/unix/sysv/linux/ia64/readdir64_r.c: New file. - - * sysdeps/unix/sysv/linux/ia64/glob.c: New file. - * sysdeps/unix/sysv/linux/ia64/glob64.c: New file. - - * sysdeps/unix/sysv/linux/ia64/fstatfs64.c: New file. - * sysdeps/unix/sysv/linux/ia64/statfs64.c: New file. - - * sysdeps/unix/sysv/linux/ia64/pread64.c: New file. - * sysdeps/unix/sysv/linux/ia64/pwrite64.c: New file. - - * sysdeps/unix/sysv/linux/ia64/shmctl.c: New file. - -2000-06-29 Andreas Jaeger - - * sunrpc/rpc_svcout.c (write_msg_out): Always use format string - with syslog. - (print_err_message): Likewise. - Reported by Chris Evans . - -2000-06-29 Ulrich Drepper - - * locale/loadlocale.c (_nl_load_locale): Make sure all locale data - used as words is properly aligned. - - * locale/programs/ld-ctype.c (ctype_output): Don't generate unaligned - data files. - -2000-06-29 Greg McGary - - * sysdeps/generic/libc-start.c (__libc_stack_end): Chop __unbounded. - * sysdeps/unix/make-syscalls.sh: Handle signatures of - length 7..9, just in case... - * misc/sys/cdefs.h (__ptrvalue): Define as nothing for non-BP. - - * sysdeps/i386/bp-asm.h (PCOFF): New constant. - (POP_ERRNO_LOCATION_RETURN): Fold insns. - * sysdeps/i386/bits/setjmp.h (JB_SIZE): New constant. - (PUSH_SIGNAL_MASK): New macro. - * sysdeps/i386/__longjmp.S (__longjmp): Wrap symbol in BP_SYM (). - LEAVE is unnecessary. Check bounds of jmp_buf. - * sysdeps/i386/elf/setjmp.S: Call PUSH_SIGNAL_MASK. Wrap symbols - in BP_SYM (). Check bounds of jmp_buf. Don't call LEAVE until - immediately before tail-call. - * sysdeps/i386/setjmp.S: Likewise. - * sysdeps/i386/bsd-_setjmp.S: Likewise. - * sysdeps/i386/bsd-setjmp.S: Likewise. - -2000-06-29 Jakub Jelinek - - * sysdeps/sparc/fpu/fclrexcpt.c: Use SHLIB_COMPAT, compat_symbol and - versioned_symbol. - * sysdeps/sparc/fpu/fesetenv.c: Likewise. - * sysdeps/sparc/fpu/feupdateenv.c: Likewise. - * sysdeps/sparc/fpu/fgetexcptflg.c: Likewise. - * sysdeps/sparc/fpu/fraiseexcpt.c: Likewise. - * sysdeps/sparc/fpu/fsetexcptflg.c: Likewise. - * sysdeps/sparc/fpu/fegetenv.c: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/Versions: New file. - * shlib-versions: Make sparc64 GLIBC_2.2+ only. - -2000-06-29 Ulrich Drepper - - * stdio-common/printf_fp.c (__printf_fp): Don't clobber pointer which - we later need to calling free(). - Patch by Matt Wilson . - - * stdio-common/tst-printf.c: Add test for above problem. - -2000-06-27 David Mosberger-Tang - - * sysdeps/unix/sysv/linux/ia64/bits/ipc.h: New file. - * sysdeps/unix/sysv/linux/ia64/bits/shm.h: New file. - -2000-06-28 Jes Sorensen - - * sysdeps/ieee754/dbl-64/s_exp2.c: Add include stdlib.h to get - prototype for abs(). - * sysdeps/ieee754/flt-32/s_exp2f.c: Likewise. - -2000-06-23 Andreas Jaeger - - * config.h.in: Don't use regparm with bounded pointers. - -2000-06-29 Ulrich Drepper - - * stdlib/grouping.h: Correctly handle multibyte thousands - separator and decimal point. - * stdlib/stdtod.c: Likewise. - * sysdeps/generic/strtol.c: Likewise. - - * locale/categories.def: Add entries for wide character decimal point - and thousands separator in numeric and monetary category. - -2000-06-28 Ulrich Drepper - - * stdio-common/printf_fp.c (__printf_fp): Remove unnecessary - second definition and initialization of decimal. - -2000-06-28 Greg McGary - - * libio/libio.h (struct _IO_cookie_file): Move struct type defintion - out. - (_IO_FILE): Declare chain as (struct _IO_FILE_plus *). - * libio/libioP.h (struct _IO_cookie_file): Move struct type defintion - in. - (_IO_JUMPS): Don't cast THIS--expect arg to be a - (struct _IO_FILE_plus *). - (_IO_JUMPS_FUNC): Express in terms of _IO_JUMPS, and add cast to - THIS, since _IO_JUMPS no longer does it implicitly. - (_IO_file_init, _IO_old_file_init, _IO_new_file_init): Declare - arg type as (struct _IO_FILE_plus *). - (_IO_str_init_static, _IO_str_init_readonly): Declare 1st - arg as (_IO_strfile *). - * libio/strops.c (_IO_str_init_static, _IO_str_init_readonly): - Declare 1st arg as (_IO_strfile *). - * libio/fileops.c (_IO_new_file_init): Declare - arg type as (struct _IO_FILE_plus *). - * libio/oldfileops.c (_IO_old_file_init): Likewise. - * libio/genops.c (_IO_link_in, _IO_un_link): Likewise. - (_IO_flush_all, _IO_flush_all_linebuffered, _IO_unbuffer_write): - Declare iteration pointer as (struct _IO_FILE_plus *). - (_IO_iter_next, _IO_iter_file): _IO_ITER is now - (struct _IO_FILE_plus *). - * libio/stdfiles.c (_IO_list_all): Declare as (struct _IO_FILE_plus *). - * libio/oldstdfiles.c (_IO_list_all): Likewise. - (_IO_check_libio): Set user-visible handles to - (struct _IO_FILE_plus *). - * libio/stdio.c (stdin, stdout, stderr): Set user-visible handles - to (struct _IO_FILE_plus *). - - * libio/iofdopen.c (_IO_new_fdopen): Pass FILE handle pointer - whose high bound includes vtable to all functions that will use - vtable. For streambufs, pass pointer whose bounds include struct - _IO_strfile. - * libio/wgenops.c (_IO_wdefault_finish): Likewise. - * libio/oldiofdopen.c (_IO_old_fdopen): Likewise. - * libio/iofopen.c (_IO_new_fopen): Likewise. - * libio/oldiofopen.c (_IO_old_fopen): Likewise. - * libio/iofopen64.c (_IO_fopen64): Likewise. - * libio/iopopen.c (_IO_new_popen): Likewise. - * libio/oldiopopen.c (_IO_old_popen): Likewise. - * libio/memstream.c (open_memstream): Likewise. - * libio/iovsscanf.c (_IO_vsscanf): Likewise. - * libio/iovsprintf.c (_IO_vsprintf): Likewise. - * libio/iovdprintf.c (_IO_vdprintf): Likewise. - * libio/iofopncook.c (_IO_cookie_init): Likewise. - * libio/obprintf.c (_IO_obstack_vprintf): Likewise. - * libio/vasprintf.c (_IO_vasprintf): Likewise. - * libio/vsnprintf.c (_IO_vsnprintf): Likewise. - * libio/stdfiles.c (_IO_stdout_, _IO_stderr_): Likewise. - * libio/oldstdfiles.c (_IO_stdout_, _IO_stderr_): Likewise. - * stdlib/strfmon.c (__strfmon_l): Likewise. - * stdio-common/vfprintf.c (buffered_vfprintf): Likewise. - (vfprintf): Qualify computed-goto targets as unbounded. - -2000-06-28 Ulrich Drepper - - * stdio-common/vfscanf.c: Finally handle multibyte decimal point and - thousands separator correctly. - - * stdio-common/vfscanf.c: Use COMPILE_WSCANF not COMPILE_WPRINTF. - * stdio-common/vfwscanf.c: Likewise. - -2000-06-27 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/syscalls.list: Change argument - count into signatures for most calls. - -2000-06-28 Ulrich Drepper - - * sysdeps/unix/sysv/linux/ia64/getsysstats.c: Removed. We can use - the generic parser now. - -2000-06-28 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/bits/elfclass.h: Deleted. Hash - table entries are 32 bit on the ia64 (as specified by the ABI), - not 64 bit as on the Alpha. - - * shlib-versions: Bump ia64 soname to ld-linux-ia64.so.2 to mark - change of objects to use 32 bit hash table indices (see above). - -2000-06-28 Jes Sorensen - - * sysdeps/ieee754/dbl-64/e_exp.c: Add include stdlib.h to get - prototype for abs(). - -2000-06-28 Wolfram Gloger - - * malloc/malloc.c (chunk_alloc): If extension of the linear heap - fails, try mmap_chunk() as a last resort even though n_mmaps_max - may have been reached. - -2000-06-28 Ulrich Drepper - - * locale/programs/ld-collate.c (insert_weights): Handle - symbols in multi-character weights correctly. - - * wcsmbs/mbrtowc.c: Set flush to 1 for conversion function calls - depending on whether the input string is empty or not. - - * wcsmbs/mbrtowc.c: Calling function without input means clearing the - given state and not avoiding this by modifying a local object. - * wcsmbs/wcrtomb.c: Likewise. - - * iconv/skeleton.c: If no EMIT_SHIFT_TO_INIT is defined clear state - object since some incomplete characters might be in there. - - * iconvdata/euc-jp.c: In conversion to UCS4, handling invalid - sequences with first byte 0x8e correctly. - - * iconvdata/jis0208.h: Remove redundant test. - -2000-06-27 Ulrich Drepper - - * sysdeps/generic/initfini.c (SECTION): Remove trailing semicolon. - Add it where it is needed now. - - * locale/programs/ld-ctype.c (ctype_finish): Take all characters from - the input charset into account when generating the hash table. - (allocate_arrays): Correct setting default width. Not all empty slots - in the table are filled, only those not covert explicitly by the - locale description and in the charset. - - * wctype/towctrans.c (__towctrans): Be graceful and accept error - return values from the wctrans function. - - * stdio-common/vfscanf.c: Make sure to always return WEOF and EOF for - wide character version. - For %C handling, test correct pointer variable for NULL. - - * wcsmbs/wctob.c: Handle WEOF special. - - * wcsmbs/wcwidth.h: 0xff in width array means invalid character. - - * wctype/wctype.h: Protect gcc-isms with __extension__. Avoid - always-true test to avoid warning. - -2000-06-27 Greg McGary - - * elf/dl-open.c (_dl_sysdep_start): Wrap weak_extern decl in BP_SYM (). - * include/libc-symbols.h (weak_extern): Add extra level of expansion. - (symbol_version, default_symbol_version): Factor redundant - definitions out of conditional. - -2000-06-27 Jakub Jelinek - - * libio/obprintf.c (_IO_obstack_vprintf): Call obstack_make_room, - not obstack_blank. - -2000-06-26 Ulrich Drepper - - * include/libc-symbols.h (symbol_version): Add extra level of - macro expansion. - (default_symbol_version): Likewise. - -2000-06-26 Greg McGary - - * sysdeps/unix/i386/sysdep.S (syscall_error): Push & pop space - for BP return value & push implicit struct-return pointer to - __errno_location. - * sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise. - (SYSCALL_ERROR_HANDLER): Likewise. - * sysdeps/unix/sysv/linux/i386/i686/sysdep.h - (SYSCALL_ERROR_HANDLER): Likewise. - - * Makeconfig: Add missing comment. - * csu/Makefile (extra-objs, omit-deps, install-lib): Add - BP-flavored startup object. - ($(objpfx)b$(start-installed-name)): New rule. - * include/libc-symbols.h (symbol_set_declare): Change type - of `__start_##set' and `__stop_##set' to pointer-to-function. - (symbol_set_declare): Change type of `set' to array of - pointer-to-function. - * include/set-hooks.h (RUN_HOOK): Change type of `ptr' to - pointer-to-function. - - * string/bits/string2.h: Inhibit inlines if __BOUNDED_POINTERS__. - - * sysdeps/unix/sysv/linux/syscalls.list: Add missing signatures. - Remove clock_* and timer_* entries. - * sysdeps/unix/sysv/linux/powerpc/syscalls.list: Replace - arg-count with signatures. - - * sysdeps/i386/add_n.S: Wrap entry-point symbol in BP_SYM (). - Check bounds of arguments. - * sysdeps/i386/addmul_1.S: Likewise. - * sysdeps/i386/lshift.S: Likewise. - * sysdeps/i386/mul_1.S: Likewise. - * sysdeps/i386/rshift.S: Likewise. - * sysdeps/i386/sub_n.S: Likewise. - * sysdeps/i386/submul_1.S: Likewise. - * sysdeps/i386/i586/add_n.S: Likewise. - * sysdeps/i386/i586/addmul_1.S: Likewise. - * sysdeps/i386/i586/lshift.S: Likewise. - * sysdeps/i386/i586/rshift.S: Likewise. - * sysdeps/i386/i586/sub_n.S: Likewise. - * sysdeps/i386/i686/add_n.S: Likewise. - - * sysdeps/i386/memchr.S: Likewise. - * sysdeps/i386/memcmp.S: Likewise. - * sysdeps/i386/rawmemchr.S: Likewise. - * sysdeps/i386/i586/bzero.S: Likewise. - * sysdeps/i386/i586/memcpy.S: Likewise. - * sysdeps/i386/i586/mempcpy.S: Likewise. - * sysdeps/i386/i586/memset.S: Likewise. - * sysdeps/i386/i686/bzero.S: Likewise. - * sysdeps/i386/i686/memcpy.S: Likewise. - * sysdeps/i386/i686/mempcpy.S: Likewise. - * sysdeps/i386/i686/memset.S: Likewise. - - * sysdeps/i386/stpcpy.S: Likewise. - * sysdeps/i386/stpncpy.S: Likewise. - * sysdeps/i386/strchr.S: Likewise. - * sysdeps/i386/strchrnul.S: Likewise. - * sysdeps/i386/strcspn.S: Likewise. - * sysdeps/i386/strpbrk.S: Likewise. - * sysdeps/i386/strrchr.S: Likewise. - * sysdeps/i386/strspn.S: Likewise. - * sysdeps/i386/strtok.S: Likewise. - * sysdeps/i386/strtok_r.S: Likewise. - * sysdeps/i386/i486/strcat.S: Likewise. - * sysdeps/i386/i486/strlen.S: Likewise. - * sysdeps/i386/i586/strchr.S: Likewise. - * sysdeps/i386/i586/strcpy.S: Likewise. - * sysdeps/i386/i586/strlen.S: Likewise. - * sysdeps/i386/i686/strcmp.S: Likewise. - * sysdeps/i386/i686/strtok.S: Likewise. - * sysdeps/i386/i686/strtok_r.S: Likewise. - - * sysdeps/i386/fpu/fegetenv.c: Wrap symbol names with BP_SYM (). - * sysdeps/i386/fpu/fesetenv.c: Likewise. - * sysdeps/i386/fpu/feupdateenv.c: Likewise. - * sysdeps/i386/fpu/fgetexcptflg.c: Likewise. - * sysdeps/i386/fpu/fsetexcptflg.c: Likewise. - - * sysdeps/i386/addmul_1.S: Exchange roles of %ebp and %ebx. - * sysdeps/i386/mul_1.S: Likewise. - * sysdeps/i386/submul_1.S: Likewise. - * sysdeps/i386/i586/add_n.S: Likewise. - * sysdeps/i386/i586/addmul_1.S: Likewise. - * sysdeps/i386/i586/lshift.S: Likewise. - * sysdeps/i386/i586/mul_1.S: Likewise. - * sysdeps/i386/i586/rshift.S: Likewise. - * sysdeps/i386/i586/sub_n.S: Likewise. - * sysdeps/i386/i586/submul_1.S: Likewise. - -2000-06-26 Ulrich Drepper - - * rt/Makefile (librt-routines): Add clock_nanosleep. - * rt/Versions [GLIBC_2.2] (librt): Add clock_nanosleep. - * sysdeps/generic/clock_nanosleep.c: New file. - * sysdeps/unix/clock_nanosleep.c: New file. - * sysdeps/unix/i386/i586/clock_nanosleep.c: New file. - * time/time.h: Declare clock_nanosleep. - -2000-06-26 Greg McGary - - * sysdeps/i386/asm-syntax.h (R, MEM, MEM_DISP, MEM_INDEX, - INSN1, INSN2, TEXT, GLOBL): Remove macros. - (ALIGN): Cleanup surrounding conditionals. - - * sysdeps/i386/addmul_1.S: Replace asm-syntax macros with gas syntax. - Call ENTER/LEAVE macros. - * sysdeps/i386/mul_1.S: Replace asm-syntax macros with gas syntax. - * sysdeps/i386/submul_1.S: Likewise. - - * sysdeps/i386/i586/addmul_1.S: Replace asm-syntax macros with gas - syntax. Define & use symbolic argument stack offsets. Call - ENTER/LEAVE macros. - * sysdeps/i386/i586/mul_1.S: Likewise. - * sysdeps/i386/i586/submul_1.S: Likewise. - -2000-06-25 Greg McGary - - * sysdeps/i386/i586/memcpy.S: Redefine memcpy as mempcpy, - not as bcopy. - -2000-06-25 Ulrich Drepper - - * iconvdata/gen-8bit-gap-1.sh: Update for new charmap format. - * iconvdata/gen-8bit-gap.sh: Likewise. - * iconvdata/gen-8bit.sh: Likewise. - - * iconv/gconv_open.c (__gconv_open): Move comment to correct position. - - * locale/programs/ld-collate.c (collate_read): Don't actually read - the copy locale if we are ignoring the content. - - * locale/programs/ld-address.c (INT_STR_ELEM): Correct test for - unknown character. - - * locale/programs/ld-collate.c: Correct handling of different - collation sections. - * locale/programs/localedef.c (add_to_readlist): Take locale pointer - as extra parameter from which to copy category information. - Change all callers. - (load_locale): Likewise. - * locale/programs/localedef.h: Update prototypes of add_to_readlist - and load_locale. - * locale/programs/ld-ctype.c: Update call to add_to_readlist. - * locale/programs/locfile.h: Likewise. - * locale/programs/locfile-kw.gperf: Add entry for script. - * locale/programs/locfile-token.h: Add tok_script. - - * locale/programs/locale.c: Update copyright year. - * locale/programs/localedef.c: Likewise. - -2000-06-23 Thorsten Kukuk - - * sunrpc/xdr_rec.c (set_input_fragment): Fix PR libc/1549, patch from - Jens Moeller . - -2000-06-24 Ulrich Drepper - - * locale/programs/ld-name.c (name_finish): Add missing format - specifier to test for name_fmt. - - * locale/programs/ld-address.c (iso639): Correct length of string - elements. - (iso3166): Likewise. - - * sysdeps/unix/sysv/linux/i386/sys/elf.h (elf_fpxregset_t): Define. - - * sysdeps/unix/sysv/linux/i386/sys/user.h (struct user_fpxregs_struct): - Define. - - * elf/elf.h (NT_PRFPXREG): Define. - -2000-06-23 Ulrich Drepper - - * sysdeps/unix/sysv/linux/sys/ptrace.h (__ptrace_request): Define - PTRACE_GETFPXREGS and PTRACE_SETFPXREGS. - -2000-06-23 Andreas Schwab - - * sysdeps/unix/sysv/linux/m68k/syscalls.list: Replace arg-count - with signatures. - -2000-06-23 Andreas Jaeger - - * iconv/gconv_int.h (norm_add_slashes): Protect suffix expansion. - - * io/test-stat.c: Add copyright header, mention Maciej. - - * sysdeps/unix/sysv/linux/mips/sys/syscall.h (SYS_pivot_root, - SYS_mincore, SYS_madvise): Added. - - * sysdeps/unix/sysv/linux/mips/syscalls.list: Fix signature of - execve. - -2000-06-22 Ulrich Drepper - - * libio/Makefile (tests): Add tst-getwc and tst_putwc. - (CFLAGS-tst_putwc.c): New definition. - * libio/tst_getwc.c: New file. - * libio/tst_getwc.input: New file. - * libio/tst_putwc.c: New file. - - * include/string.h: Add prototype for __strdup. - -2000-06-22 Greg McGary - - * sysdeps/unix/syscalls.list (sys_mknod): Fix signatures. - * sysdeps/unix/inet/syscalls.list (accept, getpeername, getsockname): - Fix signatures. - -2000-06-23 Jes Sorensen - - * sysdeps/ia64/memcpy.S: Disable branch predict instruction. - -2000-06-22 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/bits/statfs.h: New file. - -2000-06-22 Jes Sorensen - - * shlib-versions: Bump so versions to 6.1 for libc and libm on the - ia64 to allow 2.2+ libraries to coexist with 2.1 ones. - -2000-06-22 Ulrich Drepper - - * io/sys/stat.h: Define S_TYPEISMQ, S_TYPEISSEM, and S_TYPEISSHM. - * sysdeps/generic/bits/stat.h: Define __S_TYPEISMQ, __S_TYPEISSEM, - and __S_TYPEISSHM. - * sysdeps/mach/hurd/bits/stat.h: Likewise. - * sysdeps/unix/bsd/bits/stat.h: Likewise. - * sysdeps/unix/bsd/osf/alpha/bits/stat.h: Likewise. - * sysdeps/unix/sysv/bits/stat.h: Likewise. - * sysdeps/unix/sysv/irix4/bits/stat.h: Likewise. - * sysdeps/unix/sysv/hpux/bits/stat.h: Likewise. - * sysdeps/unix/sysv/linux/alpha/bits/stat.h: Likewise. - * sysdeps/unix/sysv/linux/ia64/bits/stat.h: Likewise. - * sysdeps/unix/sysv/linux/bits/stat.h: Likewise. - * sysdeps/unix/sysv/linux/mips/bits/stat.h: Likewise. - * sysdeps/unix/sysv/sysv4/i386/bits/stat.h: Likewise. - * sysdeps/unix/sysv/sysv4/solaris2/bits/stat.h: Likewise. - * sysdeps/unix/sysv/aix/bits/stat.h: Likewise. - * manual/filesys.texi: Document S_TYPEISMQ, S_TYPEISSEM, and - S_TYPEISSHM. - -2000-06-22 Andreas Jaeger - - * sysdeps/unix/sysv/linux/mips/syscalls.list: Replace arg-count - with signatures. - - * elf/dl-reloc.c (_dl_relocate_object): Fix typos. - - * sysdeps/unix/sysv/linux/mips/syscalls.list: Fix sysctl entry. - -2000-06-21 Ulrich Drepper - - * iconv/gconv_trans.c: Move initialization of winbuf and winbufend - ahead. - -2000-06-21 Greg McGary - - * Makerules (elide-routines.*, elide-bp-thunks): - Define unconditionally. - -2000-06-21 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/Makefile: New file. - -2000-06-21 Andreas Jaeger - - * io/Makefile (tests): Add test-stat. - (CFLAGS-test-stat.c): New. - - * io/test-stat.c: New file from Maciej W. Rozycki - . - -2000-06-21 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/bits/resource.h: Reorder elements - in __rlimit_resource to make them match the kernel order. - rlim_t is always 64 bit, use __rlim64_t to declare it - unconditionally. - -2000-05-04 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/bits/resource.h: Undef - RLIM_INFINITY before defining it to avoid clash with kernel header - -2000-05-03 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/bits/resource.h: New file. - -2000-06-21 Ulrich Drepper - - * sysdeps/unix/sysv/linux/ia64/Versions: New file. - -2000-06-21 Andreas Jaeger + * stdlib/rpmatch.c (rpmatch): Likewise. - * stdio-common/temptest.c: Include . - * stdio-common/tst-fileno.c: Likewise. - * stdio-common/scanf4.c: Likewise. - * stdio-common/scanf5.c: Likewise. + * setjmp/tst-setjmp.c: Make local functions static. + * setjmp/jmpbug.c: Likewise. + * signal/tst-signal.c: Likewise. + * stdio-common/tfformat.c: Likewise. + * string/tst-svc.c: Likewise. * time/clocktest.c: Likewise. - * posix/test-vfork.c: Likewise. - * posix/globtest.c: Likewise. - * io/test-utime.c: Likewise. - * wctype/test_wcfuncs.c: Likewise. - * crypt/cert.c: Likewise. - - * stdio-common/tst-printfsz.c: Include . - * libio/tst_swscanf.c: Likewise. - * libio/tst_wscanf.c: Likewise. + * time/tst-getdate.c: Likewise. + * dirent/list.c: Likewise. + * dirent/opendir-tst1.c: Likewise. * posix/runtests.c: Likewise. * posix/tst-getaddrinfo.c: Likewise. + * posix/tst-chmod.c: Likewise. * posix/wordexp-test.c: Likewise. * misc/tst-efgcvt.c: Likewise. + * timezone/tst-timezone.c: Likewise. + * rt/tst-clock.c: Likewise. + * rt/tst-shm.c: Likewise. + * rt/tst-aio2.c: Likewise. + * rt/tst-aio3.c: Likewise. + * rt/tst-aio4.c: Likewise. + * rt/tst-aio5.c: Likewise. - * stdlib/tst-xpg-basename.c: Include and . - * nss/test-netdb.c: Likewise. - - * sysdeps/unix/sysv/linux/configure.in: Add check for minimal - supported kernel for MIPS. - - * elf/vismod2.c: Include for abort prototype. - * rt/aio_suspend.c: Likewise. - -2000-06-20 Ulrich Drepper - - * math/libm-test.inc: Include . - -2000-06-20 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/syscalls.list: New file. - -2000-06-20 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/machine-gmon.h: New file. - * sysdeps/unix/sysv/linux/ia64/profil-counter.h: New file. - -2000-06-20 David Mosberger-Tang - - * sysdeps/unix/sysv/linux/ia64/getpagesize.c: New file. - -2000-06-20 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/sys/ucontext.h: Fix typo. - -2000-06-20 Ulrich Drepper - - * locale/programs/ld-collate.c (insert_value): Now take string and - length instead of struct token* parameter. Adjust use of token. - (handle_ellipsis): Likewise. - (collate_read): Allow names and transform them into names - to be passed to insert_value and handle_ellipsis. - - * locale/programs/ld-ctype.c (uninames): New array with names of - digits in format. - (ctype_finish): Correct search for space character value. Likewise - for default outdigits values. - -2000-06-20 Greg McGary - - * Makerules (objects): Add BP thunks. - -2000-06-20 Ulrich Drepper - - * locale/programs/charmap.c (parse_charmap): Handle UCS names also - in width definitions. - -2000-06-20 Andreas Jaeger - - * sysdeps/mips/fpu/libm-test-ulps: New file. - - * sysdeps/mips/fpu/fesetenv.c (__fesetenv): Flush fpu pipeline - first. - - * sysdeps/mips/fpu/feholdexcpt.c: New file. - - * sysdeps/mips/fpu/fraiseexcpt.c: New file. - -2000-06-19 Ulrich Drepper - - * iconv/gconv_builtin.c (BUILTIN_TRANSFORMATION): Update for - change in gconv_builtin.h. - - * malloc/Makefile: Change all references to memprof into memusage. - * malloc/memprof.c: Rename to... - * malloc/memusage.c: ...this. New file. - * malloc/memprof.sh: Rename to... - * malloc/memusage.sh: ...this. New file. - * malloc/memprofstat.c: Rename to... - * malloc/memusagestat.c: ...this. New file. - * sysdeps/alpha/memprof.h: Rename to.. - * sysdeps/alpha/memusage.h: ...this. New file. - * sysdeps/arm/memprof.h: Rename to.. - * sysdeps/arm/memusage.h: ...this. New file. - * sysdeps/generic/memprof.h: Rename to.. - * sysdeps/generic/memusage.h: ...this. New file. - * sysdeps/i386/memprof.h: Rename to.. - * sysdeps/i386/memusage.h: ...this. New file. - * sysdeps/ia64/memprof.h: Rename to.. - * sysdeps/ia64/memusage.h: ...this. New file. - * sysdeps/m68k/memprof.h: Rename to.. - * sysdeps/m68k/memusage.h: ...this. New file. - * sysdeps/mips/memprof.h: Rename to.. - * sysdeps/mips/memusage.h: ...this. New file. - * sysdeps/powerpc/memprof.h: Rename to.. - * sysdeps/powerpc/memusage.h: ...this. New file. - * sysdeps/sparc/memprof.h: Rename to.. - * sysdeps/sparc/memusage.h: ...this. New file. - * sysdeps/sh/memprof.h: Rename to.. - * sysdeps/sh/memusage.h: ...this. New file. - - * elf/sprof.c (print_version): Update year. - - * elf/sprof.c (load_shobj): Don't always add load address to dynamic - table entry values. Use D_PTR. - * elf/dl-reloc.c (_dl_relocate_object): Don't start profiling weird - binaries without PLT. Patches by James Mathiesen . - -2000-06-20 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/Makefile: New file. - * sysdeps/unix/sysv/linux/ia64/sys/io.h: New file. - * sysdeps/unix/sysv/linux/ia64/sys/procfs.h: New file. - * sysdeps/unix/sysv/linux/ia64/sys/ucontext.h: New file. - -2000-05-05 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/bits/fcntl.h: New file. - -2000-06-16 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/xstat.c: New file. - * sysdeps/unix/sysv/linux/ia64/fxstat.c: New file. - * sysdeps/unix/sysv/linux/ia64/lxstat.c: New file. - - * sysdeps/unix/sysv/linux/ia64/xstatconv.c: Deleted. - - * sysdeps/unix/sysv/linux/ia64/bits/stat.h: Update after latest - kernel change. - - * sysdeps/unix/sysv/linux/ia64/bits/types.h: Make __ino_t, - __nlink_t and __blkcnt_t 64 bit to accomodate new kernel stat data - structure. - Change __fsblkcnt_t and __fsfilcnt_t to 64 bit to match kernel - implementation. - -2000-06-15 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/kernel_stat.h: Deleted. - -2000-06-08 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/mmap64.c: New file. - -2000-06-19 Ulrich Drepper - - * iconv/gconv_int.h (strict gconv_module): Remove all members - associated with regular expressions. Use a simple string as the - from name. - * iconv/gconv_db.c: Remove code handling regular expressions. - * iconv/gconv_conf.c: Likewise. - * iconv/iconv_prog.c: Likewise. - * iconv/gconv_builtin.h: Adjust for change in gconv_conf.c. - - * iconv/gconv.h (__gconv_trans_fct): Add new parameter. - General namespace cleanup. - (struct __gconv_trans_data): Add next field. - (struct __gconv_step_data): Make __trans a pointer. - * iconv/gconv_conf.c: Split out code to find gconv directories from - __gconv_read_conf in new functions. - * iconv/gconv_int.h: Define new data structure and declare new - functions for handling of gconv directory list. - * iconv/gconv_open.c: Allow more than one error handling step being - used. Call function to load error handling module if it is none - of the builtin transformations. - * iconv/gconv_close.c: Add code to free transliteration data. - * iconv/gconv_trans.c: Add functions to load and unload modules - implementing transliteration etc. - * iconv/skeleton.c: Call all context functions now that more than - one module is allowed. - * iconv/loop.c (STANDARD_ERR_HANDLING): New macro. - * iconv/gconv_simple.c: Use STANDARD_ERR_HANDLING macro for places - where the full error handling using transliteration is needed. - * iconvdata/8bit-gap.c: Likewise. - * iconvdata/8bit-generic.c: Likewise. - * iconvdata/ansi_x3.110.c: Likewise. - * iconvdata/big5.c: Likewise. - * iconvdata/big5hkscs.c: Likewise. - * iconvdata/euc-cn.c: Likewise. - * iconvdata/euc-jp.c: Likewise. - * iconvdata/euc-kr.c: Likewise. - * iconvdata/euc-tw.c: Likewise. - * iconvdata/gbgbk.c: Likewise. - * iconvdata/gbk.c: Likewise. - * iconvdata/iso-2022-cn.c: Likewise. - * iconvdata/iso-2022-jp.c: Likewise. - * iconvdata/iso-2022-kr.c: Likewise. - * iconvdata/iso646.c: Likewise. - * iconvdata/iso8859-1.c: Likewise. - * iconvdata/iso_6937-2.c: Likewise. - * iconvdata/iso_6937.c: Likewise. - * iconvdata/johab.c: Likewise. - * iconvdata/sjis.c: Likewise. - * iconvdata/t.61.c: Likewise. - * iconvdata/uhc.c: Likewise. - * iconvdata/unicode.c: Likewise. - * iconvdata/utf-16.c: Likewise. - * libio/iofwide.c: Reset __trans member of __gconv_trans_data - structure correctly after last change. - * wcsmbs/btowc.c: Likewise. - * wcsmbs/mbrtowc.c: Likewise. - * wcsmbs/mbsnrtowcs.c: Likewise. - * wcsmbs/mbsrtowcs.c: Likewise. - * wcsmbs/wcrtomb.c: Likewise. - * wcsmbs/wcsnrtombs.c: Likewise. - * wcsmbs/wcsrtombs.c: Likewise. - * wcsmbs/wctob.c: Likewise. - - * localedata/Makefile: Set -Wno-format for some files since gcc does - not know all the format specifiers. - -2000-06-18 Ulrich Drepper - - * locale/loadlocale.c (_nl_unload_locale): Remove a bit of - unneeded code. - * locale/lc-time.c (_nl_init_era_entries): Likewise. - -2000-06-18 Andreas Jaeger - - * sysdeps/mips/dl-machine.h: Always use $25 as jump register. - Patch by Ralf Baechle . - -2000-06-17 Ulrich Drepper - - * sysdeps/unix/sysv/linux/alpha/fpathconf.c: Define and use - LINUX_LINK_MAX. - * sysdeps/unix/sysv/linux/alpha/pathconf.c: Likewise. - - * locale/programs/ld-ctype.c (ctype_output): Really write out - mboutdigits information. - * localedata/tst-trans.c: Add code to test printf's I flag with locale. - * localedata/tst-trans.sh: Set GCONV_PATH for compilation environment. - * localedata/tests/trans.def: Add outdigit information. - - * localedata/tst-mbswcs3.c: Remove comment. - - * stdio-common/vfprintf.c (vfprintf): Fix handling of I flag. - * stdio-common/tiformat.c (sprint_ints): Add tests for I flag. - * libio/tst_wprintf.c (main): Add test for I flag. - - * iconv/gconv_trans.c: Implement handling if translit_ignore. - * locale/langinfo.h: Add entries for translit_ignore information. - * locale/categories.def: Add entries for new LC_CTYPE elements. - * locale/C-ctype.c: Add initializers for new fields. Use NULL - pointer instead of "" where possible. - * locale/programs/ld-ctype.c: Write out translit_ignore information. - * intl/Depend: Add localedata. - * intl/tst-gettext.c: Call setlocale for LC_CTYPE. - * intl/tst-gettext.sh: Set LOCPATH to localedata build dir. - -2000-06-16 Ulrich Drepper - - * locale/langinfo.h: Add entries for default_missing information. - * locale/C-ctype.c: Add initializers for new fields. - * iconv/gconv_trans.c: If nothing matched, try to use default_missing - information. - * locale/categories.h: Add entries for all LC_CTYPE values. - * locale/programs/ld-ctype.c (ctype_output): Write out default_missing - information. - - * localedata/tst-trans.c: Write out an error message if class is - not found. - - * iconv/gconv_int.h (norm_add_slashes): Optionally add given suffix. - * iconv/gconv_open.c: Remove error handling specification from `from' - character set name. - * intl/loadmsgcat.c (_nl_load_domain): Call norm_add_slashes with - new parameter to always enable transliteration. - * locale/localeinfo.h (LIMAGIC): Bump number because of incompatible - change. - (struct locale_data): Add new members use_translit and options. - * locale/findlocale.c (_nl_find_locale): Set use_translit flag is - character set name contained modifier TRANSLIT. - * locale/loadlocale.c (_nl_load_locale): Initialize new use_translit - and options fields. - (_nl_unload_locale): Free options string if necessary. - * wcsmbs/wcsmbsload.c (__wcsmbs_load_conv): Enable translation if - the locale names suggested this. - * locale/C-address.c: Add two new initialilzers to adjust data - structure for new format. - * locale/C-collate.c: Likewise. - * locale/C-ctype.c: Likewise. - * locale/C-identification.c: Likewise. - * locale/C-measurement.c: Likewise. - * locale/C-messages.c: Likewise. - * locale/C-monetary.c: Likewise. - * locale/C-name.c: Likewise. - * locale/C-numeric.c: Likewise. - * locale/C-paper.c: Likewise. - * locale/C-telephone.c: Likewise. - * locale/C-time.c: Likewise. - - * locale/setlocale.c: Add some more __builtin_expect. - -2000-06-15 Ulrich Drepper - - * iconv/gconv.h (__gconv_fct): Change type of fifth parameter to - unsigned char **. - (__gconv_init_fct): Remove two parameters. - * iconv/gconv_int.h (__gconv_transliterate): Renamed from - gconv_transliterate. Remove two parameters. - Change prototypes of builtin functions according to __gconv_fct change. - * iconv/skeleton.c: Change type of fifth parameter. make sure it is - != NULL only during error handling. Stop in this case after the - conversion. - * iconv/gconv_trans.c: Replace with real implementation for - __gconv_transliterate. - * iconv/gconv_open.c: Adjust for renaming of __gconv_transliterate. - * iconv/gconv.c: Change calls to downstream functions once again. - Use NULL for the fifth parameter instead of pointer to output buffer. - * libio/iofwide.c: Likewise. - * wcsmbs/btowc.c: Likewise. - * wcsmbs/mbrtowc.c: Likewise. - * wcsmbs/mbsnrtowcs.c: Likewise. - * wcsmbs/mbsrtowcs.c: Likewise. - * wcsmbs/wcrtomb.c: Likewise. - * wcsmbs/wcsnrtombs.c: Likewise. - * wcsmbs/wcsrtombs.c: Likewise. - * wcsmbs/wctob.c: Likewise. - * iconv/gconv_simple.c: Remove two parameters from error handling - function call. - * iconvdata/8bit-gap.c: Likewise. - * iconvdata/8bit-generic.c: Likewise. - * iconvdata/ansi_x3.110.c: Likewise. - * iconvdata/big5.c: Likewise. - * iconvdata/big5hkscs.c: Likewise. - * iconvdata/euc-cn.c: Likewise. - * iconvdata/euc-jp.c: Likewise. - * iconvdata/euc-kr.c: Likewise. - * iconvdata/euc-tw.c: Likewise. - * iconvdata/gbgbk.c: Likewise. - * iconvdata/gbk.c: Likewise. - * iconvdata/iso-2022-cn.c: Likewise. - * iconvdata/iso-2022-jp.c: Likewise. - * iconvdata/iso-2022-kr.c: Likewise. - * iconvdata/iso646.c: Likewise. - * iconvdata/iso8859-1.c: Likewise. - * iconvdata/iso_6937-2.c: Likewise. - * iconvdata/iso_6937.c: Likewise. - * iconvdata/johab.c: Likewise. - * iconvdata/sjis.c: Likewise. - * iconvdata/t.61.c: Likewise. - * iconvdata/uhc.c: Likewise. - * iconvdata/unicode.c: Likewise. - * iconvdata/utf-16.c: Likewise. - -2000-06-15 Greg McGary - - * sysdeps/unix/make-syscalls.sh: Strip leading whitespace from lhs - of callnum assignment. Tolerate callnum expressions containing - parens. - -2000-06-14 Ulrich Drepper - - * login/Makefile (utmpd): Remove rule to build utmpd. - - * csu/Versions: Move libgcc frame handling functions from here... - * sysdeps/unix/sysv/linux/alpha/Versions: ...to here... - * sysdeps/unix/sysv/linux/arm/Versions: ...to here... - * sysdeps/unix/sysv/linux/i386/Versions: ...to here... - * sysdeps/unix/sysv/linux/m68k/Versions: ...to here... - * sysdeps/unix/sysv/linux/powerpc/Versions: ...to here... - * sysdeps/unix/sysv/linux/sparc/sparc32/Versions: ...and here. - New file. - * sysdeps/mach/hurd/i386/Versions: ...and here. New file. - - * locale/programs/ld-ctype.c (allocate_arrays): Correct a comment. - - * misc/syslog.c (vsyslog): Initialize msgoff in all cases. - -2000-06-14 Kazumoto Kojima - - * sysdeps/sh/sh4/fpu/fclrexcpt.c: Remove definitions for backward - compatibility. - * sysdeps/sh/sh4/fpu/fegetenv.c: Likewise. - * sysdeps/sh/sh4/fpu/fesetenv.c: Likewise. - * sysdeps/sh/sh4/fpu/fraiseexcpt.c: Likewise. - * sysdeps/sh/sh4/fpu/fsetexcptflg.c: Likewise. - -2000-06-14 Jakub Jelinek - - * include/libc-symbols.h (link_warning): If HAVE_SECTION_QUOTES is - defined, terminate quotes and read them after the comment char. - * configure.in (HAVE_SECTION_QUOTES): Test whether - __attribute__((section ("x"))) puts quotes around x or not. - * config.h.in (HAVE_SECTION_QUOTES): Add. - * configure: Rebuilt. - -2000-06-14 Andreas Jaeger - - * sysdeps/unix/sysv/linux/configure.in: Set libc_cv_sysconfdir - depending on the configure option --sysconfdir. - Closes PR libc/1762. - Patch by Andreas Schwab . - - * sysdeps/mips/dl-machine.h: Pass finalizer correctly to user - entry point. - Reported by Jim Pick . - -2000-06-14 Ulrich Drepper - - * misc/syslog.c (vsyslog): Allow open_memstream to fail without - crashing the application. Emit some simple error message. - Reported by mju@panasas.com [PR libc/1769]. - -2000-06-13 Ulrich Drepper - - * malloc/Makefile (distribute): Add memprof.sh and memprofstat.c. - - * crypt/Makefile (distribute): Add md5.h. - - * Makefile (distribute): Add include/shlib-compat.h. - - * Make-dist: Search for tests also in sysdeps hierachy. - - * crypt/Makefile (distribute): Add ufc-crypt.h, crypt-private.h, - ufc.c, speeds.c, README.ufc-crypt, and Banner. - - * sysdeps/sparc/Subdirs: New file. - - * locale/Makefile (distribute): Add weightwc.h and - programs/localedef.h. - - * time/Makefile (distribute): Add datemsk. - - * sysdeps/ia64/Dist: Add softpipe.h. - - * sysdeps/unix/sysv/aix/Dist: New file. - - * posix/setpgrp.c: Moved to... - * sysdeps/generic/setpgrp.c: ...here. New file. - * io/mknod.c: Moved to... - * sysdeps/generic/mknod.c: ...here. New file. - - * sysdeps/unix/sysv/linux/ia64/Dist: New file. - - * sysdeps/unix/sysv/linux/sparc/Dist: Add sys/procfs.h. - - * sysdeps/unix/sysv/linux/arm/Dist: Add oldgetrlimit64.c. - - * sysdeps/powerpc/Dist: Add fprrest.S, fprsave.S, gprsave1.S, - gprsave0.S, gprrest1.S, and gprrest0.S. - - * sysdeps/generic/Dist: Add bp-thunks.h, bp-sym.h, and bp-start.h. - - * posix/Makefile (routines): Add spawnattr_getsigmask, - spawnattr_getschedpolicy, spawnattr_getschedparam, - spawnattr_setsigmask, spawnattr_setschedpolicy, and - spawnattr_setschedparam. - * posix/Versions: Add posix_spawnattr_getschedpolicy, - posix_spawnattr_setschedpolicy, posix_spawnattr_getschedparam, and - posix_spawnattr_setschedparam. - - * posix/spawnattr_setschedparam.c: Fix typo. - - * posix/spawnattr_setsigmask.c (posix_spawnattr_setsigmask): - Correct typo. - - * login/programs/utmpd.c: Removed. - * login/programs/utmpd.h: Removed. - * login/programs/utmpd-private.h: Removed. - - * Makefile (distribute): Add include/db_185.h and include/db.h. - - * iconvdata/Makefile (distribute): Add iso-ir-165.c and - iso-ir-165.h. - - * elf/Makefile (distribute): Add missing files. - - * dlfcn/Makefile: Add back rules to include eval in libdl.so. - * elf/eval.c: Moved to... - * dlfcn/eval.c: ...here. New file. - - * Makefile (distribute): Also distribute ChangeLog.1?. - - * Make-dist (+tsrcs): Remove .args handling here as well. - - * rt/Makefile (tests): Add tst-timer. - * sysdeps/generic/tst-timer.c: New file. - - * Makerules (sources): Don't add BP sources here. - - * login/Makefile (distribute): Remove xtmp.h. - - * iconv/iconv_prog.c (main): Fix appending slashes if omit_invalid - is true. Reported by Bruno Haible . - -2000-06-13 Andreas Jaeger - - * sysdeps/mips/elf/start.S (ENTRY_POINT): Remove mips64 defines. - Patch by Ralf Baechle . - -2000-06-13 Ulrich Drepper - - * sysdeps/unix/sysv/linux/syscalls.list: Add parameter information - for mincore syscall. - - * misc/sys/cdefs.h: Define __bounded and __unbounded if - __BOUNDED_POINTERS__ is not defined. - -2000-06-07 Greg McGary - - * sysdeps/generic/bp-sym.h: New file. - * sysdeps/generic/bp-start.h: New file. - * sysdeps/i386/elf/start.S: Designate BP symbols. - * sysdeps/generic/libc-start.c: Wrap bounds around - argv & envp and each of their string members. - -2000-06-07 Greg McGary - - * sysdeps/unix/make-syscalls.sh: Add comments to - output that aid debugging & comprehension. - Map simple syscall signatures to number of args. - Generate BP syscall thunk definitions. - * sysdeps/generic/bp-thunks.h: New file. - * sysdeps/unix/syscalls.list: Replace arg-count with - simple return+arg signature. - * sysdeps/unix/common/syscalls.list: Likewise. - * sysdeps/unix/inet/syscalls.list: Likewise. - * sysdeps/unix/mman/syscalls.list: Likewise. - * sysdeps/unix/sysv/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/syscalls.list: Likewise. - * sysdeps/unix/sysv/linux/i386/syscalls.list: Likewise. - -2000-06-07 Greg McGary - - * Makeconfig (CPPFLAGS-.ob): Pass -fbounded-pointers - for all files *.[cS]. - (CFLAGS-.ob): Don't optimize sibling calls. - (bppfx): New variable. - * Makerules (elide-bp-thunks): New variable. - (elide-routines.*): Elide BP-* files for all but *.ob. - (sources): Include bp-thunks. - -2000-06-12 Ulrich Drepper - - * iconv/gconv_simple.c: Remove unnecessary prototype. - - * iconv/gconv_trans.c: Pretty print. - - * elf/elf.h (R_SH_NUM): Got accidently dropped. - - * sysdeps/unix/sysv/linux/configure.in: Improve handling of - minimal kernel versions. Add information about IA-64 kernel. - - * sysdeps/unix/sysv/linux/configure.in: Allow architecture - specific minimal supported kernel versions to be specified. - - * libio/iofwide.c (_IO_fwide): Initialize transliteration part of - step data structure. - * wcsmbs/btowc.c: Likewise. - * wcsmbs/mbrtowc.c: Likewise. - * wcsmbs/mbsnrtowcs.c: Likewise. - * wcsmbs/mbsrtowcs.c: Likewise. - * wcsmbs/wcrtomb.c: Likewise. - * wcsmbs/wcsnrtombs.c: Likewise. - * wcsmbs/wcsrtombs.c: Likewise. - * wcsmbs/wctob.c: Likewise. - - * sysdeps/unix/sysv/linux/sh/Dist: There is no ioperm file. - * sysdeps/unix/sysv/linux/sh/oldgetrlimit64.c: Removed. - - * shlib-versions: Earliest backward compatible version for SH is 2.2. - - * misc/sys/cdefs.h: Remove one more __P. - - * sysvipc/sys/shm.h: Move __getpagesize declaration inside extern C. - Reported by HJ Lu. - - * sysdeps/sh/sh3/bits/setjmp.h: Removed. - * sysdeps/sh/sh4/bits/setjmp.h: Moved to... - * sysdeps/sh/bits/setjmp.h: ...here. New file. - -2000-06-12 Kazumoto Kojima - Yutaka Niibe - - * configure.in: Add machine sh3, sh4. - * elf/elf.h: Add SH specific declarations of relocations. - * shlib-versions: Add sh*-*-linux* cases. - -2000-06-12 Ulrich Drepper - - * sysdeps/sh/sh3/bsd-_setjmp.S: Move to... - * sysdeps/sh/bsd-_setjmp.S: ...here. New file. - * sysdeps/sh/sh4/bsd-_setjmp.S: Removed. - * sysdeps/sh/sh3/bsd-setjmp.S: Move to... - * sysdeps/sh/bsd-setjmp.S: ...here. New file. - * sysdeps/sh/sh4/bsd-setjmp.S: Removed. - - * sysdeps/sh/dl-machine.h (FGR_SAVE): Protect using HAVE_FPU macro - instead of KERNEL_MATH_EMULATION. - * sysdeps/sh/sh4/dl-machine.h: Define HAVE_FPU not - KERNEL_MATH_EMULATION. - - * sysdeps/sh/Dist: Removed. There is no ieee754.h file. - * sysdeps/sh/sh3/dl-machine.h: Moved to... - * sysdeps/sh/dl-machine.h: ...here. New file. - * sysdeps/sh/sh4/dl-machine.h: Simply define KERNEL_MATH_EMULATION - and include generic SH version. - * sysdeps/sh/sh3/bits/endian.h: Move to... - * sysdeps/sh/bits/endian.h: ...here. New file. - * sysdeps/sh/sh4/bits/endian.h: Removed. - * sysdeps/sh/sh3/bits/huge_val.h: Move to... - * sysdeps/sh/bits/huge_val.h: ...here. New file. - * sysdeps/sh/sh4/bits/huge_val.h: Removed. - - * include/libc-symbols.h (link_warning): Work around a change in - GAS which warns about changing section attributes. - Proposed by Nick Clifton . - -2000-06-12 H.J. Lu - - * sysdeps/i386/fpu/bits/mathinline.h (__sgn1l): Add __extension__. - -2000-06-11 H.J. Lu - - * sysdeps/i386/fpu/Versions: New file. - -2000-06-12 Ulrich Drepper - - * iconv/gconv.h (__gconv_trans_context_fct): Remove two - parameters. - * iconv/skeleton.c (FUNCTION_NAME): Call __trans_context_fct if it - exists. - -2000-06-12 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/kernel_stat.h: New file. - * sysdeps/unix/sysv/linux/ia64/xstatconv.c: New file. - * sysdeps/unix/sysv/linux/ia64/bits/stat.h: New file. - - * sysdeps/unix/sysv/linux/ia64/fxstat64.c: New file. - * sysdeps/unix/sysv/linux/ia64/lxstat64.c: New file. - * sysdeps/unix/sysv/linux/ia64/xstat64.c: New file. - -2000-06-12 Kazumoto Kojima - Yutaka Niibe - - * sysdeps/sh/Dist: New file. - * sysdeps/sh/Implies: New file. - * sysdeps/sh/elf/initfini.c: New file. - * sysdeps/sh/gmp-mparam.h: New file. - * sysdeps/sh/init-first.c: New file. - * sysdeps/sh/machine-gmon.h: New file. - * sysdeps/sh/memcpy.S: New file. - * sysdeps/sh/memprof.h: New file. - * sysdeps/sh/memset.S: New file. - * sysdeps/sh/sh3/__longjmp.S: New file. - * sysdeps/sh/sh3/bits/endian.h: New file. - * sysdeps/sh/sh3/bits/huge_val.h: New file. - * sysdeps/sh/sh3/bits/setjmp.h: New file. - * sysdeps/sh/sh3/bsd-_setjmp.S: New file. - * sysdeps/sh/sh3/bsd-setjmp.S: New file. - * sysdeps/sh/sh3/dl-machine.h: New file. - * sysdeps/sh/sh3/setjmp.S: New file. - * sysdeps/sh/sh4/__longjmp.S: New file. - * sysdeps/sh/sh4/bits/endian.h: New file. - * sysdeps/sh/sh4/bits/huge_val.h: New file. - * sysdeps/sh/sh4/bits/setjmp.h: New file. - * sysdeps/sh/sh4/bsd-_setjmp.S: New file. - * sysdeps/sh/sh4/bsd-setjmp.S: New file. - * sysdeps/sh/sh4/dl-machine.h: New file. - * sysdeps/sh/sh4/fpu/bits/fenv.h: New file. - * sysdeps/sh/sh4/fpu/bits/huge_val.h: New file. - * sysdeps/sh/sh4/fpu/bits/mathdef.h: New file. - * sysdeps/sh/sh4/fpu/fclrexcpt.c: New file. - * sysdeps/sh/sh4/fpu/fegetenv.c: New file. - * sysdeps/sh/sh4/fpu/fegetround.c: New file. - * sysdeps/sh/sh4/fpu/feholdexcpt.c: New file. - * sysdeps/sh/sh4/fpu/fesetenv.c: New file. - * sysdeps/sh/sh4/fpu/fesetround.c: New file. - * sysdeps/sh/sh4/fpu/fpu_control.h: New file. - * sysdeps/sh/sh4/fpu/fraiseexcpt.c: New file. - * sysdeps/sh/sh4/fpu/fsetexcptflg.c: New file. - * sysdeps/sh/sh4/fpu/ftestexcept.c: New file. - * sysdeps/sh/sh4/fpu/libm-test-ulps: New file. - * sysdeps/sh/sh4/setjmp.S: New file. - * sysdeps/sh/elf/start.S: New file. - * sysdeps/sh/sys/ucontext.h: New file. - * sysdeps/sh/strlen.S: New file. - * sysdeps/sh/sysdep.h: New file. - * sysdeps/unix/sh/sysdep.S: New file. - * sysdeps/unix/sh/sysdep.h: New file. - * sysdeps/unix/sysv/linux/sh/Dist: New file. - * sysdeps/unix/sysv/linux/sh/Makefile: New file. - * sysdeps/unix/sysv/linux/sh/Versions: New file. - * sysdeps/unix/sysv/linux/sh/bits/mman.h: New file. - * sysdeps/unix/sysv/linux/sh/bits/resource.h: New file. - * sysdeps/unix/sysv/linux/sh/brk.c: New file. - * sysdeps/unix/sysv/linux/sh/chown.c: New file. - * sysdeps/unix/sysv/linux/sh/clone.S: New file. - * sysdeps/unix/sysv/linux/sh/fchown.c: New file. - * sysdeps/unix/sysv/linux/sh/fxstat.c: New file. - * sysdeps/unix/sysv/linux/sh/getegid.c: New file. - * sysdeps/unix/sysv/linux/sh/geteuid.c: New file. - * sysdeps/unix/sysv/linux/sh/getgroups.c: New file. - * sysdeps/unix/sysv/linux/sh/getresgid.c: New file. - * sysdeps/unix/sysv/linux/sh/getresuid.c: New file. - * sysdeps/unix/sysv/linux/sh/getrlimit.c: New file. - * sysdeps/unix/sysv/linux/sh/getrlimit64.c: New file. - * sysdeps/unix/sysv/linux/sh/getuid.c: New file. - * sysdeps/unix/sysv/linux/sh/lchown.c: New file. - * sysdeps/unix/sysv/linux/sh/lxstat.c: New file. - * sysdeps/unix/sysv/linux/sh/msgctl.c: New file. - * sysdeps/unix/sysv/linux/sh/oldgetrlimit64.c: New file. - * sysdeps/unix/sysv/linux/sh/pipe.S: New file. - * sysdeps/unix/sysv/linux/sh/profil-counter.h: New file. - * sysdeps/unix/sysv/linux/sh/semctl.c: New file. - * sysdeps/unix/sysv/linux/sh/setegid.c: New file. - * sysdeps/unix/sysv/linux/sh/seteuid.c: New file. - * sysdeps/unix/sysv/linux/sh/setfsgid.c: New file. - * sysdeps/unix/sysv/linux/sh/setfsuid.c: New file. - * sysdeps/unix/sysv/linux/sh/setgid.c: New file. - * sysdeps/unix/sysv/linux/sh/setgroups.c: New file. - * sysdeps/unix/sysv/linux/sh/setregid.c: New file. - * sysdeps/unix/sysv/linux/sh/setresgid.c: New file. - * sysdeps/unix/sysv/linux/sh/setresuid.c: New file. - * sysdeps/unix/sysv/linux/sh/setreuid.c: New file. - * sysdeps/unix/sysv/linux/sh/setrlimit.c: New file. - * sysdeps/unix/sysv/linux/sh/setuid.c: New file. - * sysdeps/unix/sysv/linux/sh/sh3/register-dump.h: New file. - * sysdeps/unix/sysv/linux/sh/sh4/register-dump.h: New file. - * sysdeps/unix/sysv/linux/sh/shmctl.c: New file. - * sysdeps/unix/sysv/linux/sh/sigcontextinfo.h: New file. - * sysdeps/unix/sysv/linux/sh/socket.S: New file. - * sysdeps/unix/sysv/linux/sh/sys/io.h: New file. - * sysdeps/unix/sysv/linux/sh/sys/ucontext.h: New file. - * sysdeps/unix/sysv/linux/sh/sys/user.h: New file. - * sysdeps/unix/sysv/linux/sh/syscalls.list: New file. - * sysdeps/unix/sysv/linux/sh/sysdep.S: New file. - * sysdeps/unix/sysv/linux/sh/sysdep.h: New file. - * sysdeps/unix/sysv/linux/sh/vfork.S: New file. - * sysdeps/unix/sysv/linux/sh/xstat.c: New file. - -2000-06-12 Ulrich Drepper - - * Rules (%.out): Define GCONV_PATH in the environment. - * assert/Depend: New file. - * iconvdata/Depend: New file. - * intl/Depend: New file. - * timezone/Makefile (build-testdata): Add GCONV_PATH to environment. - * intl/tst-gettext.sh: Likewise. - * iconv/Makefile (routines): Add gconv_trans. - * iconv/gconv_trans.c: New file. - * iconv/gconv.h (struct __gconv_trans_data): New type. - (__gconv_fct): New parameter with starting position in output buffer. - (__gconv_trans_fct, __gconv_trans_context_fct, __gconv_trans_query_fct, - __gconv_trans_init_fct, __gconv_trans_end_fct): New types. - (struct __gconv_step): Add new member __trans. - * iconv/gconv_int.h: Pretty print prototypes. - (gconv_transliterate): New prototype. - (__BUILTIN_TRANS): Update for new conversion function interface. - * iconv/gconv.c (__gconv): Pass new parameter to conversion function. - * iconv/gconv_open.c (__gconv_open): Recognize error handling suffix - in names, find appropriate function, and install in the conversion - steps it can be used. - * iconv/skeleton.c: Add additional parameter for beginning of output - buffer. Change calls of downstream functions. - * iconv/loop.c: Change loop function interface completely. Pass in - step and step_data structure. Remove optimization for BODY with - NEED_LENGTH_TEST == 0. - * iconv/gconv_simple.c: Update interfaces of functions. Insert - appropriate error handling code to use transliteration steps. Remove - optimization for BODY with NEED_LENGTH_TEST == 0. - * iconvdata/8bit-gap.c: Likewise. - * iconvdata/8bit-generic.c: Likewise. - * iconvdata/ansi_x3.110.c: Likewise. - * iconvdata/big5.c: Likewise. - * iconvdata/big5hkscs.c: Likewise. - * iconvdata/euc-cn.c: Likewise. - * iconvdata/euc-jp.c: Likewise. - * iconvdata/euc-kr.c: Likewise. - * iconvdata/euc-tw.c: Likewise. - * iconvdata/gbgbk.c: Likewise. - * iconvdata/gbk.c: Likewise. - * iconvdata/iso-2022-cn.c: Likewise. - * iconvdata/iso-2022-jp.c: Likewise. - * iconvdata/iso-2022-kr.c: Likewise. - * iconvdata/iso646.c: Likewise. - * iconvdata/iso8859-1.c: Likewise. - * iconvdata/iso_6937-2.c: Likewise. - * iconvdata/iso_6937.c: Likewise. - * iconvdata/johab.c: Likewise. - * iconvdata/sjis.c: Likewise. - * iconvdata/t.61.c: Likewise. - * iconvdata/uhc.c: Likewise. - * iconvdata/unicode.c: Likewise. - * iconvdata/utf-16.c: Likewise. - * libio/iofwide.c: Adjust to new interface of gconv functions. Use - DL_CALL_FCT. - * wcsmbs/btowc.c: Likewise. - * wcsmbs/mbrtowc.c: Likewise. - * wcsmbs/mbsnrtowcs.c: Likewise. - * wcsmbs/mbsrtowcs.c: Likewise. - * wcsmbs/wcrtomb.c: Likewise. - * wcsmbs/wcsnrtombs.c: Likewise. - * wcsmbs/wcsrtombs.c: Likewise. - * wcsmbs/wctob.c: Likewise. - -2000-04-11 Geoff Keating - - * sysdeps/powerpc/dl-machine.c: Include dl-machine.h after the - other header files. Mention about 128-byte cache line sizes. - (__elf_machine_fixup_plt): Make types match elf_machine_fixup_plt. - * sysdeps/powerpc/dl-machine.h (elf_machine_fixup_plt): Update - for current calling sequence. - * sysdeps/powerpc/dl-start.S (_dl_start_user): Close comment. - - * sysdeps/powerpc/fpu/s_rint.c: Handle rounding to -0 correctly. - * sysdeps/powerpc/fpu/s_rintf.c: Likewise. - - * sysdeps/unix/sysv/linux/powerpc/syscalls.list: Add getrlimit - and setrlimit syscalls for backwards compatibility. - -2000-06-10 Ulrich Drepper - - * iconv/skeleton.c: Rename converted written to correcter name - irreversible. - * iconv/gconv.c: Rename converted variable to correcter name - irreversible. - * iconv/gconv_int.h: Likewise. - * iconv/gconv_simple.c: Likewise. - * iconv/iconv.c: Likewise. - * iconv/loop.c: Likewise. - * iconvdata/8bit-gap.c: Likewise. - * iconvdata/8bit-generic.c: Likewise. - * iconvdata/ansi_x3.110.c: Likewise. - * iconvdata/big5.c: Likewise. - * iconvdata/big5hkscs.c: Likewise. - * iconvdata/euc-cn.c: Likewise. - * iconvdata/euc-jp.c: Likewise. - * iconvdata/euc-kr.c: Likewise. - * iconvdata/gbgbk.c: Likewise. - * iconvdata/gbk.c: Likewise. - * iconvdata/iso-2022-cn.c: Likewise. - * iconvdata/iso-2022-jp.c: Likewise. - * iconvdata/iso-2022-kr.c: Likewise. - * iconvdata/iso646.c: Likewise. - * iconvdata/iso8859-1.c: Likewise. - * iconvdata/iso_6937-2.c: Likewise. - * iconvdata/iso_6937.c: Likewise. - * iconvdata/johab.c: Likewise. - * iconvdata/sjis.c: Likewise. - * iconvdata/t.61.c: Likewise. - * iconvdata/uhc.c: Likewise. - * iconvdata/unicode.c: Likewise. - * iconvdata/utf-16.c: Likewise. - - * sysdeps/unix/sysv/linux/bits/socket.h (struct cmsghdr): Mark - __cmsg_data field with __extension__. - -2000-06-10 David Mosberger - - * sysdeps/unix/sysv/linux/ia64/syscall.S: Fix it so it actually works. - -2000-06-10 Ulrich Drepper - - * iconv/gconv_simple.c: Fix various small bugs in several - functions. - - * iconv/loop.c: Fix comment. - -2000-06-10 Jakub Jelinek - - * elf/link.h: Remove libc internal declarations. - * include/link.h: Move them here. - -2000-06-09 Ulrich Drepper - - * sysdeps/unix/sysv/linux/ia64/getsysstats.c: New file. - Patch by Dan Pop . - - Rewrite error message handling. - * elf/dl-deps.c (_dl_map_object_deps): Pass new parameter to - _dl_catch_error. - * elf/dl-error (struct catch): Add objname member. - (_dl_signal_error): Take new parameter with object name. When - passing message on simply store object name and duplicate error - message. - (_dl_catch_error): Take new parameter. Store object name in the - place pointed to. - * include/dlfcn.h: Adjust _dl_catch_error prototype. - * sysdeps/generic/ldsodefs.h: Adjust _dl_signal_error prototype. - * dlfcn/dlerror.c (struct dl_action_result): Add objname member. - (dlerror): Add objname to asprintf() parameters. - (_dl_error_run): Pass new parameter to _dl_catch_error. - * elf/dl-libc.c (dlerror_run): Pass new parameter to _dl_catch_error. - * elf/dl-open.c (_dl_open): Likewise. - * elf/rtld.c (dl_main): Likewise. - * elf/dl-close.c: Mark error messages with N_(). - * elf/dl-deps.c: Likewise. - * elf/dl-error.c: Likewise. - * elf/dl-load.c: Likewise. - * elf/dl-open.c: Likewise. - * elf/dl-reloc.c: Likewise. - * elf/dl-support.c: Likewise. - * elf/dl-sym.c: Likewise. - * elf/dl-version.c: Likewise. - * elf/dl-lookup.c: Add comments about problems with error message - translations. - * elf/dl-reloc.c: Likewise. - * elf/dl-version.c: Likewise. - -2000-06-09 H.J. Lu - - * dlfcn/dlerror.c (_dlerror_run): Set result->errstring to NULL - after freeing it. - - * dlfcn/Makefile (distribute): Add failtestmod.c. - (tests): Add failtest. - Add rules to build and run failtest. - * dlfcn/failtest.c: New file. - * dlfcn/failtestmod.c: New file. - -2000-06-09 David Mosberger-Tang - - * sysdeps/unix/sysv/linux/ia64/__longjmp.S: new file - * sysdeps/unix/sysv/linux/ia64/bsd-_setjmp.S: new file - * sysdeps/unix/sysv/linux/ia64/bsd-setjmp.S: new file - * sysdeps/unix/sysv/linux/ia64/setjmp.S: new file - * sysdeps/unix/sysv/linux/ia64/bits/setjmp.h: new file - -2000-06-09 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/brk.S: New file. - * sysdeps/unix/sysv/linux/ia64/pipe.S: New file. - -2000-06-09 Jes Sorensen - Ulrich Drepper - - * sysdeps/unix/sysv/linux/ia64/sigaction.c: New file. - * sysdeps/unix/sysv/linux/ia64/sigpending.c: New file. - * sysdeps/unix/sysv/linux/ia64/sigprocmask.c: New file. - * sysdeps/unix/sysv/linux/ia64/sigsuspend.c: New file. - * sysdeps/unix/sysv/linux/ia64/bits/sigaction.h: New file. - * sysdeps/unix/sysv/linux/ia64/bits/sigstack.h: New file. - -2000-06-09 Ulrich Drepper - - * sysdeps/unix/sysv/linux/shm_open.c (where_is_shmfs): Try harder - to find correct mount point despite wrong information from the - kernel. - -2000-06-09 Jes Sorensen - - * elf/dl-libc.c (__libc_dlsym): Use DL_SYMBOL_ADDRESS() to obtain - the address of a symbol so function pointers are handled properly. - -2000-06-08 Ulrich Drepper - - * sysdeps/i386/Dist: Add bp-asm.h. - - * sysdeps/unix/sysv/linux/shm_open.c (where_is_shmfs): Use - defaultdir variable instead of "/var/shm" everywhere. - (defaultdir): Change to /dev/shm/. - -2000-06-08 Greg McGary - - * sysdeps/i386/bp-asm.h: New file. - * sysdeps/i386/__longjmp.S: Define & use symbolic argument stack - offsets. Add ENTER/LEAVE macros for optionally maintaining - frame-pointer chain when debugging. - * sysdeps/i386/add_n.S: Likewise. - * sysdeps/i386/addmul_1.S: Likewise. - * sysdeps/i386/lshift.S: Likewise. - * sysdeps/i386/memchr.S: Likewise. - * sysdeps/i386/memcmp.S: Likewise. - * sysdeps/i386/mul_1.S: Likewise. - * sysdeps/i386/rawmemchr.S: Likewise. - * sysdeps/i386/rshift.S: Likewise. - * sysdeps/i386/stpcpy.S: Likewise. - * sysdeps/i386/stpncpy.S: Likewise. - * sysdeps/i386/strchr.S: Likewise. - * sysdeps/i386/strchrnul.S: Likewise. - * sysdeps/i386/strcspn.S: Likewise. - * sysdeps/i386/strpbrk.S: Likewise. - * sysdeps/i386/strrchr.S: Likewise. - * sysdeps/i386/strspn.S: Likewise. - * sysdeps/i386/strtok.S: Likewise. - * sysdeps/i386/sub_n.S: Likewise. - * sysdeps/i386/submul_1.S: Likewise. - * sysdeps/i386/elf/setjmp.S: Likewise. - * sysdeps/i386/i486/strcat.S: Likewise. - * sysdeps/i386/i486/strlen.S: Likewise. - * sysdeps/i386/i586/add_n.S: Likewise. - * sysdeps/i386/i586/lshift.S: Likewise. - * sysdeps/i386/i586/memcpy.S: Likewise. - * sysdeps/i386/i586/memset.S: Likewise. - * sysdeps/i386/i586/rshift.S: Likewise. - * sysdeps/i386/i586/strchr.S: Likewise. - * sysdeps/i386/i586/strcpy.S: Likewise. - * sysdeps/i386/i586/strlen.S: Likewise. - * sysdeps/i386/i586/sub_n.S: Likewise. - * sysdeps/i386/i686/add_n.S: Likewise. - * sysdeps/i386/i686/memcpy.S: Likewise. - * sysdeps/i386/i686/mempcpy.S: Likewise. - * sysdeps/i386/i686/memset.S: Likewise. - * sysdeps/i386/i686/strcmp.S: Likewise. - -2000-06-08 Ulrich Drepper - - * sysdeps/unix/sysv/linux/getdtsz.c: New file. - - * sysdeps/unix/sysv/linux/sys/param.h: Define NOFILE directly as - 256 and don't use OPEN_MAX. - - * sysdeps/unix/sysv/linux/pathconf.c: Define LINUX_LINK_MAX and - use it instead of LINK_MAX. - * sysdeps/unix/sysv/linux/fpathconf.c: Likewise. - -2000-06-08 Andreas Jaeger - - * libio/genops.c (_IO_list_lock): Only compile body if we're - thread safe. - (_IO_list_unlock): Likewise. - (_IO_list_resetlock): Likewise. - -2000-06-07 Ulrich Drepper - - * sysdeps/unix/sysv/linux/bits/local_lim.h: Undefine OPEN_MAX - unless user defined it. - - * sysdeps/unix/sysv/linux/bits/local_lim.h: Also undefine LINK_MAX - if not defined by the user. - - * libio/iofwrite_u.c (fwrite_unlocked): Remove obsolete comment. - * libio/iofwrite.c (_IO_fwrite): Likewise. - - * time/time.h: Add missing __THROW for clock_getcpuclockid - prototype. - - * elf/Makefile (distribute): Add dl-dtprocnum.h. - * include/elf.h: Include also . - * elf/dl-deps.c: Likewise. - * elf/dl-lookup.c: Likewise. - * elf/dl-runtime.c: Likewise. - * elf/dl-version.c: Likewise. - * elf/do-rel.h: Likewise. - * elf/dynamic-link.h: Likewise. - * elf/link.h: Likewise. - * elf/rtld.c: Likewise. - * sysdeps/generic/dl-dtprocnum.h: New file. - * sysdeps/ia64/dl-dtprocnum.h: New file. - * sysdeps/mips/dl-dtprocnum.h: New file. - * sysdeps/sparc/dl-dtprocnum.h: New file. - - * sysdeps/i386/dl-machine.h: Add more __builtin_expect. - - * elf/do-lookup.h: Add some __builtin_expect. - - * dlfcn/dlfcn.h: Pretty print dladdr declaraction. - - * elf/rtld.c (process_envvars): Recognize LD_DYNAMIC_WEAK. - (_dl_dynamic_weak): New variable. - * elf/dl-support.c: Likewise. - * sysdeps/generic/ldsodefs.h: Declare _dl_dynamic_weak. - * elf/do-lookup.h: If we find a weak definition treat it like a - normal symbol unless _dl_dynamic_weak is nonzero. In the latter - case treat it like before. - - * elf/dl-addr.c (_dl_addr): Fill in correct information if symbol - is in main program. - * elf/Versions [ld] (GLIBC_2.2): Export _dl_argv. - - * elf/dl-addr.c (_dl_addr): Do exact testing of address range - using l_map_start and l_map_end. - - * elf/dl-version.c: Add __builtin_expect in many places. - - * sysdeps/unix/sysv/linux/i386/dl-procinfo.h (x86_cap_flags): - Update. - -2000-06-04 Kaz Kylheku - - Lock for stdio stream list becomes global, for use in LinuxThreads. - - * libio/genops.c (_IO_iter_begin, _IO_iter_end, - _IO_iter_next, _IO_iter_file, _IO_list_lock, _IO_list_unlock, - _IO_list_resetlock): New interface for iterating global list of - streams without accessing the _IO_list_all global variable, - and for manipulating the lock which protects this list. - * libio/libioP.h: Likewise. - * libio/Version: Add entries for the new functions. - - * libio/libioP.h (_IO_ITER): New typedef, just an alias for - pointer to _IO_FILE. - -2000-06-07 Ulrich Drepper - - * locale/programs/ld-ctype.c (set_class_defaults): Several uses of - BIT() must actually be BITw(). - - * locale/programs/ld-ctype.c: Handle SP and space consistently. - - * locale/programs/charmap.c: Allow string arguments for - code_set_name and repertoiremap. - -2000-06-07 Andreas Jaeger - - * elf/Makefile: Build ldconfig only when building shared libraries. - -2000-06-07 Jakub Jelinek - - * sysdeps/alpha/fpu/bits/mathinline.h (__fdimf): Only declare if - __USE_ISOC99. - (fdimf, __fdim, fdim): Likewise. - -2000-06-07 Ulrich Drepper - - * locale/findlocale.c: Add __builtin_expect in many places. - * locale/loadlocale.c: Likewise. - -2000-06-06 Greg McGary - - * sysdeps/mips/elf/start.S: Trim redundant code. - - * sysdeps/powerpc/memset.S: Define & use symbolic register names. - Use C comments throughout. Line up operands column with tabs. - * sysdeps/powerpc/strchr.S: Likewise. - * sysdeps/powerpc/strcmp.S: Likewise. - * sysdeps/powerpc/strcpy.S: Likewise. - * sysdeps/powerpc/strlen.S: Likewise. - - * sysdeps/unix/sysv/linux/powerpc/brk.S [!PIC]: - Get low part of &__curbrk with @l. - -2000-06-06 Ulrich Drepper - - * iconvdata/utf-16.c: Add __builtin_expect in many places. - * iconvdata/unicode.c: Likewise. - * iconvdata/uhc.c: Likewise. - * iconvdata/t.61.c: Likewise. - * iconvdata/sjis.c: Likewise. - * iconvdata/johab.c: Likewise. - * iconvdata/iso_6937.c: Likewise. - * iconvdata/iso_6937-2.c: Likewise. - * iconvdata/iso8859-1.c: Likewise. - * iconvdata/iso646.c: Likewise. - * iconvdata/iso-2022-kr.c: Likewise. - * iconvdata/iso-2022-jp.c: Likewise. - * iconvdata/iso-2022-cn.c: Likewise. - * iconvdata/gbgbk.c: Likewise. - * iconvdata/gbk.c: Likewise. - * iconvdata/euc-kr.c: Likewise. - * iconvdata/euc-jp.c: Likewise. - * iconvdata/euc-cn.c: Likewise. - -2000-06-05 Ulrich Drepper - - * iconvdata/big5hkscs.c: Add __builtin_expect in many places. - * iconvdata/big5.c: Likewise. - * iconvdata/ansi_x3.110.c: Likewise. - * iconvdata/8bit-generic.c: Likewise. - * iconvdata/8bit-gap.c: Likewise. - * iconv/loop.c: Likewise. - * iconv/gconv_db.c: Likewise. - * iconv/gconv_dl.c: Likewise. - * iconv/gconv_simple.c: Likewise. - * iconv/skeleton.c: Likewise. - - * iconv/gconv.h (__GCONV_IS_LAST, __GCONV_IGNORE_ERRORS): Define. - (struct __gconv_step_data): Rename __is_last to __flags. - * iconv/gconv_close.c: Change all uses of __is_last. - * iconv/skeleton.c: Likewise. - * iconvdata/iso-2022-cn.c: Likewise. - * iconvdata/iso-2022-jp.c: Likewise. - * iconvdata/iso-2022-kr.c: Likewise. - * iconv/gconv_open.c: Likewise. Avoid unneeded initializations. - Recognize IGNORE error handling, set flag, and remove from name. - * iconv/loop.c (ignore_errors_p): Define. - Add flags parameter to both functions. - * iconv/skeleton.c: Pass flags to all conversion functions. - * iconv/gconv_simple.c: Add flags parameter to all functions. - Don't return error for invald error if ignore flag is set. - (ucs4_internal_loop_single): Add missing pointer increment. - (internal_ucs4le_loop_single): Likewise. - * iconv/iconv_prog.c: Implement handling of -c parameter. - * iconvdata/8bit-gap.c: Don't return error for invald error if - ignore flag is set. - * iconvdata/8bit-generic.c: Likewise. - * iconvdata/ansi_x3.110.c: Likewise. - * iconvdata/big5.c: Likewise. - * iconvdata/big5hkscs.c: Likewise. - * iconvdata/euc-cn.c: Likewise. - * iconvdata/euc-jp.c: Likewise. - * iconvdata/euc-kr.c: Likewise. - * iconvdata/gbgbk.c: Likewise. - * iconvdata/gbk.c: Likewise. - * iconvdata/iso-2022-cn.c: Likewise. - * iconvdata/iso-2022-jp.c: Likewise. - * iconvdata/iso-2022-kr.c: Likewise. - * iconvdata/iso646.c: Likewise. - * iconvdata/iso8859-1.c: Likewise. - * iconvdata/iso_6937-2.c: Likewise. - * iconvdata/iso_6937.c: Likewise. - * iconvdata/johab.c: Likewise. - * iconvdata/sjis.c: Likewise. - * iconvdata/t.61.c: Likewise. - * iconvdata/uhc.c: Likewise. - * iconvdata/unicode.c: Likewise. - * iconvdata/utf-16.c: Likewise. - * libio/fileops.c: Likewise. - * libio/iofwide.c: Likewise. - * wcsmbs/btowc.c: Likewise. - * wcsmbs/mbrtowc.c: Likewise. - * wcsmbs/mbsnrtowcs.c: Likewise. - * wcsmbs/mbsrtowcs.c: Likewise. - * wcsmbs/wcrtomb.c: Likewise. - * wcsmbs/wcsnrtombs.c: Likewise. - * wcsmbs/wcsrtombs.c: Likewise. - * wcsmbs/wctob.c: Likewise. - - * iconvdata/ksc5601.h (ksc5601_to_ucs4): Undo *s change in all cases of - an error. - -2000-06-04 Ulrich Drepper - - * iconv/gconv_dl.c (do_release_shlib): Don't reset reference - counter for the object we are releasing, just decrement it. - Patch by Akira Higuchi . - -2000-06-04 Jakub Jelinek - - * sysdeps/i386/fpu/bits/mathinline.h: Only inline sinh, cosh and tanh - if -ffast-math. - -2000-06-04 Ulrich Drepper - - * iconvdata/big5hkscs.c: New file. - Modified from big5.c by Roger So . - - * iconvdata/gconv-modules: Add entry for new module. - * iconvdata/Makefile (modules): Add BIG5HKSCS. - (distribute): Add big5hkscs.c. - -2000-06-01 Jakub Jelinek - - * libc/sysdeps/alpha/fpu/bits/mathinline.h: Add __THROW to all - inlines to match prototypes in mathcalls.h. - * libc/sysdeps/i386/fpu/bits/mathinline.h: Likewise. - * libc/sysdeps/m68k/fpu/bits/mathinline.h: Likewise. - * libc/sysdeps/powerpc/fpu/bits/mathinline.h: Likewise. - * libc/sysdeps/sparc/fpu/bits/mathinline.h: Likewise. - -2000-06-03 Ulrich Drepper - - * elf/elf.h (SHT_SUNW_move): Define. - - * elf/elf.h: Add more Solaris compatiblity definitions. - -2000-06-03 Andreas Jaeger - - * sysdeps/powerpc/dl-start.S: Close open comment. - -2000-06-03 Jakub Jelinek - - * inet/Versions: Fix typo in rresvport_af export. - -2000-06-02 Ulrich Drepper - - * math/tgmath.h: Pretty print. - -2000-06-02 Andreas Jaeger - - * sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Fix typo. - Reported by Maciej W. Rozycki . - -2000-06-02 Ulrich Drepper - - * elf/rtld.c (process_envvars): Test for = after variable name. - -2000-06-01 Ulrich Drepper - - * sysdeps/generic/initfini.c (_init): One less relocation. Don't - have extra call to __gmon_start__, use the pointer we already have. - - * elf/elf.h (ELF64_R_INFO): Cast sym value to Elf64_Xword before - shifting. - - * sysdeps/i386/elf/setjmp.S: Work around change is recent - binutils. gas now emits a jump through the PLT instead of a - relative jump if the jump target is an exported symbol. - -2000-05-31 Ulrich Drepper - - * sysdeps/unix/sysv/linux/powerpc/aix/aix-termios.h: Define AIX_CBAUD. - -2000-05-31 Andreas Jaeger - - * sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Use array for - gregset_t. - - * sysdeps/unix/sysv/linux/mips/Versions: Export _flush_cache. - Patches by Maciej W. Rozycki . - - * sysdeps/unix/sysv/linux/mips/ftruncate64.c: Fix prototype of - syscall. - * sysdeps/unix/sysv/linux/mips/truncate64.c: Likewise. - -2000-05-30 Ulrich Drepper - - * sysdeps/unix/sysv/linux/alpha/oldglob.c (__old_glob): Loose __P. - - * locale/Versions [libc] (GLIBC_2.2): Add localeconv. - * locale/localeconv.c: Make function versioned (with same definition). - - * elf/Makefile (modules-names): Strip before using it. - -2000-05-30 Andreas Jaeger - - * sysdeps/unix/sysv/linux/mips/truncate64.c: New file. - * sysdeps/unix/sysv/linux/mips/ftruncate64.c: New file. - * sysdeps/unix/sysv/linux/mips/pread64.c: Readded file. - * sysdeps/unix/sysv/linux/mips/pwrite64.c: Readded file. - * sysdeps/unix/sysv/linux/mips/pread.c: Readded file. - * sysdeps/unix/sysv/linux/mips/pwrite.c: Readded file. - -2000-05-29 Ulrich Drepper - - * Makefile: Add GNU make magic. - - * inet/Makefile (CFLAGS-rcmd.c, CFLAGS-rexec.c, CFLAGS-ruserpass.c): - Removed. - * inet/rcmd.c: Remove __P. Remove unused variables. - (iruserfopen): Make first parameter const. - (ruserok_sa): Return result of ruserok2_sa. - (__checkhost_sa): Correctly iterate through results of getaddrinfo. - * inet/rexec.c: Remove unused variables. Other small cleanups. - * inet/ruserpass.c: Remove __P. Remove unused variables. - (ruserpass): Check results of memory allocation. - * include/netdb.h: Add prototype for ruserpass. - -2000-05-29 Andreas Jaeger - - * elf/readlib.c (interpreters): Use LD_SO since this is supported - for all platforms. - -2000-05-29 Jakub Jelinek - - * inet/rcmd.c (rresvport_af): Use correct port number. - -2000-05-26 Andreas Schwab - - * Makeconfig ($(common-objpfx)soversions.mk): Prepend `$lib=' to - entries in all-sonames. - ($(common-objpfx)gnu/lib-names.h): Use it for the CPP symbol, - preserving the old name if different for compatibility. - -2000-05-29 Ulrich Drepper - - * posix/Makefile (tests): Add tst-spawn. - (tst-spawn-ARGS): New variable. - * posix/tst-spawn.c: New file. - - * posix/spawn_faction_addclose.c: Correctly account for new entry. - * posix/spawn_faction_adddup2.c: Likewise. - * posix/spawn_faction_addopen.c: Likewise. - * posix/spawni.c: Correctly test for success of dup2 calls. - - * posix/tst-preadwrite.c: Check success of malloc call. - -2000-05-28 Ulrich Drepper - - * posix/Makefile (tests): Add tst-exec. - (tst-exec-ARGS): New variable. - * posix/tst-exec.c: New file. - - * sysdeps/arm/atomicity.h (compare_and_swap): Return result. - -2000-05-04 Andreas Jaeger - - * string/string.h: Remove __strdup prototype, it's not needed in - this file anymore. - -2000-05-28 Ulrich Drepper - - * posix/Makefile (tests): Add tst-fork. - * posix/tst-fork.c: New file. - - * resolv/inet_pton.c: Loose __P. - -2000-05-21 Jakub Jelinek - - * libio/libioP.h (_IO_CHECK_WIDE): Define. - * libio/iosetbuffer.c (_IO_setbuffer): Use it. - * libio/iosetvbuf.c (_IO_setvbuf): Likewise. - * libio/fileops.c (_IO_new_file_fopen): Return NULL if - _IO_CHECK_WIDE fails. - -2000-05-28 Ulrich Drepper - - * po/da.po: New file. - - * manual/arith.texi (Rounding Functions): Fix documentation of trunc. - Patch by Steven G. Johnson . - - * manual/charset.texi (Extended Char Intro): Fix typo (and -> as). - (Other iconv Implementations): Fix typo. - Patch by Martin Pool . - -2000-05-27 Andreas Jaeger - - * sysdeps/unix/sysv/linux/i386/pread.c: Removed, we can use the - normal version now. - * sysdeps/unix/sysv/linux/i386/pwrite.c: Likewise. - * sysdeps/unix/sysv/linux/i386/pwrite64.c: Likewise. - * sysdeps/unix/sysv/linux/mips/pread.c: Likewise. - * sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise. - * sysdeps/unix/sysv/linux/arm/pread.c: Likewise. - * sysdeps/unix/sysv/linux/arm/pwrite.c: Likewise. - - * sysdeps/unix/sysv/linux/pread.c (__libc_pread): Check - endianness to decide how to pass arguments. - * sysdeps/unix/sysv/linux/pwrite.c (__libc_pwrite): Likewise. - - * elf/vismain.c: Use test-skeleton interface. - (TEST_FUNCTION): New macro. - (do_test): Renamed from main. - -2000-05-27 Ulrich Drepper - - * sysdeps/posix/getaddrinfo.c (gaih_inet): If req->ai_family == - AF_UNSPEC don't allow the IPv6 lookup to return mapped IPv4 addresses. - - * nss/nss_files/files-hosts.c (LINE_PARSER): Simplify. Correct - handling of AI_V4MAPPED flag. - - * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyname2_r): If lookup - of IPv6 address failed and RES_USE_INET6 bit in _res.options is set, - perform lookup for T_A type and tell getanswer_r to convert the - result with new argument. - (_nss_dns_gethostbyaddr_r): Pass zero as new argument to getanswer_r. - Don't convert addresses from IPv4 to IPv6 here. - (getanswer_r): Take new parameter indicating if mapping from IPv4 to - IPv6 is wanted. Allow qtype and type from reply to disagree if - IPv4 mapping has to be done. Perform mappings if required by the - caller and not if RES_USE_INET6 bit in _res.options is set. - Add several __builtin_expect. - -2000-05-26 Ulrich Drepper + * dlfcn/failtest.c: Add prototype for foo. - * catgets/open_catalog.c (__open_catalog): Add a few __builtin_expect. + * dlfcn/glrefmain.c: Add prototype for do_test. - * elf/dl-load.c (_dl_map_object): Don't ignore RPATHs if loader == - NULL. + * dlfcn/tst-dladdr.c: Add prototype for do_test. - * posix/tst-preadwrite.c: Allow parallel execution of - tst-preadwrite and tst-preadwrite64. + * string/test-ffs.c (main): Add prototype for nested function. - * posix/Makefile (tests): Add tst-truncate and tst-truncate64. - * posix/tst-truncate.c: New file. - * posix/tst-truncate64.c: New file. + * sunrpc/des_soft.c: Include rpc/des_crypt.h for prototype. - * sysdeps/unix/sysv/linux/pread64.c: The little/big endian code - was switched. + * nss/XXX-lookup.c: Add prototype to shut up GCC. - * posix/Makefile (tests): Add tst-preadwrite64. - * posix/tst-preadwrite.c: Alloc file being used also for testing - pread64 and pwrite64. - * posix/tst-preadwrite64.c: New file. + * include/netinet/ether.h (DECLARE_NSS_PROTOTYPES): Fix + setetherent prototype. + Add internal interfaces. -2000-05-26 Andreas Jaeger + * nis/nss_nis/nis-ethers.c (_nss_nis_setetherent): Likewise. + * nis/nss_nisplus/nisplus-ethers.c (_nss_nisplus_setetherent): Likewise. - * sysdeps/unix/sysv/linux/ftruncate64.c (ftruncate64): Make order - of arguments dependend on endianness. - * sysdeps/unix/sysv/linux/truncate64.c: Likewise. + * resolv/res_data.c: Don't add (conflicting) prototypes for _LIBC. - * sysdeps/unix/sysv/linux/i386/pread64.c: Removed, we can use the - normal version now. - * sysdeps/unix/sysv/linux/arm/pread64.c: Likewise. - * sysdeps/unix/sysv/linux/arm/pwrite64.c: Likewise. - * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise. - * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise. + * nis/nis_intern.h: Add prototype for __pmap_getnisport. - * sysdeps/unix/sysv/linux/pwrite64.c (__libc_pwrite64): Check - endianness to check how to pass argument. - * sysdeps/unix/sysv/linux/pread64.c (__libc_pread64): Likewise. + * nss/nss_files/files-ethers.c: Include netinet/ether.h to get + prototypes, remove struct etherent since it's declared in ether.h. + Fix ntohost declaration. - * elf/ldconfig.h: Update parameter list for process_elf_file. + * elf/dl-profile.c (_dl_mcount): Add empty statement to shut up GCC. - * sysdeps/unix/sysv/linux/sparc/readelflib.c (process_elf_file): - Add parameter file_length and pass it ot process_elf*file. + * include/getopt.h: Add internal interfaces. + * include/termios.h: Likewise. + * include/resolv.h: Likewise. + * include/netdb.h: Likewise. + * include/grp.h: Likewise. + * include/pwd.h: Likewise. + * include/shadow.h: Likewise. + * include/rpc/netdb.h: Likewise. + * include/setjmp.h: Likewise. - * sysdeps/generic/readelflib.c (check_ptr): New. - (process_elf_file): Use check_ptr to check all accesses to the - mmapped file. Add parameter file_length. + * include/stdio.h: Add prototypes for compatibility functions. + * include/grp.h: Likewise. + * include/pwd.h: Likewise. + * include/shadow.h: Likewise. - * elf/readlib.c (known_libs): Use to specify - library names. + * include/fenv.h: Define internal interfaces. - * sunrpc/xdr_intXX_t.c (xdr_uint8_t): Fix conversion. - Closes PR libc/1573, reported by Bradley White - . +2000-12-27 Ulrich Drepper -2000-05-25 Ulrich Drepper + * sysdeps/generic/bits/byteswap.h (__bswap_64): Handle constant + argument case separately. + * sysdeps/i386/bits/byteswap.h (__bswap_64): Likewise. - * sysdeps/i386/fpu/bits/mathinline.h: Define expm1 inline only if - __FAST_MATH__ is defined. +2000-12-27 Andreas Jaeger -2000-05-22 Andreas Jaeger + * include/sys/wait.h: Add some prototypes. + * Rules (dummy.c): Create also prototype to shut up GCC. - * math/Makefile: Add -D__FAST_MATH__ to CFLAGS-test-ifloat.c, - CFLAGS-test-idouble.c, CFLAGS-test-ildoubl.c. +2000-12-27 Andreas Jaeger - * manual/math.texi (FP Function Optimizations): Document gcc - -ffast-math behaviour with mathinlines. + * sysdeps/mach/hurd/if_index.c (__protocol_available): Uncomment, + it's not needed at the moment. + * sysdeps/generic/if_index.c (__protocol_available): Likewise. + * sysdeps/unix/sysv/linux/if_index.c (__protocol_available): Likewise. - * sysdeps/i386/fpu/bits/mathinline.h: Only use save inline - functions unless -ffast-math is given to gcc. +2000-12-26 Andreas Jaeger -2000-05-23 Jakub Jelinek + * libio/getc_u.c: Include stdio.h via system path to get internal + prototypes. + * libio/getwc_u.c: Likewise. - * sysdeps/i386/fpu/bits/mathinline.h (__sincos, __sincosf, - __sincosl): Guard with __USE_GNU. + * stdlib/strfmon.c: Fix prototype of __printf_fp. -2000-05-24 Ulrich Drepper + * stdio-common/vfprintf.c (process_arg): Move __printf_fphex and + __printf_fp prototypes to ... + * include/printf.h: ...here. - * csu/Makefile (routines): Add check_fds. - * elf/rtld.c (dl_main): Call __libc_check_standard_fds for SUID - binaries. Add various __builtin_expect. - * sysdeps/generic/libc-start.c: Move check_fds and helper functions... - * sysdeps/generic/check_fds.c: ...here. New file. + * include/stdio.h: Add some internal prototypes to shut up GCC. + * include/stdlib.h: Likewise. - * malloc/malloc.c (ptmalloc_init): Only enable debugging for SUID - binaries if file /etc/suid-debug is available. + * sysdeps/posix/sigpause.c (__sigpause): Use ISO C prototype + declaration. - * locale/programs/ld-collate.c (struct element_t): Add mbseqorder - and wcseqorder members. - (struct locale_collate_t): Likewise. - (collate_finish): Assign collation sequence value to each character. - Create tables for output. - (collate_output): Write out tables with collation sequence information. - * locale/C-collate.c: Provide C locale data for collation sequence - table. - * locale/langinfo.h: Add _NL_COLLATE_COLLSEQMB and - _NL_COLLATE_COLLSEQWC. - * locale/categories.def: Add entries for _NL_COLLATE_COLLSEQMB and - _NL_COLLATE_COLLSEQWC. - * posix/fnmatch.c: Define SUFFIX and WIDE_CHAR_VERSION before - include fnmatch_loop.c. - * posix/fnmatch_loop.c: Don't use strcoll while determining whether - character is matched by range expression. Use collation sequence - table. Outside glibc fall back on simple character value comparison. + * include/signal.h: Add prototypes for internal sigpause + interfaces. -2000-05-24 Andreas Jaeger +2000-12-26 Ulrich Drepper - * sysdeps/mips/elf/start.S (ENTRY_POINT): Align stack for double - words. + * sysdeps/generic/bits/byteswap.h (__bswap_64): Make it usable for + 64bit platforms. Reported by Dave Gilbert . - * intl/Makefile: Run gettext-test only if msgfmt is available. + * string/Makefile (tests): Add tst-bswap. + * string/tst-bswap.c: New file. - * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_LDT_WORKS): - Define it for newer kernels. +2000-12-11 Bruno Haible -2000-05-23 Ulrich Drepper + * Makefile ($(inst_includedir)/gnu/stubs.h): Sort in the C locale. - * elf/dl-sym.c: Minor cleanups. +2000-12-26 Ulrich Drepper - * configure.in: Add test for .protected. - * config.make.in: Add have-protected variable. - * elf/Makefile (tests): Add $(tests-vis-$(have-protected)). - (tests-vis-yes): Add vismain. - (modules-names): Add $(modules-vis-$(have-protected)). - (modules-vis-yes): Add vismod1, vismod2, and vismod3. - Add rules to generate and run vismain. - * elf/vismain.c: New file. - * elf/vismod1.c: New file. - * elf/vismod2.c: New file. - * elf/vismod3.c: New file. + * sunrpc/Makefile (rpcgen-cmd): Use single quotes in sed call. + Patch by Ed Connell . -2000-05-23 Andreas Jaeger +2000-12-24 Ulrich Drepper - * stdio-common/tfformat.c (sprint_doubles): Add testcase for %a. + * locale/iso-639.def: Correct one entry. Add two missing entries. - * manual/search.texi (Array Sort Function): Document that qsort is - not necessarily in-place. + * locale/iso-4217.def: Change entry for Eritrea. + Reported by Daniel Yacob . - * sunrpc/rpc_main.c (parseargs): Don't accept -M and -N. - Closes PR libc/1731. +2000-12-23 Ben Collins - * csu/munch-tmpl.c (__libc_init): Remove K&R support. - * dirent/scandir64.c: Likewise. - * pwd/getpw.c: Likewise. - * stdlib/bsearch.c (bsearch): Likewise. - * stdlib/tst-strtoll.c: Likewise. - * localedata/collate-test.c: Likewise. - * localedata/xfrm-test.c: Likewise. - * posix/bsd-getpgrp.c: Likewise. - * sysdeps/alpha/fpu/bits/fenv.h: Likewise. - * sysdeps/generic/bits/siginfo.h: Likewise. - * sysdeps/generic/bits/sockaddr.h: Likewise. - * sysdeps/generic/sys/swap.h: Likewise. - * sysdeps/generic/sys/sysinfo.h: Likewise. - * sysdeps/generic/vfork.c: Likewise. - * sysdeps/m68k/fpu/switch/68881-sw.h: Likewise. - * sysdeps/mach/hurd/fdopen.c: Likewise. - * sysdeps/unix/sysv/linux/alpha/sys/acct.h: Likewise. - * sysdeps/unix/sysv/linux/poll.c: Likewise. - * sysdeps/unix/sysv/linux/readv.c: Likewise. - * sysdeps/unix/sysv/linux/writev.c: Likewise. - * sysdeps/unix/sysv/linux/i386/setgroups.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/bits/ipc.h: Likewise. - * sysdeps/unix/sysv/linux/sparc/bits/sigaction.h: Likewise. + * manual/charset.texi (Extended Char Intro): Fix typo in ISO 6937 + description. - * misc/tst-dirname.c: Remove K&R support, use ANSI C prototypes. - * shadow/lckpwdf.c: Likewise. - * stdlib/tst-strtol.c: Likewise. - * sysdeps/generic/tcsetattr.c: Likewise. - * sysdeps/unix/sysv/linux/ttyname.c: Likewise. - * sysdeps/unix/sysv/linux/ttyname_r.c: Likewise. + * manual/stdio.texi (Dynamic Output): Document the return value of + asprintf. Also make the asprintf/snprintf examples a little + better (check for some error returns). -2000-05-22 Jakub Jelinek +2000-12-22 Andreas Jaeger - * elf/dl-load.c (_dl_init_paths): If env_path_list has 0 elements, - free it and set to (void *) -1. + * include/stdio.h: Add __ftrylockfile prototype. -2000-05-22 Jakub Jelinek +2000-12-21 H.J. Lu - * stdio-common/vfscanf.c (__vfscanf): Remove bogus check if '-' is - not the second character in the range. - * stdio-common/tstscanf.c (main): Add testcase for the above. - Reported by jik@kamens.brookline.ma.us. + * sysdeps/ia64/fpu/math_ldbl.h (ieee_long_double_shape_type): + Make sign_exponent element signed. -2000-05-21 H.J. Lu + * sysdeps/ieee754/ldbl-96/math_ldbl.h (ieee_long_double_shape_type): + Fix a typo. - * elf/do-lookup.h (do_lookup_versioned): Replace reloc_type parameter - with noexec and noplt parameter. - (do_lookup): Likewise. + * sysdeps/i386/fpu/s_nextafterl.c (__nextafterl): Remove dead branch. - * elf/dl-lookup.c (_dl_lookup_symbol): Change for new parameters of - do_lookup. Support STV_PROTECTED. - (_dl_lookup_symbol_skip): Likewise. - (_dl_lookup_versioned_symbol): Likewise. - (_dl_lookup_versioned_symbol_skip): Likewise. +2000-12-21 Andreas Jaeger - * elf/dl-reloc.c (RESOLVE): Check STB_LOCAL instead of ST_VISIBILITY. + * nis/nss_nisplus/nisplus-ethers.c (struct etherent): Removed. + * inet/ether_hton.c: Likewise + * inet/ether_ntoh.c: Likewise. - * elf/dl-runtime.c (profile_fixup): Fix a typo in comment. + * nis/nss_nis/nis-ethers.c (_nss_nis_getntohost_r): Fix + declaration to match prototype. -2000-05-21 Jakub Jelinek + * include/netinet/ether.h (struct etherent): Declare here so that + all implementations use the same struct. - * sysdeps/arm/bits/huge_val.h: Prereq gcc 2.96+, not 2.95. - * sysdeps/i386/bits/huge_val.h: Likewise. - * sysdeps/ieee754/bits/huge_val.h: Likewise. - * sysdeps/m68k/bits/huge_val.h: Likewise. - * sysdeps/sparc/sparc32/bits/huge_val.h: Likewise. - * sysdeps/sparc/sparc64/bits/huge_val.h: Likewise. + * nis/nss_nis/nis-ethers.c: Include netinet/ether.h to get + prototypes. + (struct ether): Removed. + Use struct etherent instead of ether everywhere. -2000-05-22 Andreas Jaeger + * include/rpc/auth.h (DECLARE_NSS_PROTOTYPES): New. - * iconv/tst-iconv1.c (main): Remove const from inbuf to follow - change in iconv.h. + * include/rpc/auth_des.h (DECLARE_NSS_PROTOTYPES): New. -2000-05-19 Andreas Jaeger + * sunrpc/publickey.c: Include auth_des.h for prototypes. - * sysdeps/unix/sysv/linux/i386/i686/sysdep.h - (SYSCALL_ERROR_HANDLER): Remove unneeded syscall_error which - breaks compilation without linuxthreads. +2000-12-20 Ulrich Drepper -2000-05-21 Ulrich Drepper + * math/test-misc.c: Add more tests for nextafter functions. - * sysdeps/ia64/memccpy.S: New file. - * sysdeps/ia64/memchr.S: New file. - * sysdeps/ia64/memcmp.S: New file. - * sysdeps/ia64/memcpy.S: New file. - * sysdeps/ia64/memmove.S: New file. - * sysdeps/ia64/memset.S: New file. - * sysdeps/ia64/strcat.S: New file. - * sysdeps/ia64/strchr.S: New file. - * sysdeps/ia64/strcmp.S: New file. - * sysdeps/ia64/strcpy.S: New file. - * sysdeps/ia64/strlen.S: New file. - * sysdeps/ia64/strncmp.S: New file. - * sysdeps/ia64/strncpy.S: New file. - * sysdeps/ia64/softpipe.h: New file. - Patches by Dan Pop . + * sysdeps/i386/fpu/s_nextafterl.c: Handle change from denormal to + normal correctly. Correct test for sign. + Based on a patch by HJ Lu. - * manual/memory.texi: Document memory handling functions (mlock, - munlock, mlockall, munlockall, brk, and sbrk) - * manual/time.texi: Document timespec and friends. - * manual/conf.texi: Fix references. - * manual/ctype.texi: Likewise. - * manual/errno.texi: Likewise. - * manual/intro.texi: Likewise. - * manual/locale.texi: Likewise. - * manual/sysinfo.texi: Likewise. - Patches by Bryan Henderson . +2000-12-19 Ulrich Drepper -2000-05-09 Jes Sorensen + * Makeconfig (preprocess-version): Add -traditional to gcc call. + Cleanup sed calls. - * sysdeps/ia64/dl-machine.h: Move DL_SYMBOL_ADDRESS definition to... - * sysdeps/ia64/dl-lookupcfg.h: ...here. +2000-12-19 Andreas Jaeger -2000-05-21 Jakub Jelinek + * include/netinet/ether.h (DECLARE_NSS_PROTOTYPES): New. - * sysdeps/unix/sysv/linux/scsi/sg.h (sg_io_hdr_t): Remove duplicate - dxfer_direction. + * nis/nis_intern.h: Add prototype for __do_niscall3. -2000-05-21 Ulrich Drepper + * nis/nss_nis/nis-rpc.c (_nss_nis_setrpcent): Fix declaration to + match prototype. - * locale/locale.h (struct lconv): Add new elements from ISO C99. - * locale/localeconv.c: Initialize new elements from ISO C99. - * locale/langinfo.h: Remove _NL_MONETARY prefix from descriptors for - new standard elements. - * locale/categories.def: Adjust accordingly. + * include/netdb.h (DECLARE_NSS_PROTOTYPES): Reformat. - * iconv/iconv.h (iconv): Remove const from inbuf parameter. - * iconv/iconv.c: Likewise. - * conform/data/iconv.h-data: Likewise. - * iconv/iconv_prog.c (process_block): Remove const from second - parameter. - (main): Remove const from addr definition. - * manual/charset.texi (Generic Conversion Interface): Remove from - inbuf parameter of iconv. + * include/rpc/netdb.h (DECLARE_NSS_PROTOTYPES): New. - * intl/dcigettext.c: Fix typo in comment. + * include/aliases.h (DECLARE_NSS_PROTOTYPES): New. -2000-05-20 2000 H.J. Lu +2000-12-18 Ulrich Drepper - * resolv/res_libc.c (_res): Initialize _sock to -1. + * math/test-misc.c: Add more tests for nextafter. + * sysdeps/i386/fpu/s_nextafterl.c: Handle decrement for x<0 correctly. + * sysdeps/ieee754/ldbl-96/math_ldbl.h + (ieee_long_double_shape_type): Make sign_exponent element signed. -2000-05-18 Jakub Jelinek + * manual/message.texi: Add Estonian to plural overview list. + Correct rule for Slavic languages. + Patch by Stanislav Brabec . - * libio/iofopncook.c (_IO_fopencookie): Renamed from fopencookie. - (fopencookie@@GLIBC_2.2): New. - (_IO_old_cookie_seek, _IO_old_fopencookie, _IO_old_cookie_jumps): New. - (fopencookie@GLIBC_2.0): New. - * libio/Versions: Add fopencookie to GLIBC_2.2. + * nis/nss_nis/nis-netgrp.c: Remove unnecessary initializations. -2000-05-18 Andreas Jaeger +2000-12-18 Andreas Jaeger - * sunrpc/rpc_main.c (parseargs): Don't accept -M and -N. - Closes PR libc/1731. + * test-skeleton.c: Use temp_name_list instead of name_list to + avoid collision with name_list from inet/netgroup.h. - * manual/arith.texi (Parsing of Integers): Fix typo. - Closes PR libc/1744, reported by blp@gnu.org. + * nss/nss_files/files-network.c (NEED_H_ERRNO): Define. -2000-05-17 Jakub Jelinek + * include/grp.h (DECLARE_NSS_PROTOTYPES): New. + * include/pwd.h (DECLARE_NSS_PROTOTYPES): New. + * include/netdb.h (DECLARE_NSS_PROTOTYPES): New. + * include/shadow.h (DECLARE_NSS_PROTOTYPES): New. - * sysdeps/arm/bits/huge_val.h (HUGE_VAL, HUGE_VALF): Add - __extension__ to hexadecimal floating constant notation. - * sysdeps/i386/bits/huge_val.h (HUGE_VAL, HUGE_VALF, HUGE_VALL): + * hesiod/nss_hesiod/hesiod-proto.c (_nss_hesiod_setprotoent): Fix + declaration to match prototype. + * hesiod/nss_hesiod/hesiod-pwd.c (_nss_hesiod_setpwent): Likewise. + * hesiod/nss_hesiod/hesiod-grp.c (_nss_hesiod_setgrent): Likewise. + * hesiod/nss_hesiod/hesiod-service.c (_nss_hesiod_setservent): Likewise. - * sysdeps/ieee754/bits/huge_val.h (HUGE_VAL, HUGE_VALF): Likewise. - * sysdeps/m68k/bits/huge_val.h (HUGE_VAL, HUGE_VALF, HUGE_VALL): + * nis/nss_nis/nis-grp.c (_nss_nis_setgrent): Likewise. + * nis/nss_nis/nis-pwd.c (_nss_nis_setpwent): Likewise. + * nis/nss_nis/nis-proto.c (_nss_nis_setprotoent): Likewise. + * nis/nss_nis/nis-service.c (_nss_nis_setservent): Likewise. + (_nss_nis_getservbyport_r): Likewise. + * nis/nss_nis/nis-hosts.c (_nss_nis_sethostent): Likewise. + * nis/nss_nis/nis-spwd.c (_nss_nis_setspent): Likewise. + * nis/nss_nis/nis-network.c (_nss_nis_getnetent_r): Likewise. + (_nss_nis_setnetent): Likewise + * nis/nss_nis/nis-netgrp.c (_nss_nis_setnetgrent): Likewise. + (_nss_nis_endnetgrent): Likewise. + * nis/nss_nisplus/nisplus-netgrp.c (_nss_nisplus_endnetgrent): Likewise. - * sysdeps/sparc/sparc64/bits/huge_val.h (HUGE_VAL, HUGE_VALF, - HUGE_VALL): Likewise. - * sysdeps/sparc/sparc32/bits/huge_val.h (HUGE_VAL, HUGE_VALF, - HUGE_VALL): Likewise. - (HUGE_VALL): Set to HUGE_VAL on sparc32. - -2000-05-17 Andreas Jaeger - - * string/envz.h: Add pure attributes if possible. - - * string/argz.h: argz_count is a pure function. - - * string/strings.h: Add pure and const attributes if possible. - - * sysdeps/generic/memmem.c (memmem): Check arguments to avoid - possibly searching through the whole memory. - Closes PR libc/1730, reported by Greg Hudson . - -2000-05-17 Jakub Jelinek - - * sysdeps/generic/dl-cache.h (_DL_CACHE_DEFAULT_ID): Only define if - not yet defined. - (_dl_cache_check_flags): Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/dl-cache.h: include_next - dl-cache.h. - -2000-05-17 Andreas Jaeger - - * manual/creature.texi (Feature Test Macros): Remove paragraph - since the description is wrong. - Closes PR libc/1691, reported by Geoff Clare . - - * scripts/config.sub: New version. - * scripts/config.guess: Likewise. - * manual/texinfo.tex: Likewise. - - * time/test_time.args: Removed. - * time/Makefile (test_time-ARGS): Added contents here instead. - - * posix/tstgetopt.args: Removed. - * posix/Makefile (tstgetopt-ARGS): Added contents here instead. - - * Rules: Allow arguments for test files to be specified in - Makefile with testname-ARGS; remove rules with .args in it. - - * dirent/Makefile (opendir-tst1-ARGS): Use this for opendir-tst1, - remove old bogus rule for opendir-tst1.args. - - * stdlib/test-canon.c: Rewrite to use test-skeleton.c. - - * stdlib/Makefile (test-canon-ARGS): New, supply argument to chdir - into objdir. This allows a readonly sourcetree. - Reported by lrgallardo@yahoo.com, closes PR libc/1421. - -2000-05-16 Andreas Jaeger , - David Huggins-Daines - - * sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Set - cache_data in case of only new cache format correctly. - - * sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Align struct - cache_file_new. - - * sysdeps/generic/dl-cache.h (ALIGN_CACHE): New macro to align - struct cache_file_new. - - * elf/cache.c (save_cache): Fix str_offset if only new cache is - present. - - * elf/cache.c (save_cache): Align struct new_file_cache. - (print_cache): Likewise. - -2000-05-13 Jakub Jelinek - - * elf/soinit.c (__libc_global_ctors): Move - __pthread_initialize_minimal call out of HAVE_DWARF2_* defines. - * resolv/resolv.h (__res_state): Added __attribute__((const)). - (_res): If __RES_PTHREAD_INTERNAL is defined, declare it as - variable, don't define it to __res_state call. - -2000-05-13 Andreas Jaeger - - * sysdeps/unix/sysv/linux/bits/socket.h (PF_PPPOX): New, from - Linux 2.3.99pre7. - (AF_PPPOX): Likewise. - * sysdeps/unix/sysv/linux/mips/bits/socket.h (PF_PPPOX): Likewise. - (AF_PPPOX): Likewise. - -2000-05-12 Andreas Jaeger - - * inet/netinet/in.h (IN6_ARE_ADDR_EQUAL): Correct indices. - Reported by tmoestl@gmx.net, closes PR libc/1732. - -2000-05-11 Jan Hubicka - - * misc/sys/cdefs.h: Add support for pure attribute. - - * include/string.h: Add __attribute_pure__ to various functions. - * string/string.h: Likewise. - -2000-05-10 Jakub Jelinek - - * elf/dl-reloc.c (_dl_reloc_bad_type): Sync messages with plt - argument. - * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela): Handle - R_SPARC_UA64. - * sysdeps/unix/sysv/linux/sparc/sparc64/time.c: New file. - -2000-05-10 Jakub Jelinek - - * elf/dl-reloc.c (_dl_reloc_bad_type): Write type into the message - at proper place. Compute the high nibble correctly. - -2000-05-09 Jakub Jelinek - - * elf/ldconfig.c: Include elf.h. - - * elf/dl-sym.c (_dl_sym): Test ref not result for non-zero. - (_dl_vsym): Likewise. - Reported by Owen Taylor . - - * elf/dl-deps.c (_dl_map_object_deps): Zero terminate L->l_initfini - always. - -2000-05-08 Andreas Jaeger - - * include/libintl.h: Add prototype for __bind_textdomain_codeset. - - * intl/bindtextdom.c (set_binding_values): Add prototype. - -2000-05-08 Jakub Jelinek - - * sysdeps/alpha/dl-machine.h (elf_machine_rela): Fix arguments in - call to elf_machine_fixup_plt. - * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela): Likewise. - * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela): Likewise. - -2000-05-08 Jakub Jelinek - - * elf/dl-fini.c (_dl_fini): Bump l_opencount of all objects so that - they are not dlclose'd from underneath us. - -2000-05-08 Andreas Schwab - - * posix/execle.c: Fix size parameter of memcpy. - -2000-05-08 Andreas Schwab - - * sysdeps/unix/sysv/linux/m68k/getpagesize.c: New file. Use - getpagesize syscall if available. - -2000-05-08 Andreas Jaeger - - * sysdeps/generic/lockf64.c (lockf64): Return -1 for overflow and - set errno. - -2000-05-08 Jakub Jelinek - - * elf/dl-lookup.c (add_dependency): Reallocate l_reldeps in - sizeof(struct link_map *) chunks, not in bytes. - -2000-05-07 Ulrich Drepper - - * locale/Makefile (locale-CPPFLAGS): Renamed from CPPFLAGS. It's - only needed for locale. - * catgets/Makefile (catgets-CPPFLAGS): Renamed from CPPFLAGS. - It's only needed for catgets. - Patches by Greg McGary . - -2000-05-07 Mark Kettenis - - * nss/nss_db/db-open.c: Cleanup and add comments. Pretty print. - Remove duplicate include. Remove inclusion of - and "nsswitch.h". - (set_cloexec_flag): New function, broken out of dbopen. - (dbopen): Changed return type to `enum - nss_status'. Mostly rewritten to make sure that we do not report - NSS_STATUS_SUCCESS if something went wrong. Remove unnecessary casts. - (internal_setent): Change return type to nss_status. - Document, and make sure that the function - behaves accordingly. Make dynamically loading the database - library really thread-safe and return NSS_STATUS_UNAVAIL if it - failed. - (db_cursor): Return ENOMEM is memory allocation failed. Remove - unecessary casts. - * nss/nss_db/dummy-db.h: Add copyright notice. Improve - documentation. - (struct dbc24, struct dbc27): Use DBT type in parameter lists for - c_get function member. - * nss/nss_db/nss_db.h: Add and tweak some comments. - (DBT): Move typedef before NSS_DBC typedef. - (NSS_DBC, NSS_DB): Use DBT in function member parameter lists. - -2000-05-07 H.J. Lu - - * csu/initfini.c: Moved to .... - * sysdeps/generic/initfini.c: ...here. - - * csu/Makefile (initfini.c): Set vpath to $(full_config_sysdirs). - -2000-05-07 Ulrich Drepper - - * manual/resource.texi: Document POSIX scheduling functions. - Patch by Bryan Henderson . - - * inet/rcmd.c (rcmd_af): errno is not set if read returns without - reading anything. Reported by Andries.Brouwer@cwi.nl. - - * sysdeps/generic/memccpy.c (__memccpy): Don't use reg_char type - for x since promotion in comparison might leads to unexpected - results. Reported by Dan Pop . - - * iconv/Makefile (tests): Add tst-iconv1. - * iconv/tst-iconv1.c: New file. - * iconv/gconv_simple.c (internal_ucs4_loop): Prefer reporting - empty input buffer over full output buffer. - (ucs4_internal_loop): Likewise. - (ucs4_internal_loop_unaligned): Likewise. - (internal_ucs4le_loop): Likewise. - (internal_ucs4le_loop_unaligned): Likewise. - (ucs4le_internal_loop): Likewise. - (ucs4le_internal_loop_unaligned): Likewise. - Reported by yaoz@nih.gov. - -2000-05-06 Bruno Haible - - * iconv/gconv_open.c (__gconv_open): If __gconv_find_transform - returned != __GCONV_OK, there is nothing to clean up. - -2000-05-06 Bruno Haible - - * intl/tst-gettext.c (main): Disable possibly existing LC_CTYPE and - OUTPUT_CHARSET environment variables. - -2000-05-06 Andreas Jaeger - - * sysdeps/generic/dl-cache.h (struct file_entry_new): New. - (struct cache_file_new): New. - (struct file_entry): New (moved from cache.c). - (struct cache_file): New (moved from cache.c). - - * sysdeps/generic/dl-cache.c (SEARCH_CACHE): New macro, broken out - from _dl_load_cache_lookup. - (_dl_load_cache_lookup): Move search to SEARCH_CACHE macro, handle - the different cache formats. - New variable cache_new for new format. - - * elf/ldconfig.h: Change according to changes in cache.c and - ldconfig.c; remove cache_libcmp; add opt_format. - - * elf/ldconfig.c: Include "dl-cache.h" and "dl-procinfo.h"; remove - stuff that's defined in those headers. - Add hwcap to struct lib_entry. - (opt_format): New variable to select cache format. - (options): Add format parameter. - (is_hwcap): New function. - (path_hwcap): New function. - (parse_opt): Handle new format parameter. - (search_dir): Handle hwcap, search also subdirectories with hwcap. - - * elf/cache.c (_GNU_SOURCE): Removed. Not needed anymore since - ldconfig is part of glibc. - Include dl-cache.h and remove stuff that's defined there. - (struct cache_entry): Add new member hwcap. - (print_entry): Print hwcap, cleanup a bit. - (print_cache): Print new and old formats. - (compare): Use _dl_cache_libcmp from dl-cache.h; handle hwcap. - (save_cache): Save new and old formats. - (add_to_cache): Handle hwcap. - - * sysdeps/generic/dl-cache.c (_dl_cache_libcmp): Moved from here... - * sysdeps/generic/dl-cache.h (_dl_cache_libcmp): ...to here. - * sysdeps/generic/dl-cache.c (LD_SO_CACHE): Moved from here... - * sysdeps/generic/dl-cache.h (LD_SO_CACHE): ...to here. - * sysdeps/generic/dl-cache.c (CACHEMAGIC): Moved from here... - * sysdeps/generic/dl-cache.h (CACHEMAGIC): ...to here. - -2000-05-05 Bruno Haible - - * intl/dcigettext.c (alignof): New macro. - (_nl_find_msg): Use it instead of __alignof__. Pass correct output - buffer length to __gconv/iconv. If malloc (freemem_size) fails, set - freemem_size to 0. - -2000-05-05 Bruno Haible - - * intl/dcigettext.c (dcigettext): Fix interpretation of tsearch - return value. - -2000-05-06 Ulrich Drepper - - * intl/dcigettext.c (DCIGETTEXT): Always define local variable `index'. - (mempcpy): Correct typo is parameter list. - -2000-05-06 Andreas Jaeger - - * sysdeps/i386/fpu/bits/mathinline.h: Disable some inline - functions unless -ffast-math is given to gcc. - -2000-05-06 Ulrich Drepper - - * po/ko.po: Update from translation team. - -2000-05-05 Ulrich Drepper - - * sysdeps/unix/sysv/aix/linux/errnoconv.c: Moved to... - * sysdeps/unix/sysv/linux/powerpc/aix/errnoconv.c: ...here. - * sysdeps/unix/sysv/aix/linux/statconv.c: Moved to... - * sysdeps/unix/sysv/linux/powerpc/aix/statconv.c: ...here. - * sysdeps/unix/sysv/aix/linux/direntconv.c: Moved to... - * sysdeps/unix/sysv/linux/powerpc/aix/direntconv.c: ...here. - - * sysdeps/unix/sysv/aix/linux/linux-errno.h: Removed. - * sysdeps/unix/sysv/aix/linux/linux-stat.h: Removed - * sysdeps/unix/sysv/aix/linux/linux-dirent.h: Removed. - - * sysdeps/unix/sysv/linux/powerpc/aix/aix-dirent.h: New file. - * sysdeps/unix/sysv/linux/powerpc/aix/aix-errno.h: New file. - * sysdeps/unix/sysv/linux/powerpc/aix/aix-stat.h: New file. - * sysdeps/unix/sysv/linux/powerpc/aix/aix-termios.h: New file. - - * sysdeps/unix/sysv/linux/powerpc/aix/tcgetattr.c: New file. - * sysdeps/unix/sysv/linux/powerpc/aix/tcsetattr.c: New file. - -2000-05-05 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/sysdep.h: New file. - * sysdeps/unix/sysv/linux/ia64/syscall.S: New file. - - * sysdeps/unix/sysv/linux/ia64/bits/types.h: New file. - * sysdeps/unix/sysv/linux/ia64/bits/endian.h: New file. - - * sysdeps/ia64/Implies: New file. - * sysdeps/ia64/Versions: New file. Declare _dl_symbol_address. - * sysdeps/ia64/Makefile: New file. - * sysdeps/ia64/gmp-mparam.h: New file, - - * sysdeps/ia64/elf/start.S: New file. - - * sysdeps/ia64/bits/fenv.h: New file. - -2000-05-05 David Mosberger-Tang - - * sysdeps/unix/sysv/linux/ia64/sysdep.S: New file. - -2000-04-26 Jes Sorensen - - * sysdeps/unix/sysv/linux/ia64/bits/elfclass.h: New file. The - ia64 has 64 bit .hash entries just as the Alpha. - -2000-04-25 Jes Sorensen - - * sysdeps/ia64/memprof.h: New file. Provide GETSP() macro. - -2000-04-17 Jes Sorensen - - * sysdeps/ia64/fpu/fclrexcpt.c: New file. - * sysdeps/ia64/fpu/fedisblxcpt.c: New file. - * sysdeps/ia64/fpu/feenablxcpt.c: New file. - * sysdeps/ia64/fpu/fegetenv.c: New file. - * sysdeps/ia64/fpu/fegetexcept.c: New file. - * sysdeps/ia64/fpu/fegetround.c: New file. - * sysdeps/ia64/fpu/feholdexcpt.c: New file. - * sysdeps/ia64/fpu/fesetenv.c: New file. - * sysdeps/ia64/fpu/fesetround.c: New file. - * sysdeps/ia64/fpu/feupdateenv.c: New file. - * sysdeps/ia64/fpu/fgetexcptflg.c: New file. - * sysdeps/ia64/fpu/fraiseexcpt.c: New file. - * sysdeps/ia64/fpu/fsetexcptflg.c: New file. - * sysdeps/ia64/fpu/ftestexcept.c: New file. - -2000-05-05 Andreas Jaeger - - * misc/tst-tsearch.c (main): Correct type for initstate argument. - - * sysdeps/generic/dl-procinfo.h (_DL_HWCAP_COUNT): New. - (_dl_string_hwcap): New, does nothing. - - * sysdeps/unix/sysv/linux/i386/dl-procinfo.h (_DL_HWCAP_COUNT): New. - (_dl_procinfo): Use _DL_HWCAP_COUNT instead of a constant. - (_dl_string_hwcap): New function, converts from string to hwcap - encoding. - * sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h - (_DL_HWCAP_COUNT): New. - (_dl_procinfo): Use _DL_HWCAP_COUNT instead of a constant. - (_dl_string_hwcap): New function, converts from string to hwcap - encoding. - * sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.h - (_DL_HWCAP_COUNT): New. - (_dl_procinfo): Use _DL_HWCAP_COUNT instead of a constant. - (_dl_string_hwcap): New function, converts from string to hwcap - encoding. - -2000-05-05 Ulrich Drepper - - * elf/Makefile (distribute): Add dl-lookupcfg.h. - * sysdeps/ia64/Dist: New file. - - * elf/dl-load.c (_dl_map_object_from_fd): Little of computation of - parameter to mprotect and for variable assignments. - -2000-05-03 Jes Sorensen - - * sysdeps/generic/ldsodefs.h (LOOKUP_VALUE_ADDRESS): Check the - validity of map before dereferencing it. - - * elf/dl-reloc.c (RESOLVE_MAP): Define. - -2000-05-02 Jes Sorensen - - * elf/dl-runtime.c (fixup): Add the value returned in the symbol - lookup to the arguments to elf_machine_fixup_plt(). - - * sysdeps/ia64/dl-machine.h (elf_machine_fixup_plt): Add Link_map - of the symbol being resolved to input argument list and make the - function return the pointer to the reloc. - - * sysdeps/alpha/dl-machine.h (elf_machine_fixup_plt): Change - return valuie to lookup_t and return the value. - * sysdeps/arm/dl-machine.h (elf_machine_fixup_plt): Likewise. - * sysdeps/generic/dl-machine.h (elf_machine_fixup_plt): Likewise. - * sysdeps/i386/dl-machine.h (elf_machine_fixup_plt): Likewise. - * sysdeps/m68k/dl-machine.h (elf_machine_fixup_plt): Likewise. - * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_fixup_plt): Likewise. - * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_fixup_plt): Likewise. - - * sysdeps/powerpc/dl-machine.h (elf_machine_fixup_plt): Likewise. - Make it an inline function returning value after calling - __elf_machine_fixup_plt(). - - * elf/dl-sym.c (_dl_vsym): Use DL_SYMBOL_ADDRESS() to obtain the - symbol address. - - * elf/dl-symbol.c (_dl_symbol_value): Use LOOKUP_VALUE_ADDRESS to - obtain the symbol address. - - * sysdeps/generic/ldsodefs.h: Add generic DL_SYMBOL_ADDRESS() macro - depending on the definition of ELF_FUNCTION_PTR_IS_SPECIAL. - - * sysdeps/ia64/dl-machine.h: Add DL_SYMBOL_ADDRESS() macro calling - _dl_symbol_address() - this way DL_SYMBOL_ADDRESS() turns into an - inline on non ia64. - -2000-04-28 Jes Sorensen - - * elf/dl-runtime.c (fixup): Use the portable macros to get the - symbol address of an object. - - * elf/dl-runtime.c (fixup-profile): Use the portable macros to get - the symbol address of an object. - - * elf/dl-libc.c (struct do_dlsym_args): Change loadbase to a lookup_t. - * elf/dl-lookup.c (_dl_lookup_symbol): Likewise. - (_dl_lookup_symbol_skip): Likewise. - (_dl_lookup_versioned_symbol): Likewise. - (_dl_lookup_versioned_symbol_skip): Likewise. - -2000-04-27 Jes Sorensen - - * elf/rtld.c (_dl_start): Get the function pointer return address - via _dl_start_address for architectures that need a function - pointer descriptor rather than just a pointer (ia64). - - * sysdeps/generic/dl-lookupcfg.h: New file. - * sysdeps/ia64/dl-lookupcfg.h: New file. - * sysdeps/ia64/dl-machine.h: New file. - * sysdeps/ia64/dl-symaddr.c: New file. - * sysdeps/ia64/dl-fptr.c: New file. - - * elf/elf.h: Add IA-64 specific definitions. - -2000-05-04 Jakub Jelinek - - * sysdeps/generic/bits/confname.h (_SC* enum): Avoid comma at the - end of enum. - -2000-05-04 Jakub Jelinek - - * iconv/gconv.h (__gconv_t): Add __extension__ to make gcc -pedantic - happy. - -2000-04-11 Geoff Keating - - * sysdeps/powerpc/dl-start.S (_dl_start): Add _dl_start_user - symbol. Call _dl_init rather than the old way. - -2000-05-04 Ulrich Drepper - - * elf/dl-open.c (dl_open_worker): Use l_map_start and l_map_end to - test for pointer in range of DSO address space. - -2000-05-04 Andreas Jaeger - - * nscd/pwdcache.c (addpwbyname): Initialize oldeuid to silence GCC. - -2000-05-03 Ulrich Drepper - - * locale/findlocale.c (_nl_find_locale): Add new parameter to - calls of _nl_make_l10nflist. - - * libio/stdio.h: Make fseeko and ftello prototypes available is - __USE_LARGEFILE. Patch by Paul Eggert . - - * sysdeps/generic/dl-environ.c (unsetenv): Follow change to the - real unsetenv implementation from 1999-07-29 [PR libc/1714]. - -2000-05-03 Bruno Haible - - * intl/dcigettext.c (dcigettext): Do the defaulting of 'domainname' - before calling tfind. - -2000-03-05 Jakub Jelinek - - * resolv/resolv.h (res_querydomain): Remove redefinition to - __res_querydomain (reported by Owen Taylor ). - -2000-05-03 Ulrich Drepper - - * po/gl.po: Update from translation team. - - * manual/intro.texi (Program Basics): Change section title. - * manual/process.texi: Fix reference. - (Executing a File): Add reference exec in other section. - * manual/signal.texi: Fix reference. - * manual/startup.texi: Document syscall function. - Patches by Bryan Henderson . - -2000-04-29 Bruno Haible - - * intl/libintl.h (bind_textdomain_codeset): New declaration. - * intl/bindtextdom.c (set_binding_values): New function. - (bindtextdomain): Call it. - (bind_textdomain_codeset): New function. - * intl/dcigettext.c (dcigettext): Pass binding to _nl_find_domain. - (free_mem): Free each binding's codeset. - * intl/gettextP.h (struct binding): Add codeset field. - (_nl_find_domain): Add domainbinding argument. - * intl/finddomain.c (_nl_find_domain): Add domainbinding argument. - Pass it to _nl_make_l10nflist. - * intl/loadinfo.h (struct loaded_l10nfile): Add domainbinding field. - (_nl_make_l10nflist): Add domainbinding argument. - * intl/l10nflist.c (_nl_make_l10nflist): Add domainbinding argument. - * intl/loadmsgcat.c (_nl_load_domain): Look at the domainbinding's - codeset when determining outcharset. If !_LIBC && HAVE_ICONV, call - locale_charset(). - * manual/message.texi: New node "Charset conversion in gettext". - -2000-04-30 Bruno Haible - - * catgets/open_catalog.c (__open_catalog): Use __builtin_expect where - appropriate. Handle possible __read error. - -2000-04-29 Bruno Haible - - * intl/gettextP.h (__builtin_expect): Define as empty if not a - compiler builtin. - * intl/loadinfo.h (__builtin_expect): Likewise. - * intl/dcigettext.c (dcigettext, _nl_find_msg): Use - __builtin_expect where appropriate. - * intl/loadmsgcat.c (_nl_load_domain): Likewise. - * intl/localealias.c (extend_alias_table): Return an error indicator. - (read_alias_file): Bail out if extend_alias_table fails. - -2000-04-29 Bruno Haible - - * intl/loadmsgcat.c: Define _GNU_SOURCE as early as possible. - * intl/localealias.c: Likewise. - -2000-05-01 Bruno Haible - - * intl/loadmsgcat.c (_nl_load_domain): Initialize domain->conv_tab. - Initialize domain->plural and domain->nplurals even if there is no - nullentry. - -2000-05-01 Bruno Haible - - * intl/dcigettext.c (_nl_find_msg): Terminate __gconv loop if return - value is == __GCONV_OK or == __GCONV_EMPTY_INPUT, not != __GCONV_OK. - In case of failure, goto converted. - -2000-05-01 Bruno Haible - - * wcsmbs/wcsmbsload.c (norm_add_slashes): Move away. - * iconv/gconv_int.h (norm_add_slashes): Move to here. - * intl/loadmsgcat.c (_nl_load_domain): Normalize strings passed to - __gconv_open. - -2000-04-29 Bruno Haible - - * intl/dcigettext.c (transcmp): Compare the domains as well. - (dcigettext): Call strlen (msgid1) after testing msgid1 against NULL, - not before. - * intl/loadmsgcat.c (_nl_load_domain): Deal with EINTR. Include - . - -2000-05-03 Ulrich Drepper - - * string/bits/string2.h: Declare __strdup and __strndup if necessary. - Reported by Bruno Haible. - -2000-04-29 Bruno Haible - - * manual/arith.texi: Remove @w from @itemize. - -2000-05-02 Andreas Jaeger - - * conform/data/tar.h-data: Add some checks for specific values. - - * conform/data/stdlib.h-data: Add checks for value of EXIT_SUCCESS - and RAND_MAX. - - * conform/data/stdio.h-data: Add checks for value of TMP_MAX and - FOPEN_MAX. - - * conform/data/netinet/in.h-data: Add exact checks for the values - fo INET_ADDRSTRLEN and INET6_ADDRSTRLEN. - - * conform/data/float.h-data: Add some minimal values. - - * conform/conformtest.pl: Test for macros with string constants, - check for minimum and maximum values. - Add limits.h to headers. - - * conform/data/cpio.h-data: Test for value of MAGIC. - - * conform/data/limits.h-data: New file. - -2000-04-30 Bruno Haible - - * math/Makefile (headers): Add bits/fenvinline.h. - -2000-05-01 Ulrich Drepper - - * sysdeps/unix/sysv/aix/linux/linux-dirent.h: New file. - * sysdeps/unix/sysv/aix/linux/direntconv.c: New file. - - * posix/Versions: Change posix_spawnattr_getdefault and - posix_spawnattr_setdefault to posix_spawnattr_getsigdefault - and posix_spawnattr_setsigdefault respectively. - * posix/spawn.h: Likewise. - * posix/spawnattr_getdefault.h: Likewise. - * posix/spawnattr_setdefault.h: Likewise. - * conform/data/spawn.h-data: Likewise. - -2000-05-01 Andreas Jaeger - - * nscd/nscd.c: Include for setgroups prototype. - -2000-04-30 Ulrich Drepper - - * manual/sysinfo.texi: Document getdomainname, setdomainname - and sysctl. - * manual/string.texi: Fix typo. - * manual/terminal.texi: Document gtty and stty. - Patch by Bryan Henderson . - -2000-04-30 Andreas Jaeger - - * posix/bits/posix1_lim.h (_POSIX_PATH_MAX): Increase to 256 in - accordance with Austin Draft. - -2000-04-30 Ulrich Drepper - - * catgets/gencat.c (read_input_file): Use isblank and not isspace - to recognize second character in comment line. - - * sysdeps/unix/sysv/linux/if_index.c (if_nameindex): Set errno to - ENOBUFS if we are out of memory. - - * sysdeps/generic/bits/fcntl.h (F_SETOWN, F_GETOWN): Make - available if __USE_XOPEN2K. - * sysdeps/mach/hurd/bits/fcntl.h: Likewise. - * sysdeps/unix/common/bits/fcntl.h: Likewise. - * sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Likewise. - * sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise. - * sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise. - * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise. - * sysdeps/unix/sysv/aix/bits/fcntl.h: Likewise. - * sysdeps/unix/sysv/linux/bits/fcntl.h: Likewise. - -2000-04-29 Ulrich Drepper - - * iconv/iconv_prog.c (main): Handle input file name "-" correctly. - Recognize option -s, -c, and -l. - -2000-04-20 Thorsten Kukuk - - * nscd/nscd.c: Start new session for nscd, drop privilegs - to configured user if requested and no -S parameter are used. - * nscd/nscd.conf: Add new option "server-user". - * nscd/nscd_conf.c: Add support for new "server-user" option. - * nscd/nscd.h: Add declaration for server_user variable. - Based on patch by Chris Wing - -2000-04-29 Mark Kettenis - - * sysdeps/unix/sysv/linux/i386/sigaction.c: Add comment explaining - that changing the __restore and __restore_rt signal return code - will break GDB. - -2000-04-29 Mark Kettenis - - * sysdeps/unix/sysv/linux/i386/sys/ucontext.h: Do not include - . - -2000-04-29 Mark Kettenis - - * conform/data/ucontext.h-data: Allow ss_* instead of SS_*. - -2000-04-29 Ulrich Drepper - - * conform/conformtest.pl (@headers): Add sys/utsname.h, sys/un.h, - sys/socket.h, spawn.h, netinet/tcp.h, netinet/in.h, net/if.h, and - arpa/inet.h. - * conform/data/fcntl.h-data: Add F_GETOWN, F_SETOWN, - SEEK_SET, SEEK_CUR, SEEK_END, S_IFMT, S_IFBLK, S_IFCHR, S_IFIFO, - S_IFREG, S_IFDIR, S_IFLNK, S_IFSOCK, S_IRWXU, S_IRUSR S_IWUSR, - S_IXUSR, S_IRWXG, S_IRGRP, S_IWGRP, S_IXGRP, S_IRWXO, S_IROTH, - S_IWOTH, S_IXOTH, S_ISUID, S_ISGID, S_ISVTX, POSIX_FADV_NORMAL, - POSIX_FADV_SEQUENTIAL, POSIX_FADV_RANDOM, POSIX_FADV_WILLNEED, - POSIX_FADV_DONTNEED, POSIX_FADV_NOREUSE, posix_fadvise, - posix_fallocate, and posix_madvise. - * conform/data/netdb.h-data: New file. - * conform/data/pthread.h-data: Add pthread_barrier_t, - pthread_barrierattr_t, pthread_barrier_destroy, - pthread_barrier_init, pthread_barrier_wait, - pthread_barrierattr_destroy, pthread_barrierattr_getpshared, - pthread_barrierattr_init, pthread_barrierattr_setpshared, - pthread_condattr_getclock, pthread_condattr_setclock, - pthread_getcpuclockid, pthread_mutex_timedlock, - pthread_rwlock_timedrdlock, pthread_rwlock_timedwrlock, - pthread_sigmask, pthread_spin_destroy, pthread_spin_init, - pthread_spin_lock, pthread_spin_trylock, and pthread_spin_unlock. - * conform/data/sched.h-data: Add sched_ss_low_priority, - sched_ss_repl_period, sched_ss_init_budget, sched_ss_max_repl, and - SCHED_SPORADIC. - * conform/data/semaphore.h-data: Add sem_timedwait. - * conform/data/signal.h-data: Add SIGIO. - * conform/data/spawn.h-data: New file. - * conform/data/stdlib.h-data: Add posix_memalign, setenv, and unsetenv. - * conform/data/time.h-data: Add CLOCK_PROCESS_CPUTIME_ID, - CLOCK_THREAD_CPUTIME_ID, clock_getcpuclockid, and clock_nanosleep. - Fix typo in gmtime_r definition. - * conform/data/unistd.h-data: Add _POSIX_ADVISORY_INFO, - _POSIX_ASYNCHRONOUS_IO, _POSIX_BARRIERS, _POSIX_MONOTONIC_CLOCK, - _POSIX_READER_WRITER_LOCKS, _POSIX_SHELL, _POSIX_SPAWN, - _POSIX_SPIN_LOCKS, _POSIX_SPORADIC_SERVER, _POSIX_THREAD_CPUTIME, - _POSIX_TYPED_MEMORY_OBJECTS, _POSIX_THREAD_SPORADIC_SERVER, - _XOPEN_STREAMS, _POSIX_TIMEOUTS, _POSIX2_PBS, - _POSIX2_PBS_ACCOUNTING, _POSIX2_PBS_CHECKPOINT, - _POSIX2_PBS_LOCATE, _POSIX2_PBS_MESSAGE, _POSIX2_PBS_TRACK, - _SC_2_PBS, _SC_2_PBS_ACCOUNTING, _SC_2_PBS_CHECKPOINT, - _SC_2_PBS_LOCATE, _SC_2_PBS_MESSAGE, _SC_2_PBS_TRACK, - _SC_BARRIERS, _SC_BASE, _SC_CLOCK_SELECTION, _SC_DEVICE_IO, - _SC_DEVICE_SPECIFIC, _SC_DEVICE_SPECIFIC_R, _SC_FD_MGMT, _SC_FIFO, - _SC_FILE_ATTRIBUTES, _SC_FILE_LOCKING, _SC_FILE_SYSTEM, - _SC_MEMORY_PROTECTION, _SC_MESSAGE_PASSING, _SC_MONOTONIC_CLOCK, - _SC_MESSAGE_PASSING, _SC_MONOTONIC_CLOCK, _SC_MULTIPLE_PROCESS, - _SC_NETWORKING, _SC_PIPE, _SC_READER_WRITER_LOCKS, _SC_REGEXP, - _SC_SHELL, _SC_SIGNALS, _SC_SINGLE_PROCESS, _SC_SPIN_LOCKS, - _SC_TYPED_MEMORY_OBJECTS, _SC_USER_GROUPS, _SC_USER_GROUPS_R, - _SC_STREAMS, _PC_REC_INCR_XFER_SIZE, _PC_REC_MAX_XFER_SIZE, - _PC_REC_MIN_XFER_SIZE, _PC_REC_XFER_ALIGN, setegid, seteuid. Fix - typo in off_t definition. - * conform/data/net/if.h-data: New file. - * conform/data/netinet/in.h-data: New file. - * conform/data/netinet/tcp.h-data: New file. - * conform/data/sys/mman.h-data: Add POSIX_MADV_NORMAL, - POSIX_MADV_SEQUENTIAL, POSIX_MADV_RANDOM, POSIX_MADV_WILLNEED, - POSIX_MADV_DONTNEED, POSIX_TYPED_MEM_ALLOCATE, - POSIX_TYPED_MEM_ALLOCATE_CONTIG, POSIX_TYPED_MEM_MAP_ALLOCATABLE, - posix_typedmem_info, posix_mem_offset, posix_typed_mem_get_info, - and posix_typed_mem_open. - * conform/data/sys/socket.h-data: New file. - * conform/data/sys/stat.h-data: Add S_TYPEISTMO and isfdtype. - * conform/data/sys/types.h-data: Add pthread_barrier_t, - pthread_barrierattr_t, and pthread_spinlock_t. - * conform/data/sys/un.h-data: New file. - * conform/data/sys/utsname.h-data: New file. - - * include/netdb.h (__gethostbyaddr_r): Fix types of first and second - parameter. - * inet/gethstbyad.c (gethostbyname): Likewise. - * inet/gethstbyad_t.c (gethostbyname_r): Likewise. - * inet/getipnodebyad.c (getipnodebyad): Likewise. - * nis/nss_nis/nis-hosts.c (_nss_nis_gethostbyaddr_r): Likewise. - * nis/nss_nisplus/nisplus-hosts.c (_nss_nisplus_gethostbyaddr_r): + (_nss_nisplus_setnetgrent): Likewise. + * nis/nss_nisplus/nisplus-spwd.c (_nss_nisplus_setspent): Likewise. + * nis/nss_nisplus/nisplus-pwd.c (_nss_nisplus_setpwent): Likewise. + * nis/nss_nisplus/nisplus-grp.c (_nss_nisplus_setgrent): Likewise. + * nis/nss_nisplus/nisplus-network.c (_nss_nisplus_setnetent): Likewise. - * nscd/gethstbyad_r.c (gethostbyaddr_r): Likewise. - * nscd/nscd_gethst_r.c (__nscd_gethostbyaddr_r): Likewise. - * nscd/nscd_proto.h (__nscd_gethostbyaddr_r): Likewise. - * nss/nss_files/files-hosts.c (_nss_files_gethostbyaddr_r): Likewise. - * resolv/gethnamaddr.c (gethostbyname): Likewise. - * resolv/netdb.h (struct hostent): Fix type of h_length member. - (gethostbyaddr, getipnodebyaddr, gethostbyaddr_r): Fix types of first - and second parameter. - - * wcsmbs/mbrtowc.c (__mbrtowc): Set end of buffer correctly if s - == NULL. - -2000-04-29 Andreas Jaeger - - * conform/data/arpa/inet.h-data: New file. - -2000-04-28 Geoff Clare - - * io/ftw.c: Set errno to ENOENT (instead of ENOTDIR) when the - path passed to ftw() or nftw() is an empty string. - Closes PR libc/1710. - -2000-04-27 Ulrich Drepper - - * localedata/Makefile (test-srcs): Add tst-mbswcs4 and tst-mbswcs5. - (do-tst-mbswcs): Add tst-mbswcs4 and tst-mbswcs5 to dependencies. - * localedata/tst-mbswcs.sh: Run tst-mbswcs4 and tst-mbswcs5. - * localedata/tst-mbswcs4.c: New file. - * localedata/tst-mbswcs5.c: New file. - - * wcsmbs/wcrtomb.c (__wcrtomb): Set end of buffer correctly if s - == NULL. Little optimization. - - * elf/dl-init.c (_dl_init): Correct typo (DT_PREINIT_ARRAY not - DT_PREINIT_ARRAYSZ). - Reported by Jes Sorensen . - - * hesiod/nss_hesiod/hesiod-grp.c (_nss_hesiod_initgroups): Handle - overflows in conversion from ASCII. - -2000-04-26 Jakub Jelinek - - * Makeconfig (full_config_sysdirs): Renamed from full-config-sysdirs. - * Makerules (full_config_sysdirs): Likewise. - * MakeTAGS (full_config_sysdirs): Likewise. - -2000-04-26 Jakub Jelinek - - * .cvsignore: Remove linuxthreads. - * po/.cvsignore: Remove *.pot. - * posix/glob/.cvsignore: Removed. - * sysdeps/unix/bsd/osf/.cvsignore: Removed. - -2000-04-25 Andreas Jaeger - - * conform/Makefile (distribute): Also distribute contents of - subdirectories. - - * Makerules (no_deps): Remove abi-versions.h. - - * nis/nis_print_group_entry.c: Include alloca.h for alloca prototype. - -2000-04-25 Jakub Jelinek - - * sysdeps/sparc/sparc64/elf/Dist: Remove. - * sysdeps/sparc/sparc64/elf/crtbegin.S: Remove. - * sysdeps/sparc/sparc64/elf/crtbeginS.S: Remove. - * sysdeps/sparc/sparc64/elf/crtend.S: Remove. - * sysdeps/sparc/sparc64/elf/crtendS.S: Remove. - * sysdeps/sparc/sparc64/elf/Makefile: Don't build crtbegin/crtend - objects. - -2000-04-25 Thorsten Kukuk - - * nscd/grpcache.c: Fix gr_name pointer [PR/1702]. - -2000-04-23 Bruno Haible - - * intl/dcigettext.c: Define _GNU_SOURCE as early as possible. - * intl/l10nflist.c: Likewise. - -2000-04-23 Bruno Haible - - * intl/bindtextdom.c [!_LIBC]: Define __libc_rwlock_define, - __libc_rwlock_wrlock, __libc_rwlock_unlock as empty. - * intl/textdomain.c [!_LIBC]: Likewise. - * intl/dcigettext.c [!_LIBC]: Define __libc_rwlock_define_initialized, - __libc_rwlock_rdlock, __libc_rwlock_unlock as empty. - * intl/loadmsgcat.c (_nl_load_domain) [!_LIBC, !HAVE_ICONV]: Avoid - syntax error. - -2000-04-23 Bruno Haible - - * intl/dcigettext.c (_nl_find_msg): Do the plural treatment and - character set conversion also in the case the translation was found - after a hash collision or through binary search. Store the maximum - index together with the converted message. Use iconv() when available. - In case of out of memory during conversion, return the unconverted - translated string, not NULL. - -2000-04-25 Jes Sorensen - - * shlib-versions: Rename ia64 dynamic linker to ld-linux-ia64.so.1 - to avoid name clashes with the ia32 linker. - -2000-04-25 Jakub Jelinek - - * sysdeps/alpha/dl-machine.h (_dl_start_user): Fix the _dl_skip_args - handling. - -2000-04-27 Ulrich Drepper - - * manual/string.texi: Document strcasestr, strchrnul, strtoimax, - strtoumax, strfry, and memfrob. - * manual/arith.texi: Document {,u}int*_t types, and strto{i,u}max. - Patch by Bryan Henderson . + * nis/nss_nisplus/nisplus-hosts.c (_nss_nisplus_sethostent): + Likewise. + * nis/nss_nisplus/nisplus-service.c (_nss_nisplus_setservent): + Likewise. + * nis/nss_nisplus/nisplus-proto.c (_nss_nisplus_setprotoent): + Likewise. + * nis/nss_compat/compat-spwd.c (_nss_compat_setspent): Likewise. + * nis/nss_compat/compat-pwd.c (_nss_compat_setpwent): Likewise. + * nis/nss_compat/compat-grp.c (_nss_compat_setgrent): Likewise. + * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyaddr_r): Likewise. + * resolv/nss_dns/dns-network.c (_nss_dns_getnetbyname_r): Likewise. + (_nss_dns_getnetbyaddr_r): Likewise. - * elf/soinit.c (__libc_global_ctors): Call __pthread_initialize_minimal - if this function is available. +2000-12-17 Andreas Jaeger - * sysdeps/i386/i486/atomicity.h (exchange_and_add): Use uint32_t for - all values. + * sysdeps/generic/k_sinl.c (__kernel_sinl): Fix functions + parameter. -2000-04-27 Jakub Jelinek + * sysdeps/unix/sysv/linux/shm_open.c (freeit): Make static and add + unused attribute to shut up gcc warnings. - * nss/getXXbyYY_r.c: Fix a typo in __old_getxxbyyy_r versioning. + * sysdeps/generic/k_sinl.c: Include math_private for prototypes. + * sysdeps/generic/k_tanl.c: Likewise. + * sysdeps/generic/k_cosl.c: Likewise. + * sysdeps/generic/e_j0l.c: Likewise. + * sysdeps/generic/e_j1l.c: Likewise. + * sysdeps/generic/e_jnl.c: Likewise. + * sysdeps/generic/e_lgammal_r.c: Likewise. -2000-04-27 Ulrich Drepper + * elf/vismain.c: Move prototypes for functions in vismod*.c to + vismod.h. + * elf/vismod.h: New file. + * elf/Makefile (distribute): Add vismod.h. + * elf/vismod1.c: Include vismod.h. + * elf/vismod2.c: Likewise. + * elf/vismod3.c: Likewise. - * localedata/Makefile (test-srcs); Add tst-mbswcs3. - Add rule to build tst-mbswcs3 before running tst-mbswcs.sh. - * localedata/tst-mbswcs.sh: Run tst-mbswcs3. - * localedata/tst-mbswcs3.c: New file. + * elf/constload3.c: Add prototype declarations to shut up gcc. + * elf/failobj.c: Likewise. + * elf/nodelmod3.c: Likewise. + * elf/filtmod1.c: Likewise. + * elf/filtmod2.c: Likewise. + * elf/reldepmod1.c: Likewise. + * elf/reldepmod2.c: Likewise. + * elf/reldepmod3.c: Likewise. + * elf/reldepmod4.c: Likewise. + * elf/unload2dep.c: Likewise. + * elf/unload2mod.c: Likewise. + * elf/ltglobmod1.c: Likewise. + * elf/pathoptobj.c: Likewise. + * elf/neededobj1.c: Likewise. + * elf/neededobj2.c: Likewise. + * elf/neededobj3.c: Likewise. + * elf/neededobj4.c: Likewise. + * elf/nextmod1.c: Likewise. + * elf/nextmod2.c: Likewise. -2000-04-26 Ulrich Drepper + * locale/programs/ld-collate.c (collate_finish): Don't use labels + at end of compound statement. + * locale/programs/locale.c (show_info): Likewise. + * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyaddr_r): Likewise. - * wcsmbs/mbsnrtowcs.c: Correctly compute number of converted - characters. Don't handle incomplete characters as errors. - * wcsmbs/mbsrtowcs.c: Don't handle incomplete characters as errors. - * localedata/Makefile (test-srcs): Add tst-mbswcs2. - Add rule to build tst-mbswcs2 before running tst-mbswcs.sh. - * localedata/tst-mbswcs.sh: Run tst-mbswcs2. - * localedata/tst-mbswcs2.c: New file. +2000-12-16 Jakub Jelinek - * iconv/gconv_simple.c (utf8_internal_loop): Correctly reconstruct - stored character in state in UNPACK_BYTES macro. - * iconv/loop.c (SINGLE(LOOPFCT)): Make it actually work. Correct - test for available characters, handle result of BODY code correctly. - * localedata/Makefile (test-srcs): Add tst-mbswcs1. - (distribute): Add tst-mbswcs.sh. - Add rule to run tst-mbswcs.sh. - * localedata/tst-mbswcs.sh: New file. - * localedata/tst-mbswcs1.c: New file. + * catgets/gencat.c (read_input_file): Avoid calling obstack_free + with a pointer not returned by obstack_ functions. -2000-04-26 Jakub Jelinek +2000-12-16 Ulrich Drepper - * nis/nis_callback.c (__nis_create_callback): Do failed memory - allocation fixups centrally, fix __builtin_expect call, return NULL - on failure, not NIS_NOMEMORY. + * sysdeps/unix/sysv/aix/bits/stat.h (struct stat): Align with AIX + version. + (struct stat64): Likewise. + Reported by Michael Keezer . -2000-04-27 Bruno Haible + * timezone/asia: Update from tzdata2000h. + * timezone/australasia: Likewise. + * timezone/backward: Likewise. + * timezone/europe: Likewise. + * timezone/northamerica: Likewise. + * timezone/southamerica: Likewise. + * timezone/zone.tab: Likewise. - * intl/ngettext.c [!_LIBC]: Fix definition of NGETTEXT. +2000-12-14 Jakub Jelinek - * intl/loadinfo.h (internal_function): Define if not already defined. + * io/ftw.c (ftw_dir): If process_entry returned non-zero result + and dir.stream is NULL, only free dir.content. + * io/ftwtest.c (cb, main): Add --early-exit option to test it. + * io/ftwtest-sh: Test with --early-exit. -2000-04-27 Andreas Jaeger +2000-12-13 Jakub Jelinek - * intl/libintl.h: Fix typo, reported by Bruno Haible - . + * misc/efgcvt.c (FCVT_MAXDIG): Define. + (FCVT_BUFPTR): New variable. + (fcvt): If fcvt_r returns -1 on the static short buffer, + try to malloc a sufficiently large one and retry. + (free_mem): New function. + * misc/qefgcvt.c (FCVT_MAXDIG): Define. + * misc/tst-efgcvt.c (fcvt_tests): Add new test. -2000-04-25 Ulrich Drepper +2000-12-15 Ulrich Drepper - * elf/dl-profile.c (_dl_mcount): Try to be thread-safe while not - setting the state to GMON_PROF_BUSY. + * misc/dirname.c (dirname): Fix search for second to last slash. -2000-04-24 Ulrich Drepper +2000-12-13 Andreas Jaeger - * elf/dl-profile.c (_dl_start_profile): define all variables which - do not have to be global as local variables. + * misc/tst-dirname.c (main): Fix typo in test to really use + the examples from Unix98. + Reported by Michael Kerrisk . - * nis/nis_callback.c (__nis_create_callback): Partially undo last - patch. Keep needed tests for failed memory allocation. +2000-12-09 H.J. Lu - * elf/dl-reloc.c (_dl_relocate_object): Add one more - __builtin_expect saying that we don't normally expect to profile. + * sysdeps/ia64/fpu/s_fabs.S: New file. + * sysdeps/ia64/fpu/s_fabsf.S: New file. + * sysdeps/ia64/fpu/s_fabsl.S: New file. - * sysdeps/i386/dl-machine.h (elf_machine_rel): Add - __builtin_expect where desirable. +2000-12-15 Andreas Jaeger -2000-04-23 Ulrich Drepper + * stdio-common/scanf9.c (main): Reformat and change to avoid + warnings. - * manual/Makefile (chapters): Add syslog. - * manual/syslog.texi: New file. - * manual/math.texi: Fix references. - * manual/terminal.texi: Likewise. - Patch by Bryan Henderson . + * stdio-common/tstdiomisc.c: Make local functions static. + * stdio-common/tst-printf.c: Likewise. -2000-04-18 Jakub Jelinek + * elf/constload2.c: Add prototype declarations to shut up gcc. + * elf/dep1.c: Likewise. + * elf/dep2.c: Likewise. + * elf/dep3.c: Likewise. + * elf/dep4.c: Likewise. + * elf/ltglobmod2.c: Likewise. - * posix/sys/wait.h: Define __WAIT_STATUS and the like either if - stdlib.h was not included or __USE_XOPEN not defined. + * libio/fmemopen.c: Make local functions static. -2000-04-23 Ulrich Drepper + * elf/Makefile (distribute): Added testobj.h. - * nss/Makefile (libnss_db-dbs): Remove stray backslash. - Patch by Zack Weinberg . + * elf/testobj.h: New file. -2000-04-22 Ulrich Drepper + * elf/testobj1.c: Include testobj.h and move prototype + declarations to testobj.h. + * elf/testobj2.c: Likewise. + * elf/testobj3.c: Likewise. + * elf/testobj4.c: Likewise. + * elf/testobj5.c: Likewise. + * elf/testobj6.c: Likewise. + * elf/testobj1_1.c: Likewise. + * elf/preloadtest.c: Likewise. - * manual/examples/subopt.c (mount_opts): Add missing terminating - entry. - Reported by Michael Deutschmann . +2000-12-15 Ben Collins - * assert/assert-perr.c: Include for abort prototype. - * libio/ftello.c: Likewise. - * libio/ftello64.c: Likewise. - * libio/ioftell.c: Likewise. - * sysdeps/generic/memrchr.c: Likewise. - * sysdeps/posix/libc_fatal.c: Likewise. - * sysdeps/unix/sysv/linux/init-first.c: Likewise. - * misc/fstab.c: Include for strcmp prototype. - * sysdeps/generic/ldsodefs.h: Likewise. - * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise. - Patch by Kurt Roeckx . + * misc/sys/cdefs.h: Fix thinko in checks for flexarr macros. + Patch by Akim Demaille in Debian bug report. - * nss/Makefile (libnss_db-dbs): Renamed from libnss_db-routines. - Remove db-open. Change all uses. - (libnss_db-routines): Define as $(libnss_db-dbs) db-open. +2000-12-14 H.J. Lu -2000-04-21 Jakub Jelinek + * sysdeps/ieee754/flt-32/s_sincosf.c (__sincosf): The exponent + field in a float is 8 bits, not 11 bits. - * sysdeps/unix/sysv/linux/alpha/msgctl.c (__syscall_msgctl): Declare. - * sysdeps/unix/sysv/linux/alpha/semctl.c (__syscall_semctl): Declare. - * sysdeps/unix/sysv/linux/alpha/shmctl.c (__syscall_shmctl): Declare. - * sysdeps/unix/sysv/linux/alpha/getrusage.S: Surround uses of $f28 - with .set noat/at to shut up warnings. - * sysdeps/unix/sysv/linux/alpha/syscalls.list (__fstatfs64): Add alias. - * sysdeps/unix/sysv/linux/alpha/ioperm.c (init_iosys): Allow - compilation if __NR_pciconfig_iobase is not defined. - * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list (__fstatfs64): - Add alias. +2000-12-13 Jakub Jelinek -2000-04-21 Ulrich Drepper + * math/test-misc.c (main): Adjust m for IEEE quad long double. - * manual/sysinfo.texi: Fix typo. - * manual/time.texi: Document timelocal, timegm, adjtimex, and stime. - Replace "high precision time" with "high accuracy clock". - Fix language. - Patches by Bryan Henderson . +2000-12-13 Andreas Jaeger - * nis/nis_findserv.c (__nis_findfastest): Improve memory handling. - * nis/nis_print_group_entry.c (nis_print_group_entry): Use alloca - instead of malloc. - * nis/nis_subr.c: Use __builtin_expect. - * nis/ypclnt.c: Likewise. - * nis/nis_getservlist.c: Likewise. - * nis/nis_creategroup.c: Likewise. + * manual/message.texi (Using gettextized software): Fix typo. - * nis/nis_callback.c (__nis_create_callback): Check result of - memory allocation. Fix memory leaks. Use __builtin_expect. - (__nis_destroy_callback): Fix memory leaks. + * manual/charset.texi (Converting a Character): Fix mbstouwcs + program to compile. + Patch by Martin Buchholz . -2000-04-21 Andreas Jaeger + * sysdeps/unix/sysv/linux/sigpending.c (sigpending): Fix typo. + Reported by Michael Kerrisk . - * sysdeps/mips/elf/start.S: Use __PIC__ instead of PIC. - * sysdeps/mips/mips64/add_n.S: Likewise. - * sysdeps/mips/mips64/bsd-_setjmp.S: Likewise. - * sysdeps/mips/mips64/lshift.S: Likewise. - * sysdeps/mips/mips64/mul_1.S: Likewise. - * sysdeps/mips/mips64/rshift.S: Likewise. - * sysdeps/mips/mips64/setjmp.S: Likewise. - * sysdeps/mips/mips64/sub_n.S: Likewise. - * sysdeps/mips/mips64/submul_1.S: Likewise - * sysdeps/unix/mips/sysdep.S: Likewise. +2000-12-11 Andreas Jaeger - * sysdeps/mips/dl-machine.h (elf_machine_got_rel): Remove strtab - and update comment. The strtab from _dl_relocate_object can be - used. + * sysdeps/unix/sysv/linux/mips/kernel_sigaction.h: Declare + kernel_sigset_t and use it. + Patch by Hiroyuki Machida . -2000-04-21 Ulrich Drepper +2000-12-10 Richard Henderson - * iconv/iconv.c (iconv): Add __builtin_expect where useful. - * iconv/iconv_close.c (iconv_close): Likewise. - * iconv/iconv_open.c (iconv_open): Likewise. + * sysdeps/alpha/alphaev67/fpu/Implies: New file. + * sysdeps/alpha/alphaev6/fpu/e_sqrtf.S: New file. + * sysdeps/alpha/alphaev6/fpu/e_sqrt.S: New file. - * grp/putgrent.c (putgrent): Unlock steam if fprintf failed. Add - __builtin_expect where useful. +2000-12-10 Jakub Jelinek - * grp/initgroups.c (initgroups): Test for result of memory - allocation and punt if it fails. + * sysdeps/alpha/htonl.S: Fix a typo. - * dirent/scandir.c (scandir): Add __builtin_expect where useful. - * grp/fgetgrent.c (fgetfrent): Likewise. - * grp/fgetgrent_r.c (__fgetgrent_r): Likewise. +2000-12-10 Jakub Jelinek -2000-04-21 Jakub Jelinek + * sysdeps/alpha/alphaev6/stxcpy.S: Exchange t8 with t10. - * libio/vasprintf.c: Include string.h to get memcpy prototype. +2000-12-10 Andreas Jaeger -2000-04-20 Ulrich Drepper + * locale/programs/ld-ctype.c (charclass_symbolic_ellipsis): Fixed + cast as suggested by Jakub Jelinek and Ulrich + Drepper . - * wcsmbs/wcsrtombs.c (__wcsrtombs): If output buffer is too small - don't search for NUL byte to decrement counter. - Reported by Ulrich.Brink@sap.com. +2000-12-09 Andreas Jaeger - * iconv/gconv_simple.c: Define separate functions to convert from - UCS4/UCS4-LE to the internal encoding. - * iconv/gconv_builtin.h: Use separate functions to convert from - UCS4/UCS4-LE to the internal encoding. - * iconv/gconv_int.h: Declare __gconv_transform_ucs4_internal and - __gconv_transform_ucs4le_internal. + * sysdeps/unix/sysv/linux/mips/sigaction.c: New file. - * iconv/gconv_simple.c (internal_utf8_loop): Correct check for - output buffer overflow. Reported by Ulrich.Brink@sap.com. + * sysdeps/unix/sysv/linux/mips/sys/acct.h: Removed, we can use the + generic version. + Patches by Hiroyuki Machida . - * iconv/skeleton.c: Add some more __builtin_expect. - * iconv/loop.c: Likewise. + * locale/programs/ld-collate.c (handle_ellipsis): Fix format + string. -2000-03-08 H.J. Lu + * locale/programs/ld-ctype.c (charclass_symbolic_ellipsis): Fix + format string. - * posix/regex.c (regex_compile): Correctly handle "\{" when - the RE_INTERVALS is set and the RE_NO_BK_BRACES bit is not set. + * nscd/hstcache.c (addhstbyname): Add cast to avoid warning. + * nscd/connections.c (handle_request): Likewise. + * nscd/pwdcache.c (addpwbyname): Likewise. + * nscd/grpcache.c (addgrbyname): Likewise. -2000-04-20 Ulrich Drepper + * nscd/nscd_conf.c (nscd_parse_file): Remove extra argument. - * manual/stdio.texi: Give advise about handling error when using - stream functions. - Patch by Michael Deutschmann . +2000-12-09 Ulrich Drepper -2000-04-19 Jakub Jelinek + * string/stratcliff.c: Add tests for stpncpy, memcpy, and mempcpy. - * locale/programs/ld-ctype.c (ctype_output): Set size of the idx - field to nelems * sizeof (uint32_t). - * locale/programs/ld-address.c (address_output): Align word fields - properly. - * locale/programs/ld-monetary.c (monetary_output): Likewise. - Don't restart idx pointers to idx end at the duo_int_curr_symbol - field. - Avoid giving arbitrary garbage in the crncystr field. - Use sizeof(uint32_t) instead of 4 for len in uno_valid_from, - uno_valid_to, duo_valid_from, duo_valid_to and conversion_rate - fields. - * locale/programs/ld-numeric.c (numeric_output): Likewise. - Don't restart idx pointers to idx end at the decimal_point_wc field. - * locale/programs/ld-time.c (time_output): week_1stday should be - word, not byte. Align it properly. + * Makeconfig (default_cflags): Make -O2 the default for stable + releases. -2000-04-19 H.J. Lu +2000-12-08 H.J. Lu - * csu/gmon-start.c (_start): Declared as "extern void". - (etext): Likewise. + * sysdeps/ia64/fpu/s_isinfl.S: Renamed to ... + * sysdeps/ia64/fpu/s_isinf.S: This. + Add a .pred.rel.mutex note to avoid false report. -2000-04-18 Andreas Jaeger + * sysdeps/ia64/fpu/s_isnanl.S: Renamed to ... + * sysdeps/ia64/fpu/s_isnan.S: This. - * manual/install.texi (Running make install): Don't mention utmpd - anymore. + * sysdeps/ia64/fpu/s_fpclassify.S: New file. + * sysdeps/ia64/fpu/s_fpclassifyf.S: New file. + * sysdeps/ia64/fpu/s_fpclassifyl.S: New file. + * sysdeps/ia64/fpu/s_isinff.S: New file. + * sysdeps/ia64/fpu/s_isinfl.S: New file. + * sysdeps/ia64/fpu/s_isnanf.S: New file. + * sysdeps/ia64/fpu/s_isnanl.S: New file. + * sysdeps/ia64/fpu/s_finite.S: New file. + * sysdeps/ia64/fpu/s_finitef.S: New file. + * sysdeps/ia64/fpu/s_finitel.S: New file. + * sysdeps/ia64/fpu/s_signbit.S: New file. + * sysdeps/ia64/fpu/s_signbitf.S: New file. + * sysdeps/ia64/fpu/s_signbitl.S: New file. + * sysdeps/ia64/fpu/s_copysign.S: New file. + * sysdeps/ia64/fpu/s_copysignf.S: New file. + * sysdeps/ia64/fpu/s_copysignl.S: New file. -2000-04-18 Andreas Jaeger +2000-12-08 Ulrich Drepper - * linuxthreads/Versions: Use ld instead of ld.so. + * math/libm-test.inc (main): Fix typos in messages. - * elf/Makefile (ld-map): Use ld.map. + * string/stratcliff.c: Add test for rawmemchr. - * Versions.def: Use ld instead of ld.so. - * elf/Versions: Likewise. - * sysdeps/mach/hurd/Versions: Likewise. +2000-12-08 Jakub Jelinek -2000-04-20 Andreas Jaeger + * elf/dl-open.c (_dl_open): If objname points right after errstring, + allocate it together with errstring using alloca. + * elf/dl-error.c (_dl_signal_error): If malloc failed, set objname + to "", because it might point to local stack. - * elf/rtld.c (print_statistics): Move ifndef further up. - (_dl_start_final): Added HP_TIMINIG_NONAVAIL to avoid warnings. - (dl_main): Likewise. +2000-12-05 H.J. Lu -2000-04-18 Ulrich Drepper + * nss/Makefile (routines): Add getnssent and getnssent_r. + * nss/nsswitch.h (__nss_setent): New internal NSS function. + (__nss_endent): Likewise. + (__nss_getent_r): Likewise. + (__nss_getent): Likewise. + * nss/getnssent_r.c: New file. + * nss/getnssent.c: New file. + * nss/getXXent.c (H_ERRNO_VAR): Updated. + (GETFUNC_NAME): Updated to call __nss_getent (). + * nss/getXXent_r.c (H_ERRNO_VAR_P): New. + (STAYOPEN_TMPVAR): Updated. + (STAYOPEN_VAR): Updated. + (SETFUNC_NAME): Updated to call __nss_setent (). + (ENDFUNC_NAME): Updated to call __nss_endent (). + (INTERNAL (REENTRANT_GETNAME)): Updated to call __nss_getent_r (). - * gmon/gmon.c: Add weak alias moncontrol for __moncontrol. - * gmon/Versions: Move moncontrol to GLIBC_2.2. +2000-12-08 Andreas Jaeger - * po/cs.po: Update from translation team. + * nscd/dbg_log.h (dbg_log): Correct attribute. - * sysdeps/generic/updwtmp.c: Remove daemon support. +2000-12-08 Jakub Jelinek - * login/Makefile (routines): Remove utmp_daemon. + * elf/dl-load.c (fillin_rpath): Don't assume there is '\0' at + cp + len. Compute where from dirname. + Reported by . - * sysdeps/unix/sysv/aix/gethostname.c: Fix type of len argument. - * sysdeps/unix/sysv/aix/access.c: Define ACC_INVOKER. - * sysdeps/unix/sysv/aix/getegid.c: Define ID_EFFECTIVE. - * sysdeps/unix/sysv/aix/geteuid.c: Likewise. +2000-12-08 Richard Henderson - * elf/rtld.c: Display statitics option also if hp timing is not - available. + * sysdeps/alpha/_mcount.S: Fix typo. + * sysdeps/alpha/strncpy.S: Likewise. - * login/programs/connection.c: Removed. - * login/programs/database.c Removed. - * login/programs/error.c: Removed. - * login/programs/request.c: Removed. - * login/programs/xtmp.c: Removed. - * login/programs/xtmp.h: Removed. - * login/Makefile: Remove rules for utmpd. - * login/README.utmpd: Removed. - * login/utmp_daemon.c: Removed. - * login/getutent_r.c: Remove references to daemon functions. - * login/utmp-private.h (__libc_utmp_daemon_functions): Remove - declaration. + * sysdeps/alpha/alphaev6/Implies: New file. + * sysdeps/alpha/alphaev67/Implies: New file. + * sysdeps/alpha/alphaev67/ffs.S: New file. + * sysdeps/alpha/alphaev67/ffsll.S: New file. + * sysdeps/alpha/alphaev67/rawmemchr.S: New file. + * sysdeps/alpha/alphaev67/stpcpy.S: New file. + * sysdeps/alpha/alphaev67/stpncpy.S: New file. + * sysdeps/alpha/rawmemchr.S: New file. + * sysdeps/alpha/strcat.S: Tail call to __stxcpy. + * sysdeps/alpha/strcpy.S: Likewise. -2000-04-18 Andreas Jaeger + From GMP 3.1.1: + * sysdeps/alpha/alphaev6/addmul_1.s: New file. - * shlib-versions (mips.*-.*-linux.*): Support only GLIBC 2.0 and - 2.2 for libnsl, libresolv, librt, libnss_*. + From rick.gorton@alpha-processor.com: + * sysdeps/alpha/alphaev6/memchr.S: New file. + * sysdeps/alpha/alphaev6/memcpy.S: New file. + * sysdeps/alpha/alphaev6/memset.S: New file. + * sysdeps/alpha/alphaev6/stxcpy.S: New file. + * sysdeps/alpha/alphaev6/stxncpy.S: New file. + * sysdeps/alpha/alphaev67/strcat.S: New file. + * sysdeps/alpha/alphaev67/strchr.S: New file. + * sysdeps/alpha/alphaev67/strlen.S: New file. + * sysdeps/alpha/alphaev67/strncat.S: New file. + * sysdeps/alpha/htonl.S: Use a shorter sequence. - * elf/rtld.c (process_dl_debug): Remove obsolete comment. +2000-12-08 Jakub Jelinek - * sysdeps/mips/dl-machine.h (elf_machine_rel): Fix relocation. + * inet/getnameinfo.c (getnameinfo): Fix NI_NOFQDN support. + Reported by . -2000-04-18 Ulrich Drepper +2000-12-07 Jes Sorensen - * sysdeps/unix/sysv/aix/geteuid.c: Don't try to include . - * sysdeps/unix/sysv/aix/getegid.c: Likewise. - * sysdeps/unix/sysv/aix/xstat64.c: Define STX_NORMAL and STX_64. - * sysdeps/unix/sysv/aix/xstat.c: Define STX_NORMAL. - * sysdeps/unix/sysv/aix/sys/param.h: Define NGROUPS. - * sysdeps/unix/sysv/aix/setreuid.c: Define ID_EFFECTIVE and ID_REAL. - * sysdeps/unix/sysv/aix/setregid.c: Likewise. - * sysdeps/unix/sysv/aix/setuid.c: Define ID_REAL. - * sysdeps/unix/sysv/aix/setgid.c: Likewise. - * sysdeps/unix/sysv/aix/seteuid.c: Define ID_EFFECTIVE. - * sysdeps/unix/sysv/aix/setegid.c: Likewise. - * sysdeps/unix/sysv/aix/sbrk.c: Update parameter type. - * sysdeps/unix/sysv/aix/nanosleep.c (struct timestruc_t): Define - it here. - * sysdeps/unix/sysv/aix/msync.c: New file. - * sysdeps/unix/sysv/aix/msgsnd.c: New file. - * sysdeps/unix/sysv/aix/net/if.h: New file. - * sysdeps/unix/sysv/aix/pipe.c: New file. - * sysdeps/unix/sysv/aix/poll.c: New file. - * sysdeps/unix/sysv/aix/rename.c: New file. - * sysdeps/unix/sysv/aix/rmdir.c: New file. - * sysdeps/unix/sysv/aix/select.c: New file. - * sysdeps/unix/sysv/aix/semctl.c: New file. - * sysdeps/unix/sysv/aix/semget.c: New file. - * sysdeps/unix/sysv/aix/semop.c: New file. - * sysdeps/unix/sysv/aix/sendto.c: New file. - * sysdeps/unix/sysv/aix/setgroups.c: New file. - * sysdeps/unix/sysv/aix/setpgid.c: New file. - * sysdeps/unix/sysv/aix/setpgrp.c: New file. - * sysdeps/unix/sysv/aix/setpriority.c: New file. - * sysdeps/unix/sysv/aix/setrlimit.c: New file. - * sysdeps/unix/sysv/aix/setrlimit64.c: New file. - * sysdeps/unix/sysv/aix/setsid.c: New file. - * sysdeps/unix/sysv/aix/setsockopt.c: New file. - * sysdeps/unix/sysv/aix/shmat.c: New file. - * sysdeps/unix/sysv/aix/shmctl.c: New file. - * sysdeps/unix/sysv/aix/shmdt.c: New file. - * sysdeps/unix/sysv/aix/shmget.c: New file. - * sysdeps/unix/sysv/aix/sigaltstack.c: New file. - * sysdeps/unix/sysv/aix/sigstack.c: New file. - * sysdeps/unix/sysv/aix/socket.c: New file. - * sysdeps/unix/sysv/aix/socketpair.c: New file. - * sysdeps/unix/sysv/aix/speed.c: New file. - * sysdeps/unix/sysv/aix/symlink.c: New file. - * sysdeps/unix/sysv/aix/sync.c: New file. - * sysdeps/unix/sysv/aix/tcgetattr.c: New file. - * sysdeps/unix/sysv/aix/tcsetattr.c: New file. - * sysdeps/unix/sysv/aix/times.c: New file. - * sysdeps/unix/sysv/aix/ulimit.c: New file. - * sysdeps/unix/sysv/aix/umask.c: New file. - * sysdeps/unix/sysv/aix/unlink.c: New file. - * sysdeps/unix/sysv/aix/ustat.c: New file. - * sysdeps/unix/sysv/aix/utimes.c: New file. + * sysdeps/ia64/elf/start.S (__data_start): Add __data_start variable. + Pointed out by Hans Boehm. -2000-04-18 Andreas Jaeger +2000-12-07 H.J. Lu - * manual/startup.texi (Environment Access): Fix putenv prototype - according to recent changes. - Reported by Andries Brouwer , closes - PR libc/1692. + * elf/dl-version.c (match_symbol): Check map->l_name[0] for printing. - * elf/rtld.c (print_statistics): Added HP_TIMINIG_NONAVAIL where - needed. +2000-12-07 Andreas Jaeger -2000-04-18 Ulrich Drepper + * misc/error.c: Add format attributes for __error and __error_at_line. - * posix/Makefile (tests): Add tst-getaddrinfo. - * posix/tst-getaddrinfo.c: New file. + * nscd/dbg_log.h: Add format attribute. -2000-04-17 Ulrich Drepper +2000-12-08 Ulrich Drepper - * manual/sysinfo.texi: Document that umount2 is not widely available. + * misc/sys/syslog.h: Add format attributes to syslog and vsyslog. + Patch by Joseph S. Myers . - * sysdeps/generic/hp-timing.h (HP_TIMING_NONAVAIL): Define to - signal timing is not really implemented. +2000-12-07 Dan Pop -2000-04-17 Andreas Jaeger + * sysdeps/ia64/strcpy.S: Fix a bug in a recovery code sequence. - * elf/rtld.c (process_dl_debug): Mention statistics in help message. +2000-12-06 Ulrich Drepper -2000-04-17 Jakub Jelinek + * sysdeps/unix/sysv/aix/Makefile [$(subdir)==misc] + (sysdep_routines): Add uitrunc. + * sysdeps/unix/sysv/aix/uitrunc.c: New file. + Patches by Michael Keezer . - * Makefile (install): Use slibdir and libdir instead of inst_slibdir - and inst_libdir. +2000-12-06 Roland McGrath -2000-04-17 Ulrich Drepper + * sysdeps/mach/hurd/ioctl.c (__ioctl): Don't clobber ARG as we copy in + argument data, since it will be used to copy out too (for INOUT). + Reported by Marcus Brinkmann . - * manual/intro.texi: Change reference from System Information to - System Management. - * manual/users.texi: Likewise. - * manual/conf.texi: Likewise. - * manual/sysinfo.texi: Document mount, umount, and umount2. - Patch by Bryan Henderson . + * sysdeps/mach/hurd/ioctl.c: Include . + (__ioctl): Use uintptr_t instead of unsigned long int. -2000-04-17 Jakub Jelinek +2000-12-06 Jim Wilson - * sysdeps/ieee754/ldbl-128/printf_fphex.c (PRINT_FPHEX_LONG_DOUBLE): - Create wnumstr as well as numstr to support wide character output - correctly. + * stdlib/l64a.c (l64a): Truncate M to 32-bit value. -2000-04-15 Jakub Jelinek +2000-12-06 Ulrich Drepper - * sysdeps/sparc/sparc64/Makefile: Remove sysdep-CFLAGS - modification and move it... - * sysdeps/unix/sysv/linux/sparc/sparc64/Makefile: ...here. - Add -melf64_sparc switch to $(LD) on sparc64-linux. - * sysdeps/unix/sysv/linux/sparc/sparc32/Makefile: Add -melf32_sparc - switch to $(LD) on sparc-linux. + * stdio-common/printf_fp.c (__printf_fp): Handle decimal point in + x.5 rounding correctly. -2000-04-17 Thorsten Kukuk +2000-12-06 Mark Kettenis - * sysdeps/unix/sysv/linux/sparc/sparc32/Makefile: Remove setresgid - and setresuid from sysdep_routines. + * stdio-common/perror.c (perror): Conditionalize code dealing with + wide-oriented streams on USE_IN_LIBIO. -2000-04-17 Ulrich Drepper +2000-12-06 Mark Kettenis - * manual/Makefile (chapters): Add resource. + * sysdeps/mach/hurd/dl-sysdep.c (_dl_sysdep_start_cleanup): Mark + as internal_function. - * manual/time.texi: Move section on resources to... - * manual/resource.texi: ...here. New file. Document ulimit, vlimit, - and vtimes. - * manual/setjmp.texi: Adjust back reference. - Patch by Bryan Henderson . +2000-12-05 Ulrich Drepper - * sysdeps/unix/sysv/aix/lxstat64.c: Uncomment STX_LINK and STX_64 - definition. - * sysdeps/unix/sysv/aix/lxstat.c: Uncomment STX_LINK definition. - * sysdeps/unix/sysv/aix/kill.c: Add copyright. - * sysdeps/unix/sysv/aix/getuid.c: Define ID_REAL. - * sysdeps/unix/sysv/aix/getgid.c: Define ID_REAL. - * sysdeps/unix/sysv/aix/execve.c: Add copyright. - * sysdeps/unix/sysv/aix/euidaccess.c: Add copyright. - * sysdeps/unix/sysv/aix/close.c: Add copyright. - * sysdeps/unix/sysv/aix/brk.c: Add copyright. - * sysdeps/unix/sysv/aix/bits/errno.h: Add EAFNOSUPPORT. - * sysdeps/unix/sysv/aix/access.c: Add copyright. - * sysdeps/unix/sysv/aix/Makefile: Add some temporary definitions. - * sysdeps/unix/sysv/aix/Implies: New file. - * sysdeps/unix/sysv/aix/Versions: New file. - * sysdeps/unix/sysv/aix/bind.c: New file. - * sysdeps/unix/sysv/aix/bits/ioctl-types.h: New file. - * sysdeps/unix/sysv/aix/bits/ioctls.h: New file. - * sysdeps/unix/sysv/aix/bits/poll.h: New file. - * sysdeps/unix/sysv/aix/bits/termios.h: New file. - * sysdeps/unix/sysv/aix/chdir.c: New file. - * sysdeps/unix/sysv/aix/chmod.c: New file. - * sysdeps/unix/sysv/aix/chroot.c: New file. - * sysdeps/unix/sysv/aix/creat.c: New file. - * sysdeps/unix/sysv/aix/dl-close.c: New file. - * sysdeps/unix/sysv/aix/dl-open.c: New file. - * sysdeps/unix/sysv/aix/dl-sym.c: New file. - * sysdeps/unix/sysv/aix/fchdir.c: New file. - * sysdeps/unix/sysv/aix/fchmod.c: New file. - * sysdeps/unix/sysv/aix/getgroups.c: New file. - * sysdeps/unix/sysv/aix/gethostname.c: New file. - * sysdeps/unix/sysv/aix/getpriority.c: New file. - * sysdeps/unix/sysv/aix/getrlimit.c: New file. - * sysdeps/unix/sysv/aix/getrlimit64.c: New file. - * sysdeps/unix/sysv/aix/getrusage.c: New file. - * sysdeps/unix/sysv/aix/link.c: New file. - * sysdeps/unix/sysv/aix/madvise.c: New file. - * sysdeps/unix/sysv/aix/mkdir.c: New file. - * sysdeps/unix/sysv/aix/mknod.c: New file. - * sysdeps/unix/sysv/aix/mprotect.c: New file. - * sysdeps/unix/sysv/aix/msgctl.c: New file. - * sysdeps/unix/sysv/aix/msgget.c: New file. - * sysdeps/unix/sysv/aix/msgrcv.c: New file. + * sysdeps/alpha/elf/start.S (__data_start): Define. -2000-04-17 Andreas Jaeger +2000-12-05 H.J. Lu - * sysdeps/mips/dl-machine.h (elf_machine_got_rel): Optimize a bit - as suggested by Ulrich Drepper. - (__dl_runtime_resolve): Remove unused variable, initialize sym - directly. - (RTLD_START): Document OFFSET_GP_GOT. - (OFFSET_GP_GOT): New magic value. - (elf_mips_got_from_gpreg): Use OFFSET_GP_GOT. - (elf_machine_got_rel): Only declare strtab if needed. - (elf_machine_relplt): Removed, it's not needed. - (_dl_runtime_resolve): Fix \n for a comment, safe gp and not pc. + * nss/getXXent_r.c (setup): Change the return type to int. - * sysdeps/mips/add_n.S: Add newline at EOF. - * sysdeps/mips/rshift.S: Likewise. - * sysdeps/mips/mul_1.S: Likewise. - * sysdeps/mips/lshift.S: Likewise. - * sysdeps/mips/addmul_1.S: Likewise. +2000-12-05 Ulrich Drepper -2000-04-17 Ulrich Drepper + * sysdeps/unix/sysv/aix/Makefile [$(subdir)==misc] + (sysdep_routines): Add restf and savef. + * sysdeps/unix/sysv/aix/restf.c: New file. + * sysdeps/unix/sysv/aix/savef.c: New file. + Patches by Michael Keezer . - * sysdeps/powerpc/fpu/s_isnan.c: Pretty printing. + * sysdeps/unix/opendir.c (__opendir): Don't use o_directory_works + if O_DIRECTORY is not defined. + Patch by Michael Keezer . - * elf/dl-reloc.c (_dl_relocate_object): Add more __builtin_expect. - * elf/dl-lookup.c: Likewise. - * elf/dl-init.c (_dl_init): Likewise. - * elf/dl-fini.c (_dl_fini): Likewise. - * elf/dl-deps.c (_dl_map_object_deps): Likewise. - * elf/dl-close.c (_dl_close): Likewise. - * elf/rtld.c (_dl_start_final): Likewise. + * include/libc-symbols.h (C_SYMBOL_DOT_NAME): Define. + Patch by Michael Keezer . - * elf/dl-lookup.c (add_dependency): Correct __builtin_expect use. + * locale/programs/linereader.c (get_toplvl_escape): Recognize more + than 4 bytes in escape sequence. + Patch by Shinya Hanataka . -2000-04-15 Ulrich Drepper +2000-12-05 Andreas Jaeger - * csu/Makefile ($(objpfx)version-info.h): Get OS name from uname and - only fall back on using Linux. + * sysdeps/unix/sysv/linux/mips/sys/tas.h (_test_and_set): Don't + set mips2. - * elf/dl-version.c (_dl_check_map_versions): New argument trace_mode. - Before testing versions check that we actually loaded the object - and whether we are in trace mode. If not loaded during tracing don't - test versions in this object. - (_dl_check_all_versions): Take new parameter and pass to - _dl_check_map_versions. - * sysdeps/generic/ldsodefs.h: Update prototypes for - _dl_check_all_versions and _dl_check_map_versions. - * elf/rtld.c (struct version_check_args): Add dotrace. - (version_check_doit): Pass args->dotrace to _dl_check_all_versions. - (dl_main): Pass info about trace mode to version_check_doit. - * elf/dl-open.c (dl_open_worker): Pass zero as new argument to - _dl_check_all_versions. + * sysdeps/unix/sysv/linux/mips/sysdep.h: New file. - * manual/users.texi (XPG Functions): Document utmpxname, getutmp, - and getutmpx. - Patch by Bryan Henderson . + * sysdeps/unix/sysv/linux/mips/sys/syscall.h: Removed. - * manual/argp.texi: Document index parameter of argp_parse. - Fix typo. - Reported by Andrew Schulman . + * sysdeps/unix/mips/sysdep.h: Use SYS_ify. + Patches by Maciej W. Rozycki . -2000-04-14 Andreas Jaeger + * elf/dl-misc.c (_dl_sysdep_read_whole_file): Mark as + internal_function. + * sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Likewise. + * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start_cleanup): Likewise. - * sysdeps/unix/sysv/linux/shm_open.c: Include linux_fsinfo for - SHMFS_SUPER_MAGIC. Remove definition of SHMFS_SUPER_MAGIC. + * sysdeps/generic/dl-cache.c: Remove declaration of + _dl_sysdep_read_whole_file. - * sysdeps/unix/sysv/linux/linux_fsinfo.h (SHMFS_SUPER_MAGIC): Added. + * elf/dl-load.c (_dl_map_object): Remove declaration of + _dl_load_cache_lookup. -2000-04-15 Ulrich Drepper + * sysdeps/generic/ldsodefs.h: Add declarations of + _dl_load_cache_lookup, _dl_unload_cache, + _dl_sysdep_read_whole_file, _dl_sysdep_start and + _dl_sysdep_start_cleanup. - * sysdeps/unix/sysv/linux/alpha/adjtime.c: Fix typo in - compat_symbol call for old adjtime. + * elf/rtld.c: Remove prototypes that are defined in ldsodefs.h + now. - * sysdeps/alpha/dl-machine.h (RTLD_START): Rewrite for new init - function interface. Patch by Richard Henderson . + * elf/dl-misc.c: Include to get prototypes. + * sysdeps/generic/dl-environ.c: Likewise. - * posix/Makefile (headers): Add spawn.h. - (distribute): Add spawn_int.h. - (routines): Add spawn_faction_init, spawn_faction_destroy, - spawn_faction_addclose, spawn_faction_addopen, spawn_faction_adddup2, - spawnattr_init, spawnattr_destroy, spawnattr_getdefault, - spawnattr_setdefault, spawnattr_getflags, spawnattr_setflags, - spawnattr_getpgroup, spawnattr_setpgroup, spawn, spawnp, and spawni. - * posix/Versions [libc] (GLIBC_2.2): Add posix_spawn_file_actions_init, - posix_spawn_file_actions_destroy, posix_spawn_file_actions_addclose, - posix_spawn_file_actions_addopen, posix_spawn_file_actions_adddup2, - posix_spawnattr_init, posix_spawnattr_destroy, - posix_spawnattr_getdefault, posix_spawnattr_setdefault, - posix_spawnattr_getflags, posix_spawnattr_setflags, - posix_spawnattr_getpgroup, posix_spawnattr_setpgroup, posix_spawn, - and posix_spawnp. - * posix/spawn.c: New file. - * posix/spawn.h: New file. - * posix/spawn_faction_addclose.c: New file. - * posix/spawn_faction_adddup2.c: New file. - * posix/spawn_faction_addopen.c: New file. - * posix/spawn_faction_destroy.c: New file. - * posix/spawn_faction_init.c: New file. - * posix/spawn_int.h: New file. - * posix/spawnattr_destroy.c: New file. - * posix/spawnattr_getdefault.c: New file. - * posix/spawnattr_getflags.c: New file. - * posix/spawnattr_getpgroup.c: New file. - * posix/spawnattr_getschedparam.c: New file. - * posix/spawnattr_getschedpolicy.c: New file. - * posix/spawnattr_getsigmask.c: New file. - * posix/spawnattr_init.c: New file. - * posix/spawnattr_setdefault.c: New file. - * posix/spawnattr_setflags.c: New file. - * posix/spawnattr_setpgroup.c: New file. - * posix/spawnattr_setschedparam.c: New file. - * posix/spawnattr_setschedpolicy.c: New file. - * posix/spawnattr_setsigmask.c: New file. - * posix/spawni.c: New file. - * posix/spawnp.c: New file. + * stdio-common/printf_fp.c: Include instead of + . + * math/atest-exp.c: Likewise. + * math/atest-exp2.c: Likewise. + * math/atest-sincos.c: Likewise. + * stdio-common/_itoa.c: Likewise. + * stdio-common/_itowa.c: Likewise. - * sysdeps/mach/hurd/bits/posix_opt.h: Add _POSIX_SPAWN. - * sysdeps/unix/sysv/linux/bits/posix_opt.h: Likewise. + * include/gmp.h: New file with internal prototypes. -2000-04-14 Ulrich Drepper + * sysdeps/generic/longjmp.c: Move _longjmp_unwind declaration from + here to... + * include/setjmp.h: ...here. - * malloc/Versions [libc] (GLIBC_2.2): Add posix_memalign. - * malloc/malloc.c: Implement posix_memalign for glibc. - * include/stdlib.h: Add prototype for __posix_memalign. - * stdlib/stdlib.h: Add prototype for posix_memalign. + * locale/Makefile (routines): Remove codeset_name since it's not + needed anywhere. -2000-04-14 Andreas Jaeger + * locale/codeset_name.c: Removed. - * sysdeps/mips/dl-machine.h (elf_machine_got_rel): Initialize - symidx correctly. - (elf_machine_got_rel): Cast sym correctly. +2000-12-05 Ulrich Drepper - * sysdeps/mips/add_n.S: Use __PIC__, add end directive. - * sysdeps/mips/addmul_1.S: Likewise. - * sysdeps/mips/lshift.S: Likewise. - * sysdeps/mips/mul_1.S: Likewise. - * sysdeps/mips/rshift.S: Likewise. - * sysdeps/mips/sub_n.S: Likewise. - * sysdeps/mips/submul_1.S: Likewise. + * sysdeps/unix/sysv/aix/sys/param.h: Define MAXHOSTNAMELEN here. - * stdlib/stdlib.h: Fix typo in comment. +2000-12-05 Andreas Jaeger - * shlib-versions (mips.*-.*-linux.*): Support only GLIBC 2.0 and - 2.2 for libdl, ld and libm. + * sysdeps/unix/sysv/linux/sys/param.h: Revert last patch. - * sysdeps/generic/madvise.c: Fix typos. +2000-12-05 Martin Schwidefsky - * sysdeps/unix/sysv/linux/mips/clone.S (error): Use __PIC__. + * sysdeps/unix/sysv/linux/s390/mmap64.S: Use mmap if mmap2 isn't + available. - * sysdeps/mips/bits/setjmp.h: Remove K&R compatibility. +2000-12-05 Andreas Jaeger - * sysdeps/mips/setjmp_aux.c (__sigsetjmp_aux): Silence gcc + * nss/test-netdb.c: Mark local functions as static to avoid warnings. + (main): Use return to silence warning. -2000-04-14 Ulrich Drepper - - * include/sys/statfs.h: Add prototypes for __statfs64 and __fstatfs64. - * sysdeps/generic/fstatfs64.c (__fstatfs64): Renamed to fstatfs64. - Make old name weak alias. - * sysdeps/unix/sysv/linux/fstatfs64.c: Likewise. - * sysdeps/generic/statfs64.c (__statfs64): Renamed to statfs64. - Make old name weak alias. - * sysdeps/unix/sysv/linux/statfs64.c: Likewise. - - * io/Makefile (routines): Add posix_fadvise, posix_fadvise64, - posix_fallocate, and posix_fallocate64. - * io/Versions [libc] (GLIBC_2.2): Add posix_fadvise, posix_fadvise64, - posix_fallocate, and posix_fallocate64. - * io/fcntl.h: Declare posix_fadvise, posix_fadvise64, - posix_fallocate, and posix_fallocate64. - * sysdeps/generic/fadvise.c: New file. - * sysdeps/generic/fadvise64.c: New file. - * sysdeps/generic/fallocate.c: New file. - * sysdeps/generic/fallocate64.c: New file. - * sysdeps/posix/fallocate.c: New file. - * sysdeps/posix/fallocate64.c: New file. - * sysdeps/generic/bits/fcntl.h: Define POSIX_FADV_NORMAL, - POSIX_FADV_RANDOM, POSIX_FADV_SEQUENTIAL, POSIX_FADV_WILLNEED, - POSIX_FADV_DONTNEED, and POSIX_FADV_NOREUSE. - * sysdeps/mach/hurd/bits/fcntl.h: Likewise. - * sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Likewise. - * sysdeps/unix/sysv/linux/bits/fcntl.h: Likewise. - * sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise. - * sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise. - * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise. - - * sysdeps/generic/madvise.c (__madvise): Renamed to posix_madvise. - * sysdeps/unix/sysv/linux/syscalls.list: Likewise. - -2000-04-13 Ulrich Drepper - - * misc/Versions [libc] (GLIBC_2.2): Add posix_madvice. - * misc/sys/mman.h (posix_madvise): Add prototype. - * sysdeps/generic/madvise.c (madvise): Renamed to __madvise. Make - old name and posix_madvise weak aliases. - * sysdeps/unix/sysv/linux/syscalls.list: Likewise. - * sysdeps/generic/bits/mman.h: Add POSIX_MADV_* constants. - * sysdeps/unix/sysv/linux/alpha/bits/mman.h: Likewise. - * sysdeps/unix/sysv/linux/arm/bits/mman.h: Likewise. - * sysdeps/unix/sysv/linux/i386/bits/mman.h: Likewise. - * sysdeps/unix/sysv/linux/powerpc/bits/mman.h: Likewise. - * sysdeps/unix/sysv/linux/sparc/bits/mman.h: Likewise. - -2000-04-13 Andreas Jaeger - - * sysdeps/mips/dl-machine.h (__dl_runtime_resolve): Handle symbol - versioning. - (elf_machine_got_rel): Only add runtime display if needed. - (elf_machine_got_rel): Handle symbol versioning. - -2000-04-13 Andreas Jaeger - - * sysdeps/unix/sysv/linux/mips/clone.S: Fix function. - - * sysdeps/unix/mips/pipe.S: Reorder instructions since .reorder is - default. - - * sysdeps/mips/__longjmp.c (__longjmp): Use $25 to fix problems - with some applications. - Patches by Ralf Baechle . - - * sysdeps/mips/bsd-setjmp.S: Use __PIC__. - * sysdeps/mips/bsd-_setjmp.S: Likewise. - * sysdeps/mips/setjmp.S: Likewise. - - * sysdeps/unix/sysv/linux/mips/pipe.S: New file. - -2000-04-13 Ulrich Drepper - - * posix/globtest.sh: Work around inconsistency with expanding ~/ - in shell (PR libc/1690). Reported by patsmith@pobox.com. - -2000-04-12 Ulrich Drepper - - * posix/getconf.c: Add support for many more POSIX options. - * sysdeps/posix/sysconf.c: Likewise. - * sysdeps/generic/bits/confname.h: Add many more POSIX options. - * sysdeps/mach/hurd/bits/posix_opt.h: Add _POSIX_REGEXP and - _POSIX_SHELL. - * sysdeps/unix/sysv/linux/bits/posix_opt.h: Likewise. - * sysdeps/unix/sysv/linux/i386/bits/time.h: Rename __CLOCK_HIGHRES to - CLOCK_PROCESS_CPUTIME_ID. Add define CLOCK_MONOTONIC and - CLOCK_THREAD_CPUTIME_ID. - * sysdeps/unix/i386/clock_getcpuclockid.c: Set *clock_id to - CLOCK_PROCESS_CPUTIME_ID. - * sysdeps/unix/i386/i586/clock_getres.c: Change for renaming of - __CLOCK_HIGHRES to CLOCK_PROCESS_CPUTIME_ID. Handle - CLOCK_THREAD_CPUTIME_ID and CLOCK_MONOTONIC the same. - * sysdeps/unix/i386/i586/clock_gettime.c: Likewise. - - * malloc/Makefile (tests): Add tst-calloc. - * malloc/tst-calloc.c: New file. - - * sysdeps/arm/libm-test-ulps: New file. - - * malloc/malloc.c: Undo all of today's changes. - - * locale/programs/locale.c (show_info): Don't try to look into - data for LC_ALL (there is none). - - * malloc/malloc.c (cALLOc): Clear only what the user asked for and - avoid writing over boundary. - Patch by Greg McGary . - - * sysdeps/arm/memprof.h: New file. - -2000-04-12 Andreas Jaeger - - * sysdeps/unix/i386/i586/clock_gettime.c: Fix typo. - - * sysdeps/unix/sysv/linux/i386/get_clockfreq.c: Include - for memmem declaration. - -2000-04-12 Ulrich Drepper - - * sysdeps/unix/clock_gettime.c (clock_gettime): Initialize retval - to -1. - * sysdeps/posix/clock_getres.c (clock_getres): Likewise. - - * libio/iopopen.c (_IO_new_proc_open): Close pipes in case the - mode is invalid. - * libio/oldiopopen.c (_IO_old_proc_open): Likewise. - Patch by Bart Veer . - - * sysdeps/arm/dl-machine.h (RTLD_START): Rewrite for new init - function interface. - -2000-04-11 Andreas Jaeger - - * sysdeps/mips/dl-machine.h: Update some comments. - (ELF_MACHINE_ALIGN_MASK): Removed, it's not needed. - -2000-04-11 Ulrich Drepper - - * sysdeps/unix/sysv/linux/bits/posix_opt.h: Add - _POSIX_SHARED_MEMORY_OBJECTS. - - * rt/Makefile (tests): Add tst-shm. - Add rules to generate tst-shm. - * rt/tst-shm.c: New file. - - * sysdeps/unix/sysv/linux/shm_open.c (shm_open): Set FD_CLOEXEC - for descriptor. - - * misc/sys/mman.h: Add prototypes for shm_open and shm_unlink. - * rt/Makefile (librt-routines): Add shm_open and shm_unlink. - * rt/Versions [librt] (GLIBC_2.2): Add shm_open and shm_unlink. - * sysdeps/generic/shm_open.c: New file. - * sysdeps/generic/shm_unlink.c: New file. - * sysdeps/unix/sysv/linux/shm_open.c: New file. - * sysdeps/unix/sysv/linux/shm_unlink.c: New file. - * sysdeps/unix/sysv/linux/Versions [libc] (GLIBC_2.2): Export - __endmntent, __getmntent_r, __setmntent, and __statfs. - - * libio/vasprintf.c (_IO_vasprintf): Try to avoid memory - fragmentation by allocating new memory at the end instead of - reallocating. - - * posix/globtest.sh: Fix last change. - -2000-04-10 Philip Blundell - - * sysdeps/unix/sysv/linux/bits/in.h (IPV6_JOIN_GROUP, - IPV6_LEAVE_GROUP): New names for IPV6_ADD_MEMBERSHIP, - IPV6_DROP_MEMBERSHIP. - * sysdeps/generic/bits/in.h (IPV6_JOIN_GROUP, IPV6_LEAVE_GROUP): - Likewise. - -2000-04-11 Ulrich Drepper - - * elf/readlib (process_file): Close streams in case of an error. - -2000-04-09 Andreas Jaeger - - * elf/readlib.c (process_file): Check if file is big enough to - contain aout and ELF headers. - Reported by Reinhard Moosauer . - -2000-04-10 Jes Sorensen - - * elf/dl-fini.c: Include alloca.h to get proper prototype for alloca(). - -2000-04-11 Ulrich Drepper - - * test-skeleton.c (main): If STDOUT_UNBUFFERED is defined, make stdout - stream unbuffered. - * rt/Makefile (tests): Add tst-clock. - Add rules to build tst-clock. - * rt/tst-clock.c: New file. - * sysdeps/unix/i386/i586/clock_getres.c: Correct expression to decide - about initialization of nsec. - * sysdeps/unix/i386/i586/clock_gettime.c: Correct expression to decide - about initialization of freq. Set retval to zero if successful. - * sysdeps/unix/sysv/linux/i386/get_clockfreq.c: Cache result. - -2000-04-10 Ulrich Drepper - - * Versions.def (librt): Add GLIBC_2.2. - * rt/Makefile (librt-routines): Add get_clockfreq, clock_getcpuclockid, - clock_getres, clock_gettime, clock_settime, timer_create, timer_delete, - timer_getoverr, timer_gettime, and timer_settime. - * rt/Versions [librt] (GLIBC_2.2): Add clock_getres, clock_gettime, - clock_settime, timer_create, timer_delete, timer_getoverrun, - timer_gettime, and timer_settime. - * sysdeps/generic/clock_getcpuclockid.c: New file. - * sysdeps/generic/get_clockfreq.c: New file. - * sysdeps/unix/i386/clock_getcpuclockid.c: New file. - * sysdeps/unix/sysv/linux/i386/get_clockfreq.c: New file. - * sysdeps/mach/hurd/i386/bits/time.h: New file. - * sysdeps/unix/i386/i586/clock_getres.c: New file. - * sysdeps/unix/i386/i586/clock_gettime.c: New file. - * sysdeps/unix/i386/i686/Implies: New file. - * sysdpes/unix/sysv/linux/i386/bits/time.h: New file. - * time/Makefile (routines): Move clock_getres, clock_gettime, - clock_settime, timer_create, timer_delete, timer_getoverr, - timer_gettime, and timer_settime to rt/Makefile. - * time/Versions [libc] (GLIBC_2.2): Remove clock_getres, clock_gettime, - clock_settime, timer_create, timer_delete, timer_getoverrun, - timer_gettime, and timer_settime. - * time/time.h: Define pid_t. Add prototype for clock_getcpuclockid. - - * sysdeps/mach/hurd/bits/time.h: Drop K&R compatibility. Use __const__ - and not const as attribute name. - -2000-04-10 Thorsten Kukuk - - * elf/cache.c (save_cache): Make sure /etc/ld.so.cache is mode 644. - -2000-04-10 Andreas Schwab - - * posix/globtest.sh: Skip tests that depend on unreadable - directories if run as root. - -2000-04-10 Ulrich Drepper - - * sysdeps/unix/clock_settime.c (clock_settime): Test tv_nsec value - for correct range. From code by Kaz Kylheku . - -2000-04-09 Ulrich Drepper - - * sysdeps/unix/clock_gettime.c: New file. - * sysdeps/unix/clock_settime.c: New file. - * sysdeps/posix/clock_getres.c: New file. - - * conform/data/ftw.h-data: Add allow-header sys/stat.h. - - * sysdeps/unix/sysv/linux/getdents.c (__getdents): Avoid initial - lseek call be passing in a buffer which never allow a successful - first getdents syscall if not at leas the initial entry can be - stored in the user buffer. - - * localedata/Makefile: Add rules to clean up directories created by - new strfmon tests. - -2000-04-09 Geoff Clare - - * localedata/tst-fmon.data: Added new tests for strfmon() - using test locales with all combinations of cs_precedes, - sign_posn and sep_by_space. - * localedata/tst-fmon.sh: Updated to support the new tests. - * localedata/tst-fmon-locales/tstfmon_n01y12: New file containing - the localedef source for the new strfmon() test locale. - * localedata/tst-fmon-locales/tstfmon_n02n40: Likewise. - * localedata/tst-fmon-locales/tstfmon_n10y31: Likewise. - * localedata/tst-fmon-locales/tstfmon_n11y41: Likewise. - * localedata/tst-fmon-locales/tstfmon_n12y11: Likewise. - * localedata/tst-fmon-locales/tstfmon_n20n32: Likewise. - * localedata/tst-fmon-locales/tstfmon_n30y20: Likewise. - * localedata/tst-fmon-locales/tstfmon_n41n00: Likewise. - * localedata/tst-fmon-locales/tstfmon_y01y10: Likewise. - * localedata/tst-fmon-locales/tstfmon_y02n22: Likewise. - * localedata/tst-fmon-locales/tstfmon_y22n42: Likewise. - * localedata/tst-fmon-locales/tstfmon_y30y21: Likewise. - * localedata/tst-fmon-locales/tstfmon_y32n31: Likewise. - * localedata/tst-fmon-locales/tstfmon_y40y00: Likewise. - * localedata/tst-fmon-locales/tstfmon_y42n21: Likewise. - - * stdlib/strfmon.c: Correct problems with missing or extra - spaces for unusual combinations of sign_posn and sep_by_space. - Improved left-precision alignment code. - -2000-04-07 Andreas Jaeger - - * posix/Makefile (CFLAGS-regex.c): Remove DEBUG. - -2000-04-10 Andreas Jaeger - - * intl/Makefile: Don't run do-gettext-test when cross-compiling. - -2000-04-09 Ulrich Drepper - - Implement handling of restartable conversion functions according to - ISO C. - * iconv/gconv.h (__gconv_fct): Add additional parameter. - * iconv/gconv_int.h (__BUILTIN_TRANS): Likewise. - * iconv/gconv.c: Pass additional parameter to conversion function. - * iconv/gconv_simple.c (internal_ucs4_loop_single): New function. - (internal_ucs4le_loop_single): New function. - (__gconv_transform_ascii_internal): Define ONE_DIRECTION. - (__gconv_transform_internal_ascii): Likewise. - (__gconv_transform_internal_utf8): Likewise. - (__gconv_transform_utf8_internal): Likewise. - (__gconv_transform_ucs2_internal): Likewise. - (__gconv_transform_internal_ucs2): Likewise. - (__gconv_transform_ucs2reverse_internal): Likewise. - (__gconv_transform_internal_ucs2reverse): Likewise. - (internal_ucs4le_loop_unaligned): Before return - __GCONV_INCOMPLETE_INPUT check that the remaining bytes really form - a valid character. Otherwise return __GCONV_ILLEGAL_INPUT. - (__gconv_transform_utf8_internal): Define STORE_REST and UNPACK_BYTES. - * iconv/loop.c: Fit in definition of function to convert one character - for processing of left-over bytes from the state object. - * iconv/skeleton.c (gconv): Rename inbuf to inptrp and inbufend to - inend to match names in loop functions. - (RESET_INPUT_BUFFER): Change apprpriately. - (gconv): If needed, call function to process bytes from the state - object. Similar at the end: store left over bytes if input is - incomplete. - Take extra argument and add new argument to all calls of the - conversion function. - * iconvdata/iso-2022-cn.c: Adjust numeric values used to store - information in the state object to not conflict with length count. - * iconvdata/iso-2022-jp.c: Likewise. - * iconvdata/iso-2022-kr.c: Likewise. - * iconvdata/unicode.c: Adjust for change change in parameters of - skeleton function. - * iconvdata/utf-16.c: Likewise. - * libio/iofwide.c: Add new parameter to all calls of conversion - function. - * wcsmbs/btowc.c: Likewise. - * wcsmbs/mbrtowc.c: Likewise. - * wcsmbs/mbsnrtowcs.c: Likewise. - * wcsmbs/mbsrtowcs.c: Likewise. - * wcsmbs/wcrtomb.c: Likewise. - * wcsmbs/wcsnrtombs.c: Likewise. - * wcsmbs/wcsrtombs.c: Likewise. - * wcsmbs/wctob.c: Likewise. - - * iconvdata/gbgbk.c: Always define MAX_NEEDED_OUTPUT and - MAX_NEEDED_INPUT. - -2000-04-07 Andreas Jaeger - - * sysdeps/unix/sysv/linux/mips/kernel_sigaction.h: Updated for - newer kernels. - -2000-04-07 Ulrich Drepper - - * wcsmbs/wchar.h (__mbstate_t): Rename elements. Make __value - element a union to allow byte access. - * iconvdata/iso-2022-cn.c: Adjust for change of element name in - mbstate_t. - * iconvdata/iso-2022-jp.c: Likewise. - * iconvdata/iso-2022-kr.c: Likewise. - * wcsmbs/mbsinit.c: Likewise. - * stdlib/mblen.c: Likewise. - * stdio-common/printf-parse.h: Likewise. - -2000-04-06 Ulrich Drepper - - * sysdeps/unix/sysv/linux/getdents.c (__getdents): The Linux - kernel does not allow relative seeks on descriptors associated - with directories. Go back to get the position in the directory - every time we enter the function. Return -1 and set errno if one - entry could be read from the kernel but does not fit into the - buffer passed in by the user. - - * locale/programs/charmap.c (charmap_new_char): Add parameter step. - Support ..(2).. ellipsis. - (parse_charmap): Recognize ..(2).. etc and pass step down. - Correctly generate names for UCS4 characters. - - * locale/programs/ld-ctype.c (struct translit_ignore_t): Add step. - (ctype_finish): We know the wide character value for , - don't search. - (charclass_symbolic_ellipsis): Handle ..(2).. ellipsis. - (charclass_ucs4_ellipsis): Likewise. - (read_translit_ignore_entry): Store ellipsis step. - (ctype_read): Recognize ..(2).. etc and pass step down. - - * locale/programs/linereader.c (lr_token): When seeing comment - character ignore only rest of line in sources but stop at escaped - newline. - Recognize ..(2).. and ....(2)..... - - * locale/programs/locfile-token.h (enum token_t): Add tok_ellipsis2_2 - and tok_ellipsis4_2. + * stdlib/test-canon.c (check_path): Mark as static to avoid warning. -2000-04-06 Andreas Jaeger + * stdio-common/test-popen.c: Mark local functions as static to + avoid warnings. + (main): Use return to silence warning. - * sysdeps/unix/sysv/linux/alpha/Dist: init-first.h has been - removed, remove it here also. - * sysdeps/unix/sysv/linux/arm/Dist: Likewise. - * sysdeps/unix/sysv/linux/powerpc/Dist: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc32/Dist: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/Dist: Likewise. + * stdlib/testsort.c (compare): Mark as static to avoid warning. -2000-04-06 Jakub Jelinek + * assert/test-assert.c: Mark local functions as static to avoid + warnings. + * assert/test-assert-perr.c: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc32/register-dump.h: Don't - include bits/sigcontext.h. - * sysdeps/unix/sysv/linux/sparc/sparc64/register-dump.h: Likewise. + * math/libm-test.inc (main): Use return to silence warnings. -2000-04-06 Ulrich Drepper +2000-12-04 Ulrich Drepper - * locale/programs/ld-collate.c (collate_read): Handle ellipsis in - collation symbol definition. Value in quivalence definition must - be defined, don't check that it is not. + * math/fenv.h: Fix typo in comment. - * locale/programs/charmap.c (parse_charmap): Recognize - values as character names. + * math/test-misc.c (main): Add a few more over and underflow tests + for scalb. - * locale/programs/ld-ctype.c (get_character): Handle missing - repertoire map correctly. + * sysdeps/i386/fpu/e_scalb.S: Handle NaN as first parameter correctly. + * sysdeps/i386/fpu/e_scalbf.S: Likewise. + * sysdeps/i386/fpu/e_scalbl.S: Likewise. + * math/w_scalb.c: Don't use matherr except in SVID mode. + * math/w_scalbf.c: Likewise. + * math/w_scalbl.c: Likewise. + * math/test-misc.c: Add test for NaN and scalbl. + Reported by Fred J. Tydeman . -2000-04-05 Cristian Gafton +2000-12-04 Ulrich Drepper - * ctype/ctype.h (__isctype_l): Define even if not __OPTIMIZE__ - because it is used in generic code. - * wctype/wctrans.c: Define __ctype32_toupper and __ctype32_tolower. - * wcsmbs/wcwidth.h: Declare __ctype32_b. - * intl/gettext.c: Include . - * intl/ngettext.c: Likewise. + * configure.in: Define HAVE_ASM_GLOBAL_DOT_NAME for AIX. + * config.h.in: Add HAVE_ASM_GLOBAL_DOT_NAME. + * include/libc-symbols.h (strong_alias): Define special version + for HAVE_ASM_GLOBAL_DOT_NAME. + (weak_alias): Likewise. + * sysdeps/powerpc/bsd-setjmp.S: Use strong_alias not .set. + * sysdeps/unix/sysv/aix/Makefile [$(subdir)==login] + (sysdep_routines): Add setutxent, getutxent, endutxent, getutxid, + getutxline, pututxline, and utmpxname. + * sysdeps/unix/sysv/aix/fchdir.c: Define __fchdir. + * sysdeps/unix/sysv/aix/lseek.c: Define __libc_lseek alias. + * sysdeps/unix/sysv/aix/open.c: Define __libc_open alias. + * sysdeps/unix/sysv/aix/pread.c: Define pread alias. + * sysdeps/unix/sysv/aix/pread64.c: Define pread64 alias. + * sysdeps/unix/sysv/aix/sysdep.h (JUMPTARGET): Use C_TEXT. + * sysdeps/unix/sysv/aix/bits/types.h: Define __clockid_t and __timer_t. + * sysdeps/unix/sysv/aix/bits/utmp.h: Cleanup. Add comments. + * sysdeps/unix/sysv/linux/sys/param.h (MAXHOSTNAMELEN): Define. + Patches by Michael Keezer . -2000-04-05 Jakub Jelinek +2000-12-04 H.J. Lu - * resolv/inet_ntop.c (inet_ntop4, inet_ntop6, inet_ntop): Use - socklen_t type for size. - * sysdeps/sparc/sparc32/dl-machine.h (RTLD_START): Rewrite for new - init function interface. - * sysdeps/sparc/sparc64/dl-machine.h (RTLD_START): Likewise. - * sysdeps/unix/sysv/linux/sparc/bits/setjmp.h: Don't include - sys/ucontext.h. - (__jmp_buf): Declare the whole type structure here, don't use - ucontext. + * configure.in: Change --with-oldest-abi=ABI to + --enable-oldest-abi=ABI. -2000-04-05 Ulrich Drepper +2000-12-02 Bruno Haible - * iconv/skeleton.c (put16u): Fix typo. - Reported by Bruno Haible . + * stdio-common/perror.c (perror): If stderr is wide-oriented, use + fwprintf instead of fprintf. - * sysdeps/unix/sysv/linux/alpha/init-first.h: Not needed anymore. - * sysdeps/unix/sysv/linux/arm/init-first.h: Likewise. - * sysdeps/unix/sysv/linux/mips/init-first.h: Likewise. - * sysdeps/unix/sysv/linux/powerpc/init-first.h: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc32/init-first.h: Likewise. - * sysdeps/unix/sysv/linux/sparc/sparc64/init-first.h: Likewise. +2000-12-04 Ulrich Drepper - * sysdeps/unix/sysv/linux/Dist: Remove getresuid and getresgid. - * Makefile (distribute): Add abi-versions.awk and - firstversions.awk. - Patches by Torsten Duwe . + * sysdeps/alpha/fpu/bits/mathdef.h: Remove FLT_EVAL_METHOD and + DECIMAL_DIG definitions. + * sysdeps/arm/fpu/bits/mathdef.h: Likewise + * sysdeps/generic/bits/mathdef.h: Likewise + * sysdeps/i386/fpu/bits/mathdef.h: Likewise + * sysdeps/ia64/fpu/bits/mathdef.h: Likewise + * sysdeps/m68k/fpu/bits/mathdef.h: Likewise + * sysdeps/powerpc/fpu/bits/mathdef.h: Likewise + * sysdeps/sparc/fpu/bits/mathdef.h: Likewise + * sysdeps/sh/sh4/fpu/bits/mathdef.h: Likewise -2000-04-05 Andreas Schwab +2000-12-03 Ulrich Drepper - * nss/Makefile ($(objpfx)makedb): Move $(libdl) after db-open.o. + * math/test-fenv.c (main): Use return instead of exit to avoid warning. -2000-04-05 Andreas Schwab + * math/atest-exp.c: Mark local functions as static to avoid warnings. + * math/atest-exp2.c: Likewise. + * math/atest-sincos.c: Likewise. - * sysdeps/m68k/dl-machine.h (RTLD_START): Readd _dl_start_user - entry point, used on Hurd. + * sysdeps/i386/fpu/bits/mathdef.h (DECIMAL_DIG): Correct value. + Reported by Fred J. Tydeman . -2000-04-04 Andreas Jaeger + * sysdeps/i386/fpu/s_nextafterl.c (__nextafterl): Hopefully fix + the handling of denormalized numbers. - * intl/Makefile: Only run the gettext test with shared libraries. + * math/test-misc.c (main): Test for fpclassify and pseudo denormal + numbers on x86. + * sysdeps/i386/fpu/fpclassifyl.c: New file. -2000-03-16 Mark Kettenis + * sysdeps/i386/ldbl2mpn.c (__mpn_extract_long_double): Handle the + pseudo denormal representation of LDBL_MIN. - * sysdeps/unix/sysv/linux/i386/sys/procfs.h (prfpregset_t): - Typedef for elf_fpregset_t instead of `elf_fpregset_t *'. + * iconvdata/SJIS.irreversible: Remove unnecessary entries. + * iconvdata/EUC-JP.irreversible: Remove unnecessary entries. -2000-04-05 Roland McGrath + * iconvdata/sjis.c: Enable round-trip mapping of backslash and tilde. + * iconvdata/jis0208.c: Likewise. + * iconvdata/jis0212.c: Likewise. + Patch by Shinya Hanataka . - * Makeconfig: Undo last change. - * configure.in: If --disable-shared was given, don't set VERSIONING, - don't define DO_VERSIONING, and don't give scare warning for no - versioning. - * configure: Regenerated. + * math/test-misc.c (main): More tests for frexp and some for + fpclassify and isnormal. -2000-04-04 Roland McGrath + * sysdeps/ieee754/flt-32/s_fpclassifyf.c (__fpclassifyf): Correct + test for subnormal. + Reported by Fred J. Tydeman . - * Makeconfig [$(build-shared) != yes] (versioning): Set to `no'. + * math/test-misc.c (main): Add tests for frexp. + Reported by Fred J. Tydeman . + * sysdeps/i386/fpu/s_frexpl.S: Don't overflow during the computation. -2000-04-04 Andreas Jaeger +2000-12-02 H.J. Lu - * sysdeps/generic/fgetexcptflg.c: Use shlib-compat macros. + * locale/lc-time.c (_nl_init_era_entries): Pass L'\0' instead of + '\0' to wcschr. -2000-04-04 Ulrich Drepper +2000-12-02 Ulrich Drepper - * elf/dl-runtime.c (fixup): Correct handling of symbols marked - STV_HIDDEN and STV_INTERNAL during lookup. - (profile_fixup): Likewise. - * elf/dl-reloc.c (RESOLVE): Likewise. + * sysdeps/i386/fpu/s_frexp.S: Add missing fwait. + * sysdeps/i386/fpu/s_frexpf.S: Likewise. + * sysdeps/i386/fpu/s_frexpl.S: Likewise. - * iconv/skeleton.c (FUNCTION_NAME): Reorder initialization of - unaligned so that it compiles for system which need unaligned - access handling. + * sysdeps/generic/glob.c: Adjust types of several variables to + avoid warnings. -2000-04-04 Andreas Schwab +2000-12-01 Ulrich Drepper - * elf/cache.c (print_entry): Only look at the type field when - printing the type. + * sysdeps/unix/sysv/linux/shm_open.c: Remove incorrect comment. -2000-04-04 Andreas Schwab +2000-11-30 Roland McGrath - * iconvdata/big5.c (BODY): Fix typo. + * hurd/hurd/ioctl.h (_HURD_HANDLE_IOCTLS_1): New macro. + (_HURD_HANDLE_IOCTLS, _HURD_HANDLE_IOCTL): Redefine using it, so as to + allow multiple instances using the same function name in one file. -2000-04-04 Andreas Schwab +2000-12-01 Ulrich Drepper - * sysdeps/m68k/dl-machine.h (RTLD_START): Rewrite for new init - function interface. Remove unused _dl_start_user entry point. + * configure.in: Correct test for pserver CVS access. -2000-04-03 Andreas Jaeger +2000-11-28 H.J. Lu - * include/arpa/inet.h (__inet_aton): Add protoype. + * libio/libio.h: Remove extra "#if ... #endif". -2000-04-01 Andreas Jaeger +2000-11-29 H.J. Lu - * sysdeps/mach/hurd/mips/init-first.c: Use SHARED instead of PIC. + * stdio-common/vfscanf.c (ORIENT): Swap the COMPILE_WSCANF case. - * sysdeps/unix/mips/sysdep.h: Use __PIC__ instead of PIC. - * sysdeps/mach/mips/thread_state.h: Likewise. +2000-12-01 H.J. Lu - * sysdeps/generic/fclrexcpt.c: Use shlib-compat macros. - * sysdeps/generic/fegetenv.c: Likewise. - * sysdeps/generic/fesetenv.c: Likewise. - * sysdeps/generic/feupdateenv.c: Likewise. - * sysdeps/generic/fraiseexcpt.c: Likewise. - * sysdeps/generic/fsetexcptflg.c: Likewise. - * sysdeps/unix/sysv/linux/alpha/glob.c: Likewise. - * sysdeps/unix/sysv/linux/arm/errlist.c: Likewise. - * sysdeps/unix/sysv/linux/errlist.c: Likewise. + * nss/getXXbyYY_r.c: Fix verioned symbol handling. + * nss/getXXent_r.c: Likewise. * sysdeps/unix/sysv/linux/i386/chown.c: Likewise. -2000-04-02 H.J. Lu - - * elf/ldconfig.h (FLAG_IA64_LIB64): New. Defined. - -2000-04-03 Ulrich Drepper - - * elf/dl-load.c (_dl_dst_substitute): Pretty print comment. - (add_name_to_object): Add cast in malloc call. - (fillin_rpath): Optimize loop to initialize ->status a bit. - - * sysdeps/i386/dl-machine.h: Undo last change. - * sysdeps/mach/hurd/i386/dl-machine.h (RTLD_START_SPECIAL_INIT): - Restore %edx register after call here. - - * sysdeps/arm/atomicity.h: New file. - Contributed by Jesper Skov . - -2000-04-03 Roland McGrath - - * Makeconfig (preprocess-versions): Undo last change. - Instead, pass -I$(common-objdir) -I$(..)include instead of $(CPPFLAGS). - - * sysdeps/mach/hurd/i386/init-first.c (init): Don't set __environ - here, before we might move the stack. - (posixland_init): Set __libc_argc, __libc_argc, and __environ here. - (init1): And not here. - - * sysdeps/i386/dl-machine.h (RTLD_START): Fix code broken by last - change, to restore argc value in call-clobbered register after - RTLD_START_SPECIAL_INIT, which will contain a call. - - * elf/dl-deps.c (_dl_map_object_deps): Fix size calculations for - allocating and initializing L->l_initfini. - - * resolv/Makefile (headers): Add bits/netdb.h, so it gets installed. - -2000-04-03 Ulrich Drepper - - * elf/dl-load.c (_dl_init_paths): Use (void*) -1 to signal non-existing - RUNPATH, RPATH, and LD_LIBRARY_PATH. - (open_path): Change type of fourth parameter. Make pointer to array - of pointers. Create variable dirs with original type. - Track whether any directory for the object exists and if not, - change *DIRSP to (void*) -1 to signal there is no such search path. - (_dl_map_object): Change all calls of open_path. - Rewrite decompose_rpath calls. - -2000-03-31 Andreas Schwab - - * string/strfry.c: Declare STATE as array of char instead of int - and do not initialize it (done by initstate_r). Pass correct - size. - -2000-04-03 Ulrich Drepper - - * sysdeps/generic/ldsodefs.h: Fix typo in comment. - - * sysdeps/i386/dl-machine.h (RTLD_START): Squeeze one more - instruction out of the code. - -2000-04-02 Ulrich Drepper - - * elf/dl-fini.c (_dl_fini): Increment j counter after swapping in - element at this position. - - * elf/Versions [ld.so] (GLIBC_2.2): Export _dl_load_lock. - * elf/link.h (struct link_map): Add l_reldepsmax, l_reldepsact, and - l_reldeps elements. - * elf/dl-lookup.c (add_dependency): New function. - (_dl_lookup_symbol): Use it whenever symbol was found in a global, - dynamically loaded object. - (_dl_lookup_symbol_skip): Likewise. - (_dl_lookup_versioned_symbol): Likewise. - (_dl_lookup_versioned_symbol_skip): Likewise. - * elf/dl-open.c: Don't define _dl_load_lock here... - * elf/rtld.c: ...but here... - * elf/dl-support.c: ...and here. - * elf/dl-close.c (_dl_close): Close also dependent objects introduce - through relocation. - * elf/dl-fini.c (_dl_fini): Also take dependencies introduced through - relocations. - * dlfcn/Makefile (glrefmain.out): Test is not expected to fail - anymore. - * dlfcn/glrefmain.c: Add one more debug message. - - * Makeconfig (preprocess-versions): Don't add $(CPPFLAGS) to compiler - command line. - * Makerules (sysd-versions): Use ( ) instead of { }. - - * elf/dl-load.c: Use __builtin_expect to signal that compiler should - optimize for the non-debugging case. - * elf/dl-lookup.c: Likewise. - * sysdeps/generic/libc-start.c: Likewise. - -2000-04-02 Roland McGrath - - * sysdeps/mach/hurd/i386/init-first.c: Replace PIC #ifdefs with SHARED. - (init1): Don't initialize __environ here, since init already does it. - (first_init): New function, broken out of _init. - (_hurd_stack_setup): Use it. - [SHARED] (_dl_init_first): New function, renamed from old _init. - (init1) [SHARED]: Don't call posixland_init here. - (posixland_init): Take ENVP arg, so signature is usual for initializer. - [SHARED] (_init): Define as alias for posixland_init. - [! SHARED] (__libc_first_init): Define as alias for posixland_init. - * sysdeps/i386/dl-machine.h (RTLD_START): Insert the macro - RTLD_START_SPECIAL_INIT before calling initializers. - (RTLD_START_SPECIAL_INIT): Define to empty if undefined. - * sysdeps/mach/hurd/i386/dl-machine.h: New file. - * sysdeps/mach/hurd/dl-sysdep.c (_dl_init_first): New weak function. - * elf/Versions ({libc,ld.so}: GLIBC_2.2): Add _dl_init_first. - - * stdio-common/tmpfile.c [! USE_IN_LIBIO]: No alias needed, - since we define the function with the name `tmpfile'. - - * mach/Versions: Define SHARED instead of PIC to affect shlib-compat.h. - * hurd/Versions: Likewise. - -2000-04-02 Ulrich Drepper - - * elf/dl-runtime.c (fixup): Fix typo in comment. - - * resolv/netdb.h (getnameinfo): All length parameters are of type - socklen_t. - * inet/getnameinfo.c: Likewise. - -2000-04-01 Ulrich Drepper - - * posix/unistd.h (socklen_t): Define if it has not yet happened. - (gethostname): Change type of second parameter to socklen_t. - * include/unistd.h (__gethostname): Change type of second - parameter to socklen_t. - * sysdeps/generic/gethostname.c (__gethostname): Likewise. - * sysdeps/mach/hurd/gethostname.c (__gethostname): Likewise. - * sysdeps/unix/sysv/gethostname.c (__gethostname): Likewise. - * sysdeps/unix/sysv/sysv4/solaris2/gethostname.c (__gethostname): - Likewise. - * sysdeps/unix/sysv/linux/gethostname.c: Removed. - * sysdeps/generic/bits/socket.h: Use __socklen_t to define socklen_t. - Allow definition elsewhere. - * sysdeps/unix/sysv/aix/bits/socket.h: Likewise. - * sysdeps/unix/sysv/linux/bits/socket.h: Likewise. - * sysdeps/unix/sysv/linux/mips/bits/socket.h: Likewise. - * sysdeps/generic/bits/types.h: Define __socklen_t. - * sysdeps/unix/sysv/aix/bits/types.h: Likewise. - * sysdeps/unix/sysv/hpux/bits/types.h: Likewise. - * sysdeps/unix/sysv/linux/alpha/bits/types.h: Likewise. - * sysdeps/unix/sysv/linux/bits/types.h: Likewise. - * sysdeps/unix/sysv/linux/mips/bits/types.h: Likewise. - * sysdeps/unix/sysv/linux/sparc/bits/types.h: Likewise. - * sysdeps/unix/sysv/sysv4/solaris2/bits/types.h: Likewise. - - * inet/arpa/inet.h (inet_addr): Change return type to in_addr_t. - (inet_lnaof): Likewise. - (inet_netof): Likewise. - (inet_network): Likewise. - (inet_aton): Likewise. - (inet_makeaddr): Change parameter types to in_addr_t. - (inet_neta): Likewise. - (inet_ntop): Change type of last parameter to socklen_t. - (inet_aton): Only make available if __USE_MISC. - (inet_neta): Likewise. - (inet_net_ntop): Likewise. - (inet_net_pton): Likewise. - (inet_nsap_ntoa): Likewise. - - * inet/in.h: Define in_port_t type. - Define in_addr_t type. - (struct in_addr): Use in_addr_t in definition. - (IN_CLASSA): Use cast to in_addr_t. - (IN_CLASSB): Likewise. - (IN_CLASSC): Likewise. - (IN_CLASSD): Likewise. - (IN_EXPERIMENTAL): Likewise. - (IN_BADCLASS): Likewise. - (INADDR_ANY): Likewise. - (INADDR_BROADCAST): Likewise. - (INADDR_NONE): Likewise. - (INADDR_LOOPBACK): Likewise. - (INADDR_UNSPEC_GROUP): Likewise. - (INADDR_ALLHOSTS_GROUP): Likewise. - (INADDR_ALLRTRS_GROUP): Likewise. - (INADDR_MAX_LOCAL_GROUP): Likewise. - (struct sockaddr_in): Use in_port_t for sin_port element. - (struct sockaddr_in6): Use in_port_t for sin6_port element. - Use uint8_t instead of u_int8_t. - - * resolv/inet_addr.c (inet_addr): Change return type to in_addr_t. - Call __inet_aton instead of inet_aton. - (__inet_aton): Renamed from inet_aton. Add weak alias under old name. - - * resolv/netdb.h (gethostbyname2): Define only is __USE_MISC. - (innetgr): Likewise. - (struct addrinfo): Use socklen_t for ai_addrlen element. +2000-11-30 H.J. Lu - * sysdeps/unix/sysv/linux/bits/in.h (IPV6_MTU_DISCOVER, IPV6_MTU, - IPV6_RECVERR): New defines. + * scripts/abi-versions.awk (oldest_abi): New variable. + Handle the oldest ABI supported. - * include/netdb.h: Change type of first parameter of __getnetbyaddr_r. - * inet/getnetbyad.c: Likewise. - * inet/getnetbyad_r.c: Likewise. - * nis/nss_nis/nis-network.c: Likewise. - * nis/nssplus_nis/nisplus-network.c: Likewise. - * nss/nss_files/files-network.c: Likewise. - * resolv/netdb.h: Define uint32_t if not already happened. - Include bits/netdb.h. Remove definition of struct netent. - Change type of first parameter of getnetbyaddr_r and getnetbyaddr. - * sysdeps/generic/stdint.h: Allow definition of uint32_t elsewhere. - * sysdeps/generic/bits/netdb.h: New file. - * sysdeps/unix/sysv/linux/alpha/bits/netdb.h: New file. + * Makerules ($(common-objpfx)abi-versions.h): Set oldest_abi + for scripts/abi-versions.awk. - * dlfcn/Makefile (distribute): Add glreflib1.c and glreflib2.c. - (tests): Add glrefmain. - Add rules to build modules and run tests. Ignore result of glrefmain - for now since it fails. - * dlfcn/glrefmain.c: New file. - * dlfcn/glreflib1.c: New file. - * dlfcn/glreflib2.c: New file. + * configure.in: Add --with-oldest-abi=ABI. + * configure: Rebuild. - * test-skeleton.c: Include for strsignal prototype. + * config.make.in (oldest-abi): New. - * locale/programs/ld-collate.c (check_duplicate): Allow repertoire - to be missing. + * config.h.in (GLIBC_OLDEST_ABI): New. - * sysdeps/unix/sysv/linux/init-first.c (init): Add code from - former init-first.h. Initialize __libc_multiple_libcs. + * csu/version.c (banner): Support GLIBC_OLDEST_ABI. -2000-03-31 Ulrich Drepper +2000-11-30 Jakub Jelinek - * iconv/skeleton.c: Define access macros with u suffix. Adjust - #if expression for use of unaligned function to the one used in - the definition of these functions. - * iconv/loop.c: Undefined `unaligned' before recursive inclusion. - * iconv/gconv_simple.c (internal_ucs4_loop_unaligned): New function. - (internal_ucs4le_loop_unaligned): New function. + * locale/setlocale.c (setname): Free for all categories, not just + LC_ALL. + (setlocale): Store a copy of string passed by user, not the string + itself. - * elf/Makefile (distribute): Add dep1.c, dep2.c, dep3.c, and dep4.c. - (tests): Add order. - (module-names): Add dep1, dep2, dep3, and dep4. - Add dependencies for dep* modules and order. - Define rule for order.out which checks the result. - * elf/dep1.c: New file. - * elf/dep2.c: New file. - * elf/dep3.c: New file. - * elf/dep4.c: New file. - * elf/order.c: New file. +2000-11-30 Roland McGrath - * elf/dl-init.c: Fix typo in comment. + * sysdeps/mach/hurd/defs.c (init_stdio): Put this on __libc_subinit + rather than _hurd_fd_subinit, so it happens after it's safe to use + libc facilities like malloc. -2000-03-31 Andreas Jaeger +2000-11-28 Andreas Jaeger - * sysdeps/mips/dl-machine.h (RTLD_START): Rewritten to match new - init function interface. - * sysdeps/mips/mips64/dl-machine.h (RTLD_START): Likewise. + * sysdeps/unix/sysv/linux/getdents.c: Add _syscall_getdents64 + declaration, adjust declaration of __syscall_getdents to match + kernel. -2000-03-31 Andreas Jaeger +2000-11-29 H.J. Lu - * sysdeps/mips/fpu/fgetexcptflg.c: Fix last patch to use #if. - * sysdeps/mips/fpu/fegetenv.c: Likewise. - * sysdeps/mips/fpu/feupdateenv.c: Likewise. - * sysdeps/mips/fpu/fclrexcpt.c: Likewise. - * sysdeps/mips/fpu/fesetenv.c: Likewise. + * sysdeps/generic/readelflib.c (check_ptr): Undefine it first. - * sysdeps/generic/ldsodefs.h: DT_INIT_ARRAY is not relocated - anymore, update comment. +2000-11-29 Andreas Jaeger - * sysdeps/unix/sysv/linux/shmctl.c: Likewise. + * sysdeps/unix/sysv/linux/hppa/brk.c (__brk): Remove unused variable. - * sysdeps/unix/sysv/linux/semctl.c (struct __old_semid_ds): Remove - SHLIB_COMPAT - the struct is always needed. +2000-11-28 Ulrich Drepper -2000-03-31 Ulrich Drepper + * dlfcn/defaultmod1.c: Add prototypes to avoid warnings. + * dlfcn/defaultmod2.c: Likewise. + * dlfcn/dlopen.c: Likewise. + * dlfcn/dlopenold.c: Likewise. + * dlfcn/failtestmod.c: Likewise. + * dlfcn/glreflib1.c: Likewise. + * dlfcn/glreflib2.c: Likewise. + * dlfcn/eval.c: Likewise. Add attributes. - * sysdeps/i386/dl-machine.h (RTLD_START): Optimize for i686. - * elf/dl-support.c: Define _dl_starting_up. + * ctype/ctype-extn.c: Define isblank and not __isblank. -2000-03-30 Ulrich Drepper + * time/strftime.c: Add const where necessary to avoid warnings. + * time/strptime.c (strptime_internal): Add casts to avoid warnings. - * elf/dl-init.c (_dl_init): Clear _dl_starting_up at end of function. - * sysdeps/i386/dl-machine.h: Remove code to clear _dl_starting_up. +2000-11-22 Paul Eggert - * misc/sys/cdefs.h: Don't allow gcc in traditional mode to be used. + * time/strftime.c (my_strftime): Do not invoke mbrlen with a + size of (size_t) -1; it's not portable. - * elf/Makefile (dl-routines): Remove preinit. - * elf/Versions: Remove _dl_preinit. - * elf/dl-preinit.c: Removed. Move content into... - * elf/dl-init.c: ...here. - * sysdeps/i386/dl-machine.h (RTLD_START): Remove call to _dl_preinit. +2000-11-28 Ulrich Drepper - * sysdeps/generic/bits/shm.h (struct shmid_ds): Correct names of - elements. + * sysdeps/i386/fpu/libm-test-ulps: Adjust some values for the + crappy i486 FPU. + Reported by Michael Deutschmann . -2000-03-29 Geoff Clare +2000-11-14 Jes Sorensen - * stdlib/strfmon.c: Corrected problems with the code that - sets default values for [np]_sep_by_space and - [np]_sign_posn; also the new positive/negative alignment - code from the previous patch was not quite right for - [np]_sign_posn = 0. + * sysdeps/ia64/_mcount.S: Call __mcount instead of __mcount_internal. - * localedata/tst-fmon.data: Changes corresponding to the - two sets of fixes made to stdlib/strfmon.c. + * sysdeps/ia64/Makefile: Compile _mcount.S in subdir gmon as + _mcount is required by profiled binaries. -2000-03-29 Jes Sorensen + * sysdeps/unix/sysv/linux/ia64/machine-gmon.h: Moved to... + * sysdeps/ia64/machine-gmon.h: ...here. - * malloc/malloc.c: Declare bit flags UL so that they will not - default to int size when being inverted. +2000-11-28 Masahide Washizawa -2000-03-29 Andreas Jaeger + * iconvdata/Makefile (modules): Add IBM922, IBM1124, and IBM1129. + (distribute): Add ibm922.c, ibm1124.c, ibm1129.c, ibm922.h, ibm1124.h, + and ibm1129.h. + * iconvdata/gconv-modules: Add entries for IBM922, IBM1124, and + IBM1129. + * iconvdata/ibm922.c: New file. + * iconvdata/ibm922.h: New file. + * iconvdata/ibm1124.c: New file. + * iconvdata/ibm1124.h: New file. + * iconvdata/ibm1129.c: New file. + * iconvdata/ibm1129.h: New file. + * iconvdata/testdata/IBM922: New file. + * iconvdata/testdata/IBM922..UTF8: New file. + * iconvdata/testdata/IBM1124: New file. + * iconvdata/testdata/IBM1124..UTF8: New file. + * iconvdata/testdata/IBM1129: New file. + * iconvdata/testdata/IBM1129..UTF8: New file. - * sysdeps/unix/sysv/linux/arm/errlist.c: Use shlib-compat macros. - * sysdeps/unix/sysv/linux/arm/siglist.c: Likewise. +2000-11-28 Ulrich Drepper -2000-03-29 Andreas Jaeger , - Ralf Baechle + * catgets/gencat.c (normalize_line): Take extra parameter with escape + character. Change callers. + (open_conversion): Determine mapping of 0x5c as wchar_t value. + * catgets/Makefile: Add rules to build and run test-gencat. + * catgets/sample.SJIS: New file. + * catgets/test-gencat.c: New file. + * catgets/test-gencat.sh: New file. + Report and test case by Shinya Hanataka . - * Makeconfig: Introduce new variable SHARED to mark code used in - the shared library. - * elf/dl-close.c: Use it instead of PIC. - * elf/dl-load.c: Likewise. - * elf/dl-open.c: Likewise. - * hurd/geteuids.c: Likewise. - * include/libc-symbols.h: Likewise. - * include/shlib-compat.h: Likewise. - * libio/freopen.c: Likewise. - * linuxthreads/cancel.c: Likewise. - * linuxthreads/pthread.c: Likewise. - * linuxthreads/wrapsyscall.c: Likewise. - * nss/nsswitch.c: Likewise. - * stdio-common/vfprintf.c: Likewise. - * sysdeps/arm/init-first.c: Likewise. - * sysdeps/i386/init-first.c: Likewise - * sysdeps/generic/init-first.c: Likewise. - * sysdeps/generic/libc-start.c: Likewise. - * sysdeps/mips/init-first.c: Likewise. - * sysdeps/powerpc/elf/libc-start.c: Likewise. - * sysdeps/unix/sysv/linux/init-first.c: Likewise. - * sysdeps/unix/sysv/linux/arm/siglist.c: Likewise. - * sysdeps/unix/sysv/linux/arm/errlist.c: Likewise. - * sysdeps/unix/sysv/linux/i386/chown.c: Likewise. +2000-11-28 Andreas Jaeger - * sysdeps/mips/machine-gmon.h (asm): Use __PIC__ as check. + * sysdeps/unix/sysv/linux/mips/bits/socket.h: Synch with generic + Linux version. -2000-03-29 Andreas Jaeger +2000-11-28 Ulrich Drepper - * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_runtime_setup): - Use D_PTR to access relocated entries in l_info. - (elf_machine_rela): Likewise. + * sysdeps/unix/sysv/linux/bits/socket.h: Fix last patch. - * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_runtime_setup): - Likewise. - (elf_machine_rela): Likewise. +2000-11-28 Andreas Jaeger - * sysdeps/powerpc/dl-machine.c (__elf_machine_runtime_setup): + * sysdeps/unix/sysv/linux/bits/socket.h (struct cmsghdr): Use + __flexarr. + * sysdeps/unix/sysv/linux/mips/bits/socket.h (struct cmsghdr): Likewise. - (__elf_machine_fixup_plt): Likewise. - (__process_machine_rela): Likewise. - - * sysdeps/m68k/dl-machine.h (elf_machine_runtime_setup): Likewise. - (elf_machine_rela): Likewise. - - * sysdeps/arm/dl-machine.h (elf_machine_runtime_setup): Likewise. - (elf_machine_rel): Likewise. - - * sysdeps/alpha/dl-machine.h (elf_machine_runtime_setup): Likewise. - (elf_machine_fixup_plt): Likewise. - (elf_machine_rela): Likewise. - -2000-03-29 Andreas Jaeger - - * sysdeps/unix/sysv/linux/msgctl.c: Use shlib-compat macros. - * sysdeps/unix/sysv/linux/semctl.c: Likewise. - * sysdeps/unix/sysv/linux/shmctl.c: Likewise. - * sysdeps/unix/sysv/linux/i386/getrlimit.c: Likewise. - * sysdeps/unix/sysv/linux/i386/getrlimit64.c: Likewise. - * sysdeps/unix/sysv/linux/i386/msgctl.c: Likewise. - * sysdeps/unix/sysv/linux/i386/oldgetrlimit64.c: Likewise. - * sysdeps/unix/sysv/linux/i386/semctl.c: Likewise. - * sysdeps/unix/sysv/linux/i386/setrlimit.c: Likewise. - * sysdeps/unix/sysv/linux/i386/shmctl.c: Likewise. - * sysdeps/unix/sysv/linux/alpha/msgctl.c: Likewise. - * sysdeps/unix/sysv/linux/alpha/semctl.c: Likewise. - * sysdeps/unix/sysv/linux/alpha/shmctl.c: Likewise. - * sysdeps/unix/sysv/linux/alpha/adjtime.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/chown.c: Likewise. - - * sysdeps/unix/sysv/linux/alpha/oldglob.c: Use shlib-compat - macros, remove K&R prototypes. - -2000-03-30 Ulrich Drepper - - * posix/getopt.c (_getopt_internal): Return -1 if argc < 1. - Reported by Andrew Wiseman - (PR libc/1677). - -2000-03-30 Andreas Jaeger - - * misc/sys/cdefs.h: Remove K&R support. - -2000-03-30 Ulrich Drepper - - * iconv/skeleton.c: Avoid compiling unaligned versions in some - more cases. - * iconv/loop.c: Likewise. -2000-03-29 Bruno Haible - - * iconv/loop.c (put16): Remove __const. Fix access index. - (put32): Remove __const. Use uint32_t instead of uint16_t. - * iconv/skeleton.c: Likewise. - -2000-03-30 Roland McGrath - - * mach/Versions (libc: GLIBC_2.0) - [SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)]: Conditionalize - __vm_allocate on this. - [SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)]: Conditionalize - mutex- and spinlock-related symbols on this. - [!SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)] (libc: HURD_CTHREADS_0.3): - New version set. Lock-related symbols go here instead in this case. - * sysdeps/mach/hurd/Versions (libc: GLIBC_2.0): Remove - _cthread_exit_routine, _cthread_init_routine, cthread_keycreate, - cthread_getspecific, cthread_setspecific, __libc_getspecific. - * hurd/Versions - [SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)] (libc: GLIBC_2.0): - Put them here instead. - [!SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)] (libc: HURD_CTHREADS_0.3): - New version set. Those cthreads symbols go here instead in this case. - * Versions.def (libc) [USE_IN_LIBIO]: Add HURD_CTHREADS_0.3 version. - -2000-03-30 Ulrich Drepper - - * elf/dl-init.c (_dl_init): We don't need to call constructors - recursively. Fold _dl_init_rec in _dl_init and optimize a bit more. - - Implement dynamic determination of constructor/destructor order in - the dynamic linker. - * elf/Versions [ld.so] (GLIBC_2.0): Remove _dl_init_next. - (GLIBC_2.2): Add _dl_init. - * elf/dl-close.c: Also call all destructors in FINI_ARRAY. - r_duplist is not anymore allocated separately. l_initfini is and - therefore free it if necessary. - * elf/dl-deps.c: If a searchlist has to be allocated, put all in one - malloc block. Otherwise allocate l_initfini list only. - Put dependencies for the object in l_initfini list. - Sort dependencies for the object to be loaded topologically. - * elf/dl-fini.c: Before running the destructors sort the topologically. - * elf/dl-init.c (_dl_init): Renamed from _dl_init_next. Rewrite to - call constructors instead of iterating over the pointers. Get list of - objects for which to run constructors from l_initfini element. Accept - argc, argv, and env as parameters and pass them to the constructors. - * elf/ld-load.c (_dl_map_object_from_fd): Initialize l_ldnum member - with size of dynamic section. - * elf/dl-open.c (dl_open_worker): Only call _dl_init instead of - _dl_init_next and calling constructors ourself. - * elf/dl-preinit.c (_dl_preinit): Renamed from _dl_preinit_next. - Take argc, argv, and env as parameters and pass them to the - constructors. Rewrite to call all constructors and not iterate over - the pointers. - * elf/dynamic-link.h: Don't relocate DT_FINI_ARRAY entry. Don't - precompute l_initcount and l_preinitcount. - * elf/link.h (struct link_map): Add l_ldnum member. - Make l_phdr_allocated part of the bitfield. Remove l_runcount, - l_initcount, and l_preinitcount. Add l_initfini. - * sysdeps/generic/ldsodefs.h: Replace _dl_init_next prototype with - one for _dl_init. - * sysdeps/i386/dl-machine (RTLD_START): Rewrite to match new init - function interface. - * sysdeps/unix/sysv/linux/init-first.h: Removed. - * sysdeps/unix/sysv/linux/Dist: Delete file here as well. - * sysdeps/unix/sysv/linux/init-first.c [PIC]: Don't use - SYSDEP_CALL_INIT. Make _init a strong alias of init. The calling - conventions now match. - - * sysdeps/generic/libc-start.c: Calling __libc_init_first has no - effect for shared objects. Don't emit message and call only for - static library. - -2000-03-29 Ulrich Drepper - - * iconvdata/testdata/CSA_Z243.4-1985-1..UCS-2BE: Renamed from - CSA_Z243.4-1985-1..UCS2. - * iconvdata/testdata/ISO-8859-10..UCS-2BE: Renamed from - ISO-8859-10..UCS2. - -2000-03-29 Andreas Jaeger - - * include/unistd.h: Remove duplicate entry for __rmdir. - Remove declaration of __mkdir since __mkdir is declared in - sys/stat.h. - - * manual/creature.texi (Feature Test Macros): Fix typo, reported - by Michael Deutschmann . - - * sysdeps/mips/fpu/fclrexcpt.c: Use shlib-compat macros. - * sysdeps/mips/fpu/fegetenv.c: Likewise. - * sysdeps/mips/fpu/fesetenv.c: Likewise. - * sysdeps/mips/fpu/feupdateenv.c: Likewise. - * sysdeps/mips/fpu/fgetexcptflg.c: Likewise. - -2000-03-28 Andreas Jaeger - - * sysdeps/i386/fpu/bits/mathinline.h (__sincos): Remove redundant - declaration, the prototype is defined via bits/mathcalls.h. - (__sincosf): Likewise. - (__sincosl): Likewise. - (ldexp): Likewise. - (ldexpf): Likewise. - (ldexpl): Likewise. - (__finite): Likewise. - (__inline_mathcodeNP): New macro without prototype - declarations. - (__inline_mathcodeNP2): Likewise. - (__inline_mathcodeNP3): Likewise. - (__inline_mathcodeNP_): Likewise. - (__inline_mathcodeNP2_): Likewise. - (__inline_mathcodeNP3_): Likewise. - (__inline_mathopNP): Likewise. - (__inline_mathop_declNP): Likewise. - (__inline_mathop_declNP_): Likewise. - (__inline_mathcode_): Use __inline_mathcodeNP_. - (__inline_mathcode2_): Use __inline_mathcodeNP2_. - (__inline_mathcode3_): Use __inline_mathcodeNP3_. - (__inline_mathop_decl_): Use __inline_mathop_declNP__. - (__expm1l): Don't define prototype, the prototype is defined via - bits/mathcalls.h. - (exp): Likewise. - (__expl): Likewise. - (tan): Likewise. - (atan2): Likewise. - (__atan2l): Likewise. - (fmod): Likewise. - (pow): Likewise. - (fabsf): Likewise. - (fabsl): Likewise. - (__fabsl): Likewise. - (asin): Likewise. - (acos): Likewise. - (sinh): Likewise. - (cosh): Likewise. - (tanh): Likewise. - (floor): Likewise. - (ceil): Likewise. - (expm1): Likewise. - (log1p): Likewise. - (asinh): Likewise. - (acosh): Likewise. - (atanh): Likewise. - (hypot): Likewise. - (logb): Likewise. - (fma): Likewise. - (drem): Likewise. - (sqrt): Likewise. - (__sqrtl): Likewise. - (sin): Likewise. - (cos): Likewise. - (atan): Likewise. - (log): Likewise. - (log10): Likewise. - (asinh): Likewise. - (log2): Likewise. - (rint): Likewise. - -2000-03-28 Ulrich Drepper - - * Makerules: If make variable md5 is defined to yes after - generating dependencies generate MD5 sum for the object. - - * iconv/gconv_builtin.h: Fix length in transformation definition - for UNICODEBIG. - - * iconvdata/TESTS: Use UCS-2BE instead of UCS2. +2000-11-27 Ulrich Drepper - * iconv/loop.c: Define get16, get32, put16, and put32 macros to - allow as well reading from/writing to unaligned addresses on machines - which don't support this in hardware. Use FCTNAME macro to define - function name. Include the file a second time for platforms which - need special unaligned handling. - * iconv/skeleton.c: Define get16u, get32u, put16u, and put32u macros - to access potentially unaligned addresses. These macros are intended - to be used only outside the loops. - (unaligned): New definition. In case the machine can handle unaligned - access define as zero. Otherwise as a variable which is initialized - as nonzero in case the buffer passed in at runtime is unaligned with - respect to the character set encoding involved. - Call aligned or unaligned looop functions according to unaligned - variable. - * iconvdata/8bit-gap.c: Use get16, get32, put16, and put32 instead - of direct casting pointer to potentially handle unaligned memory - accesses. - * iconvdata/8bit-generic.c: Likewise. - * iconvdata/ansi_x3.110.c: Likewise. + * misc/getusershell.c: Make strings in okshells array const. + * misc/regexp.c: Add const to cast to avoid warnings. + * sysdeps/unix/sysv/linux/llseek.c: Add prototype for __llseek. + * sysdeps/unix/sysv/linux/i386/setresuid.c: Add prototype for + __setresuid. + * sysdeps/unix/sysv/linux/i386/setresgid.c: Add prototype for + setresgid. + * misc/error.c: Add prototypes for __error and __error_at_line. + * misc/mntent_r.c (__getmntent_r): Add break at end of switch + statement to avoid warning. + * test-skeleton.c: Mark timeout_handler with noreturn. + * iconv/skeleton.c (get16u): Add const to cast. + (get32u): Likewise. + * iconvdata/gb18030.c: Likewise. + * iconvdata/iso-2022-cn-ext.c: Likewise. + * iconvdata/ansi_x3.110.c: Add cast to avoid warning. * iconvdata/big5.c: Likewise. - * iconvdata/euc-cn.c: Likewise. - * iconvdata/euc-jp.c: Likewise. - * iconvdata/euc-kr.c: Likewise. - * iconvdata/euc-tw.c: Likewise. - * iconvdata/gbk.c: Likewise. - * iconvdata/iso-2022-cn.c: Likewise. - * iconvdata/iso-2022-jp.c: Likewise. - * iconvdata/iso-2022-kr.c: Likewise. - * iconvdata/iso646.c: Likewise. - * iconvdata/iso_6937-2.c: Likewise. + * iconvdata/big5hkscs.c: Likewise. * iconvdata/iso_6937.c: Likewise. - * iconvdata/johab.c: Likewise. - * iconvdata/sjis.c: Likewise. + * iconvdata/iso_6937-2.c: Likewise. * iconvdata/t.61.c: Likewise. - * iconvdata/uhc.c: Likewise. + * iconvdata/iso646.c: Add prototypes for gconv_init and gconv_env. * iconvdata/unicode.c: Likewise. * iconvdata/utf-16.c: Likewise. + * iconvdata/cns11643.h (ucs4_to_cns11643): Define needed as size_t. + * iconv/gconv_trans.c (__gconv_translit_find): Avoid one warning + with little code shuffling. - * locale/programs/simple-hash.c: Little optimizations. Remove K&R - prototypes. - - * malloc/Versions [libc] (GLIBC_2.2): Add mcheck_check_all. - * malloc/mcheck.c (mcheck_check_all): Renamed from check_all and made - public. - * malloc/mcheck.h (mcheck_check_all): Declare. - - * stdio-common/Makefile (tests): Add tst-obprintf. - -2000-03-28 Roland McGrath - - * sysdeps/generic/bits/sigthread.h: Clean up conditionals. - Declare pthread_sigmask. - - * csu/version.c: Add 2000 to copyright years. - Remove Emacs local variables section. - -2000-03-23 Bruno Haible - - * iconv/gconv_int.h (__gconv_transform_ucs2little_internal, - __gconv_transform_internal_ucs2little): Remove declarations. - * iconv/gconv_simple.c (__gconv_transform_ucs2_internal, - __gconv_transform_internal_ucs2): Never need to bswap_16. - (__gconv_transform_ucs2reverse_internal, - __gconv_transform_internal_ucs2reverse): Always need to bswap_16. - -2000-03-27 Roland McGrath - - * include/shlib-compat.h (SHLIB_COMPAT): Make the test handle the - obsoleting version not being defined at all, in which case the - result is always true. - - * Makeconfig (preprocess-versions): New canned sequence for running - cpp on shlib-versions and the like. - (soversions.i): Use it. - * Makerules (Versions.all, sysd-versions): Use it to preprocess the - Versions.def and Versions files. - -2000-03-27 Ulrich Drepper - - * stdio-common/tst-obprintf.c (main): Add another check to see - obstack_printf handling all possible beginnings of the block - inside an obstack chunk. - - * locale/programs/localedef.c: Use __malloc_initialize_hook to - install mcheck handler. - - * libio/obprintf.c (_IO_obstack_vprintf): Fix one more memory - handling problem. - -2000-03-27 Roland McGrath - - * stdio-common/tmpfile.c: Use macros. - - * include/shlib-compat.h: Conditionalize include - on [HAVE_ELF && DO_VERSIONING]. - -2000-03-27 Ulrich Drepper - - * stdio-common/tst-obprintf.c: New file. - -2000-03-26 Ulrich Drepper - - * libio/genops.c (_IO_default_xsputn): Little optimization. Call - _IO_OVERFLOW directly instead through __overflow. - - * locale/programs/localedef.c (construct_output_path): If path - contains a / compute the end of the directory name correctly. - - * include/features.h: Undef and document __USE_XOPEN2K. - - * malloc/mcheck.c: Implement pedantic checking of all allocated blocks - whenever a function is called. Initiated by calling mcheck_pedantic - instead of mcheck. - * malloc/mcheck.h: Declare mcheck_pedantic. - * malloc/Versions [libc] (GLIBC_2.2): Add mcheck_pedantic. - * locale/programs/localdef.c: Use mcheck_pedantic instead of mcheck - for now. - -2000-03-26 Roland McGrath - - * dlfcn/dlopen.c: Use macros. - * dlfcn/dlopenold.c: Likewise. - * nss/getXXbyYY_r.c: Likewise. - * nss/getXXent_r.c: Likewise. - * hurd/hurdinit.c: Likewise. - * hurd/compat-20.c: Likewise. - * libio/oldiofopen.c: Likewise. - * libio/oldiofclose.c: Likewise. - * libio/oldiofdopen.c: Likewise. - * libio/oldfileops.c: Likewise. - * libio/oldstdfiles.c: Likewise. - * libio/oldiofsetpos.c: Likewise. - * libio/oldiofgetpos.c: Likewise. - * libio/oldiofgetpos64.c: Likewise. - * libio/oldiofsetpos64.c: Likewise. - * libio/oldiopopen.c: Likewise. - * libio/oldpclose.c: Likewise. - * libio/oldtmpfile.c: Likewise. - * libio/freopen.c (freopen): Likewise. - * libio/iofclose.c (_IO_new_fclose): Likewise. - - * sysdeps/mach/sys/reboot.h: Include . - (reboot): Declare it. - - * libio/Makefile (headers): Add bits/stdio-lock.h here. - - * sysdeps/mach/hurd/bits/stdio-lock.h: New file. - - * include/shlib-compat.h: Include unconditionally. - - * posix/unistd.h (intptr_t): Conditionalize on [__USE_MISC || - __USE_XOPEN_EXTENDED] rather than on [__USE_UNIX98]. - We need this for the sbrk decl, which can be included without Unix98. - -2000-03-20 Richard Henderson - - * nis/nss_nis/nis-service.c (_nss_nis_getservbyport_r): Last - argument to yperr2nss is an int, not size_t. - * posix/regex.c (print_partial_compiled_pattern): Cast all - ptrdiff_t to long for printing. - (print_compiled_pattern): Use Z for printing size_t. - * posix/testfnm.c (tests): Avoid trigraphs. - * sysdeps/alpha/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE): - Use a C comment, not an assembly comment. - - * sysdeps/unix/sysv/linux/alpha/msgctl.c: Clarify use - of __ASSUME_32BITUIDS. - -2000-03-26 Ulrich Drepper - - * libio/iofopncook.c: Remove K&R prototypes. - -2000-03-26 Roland McGrath - - * hurd/hurdrlimit.c (init_rlimit): Give the RLIMIT_NOFILE soft limit - an initial value of 1024 instead of RLIM_INFINITY. - - * Versions.def (libmachuser, libhurduser): Remove these sections, - since these libraries do not presently use symbol versions. - - * sysdeps/mach/hurd/getdtsz.c (__getdtablesize): If the resource limit - is RLIM_INFINITY, return -1 instead. + * sysdeps/powerpc/Makefile (CFLAGS-initfini.s): Add -O1 to avoid + the problems introduced when the user selects -O3. -2000-03-24 Andreas Jaeger + * iconv/gconv.h (__gconv_info): Define __data element using __flexarr. + * misc/sys/cdefs.h: Define __flexarr. + Proposed by Joseph S. Myers . - * Makefile (postclean): Added soversions.i. + * iconvdata/iso-2022-jp.c: Add prototypes to avoid warnings. + * iconv/skeleton.c: Likewise. + * iconvdata/iso8859-1.c (BODY to 8859-1): Add const to cast. + * iconv/loop.c (get16): Add const to cast. + (get32): Likewise. -2000-03-24 Scott Bambrough +2000-11-27 Andreas Jaeger - * sysdeps/arm/fpu/fpu_control.h: Define _FPU_MASK_IM, _FPU_MASK_ZM, - _FPU_MASK_OM, _FPU_MASK_UM, _FPU_MASK_PM, _FPU_MASK_DM, _FPU_DEFAULT, - and _FPU_IEEE. Change _FPU_RESERVED. + * login/programs/pt_chown.c (do_pt_chown): Mark function as static + to avoid warning. + * login/programs/utmpdump.c (print_entry): Likewise. -2000-03-24 Scott Bambrough +2000-11-25 Maciej W. Rozycki - * sysdeps/unix/sysv/linux/arm/sys/ucontext.h: New file. + * sysdeps/mips/__longjmp.c (__longjmp): Restore SP and FP last and + in a single asm as they may be used to access other stored + registers. + * sysdeps/mips/mips64/__longjmp.c (__longjmp): Likewise. -2000-03-24 Roland McGrath +2000-11-27 Andreas Jaeger - * sysdeps/posix/getaddrinfo.c: Include for if_nametoindex. - (gaih_inet): Remove unused duplicate variable. + * rt/tst-aio.c: Mark test functions as static to avoid warnings. + * rt/tst-aio64.c: Likewise. - * inet/getnameinfo.c (getnameinfo): Use IFNAMSIZ, not MAXHOSTNAMELEN. - Don't use __libc_sa_len, which only exists for Linux. Just handle - AF_INET and AF_INET6 directly as well as AF_LOCAL, since those are the - only flavors supported by this function anyway. +2000-11-27 Ulrich Drepper -2000-03-24 Geoff Clare + * catgets/Makefile (test1.cat): Set LC_ALL, LOCPATH, and GCONV_PATH + for gencat run. + (libc.cat): Likewise. + * catgets/gencat.c: Implement handling of message catalogs encoded + with stateful character sets. + Based on a patch by Shinya Hanataka . - * stdlib/strfmon.c: Corrected problems with missing signs and - missing or extra spaces; allow for sign strings longer than - one character; add padding to ensure positive and negative - formats are aligned when a left precision is used. +2000-11-26 Ulrich Drepper -2000-03-26 Ulrich Drepper + * sysdeps/unix/opendir.c (__opendir): Add cast to avoid warning. - * stdlib/random_r.c (__setstate_r): Allow RNGs of type 4. - Patch by John Mizel . + * inet/getnameinfo.c: Adjust casts to avoid warnings. + * inet/rcmd.c: Likewise. + * inet/ruserpass.c: Likewise. + * inet/netinet/in.h (IN6_IS_ADDR_UNSPECIFIED, IN6_IS_ADDR_LOOPBACK, + IN6_IS_ADDR_MULTICAST, IN6_IS_ADDR_LINKLOCAL, IN6_IS_ADDR_SITELOCAL, + IN6_IS_ADDR_V4MAPPED, IN6_IS_ADDR_V4COMPAT, IN6_ARE_ADDR_EQUAL, + IN6_IS_ADDR_MC_NODELOCAL, IN6_IS_ADDR_MC_LINKLOCAL, + IN6_IS_ADDR_MC_SITELOCAL, IN6_IS_ADDR_MC_ORGLOCAL, + IN6_IS_ADDR_MC_GLOBAL): Preserve const in cast. + * include/aliases.h: Add prototypes for internal __getalias* functions. + * include/netdb.h: Add prototypes for __old_gethostent_r, + __old_gethostbyaddr_r, __old_gethostbyname_r, __old_gethostbyname2_r, + __old_getnetent_r, __old_getnetbyaddr_r, __old_getnetbyname_r, + __old_getservent_r, __old_getservbyname_r, __old_getservbyport_r, + __old_getprotoent_r, __old_getprotobyname_r, __old_getprotobynumber_r. + * include/rpc/netdb.h: Add prototypes for __old_getrpcbyname_r, + __old_getrpcbynumber_r, __old_getrpcent_r. -2000-03-25 Ulrich Drepper + * include/rpc/netdb.h: Add __getrpcbyname_r, __getrpcbynumber_r, + __getrpcent_r prototypes. - * manual/install.texi: Remove references to crypt add-on. +2000-11-25 Ulrich Drepper -2000-03-25 Roland McGrath + * string/strcoll.c: Add casts to avoid warnings. + * string/strnlen.c: Likewise. + * string/strxfrm.c: Likewise. + * sysdeps/generic/_strerror.c: Likewise. + * sysdeps/generic/memrchr.c: Likewise. + * sysdeps/generic/strcasestr.c: Likewise. + * sysdeps/generic/strstr.c: Likewise. - * sysdeps/mach/hurd/setrlimit.c (setrlimit): Go into a critical - section while taking the _hurd_rlimit_lock. - * sysdeps/mach/hurd/getrlimit.c (__getrlimit): Likewise. + * locale/weight.h (findidx): Add const to cast to avoid warning. -2000-03-24 Roland McGrath + * elf/loadfail.c: Little cosmetic changes to avoid warnings. + * elf/loadtest.c: Likewise. + * elf/multiload.c: Likewise. + * elf/next.c: Likewise. + * elf/nodelete.c: Likewise. + * elf/noload.c: Likewise. + * elf/order.c: Likewise. + * elf/origtest.c: Likewise. + * elf/preloadtest.c: Likewise. + * elf/restest1.c: Likewise. - * Makerules [$(cross-compiling) = yes] (symbolic-link-prog): Define - using $(LN_S). + * sysdeps/i386/i486/bits/string.h (__strncat_g) [i686]: Fourth + parameter of asm must be in %ecx. - * sysdeps/mach/hurd/if_index.c: New file. + * string/tester.c: Mark test functions as static to avoid warnings. - * sysdeps/unix/sysv/linux/net/if.h: Moved to ... - * sysdeps/gnu/net/if.h: here. - (_IOT_ifconf, _IOT_ifreq): Hurd ioctl type macros moved from ... - * sysdeps/mach/hurd/net/if.h: ... here; this file now removed. - * sysdeps/generic/net/if.h: New file. Declares just the standard - functions and `struct if_nameindex' type. - * socket/Makefile (headers): Add net/if.h here. - * sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Not here. - * sysdeps/mach/hurd/Dist: Remove it here. - * sysdeps/unix/sysv/linux/Dist: And here. - * sysdeps/generic/if_index.c: Include . + * iconv/gconv_conf.c (read_conf_file): Make mod_counter static to + preserve value over different gconv-modules files. -2000-03-24 Andreas Jaeger +2000-11-24 Ulrich Drepper - * sysdeps/mips/dl-machine.h (__dl_runtime_resolve): Use D_PTR to - access relocated entries in l_info. - (elf_machine_got_rel): Likewise. - (elf_machine_runtime_setup): Likewise. - * sysdeps/mips/mips64/dl-machine.h (elf_machine_got_rel): Likewise. - (elf_machine_runtime_setup): Likewise. - (__dl_runtime_resolve): Likewise. + * locale/findlocale.c: Add casts to avoid warnings. + * locale/localeinfo.h (LIMAGIC): Add cast to avoid warnings. + * misc/efgcvt_r.c (fcvt_r): Use ssize_t instead of int and add cast + to avoid warnings. + * misc/tsearch.c (const_node): New type. + (trecurse): Correct casts to avoid warnings. + (__twalk): Likewise. + * stdlib/tst-limits.c: Add z modifier to formats for WORD_BIT and + LONG_BIT. -2000-03-23 Ulrich Drepper + * debug/backtrace-tst.c (compare): Add casts to avoid warnings. - * resolv/netdb.h (SCOPE_DELIMITER): New definitions. - * inet/netinet/in.h (struct sockaddr_in6): Add sin6_scope_id - according to RFC 2553. - * sysdeps/posix/getaddrinfo.c: Change to follow latest RFC draft. - * inet/getnameinfo.c: Likewise. - Patches by YOSHIFUJI Hideaki . + * test-skeleton.c: Mark local functions as static to avoid warnings. -2000-03-23 Bruno Haible +2000-11-23 H.J. Lu - * iconv/gconv_simple.c (internal_ucs4_loop, internal_ucs4le_loop): - Remove no-op pointer increment. + * rt/tst-aio6.c (do_test): Use pipe instead of STDIN_FILENO to + support the background job. + Fix a typo. -2000-03-23 Andreas Jaeger +2000-11-24 Ulrich Drepper - * stdio-common/tst-cookie.c (cookieseek): Change prototype to - follow change for libio.h from 2000-03-10. + * iconv/gconv_conf.c (insert_module): Replace old entry if new one + has same names but lower cost. -2000-03-23 Andreas Jaeger +2000-11-23 Jakub Jelinek - * elf/dl-addr.c: Adjust include paths for ldsodefs location - change. - * elf/dl-debug.c: Likewise. - * elf/dl-deps.c: Likewise. - * elf/dl-error.c: Likewise. - * elf/dl-fini.c: Likewise. - * elf/dl-init.c: Likewise. - * elf/dl-load.c: Likewise. - * elf/dl-lookup.c: Likewise. - * elf/dl-minimal.c: Likewise. - * elf/dl-object.c: Likewise. - * elf/dl-open.c: Likewise. - * elf/dl-preinit.c: Likewise. - * elf/dl-profile.c: Likewise. - * elf/dl-profstub.c: Likewise. - * elf/dl-reloc.c: Likewise. - * elf/dl-runtime.c: Likewise. - * elf/dl-support.c: Likewise. - * elf/dl-symbol.c: Likewise. - * elf/dl-version.c: Likewise. - * elf/rtld.c: Likewise. - * elf/sprof.c: Likewise. - * sysdeps/generic/dl-cache.c: Likewise. - * sysdeps/generic/dl-origin.c: Likewise. - * sysdeps/generic/dl-sysdep.c: Likewise. - * sysdeps/generic/elf/backtracesyms.c: Likewise. - * sysdeps/generic/elf/backtracesymsfd.c: Likewise. - * sysdeps/generic/libc-start.c: Likewise. - * sysdeps/mach/hurd/dl-sysdep.c: Likewise. - * sysdeps/powerpc/dl-machine.c: Likewise. - * sysdeps/powerpc/elf/libc-start.c: Likewise. - * sysdeps/sparc/sparc32/dl-machine.h: Likewise. + * sysdeps/sparc/sparc32/dl-machine.h: Ifdef out handling for relocs + which never occur during bootstrap. * sysdeps/sparc/sparc64/dl-machine.h: Likewise. - * sysdeps/unix/sysv/linux/dl-origin.c: Likewise. - * elf/ldsodefs.h: Move file to ... - * sysdeps/generic/ldsodefs.h: ... here. - - * sysdeps/generic/ldsodefs.h: Add definition for D_PTR. - - * sysdeps/mips/elf/ldsodefs.h: New file. - - * elf/dl-version.c (match_symbol): Use D_PTR to access relocated - entries in l_info. - (_dl_check_map_versions): Likewise. - * elf/dl-reloc.c (_dl_relocate_object): Likewise. - * elf/dl-load.c (_dl_init_paths): Likewise. - (_dl_map_object): Likewise. - * elf/dynamic-link.h (_ELF_DYNAMIC_DO_RELOC): Likewise. - (elf_get_dynamic_info): Likewise. - * elf/do-lookup.h (FCT): Likewise. - * elf/do-rel.h (elf_dynamic_do_rel): Likewise. - * elf/dl-deps.c (_dl_map_object_deps): Likewise. - * elf/dl-addr.c (_dl_addr): Likewise. - * elf/dl-runtime.c (profile_fixup): Likewise. - (fixup): Likewise. - * elf/dl-init.c (_dl_init_next): Likewise. - * sysdeps/generic/dl-machine.h (elf_machine_runtime_setup): Likewise. - * sysdeps/unix/sysv/linux/i386/dl-librecon.h - (DISTINGUISH_LIB_VERSIONS): Likewise. - * sysdeps/i386/dl-machine.h (elf_machine_runtime_setup): Likewise. - (elf_machine_rel): Likewise. - - * elf/dynamic-link.h (elf_get_dynamic_info): Only change l_info - for writable dynamic section. - -2000-03-22 Ulrich Drepper - - * inet/getnameinfo.c (getnameinfo): Check that addrlen value is - large enough. Patch by YOSHIFUJI Hideaki . - -2000-03-22 Andreas Jaeger - - * sysdeps/unix/sysv/linux/powerpc/bits/mman.h (MADV_*): Add flags - from latest Linux kernel. - -2000-03-21 Andreas Jaeger - - * Versions.def: Add version 2.1.4. - -2000-03-21 Ulrich Drepper - - * libio/oldtmpfile.c: Update for new SHLIB_COMPAT definition. - * libio/oldiofopen.c: Likewise. - * libio/oldiofclose.c: Likewise. - * sysdeps/unix/sysv/linux/errlist.c: Likewise. - -2000-03-22 Roland McGrath - - * include/shlib-compat.h (SHLIB_COMPAT): Take a third argument, - indicating the first version set to obsolete the conditionalized code. - (compat_symbol): New macro. - * scripts/abi-versions.awk: For subsumed versions, make ABI_* defn's - rhs be the ABI_* macro for the subsuming version. Assign increasing - integer values to the ABI_* macros for supported versions. - * sysdeps/gnu/siglist.c: Use new SHLIB_COMPAT convention, and use - compat_symbol macro. - -2000-03-21 Ulrich Drepper - - * nscd/connections.c (nscd_run): Pretty print. - * elf/dl-runtime.c: Include stdlib.h for alloca prototype. - - * manual/charset.texi: Fix typos. Rephrase. - * manual/process.texi: Likewise. - * manual/signal.texi: Likewise. - Patches by Mike Coleman . - - * libio/oldtmpfile.c: Use new macros from shlib-compat.h to define - versions. - * libio/iofdopen.c: Likewise. - * libio/iofgetpos.c: Likewise. - * libio/iofgetpos64.c: Likewise. - * libio/iofopen.c: Likewise. - * libio/iofsetpos.c: Likewise. - * libio/iofsetpos64.c: Likewise. - * libio/iopopen.c: Likewise. - * libio/oldiofopen.c: Likewise. - * libio/pclose.c: Likewise. - * sysdeps/gnu/siglist.c: Likewise. - * sysdeps/unix/sysv/linux/errlist.c: Likewise. - - * include/shlib-compat.h (versioned_symbol): Give preprocessor the - chance to expand VERSION_##lib##_##version. - - * libio/fileops.c: Use new macros from shlib-compat.h to define - versions. - * libio/iofclose.c: Likewise. - * libio/oldiofclose.c: Likewise. - Patch by Roland McGrath . - -2000-03-21 Jakub Jelinek - - * sysdeps/unix/sysv/linux/sparc/bits/sigcontext.h: Clean up namespace. - Lay out struct sigcontext according to what really gets passed on - the stack. - * sysdeps/unix/sysv/linux/sparc/sys/procfs.h: Don't include asm/elf.h. - (elf_gregset_t, elf_greg_t, elf_fpregset_t, ELF_NGREG): Define. - (prgregset_t, prfpregset_t): Define to elf_* types. - * sysdeps/unix/sysv/linux/sparc/sys/ptrace.h (PTRACE_WRITEDATA): - Define to correct value. - * sysdeps/unix/sysv/linux/sparc/sparc32/profil-counter.h: Use struct - sigcontext. - * sysdeps/unix/sysv/linux/sparc/sparc32/sigcontextinfo.h: Likewise. - -2000-03-21 Roland McGrath - - * scripts/firstversions.awk: Allow multiple version sets in the - "earliest version" specification, meaning that version sets in the - gaps between listed versions should be folded into the earliest later - version that is explicitly listed. - * shlib-versions (mips.*-.*-linux.*): Use that syntax for to say - we support GLIBC_2.0 and GLIBC_2.2 but not the intervening sets. - -2000-03-21 Ulrich Drepper - - * iconv/gconv_builtin.c: Include . - * iconv/gconv_builtin.h: Add UCS-BE aliases. - Add UCS-4LE transformation. Define UNICODEBIG and UNICODELITTLE - according to current platform. - * iconv/gconv_int.h: Declare __gconv_transform_ucs2reverse_internal, - __gconv_transform_internal_ucs2reverse, and - __gconv_transform_internal_ucs4le. - * iconv/gconv_simple.c: Implement __gconv_transform_internal_ucs4le, - __gconv_transform_ucs2reverse_internal and - __gconv_transform_internal_ucs2reverse. - * iconvdata/Makefile (modules): Add UNICODE. - (distribute): Add unicode.c. - * iconvdata/gconv-modules: Add definitions for UNICODE module. - * iconvdata/unicode.c: New file. - - * iconvdata/utf-16.c: Rewrite code to emit BOM. Correct code to - determine byte order of input and convert accordingly. - - * iconvdata/utf-16.c (gconv_init): Fix typo. - -2000-03-20 Ulrich Drepper - - * iconvdata/gconv-modules: Fix typo. - - * sysdeps/unix/sysv/linux/configure.in: Remove `crypt' from one - more messages. - - * sysdeps/unix/sysv/aix/*: Add initial code for port to AIX 4.3. - -2000-03-16 Thorsten Kukuk - - * sysdeps/unix/sysv/linux/sparc/bits/sigcontext.h: New. - -2000-03-20 Ulrich Drepper - - * misc/Makefile (routines): Add mincore. - -2000-03-20 Andreas Jaeger - - * sysdeps/generic/mincore.c: New stub file. - - * sysdeps/unix/sysv/linux/arm/bits/mman.h (MADV_*): Add flags - from latest Linux kernel. - -2000-03-20 Ulrich Drepper - - * grp/initgroups.c (compat_call): Use _SC_GETGR_R_SIZE_MAX instead of - _SC_GETPW_R_SIZE_MAX. - -2000-03-20 Richard Henderson - - * sysdeps/unix/sysv/linux/alpha/Versions: Put pciconfig_iobase - in GLIBC_2.1.4. +2000-11-23 Andreas Jaeger -2000-03-20 Richard Henderson + * nss/nss_files/files-hosts.c: Remove getipnodebyname. - * sysdeps/alpha/fpu/fraiseexcpt.c: Use get/set_fp_control instead - of arithmetic instructions. + * nss/Versions: Remove _nss_files_getipnodebyname_r. - * sysdeps/alpha/fpu/s_ceil.c: Use round to -inf instead of playing - with the fpcr. Protect from INV exception. - * sysdeps/alpha/fpu/s_ceilf.c: Likewise. - * sysdeps/alpha/fpu/s_floor.c: Protect from INV exception. - * sysdeps/alpha/fpu/s_floorf.c: Likewise. + * sysdeps/unix/sysv/linux/Versions: Fix typo in last patch. - * sysdeps/alpha/fpu/s_copysign.c: New. - * sysdeps/alpha/fpu/s_copysignf.c: New. - * sysdeps/alpha/fpu/s_fabs.c: New. - * sysdeps/alpha/fpu/s_fabsf.c: New. - * sysdeps/alpha/fpu/s_rint.c: New. - * sysdeps/alpha/fpu/s_rintf.c: New. +2000-11-18 Martin Buchholz - * sysdeps/unix/sysv/linux/alpha/bits/mman.h: Add MADV constants. + * csu/gmon-start.c (__gmon_start__): Avoid over-clever trick `if + (called++) return;' - * sysdeps/unix/sysv/linux/alpha/Makefile (sysdep_routines): - Kill sethae. - * sysdeps/unix/sysv/linux/alpha/Versions: Add pciconfig_iobase. - * sysdeps/unix/sysv/linux/alpha/ioperm.c (all address constants): - Use physical addresses not KSEG addresses. - (io_system): Add PYXIS. - (io): Remove hae.reg, sys, hae_shift. - (stb_mb, stw_mb, stl_mb, __sethae): New. - (inline_outb, inline_outw, inline_outl): Don't set hae. - (inline_inb, inline_inw, inline_inl): Likewise. - (dense_sethae): New null function. - (struct cpuinfo_data): New. - (process_cpuinfo): Use local and stack variables, not static. - Move readlink check here from init_iosys. - (init_iosys): Use __pciconfig_iobase first. Know SX and LX as PYXIS. - (_iopl): Simplify. - (_hae_shift): Calculate it here. - * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove sethae, - add pciconfig_iobase. +2000-11-21 Alan Modra -2000-03-20 Roland McGrath + * sysdeps/generic/bsd-_setjmp.c (setjmp): Rename to _setjmp. - * locale/programs/ld-time.c (time_finish): Use %Z instead of %z. - * locale/programs/ld-ctype.c (ctype_finish, ctype_class_new): Likewise. + * csu/abi-note.S: Correct comment for operating system number. - * scripts/versions.awk: Fixed version renaming code to distinguish - libraries properly. +2000-11-22 Ulrich Drepper -2000-03-19 Ulrich Drepper + * Versions.def: Add GLIBC_2.2.1 for glibc. - * include/stdlib.h: Add prototype for __cxa_atexit. +2000-11-22 Andreas Schwab - * sysdeps/unix/sysv/linux/i386/sys/debugreg.h: Update comment about - _SLOWDOWN flags. Patch by Jim Blandy . + * sysdeps/unix/sysv/linux/syscalls.list: Add pivot_root. + * sysdeps/unix/sysv/linux/Versions: Add pivot_root at GLIBC_2.2.1. -2000-03-17 Cristian Gafton +2000-11-22 Ulrich Drepper - * elf/Makefile ($(rtld-version-installed-name)): Delay replacing - existing rtld-installed-name. - ($(rtld-installed-name)): Request libc-$(version) be installed too. - replace existing rtld-installed-name using $(symbolic-link-prog). + * rt/aio_suspend.c (aio_suspend): Convert timeout value to + absolute time for pthread_cond_timedwait call. + Reported by Lawrence Chen [libc/1930]. -2000-03-17 Roland McGrath + * rt/Makefile (tests): Add tst-aio6. + * rt/tst-aio6.c: New file. - * locale/programs/ld-collate.c (collate_read): Remove bogus cast. - (insert_value, handle_ellipsis, collate_read): Replace %zu in format - strings with %Zu, because gcc-2.95.2's -Wformat knows about the latter - but not the former. +2000-11-23 Andreas Jaeger -2000-03-19 Ulrich Drepper + * sysdeps/s390/bits/string.h (strncat): Fix one more typo. - * sysdeps/generic/glob.c [_LIBC]: Always use __xstat64, not only for - glob64. Since there is no glob64 in the LFS proposal applications - can assume that glob handles LFS situations. glob64 is only needed - if alternative filesystem functions are used. +2000-11-22 Andreas Jaeger -2000-03-19 Geoff Clare + * sysdeps/s390/bits/string.h (strncat): Add missing quotation marks. - * sysdeps/generic/glob.c: Correct gl_pathc value returned - when GLOB_DOOFFS is set; correct handling of patterns - containing escaped wildcards (and no unescaped ones); - GLOB_ERR flag was being ignored in some situations. +2000-11-21 Martin Schwidefsky - * posix/globtest.c, posix/globtest.sh: Updated to include - tests for the problems fixed by the above changes to glob.c. + * sysdeps/s390/bits/string.h: Make strncat always add a \0. - * manual/pattern.texi (Calling Glob): Update description of gl_pathc. +2000-11-21 Andreas Schwab -2000-03-19 Roland McGrath + * sysdeps/alpha/setjmp.S: Remove __setjmp entry point. + * sysdeps/arm/setjmp.S: Likewise. + * sysdeps/arm/fpu/setjmp.S: Likewise. + * sysdeps/i386/setjmp.S: Likewise. + * sysdeps/i386/elf/setjmp.S: Likewise. + * sysdeps/s390/setjmp.S: Likewise. + * sysdeps/s390/elf/setjmp.S: Likewise. + * sysdeps/sh/sh3/setjmp.S: Likewise. + * sysdeps/sh/sh4/setjmp.S: Likewise. + * sysdeps/sparc/sparc32/setjmp.S: Likewise. + * sysdeps/unix/sysv/linux/ia64/setjmp.S: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/setjmp.S: Likewise. + * sysdeps/unix/sysv/linux/m68k/setjmp.c: Removed. - * Makeconfig (soversion.i): Use only first match for each lib. +2000-11-21 Andreas Jaeger - * Makeconfig (soversion.i): Pass -undef to $(CC) -E. + * sysdeps/generic/__longjmp.c (__longjmp): Remove obsolete + NORETURN, fix parameter list. - * Makerules (Versions.all, sysd-versions): Test $(sysd-sorted-done) - rather than $(sysd-dirs-done) to protect these rules. + * string/bug-strncat1.c (main): Fix typo. + Patch by Bernhard Kaindl . - * Makerules (version-renames.def): Target removed. - (Versions.all): Depend on soversions.i directly and parse it. +2000-11-20 Ulrich Drepper - * Makeconfig (soversions.i): New target, input-reading parts of - soversions.mk generation moved here; result is a canonicalized - list "LIB VERSION [SET]" for this configuration. - (soversions.mk): Use that as input. Don't emit map-firstversions. - * Makerules (version-renames.def): New target, generated from - soversions.i with contents that was in $(map-firstversions). - (Versions.all): Don't depend on soversions.mk, depend on - version-renames.def instead; just cat it into the input. + * configure.in: Add --enable-all-warnings. + * config.make.in (all-warnings): New variable. + * Makeconfig (+gccwarn): Define with many more warnings if + all-warnings is yes. - * Makerules (Versions.all): Use $(foreach ...) instead of sh for loop - for $(map-firstversions), which better handles it being empty. +2000-11-20 Jakub Jelinek - * shlib-versions [USE_IN_LIBIO] (.*-.*-gnu-gnu*): Set earliest - supported version for libc 0.2.90.libio to GLIBC_2.2. + * iconvdata/bug-iconv2.c (main): Use %zd in format string. + * io/test-lfs.c (do_test): Cast statbuf.st_size to long long. + * malloc/tst-valloc.c (main): Cast valloc return value to long. + * malloc/tst-obstack.c (verbose_malloc): Use %zd in format string. + * math/test-fpucw.c (main): Use %lx in format string, cast + control words to long. + * stdio-common/tst-fmemopen.c (main): Use %td in format strings. + * stdlib/tst-strtol.c (tests): Avoid (bogus?) decimal constant is so + large that it is unsigned warning. - * Makeconfig (soversions.mk): Grok new third column in shlib-versions, - and use it to emit new variable `map-firstversions'. - * scripts/firstversions.awk: New file. - * Makerules (Versions.all): Use scripts/firstversions.awk and - the $(map-firstversions) value to generate a modified versions list - that includes renames in "A = B" syntax for each version set earlier - than the "earliest symbol version" named in shlib-versions. - * scripts/versions.awk: Recognize "A = B" lines in the input to mean - rename version set A to B in the output to the intermediate file. - * scripts/abi-versions.awk: New file. - * Makerules (abi-versions.h): New target, generated by that script. - [$(versioning) = yes] (before-compile): Prepend abi-versions.h. - * include/shlib-compat.h: New file, uses that generated header. + * sysdeps/unix/sysv/linux/sparc/bits/types.h (__ssize_t): Changing + it to long on sparc64. -2000-03-18 Roland McGrath +2000-11-20 Andreas Jaeger - * Makeconfig (soversions.mk): Convert % -> # in shlib-versions - after stripping # comments, and then run it through cpp. - This allows things like "%ifdef FOO" based on config.h settings. - * shlib-versions [USE_IN_LIBIO] (.*-.*-gnu-gnu*): libc=0.2.90.libio + * nscd/nscd.h (termination_handler): Add noreturn attribute. + (receiv_print_stats): Likewise. - * hurd/intr-msg.c (_hurd_intr_rpc_mach_msg): For MACH_SEND_INTERRUPTED - and other errors that indicate a pseudo-receive happened, grok through - the message buffer for port rights that need references fixed up. + * elf/ldconfig.c (path_hwcap): Cast -1 for proper comparison. -2000-03-16 Andreas Jaeger +2000-11-20 Ulrich Drepper - * sysdeps/unix/sysv/linux/syscalls.list: Added madvise and mincore. + * malloc/thread-m.h: gcc doesn't tolerate zero-sized types anymore. - * sysdeps/unix/sysv/linux/madvise.c: Remove. + * csu/gmon-start.c: Always have prototype for __gmon_start. + * csu/version.c: Add prototypes for __libc_print_version and + __libc_main. + * iconv/gconv.c: Include gconv_int.h and gconv.h. + * iconv/gconv.h (struct __gconv_step): Remove const from __from_name + and __to_name. + * iconv/gconv_builtin.h: Add ASCII module definitions. + * iconv/gconv_conf.c (__gconv_path_elem): Remove const. + (add_module): Add cast to avoid warning. Rework construction of + strings for new module. + * iconv/gconv_db.c (__gconv_alias_compare): Make s1 and s2 const. + (derivation_compare): Likewise. + * iconv/gconv_dl.c (do_release_shlib): Remove const from nodep. + (__gconv_release_shlib): Cast do_release_shlib as parameter for twalk. + * iconv/gconv_int.h (__gconv_path_elem): Remove const. + (struct gconv_alias): Remove const from fromname and toname. + * iconv/gconv_simple.c: Include gconv_builtin.h to get prototypes + for loop functions. + (internal_ucs4_loop): Use correct const-ness. + (ucs4_internal_loop): Likewise. + (internal_ucs4le_loop): Likewise. + (ucs4le_internal_loop_single): Likewise. + * iconv/gconv_trans.c (__gconv_transliterate): Make from_idx, from_tbl, + to_idx, to_tbl, winbuf, winbufend const. Change casts in + assignments appropriately. + (struct known_trans): Remove const from fname. + (trans_compare): Make s1 and s2 const. + * iconv/loop.c (LOOPFC): Make outend parameter const. Add cast to + avoid warning. + * iconv/skeleton.c: Remove cast in calls of loop functions. + * iconvdata/gconv-modules: Remove US-ASCII definitions. + * iconvdata/iso646.c: Remove US_ASCII support. + * include/set-hooks.h (DEFINE_HOOK): Also generate prototype. + * include/unistd.h: Add __libc_check_standard_fds prototype. + * string/bits/string2.h (__mempcpy_args): Add const to casts. + * sysdeps/generic/initfini.c: Add prototypes for dummy, _init, and + _fini. + * sysdeps/generic/libc-start.c: Add prototype for __libc_start_main. + * sysdeps/i386/i486/bits/string.h (strcmp): Add const to casts. + * sysdeps/unix/sysv/linux/dl-osinfo.h (dl_fatal): Add cast to avoid + warning. + * sysdeps/unix/sysv/linux/init-first.c: Add prototypes for + __libc_init_first and _dl_start. + * intl/dcigettext.c (transcmp): Make s1 and s2 const. + (DCIGETTEXT): Make domaindata variable const. + * intl/loadmsgcat.c (_nl_load_domain): Rearrange domain initialization + to avoid warning. - * sysdeps/unix/sysv/linux/sparc/bits/mman.h (MADV_*): Add flags - from latest Linux kernel. - * sysdeps/unix/sysv/linux/i386/bits/mman.h (MADV_*): Likewise. +2000-11-20 Hiroyuki Machida - * misc/sys/mman.h: Add prototype for mincore. + * sysdeps/unix/sysv/linux/mips/clone.S: Fix comments. -2000-03-17 Ulrich Drepper + * sysdeps/unix/sysv/linux/mips/kernel_stat.h (kernel_stat): Expand + time_t to 'long int' not, 'unsigned int'. Use 'long int' for + __unused? members. - * sysdeps/unix/sysv/linux/i386/syscalls.list: Add oldsetrlimit - entry for GLIBC_2.0 version of setrlimit. - Patch by Shinya Hanataka . + * sysdeps/unix/sysv/linux/mips/bits/fcntl.h (O_NOFOLLOW): Use same + value defined in /usr/include/asm-mips/fcntl.h. -2000-03-16 Thorsten Kukuk +2000-11-18 Ulrich Drepper - * nis/nss_nis/nis-ethers.c: Return with error if malloc fails. - * nis/nss_compat/compat-initgroups.c: Likewise. - * nis/nss_nis/nis-initgroups.c: Likewise. - * nis/nss_nis/nis-netgrp.c: Likewise. - * nis/nss_nis/nis-proto.c: Likewise. - * nis/nss_nis/nis-rpc.c: Likewise. - * nis/nss_nis/nis-service.c: Likewise. - * nis/ypclnt.c: Likewise. + * stdio-common/Makefile (tests): Add test-vfprintf. + (test-vfprintf-ENV): New variable. + * stdio-common/test-vfprintf.c: New file. -2000-03-16 Andreas Jaeger + * wcsmbs/mbrtowc.c (__mbrtowc): Do not only flush if input is '\0'. - * manual/Makefile: MAKEINFO is set to `:' from configure if it - doesn't exist, correct checks. Fixes PR libc/1649. + * wcsmbs/Makefile (tests): Add tst-mbrtowc and tst-wcrtomb. + (tst-mbrtowc-ENV): New variable. + (tst-wcrtomb-ENV): New variable. + * wcsmbs/tst-mbrtowc.c: New file. + * wcsmbs/tst-wcrtomb.c: New file. -2000-03-16 Thorsten Kukuk +2000-11-16 Andreas Jaeger - * nscd/hstcache.c: Restore correct UID. - * nscd/pwdcache.c: Likewise. - Patch from Gabor Gombas . + * manual/install.texi (Tools for Compilation): Update + documentation for GCC 2.95.2. -2000-03-17 Roland McGrath +2000-11-18 Ulrich Drepper - * sysdeps/i386/sys/ucontext.h: Prepend REG_ to enum values and - macros for register names, in line with 2000-03-14 linux change. + * sysdeps/posix/getaddrinfo.c (gaih_inet): Only return -EAI_AGAIN + if IPv4 and IPv6 requests timed out. - * sysdeps/mach/sched_yield.c: New file. +2000-11-18 Akim Demaille -2000-03-13 Roland McGrath + * malloc/obstack.h: Formatting changes. + (obstack_grow, obstack_grow0): Don't cast WHERE at all: it + prevents type checking. + (obstack_ptr_grow, obstack_ptr_grow_fast): When assigning, don't + cast the value to (void *): assigning a `foo *' to a `void *' + variable is valid. + (obstack_int_grow, obstack_int_grow_fast): Don't cast AINT to int. - * sysdeps/generic/lockfile.c: Include - (_IO_flockfile, _IO_funlockfile, _IO_ftrylockfile): #undef these in - case defined them. - (__flockfile, __funlockfile, __ftrylockfile): Functions renamed - from __internal_*. - (flockfile, _IO_flockfile, funlockfile, _IO_funlockfile, - ftrylockfile, _IO_ftrylockfile): Fix aliases accordingly. +2000-11-17 Ulrich Drepper - * sysdeps/generic/bits/stdio-lock.h (_IO_lock_initializer): Use ... - for more pleasing parse error. + * scripts/config.guess: Update from upstream maintainer. + * scripts/config.sub: Likewise. -2000-03-16 Ulrich Drepper +2000-11-16 Ulrich Drepper - * locale/lc-time.c (_nl_init_era_entries): Correct allocation of - memory for eras. + * libio/freopen.c (freopen): Reset _mode after succesful reopening. + * libio/freopen64.c (freopen64): Likewise. Patch by Shinya Hanataka . - * elf/Makefile: Add rules to compile and run constload1 test. - * elf/constload1.c: New file. - * elf/constload2.c: New file. - * elf/constload3.c: New file. + * libio/Makefile: Add rules to build and run test-freopen. + * libio/test-freopen.c: New file. + * libio/test-freopen.sh: New file. -2000-03-15 Ulrich Drepper +2000-11-15 H.J. Lu - * sysdeps/posix/open64.c: Make __open64 weak alias. - * sysdeps/posix/pread64.c: Make __pread64 weak alias. - * sysdeps/unix/sysv/linux/pread64.c: Likewise. - * sysdeps/unix/sysv/linux/i386/pread64.c: Likewise. - * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/pread64.c: Likewise. - * sysdeps/posix/pwrite64.c: Make __pwrite64 weak alias. - * sysdeps/unix/sysv/linux/pwrite64.c: Likewise. - * sysdeps/unix/sysv/linux/i386/pwrite64.c: Likewise. - * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise. - * sysdeps/unix/sysv/linux/powerpc/pwrite64.c: Likewise. + * sysdeps/generic/ldsodefs.h (DL_DT_INIT_ADDRESS): Defined if + ELF_FUNCTION_PTR_IS_SPECIAL is not defined. + (DL_DT_FINI_ADDRESS): Likewise. -2000-03-14 Ulrich Drepper + * sysdeps/ia64/dl-lookupcfg.h (_dl_lookup_address): Set the + return type to ElfW(Addr). + (_dl_function_address): New prototype. + (DL_FUNCTION_ADDRESS): Defined. + (DL_DT_INIT_ADDRESS): Defined as DL_FUNCTION_ADDRESS. + (DL_DT_FINI_ADDRESS): Likewise. - * sysdeps/unix/sysv/linux/alpha/ioperm.c (platform): Add entry for - Nautilus. Patch by Soohoon Lee . + * sysdeps/ia64/Versions (GLIBC_2.2): Add _dl_function_address. -2000-03-16 Mark Kettenis + * sysdeps/ia64/dl-machine.h (_dl_start_address): Removed. + (ELF_MACHINE_START_ADDRESS): Changed to DL_FUNCTION_ADDRESS. - * sysdeps/unix/sysv/linux/i386/sys/procfs.h (prfpregset_t): - Typedef for elf_fpregset_t instead of `elf_fpregset_t *'. + * sysdeps/ia64/dl-symaddr.c (_dl_start_address): Renamed to ... + (_dl_function_address): This. -2000-03-08 Andreas Jaeger + * elf/dl-fini.c (_dl_fini): Use DL_DT_FINI_ADDRESS to get the + function pointer for DT_FINI. + * elf/dl-close.c (_dl_close): Likewise. - * sysdeps/unix/sysv/linux/scsi/sg.h: Sync with Linux 2.3.50. + * elf/dl-init.c (_dl_init): Use DL_DT_INIT_ADDRESS to get the + function pointer for DT_INIT. -2000-03-14 Ulrich Drepper +2000-11-16 Jakub Jelinek - * timezone/africa: Update from tzdata2000d. - * timezone/asia: Likewise. - * timezone/australasia: Likewise. - * timezone/europe: Likewise. - * timezone/northamerica: Likewise. - * timezone/southamerica: Likewise. + * sysdeps/generic/printf_fphex.c (__printf_fphex): Compute correctly + end of wexpbuf buffer. - * po/fr.po: Update from translation team. - * po/de.po: Likewise. +2000-11-16 Andreas Jaeger - * elf/dl-deps.c (_dl_map_object_deps): Change return type and remove - last parameter. Move code to add map to global scope from here... - * elf/dl-open.c (dl_open_worker): ...here. - * elf/ldsodefs.h: Adjust declaration of _dl_map_object_deps. - * elf/rtld.c: Adjust call to _dl_map_object_deps. + * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: Remove duplicate + definition of F_GETLK, F_SETLK, F_SETLKW. - * locale/programs/ld-collate.c (collate_read): Fix warning. +2000-11-16 Andreas Jaeger - * sysdeps/unix/sysv/linux/i386/sys/ucontext.h: Prepend REG_ to enum - values and macros for register names. + * sysdeps/generic/dl-cache.c (_DL_PLATFORMS_COUNT): Define to 0 if + it's not defined. - * libio/iofopncook.c (_IO_cookie_seek): Return error only if value - returned by seek cookie function is -1. +2000-11-15 Jakub Jelinek -2000-03-14 Andreas Jaeger + * dlfcn/default.c (main): Add test for dladdr of main returning + argv[0] in dli_fname field. - * locale/localeconv.c (localeconv): Fix typo. - Reported by Andre Charbonneau . +2000-11-15 Jakub Jelinek -2000-03-14 Ulrich Drepper + * Makeconfig (run-program-prefix): Move test-static test into the + variable. - * iconv/skeleton.c: Increment __invocation_counter in inner loop - since modules depend on it counting the number of times the conversion - function got called. + * sysdeps/alpha/dl-machine.h (RTLD_START): Update _dl_argv. + * sysdeps/sparc/sparc32/dl-machine.h (RTLD_START): Likewise, + schedule instructions. + * sysdeps/sparc/sparc64/dl-machine.h (RTLD_START): Likewise, + schedule instructions, fix a bug in copying auxiliary data. - * iconv/gconv_open.c: Optimize loop to setup step data structure. +2000-11-15 Ulrich Drepper - * iconv/gconv.h: Pretty print. + * manual/startup.texi (Program Arguments): Fix type of main's envp + parameter. + Reported by Raúl Núñez de Arenas Coronado . -2000-03-04 Ulrich Drepper + * iconvdata/gconv-modules: Add CP950 alias. - * posix/wordexp-test.c: Correct one of the tests added in the last - change. Really get the root passwd entry to check again ~root. +2000-11-13 Jakub Jelinek -2000-03-10 Andreas Jaeger + * sysdeps/unix/sysv/linux/Makefile: Allow ports to override + syscall-list.h goal. + * sysdeps/unix/sysv/linux/sparc/Makefile: New file. - * manual/filesys.texi (Working Directory): Fix last patch. - Patch by Martin Buchholz . +2000-11-15 Ulrich Drepper -2000-03-10 Andreas Jaeger + * intl/Makefile: tst-gettext2.sh does not need a third parameter. - * manual/creature.texi (Feature Test Macros): Fix language. + * intl/tst-gettext2.sh: Copy locale data. Adjust LOCPATH. Verify + output of program. -2000-03-10 Roland McGrath + * intl/tst-gettext2.c: Set C locale if setting other locale + failed. Use gettext() not _(). - * mach/devstream.c (devstream_write, devstream_read): New functions. - (input, output): Functions removed. - (mach_open_devstream): Use devstream_{read,write} as cookie functions, - using only the vanilla fopencookie interface. + * locale/setlocale.c: Increment _nl_msg_cat_cntr whenever we + successfully loaded a new locale. - * hurd/fopenport.c [! USE_IN_LIBIO] (cookie_io_functions_t): Define - as macro for __io_functions. - (funcsio): Use cookie_io_functions_t type name. - (fopenport): Renamed from __fopenport. Rewrite to call fopencookie. +2000-11-13 Andreas Jaeger - * libio/iofopncook.c (_IO_cookie_init): New function, broken out of - fopencookie. - (fopencookie): Use it. - * libio/libio.h: Declare _IO_cookie_init. - * hurd/vpprintf.c (vpprintf) [USE_IN_LIBIO]: Implement using - _IO_cookie_init. + * configure.in: Require gcc 2.95 or newer. - * libio/libio.h (__io_seek_fn): Fix second argument type - to be a pointer, in line with the manual and the old stdio. - * libio/iofopncook.c (_IO_cookie_seek): Fix (sole) caller. +2000-11-15 Ulrich Drepper - * sysdeps/generic/bits/stdio-lock.h: New file. - This is a stub with #error, but that's better than no file at all. + * sysdeps/unix/sysv/linux/paths.h: Adjust for FHS. + Patch by Arkadiusz Miskiewicz . -2000-03-09 Martin Buchholz +2000-11-11 Jim Meyering - * sysdeps/unix/sysv/linux/alpha/syscall.S: Doc Fixes. - * manual/message.texi (Using gettextized software): Doc Fixes. - * manual/message.texi (Message Translation): Doc Fixes. - * manual/filesys.texi (File Size): Doc Fixes. - * manual/charset.texi (glibc iconv Implementation): Doc Fixes. - * locale/programs/ld-collate.c (collate_output): Doc Fixes. - * iconv/gconv_db.c (find_derivation): Doc Fixes. - * manual/install.texi: Doc Fixes. - * manual/search.texi (Hash Search Function): Doc Fixes. - * manual/stdio.texi (Output Conversion Syntax): Doc Fixes. - * FAQ.in: Doc Fixes. - * config.h.in: Doc Fixes. - * sysdeps/generic/dl-sysdep.c: Doc Fixes. - Doc Fixes. `allows to' is not correct English. + * string/strndup.c (strndup): Cast return value to `char *'. - * elf/rtld.c: Doc fixes. - * manual/creature.texi (Feature Test Macros): Doc fixes. - * manual/memory.texi (Hooks for Malloc): Doc Fixes. +2000-11-15 Jim Meyering - * manual/filesys.texi (Working Directory): Check for ERANGE to - avoid infloop. + * sysdeps/generic/memchr.c: Remove some useless parentheses. + [HAVE_STDLIB_H || defined _LIBC]: Include . + [HAVE_BP_SYM_H || defined _LIBC]: Guard inclusion of bp-sym.h. + [! (HAVE_BP_SYM_H || defined _LIBC)] (BP_SYM): Define as no-op. + Also #undef __memchr. + Use `weak_alias' only if it's defined. -2000-02-23 Roland McGrath +2000-11-10 H.J. Lu - * string/argz-stringify.c (__argz_stringify): Fix loop termination - conditions so as not to clobber the final '\0' when there is only one - element in the vector. + * Makefile.in (install): Set LANGUAGE=C LC_ALL=C. -2000-03-09 Roland McGrath +2000-11-15 Andreas Jaeger - * io/sys/stat.h: Fix inverted sense of `defined __S_IFSOCK' test, - broken by 2000-02-27 change. + * elf/chroot_canon.c: Include . - * sysdeps/generic/bits/poll.h (POLLRDNORM, POLLRDBAND): New macros. + * elf/cache.c (struct cache_entry): Use uint64_t for hwcap. + (print_entry): Likewise. + (add_to_cache): Likewise. -2000-02-23 Roland McGrath + * elf/ldconfig.h (add_to_cache): Change prototype for hwcap change. - * sysdeps/mach/hurd/sigstack.c (sigstack): Remove `const' from - argument type, for 2000-02-22 change in signal/signal.h declaration. + * elf/ldconfig.c (struct lib_entry): Use uint64_t for hwcap. + (path_hwcap): Likewise. + (search_dir): Likewise. -2000-03-09 Roland McGrath + * sysdeps/generic/dl-cache.c (HWCAP_CHECK): Handle platform. - * sysdeps/generic/getdents64.c (__getdirentries64): Renamed - to getdirentries64 (no __), since the Linux implementation - has no __ name, and there is no declaration for the __ name. + * elf/cache.c (add_to_cache): Handle 64 bit hwcap entry. - * sysdeps/mach/bits/libc-lock.h (__libc_cleanup_end): New macro. + * sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h + (_dl_platform_string): New. + (_DL_HWCAP_PLATFORM): New. + (_dl_string_platform): New. + * sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.h: Likewise. - * sysdeps/mach/hurd/Makefile ($(common-objpfx)errnos.d): Tighten up - sed regexp so as not to break directory names including /../ within. + * sysdeps/generic/dl-procinfo.h (_DL_HWCAP_COUNT): New. + (_dl_string_platform): New. + (_DL_HWCAP_PLATFORM): New. + (_dl_platform_string): New. - * sysdeps/unix/bsd/bits/waitflags.h: File removed. - The sysdeps/generic file is right for BSD. This file was in fact the - Hurd file, but the only difference was the WNOREAP flag that was never - actually implemented or used anywhere. + * sysdeps/unix/sysv/linux/i386/dl-procinfo.h: Added x86 platform + recognition. + (_DL_HWCAP_COUNT): New. + (_dl_string_platform): New. + (_DL_HWCAP_PLATFORM): New. + (_dl_platform_string): New. - * configure.in (PERL, INSTALL_INFO): Don't AC_SUBST these, - since AC_PATH_PROG already does it for us. - (PERL): Rewrite check added in 2000-02-29 change for syntactic - correctness and sh portability. I replaced the broken check - with a more sensible implementation of the apparently intended - semantics, which might still be questionable. Using expr causes - a non-numeric value for `perl -V:apiversion` to be accepted, - refusing to use only a perl that reports a number less than 5; - on my system, perl (5.004_04) -V:apiversion produces UNKNOWN. - * configure: Regenerated. +2000-11-14 Ulrich Drepper -2000-03-08 Andreas Jaeger + * iconvdata/gconv-modules: Add CP936 as alias for GBK. - * manual/crypt.texi: Fix paths. +2000-11-14 Andreas Jaeger -2000-03-07 Andreas Jaeger + * sysdeps/generic/dl-cache.c (HWCAP_CHECK): Fix access to _dl_hwcap. - * resolv/netdb.h: The descriptions of rresvport and rresvport_af - were swapped. - Patch by YOSHIFUJI Hideaki , closes PR - libc/1636. +2000-11-13 Roland McGrath -2000-03-06 Andreas Jaeger + * hurd/get-host.c (_hurd_get_host_config): Fix last change. - * sysdeps/i386/fpu/bits/mathinline.h: Fix union definition error - in __sgn1l, otherwise g++ fails to parse this. - Reported by Sean Chen . +2000-11-13 Marcus Brinkmann -2000-03-03 Geoff Keating + * hurd/get-host.c (_hurd_get_host_config): Fix possible buffer + underrun and make sure the result is null terminated even if there + is no trailing newline. - * configure.in: Compute sizeof-long-double. - * configure: Regenerated. - * config.make.in: Make sizeof-long-double available to sub-makes. +2000-11-13 Jakub Jelinek -2000-03-03 Ulrich Drepper + * sysdeps/alpha/fpu/libm-test-ulps: Update. - * sysdeps/unix/sysv/linux/init-first.c: Remove trace of personality - call. +2000-11-10 H.J. Lu -2000-03-03 Geoff Keating + * sysdeps/ia64/fpu/libm-test-ulps: Updated. - * Makeconfig (rpath-dirs): Add crypt. - (all-subdirs): Remove md5crypt. - * crypt/sysdeps/unix/crypt.c: Move to crypt/. - * crypt/sysdeps/unix/crypt-entry.c: Move to crypt/. - * sysdeps/generic/crypt-entry.c: Delete. - * crypt/sysdeps/unix/crypt.h: Move to crypt/. - * sysdeps/generic/crypt.h: Delete. - * crypt/sysdeps/unix/crypt-private.h: Move to crypt/. - * crypt/sysdeps/unix/crypt_util.c: Move to crypt/. - * crypt/sysdeps/unix/des_impl.c: Move to sunrpc/. - * sysdeps/generic/des_impl.c: Delete. - * crypt/sysdeps/unix/ufc-crypt.h: Move to crypt/. - * crypt/sysdeps: Delete. - * crypt/crypt_util.c: Don't use `patchlevel.h'. - * md5-crypt/Versions: Move to crypt/. - * md5-crypt/md5-crypt.c: Move to crypt/. - * md5-crypt/md5.c: Move to crypt/. - * md5-crypt/md5c-test.c: Move to crypt/. - * md5-crypt/md5test.c: Move to crypt/. - * md5-crypt: Delete. - * crypt/Makefile: Adjust for new structure. +2000-11-10 Andreas Jaeger -2000-03-03 Paul Eggert + * elf/ldconfig.c (create_links): Fix alloca calculation. + Patch by Ben Collins . - * posix/regex.c (MB_LEN_MAX): Include to define; - define to 1 if not defined. +2000-11-09 Ulrich Drepper -2000-03-03 Andreas Jaeger + * inet/getnameinfo.c (getnameinfo): Use correct destination + parameter for if_indextoname. + Patch by Hideaki YOSHIFUJI . - * sunrpc/xdr.c (xdr_hyper): Correctly handle lower half of llp. +2000-11-09 H.J. Lu -2000-03-03 Andreas Jaeger + * sunrpc/Versions (GLIBC_2.1): Remove xdr_cryptkeyarg, + xdr_cryptkeyarg2, xdr_cryptkeyres, xdr_des_block, + xdr_key_netstarg, xdr_key_netstres, xdr_keybuf and + xdr_keystatus. - * sunrpc/xdr_intXX_t.c (xdr_uint16_t): Fix ENCODE and DECODE - cases. - (xdr_int64_t): Correctly handle lower half. - Fix by Sten Dahlgren , closes PR libc/1623. + * time/Versions (GLIBC_2.1): Move getitimer to... + * sysdeps/unix/sysv/linux/alpha/Versions (GLIBC_2.1): ...here. -2000-03-03 Ulrich Drepper +2000-11-03 Bruno Haible - * sysdeps/unix/sysv/linux/init-first.c: Remove trace of personality - call. + * manual/install.texi: Recommend to set LANGUAGE=C LC_ALL=C during + "make install", to work around a binary incompatibility between + glibc 2.1 and glibc 2.2 gconv modules. -2000-03-02 Andreas Jaeger +2000-11-09 Ulrich Drepper - * sysdeps/unix/sysv/linux/scsi/sg.h: Integrate changes from Linux - 2.3.43. + * intl/locale.alias: Add thai. + Patch by Chanop Silpa-Anan . -2000-03-02 Andreas Jaeger +2000-11-07 Akim Demaille - * resolv/Makefile (headers): Add arpa/nameser_compat.h. + * malloc/obstack.c (obstack_grow, obstack_grow0): Rename the second + argument `data' for consistency with the prototypes. + Qualify it `const'. + (obstack_copy, obstack_copy0): Rename the second argument as + `address' for consistency. Qualify it `const'. + * malloc/obstack.h (obstack_copy, obstack_copy0, obstack_grow) + (obstack_grow0, obstack_ptr_grow, obstack_ptr_grow_fast): Qualify + `const' their input argument (`data' or `address'). + Adjust the corresponding macros to include `const' in casts. -2000-03-01 Andreas Jaeger +2000-11-06 Hideaki YOSHIFUJI - * time/Makefile (tst-getdate-ENV): New flag to pass DATEMSK. - (tests): Added tst-getdate. + * sysdeps/posix/getaddrinfo.c: Clean-up: define family to hold + target family. - * time/tst-getdate.c: New file. +2000-11-06 Hideaki YOSHIFUJI - * time/datemsk: New file, needed for tst-getdate. + * sysdeps/posix/getaddrinfo.c: Loosen protocol check to ease raw + socket creation. -2000-02-29 Cristian Gafton +2000-11-06 Hideaki YOSHIFUJI - * configure.in (CCVERSION): Require at least veersion 5 of perl API. + * sysdeps/posix/getaddrinfo.c: Ensure to fill ai_socktype and + ai_protocol by internal table if service was not given. -2000-02-17 H.J. Lu +2000-11-06 Hideaki YOSHIFUJI - * sunrpc/rpc/svc.h (SVCXPRT): Add a "xp_pad" field at the end. + * sysdeps/posix/getaddrinfo.c: Don't raise an error even if + numerical port was specified with protocol without socktype. - * sunrpc/svc_udp.c (svcudp_bufcreate): Turn on IP_PKTINFO if - available. - (svcudp_recv): Set up message with the new "xp_pad" field for - IP_PKTINFO. - (svcudp_reply): Support IP_PKTINFO if available. +2000-11-06 Hideaki YOSHIFUJI -2000-03-01 Andreas Jaeger + * sysdeps/posix/getaddrinfo.c: Ensure to check if protocol is ok. - * time/getdate.c (check_mday): Fix check for february. - Reported by ane@np.bs1.fc.nec.co.jp and Akira YOSHIYAMA - , closes PR libc/1617 and PR libc/1619. +2000-11-06 Hideaki YOSHIFUJI -2000-03-02 Andreas Jaeger + * inet/getnameinfo.c: getnameinfo() NI_xxx flag validation. - * posix/unistd.h: __THROW has to precede __attribute__, otherwise - g++ fails to parse this. - Reported by Sean Chen . +2000-11-06 Hideaki YOSHIFUJI -2000-02-28 Ulrich Drepper + * sysdeps/posix/getaddrinfo.c: Ensure not to fill garbage value in + sin6_scope_id field. - * io/creat.c: Moved to... - * sysdeps/generic/creat.c: ...here. - * io/creat64.c: Moved to... - * sysdeps/generic/creat64.c: ...here. - * io/lockf.c: Moved to... - * sysdeps/generic/lockf.c: ...here. +2000-11-06 Hideaki YOSHIFUJI - * crypt/crypt.texi: Moved to... - * manual/crypt.texi: ...here. - * crypt/examples/genpass.c: Moved to... - * manual/examples/genpass.c: ...here. - * crypt/examples/mygenpass.c: Moved to... - * manual/examples/mygenpass.c: ...here. - * crypt/examples/testpass.c: Moved to... - * manual/examples/testpass.c: ...here. + * inet/getnameinfo.c: Repair getnameinfo() sin6_socpe_id support. - * manual/Makefile (chapters): Add crypt. - * manual/conf.texi: Add usual header for not-last chapter. - * manual/crypt.texi: Add special header for last chapter. +2000-11-06 Hideaki YOSHIFUJI -2000-02-28 Geoff Keating + * inet/getnameinfo.c: Repair NI_NOFQDN flag support. - * Makeconfig (all-subdirs): Add 'crypt' subdirectory. - * sysdeps/unix/sysv/linux/configure.in (inhibit_glue): Don't - complain if there is no crypt add-on. - * crypt/configure: Removed. +2000-11-06 Hideaki YOSHIFUJI - * crypt/crypt.texi: Update documentation of US export restrictions - to match the 14 Jan 2000 regulations. + * inet/getnameinfo.c: Wake-up sin6_scope_id support in + getnameinfo(): check for whether sin6_socpe_id exist was wrong. -2000-02-28 Geoff Keating +2000-11-09 Martin Schwidefsky - * crypt: New subdirectory, merged in from the crypt add-on. + * sysdeps/unix/sysv/linux/s390/mmap.S: Use mmap2 if it is present. + * sysdeps/unix/sysv/linux/s390/mmap64.S: New file. -2000-02-28 Ulrich Drepper +2000-11-09 H.J. Lu - * include/unistd.h: Add __rmdir and __mkdir prototypes. + * io/Versions (GLIBC_2.1.1): Remove lockf64. -See ChangeLog.10 for earlier changes. +See ChangeLog.11 for earlier changes. diff -adurpN glibc-2.2/ChangeLog.11 glibc-2.2.1/ChangeLog.11 --- glibc-2.2/ChangeLog.11 Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/ChangeLog.11 Thu Nov 9 19:31:36 2000 @@ -0,0 +1,13405 @@ +2000-11-09 Ulrich Drepper + + * version.h (VERSION): Bump to 2.2. + (RELEASE): Set to stable. + + * posix/Makefile (tst-dir-ARGS): Fix problem with compiling in + source directory. + (tst-chmod-ARGS): Likewise. + +2000-11-09 H.J. Lu + + * io/Versions (GLIBC_2.2): Add __open64. + +2000-11-09 Jakub Jelinek + + * locale/C-time.c (_nl_C_LC_TIME): Fix value for _NL_TIME_WEEK_1STWEEK. + +2000-11-09 Jakub Jelinek + + * locale/programs/ld-paper.c (paper_output): Fix offset into width + field. + +2000-10-27 Bruno Haible + + * locale/programs/charmap.c (charmap_read): Verify ASCII + compatibility of charmap. + +2000-11-08 Ulrich Drepper + + * catgets/gencat.c (main): Don't use exit() to avoid warnings with + broken compilers. + + * include/features.h (__STDC_ISO_10646__): Correct value to be + 200009L. Patch by Markus Kuhn . + +2000-11-08 H.J. Lu + + * pwd/Versions (GLIBC_2.1.2): Add getpwnam_r. + +2000-11-08 Jakub Jelinek + + * string/bits/string2.h: Check if _USE_STRING_ARCH_ macros are + defined, not _HAVE_STRING_ARCH_. + * sysdeps/i386/bits/string.h (_USE_STRING_ARCH_memset, + _USE_STRING_ARCH_strchr): Define. + * sysdeps/i386/i486/bits/string.h (_USE_STRING_ARCH_memset, + _USE_STRING_ARCH_strchr): Define. + * sysdeps/sparc/bits/string.h: New file. + +2000-11-08 Bruno Haible + + * locale/C-translit.h.in: Tweak result. + * locale/C-translit.h: Regenerated. + +2000-11-08 Ulrich Drepper + + * posix/unistd.h: Add attribute((const)) to sysconf prototype. + + * iconvdata/euc-kr.c (euckr_from_ucs4): Map 0x20a9 to \xa3dc. + (BODY from direction): Remove special handling of \x5c. + * iconvdata/EUC-KR.irreversible: Adjust for this change. + * iconvdata/testdata/EUC-KR..UTF8: Likewise. + Reported by Jungshik Shin . + +2000-11-07 Kazumoto Kojima + + * sysdeps/sh/sh3/setjmp.S (__sigsetjmp): Skip FPU fields. + +2000-11-06 Ulrich Drepper + + * iconvdata/big5.c: Regenerated after BIG5 charmap change. + Patch by Tung-Han Hsieh . + + * sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Fix typo in + comparison with new cache magic bytes. + Patch by Denis Zaitsev . + +2000-11-03 Bruno Haible + + * locale/C-translit.h.in: Update from translit_neutral. + * locale/C-translit.h: Regenerated. + * intl/tst-translit.c: Update. + +2000-11-04 Mark Kettenis + + * sysdeps/mach/hurd/Dist: Remove clk_tck.c. + + * sysdeps/mach/hurd/Versions [libc] (GLIBC_2.1.1): Remove + __libc_clk_tck. + * sysdeps/mach/hurd/Makefile [$(subdir)==posix] (sysdep_routines): + Remove clk_tck. + * sysdeps/mach/hurd/clk_tck.c: Removed. + * sysdeps/mach/hurd/getclktck.c: New file. + * sysdeps/mach/hurd/setitimer.c (quantize_timeval): Use + __getclktck instead of __libc_clk_tck. + * sysdeps/mach/hurd/bits/time.h: Use __sysconf for CLK_TCK instead + of __libc_clk_tck. + * sysdeps/mach/hurd/i386/bits/time.h: Likewise. + +2000-11-03 Ulrich Drepper + + * posix/Versions: Export __sysconf. + +2000-11-02 Ulrich Drepper + + * version.h (VERSION): Bump to 2.1.97. + + * iconvdata/Makefile (distribute): Add viscii.c. + + * elf/Makefile (distribute): Add tst-pathopt.sh. + + * sysdeps/i386/i486/bits/string.h (strcmp): Cast arguments to + __strcmp_cc, __strcmp_cg, and __strcmp_gc to unsigned char *. + (__strcmp_cc, __strcmp_cg, __strcmp_gc): Remove casts of values here. + Reported by Denis Zaitsev . + + * iconvdata/utf-16.c (PREPARE_LOOP): Correct typo preventing BOM from + being written. + + * manual/socket.texi (Local Namespace Concepts): Don't mention what + permissions are necessary to connect to a socket. + Reported by Peter Eisentraut . + + * sysdeps/generic/backtracesyms.c (__backtrace_symbols): Fix + computation of total for 64-bit machines. + Patch by Byron Stanoszek . + + * manual/arith.texi (Rounding): Correct description of fesetround + return value. Patch by Conrado Badenas . + +2000-10-30 Maciej W. Rozycki + + * sysdeps/mips/dl-machine.h (elf_machine_rel): Add the symbol's + value plus the run-time displacement to the relocation for non-GOT + symbols. Set the relocation to the GOT entry for GOT symbols. + +2000-11-02 Ulrich Drepper + + * sysdeps/unix/sysv/linux/s390/bits/time.h: Removed. + +2000-11-01 Ulrich Drepper + + * iconvdata/TESTS: Add entries for IBM856, IBM930, IBM933, IBM935, + IBM937, IBM939, and IBM1046. + * iconvdata/testdata/IBM1046: New file. + * iconvdata/testdata/IBM930..UTF8: New file. + * iconvdata/testdata/IBM1046..UTF8: New file. + * iconvdata/testdata/IBM933: New file. + * iconvdata/testdata/IBM935: New file. + * iconvdata/testdata/IBM937: New file. + * iconvdata/testdata/IBM856..UTF8: New file. + * iconvdata/testdata/IBM939: New file. + * iconvdata/testdata/IBM933..UTF8: New file. + * iconvdata/testdata/IBM935..UTF8: New file. + * iconvdata/testdata/IBM930: New file. + * iconvdata/testdata/IBM856: New file. + * iconvdata/testdata/IBM937..UTF8: New file. + * iconvdata/testdata/IBM939..UTF8: New file. + Contributed by Masahide Washizawa . + +2000-11-01 Martin Buchholz + + * manual/memory.texi (Hooks for Malloc): Fix `caller' arg docs to + agree with implementation. + +2000-11-01 Ulrich Drepper + + * sysdeps/unix/sysv/linux/bits/time.h (CLK_TCK): Cast sysconf result + to __clock_t. + * sysdeps/unix/sysv/linux/alpha/bits/time.h: Likewise. + * sysdeps/unix/sysv/linux/i386/bits/time.h: Likewise. + * sysdeps/unix/sysv/linux/ia64/bits/time.h: Likewise. + * sysdeps/unix/sysv/linux/s390/bits/time.h: Likewise. + + * sysdeps/unix/sysv/linux/bits/socket.h (CMSG_ALIGN): Cast result + of unary ~ to size_t. + + * stdlib/strtod.c: Make gcc shut up about SWAP use. + + * sysdeps/i386/fpu/bits/mathinline.h: Add support for builtin + unordered compare functions to gcc 2.97 and up. + + * string/bits/string2.h: Disable strstr optimizations for newer + gcc versions. Patch by Joseph S. Myers . + + * configure.in (with_cvs): Test for pserver access. + +2000-10-31 Ulrich Drepper + + * elf/Versions [ld] (GLIBC_2.2): Export _dl_clktck and _dl_pagesize. + * elf/dl-load.c: Define _dl_clktck. + * elf/elf.h: Define AT_CLKTCK. + * include/time.h: Declare __getclktck. + * misc/Makefile (routines): Add getclktck. + * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Handle AT_CLKTCK. + (_dl_show_auxv): Show AT_CLKTCK value. + * sysdeps/generic/getclktck.c: New file. + * sysdeps/unix/sysv/linux/getclktck.c: New file. + * sysdeps/unix/sysv/linux/alpha/getclktck.c: New file. + * sysdeps/unix/sysv/linux/ia64/getclktck.c: New file. + * sysdeps/posix/sysconf.c: Use __getclktck to handle _SC_CLK_TCK. + * sysdeps/unix/sysv/linux/getpagesize.c: New file. + * sysdeps/unix/sysv/linux/bits/time.h: Use __sysconf to for CLK_TCK. + * sysdeps/unix/sysv/linux/alpha/bits/time.h: Likewise. + * sysdeps/unix/sysv/linux/i386/bits/time.h: Likewise. + * sysdeps/unix/sysv/linux/ia64/bits/time.h: Likewise. + * sysdeps/unix/sysv/linux/s390/bits/time.h: Likewise. + + * sunrpc/clnt_gen.c (clnt_create): Don't set timeout with + clnt_control for any protocol. This would make it impossible for + the user to provide one in clnt_call(). + Reported by Hitoshi Guutara Maruyama . + * sunrpc/clnt_tcp.c (clnt_call): Don't use timeout in tests with zero, + use ct->ct_wait. + * sunrpc/clnt_unix.c (clnt_call): Likewise. + +2000-10-31 Jes Sorensen + + * sysdeps/ia64/fpu/s_isinfl.S: New file, - assembly based + implementation based on suggestion by Richard Henderson. + * sysdeps/ia64/fpu/s_isinfl.c: Removed. + +2000-10-30 Jes Sorensen + + * sysdeps/ia64/fpu/s_isnanl.S: New file - assembly based + implementation based on suggestion by Richard Henderson. + * sysdeps/ia64/fpu/s_isnanl.c: Removed. + +2000-10-31 Ulrich Drepper + + * locale/programs/locale.c (print_item): Fix one more problem with + string lists. Patch by Chen Xiangyang . + + * locale/categories.def: Add number of arguments to ctype-map-names + and ctype-class-names entries. Mark era as stringlist. + + * iconvdata/Makefile (modules): Add IBM856, IBM930, IBM933, IBM935, + IBM937, IBM939, and IBM1046. + (distribute): Add ibm856.c, ibm930.c, ibm933.c, ibm935.c, ibm937.c, + ibm939.c, ibm1046.c, ibm856.h, ibm930.h, ibm933.h, ibm935.h, ibm937.h, + ibm939.h, and ibm1046.h. + * iconvdata/gconv-modules: Add entries for IBM856, IBM930, IBM933, + IBM935, IBM937, IBM939, and IBM1046. + * iconvdata/ibm1046.c: New file. + * iconvdata/ibm1046.h: New file. + * iconvdata/ibm856.c: New file. + * iconvdata/ibm856.h: New file. + * iconvdata/ibm930.c: New file. + * iconvdata/ibm930.h: New file. + * iconvdata/ibm933.c: New file. + * iconvdata/ibm933.h: New file. + * iconvdata/ibm935.c: New file. + * iconvdata/ibm935.h: New file. + * iconvdata/ibm937.c: New file. + * iconvdata/ibm937.h: New file. + * iconvdata/ibm939.c: New file. + * iconvdata/ibm939.h: New file. + Patches by Masahide Washizawa . + +2000-10-30 Ulrich Drepper + + * locale/localeinfo.h (enum value_type): Add wstring, wstringarray, + and wstringlist. + * locale/categories.def: Mark wide char strings as wstring or + stringarray. + * locale/programs/locale.c (show_info): Handle wstring, wstringarray, + and wstringlist. Print keywords only if there is real output. + Reported by Chen Xiangyang . + + * sysdeps/sparc/fpu/bits/mathinline.h: Add __THROW where necessary. + Patch by Ben Collins . + + * stdio-common/Makefile (tests): Add tst-fmemopen. + * stdio-common/tst-fmemopen.c: New file. + Test case by Ben Collins . + + * libio/iofopncook.c (_IO_cookie_seek): Correct test for error. + + * libio/fmemopen.c (fmemopen_read): Return 0 at end of buffer. + (fmemopen_write): Set errno at end of buffer. + + * posix/runtests.c (main): Don't use exit() to avoid warning with + broken compilers. + + * string/bug-strncat1.c: Undefine __USE_STRING_INLINES before + defining it again to avoid warning. + * string/bug-strpbrk1.c: Likewise. + * string/bug-strspn1.c: Likewise. + +2000-10-29 Bruno Haible + + * locale/C-translit.h.in: Include more rules from translit_neutral. + Remove a few German and Danish specific rules. + * locale/gen-translit.pl: Avoid an error when printing a string + containing a '%' character. + * locale/C-translit.h: Regenerated. + * intl/translit.po: Choose different translations. + * intl/tst-translit.c: Update. + +2000-10-29 Bruno Haible + + * locale/programs/ld-ctype.c (translit_include_t): New type. + (locale_ctype_t): Remove translit_copy_locale, translit_copy_repertoire + fields, add translit_include field. + (ctype_read): After seeing "translit_start" in ignore_content mode, + skip the entire translit section, not only one line. Remove dead test + for tok_translit_end. Enqueue include statements into a list. + Signal error if tok_eof seen before tok_translit_end. + (translit_flatten): New function. + (allocate_arrays): Call translit_flatten. + +2000-10-30 Ulrich Drepper + + * locale/findlocale.c (free_mem): We can remove NODELETE marked + data, just not the C locale data. + + * intl/tst-gettext.c: Use setlocale() in addition to setting envvar. + * intl/tst-gettext.sh: Copy locale data if necessary. + * intl/Makefile (generated-dirs): Add localedir. + + * intl/dcigettext.c (guess_category_value): For libc always use + the setlocale() method. + + * intl/Makefile: Add rules to build, run and, distribute tst-gettext2. + * intl/tst-gettext2.c: New file. + * intl/tst-gettext2.sh: New file. + * intl/tstlang1.po: New file. + * intl/tstlang2.po: New file. + Patch by Andreas Jaeger . + +2000-10-26 GOTO Masanori + + * intl/locale.alias: Add ja_JP.ujis alias. + +2000-10-30 Ulrich Drepper + + * locale/findlocale.c (_nl_find_locale): Don't store normalized + name in *NAME. + +2000-10-29 Ben Collins + + * sysdeps/generic/lockf64.c: In the case of F_TEST, set l_type to + F_RDLCK explicitly. + * sysdeps/unix/sysv/linux/i386/lockf64.c: Likewise. + +2000-10-29 Ulrich Drepper + + * iconvdata/big5.c: Update. + Patch by Tung-Han Hsieh . + + * iconvdata/Makefile (distribute): Add BIG5.irreversible. + * iconvdata/BIG5.irreversible: New file. + +2000-10-29 Greg Louis + + * posix/regex.h (__restrict_arr): Move definition out of #ifndef block. + Required because egcs-2.91.66 (aka 1.1.2) defines __restrict, but + doesn't define __restrict_arr. + +2000-10-29 Ulrich Drepper + + * manual/search.texi: Correct description if VISIT values. + Patch by Ben Collins . + + * string/bits/string2.h (strspn): Evaluate first argument if + second is "". + (strpbrk): Likewise. + * sysdeps/i386/i486/bits/string.h: Likewise. + * string/Makefile (tests): Add bug-strspn1 and bug-strpbrk1. + * string/bug-strspn1.c: New file. + * string/bug-strpbrk1.c: New file. + Test cases by Joseph S. Myers . + + * string/bits/string2.h (strncat): Terminate string correctly. + * sysdeps/i386/i486/bits/string.h (strncat): Likewise. + * string/Makefile (tests): Add bug-strncat1. + * string/bug-strncat1.c: New file. + Test case by Joseph S. Myers . + +2000-10-27 Ben Collins + + * sysdeps/generic/lockf.c (lockf): Set l_type to F_RDLCK before + calling for F_GETLK. + +2000-10-29 Ulrich Drepper + + * elf/dl-load.c (open_path): Don't exit loop early if we didn't + use a directory at all. + + * elf/Makefile: Add rules to build and run tst-pathopt. + * elf/tst-pathopt.c: New file. + * elf/tst-pathopt.sh: New file. + * elf/pathoptobj.c: New file. + + * elf/elf.h (SHN_XINDEX): Define. + +2000-10-28 Ulrich Drepper + + * io/Makefile (tests): Add test-stat2. + (test-stat2-ARS): New variable. + * io/test-stat2.c: New file. + + * Makeconfig (ETAGS): Remove -T flag. + + * elf/dl-load.c (open_verify): Only try to load ET_DYN and ET_EXEC + objects. Reject all other types. + (_dl_map_object_from_fd): Optimize a bit. + +2000-10-27 Ulrich Drepper + + * stdio-common/Makefile (tests): Add tst-fseek. + * stdio-common/tst-fseek.c: New file. + + * posix/regex.c (gettext): Use correct translation domain for glibc. + + * argp/argp-parse.c: Use __dcgettext instead of dcgettext for glibc. + * argp/argp-help.c: Likewise. + * inet/getnameinfo.c (getnameinfo): Use __snprintf instead of snprintf. + * inet/rexec.c (rexec_af): Use __snprintf instead of snprintf. + * misc/regexp.c (__step): Use __regexec instead of regexec. + (__advance): Likewise. + * nss/digits_dots.c: Use __inet_aton instead of inet_aton. + * nscd/gethstbynm2_r.c (__inet_aton): Define as inet_aton since + the former is not exported. + * misc/daemon.c (daemon): Use __fork instead of fork. + + * stdlib/fmtmsg.c (fmtmsg): Change output format slightly to make + it look better and bring it closer to SysV behavior. + * stdlib/Makefile (distribute): Add tst-fmtmsg.sh. + (test-srcs): Add tst-fmtmsg. + (tests): Add $(objpfx)tst-fmtmsg.out. Add rule to generate it. + * stdlib/tst-fmtmsg.sh: New file. + * stdlib/tst-fmtmsg.c: New file. + + * iconvdata/Makefile (modules): Add VISCII. + (gen-8bit-modules): Add viscii. + * iconvdata/viscii.c: New file. + * iconvdata/gconv-modules: Add entries for VISCII. + * iconvdata/tst-tables.sh: Add VISCII. + +2000-10-27 Andreas Schwab + + * sysdeps/m68k/fpu/libm-test-ulps: Add some more ulps. + +2000-10-26 Ulrich Drepper + + * version.h (VERSION): Bump to 2.1.96. + + * inet/getipnodebyad.c: Removed. + * inet/getipnodebynm.c: Removed. + * inet/tst-ipnode.c: Removed. + * inet/freehostent.c: Removed. + + * sysdeps/unix/bsd/osf/=dirstream.h: Removed. + + * sysdeps/unix/sysv/linux/Dist: Add bits/initspin.h. + + * elf/Makefile (distribute): Add neededobj4.c. + + * iconvdata/Makefile (distribute): Add BIG5HKSCS.irreversible. + + * sysdeps/hppa/Dist: New file. + * sysdeps/unix/sysv/linux/hppa/Dist: New file. + + * posix/tst-chmod.c (do_test): Account for people running the + tests as root. + + * locale/langinfo.h (THOUSEP): Define this and don't duplicate + definition of THOUSANDS_SEP. + + * locale/C-monetary.c: Set mon_decimal to empty string. + Add missing entry _NL_MONETARY_CRNCYSTR. + * stdio-common/printf_fp.c: If MON_DECIAL_POINT is not provided use + DECIMAL_POINT information. + * locale/C-numeric.c: Set mon_grouping entry to empty string. + * locale/C-time.c: Add date_fmt entries. Remove two wrong entries. + Correct value for number of entries. + * locale/localeconv.c: Normalize result passed back in .grouping. + Fix assignment to .int_* entries. + + * locale/Makefile (tests): Add tst-C-locale. + * locale/tst-C-locale.c: New file. + + * locale/setlocale.c: Use LOCALEDIR and not LOCALE_PATH to locate + locale files. + * locale/newlocale.c: Likewise. + +2000-10-26 GOTO Masanori + + * locale/langinfo.h: Define _DATE_FMT and _NL_W_DATE_FMT. + * locale/categories.def: New support for date_fmt. + * locale/programs/ld-time.c: Likewise. + * locale/programs/locfile-kw.gperf: Likewise. + * locale/programs/locfile-kw.h: Likewise. + * locale/programs/locfile-token.h: Likewise. + +2000-10-26 Jakub Jelinek + + * sysdeps/ieee754/ldbl-128/e_hypotl.c: New. + + * math/libm-test.inc (cabs_test, cexp_test, csqrt_test, hypot_test): + Increase precision of constants. + * sysdeps/alpha/fpu/libm-test-ulps: Update. + * sysdeps/arm/libm-test-ulps: Update. + * sysdeps/i386/fpu/libm-test-ulps: Update. + * sysdeps/ia64/fpu/libm-test-ulps: Update. + * sysdeps/m68k/fpu/libm-test-ulps: Update. + * sysdeps/mips/fpu/libm-test-ulps: Update. + * sysdeps/powerpc/fpu/libm-test-ulps: Update. + * sysdeps/sparc/sparc32/fpu/libm-test-ulps: Update. + * sysdeps/sparc/sparc64/fpu/libm-test-ulps: Update. + * sysdeps/sh/sh4/fpu/libm-test-ulps: Update. + * sysdeps/s390/fpu/libm-test-ulps: Update. + +2000-10-26 Ulrich Drepper + + * io/Makefile (tests): Add tst-fcntl. + * io/tst-fcntl.c: New file. + + * posix/Makefile (tests): Add tst-chmod. + (tst-chmod-ARGS): Define. + * posix/tst-chmod.c: New file. + + * test-skeleton.c: Before calling user-defined function remove + parameters from argument list. + * posix/tst-exec.c: Adjust to this change. + * posix/tst-spawn.c: Likewise. + + * sysdeps/unix/opendir.c (__opendir): Optimize a bit. Add + __builtin_expect. + +2000-10-25 Ulrich Drepper + + * intl/Makefile (tests): Add tst-ngettext. + * intl/tst-ngettext.c: New file. + +2000-10-25 Bruno Haible + + * manual/charset.texi: Fix spelling of __GCONV_FULL_OUTPUT. + * manual/message.texi (Translation with gettext): Remove paragraph + about macros contained in libintl.h. + (bind_textdomain_codeset): Describe codeset argument. + (Using gettextized software): Add setlocale call to sample code. + +2000-10-26 Kazumoto Kojima + Yutaka Niibe + + * sysdeps/sh/dl-machine.h (elf_machine_rela): Handle in place + relocation which is generated by new ld. + * sysdeps/sh/elf/initfini.c (_init): Preseted __fpscr_values. + (_fini): Delete an obsolete register prefix. + * sysdeps/unix/sysv/linux/sh/Versions: Add __xstat64, __fxstat64, + __lxstat64, alphasort64, glob64, readdir64, readdir64_r, scandir64 + and versionsort64 as the 2.2-versioned symbols. + * sysdeps/unix/sysv/linux/sh/bits/fcntl.h: New file. + * sysdeps/unix/sysv/linux/sh/brk.c: Changes for the new system call + calling convention of the kernel. + * sysdeps/unix/sysv/linux/sh/pipe.S: Likewise. + * sysdeps/unix/sysv/linux/sh/socket.S: Likewise. + * sysdeps/unix/sysv/linux/sh/clone.S: Likewise. + * sysdeps/unix/sysv/linux/sh/vfork.S: Likewise. + * sysdeps/unix/sysv/linux/sh/sysdep.h: Likewise. + * sysdeps/unix/sysv/linux/sh/fcntl.c: New file. + * sysdeps/unix/sysv/linux/sh/lockf64.c: New file. + * sysdeps/unix/sysv/linux/sh/sys/user.h: Include the kernel header + file and delete the definitions of struct user and user_fp. + * sysdeps/unix/sysv/linux/sh/syscall.S: New file. + * sysdeps/unix/sysv/linux/sh/syscalls.list: Remove entries for + s_ioctl, s_ipc, s_llseek, s_chown, s_fchown, s_lchown, s_execve, + rt_sigaction, rt_sigpending, rt_sigprocmask, rt_sigqueueinfo, + rt_sigsuspend, rt_sigtimedwait, s_getcwd, s_getdents, s_getgroups, + s_getpriority, s_getegid, s_geteuid, s_getuid, getresgid, getresuid, + s_getrlimit, s_poll, s_pread64, s_ptrace, s_pwrite64, s_reboot, + s_setrlimit, s_sigaction, s_sigpending, s_sigprocmask, s_sigsuspend, + s_setfsgid, s_setfsuid, s_setgid, s_setgroups, s_setregid, + s_setresgid, s_setresuid, s_setreuid, s_setuid, s_sysctl, + s_ugetrlimit, s_ustat, sys_fstat, sys_lstat, sys_mknod, sys_readv, + sys_stat, sys_writev and syscall. + +2000-10-25 Ulrich Drepper + + * io/test-lfs.c (do_prepare): Rewrite so it doesn't fail on systems + without LFS support. + + * sysdeps/ieee754/dbl-64/e_jn.c: Use __ieee754_sqrt instead of __sqrt. + * sysdeps/ieee754/dbl-64/e_j1.c: Likewise. + * sysdeps/ieee754/dbl-64/e_j0.c: Likewise. + * sysdeps/ieee754/flt-32/e_j1f.c: Likewise. + * sysdeps/ieee754/flt-32/e_j0f.c: Likewise. + +2000-10-25 David Mosberger + + * sysdeps/unix/sysv/linux/ia64/profil-counter.h: Multiply slot + number by four to use bins of width 4 to get accurate + instruction-level profiling. + +2000-10-25 Andreas Jaeger + + * sysdeps/generic/dl-cache.h (CACHEMAGIC_VERSION_NEW): Correct string. + +2000-10-25 Jakub Jelinek + + * sysdeps/unix/sysv/linux/i386/fcntl.c (__libc_fcntl): When + converting struct flock64 to struct flock and back, use fcntl commands + which work on struct flock. + +2000-10-25 Jakub Jelinek + + * math/test-misc.c (main): Only check modfl if NO_LONG_DOUBLE is not + defined. + * sysdeps/sparc/sparc32/fpu/libm-test-ulps: Update. + * sysdeps/sparc/sparc64/fpu/libm-test-ulps: Update. + +2000-10-25 Ulrich Drepper + + * sysdeps/arm/libm-test-ulps: Updated. + + * sysdeps/generic/dl-cache.h (CACHEMAGIC_VERSION_NEW): New value. + +2000-10-25 Andreas Jaeger + + * elf/dl-load.c (_dl_map_object_from_fd): Remove unused variable. + (_dl_map_object): Likewise. + +2000-10-24 Paul Eggert + + * time/strftime.c (my_strftime macro) + [!defined _LIBC && HAVE_TZNAME && HAVE_TZSET]: + When redefining, do it without args, so that it works even if + emacs is defined and an extra argument is passed to my_stftime. + (my_strftime function): When evaluating a subformat, pass + ut_argument as well. + +2000-10-24 Andreas Schwab + + * sysdeps/unix/sysv/linux/ia64/Versions: Add pciconfig_read and + pciconfig_write. + +2000-10-25 Ulrich Drepper + + * sysdeps/generic/dl-cache.c (_dl_cache_verify_ptr): Correct test + for files with new cache format. + (_dl_load_cache_lookup): Add variable cache_data_size for size of the + data. Correctly report error if neither old not new signature is + found. Little optimizations. + Mostly based on a patch by Denis Zaitsev . + + * elf/dl-close.c (_dl_close): Optimize a bit by optimizing out the + nsearchlist variable. + +2000-10-24 Ulrich Drepper + + * elf/dl-lookup.c (add_dependency): Fix test to check whether + dependency already exists. + * elf/Makefile: Add testobj1 and testobj2 as dependencies of testobj6. + * elf/loadtest.c (main): Add test at the end that everything is + unloaded. + + * elf/dl-open.c (dl_open_worker): Fix typo in comment. + + * elf/elf.h: Add even more IA-64 relocations. + +2000-10-24 Geoffrey Keating + + * io/test-lfs.c (do_prepare): Call setrlimit64, in case the user + has a limit set---for instance, a limit of 2^31 bytes, which can't + easily be reset by non-LFS-aware shells. + + * sysdeps/unix/sysv/linux/powerpc/mmap64.c: Define PAGE_SHIFT + explicitly rather than getting it from . + +2000-10-24 Ulrich Drepper + + * elf/dl-close.c (_dl_close): Handle relocation dependencies of + the dependencies of the object currently unloaded. + + * elf/dl-close.c (_dl_close): Don't free memory for global scope + list immediately when empty. Move code to... + (free_mem): ...here. Called as part of __libc_subfreeres list. + + * elf/dl-deps.c (_dl_map_object_deps): Put l_initfini array before + r_list array in allocated memory. + * elf/dl-close.c (_dl_close): Optimize access to l_initfini list + and remove use of r_list. + + * elf/dl-close.c (_dl_close): Use correct list (l_initfini) when + computing new opencounts. + * elf/Makefile: Add rules to build and run neededtest3. + * neededtest3.c: New file. + * neededobj4.c: New file. + + * elf/neededtest.c (main): Correct tests for failing dlopen. + +2000-10-24 Andreas Jaeger + + * elf/dl-lookup.c (add_dependency): Remove unused variable j. + +2000-10-24 Ulrich Drepper + + * malloc/obstack.c (_obstack_newchunk): Correctly align first returned + block. + * malloc/tst-obstack.c: New file. + Patch and test case by Alexandre Duret-Lutz . + * malloc/Makefile (tests): Add tst-obstack. + + Complete revamp of the reference counter handling. + * include/link.h (struct link_map): Add l_idx field. + * elf/dl-close.c: Handle decrementing of reference counters more + correctly. If necessary decrement reference counters of dependencies + of dependencies. + * elf/dl-lookup.c (add_dependency): Only increment reference counter + of the object itself and not also its dependencies. + * elf/dl-open.c: Increment reference counters here. + * elf/dl-deps.c: Remove reference counter handling here. + * elf/dl-load.c: Likewise. + * elf/rtld.c: Adjust for _dl_map_deps not handling reference counters. + + * elf/loadtest.c: Print loaded objects at the beginning. + +2000-10-24 Andreas Jaeger + + * sysdeps/mips/dl-machine.h: Partly revert patch from 2000-10-18. + +2000-10-23 Ulrich Drepper + + * include/link.h (struct link_map): New bit field l_faked. + * elf/dl-deps.c: Use l_faked field in struct link_map instead of + the magic l_opencount==0. + * elf/dl-load.c: Likewise. + * elf/dl-version.c: Likewise. + * elf/rtld.c: Likewise. + + * elf/dl-close.c (_dl_close): Add a few more __builtin_expect. + +2000-10-23 Jim Meyering + + Allow this code to be used outside of glibc. + * sysdeps/generic/memrchr.c: Undef __memrchr, too. + [!weak_alias]: Define __memrchr to memrchr. + Guard weak_alias use with `#ifdef weak_alias'. + +2000-10-23 Ulrich Drepper + + * elf/unload.c: Generate more debugging output. + + * elf/neededtest.c: Make it more complicated. + * elf/neededtest2.c: New file. + * elf/Makefile: Add rules to build and run neededtest2. + + * elf/dl-sym.c (_dl_sym): Use exact check for caller PC in range + of DSO address space. + (_dl_vsym): Likewise. + + * elf/dl-sym.c (_dl_sym): For RTLD_DEFAULT, search in objects + global scope if we can determine it. + +2000-10-23 Andreas Schwab + + * sysdeps/unix/sysv/linux/ia64/bits/resource.h (RLIMIT_LOCKS): Added. + (RLIMIT_NLIMITS): Sync with kernel definition. + (PRIO_PROCESS, PRIO_PGRP, PRIO_USER): Also define as macros. + +2000-10-23 Andreas Schwab + + * sysdeps/m68k/fpu/libm-test-ulps: Updated. + +2000-10-23 Ulrich Drepper + + * elf/elf.h (R_IA64_GPREL32MSB, R_IA64_GPREL32LSB): New definitions. + +2000-10-22 Bruno Haible + + * iconvdata/big5hkscs.c (big5hkscs_to_ucs): Add irreversible mappings + for 0x8BF8, 0xA27E..0xA2A7. + * iconvdata/BIG5HKSCS.irreversible: New file. + +2000-10-23 Jakub Jelinek + + * timezone/zdump.c (main): setlocale LC_CTYPE as well as LC_MESSAGES. + * timezone/zic.c (main): Likewise. + +2000-10-23 Thorsten Kukuk + + * nscd/connections.c (invalidate_cache): Don't invalidate a cache + if it is not enabled. + +2000-10-23 Andreas Jaeger + + * sysdeps/s390/fpu/libm-test-ulps: New ulps. + + * sysdeps/unix/sysv/linux/mips/syscalls.list: Add fcntl64. + Patch by Ralf Baechle . + +2000-10-21 Ulrich Drepper + + * elf/dl-load.c (_dl_map_object_from_fd): Split out ELF file + verification in open_verify. + (open_verify): New function. Called instead of open. Ignores valid + files for other architectures. + (open_path): Call open_verify instead of open. + (_dl_map_object): Likewise. + Somewhat based on a patch by Don Dugger . + + * io/pwd.c (main): The output was missing a newline. + + * posix/fnmatch_loop.c: Make FNM_LEADING_DIR behave as GNU tar + expects it. Patch by Colin Watson . + * posix/tst-fnmatch.input: Add test cases for FNM_LEADING_DIR. + + * elf/dl-open.c (add_to_global): New function. Split out from + dl_open_worker. + (dl_open_worker): Call add_to_global not only for new objects, also for + previously loaded objects when (mode & RTLD_GLOBAL) and the object + was not yet in the global scope. + * elf/Makefile: Add rules to build and run lateglobal. + * elf/lateglobal.c: New file. + * elf/ltglobmod1.c: New file. + * elf/ltglobmod2.c: New file. + +2000-10-20 Ulrich Drepper + + * include/link.h (struct link_map): Add l_soname_added bitfield. + * elf/dl-load.c (_dl_map_object): Remember when we added the + SONAME to the l_libname list and don't try it again. + + * elf/dl-close.c: Decrement opencount for all dependencies which can + be removed even if the object is not yet unloaded. + * elf/dl-deps.c (_dl_map_object_deps): If dependency is already in + the list decrement opencount of all dependencies. + * elf/dl-load.c (_dl_map_object_from_fd): Increment object of object + and all dependencies. + (_dl_map_object): Likewise. + * elf/dl-lookup.c (add_dependency): Likewise. + + * elf/loadtest.c: Add debug when with more output. + + * elf/Makefile: Add rules to build and run unload2. + * elf/unload2.c: New file. + * elf/unload2mod.c: New file. + * elf/unload2dep.c: New file. + + * intl/libintl.h (ngettext macro): Add missing parameter. + (dngettext macro): Likewise. + +2000-10-19 H.J. Lu + + * elf/Makefile (distribute): Add neededtest.c, neededobj1.c, + neededobj2.c and neededobj3.c. + (tests): Add neededtest. + (modules-names): Add neededobj1, neededobj2 and neededobj3. + ($(objpfx)neededobj1.so): New target. + ($(objpfx)neededobj2.so): Likewise. + ($(objpfx)neededobj3.so): Likewise. + ($(objpfx)neededtest): Likewise. + ($(objpfx)neededtest.out): Likewise. + * elf/neededtest.c: New. Based on the bug report from + Allen Bauer . + * elf/neededobj1.c: Likewise. + * elf/neededobj2.c: Likewise. + * elf/neededobj3.c: Likewise. + +2000-10-20 Ulrich Drepper + + * elf/dl-load.c (_dl_map_object_from_fd): Pass pointer to ELF header + to elf_machine_matches_host. + * sysdeps/alpha/dl-machine.h (elf_machine_matches_host): Parameter + is now pointer to ELF header. + * sysdeps/arm/dl-machine.h: Likewise. + * sysdeps/generic/dl-machine.h: Likewise. + * sysdeps/hppa/dl-machine.h: Likewise. + * sysdeps/i386/dl-machine.h: Likewise. + * sysdeps/ia64/dl-machine.h: Likewise. + * sysdeps/m68k/dl-machine.h: Likewise. + * sysdeps/mips/dl-machine.h: Likewise. + * sysdeps/mips/mips64/dl-machine.h: Likewise. + * sysdeps/powerpc/dl-machine.h: Likewise. + * sysdeps/s390/dl-machine.h: Likewise. + * sysdeps/sh/dl-machine.h: Likewise. + * sysdeps/sparc/sparc32/dl-machine.h: Likewise. + * sysdeps/sparc/sparc64/dl-machine.h: Likewise. + Patch by Martin Schwidefsksy . + +2000-10-20 Jakub Jelinek + + * include/limits.h: Include bits/wordsize.h, use #if __WORDSIZE == 64 + check instead of #ifdef __alpha__. + * include/bits/xopen_lim.h (WORD_BIT, LONG_BIT): Don't count on + INT_MAX, __INT_MAX__, LONG_MAX or __LONG_MAX__ being defined when + this is included. + +2000-10-20 Ulrich Drepper + + * posix/wordexp-tst.sh (testout): Place output file in build + directory. Patch by Joseph S. Myers . + + * sysdeps/powerpc/fpu/bits/mathinline.h: Pretty print. + +2000-10-19 Ulrich Drepper + + * hesiod/nss_hesiod/hesiod-grp.c (_nss_hesiod_initgroups_dyn): + Correctly handle numeric group member information. + Patch by tomasw@cs.huji.ac.il. + + * hesiod/nss_hesiod/hesiod-grp.c (_nss_hesiod_initgroups_dyn): + Complete test for strtol overflow. + +2000-10-19 Jakub Jelinek + + * sysdeps/unix/sysv/linux/alpha/semctl.c (__new_semctl): Pass union + semun as 4th argument to semctl syscall, not address of it. + +2000-10-18 Franz Sirl + + * sysdeps/unix/sysv/linux/powerpc/syscalls.list: Add fcntl64() syscall. + +2000-10-17 Andreas Schwab + + * string/string.h: Remove declaration of __strcasecmp and __strcasestr. + * include/string.h: Declare them here. + +2000-10-18 Ralf Baechle + + * sysdeps/unix/sysv/linux/mips/sys/syscall.h: Include . + +2000-10-19 Geoffrey Keating + + * sysdeps/powerpc/fpu/bits/mathinline.h: Add versions + of the unordered comparison functions that use the GCC builtins. + + * sysdeps/powerpc/dl-machine.c (dl_reloc_overflow): New function. + (__process_machine_rela): Print the address of an overflowing + reloc. + +2000-10-18 Ulrich Drepper + + * sysdeps/unix/sysv/linux/shm_open.c: Correct default mount point + in comments. + (freeit): Remove unnecessary test. + +2000-10-18 Andreas Jaeger + + * sysdeps/mips/dl-machine.h (ELF_MIPS_GNU_GOT1_OK): New. + (ELF_MACHINE_BEFORE_RTLD_RELOC): Handle newer linkers. + (elf_machine_runtime_link_map): Likewise. + (elf_machine_runtime_setup): Likewise. + Handle dynamic linker's local got entries. + Patches by Ralf Baechle . + +2000-10-09 Maciej W. Rozycki + + * sysdeps/mips/dl-machine.h (_dl_runtime_resolve): Define $sp as + the frame pointer. Allocate stack space for $a0 for + __dl_runtime_resolve(). Do not save $sp in $s0 as it's + callee-saved anyway. + +2000-10-17 Ulrich Drepper + + * sysdeps/powerpc/fpu/libm-test-ulps: Update for changes in + libm-test.inc. + +2000-10-17 Andreas Schwab + + * sysdeps/m68k/fpu/libm-test-ulps: Update for changes in + libm-test.inc. + +2000-10-17 Jakub Jelinek + + * sysdeps/ieee754/ldbl-128/printf_fphex.c (PRINT_FPHEX_LONG_DOUBLE): + Add missing backslash. + +2000-10-16 Ulrich Drepper + + * sysdeps/generic/dl-sysdep.c (DL_FIND_ARG_COMPONENTS): Little cleanup. + + * sysdeps/i386/fpu/libm-test-ulps: Update for changes in libm-test.inc. + +2000-10-16 Jakub Jelinek + + * math/libm-test.inc (M_LOG_SQRT_PIl, M_LOG_2_SQRT_PIl): Increase + precision. + (acos_test, asin_text, cexp_test, cos_test, cproj_test, exp10_test, + sin_test, sincos_test, sqrt_test): Likewise. Add L suffixes also + to parameters. + (acosh_test, asinh_test, atan2_test, atanh_test, atan_test, cabs_test, + cacosh_test, cacos_test, casinh_test, casin_test, catanh_test, + catan_test, cbrt_test, ccosh_test, ccos_test, clog10_test, cosh_test, + csinh_test, csin_test, csqrt_test, ctanh_test, ctan_test, erfc_test, + erf_test, exp2_test, expm1_test, exp_test, fmod_test, hypot_test, + j0_test, j1_test, jn_test, lgamma_test, llrint_test, llround_test, + log10_test, log1p_test, log2_test, log_test, lrint_test, lround_test, + nextafter_test, nexttoward_test, pow_test, round_test, scalb_test, + sinh_test, static void, tanh_test, tan_test, tgamma_test, y0_test, + y1_test, yn_test): Add L suffixes also to parameters. + * sysdeps/ieee754/ldbl-128/s_ceill.c (__ceill): Fix mask. + * sysdeps/ieee754/ldbl-128/s_floorl.c (__floorl): Likewise. + * soft-fp/op-2.h (_FP_FRAC_SRS_2): Fix computation of sticky bit. + +2000-10-16 Ulrich Drepper + + * timezone/Makefile: Define HAVE_GETTEXT for zdump.c, zic.c, + ialloc.c, and scheck.c. + * malloc/obstack.c: Always include for glibc. + * posix/getopt.c: Likewise. + Reported by Petr Vandrovec . + +2000-10-15 Pete Wyckoff + + * Rules: Define _LIBC during generation of bits/stdio_lim.d. + +2000-10-15 Pete Wyckoff + + * iconvdata/tst-tables.sh: Invoke other shell scripts through ${SHELL}. + * iconvdata/tst-table.sh: Likewise. + +2000-10-15 Ulrich Drepper + + * elf/dl-error.c (_dl_signal_error): Allocate memory for objname + as well. Reported by Alexander V. Lukyanov . + + * iconvdata/gconv-modules: Add aliases for Winblowz charsets. + Patch by Joseph S. Myers . + +2000-10-13 Andreas Schwab + + * elf/elf.h (R_IA64_PCREL60B): Add relocation. + +2000-10-15 Ulrich Drepper + + * sysdeps/unix/sysv/linux/hppa/brk.c: Cleanups. + * sysdeps/unix/sysv/linux/hppa/umount.c: Likewise. + * sysdeps/unix/sysv/linux/hppa/bits/sigaction.h: Likewise. + * sysdeps/unix/sysv/linux/hppa/bits/signum.h: Likewise. + * sysdeps/unix/sysv/linux/hppa/sys/ucontext.h: Likewise. + +2000-10-14 Ulrich Drepper + + * math/libm-test.inc (frexp_test): Add L suffix also to parameters. + (hypot_test): Likewise. + + * sysdeps/generic/printf_fphex.c: Compute width of decimal point + string correctly. Handle padding correctly. + + * sysdeps/ia64/fpu/printf_fphex.c: Use sizeof in _itowa parameters + correctly. + * sysdeps/ieee754/ldbl-128/printf_fphex.c: Likewise. + * sysdeps/ieee754/ldbl-96/printf_fphex.c: Likewise. + +2000-10-12 Alan Modra + + * FAQ.in: Add --start-group and --end-group. + +2000-10-12 Alan Modra + + * malloc/memusage.c: Conditionalize stack usage calculation on + stack direction. + +2000-10-12 Alan Modra + + * config.h.in: Add ASM_LINE_SEP. + * configure.in: Add test for comment and line separators. + * include/libc-symbols.h: Define and use ASM_LINE_SEP, and add tabs to + placate some hppa assemblers. + * sysdeps/hppa/sysdep.h: Likewise. + * sysdeps/gnu/siglist.c: Insert \n and \t into inline asm. + * sysdeps/unix/sysv/linux/errlist.c: Likewise. + +2000-10-12 David Huggins-Daines + + * sysdeps/unix/sysv/linux/Makefile: Include in + $(sysdep_headers). + * sysdeps/unix/sysv/linux/bits/initspin.h: Dummy version for + non-threaded platforms. + +2000-10-12 David Huggins-Daines + + * configure.in: Add definitions for hppa. + * elf/elf.h: Add PLABEL32 relocation for hppa ELF32, comments + for IPLT and EPLT relocations. + * shlib-versions: Version symbol definitions for hppa-linux. + * sysdeps/unix/sysv/linux/configure.in: Define $arch_minimum_kernel + for hppa. + +2000-10-12 David Huggins-Daines + + * sysdeps/hppa/Makefile: New file. + * sysdeps/hppa/Versions: New file. + + * sysdeps/hppa/setjmp.S: New file. + * sysdeps/hppa/__longjmp.S: New file. + * sysdeps/hppa/bits/setjmp.h: New file. + * sysdeps/hppa/frame.h: New file. + + * sysdeps/hppa/add_n.s: Don't use %r19 (linkage table pointer). + * sysdeps/hppa/sub_n.s: Likewise. + * sysdeps/hppa/lshift.s: Likewise. + * sysdeps/hppa/rshift.s: Likewise. + * sysdeps/hppa/udiv_qrnnd.s: Likewise. + * sysdeps/hppa/hppa1.1/addmul_1.s: Likewise. + * sysdeps/hppa/hppa1.1/submul_1.s: Likewise. + * sysdeps/hppa/hppa1.1/mul_1.s: Likewise. + * sysdeps/hppa/hppa1.1/udiv_qrnnd.s: Likewise. + + * sysdeps/hppa/dl-machine.h: New file. + * sysdeps/hppa/dl-fptr.c: New file (note that this is almost + identical to the IA-64 one). + * sysdeps/hppa/dl-lookupcfg.h: Likewise. + * sysdeps/hppa/dl-symaddr.c: Likewise. + + * sysdeps/hppa/elf/initfini.c: New file. + * sysdeps/hppa/elf/start.S: New file. + + * sysdeps/hppa/fpu/bits/fenv.h: New file. + * sysdeps/hppa/fpu/fclrexcpt.c: New file. + * sysdeps/hppa/fpu/fedisblxcpt.c: New file. + * sysdeps/hppa/fpu/feenablxcpt.c: New file. + * sysdeps/hppa/fpu/fegetenv.c: New file. + * sysdeps/hppa/fpu/fegetexcept.c: New file. + * sysdeps/hppa/fpu/fegetround.c: New file. + * sysdeps/hppa/fpu/feholdexcpt.c: New file. + * sysdeps/hppa/fpu/fesetenv.c: New file. + * sysdeps/hppa/fpu/fesetround.c: New file. + * sysdeps/hppa/fpu/feupdateenv.c: New file. + * sysdeps/hppa/fpu/fegetexcptflg.c: New file. + * sysdeps/hppa/fpu/fraiseexcpt.c: New file. + * sysdeps/hppa/fpu/fsetexcptflg.c: New file. + * sysdeps/hppa/fpu/ftestexcept.c: New file. + + * sysdeps/unix/sysv/linux/hppa/Makefile: New file. + * sysdeps/unix/sysv/linux/hppa/Versions: New file. + * sysdeps/unix/sysv/linux/hppa/syscalls.list: New file. + * sysdeps/unix/sysv/linux/hppa/sysdep.c: New file. + * sysdeps/unix/sysv/linux/hppa/sysdep.h: New file. + + + * sysdeps/unix/sysv/linux/hppa/bits/fcntl.h: New file. + * sysdeps/unix/sysv/linux/hppa/bits/ioctls.h: New file. + * sysdeps/unix/sysv/linux/hppa/bits/mman.h: New file. + * sysdeps/unix/sysv/linux/hppa/bits/sigaction.h: New file. + * sysdeps/unix/sysv/linux/hppa/bits/signum.h: New file. + * sysdeps/unix/sysv/linux/hppa/brk.c: New file. + * sysdeps/unix/sysv/linux/hppa/clone.S: New file. + * sysdeps/unix/sysv/linux/hppa/socket.S: New file. + * sysdeps/unix/sysv/linux/hppa/syscall.S: New file. + * sysdeps/unix/sysv/linux/hppa/setrlimit.c: New file. + * sysdeps/unix/sysv/linux/hppa/getrlimit.c: New file. + * sysdeps/unix/sysv/linux/hppa/getrlimit64.c: New file. + * sysdeps/unix/sysv/linux/hppa/kernel_sigaction.h: New file. + * sysdeps/unix/sysv/linux/hppa/kernel_stat.h: New file. + * sysdeps/unix/sysv/linux/hppa/mmap.c: New file. + * sysdeps/unix/sysv/linux/hppa/profil-counter.h: New file. + * sysdeps/unix/sysv/linux/hppa/procfs.h: New file. + * sysdeps/unix/sysv/linux/hppa/ucontext.h: New file. + * sysdeps/unix/sysv/linux/hppa/umount.c: New file. + +2000-10-12 Alan Modra + + * sysdeps/hppa/hppa1.1/Implies: New file. + * sysdeps/hppa/memusage.h: New file. + +2000-10-28 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/Versions: Export ioperm, iopl, inb, + inw, inl, _inb, _inw, _inl, outb, outw, outl, _outb, _outw, + _outl. Reported by Bill Nottingham. + +2000-04-06 Andreas Schwab + + * sysdeps/ia64/dl-machine.h (TRAMPOLINE_TEMPLATE): Save and + restore register r8 for functions that return a structure. + +2000-10-12 Jakub Jelinek + + * math/libm-test.inc (M_PI_6l, M_E2l, M_E3l, M_2_SQRT_PIl, + M_SQRT_PIl): Increase precision. + (cbrt_test): If cbrt is not implemented, don't test it. + Add L suffix to double constants in results which differ from their + L suffixed counterparts. + (exp10_test, fmod_test, frexp_test, hypot_test, sqrt_test): Likewise. + + * sysdeps/sparc/sparc64/fpu/libm-test-ulps: Update. + +2000-10-11 Jakub Jelinek + + * inet/rexec.c (rexec_af): Convert rport to host order before + passing it to snprintf. + +2000-10-14 Ulrich Drepper + + * sysdeps/gnu/netinet/tcp.h: Use u_intXX_t types instead of + uintXX_t since this is what defines and we include + this header. Reported by Bernhard Rosenkraenzer . + + * intl/localealias.c (read_alias_file): Update string pointers + in map[] if realloc() changed the values. + Patch by Jakub Jelinek . + + * manual/stdio.texi: Update printf extension documentation after + z became a valid modifier. + Patch by Joseph S. Myers . + + * timezone/africa: Update from tzcode2000g and tzdata2000g. + * timezone/asia: Likewise. + * timezone/australasia: Likewise. + * timezone/backward: Likewise. + * timezone/europe: Likewise. + * timezone/iso3166.tab: Likewise. + * timezone/northamerica: Likewise. + * timezone/southamerica: Likewise. + * timezone/zone.tab: Likewise. + +2000-10-14 Geoffrey Keating + + * sysdeps/unix/sysv/linux/powerpc/syscalls.list: Add fcntl() + syscall. + +2000-10-13 Michael Fedrowitz + + * sysdeps/unix/sysv/linux/m68k/alphasort64.c: New file. + * sysdeps/unix/sysv/linux/m68k/fcntl.c: New file. + * sysdeps/unix/sysv/linux/m68k/getdents64.c: New file. + * sysdeps/unix/sysv/linux/m68k/getrlimit.c: New file. + * sysdeps/unix/sysv/linux/m68k/getrlimit64.c: New file. + * sysdeps/unix/sysv/linux/m68k/glob64.c: New file. + * sysdeps/unix/sysv/linux/m68k/lockf64.c: New file. + * sysdeps/unix/sysv/linux/m68k/oldgetrlimit64.c: New file. + * sysdeps/unix/sysv/linux/m68k/readdir64.c: New file. + * sysdeps/unix/sysv/linux/m68k/readdir64_r.c: New file. + * sysdeps/unix/sysv/linux/m68k/scandir64.c: New file. + * sysdeps/unix/sysv/linux/m68k/setrlimit.c: New file. + * sysdeps/unix/sysv/linux/m68k/versionsort64.c: New file. + * sysdeps/unix/sysv/linux/m68k/Dist: Add oldgetrlimit64.c. + * sysdeps/unix/sysv/linux/m68k/Makefile: Add oldgetrlimit64. + * sysdeps/unix/sysv/linux/m68k/Versions: Export __xstat64, + __fxstat64, __lxstat64, alphasort64, glob64, getrlimit, setrlimit, + getrlimit64, readdir64, readdir64_r, scandir64, versionsort64 at + GLIBC_2.2. + * sysdeps/unix/sysv/linux/m68k/syscalls.list: Add oldgetrlimit, + oldsetrlimit for GLIBC_2.0. + + * sysdeps/m68k/dl-machine.h (_dl_start_user): Pass correct + arguments to _dl_init. + +2000-10-13 Geoffrey Keating + + * sysdeps/i386/fpu/libm-test-ulps: Update ULPs for my Pentium III + building with the default options. + +2000-10-11 Andreas Jaeger + + * sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Set cache. + Patch by Denis Zaitsev . + +2000-10-09 Jakub Jelinek + + * sysdeps/ieee754/ldbl-128/s_nexttoward.c (__nexttoward): If x == y, + return y not x. + * manual/arith.texi (nextafter): Document it. + * sysdeps/ieee754/ldbl-96/s_nexttoward.c: Fix a comment. + +2000-10-08 Ulrich Drepper + + * version.h (VERSION): Bump to 2.1.95. + + * configure.in: Remove warning message. + + * nscd/Makefile (distribute): Add nscd-types.h. + * elf/Makefile (distribute): Add gccframe.h. + * sysdeps/sparc/sparc32/Dist: Add ieee754.h. + * sysdeps/ia64/Dist: Add ieee754.h. + +2000-10-07 Ulrich Drepper + + * elf/elf.h: Add a few section-related symbols. + + * include/features.h (__STDC_ISO_10646__): Set to correct date. + Patch by Markus Kuhn . + +2000-10-06 Jes Sorensen + + * sysdeps/ia64/fpu/fraiseexcpt.c (feraiseexcept): Implement + overflow generation by adding DBL_MAX to DBL_MAX instead of + setting the bits manually in the fpsr and generating the exception + with kill() if necessary. + (feraiseexcept): Implement underflow by dividing DBL_MIN by + DBL_MIN - similar to the overflow change described above. + +2000-08-27 H.J. Lu + + * sysdeps/unix/sysv/linux/ia64/clone.S: Make it a dummy as clone + is not supported under Linux/ia64, use clone2. + +2000-10-06 Jakub Jelinek + + * malloc/malloc.h (__THROW): Define to nothing if not gcc. + * misc/sys/cdefs.h (__THROW): Likewise. + +2000-10-05 Jakub Jelinek + + * sysdeps/sparc/sparc64/fpu/libm-test-ulps: New file. + +2000-10-02 Jakub Jelinek + + * sunrpc/svc_udp.c (svcudp_recv): Set msg_controllen to all + remaining xp_pad space. + +2000-10-05 Jakub Jelinek + + * elf/dl-close.c (_dl_close): Check imap's l_flags_1 for + DF_1_NODELETE, not list[i]'s. + +2000-10-04 Ulrich Drepper + + * iconvdata/euc-kr.c (euckr_from_ucs4): Handle U20a9. + (BODY from direction): Map \x5c to U20a9. + * iconvdata/testdata/EUC-KR..UTF8: Adjust to this change. + * iconvdata/EUC-KR.irreversible: New file. + * iconvdata/Makefile (distribute): Add EUC-KR.irreversible. + + * argp/argp-parse.c (argp_default_argp): Set libc as message domain. + (argp_version_argp): Likewise. + +2000-10-04 Jakub Jelinek + + * stdio-common/vfscanf.c (_IO_vfscanf): For [ conversion do + input_error() if EOF is seen before processing. + * stdio-common/tstscanf.c (main): Add testcase. + +2000-10-04 Ulrich Drepper + + * argp/argp-help.c: Make sure we get the correct gettext and + dgettext definitions. + * argp/argp-parse.c: Likewise. + +2000-10-03 Ulrich Drepper + + * locale/programs/linereader.c (get_string): Also clear wide + string info if illegal_string. + +2000-10-03 Andreas Schwab + + * sysdeps/unix/sysv/linux/m68k/bits/stat.h: New file. + +2000-10-02 Jakub Jelinek + + * elf/nextmod1.c (failing_rtld_next_use): Ensure it is not tail call + optimized. + + * sysdeps/sparc/sparc32/fpu/libm-test-ulps: New file. + +2000-10-02 Ralf Baechle + + * sysdeps/unix/sysv/linux/mips/sys/tas.h: Add missing .mips0 at the + end of inline assembler code. + +2000-10-02 Ulrich Drepper + + * include/features.h [__USE_FILE_OFFSET && !__REDIRECT]: Define + __USE_LARGEFILE64 and __USE_LARGEFILE to 1 and not nothing. + +2000-10-02 Andreas Jaeger + + * sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Synch with Linux + 2.4.0-test9-pre8. + + * sysdeps/unix/sysv/linux/alpha/bits/resource.h: Add RLIMIT_LOCKS. + +2000-10-01 Ralf Baechle + + * sysdeps/mips/dl-machine.h (RTLD_START): Fix computation of envp + argument passed to _dl_init. + +2000-09-30 Bruno Haible + + * locale/programs/charmap-dir.h: New file. + * locale/programs/charmap-dir.c: New file. + * locale/programs/linereader.h (lr_create): New declaration. + * locale/programs/linereader.c (lr_create): New function, split out + from lr_open. + (lr_open): Tailcall lr_create. + * locale/programs/locale.c: Include "charmap-dir.h". Don't include + . + (xstrdup): New declaration. + (more_help): Use xstrdup instead of strdup. + (write_locales): Likewise. When encountering a symbolic link, call + stat. + (write_charmaps): Simplify using the charmap-dir.h functions. + Use xstrdup instead of strdup. + * locale/programs/charmap.c: Include "charmap-dir.h". Don't include + and . + (cmlr_open): New function. + (charmap_read): Use cmlr_open instead of lr_open. Simplify using the + charmap-dir.h functions. + * locale/Makefile (distribute): Add charmap-dir.h. + (lib-modules): Add charmap-dir. + (CFLAGS-charmap-dir.c): Set to -Wno-write-strings, because posix_spawn + wants a 'char **', not a 'const char **'. + * include/spawn.h: New file. + +2000-09-30 Bruno Haible + + * posix/spawn_faction_init.c: Include "spawn_int.h". + (__posix_spawn_file_actions_realloc): Fix second realloc argument. + +2000-09-30 Bruno Haible + + * locale/programs/config.h (DEFAULT_CHARMAP): Set to ANSI_X3.4-1968. + +2000-09-30 Bruno Haible + + * wcsmbs/wcwidth.h (__ctype32_wctype): Remove declaration. + (internal_wcwidth): Remove the tests for L'\0' and iswprint. + * locale/programs/ld-ctype.c (find_idx): If max == NULL, return + a pointer to the table entry, without extending the table. + (allocate_arrays): Set a width only for characters with 'print' + property. Set the width of L'\0' to 0. + * locale/C-ctype.c (_nl_C_LC_CTYPE_width): Use default entry 0xff + for unprintable characters. Set entry of NUL to 0. + +2000-09-30 Bruno Haible + + * locale/programs/charmap.c (charmap_read): Avoid redundant tests. + Don't forget to call closedir when the filename was found as a + code_set_name. + +2000-09-30 Bruno Haible + + * iconv/gconv.h (__gconv_trans_context_fct): Change first argument's + type to 'void *'. + +2000-09-30 Bruno Haible + + * locale/programs/ld-ctype.c (wctype_table_init): Initialize level1, + level2, and level3 as well. + (wctype_table_add): Remove a few unnecessary conditionals. + +2000-09-30 Ralf Baechle + + * wcsmbs/Versions [libc] (GLIBC_2.0): Add __mbrtowc. + +2000-09-30 H.J. Lu + + * sysdeps/ieee754/ldbl-96/s_ceill.c (__ceill): Handle overflow. + * sysdeps/ieee754/ldbl-96/s_floorl.c (__floorl): Likewise. + +2000-09-29 H.J. Lu + + * math/libm-test.inc (init_max_error): Clear all exceptions + before starting test. + (acosh_test): Test for existence of function. + (asinh_test): Likewise. + (atan2_test): Likewise. + (cabs_test): Likewise. + (cacos_test): Likewise. + (cacosh_test): Likewise. + (casin_test): Likewise. + (casinh_test): Likewise. + (catan_test): Likewise. + (catanh_test): Likewise. + (ccos_test): Likewise. + (ccosh_test): Likewise. + (cexp_test): Likewise. + (clog_test): Likewise. + (clog10_test): Likewise. + (cosh_test): Likewise. + (cpow_test): Likewise. + (csin_test): Likewise. + (csinh_test): Likewise. + (csqrt_test): Likewise. + (ctan_test): Likewise. + (ctanh_test): Likewise. + (fmod_test): Likewise. + (hypot_test): Likewise. + (remainder_test): Likewise. + (remquo_test): Likewise. + (sincos_test): Likewise. + (sinh_test): Likewise. + (tanh_test): Likewise. + +2000-09-29 H.J. Lu + + * sysdeps/ia64/ieee754.h: New file. + + * sysdeps/ia64/fpu/math_ldbl.h: New file. + +2000-09-30 Jakub Jelinek + + * elf/ldconfig.h (FLAG_X8664_LIB64): Define. + * sysdeps/unix/sysv/linux/i386/readelflib.c: New file. + +2000-09-30 Ulrich Drepper + + * manual/charset.texi: Correct notations, reference to C90 amd 1, + and some other details. + * manual/ctype.texi: Likewise. + Patches by Markus Kuhn . + +2000-09-30 Franz Sirl + + * sysdeps/ieee754/flt-32/s_frexpf.c: Make it aliasing safe. + +2000-09-29 Ulrich Drepper + + * elf/cache.c (save_cache): Initialize __unused field in new cache + as well to get reproducable results. + +2000-09-29 H.J. Lu + + * sysdeps/ia64/fpu/libm-test-ulps: Updated for long double. + +2000-09-29 H.J. Lu + + * sysdeps/ia64/bits/huge_val.h: New file. + +2000-09-29 Ulrich Drepper + + * elf/chroot_canon.c: Don't report a failure if the last path + component is not available. + * elf/ldconfig.c (parse_conf): Use canonicalized name when reporting + error. + + * elf/cache.c (print_cache): Use stat64 instead of stat. + * elf/ldconfig.c (chroot_stat): Likewise. + (create_links): Likewise. + (manual_link): Likewise. + (search_dir): Likewise. + * elf/readlib.c (process_file): Likewise. + + * Makefile (install): Set LC_ALL and LANGUAGE to C before running + ldconfig. + +2000-09-29 Jakub Jelinek + + * elf/chroot_canon.c: New file. + * elf/Makefile: Build and distribute it. + * elf/ldconfig.h (process_file): Add real_file_name argument. + (chroot_canon): Add prototype. + * elf/ldconfig.c (cache_file): Remove const. + (chroot_stat): New. + (create_links): Add real_path argument. + If opt_chroot, maintain both real and given filenames. + (manual_link): Likewise. + (search_dir): Likewise. + (parse_conf): If opt_chroot, use chroot_canon to find the real + config file. + (main): For -r, try to use chroot, if it fails, leave opt_chroot set + and use chroot_canon where appropriate to do the same as if chroot + succeeded. + * elf/readlib.c (process_file): Add real_file_name argument, pass it + to fopen. + +2000-09-29 Ulrich Drepper + + * math/complex.h (_Complex): We can be more specific when _Complex + is defined by the compiler. + +2000-09-29 H.J. Lu + + * sysdeps/unix/sysv/linux/ia64/dl-cache.h: New. + + * elf/cache.c (print_entry): Replace 64bit with IA-64 in message + for x86/IA-64 binary. + +2000-09-29 Andreas Schwab + + * sysdeps/unix/sysv/linux/ia64/readelflib.c: New file. + + * elf/cache.c (print_entry): Check for FLAG_IA64_LIB64. + +2000-09-29 Mark Kettenis + + * sysdeps/mach/hurd/dl-sysdep.c (__access): New function. Dummy + implementation for use by the dynamic linker. + +2000-09-29 Andreas Jaeger + + * sysdeps/unix/sysv/linux/arm/bits/fcntl.h: Protect DN_* by + __USE_GNU. + * sysdeps/unix/sysv/linux/ia64/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/m68k/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/s390/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise. + +2000-09-29 Andreas Jaeger + + * sysdeps/unix/sysv/linux/arm/bits/fcntl.h: Synch with Linux + 2.4.0-test9-pre7. + * sysdeps/unix/sysv/linux/ia64/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/m68k/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/s390/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise. + +2000-09-29 David Mosberger + + * sysdeps/unix/sysv/linux/ia64/sysdep.S (__ia64_syscall): Cleanup. + + * sysdeps/unix/sysv/linux/ia64/sysdep.h (CALL_MCOUNT): Implement. + +2000-06-10 David Mosberger + + * sysdeps/unix/sysv/linux/ia64/setjmp.S: Fix it so it actually + works: call to __sigjmp_save must be done unconditionally to + ensure jmp_buf is initialized properly. + +2000-09-27 Andreas Jaeger + + * sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Synch with Linux + 2.4.0-test9-pre7. + +2000-09-29 Jakub Jelinek + + * nscd/nscd-client.h (NSCD_VERSION): Bump to 3. + Use nscd_ssize_t where appropriate. + * nscd/nscd_gethst_r.c (nscd_gethst_r): Use nscd_ssize_t instead of + ssize_t where appropriate. + * nscd/nscd_getgr_r.c (nscd_getgr_r): Likewise. + * nscd/hstcache.c (cache_addhst): Likewise. + * nscd/grpcache.c (cache_addgr): Likewise. + * sysdeps/generic/nscd-types.h: New file. + * sysdeps/alpha/nscd-types.h: New file. + +2000-09-29 Ulrich Drepper + + * inet/getnameinfo.c (nrl_domainname): Use symbolic constant + INADDR_LOOPBACK instead of numeric value. + +2000-09-28 H.J. Lu + + * sysdeps/ia64/dl-machine.h (RTLD_START): Adjust _dl_argv by + _dl_skip_args. + (ELF_MACHINE_FIXED_STACK): Removed. + +2000-09-29 Andreas Jaeger + + * sysdeps/unix/sysv/linux/s390/lockf64.c: New file. + + * sysdeps/unix/sysv/linux/s390/fcntl.c: New file. + + * sysdeps/unix/sysv/linux/powerpc/lockf64.c: New file. + + * sysdeps/unix/sysv/linux/powerpc/fcntl.c: New file. + +2000-09-28 Ulrich Drepper + + * sysdeps/alpha/dl-machine.h (elf_machine_rela): Handle unaligned + relocation also for R_ALPHA_RELATIVE. + Reported by Ivan Kokshaysky . + +2000-09-18 Bruno Haible + + * intl/dcigettext.c: Outside libc, use local variable names that don't + clash with those in libc. + * intl/bindtextdom.c: Likewise. + * intl/textdomain.c: Likewise. + +2000-09-28 Ulrich Drepper + + * elf/ldconfig.c (parse_conf): Print full name of config dir + including chroot() path. + (main): Remove trailing / from opt_chroot string. + + * include/features.h: Correct description of what happens if no + *_SOURCE macro is defined. + + * sysdeps/posix/getaddrinfo.c (gaih_inet): Handle req->ai_socktype + correctly. Reported by Felix von Leitner . + +2000-09-19 H.J. Lu + + * malloc/malloc.h (__memalign_hook): Fix the parameter order. + * malloc/malloc.c (__memalign_hook): Likewise. + (memalign_hook_ini): Likewise. + +2000-09-28 Ulrich Drepper + + * stdio-common/tmpnam.c (tmpnam): Optimize a bit. + + * sysdeps/posix/getaddrinfo.c (gaih_local): Don't use tmpnam, use + underlying functions directly. + + * sysdeps/unix/sysv/linux/bits/resource.h: Add RLIMIT_LOCKS. + * sysdeps/unix/sysv/linux/arm/bits/resource.h: Likewise. + * sysdeps/unix/sysv/linux/i386/bits/resource.h: Likewise. + * sysdeps/unix/sysv/linux/mips/bits/resource.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/bits/resource.h: Likewise. + * sysdeps/unix/sysv/linux/sh/bits/resource.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/resource.h: Likewise. + +2000-09-28 Franz Sirl + + * sysdeps/unix/sysv/linux/kernel-features.h: Add __ASSUME_IPC64, only + define it for powerpc for kernel >= 2.4.0. + * sysdeps/unix/sysv/linux/msgctl.c: Test for __ASSUME_IPC64, not + __ASSUME_32BITUIDS. + * sysdeps/unix/sysv/linux/semctl.c: Likewise. + * sysdeps/unix/sysv/linux/shmctl.c: Likewise. + * sysdeps/unix/sysv/linux/powerpc/bits/ipc.h: Sync with kernel. + * sysdeps/unix/sysv/linux/powerpc/bits/msq.h: New file. + * sysdeps/unix/sysv/linux/powerpc/bits/sem.h: New file. + * sysdeps/unix/sysv/linux/powerpc/bits/shm.h: New file. + +2000-09-28 Martin Schwidefsksy + + * sysdeps/s390/atomicity.h: Fix compare_and_swap. + + * sysdeps/unix/sysv/linux/s390/bits/fcntl.h + (F_GETLK64,F_SETLK64,F_SETLKW64): Use values from 2.4.0-test8. + +2000-09-28 Denis Joseph Barrow + + * sysdeps/unix/sysv/linux/s390/sys/procfs.h: Use definitions from + ucontext.h. + * sysdeps/unix/sysv/linux/s390/sys/ucontext.h: Fix ucontext structure. + +2000-09-27 Andreas Schwab + + * math/Makefile (distribute): Explicitly add the long double test + sources, to get them included even if long double is not supported. + +2000-09-27 Jes Sorensen + + * elf/soinit.c (struct object): Move definition to gccframe.h and + include it. Problem identified by HJ Lu. + + * sysdeps/ia64/gccframe.h: New file. ia64 specific version of + struct object to be searched for frame unwind info. + * sysdeps/generic/gccframe.h: New file. Generic version of + struct object to be searched for frame unwind info. + +2000-09-28 Ulrich Drepper + + * manual/errno.texi: Correct error text for ENXIO. + Reported by Jörg Schilling . + +2000-09-27 Jes Sorensen + + * sysdeps/ia64/fpu/fsetexcptflg.c (fesetexceptflag): Set the + exception status bits rather than the exception disable bits. + Don't include math.h. + + * sysdeps/ia64/fpu/fgetexcptflg.c (fegetexceptflag): Report the + status of exceptions currently raised rather than which exceptions + are enabled. + + * sysdeps/ia64/fpu/fclrexcpt.c (feclearexcept): Typecase to fenv_t + rather than unsigned long int. + + * sysdeps/ia64/fpu/fedisblxcpt.c (fedisableexcept): Only disable + the exceptions actually requested by the caller and not just + disable all exceptions. + + * sysdeps/ia64/fpu/feenablxcpt.c (feenableexcept): Exceptions on + the ia64 are enabled by clearing the respective bits in the fpsr, + not setting them. + + * sysdeps/ia64/bits/fenv.h: typedef fexcept_t and fenv_t to + unsigned long int rather than unsigned long to be consistent with + the coding conventions. + +2000-09-20 H.J. Lu + + * sysdeps/ia64/fpu/fesetenv.c (fesetenv): Use fenv_t instead of + unsigned long int. + * sysdeps/ia64/fpu/fesetround.c (fesetround): Likewise. + +2000-09-28 Ulrich Drepper + + * string/bits/string2.h: Unify #if usage. + +2000-09-27 Jakub Jelinek + + * math/test-fenv.c (feexcp_mask_test): If enabling all exceptions + and disabling underflow or overflow, disable inexact as well. + +2000-09-26 Andreas Jaeger + + * sysdeps/gnu/netinet/tcp.h: Add tcp_info defines and types. + + * sysdeps/unix/sysv/linux/sys/mount.h (enum): New flag MS_BIND. + + * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h (F_SETLKW64, + F_GETLK64, F_SETLK64): Update from Linux-2.4.0-test9-pre4. + + * elf/ldconfig.c (search_dir): Allow unlimited path length. + (create_links): Likewise. + +2000-09-27 Ulrich Drepper + + * posix/tst-dir.c: Test a few error cases of chdir. + +2000-09-26 Ulrich Drepper + + * math/math_private.h: Don't add long double prototypes if + NO_LONG_DOUBLE is defined. + + * sysdeps/unix/i386/i586/clock_nanosleep.c (CLOCK_P): Remove + CLOCK_MONOTONIC. + * sysdeps/unix/i386/i586/clock_gettime.c (EXTRA_CLOCK_CASES): Likewise. + * sysdeps/unix/i386/i586/clock_getres.c (EXTRA_CLOCK_CASES): Likewise. + + * sysdeps/unix/sysv/linux/i386/bits/time.h: Remove CLOCK_MONOTONIC. + +2000-09-26 Jakub Jelinek + + * sysdeps/sparc/sparc32/bits/endian.h: Remove. + * sysdeps/sparc/sparc32/ieee754.h: New. + * sysdeps/sparc/sparc64/bits/endian.h: Move... + * sysdeps/sparc/bits/endian.h: ...here. + * sysdeps/unix/sysv/linux/sparc/sparc32/clone.S (__clone): Optimize. + * sysdeps/unix/sysv/linux/sparc/sparc64/clone.S (__clone): Check + %o1, not %o0 to see if we're parent or child. Optimize. + +2000-09-26 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/fork.S: New file (based on code + by Hans Boehm). + * sysdeps/unix/sysv/linux/ia64/vfork.S: New file (based on + code by Hans Boehm). + * sysdeps/unix/sysv/linux/ia64/fork.c: Deleted (obsoleted by fork.S). + +2000-09-20 H.J. Lu + + * sysdeps/ia64/fpu/printf_fphex.c: New file. + + * sysdeps/ia64/fpu/libm-test-ulps: New file. + +2000-09-17 H.J. Lu + + * sysdeps/ia64/Makefile (long-double-fcts): New. Defined as yes. + + * sysdeps/ia64/fpu/s_isinfl.c: New file. Include + sysdeps/i386/fpu/s_isinfl.c. + + * sysdeps/ia64/fpu/s_isnanl.c: New file. Include + sysdeps/i386/fpu/s_isnanl.c. + + * sysdeps/ia64/fpu/s_nextafterl.c: New file. Include + sysdeps/i386/fpu/s_nextafterl.c. + + * sysdeps/ia64/fpu/bits/mathdef.h: New file. Copied from + sysdeps/i386/fpu/bits/mathdef.h. + +2000-09-16 H.J. Lu + + * sysdeps/generic/ldsodefs.h (DL_UNMAP): New. Defined if + DL_UNMAP_IS_SPECIAL is not defined. + + * sysdeps/ia64/dl-lookupcfg.h (DL_UNMAP_IS_SPECIAL): Defined. + (_dl_unmap): New prototype. + (DL_UNMAP): New. Defined as _dl_unmap. + + * sysdeps/ia64/Versions [ld] (GLIBC_2.2): Add _dl_unmap. + + * elf/dl-close.c (_dl_close): Replace __munmap with DL_UNMAP. + +2000-09-16 H.J. Lu + + * sysdeps/generic/ldsodefs.h (DL_LOOKUP_ADDRESS): New. Defined + if ELF_FUNCTION_PTR_IS_SPECIAL is not defined. + + * sysdeps/ia64/dl-lookupcfg.h (_dl_lookup_address): New + prototype. + (DL_LOOKUP_ADDRESS): New. Defined as _dl_lookup_address. + + * sysdeps/ia64/dl-fptr.c (_dl_lookup_address): New. Lookup + the memory location of a function from a function descriptor. + + * sysdeps/ia64/Versions [ld] (GLIBC_2.2): Add _dl_lookup_address. + + * elf/dl-addr.c (_dl_addr): Use DL_LOOKUP_ADDRESS to get the + memory location. + +2000-09-14 Jes Sorensen + + * sysdeps/ia64/bits/byteswap.h (__bswap_16): Don't mark output + variable as input argument. + (__bswap_32): Likewise. + + * sysdeps/ia64/dl-machine.h: Add missing stop bit in RTLD_START() + - found by Jim Wilson + +2000-09-26 Ulrich Drepper + + * string/strxfrm.c: Only require alignment on __alignof__ (int32_t) + instead of 4. + +2000-09-26 Andreas Schwab + + * locale/programs/ld-collate.c (collate_output): Only require + alignment on __alignof__ (int32_t) instead of 4. + * locale/loadlocale.c (_nl_load_locale): Likewise. + * string/strcoll.c: Likewise. + +2000-09-26 Jes Sorensen + + * sysdeps/ieee754/ldbl-96/e_atan2l.c (__ieee754_atan2l): Add + parentheses around arithmetic used in | statement to kill compiler + warning. + + * math/math_private.h: Add prototype for __finitel. + (__ilogbl): Likewise. + (__isinfl): Likewise. + (__isnanl): Likewise. + (__atanl): Likewise. + (__copysignl): Likewise. + (__expm1l): Likewise. + (__floorl): Likewise. + (__frexpl): Likewise. + (__ldexpl): Likewise. + (__log1pl): Likewise. + (__nanl): Likewise. + (__rintl): Likewise. + (__scalbnl): Likewise. + (__sqrtl): Likewise. + (fabsl): Likewise. + (__sincosl): Likewise. + +2000-09-26 Andreas Schwab + + * sysdeps/m68k/fpu/libm-test-ulps: New file + +2000-09-26 Ulrich Drepper + + * locale/langinfo.h (__nl_langinfo_l): Add prototype. + +2000-09-26 Andreas Jaeger + + * misc/mkstemp64.c: New file. + * misc/Makefile (routines): Add mkstemp64. + * stdlib/stdlib.h: Add prototype and redirection magic. + * misc/Versions: Add mkstemp64. + +2000-09-26 Thorsten Kukuk + + * nscd/dbg_log.c (dbg_log): Add missing format string. + +2000-09-26 Ulrich Drepper + + * catgets/catgets.c (catopen): Use getenv instead of __secure_getenv + since we filter out the variable once. + * iconv/gconv_conf.c (__gconv_get_path): Likewise. + * locale/newlocale.c (__newlocale): Likewise. + * locale/setlocale.c (setlocale): Likewise. + * malloc/malloc.c (ptmalloc_init): Likewise. + * resolv/res_hconf.c (_res_hconf_init): Likewise. + * resolv/res_init.c (__res_vinit): Likewise. + * time/tzfile.c (__tzfile_read): Likewise. + * sysdeps/generic/unsecvars.h: New file. + * elf/dl-support.c (non_dynamic_init): Use it here to remove variables. + * elf/rtld.c (process_envvars): Likewise. + * elf/Makefile (distribute): Add unsecvars.h. + + * misc/daemon.c (daemon): Fail if !noclose and we cannot open the + real /dev/null device. + + * sysdeps/generic/check_fds.c: Include device-nrs.h. + * sysdeps/generic/device-nrs.h: New file. + * sysdeps/unix/sysv/linux/device-nrs.h: New file. + * misc/Makefile (distribute): Add device-nrs.h. + + * sysdeps/unix/sysv/linux/gethostid.c (sethostid): Use O_TRUNC to + remove possible garbage at the end of the file. + +2000-09-25 Ulrich Drepper + + * stdio-common/tmpnam_r.c: Warn about insecure tmpnam_r. + * stdio-common/tmpnam.c: Warn about insecure tmpnam. + * stdio-common/tempnam.c: Warn about insecure tempnam. + * misc/mktemp.c: Warn about insecure mktemp. + + * sysdeps/generic/check_fds.c: Check that file opened is really + /dev/null. + * posix/wordexp.c (exec_comm_child): Likewise. + + * elf/rtld.c (process_envvars): Open debug output file with O_NOFOLLOW. + + * locale/Makefile (routines): Add nl_langinfo_l. + * locale/Versions [libc] (GLIBC_2.2): Add __nl_langinfo_l. + * locale/nl_langinfo_l.c: New file. + * locale/nl_langinfo.c: Allow use of file for __nl_langinfo_l + definition. + +2000-09-23 Bruno Haible + + * iconvdata/gbk.c (USE_PRIVATE_AREA): Define to 0. + (__gbk_to_ucs): Conditionalize private area mappings. + (__gbk_from_ucs4_tab9): Likewise. + (BODY for TO_LOOP): Likewise. + * iconvdata/testdata/GBK: Don't use characters not yet in Unicode. + * iconvdata/testdata/GBK..UTF-8: Likewise. + * iconvdata/tst-tables.sh: Enable GBK test. + +2000-09-23 Bruno Haible + + * iconvdata/gbk.c (__gbk_to_ucs): Swap U+2014 and U+2015. + (__gbk_from_ucs4_tab4): Swap entries for U+2014 and U+2015. + (BODY for FROM_LOOP): Reject input > 0xFEA0, avoids out-of-bounds + array access. + * iconvdata/gbgbk.c (BODY for FROM_LOOP): Map 0xA844 to 0xA1AA. + * iconvdata/testdata/GBK..UTF8: Swap U+2014 and U+2015. + +2000-09-23 Bruno Haible + + * iconvdata/johab.c (final_to_ucs): Fix typos. + (jamo_from_ucs_table): Likewise. + (BODY for FROM_LOOP): Map 0x5c to U+20A9. Reject ranges + 0xD9E6..0xD9FE and 0xDEF2..0xDEFE. + (BODY for TO_LOOP): Map U+20A9 to 0x5c. Don't produce values in + the range 0xD9E6..0xD9FE. + * iconvdata/tst-tables.sh: Enable JOHAB testing. + +2000-09-25 Ulrich Drepper + + * iconv/gconv_conf.c (__gconv_get_path): Fix problem with relative + GCONV_PATH. + +2000-09-24 Ulrich Drepper + + * libio/genops.c (_IO_doallocbuf): Don't use single byte buffer if + stream is in wide mode. + + * stdio-common/vfprintf.c (buffered_vfprintf): Orient stream. + +2000-09-21 Bruno Haible + + * iconvdata/iso-2022-cn-ext.c (EMIT_SHIFT_TO_INIT): Shift __count + by 3, not 2. + (INIT_PARAMS, UPDATE_PARAMS): Likewise. + +2000-09-21 Bruno Haible + + * stdio-common/vfscanf.c (__vfscanf, _IO_vfscanf): Fix bugs in + reallocation logic for MALLOC (%as, %aS formats). + +2000-09-24 Ulrich Drepper + + * stdio-common/vfprintf.c (process_arg): Handle %hhn. + Add missing case in va_arg handling for numbers. + * stdio-common/tst-printf.c (main): Add tests for %hhu and %hhn + handling. + * stdio/tst-printf.sh: Adjust expected results. + Reported by Joseph S. Myers . + +2000-09-20 Bruno Haible + + * iconvdata/iso-2022-jp.c (BODY for FROM_LOOP): Reject 0x80. + (BODY for TO_LOOP): Clear bit 7 when outputting ISO-8859-1 upper half + characters. + * iconvdata/gen-8bit-gap-1.sh: Recognize lowercase hexadecimal digits + as equivalent to uppercase hexadecimal digits. + +2000-09-20 Bruno Haible + + * iconvdata/testdata/EUC-KR..UTF8: New file. + * iconvdata/testdata/EUC-TW: New file. + * iconvdata/testdata/EUC-TW..UTF8: New file. + * iconvdata/testdata/EUC-JP: New file. + * iconvdata/testdata/EUC-JP..UTF8: New file. + * iconvdata/testdata/ISO-2022-JP: New file. + * iconvdata/testdata/ISO-2022-JP..UTF8: New file. + * iconvdata/testdata/ISO-2022-JP-2: New file. + * iconvdata/testdata/ISO-2022-JP-2..UTF8: New file. + * iconvdata/testdata/ISO-2022-KR: Add a few more lines. + * iconvdata/testdata/ISO-2022-KR..UTF8: New file. + * iconvdata/testdata/ISO-2022-CN: New file. + * iconvdata/testdata/ISO-2022-CN..UTF8: New file. + * iconvdata/testdata/ISO-2022-CN-EXT: New file. + * iconvdata/testdata/ISO-2022-CN-EXT..UTF8: New file. + * iconvdata/TESTS: Enable tests for ISO-2022-JP, ISO-2022-JP-2, + ISO-2022-CN, ISO-2022-CN-EXT, EUC-JP, EUC-TW. + +2000-09-24 Andreas Jaeger + + * elf/ldconfig.c (add_dir): Move logic to add entry to list to new + function add_single_dir. + (add_single_dir): New function. + (search_dir): Use add_single_dir instead of recursing. + + * sysdeps/generic/dl-cache.h: Include stdint.h. + (struct file_entry_new): Use fixed sizes for interoperability + between 32bit and 64bit systems, add __unused to make alignment + explicit. + (CACHE_VERSION): Increment. + (struct cache_file_new): Use fixed sizes, add one more unused + entry to make alignment explicit. + +2000-09-24 Ulrich Drepper + + * elf/ldconfig.c (search_dir): Make more use of d_type information. + +2000-09-23 Ulrich Drepper + + * stdio-common/printf-parse.h (parse_one_spec): Clear + spec->info.i18n. Patch by Joseph S. Myers . + +2000-09-18 Mark Kettenis + + * sysdeps/mach/hurd/bits/posix_opt.h (_POSIX_SYNCHRONIZED_IO): + #undef since we don't have msync. + + * sysdeps/mach/hurd/bits/time.h: (CLOCKS_PER_SEC): Make a long int + constant since that is what clock_t is. + * sysdeps/mach/hurd/i386/bits/time.h: Likewise. + +2000-09-11 Mark Kettenis + + * sysdeps/mach/getloadavg.c (getloadavg): Divide instead of + multiply by LOAD_SCALE. + +2000-09-22 Jakub Jelinek + + * crypt/crypt.h (crypt, setkey, encrypt): Add __THROW. + (crypt_r, setkey_r, encrypt_r): Likewise. + +2000-09-22 Andreas Jaeger + + * locale/programs/repertoire.c (repertoiremap_hash): Don't specify + array size. + + * sysdeps/alpha/fpu/libm-test-ulps: New file. + From Christian Iseli . + +2000-09-21 Andreas Jaeger + + * math/libm-test.inc (atan_test): Test for existence of function. + (expm1_test): Likewise. + (acos_test): Likewise. + (asin_test): Likewise. + (exp_test): Likewise. + (log10_test): Likewise. + (log_test): Likewise. + (pow_test): Likewise. + (sqrt_test): Likewise. + (cos_test): Likewise. + (sin_test): Likewise. + (tan_test): Likewise. + (log1p_test): Likewise. + (log2_test): Likewise. + + * sysdeps/i386/fpu/libm-test-ulps: Tweak some values for K6. + + * libio/oldiofsetpos64.c: Fix alias names. + +2000-09-21 Martin Buchholz + + * manual/terminal.texi (Allocation): Sample code correction. + +2000-09-20 Andreas Jaeger + + * iconvdata/Makefile (generated): Add tst-tables.out. + + * intl/Makefile (generated): Add test output. + +2000-09-19 Andreas Jaeger + + * sunrpc/clnt_simp.c (callrpc): Fix write beyond end of buffer. + Reported by Jens-Uwe Mager . + +2000-09-18 Ulrich Drepper + + * version.h (VERSION): Bump to 2.1.94. + + * sysdeps/mips/Dist: Add fpu/fenv_libc.h. + * sysdeps/sparc/sparc32/soft-fp/Dist: Add q_add.c. + * sysdeps/sparc/sparc64/soft-fp/Dist: Add qp_add.c. + * sysdeps/unix/sysv/linux/ia64/Dist: Add net/route.h. + + * malloc/mtrace.c (mtrace): Mark stream as close on exec. + +2000-09-17 Bruno Haible + + * iconvdata/utf-16.c (BODY for TO_LOOP): Reject UCS-4 input in the + range 0xD800..0xDFFF. + * iconvdata/unicode.c (BODY for TO_LOOP): Likewise. + (BODY for FROM_LOOP): Likewise. + * iconv/gconv_simple.c (ucs2_internal_loop): Likewise. + (internal_ucs2_loop): Likewise. + (ucs2reverse_internal_loop): Likewise. + (internal_ucs2reverse_loop): Likewise. + +2000-09-17 Bruno Haible + + * iconvdata/utf-16.c (gconv_init): Add missing slashes to encoding + names. + +2000-09-17 Bruno Haible + + * iconvdata/tst-table-from.c (main): Fix test for error on stdout. + * iconvdata/tst-table-to.c (main): Likewise. + +2000-09-17 Bruno Haible + + * iconvdata/iso-ir-165.c (__isoir165_from_tab): Renamed from + __isoir165_tab. + * iconvdata/cns11643.h (__cns11643l1_to_ucs4_tab): New declaration. + * iconvdata/iso-2022-cn-ext.c: Include "cns11643.h". + (GB7590_set, GB13132_set, CNS11643_3_set, CNS11643_4_set, + CNS11643_5_set, CNS11643_6_set, CNS11643_7_set): Change enum values. + (BODY for FROM_LOOP): Fix buffer overrun. Treat CNS11643 plane 3. + Return __GCONV_INCOMPLETE_INPUT instead of __GCONV_EMPTY_INPUT. + (BODY for TO_LOOP): Fix usage of `set' vs. `used'. Fix typo that + caused GB2312 to be used instead of ISO-IR-165. Treat CNS11643 + plane 3. Fix shift sequences. Output announcement for SS2 and SS3 + encodings when needed. When outputting an announcement, don't clear + most other announcements. + +2000-09-17 Bruno Haible + + * iconvdata/iso-2022-cn.c (BODY for FROM_LOOP): Fix buffer overrun. + (BODY for TO_LOOP): Fix usage of `set' vs. `used'. + +2000-09-14 Bruno Haible + + * intl/Versions: Add bind_textdomain_codeset. + +2000-09-16 Ralf Baechle + + * sysdeps/mips/dl-machine.h (_RTLD_PROLOGUE): Reformat. Declare + as function. + (_RTLD_EPILOGUE): Reformat. Declare size of entry function. + (ELF_MACHINE_BEFORE_RTLD_RELOC): Relocate the dynamic linker itself so + it will even work when not loaded to the standard address. + (RTLD_START): Reformat. Call _dl_start in a way that is safe even + before the dynamic linker itself is relocated. + +2000-09-18 Andreas Jaeger + + * sysdeps/unix/sysv/linux/kernel-features.h: Always define + __ASSUME_32BITUIDS for MIPS. + * sysdeps/unix/sysv/linux/mips/ipc_priv.h: New file. + * sysdeps/unix/sysv/linux/mips/Dist: Add ipc_priv.h. + +2000-09-17 H.J. Lu + + * catgets/Makefile ($(objpfx)de/libc.cat): Use + $(make-target-directory) instead of mkdir. + +2000-09-17 Franz Sirl + + * sysdeps/unix/sysv/linux/kernel-features.h: Always define + __ASSUME_32BITUIDS for __powerpc__. + * sysdeps/unix/sysv/linux/powerpc/ipc_priv.h: New file. + * sysdeps/unix/sysv/linux/powerpc/Dist: Add ipc_priv.h. + +2000-09-17 Ulrich Drepper + + * sysdeps/unix/sysv/linux/m68k/sysdep.h (INLINE_SYSCALL): Fix last + patch. + * sysdeps/unix/sysv/linux/arm/sysdep.h (INLINE_SYSCALL): Likewise. + +2000-09-16 Jakub Jelinek + + * sysdeps/ia64/Implies: Reorder ieee754 implies so that ldbl-* comes + first. + * sysdeps/m68k/Implies: Likewise. + * sysdeps/sparc/sparc64/Implies: Likewise. + +2000-09-16 Jakub Jelinek + + * elf/readlib.c (process_file): Don't error for stale .so links either. + +2000-09-16 Ulrich Drepper + + * elf/dl-load.c (_dl_map_object_from_fd): Add one more + __builtin_expect. + + * include/bits/xopen_lim.h (LONG_BIT): Use LONG_MAX, not INT_MAX. + Patch by Thorsten Kukuk . + + * dlfcn/Makefile (distribute): Add defaultmod1.c and defaultmod2.c. + (test): Add default. + (modules-names): Add defaultmod1 and defaultmod2. + Add rules to build test objects. + +2000-09-15 Ulrich Drepper + + * wctype/wctype.h: Always include . + Reported by Jim Meyering . + + * elf/rtld.c (_dl_dynamic_weak): Set to 1 by default for now. + * elf/dl-support.c: Likewise. + + * sysdeps/unix/sysv/linux/ia64/bits/stat.h: Correct position of + st_blocks member in stat and stat64 structs. + Patch by Bill Nottingham . + + * iconvdata/tst-tables.sh: Add warning that GB18030 test might + take longer. + + * math/complex.h: Don't define _Complex macro for gcc 3. Add + __extension__ to _Complex_I definition since gcc warns if -pedantic. + * math/bits/cmathcalls.h (conj): Add __extension__ since we use ~. + Patches by Joseph S. Myers . + + * include/limits.h: Define LLONG_MIN, LLONG_MAX, ULLONG_MAX if + necessary. Move includes of POSIX and Unix limits files to the end. + * stdlib/Makefile (tests): Add tst-limits. + * stdlib/tst-limits.h: New file. + +2000-09-15 Andreas Jaeger + + * sysdeps/mips/fpu/fesetenv.c (__fesetenv): Handle FE_NOMASK_ENV. + + * sysdeps/mips/bits/fenv.h (FE_NOMASK_ENV): Define. + +2000-09-15 Jakub Jelinek + + * sysdeps/unix/alpha/sysdep.h (inline_syscall_clobbers): Add memory + clobber. + * sysdeps/unix/sysv/linux/arm/sysdep.h (INLINE_SYSCALL): Likewise. + * sysdeps/unix/sysv/linux/m68k/sysdep.h (INLINE_SYSCALL): Likewise. + +2000-09-15 Ulrich Drepper + + * elf/Makefile (distribute): Add nextmod1.c and nextmod2.c. + (tests): Add next. + (modules-names): Add nextmod1 and nextmod2. + Add rules to build and run next. + * elf/next.c: New file. + * elf/nextmod1.c: New file. + * elf/nextmod2.c: New file. + +2000-09-14 Jakub Jelinek + + * elf/dl-lookup.c (_dl_lookup_symbol_skip): Fix a typo. + +2000-09-15 Andreas Jaeger + + * sysdeps/mips/fpu/fenv_libc.h: New file. + * sysdeps/mips/fpu/feenablxcpt.c: Use fenv_libc.h + * sysdeps/mips/fpu/fegetexcept.c: Likewise. + * sysdeps/mips/fpu/fedisblxcpt.c: Likewise. + + * sysdeps/mips/fpu/feenablxcpt.c: New file. + * sysdeps/mips/fpu/fegetexcept.c: New file. + * sysdeps/mips/fpu/fedisblxcpt.c: New file. + +2000-09-14 Ulrich Drepper + + * intl/Makefile: Avoid unnecessary test reruns. + + * stdio-common/tst-printf.sh: Also allow output from 64-bit machines. + + * sysdeps/unix/sysv/linux/dl-osinfo.h (DL_SYSDEP_OSCHECK): Change + to not use sysctl(). Too many architectures have problems with it. + +2000-09-14 Andreas Jaeger + + * scripts/config.sub: New version from subversions.gnu.org. + + * time/clocktest.c (main): Change format, CLOCKS_PER_SEC is now + long. + +2000-09-14 Jakub Jelinek + + * posix/regex.c (compile_range): Cast collseq index to unsigned char + to avoid accessing data before collseq. + + * sysdeps/sparc/fpu/bits/mathinline.h (__unordered_v9cmp): Avoid + pasting strings together. + +2000-09-14 Greg McGary + + * sysdeps/generic/bp-checks.h: Remove bogus reference to GNU MP in + copyright notice. + * sysdeps/generic/bp-semctl.h: Likewise. + * sysdeps/generic/bp-start.h: Likewise. + * sysdeps/generic/bp-sym.h: Likewise. + * sysdeps/generic/bp-thunks.h: Likewise. Include to get + rename prototype. + +2000-09-13 Ulrich Drepper + + * io/test-lfs.c (do_test): Allow stat64() to return EOVERFLOW and + don't fail. + + * elf/elf.h: Add missing official relocations. + + * libio/stdio.h: Define __FILE if __need___FILE is defined. + * stdio/stdio.h: Likewise. + * wcsmbs/wchar.h: Get definition of __FILE. Use __FILE instead of FILE. + * include/stdio.h: Handle __need___FILE like __need_FILE. + * include/wchar.h: Use __FILE instead of FILE. + * libio/fwprintf.c: Include for FILE definition. + * libio/fwscanf.c: Likewise. + * libio/getwc.c: Likewise. + + * sysdeps/generic/stdint.h (WINT_MAX): Define to 4294967295u. + * sysdeps/generic/bits/wchar.h (WCHAR_MIN): Define to -2147483647 - 1. + * sysdeps/unix/sysv/linux/i386/bits/wchar.h: Likewise. + + * assert/assert.h: Update comment header about ISO C section. + * math/complex.h: Likewise. + * ctype/ctype.h: Likewise. + * include/errno.h: Likewise. + * include/limits.h: Likewise. + * locale/locale.h: Likewise. + * math/math.h: Likewise. + * setjmp/setjmp.h: Likewise. + * signal/signal.h: Likewise. + * stdio/stdio.h: Likewise. + * libio/stdio.h: Likewise. + * stdlib/stdlib.h: Likewise. + * string/string.h: Likewise. + * time/time.h: Likewise. + * wcsmbs/wchar.h: Likewise. + * wctype/wctype.h: Likewise. + Patches by Joseph S. Myers . + +2000-09-13 Andreas Jaeger + + * sysdeps/unix/sysv/linux/bits/socket.h (__cmsg_nxthdr): Fix test + for no more entries. + * sysdeps/unix/sysv/aix/bits/socket.h (__cmsg_nxthdr): Likewise. + * sysdeps/unix/sysv/linux/mips/bits/socket.h (__cmsg_nxthdr): Likewise. + Reported by Eric S. Johnson , closes PR libc/1887. + +2000-09-13 Ulrich Drepper + + * sysdeps/unix/sysv/linux/bits/time.h (CLOCKS_PER_SEC): Make a long int + constant since this is what clock_t is. + * sysdeps/unix/sysv/linux/alpha/bits/time.h: Likewise. + * sysdeps/unix/sysv/linux/i386/bits/time.h: Likewise. + * sysdeps/unix/sysv/linux/ia64/bits/time.h: Likewise. + * sysdeps/unix/sysv/linux/s390/bits/time.h: Likewise. + + * time/time.h: Don't defined clockid_t and timer_t unless POSIX + definitions are requested. + +2000-09-13 Andreas Jaeger + + * shlib-versions: libBrokenLocale needs minimal version for ia64, + sparc64 and sh to synch with libc. + +2000-09-13 Ulrich Drepper + + * iconvdata/Makefile (modules): Add ISO-2022-CN-EXT. + (distribute): Add iso-2022-cn-ext.c. + Add definitions to compile the new module. + * iconvdata/gconv-modules: Add entries for ISO-2022-CN-EXT. + * iconvdata/iso-2022-cn-ext.c: New file. + * iconvdata/iso-ir-165.h (isoir165_to_ucs4): Renamed from + ucs4_from_isoir165. Increment input pointer if successful. + + * csu/Makefile: Work around a gcc bug when creating csu-dummies. + + * sysdeps/unix/sysv/linux/getdents.c: Pretty print. + +2000-09-01 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/syscalls.list: Add + __syscall_getdents64 wrapper. + + * sysdeps/unix/sysv/linux/ia64/net/route.h: New file. + +2000-09-12 Ulrich Drepper + + * iconvdata/gb18030.c: Many many changes. Make consistent with + charmap and with itself. + * iconvdata/tst-tables.sh: Test GB18030. + +2000-09-11 Ulrich Drepper + + * iconv/skeleton.c: Fix last patch, add missing parameter to + unaligned function call. + +2000-09-10 Bruno Haible + + * locale/programs/ld-collate.c (collate_read): Fix typo in handling + of decimal ellipsis. + +2000-09-11 Bruno Haible + + * locale/programs/ld-collate.c (collate_read): Always initialize + error_section.next. + +2000-09-10 Bruno Haible + + * locale/programs/ld-collate.c (collate_finish): Upper bound for + ruleidx is 128, not 256. + +2000-09-11 Ulrich Drepper + + * locale/programs/ld-collate.c (collate_read): Correct check for + already inserted entries. + +2000-09-10 Bruno Haible + + * iconv/skeleton.c (FUNCTION_NAME): Handle unaligned access in + second try as well. + +2000-09-10 Bruno Haible + + * iconv/skeleton.c (FUNCTION_NAME): Optimize an `if' if + MAX_NEEDED_FROM > 1 && MAX_NEEDED_TO > 1. + +2000-09-10 Bruno Haible + + * iconv/skeleton.c (gconv_init): Replace all uses of RESET_STATE with + SAVE_RESET_STATE. + +2000-09-10 Bruno Haible + + * iconvdata/utf-7.c: New file. + * iconvdata/gconv-modules (UTF-7): New module entries. + * iconvdata/Makefile (modules): Add UTF-7. + (distribute): Add utf-7.c. + * iconvdata/testdata/UTF-7: New file. + * iconvdata/testdata/UTF-7..UTF8: New file. + * iconvdata/TESTS (UTF-7): New entry. + * iconvdata/run-iconv-test.sh: Fix confusing output. + +2000-09-11 Ulrich Drepper + + * sysdeps/posix/tempname.c (__gen_tempname): Use __lxstat and __xstat. + +2000-09-10 David S. Miller + + * sysdeps/sparc/sparc32/__longjmp.S (__longjmp): Correct %fp + frame pointer offset for non-fast path. + +2000-09-10 Ulrich Drepper + + * locale/programs/3level.h (*_init): Initialize level1, level2, + and level3 as well. + (*_add): Remove a few unnecessary conditionals. + +2000-09-05 Wolfram Gloger + + * malloc/thread-m.h [_LIBC]: Even if not linking with libpthread, + ensure usability of mutex as an `in use' flag. + +2000-09-10 Ulrich Drepper + + * shlib-versions: Simplify libm entries. Correct a few Hurd entries. + + * sysdeps/generic/initfini.c: Rewrite slightly to get rid of the + ugly GMON_WEAK_START hack. + Patch by Philip Blundell . + + * sysdeps/i386/i486/bits/string.h: Pretty printing. + +2000-09-09 Ulrich Drepper + + * sysdeps/powerpc/dl-machine.c: Add volatile to PPC_DCBST, PPC_SYNC, + and PPC_ICBI asm for broken compilers. + Patch by Franz Sirl . + +2000-09-09 Andreas Jaeger + + * manual/message.texi (Advanced gettext functions): Fix typo. + + * sysdeps/unix/sysv/linux/dl-osinfo.h: Include for + strncpy prototype. + +2000-09-09 Ulrich Drepper + + * sysdeps/ia64/memchr.S: Add .pred.rel to avoid wrong assembler + warnings. + * sysdeps/ia64/memccpy.S: Likewise. + Patches by Jim Wilson . + + * sysdeps/unix/sysv/linux/dl-osinfo.h (DL_SYSDEP_OSCHECK): Use uname + before trying to read /proc. + Patch by Matt Wilson . + * include/sys/utsname.h: Declare __uname. + * sysdeps/generic/uname.c: Make uname a weak alias of __uname. + * sysdeps/mach/hurd/uname.c: Likewise. + * sysdeps/unix/syscalls.list: Likewise. + + * iconv/gconv_dl.c (do_release_shlib): Rewrite condition for + unloading a bit. + +2000-09-08 Ulrich Drepper + + * posix/getopt.c (_getopt_internal): When long_only is set always + recognize conflicts just like before. + +2000-09-08 Franz Sirl + + * sysdeps/ia64/Makefile (sysdep-rtld-routines): New variable. + +2000-09-08 Greg McGary + + * sysdeps/unix/sysv/linux/syscalls.list (mincore): Fix arg signature. + * sysdeps/unix/make-syscalls.sh: New signature keyletter `V'. + * sysdeps/generic/bp-checks.h (CHECK_N_PAGES): New macro. + +2000-09-08 Andreas Jaeger + + * sysdeps/unix/sysv/linux/arm/lockf64.c: New file. + + * sysdeps/unix/sysv/linux/arm/fcntl.c: New file. + + * sysdeps/unix/sysv/linux/arm/bits/fcntl.h + (F_GETLK64,F_SETLK64,F_SETLKW64): Use values from 2.4.0-test8. + (F_GETLK,F_SETLK,F_SETLKW): Handle __USE_FILE_OFFSET64 correctly. + +2000-09-07 Ulrich Drepper + + * iconvdata/tst-tables.sh: Enable EUC-KR test. + + * elf/dl-load.c (lose): Decrement _nl_loaded. + (_dl_map_object_from_fd): Don't try to dlopen executables. + + * iconvdata/tst-tables.sh: Actually return with an error if + something goes wrong. + * iconvdata/tst-table.sh: Return with an error if any of the cmp fails. + * iconvdata/big5hkscs.c (BODY of FROM_LOOP): Reject 0xff as input. + + * iconvdata/tst-tables.sh: Add BIG5HKSCS. + + * iconvdata/tst-table-to.c (main): Correct cast in iconv call. + * iconvdata/tst-table-from.c: Include . + (try): Correct cast in iconv call. + + * elf/Makefile (all-rtld-routines): Evaluate $(sysdep-rtld-routines) + too. + * sysdeps/powerpc/Makefile (sysdep-rtld-routines): New variable. + (sysdep_routines): Remove dl-start. + Patches by Franz Sirl . + + * assert/__assert.c: Undefine NDEBUG before include . + + * sysdeps/unix/sysv/linux/msgsnd.c (msgsnd): Add cast to avoid warning. + * sysdeps/unix/sysv/linux/shmat.c (shmat): Likewise. + +2000-09-06 Andreas Schwab + + * sysdeps/unix/sysv/linux/ia64/bits/time.h: New file. + +2000-09-07 Ulrich Drepper + + * sysdeps/unix/sysv/linux/gethostid.c: Find hostid file in /etc. + + * scripts/config.sub: Strip out -unknown for Linux targets. + Patch by Scott Bambrough . + + * posix/tst-dir.c (main): Correct one bug (missing NULL test) and + add one more test. + +2000-09-07 Andreas Jaeger + + * sysdeps/unix/sysv/linux/mips/lockf64.c: New file. + + * sysdeps/unix/sysv/linux/i386/fcntl.c: Add prototypes for the + syscalls. + + * sysdeps/unix/sysv/linux/mips/syscalls.list: Add __syscall_fcntl. + + * sysdeps/mips/dl-machine.h (RESOLVE_GOTSYM): Fix calls to dl_lookup. + (ELF_MACHINE_RUNTIME_TRAMPOLINE): Likewise. + + * sysdeps/unix/sysv/linux/mips/fcntl.c: New file. + + * stdlib/tst-bsearch.c (main): Add more test cases. + + * locale/programs/ld-collate.c (handle_ellipsis): Fix typo. + * elf/dl-load.c (_dl_map_object_from_fd): Likewise. + Reported by GOTO Masanori . + +2000-09-07 Ulrich Drepper + + * posix/Makefile (tests): Add tst-dir. + (tst-dir-ARGS): New variable. + * posix/tst-dir.c: New file. + +2000-09-07 Andreas Jaeger + + * sysdeps/unix/sysv/linux/mips/sys/syscall.h (SYS_getdents64): New. + (SYS_fcntl64): New. + + * sysdeps/unix/sysv/linux/mips/syscalls.list: Add getdents64. + +2000-09-06 Ulrich Drepper + + * sysdeps/unix/opendir.c: If O_DIRECTORY_WORKS is defined don't + use the hack with tryopen_o_directory to determine at runtime + whether it works. + * sysdeps/unix/sysv/linux/opendir.c: New file. + * sysdeps/unix/sysv/linux/kernel-features.h: Define + __ASSUME_O_DIRECTORY if kernel knows O_DIRECTORY. + + * catgets/Depend: New file. Add intl. + * catgets/Makefile (tests): Add tst-catgets. + (generated): Remove de.msg. + (generated-dirs): Add de. + Add dependency if tst-catgets output on de/libc.cat. + * catgets/tst-catgets.c: New file. + + * po/ja.po: New file. + * po/el.po: Update from translation team. + + * wcsmbs/Depend: New file. + * wcsmbs/Makefile (tests): Add tst-btowc. + (tst-btowc-ENV): Define. + * wcsmbs/tst-btowc.c: New file. + + * sysdeps/unix/sysv/linux/_G_config.h: Moved to... + * sysdeps/gnu/_G_config.h: ...here to be shared with Hurd. + + * sysdeps/posix/signal.c: Add sig to act.sa_mask for completeness. + + * stdlib/Makefile (tests): Add tst-bsearch. + * stdlib/tst-bsearch.c: New file. + + * posix/getopt.c (_getopt_internal): Don't recognize an option + name as ambiguous if it's a prefix for more than one name but the + other struct option values are identical. + + * posix/tstgetopt.c: Add test for improved ambiguity recognition. + Don't depend on visual inspection of the output file to recognize + errors. + * posix/Makefile (tstgetopt-ARGS): Add a few more parameters. + +2000-09-06 Andreas Jaeger + + * sysdeps/alpha/soft-fp/Dist: New file. + * sysdeps/i386/soft-fp/Dist: New file. + * sysdeps/mips/mips64/soft-fp/Dist: New file. + * sysdeps/mips/soft-fp/Dist: New file. + * sysdeps/powerpc/soft-fp/Dist: New file. + * sysdeps/sparc/sparc32/soft-fp/Dist: New file. + * sysdeps/sparc/sparc64/soft-fp/Dist: New file. + + * sysdeps/sparc/sparc64/soft-fp/Makefile [$(subdir) = soft-fp]: + Use sysdep_routines instead of routines to fix make dist failure. + * sysdeps/sparc/sparc32/soft-fp/Makefile: Likewise (in commented + out code). + * sysdeps/powerpc/soft-fp/Makefile [$(subdir) = soft-fp]: Likewise. + + * sysdeps/mips/Makefile [$(subdir) = misc]: Use + sysdep_headers instead of headers for make dist. + + * sysdeps/unix/sysv/linux/mips/Makefile [$(subdir) = misc]: + Likewise. + +2000-09-06 Andreas Schwab + + * sysdeps/unix/sysv/linux/m68k/bits/fcntl.h: New file. + +2000-09-06 Andreas Jaeger + + * soft-fp/Makefile (distribute): Remove ChangeLog. + + * sysdeps/sparc/sparc32/Makefile [$(subdir) = gnulib]: Use + sysdep_routines instead of routines for make dist. + +2000-09-05 Ulrich Drepper + + * libio/libio.h (_IO_fwide_maybe_incompatible): For glibc 2.0 + compatibility check for old stream and call _IO_wide in doubt. + (_IO_fwide): Use _IO_fwide_maybe_incompatible macro. + * libio/iofwide.c (_IO_fwide): If compatibility with glibc 2.0 is + needed tst for such an old structure and don't do anything. + * libio/freopen.c: Remove declaration of _IO_stdin_used. + +2000-09-06 Andreas Jaeger + + * sysdeps/powerpc/Makefile [$(subdir) = elf]: Modify + sysdep-dl-routines and sysdep_routines instead of rtld-routines + and dl-routines. + + * soft-fp/ChangeLog: Merged with this file. + +2000-06-13 Ulrich Drepper + + * soft-fp/Makefile (distribute): Add op-8.h and testit.c. + + * soft-fp/Makefile (distribute): Add the math functions, too. + + * soft-fp/Makefile (distribute): Add ChangeLog, Banner, and configure. + +2000-03-03 Geoff Keating + + * soft-fp/soft-fp.h (_FP_ROUND_ZERO): Cast 0 to void before using it + as a statement. + + * soft-fp/sysdeps/powerpc/Makefile (routines): New file. + * soft-fp/sysdeps/powerpc/q_*: New files. + +2000-09-05 Ulrich Drepper + + * stdio-common/vfprintf.c (process_string_arg): Handle precision + in wide char case correctly. Don't allocate too long temporary + strings with alloca. + + * stdio-common/Makefile (tests): Add tst-swprintf. + (tst-swprintf-ENV): New variable. + * stdio-common/tst-swprintf.c: New file. + +2000-09-05 Andreas Jaeger + + * sysdeps/unix/sysv/linux/mips/bits/stat.h: Use st_pad5. + * sysdeps/unix/sysv/linux/mips/xstatconv.c: Fix assignments. + Patch by Maciej W. Rozycki . + +2000-09-05 Ulrich Drepper + + * configure.in: Strip out "unknown" from configuration names. + +2000-09-05 Andreas Jaeger + + * sysdeps/powerpc/Subdirs: New file, adds soft-fp. + + * sysdeps/sparc/sparc64/Implies: Add soft-fp. + * sysdeps/sparc/sparc32/Implies: Likewise. + * sysdeps/powerpc/Implies: Likewise. + + * libio/oldiofsetpos64.c: Check for compatibility with glibc 2.1. + * libio/oldiofgetpos64.c: Likewise. + + * soft-fp/Makefile (distribute): Remove configure. + + * sysdeps/sparc/sparc64/soft-fp/Versions: Use version glibc 2.2. + + * soft-fp/configure: Remove. + + * soft-fp/sysdeps/sparc/sparc64/qp_neg.S: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_neg.S: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/Makefile: Move from here... + * sysdeps/sparc/sparc32/soft-fp/Makefile: ... to here. + + * soft-fp/sysdeps/powerpc/Makefile: Move from here... + * sysdeps/powerpc/soft-fp/Makefile: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/Makefile: Move from here... + * sysdeps/sparc/sparc64/soft-fp/Makefile: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/qp_neg.S: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_neg.S: ... to here. + + * soft-fp/sysdeps/powerpc/q_add.c: Move from here... + * sysdeps/powerpc/soft-fp/q_add.c: ... to here. + + * soft-fp/sysdeps/powerpc/q_cmp.c: Move from here... + * sysdeps/powerpc/soft-fp/q_cmp.c: ... to here. + + * soft-fp/sysdeps/powerpc/q_cmpe.c: Move from here... + * sysdeps/powerpc/soft-fp/q_cmpe.c: ... to here. + + * soft-fp/sysdeps/powerpc/q_div.c: Move from here... + * sysdeps/powerpc/soft-fp/q_div.c: ... to here. + + * soft-fp/sysdeps/powerpc/q_dtoq.c: Move from here... + * sysdeps/powerpc/soft-fp/q_dtoq.c: ... to here. + + * soft-fp/sysdeps/powerpc/q_feq.c: Move from here... + * sysdeps/powerpc/soft-fp/q_feq.c: ... to here. + + * soft-fp/sysdeps/powerpc/q_fge.c: Move from here... + * sysdeps/powerpc/soft-fp/q_fge.c: ... to here. + + * soft-fp/sysdeps/powerpc/q_fgt.c: Move from here... + * sysdeps/powerpc/soft-fp/q_fgt.c: ... to here. + + * soft-fp/sysdeps/powerpc/q_fle.c: Move from here... + * sysdeps/powerpc/soft-fp/q_fle.c: ... to here. + + * soft-fp/sysdeps/powerpc/q_flt.c: Move from here... + * sysdeps/powerpc/soft-fp/q_flt.c: ... to here. + + * soft-fp/sysdeps/powerpc/q_fne.c: Move from here... + * sysdeps/powerpc/soft-fp/q_fne.c: ... to here. + + * soft-fp/sysdeps/powerpc/q_itoq.c: Move from here... + * sysdeps/powerpc/soft-fp/q_itoq.c: ... to here. + + * soft-fp/sysdeps/powerpc/q_lltoq.c: Move from here... + * sysdeps/powerpc/soft-fp/q_lltoq.c: ... to here. + + * soft-fp/sysdeps/powerpc/q_mul.c: Move from here... + * sysdeps/powerpc/soft-fp/q_mul.c: ... to here. + + * soft-fp/sysdeps/powerpc/q_neg.c: Move from here... + * sysdeps/powerpc/soft-fp/q_neg.c: ... to here. + + * soft-fp/sysdeps/powerpc/q_qtod.c: Move from here... + * sysdeps/powerpc/soft-fp/q_qtod.c: ... to here. + + * soft-fp/sysdeps/powerpc/q_qtoi.c: Move from here... + * sysdeps/powerpc/soft-fp/q_qtoi.c: ... to here. + + * soft-fp/sysdeps/powerpc/q_qtoll.c: Move from here... + * sysdeps/powerpc/soft-fp/q_qtoll.c: ... to here. + + * soft-fp/sysdeps/powerpc/q_qtos.c: Move from here... + * sysdeps/powerpc/soft-fp/q_qtos.c: ... to here. + + * soft-fp/sysdeps/powerpc/q_qtou.c: Move from here... + * sysdeps/powerpc/soft-fp/q_qtou.c: ... to here. + + * soft-fp/sysdeps/powerpc/q_qtoull.c: Move from here... + * sysdeps/powerpc/soft-fp/q_qtoull.c: ... to here. + + * soft-fp/sysdeps/powerpc/q_sqrt.c: Move from here... + * sysdeps/powerpc/soft-fp/q_sqrt.c: ... to here. + + * soft-fp/sysdeps/powerpc/q_stoq.c: Move from here... + * sysdeps/powerpc/soft-fp/q_stoq.c: ... to here. + + * soft-fp/sysdeps/powerpc/q_sub.c: Move from here... + * sysdeps/powerpc/soft-fp/q_sub.c: ... to here. + + * soft-fp/sysdeps/powerpc/q_ulltoq.c: Move from here... + * sysdeps/powerpc/soft-fp/q_ulltoq.c: ... to here. + + * soft-fp/sysdeps/powerpc/q_util.c: Move from here... + * sysdeps/powerpc/soft-fp/q_util.c: ... to here. + + * soft-fp/sysdeps/powerpc/q_utoq.c: Move from here... + * sysdeps/powerpc/soft-fp/q_utoq.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/q_add.c: Move from here... + * sysdeps/sparc/sparc32/soft-fp/q_add.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/q_cmp.c: Move from here... + * sysdeps/sparc/sparc32/soft-fp/q_cmp.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/q_cmpe.c: Move from here... + * sysdeps/sparc/sparc32/soft-fp/q_cmpe.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/q_div.c: Move from here... + * sysdeps/sparc/sparc32/soft-fp/q_div.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/q_dtoq.c: Move from here... + * sysdeps/sparc/sparc32/soft-fp/q_dtoq.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/q_feq.c: Move from here... + * sysdeps/sparc/sparc32/soft-fp/q_feq.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/q_fge.c: Move from here... + * sysdeps/sparc/sparc32/soft-fp/q_fge.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/q_fgt.c: Move from here... + * sysdeps/sparc/sparc32/soft-fp/q_fgt.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/q_fle.c: Move from here... + * sysdeps/sparc/sparc32/soft-fp/q_fle.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/q_flt.c: Move from here... + * sysdeps/sparc/sparc32/soft-fp/q_flt.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/q_fne.c: Move from here... + * sysdeps/sparc/sparc32/soft-fp/q_fne.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/q_itoq.c: Move from here... + * sysdeps/sparc/sparc32/soft-fp/q_itoq.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/q_mul.c: Move from here... + * sysdeps/sparc/sparc32/soft-fp/q_mul.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/q_neg.c: Move from here... + * sysdeps/sparc/sparc32/soft-fp/q_neg.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/q_qtod.c: Move from here... + * sysdeps/sparc/sparc32/soft-fp/q_qtod.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/q_qtoi.c: Move from here... + * sysdeps/sparc/sparc32/soft-fp/q_qtoi.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/q_qtos.c: Move from here... + * sysdeps/sparc/sparc32/soft-fp/q_qtos.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/q_qtoui.c: Move from here... + * sysdeps/sparc/sparc32/soft-fp/q_qtoui.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/q_qtoux.c: Move from here... + * sysdeps/sparc/sparc32/soft-fp/q_qtoux.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/q_qtox.c: Move from here... + * sysdeps/sparc/sparc32/soft-fp/q_qtox.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/q_sqrt.c: Move from here... + * sysdeps/sparc/sparc32/soft-fp/q_sqrt.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/q_stoq.c: Move from here... + * sysdeps/sparc/sparc32/soft-fp/q_stoq.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/q_sub.c: Move from here... + * sysdeps/sparc/sparc32/soft-fp/q_sub.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/q_uitoq.c: Move from here... + * sysdeps/sparc/sparc32/soft-fp/q_uitoq.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/q_util.c: Move from here... + * sysdeps/sparc/sparc32/soft-fp/q_util.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/q_uxtoq.c: Move from here... + * sysdeps/sparc/sparc32/soft-fp/q_uxtoq.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/q_xtoq.c: Move from here... + * sysdeps/sparc/sparc32/soft-fp/q_xtoq.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/qp_add.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_add.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/qp_cmp.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_cmp.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/qp_cmpe.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_cmpe.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/qp_div.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_div.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/qp_dtoq.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_dtoq.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/qp_feq.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_feq.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/qp_fge.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_fge.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/qp_fgt.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_fgt.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/qp_fle.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_fle.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/qp_flt.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_flt.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/qp_fne.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_fne.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/qp_itoq.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_itoq.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/qp_mul.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_mul.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/qp_qtod.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_qtod.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/qp_qtoi.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_qtoi.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/qp_qtos.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_qtos.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/qp_qtoui.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_qtoui.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/qp_qtoux.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_qtoux.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/qp_qtox.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_qtox.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/qp_sqrt.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_sqrt.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/qp_stoq.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_stoq.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/qp_sub.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_sub.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/qp_uitoq.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_uitoq.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/qp_util.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_util.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/qp_uxtoq.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_uxtoq.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/qp_xtoq.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/qp_xtoq.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/s_frexpl.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/s_frexpl.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/s_ilogbl.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/s_ilogbl.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/s_scalblnl.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/s_scalblnl.c: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/s_scalbnl.c: Move from here... + * sysdeps/sparc/sparc64/soft-fp/s_scalbnl.c: ... to here. + + * soft-fp/sysdeps/alpha/sfp-machine.h: Move from here... + * sysdeps/alpha/soft-fp/sfp-machine.h: ... to here. + + * soft-fp/sysdeps/i386/sfp-machine.h: Move from here... + * sysdeps/i386/soft-fp/sfp-machine.h: ... to here. + + * soft-fp/sysdeps/mips/mips64/sfp-machine.h: Move from here... + * sysdeps/mips/mips64/soft-fp/sfp-machine.h: ... to here. + + * soft-fp/sysdeps/mips/sfp-machine.h: Move from here... + * sysdeps/mips/soft-fp/sfp-machine.h: ... to here. + + * soft-fp/sysdeps/powerpc/sfp-machine.h: Move from here... + * sysdeps/powerpc/soft-fp/sfp-machine.h: ... to here. + + * soft-fp/sysdeps/sparc/sparc32/sfp-machine.h: Move from here... + * sysdeps/sparc/sparc32/soft-fp/sfp-machine.h: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/sfp-machine.h: Move from here... + * sysdeps/sparc/sparc64/soft-fp/sfp-machine.h: ... to here. + + * soft-fp/sysdeps/powerpc/Versions: Move from here... + * sysdeps/powerpc/soft-fp/Versions: ... to here. + + * soft-fp/sysdeps/sparc/sparc64/Versions: Move from here... + * sysdeps/sparc/sparc64/soft-fp/Versions: ... to here. + + * libio/oldiofsetpos64.c: iofsetpos was introduced in glibc 2.1, + change symbol version. + * libio/oldiofgetpos64.c: Likewise. + Reported by Martin v. Loewis . + + * locale/programs/ld-ctype.c (charclass_charcode_ellipsis): Fix + typo. + Reported by dyky@kondara.org, closes PR libc/1886. + + * stdlib/tst-strtod.c: Add testcases for denormal numbers from PR + libc/1880. + +2000-09-04 Ulrich Drepper + + * iconvdata/run-iconv-test.sh: Add code to immediately stop the + script when ^C is hit. + + * locale/programs/localedef.c (construct_output_path): Correct + computation of endp after asprintf. + * locale/programs/locfile.c (write_locale_data): Don't add extra + slash in filename. + +2000-09-05 Andreas Jaeger + + * scripts/config.guess: New upstream version. + * scripts/config.sub: Likewise. + * manual/texinfo.tex: Likewise. + +2000-09-04 Andreas Schwab + + * elf/Makefile (all-dl-routines): New variable. + (elide-routines.os): Use it instead of $(dl-routines). + (all-rtld-routines): New variable. + (extra-objs): Use it instead of $(rtld-routines). + ($(objpfx)dl-allobjs.os): Likewise. + * sysdeps/ia64/Makefile [$(subdir) = elf]: Modify + sysdep-dl-routines and sysdep_routines instead of rtld-routines + and dl-routines. + +2000-09-03 Bruno Haible + + * iconv/gconv_trans.c (__gconv_translit_find): Update open_count. + Set fname to NULL if the module wasn't found. + +2000-09-03 Bruno Haible + + * iconv/gconv_trans.c (__gconv_translit_find): Don't set need_so to + true if trans->name already ends in ".so". + +2000-09-03 Bruno Haible + + * iconv/gconv_int.h (__gconv_release_shlib): Change return type to + void. + * iconv/gconv_dl.c (do_release_shlib): Don't decrement the counter + below -TRIES_BEFORE_UNLOAD-1, to avoid wraparound. + (__gconv_release_shlib): Change return type to void. + * iconv/gconv_builtin.c (__gconv_get_builtin_trans): Don't set + step->__counter here. + * iconv/gconv_db.c (free_derivation): Don't call a step's destructor + if the reference is zero. + (release_step): New function. + (gen_steps): Always initialize the __counter to 1. Use release_step. + Don't call the destructor on the step whose initializer failed. + (increment_counter): Use release_step. Don't normally run destructors + here. + (__gconv_close_transform): Use release_step. + +2000-09-03 Bruno Haible + + * iconv/gconv_simple.c (encoding_mask, encoding_byte): Remove. + (__gconv_transform_internal_utf8) [BODY]: Use simple shifts instead. + +2000-09-03 Bruno Haible + + * iconvdata/euc-tw.c (BODY for FROM_LOOP): Initialize ch2 correctly. + If the first byte is 0x8E, don't ask for 4 bytes until it has been + verified that the second byte is valid. Leave it to cns11643_to_ucs4 + to check for incomplete input. + * iconvdata/cns11643.h (cns11643_to_ucs4): The plane number is + ch - 0x20 - offset, not ch - 0x21 - offset. Upper bound for + __cns11643l1_to_ucs4_tab is 0x21f2, not 0x2196. + (ucs4_to_cns11643): Fix mapping for ranges 0x3105..0x3129 and + 0x9f9d..0x9fa5. + * iconvdata/cns11643l1.h (cns11643l1_to_ucs4): Upper bound for + __cns11643l1_to_ucs4_tab is 0x21f2, not 0x2196. + (ucs4_to_cns11643l1): Fix mapping for range 0x3105..0x3129. + * iconvdata/cns11643l1.c (__cns11643l1_from_ucs4_tab6): Extend + upto index 0x0052. + +2000-09-03 Bruno Haible + + * iconv/gconv_db.c (find_derivation): Always use the least-cost + solution. + +2000-09-03 Bruno Haible + + * iconvdata/big5.c (BODY for FROM_LOOP): Bytes 0x81..0xA0, 0xFA..0xFF + are invalid. + +2000-09-03 Bruno Haible + + * iconvdata/jis0208.c (__jis0208_to_ucs): Map EUC-JP 0xA1C0 to U+005C. + * iconvdata/jis0212.c (__jisx0212_to_ucs): Map EUC-JP 0x8FA2B7 to + U+007E. + +2000-09-03 Bruno Haible + + * iconvdata/sjis.c (cjk_block1): Map 0x815F to U+005C. + +2000-09-03 Bruno Haible + + * iconvdata/iso_6937-2.c (to_ucs4): Map 0xB4 to U+00D7. + +2000-09-03 Bruno Haible + + * iconvdata/tst-tables.sh: New file. + * iconvdata/tst-table.sh: New file. + * iconvdata/tst-table-from.c: New file. + * iconvdata/tst-table-to.c: New file. + * iconvdata/tst-table-charmap.sh: New file. + * iconvdata/Makefile (test-srcs): Set to tst-table-from tst-table-to. + (distribute): Add tst-tables.sh, tst-table.sh, tst-table-charmap.sh, + tst-table-from.c, tst-table-to.c, EUC-JP.irreversible, + ISIRI-3342.irreversible, SJIS.irreversible. + (tests): Add dependency on tst-tables.out. + (tst-tables.out, tst-tables-clean): New rules. + (do-tests-clean, common-mostlyclean): Require tst-tables-clean. + * iconvdata/ISIRI-3342.irreversible: New file. + * iconvdata/EUC-JP.irreversible: New file. + * iconvdata/SJIS.irreversible: New file. + +2000-09-04 Ulrich Drepper + + * manual/locale.texi (General Numeric): Update description of + representation of the grouping information in the locale data. + Patch by Gaute B. Strokkenes . + +2000-09-04 Andreas Jaeger + + * locale/programs/ld-monetary.c (monetary_read): Fix typo. + * iconv/iconv_prog.c (options): Fix typo. + Reported by dyky@kondara.org, closes PR libc/1885. + +2000-09-04 Andreas Jaeger + + * sysdeps/generic/fegetenv.c: It's __fegetenv. + Reported by Rob Levin . + +2000-09-03 Ulrich Drepper + + * time/sys/time.h (gettimeofday): Move restrict for tz parameter + to the typedefs of __timezone_ptr_t. + Reported by MATSUMURA Hiromitsu . + +2000-09-02 Jakub Jelinek + + * nss/nss_files/files-hosts.c (HOST_DB_LOOKUP): Increment counter in + the loop. + +2000-09-01 H.J. Lu + + * Makeconfig (built-program-cmd): Don't use the dynamic linker + to run a binary if it is in $(tests-static). + + * Rules (binaries-static): Add $(tests-static). + +2000-09-02 Andreas Jaeger + + * sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Fixes for fcntl64. + + * libio/fmemopen.c (fmemopen_close): Revert one part of last + patch. + +2000-09-01 Ulrich Drepper + + * iconvdata/big5hkscs.c: Regenerated from charmap. + * iconvdata/testdata/BIG5HKSCS: Regenerated. + * iconvdata/testdata/BIG5HKSCS..UTF8: Regenerated. + + * libio/fmemopen.c (fmemopen_seek): Add default case in switch + statement. General cleanup. + +2000-08-31 Bruno Haible + + * wctype/wcfuncs.c (iswblank): New function. + * wctype/wcfuncs_l.c (__iswblank_l): New function. + * wctype/wcextra.c: Remove file. + * wctype/wcextra_l.c: Remove file. + * wctype/Makefile (distribute): Remove wcextra and wcextra_l. + +2000-08-31 Bruno Haible + + * locale/programs/ld-collate.c (collate_output): Remove redundant + assert call. + * string/strcoll.c: Likewise. + * string/strxfrm.c: Include assert.h. Add assert calls like in + string/strcoll.c. + +2000-08-31 Bruno Haible + + * locale/categories.def (_NL_COLLATE_HASH_SIZE, + _NL_COLLATE_HASH_LAYERS, _NL_COLLATE_NAMES, _NL_CTYPE_NAMES, + _NL_CTYPE_HASH_SIZE, _NL_CTYPE_HASH_LAYERS): Remove definitions. + * locale/langinfo.h (_NL_COLLATE_HASH_SIZE, _NL_COLLATE_HASH_LAYERS, + _NL_COLLATE_NAMES): Rename to _NL_COLLATE_GAP1/2/3 respectively. + (_NL_CTYPE_NAMES): Rename to _NL_CTYPE_GAP3. + (_NL_CTYPE_GAP3): Rename to _NL_CTYPE_GAP4. + (_NL_CTYPE_HASH_SIZE, _NL_CTYPE_HASH_LAYERS): Rename to + _NL_CTYPE_GAP5/6 respectively. + + * locale/C-ctype.c (_nl_C_LC_CTYPE): Update. + * ctype/ctype-info.c (__ctype_names, __ctype_width): Remove variables. + * locale/lc-ctype.c (_nl_postload_ctype): Assume new locale format. + Don't initialize __ctype_names and __ctype_width. + * wctype/cname-lookup.h: Remove file. + * wctype/Makefile (distribute): Remove cname-lookup.h. + * wctype/wchar-lookup.h: Include stdint.h. + * wctype/wctype.c (__wctype): Assume new locale format. + * wctype/wctype_l.c (__wctype_l): Likewise. + * wctype/iswctype.c: Don't include cname-lookup.h. + (__iswctype): Assume new locale format. + * wctype/iswctype_l.c: Don't include cname-lookup.h. + (__iswctype_l): Assume new locale format. + * wctype/wctrans.c: Don't include ctype.h. + (wctrans): Assume new locale format. + * wctype/wctrans_l.c (__wctrans_l): Likewise. + * wctype/towctrans.c: Don't include cname-lookup.h. + (__towctrans): Assume new locale format. + * wctype/towctrans_l.c: Don't include cname-lookup.h. + (__towctrans_l): Assume new locale format. + * wctype/wcfuncs.c: Don't include ctype.h and cname-lookup.h. Include + localeinfo.h instead. + (__NO_WCTYPE): Remove unused macro. + (__ctype32_b, __ctype32_toupper, __ctype32_tolower): Remove + declarations. + (iswalnum, iswalpha, iswcntrl, iswdigit, iswlower, iswgraph, iswprint, + iswpunct, iswspace, iswupper, iswxdigit): Assume new locale format. + (towlower, towupper): Likewise. + * wctype/wcfuncs_l.c: Don't include cname-lookup.h. Include + localeinfo.h instead. + (__NO_WCTYPE): Remove unused macro. + (__iswalnum_l, __iswalpha_l, __iswcntrl_l, __iswdigit_l, __iswlower_l, + __iswgraph_l, __iswprint_l, __iswpunct_l, __iswspace_l, __iswupper_l, + __iswxdigit_l): Assume new locale format. + (__towlower_l, __towupper_l): Likewise. + * wcsmbs/wcwidth.h: Don't include cname-lookup.h. + (__ctype32_b): Remove declaration. + (internal_wcwidth): Assume new locale format. + * locale/programs/ld-ctype.c (struct locale_ctype_t): Remove fields + plane_size, plane_cnt, names, width. Rename map to map_b, rename map32 + to map32_b, rename width_3level to width. + (ctype_output): Always create new locale format. Don't emit + _NL_CTYPE_NAMES, _NL_CTYPE_HASH_SIZE, _NL_CTYPE_HASH_LAYERS any more. + (allocate_arrays): Always create new locale format. + + * locale/C-collate.c (_nl_C_LC_COLLATE): Update. + * locale/weightwc.h (findidx): Assume new locale format. + * string/strcoll.c (wcscoll): Remove local variables size, layers, + names. + * string/strxfrm.c (wcsxfrm): Likewise. + * posix/fnmatch_loop.c (internal_fnwmatch): Likewise. Change type of + local variable collseq to 'const char *'. + (SUFFIX): Don't use, don't undefine. + * posix/fnmatch.c: Remove SUFFIX definition. + * locale/programs/ld-collate.c (struct locale_collate_t): Remove + fields plane_size, plane_cnt, wcheads, wcseqorder. Rename + wcheads_3level to wcheads, rename wcseqorder_3level to wcseqorder. + (collate_finish): Always create new locale format. Remove local + variables min_total, act_size. + (collate_output): Always create new locale format. Remove local + variables table_size, names, tablewc. Rename tablewc_3level to + tablewc. + +2000-08-31 Bruno Haible + + * locale/programs/ld-collate.c (obstack_int32_grow, + obstack_int32_grow_fast): New inline functions. + (output_weightwc, collate_output): Use them where possible. + +2000-09-01 Ulrich Drepper + + * libio/libio.h (_IO_flockfile, _IO_funlockfile): Fix typo in last + patch (_mode -> _flags). + + * libio/Makefile (headers): Add stdio_ext.h. + (routines): Add __fbufsize, __freading, __fwriting, __freadable, + __fwritable, __flbf, __fpurge, __fpending, and __fsetlocking. + * libio/Versions [libc] (GLIBC_2.2): Add __fbufsize, __freading, + __fwriting, __freadable, __fwritable, __flbf, __fpurge, __fpending, + __fsetlocking, and _flushlbf. + * libio/__fbufsize.c: New file. + * libio/__flbf.c: New file. + * libio/__fpending.c: New file. + * libio/__fpurge.c: New file. + * libio/__freadable.c: New file. + * libio/__freading.c: New file. + * libio/__fsetlocking.c: New file. + * libio/__fwritable.c: New file. + * libio/__fwriting.c: New file. + * libio/stdio_ext.h: New file. + * libio/genops.c (_IO_flush_all_linebuffered): Add alias _flushlbf. + * libio/libio.h (_IO_USER_LOCK): Define. + [_IO_MTSAFE_IO] (_IO_flockfile, _IO_funlockfile): Add macros which + test _IO_USER_LOCK flag first. + + * iconv/gconv_open.c (__gconv_open): Set res to __GCONV_NOMEM is + malloc fails. + +2000-09-01 Andreas Jaeger + + * sysdeps/unix/sysv/linux/bits/fcntl.h: Always fail. + + * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h: New file. + +2000-08-31 Ulrich Drepper + + * math/Makefile (tests): Add tst-defintions. + * math/tst-definitions.c: New file. + + * stdlib/Makefile (headers): Add bits/wchar.h. + * sysdeps/unix/sysv/linux/i386/bits/wchar.h: New file. + * sysdeps/generic/bits/wchar.h: New file. + * sysdeps/generic/stdint.h: Include . Use values in this + file to define WCHAR_MIN and WCHAR_MAX. + Change UINT*8_MAX and UIN*16_MAX value to type int. + * wcsmbs/wchar.h: Include . Use values in this + file to define WCHAR_MIN and WCHAR_MAX. + * sysdeps/alpha/fpu/bits/mathdef.h: Make FP_ILOGB0 and FP_ILOGBNAN + int values. + * sysdeps/arm/fpu/bits/mathdef.h: Likewise. + * sysdeps/generic/bits/mathdef.h: Likewise. + * sysdeps/i386/fpu/bits/mathdef.h: Likewise. + * sysdeps/m68k/fpu/bits/mathdef.h: Likewise. + * sysdeps/powerpc/fpu/bits/mathdef.h: Likewise. + * sysdeps/sparc/fpu/bits/mathdef.h: Likewise. + * locale/locale.h (struct lconv): Add __ prefix to the new members + if not C99. + * sysdeps/generic/inttypes.h: Remove unnecessary imaxabs and + imaxdiv optimizations. + * sysdeps/wordsize-32/lldiv.c: Add hack to make alias work. + * sysdeps/wordsize-64/ldiv.c: Likewise. + * sysdeps/alpha/fpu/bits/fenv.h: Change type of FE_*_ENV macros to + const fenv_t*. + * sysdeps/generic/bits/fenv.h: Likewise. + * sysdeps/i386/fpu/bits/fenv.h: Likewise. + * sysdeps/ia64/bits/fenv.h: Likewise. + * sysdeps/m68k/fpu/bits/fenv.h: Likewise. + * sysdeps/mips/bits/fenv.h: Likewise. + * sysdeps/s390/fpu/bits/fenv.h: Likewise. + * sysdeps/sparc/fpu/bits/fenv.h: Likewise. + Reported by Joseph S. Myers . + + * inet/rcmd.c: Use *stat64 instead of *stat internally. + * inet/ruserpass.c: Likewise. + * catgets/open_catalog.c: Likewise. + * intl/loadmsgcat.c: Likewise. + * io/getdirname.c: Likewise. + * locale/loadlocale.c: Likewise. + * misc/getusershell.c: Likewise. + * stdlib/canonicalize.c: Likewise. + * sysdeps/posix/euidaccess.c: Likewise. + * sysdeps/posix/isfdtype.c: Likewise. + * sysdeps/posix/posix_fallocate.c: Likewise. + * sysdeps/posix/tempname.c: Likewise. + * sysdeps/unix/grantpt.c: Likewise. + * sysdeps/unix/opendir.c: Likewise. + * sysdeps/unix/sysv/linux/fstatvfs.c: Likewise. + * sysdeps/unix/sysv/linux/internal_statvfs.c: Likewise. + * sysdeps/unix/sysv/linux/ptsname.c: Likewise. + * sysdeps/unix/sysv/linux/statvfs.c: Likewise. + * sysdeps/unix/sysv/linux/ttyname.c: Likewise. + * sysdeps/unix/sysv/linux/ttyname_r.c: Likewise. + * sysvipc/ftok.c: Likewise. + * time/getdate.c: Likewise. + + * time/getdate.c: Add extra access test. + +2000-08-31 Ulrich Drepper + + * version.h (VERSION): Bump to 2.1.93. + + * sysdeps/unix/sysv/linux/powerpc/Dist: Add fe_nomask.c. + * sysdeps/unix/sysv/linux/i386/Dist: Add olddirent.h. + + * intl/Makefile (tests): Depend in mtrace-tst-gettext. + Make this a new rule depending on tst-gettext.out and run mtrace. + * intl/tst-gettext.c: Call mtrace. + * intl/tst-gettext.sh: Put MALLOC_TRACE in environment of tst-gettext. + + * elf/dl-reloc.c: Add a few more __builtin_expect. + + * configure.in: Remove --with-gettext option. + + * intl/dcigettext.c (free_mem): Correct freeing of + _nl_domain_bindings list. + + * sysdeps/generic/setenv.c (free_mem): New function. Free all + allocated memory. + + * intl/locale.alias: Add aliases for bokmal and nynorsk. + + * locale/iso-639.def: Fix 639-1 code for Bokmal. + + * stdio-common/itoa-digits.c: Move upper digits to... + * stdio-common/itoa-udigits.c: ...here. New file. + * stdio-common/Makefile (routines): Add itoa-udigits. + + * sysdeps/i386/dl-machine.h (elf_machine_rel): For the version to + relocate ld.so don't add supprt for relocations which should not + appear in ld.so. + + * malloc/malloc.c (ptmalloc_init): Optimize a bit by not calling + __secure_getenv. Instead test __libc_enable_secure once. + + * io/pwd.c (main): Provide a good example, use *_unlocked function. + +2000-08-30 Ulrich Drepper + + * iconv/gconv_conf.c (insert_module): Take extra parameter to decide + whether the new record should be freed if it's a duplicate. + (add_module): Adjust insert_module call. + (__gconv_read_conf): Likewise. + * iconvdata/Makefile (generated): Add tst-loading.mtrace and + mtrace-tst-loading. + (tests): Make $(objpfx)mtrace-tst-loading a dependency. Add rule. + + * sysdeps/generic/ldsodefs.h: Add declaration for _dl_all_dirs and + _dl_all_init_dirs. + * include/link.h (struct r_search_path_struct): New. + (struct link_map): Use it for l_rpath_dirs and l_runpath_dirs. + * elf/Versions [ld] (GLIBC_2.2): Add _dl_all_dirs and + _dl_all_init_dirs. + * elf/dl-close.c (_dl_close): Free l_rpath_dirs and l_runpath_dirs. + * elf/dl-libc.c (free_mem): Free _dl_all_dirs list except elements + added at startup time. + * elf/dl-load.c: Fix memory handling. r_search_path_struct + contains element to remember fact that we can free memory. + (all_dirs): Renamed to _dl_all_dirs. Made global. + (_dl_init_all_dirs): New variable. + (fillin_rpath): Save one malloc call. + (decompose_rpath): Change interface. New first parameter points to + r_search_path_struct. + (_dl_init_paths): Adjust for changes. Mark all memory as not + deletable. Set _dl_init_all_paths value. + (open_path): Remove may_free_dirs parameter. r_search_path_elem *** + parameter replaced with r_search_path_struct *. Information about + freeing now contained in r_search_path_struct. + (_dl_map_object): Adjust for above changes. + + * elf/dl-open.c (dl_open_worker): Change format of debug info a bit. + + * elf/dl-load.c (fillin_rpath): Only check for trusted directories + when adding new entries. + + * elf/dl-load.c (fillin_rpath): Make local copy of where string + since the object being loaded can be unloaded. + + * iconvdata/Makefile (tests): Add tst-loading. + * iconvdata/tst-loading.c: New file. + +2000-08-29 Bruno Haible + + * stdio-common/vfscanf.c (_IO_vfscanf): Back out last ungetc change. + When comparing a char with an int, always cast the char to + 'unsigned char'. New macro ungetc_not_eof, to avoid warnings when + compiling with -funsigned-char. Use UCHAR_MAX+1 instead of UCHAR_MAX. + +2000-08-30 Ulrich Drepper + + * time/strftime.c (my_strftime): Add compatibility code for use + outside glibc. Patch by Jim Meyering . + + * sysdeps/posix/getaddrinfo.c (gaih_local): uname does not everywhere + return 0 for success but always < 0 on failure. + + * nss/getXXbyYY_r.c: Define result to *result before including + digits_dots.c. + +2000-08-30 Andreas Jaeger + + * math/gen-libm-test.pl (parse_ulps): Remove extra \. + +2000-08-29 Ulrich Drepper + + * iconvdata/big5hkscs.c: Rewritten. Regenerate data from the + official file. + * iconvdata/TESTS: Add BIG5HKSCS entry. + * iconvdata/testdata/BIG5HKSCS: New file. + * iconvdata/testdata/BIG5HKSCS..UTF8: New file. + + * iconvdata/big5.c (BODY for FROM_LOOP): Remove condition which is + always true. + + * libio/iogetline.c: Set mode before the loop in case n==0. + * libio/iogetwline.c: Likewise. + +2000-08-29 H.J. Lu + + * libio/fileops.c (new_do_write): Check fp->_mode <= 0 instead + of fp->_mode < 0. + (_IO_new_file_overflow): Likewise. + * libio/genops.c (_IO_flush_all): Likewise. + * libio/ioftell.c (_IO_ftell): Likewise. + +2000-08-29 Akira Higuchi + + * iconv/gconv_db.c (increment_counter): Reset __init_fct, __fct, + and __end_fct fields of struct __gconv_step. + * iconv/Makefile (tests): Add iconv-bug2. + * iconv/iconv-bug2.c: New file. + + * iconvdata/euc-kr.c (BODY for FROM_LOOP): Pass 'inend - inptr' + instead of 'inptr - inend' to ksc5601_to_ucs4. + + * iconvdata/sjis.c (BODY for FROM_LOOP): Allow 0x7f character. + + * iconvdata/iso-2022-cn.c (BODY for FROM_LOOP): If an incomplete + character or shift sequence is found at the end of the input + string, return__GCONV_INCOMPLETE_INPUT instead of + __GCONV_EMPTY_INPUT. + * iconvdata/iso-2022-jp.c (BODY for FROM_LOOP): Likewise. + * iconvdata/iso-2022-kr.c (BODY for FROM_LOOP): Likewise. + + * iconvdata/iso-2022-jp.c (BODY for FROM_LOOP): Return + __GCONV_ILLEGAL_INPUT for 8bit characters. + +2000-08-29 Ulrich Drepper + + * signal/signal.h (sigpause): Move __THROW before __asm__. + + * inet/rcmd.c (__checkhost_sa): If getnameinfo succeeds but the + names don't match don't return. + Patch by Olaf Kirch . + +2000-08-28 Ulrich Drepper + + * time/strftime.c (my_strftime): Handle # flag for %b as well. + +2000-08-27 H.J. Lu + + * posix/Makefile (otherlibs): Add for building with static-nss + for "make check". + +2000-08-28 Ulrich Drepper + + * libio/stdio.h: Add fmemopen prototype. + +2000-08-25 Andreas Jaeger + + * libio/Makefile (routines): Add fmemopen. + (tests): Add test-fmemopen. + * libio/Versions: Add fmemopen with version GLIBC_2.2. + * libio/test-fmemopen.c: New file. + * libio/fmemopen.c: New file. + Patches by Hanno Mueller . + +2000-08-28 Ulrich Drepper + + * sysdeps/unix/sysv/linux/ia64/bits/sigstack.h: Prevent double + inclusion. Patch by Jes Sorensen . + + * locale/localeinfo.h (LIMAGIC): Change base number to 0x20000828 + to avoid crashing statically linked applications. + +2000-08-27 Bruno Haible + + * string/strxfrm.c (strxfrm, wcsxfrm): Include . + If nrules == 0 and srclen < n, copy only srclen + 1 characters. + + * sysdeps/generic/getdomain.c (getdomainname): Include . + If the result is fits in the buffer, copy only as many bytes as needed. + + * sysdeps/generic/_strerror.c (__strerror_r): Don't zero-fill the + buffer after copying numbuf into it. + * sysdeps/mach/_strerror.c (__strerror_r): Likewise. + +2000-08-27 Bruno Haible + + * posix/confstr.c (confstr): When string_len > len, NUL-terminate + the result. When string_len < len, don't clear the rest of the buffer. + +2000-08-27 Bruno Haible + + Support for new LC_COLLATE format. + * locale/coll-lookup.h: New file. + * locale/weightwc.h (findidx): When size == 0, call + collidx_table_lookup. + * wcsmbs/wcscoll.c: Include coll-lookup.h. + * wcsmbs/wcsxfrm.c: Likewise. + * posix/fnmatch.c: Likewise. + * posix/fnmatch_loop.c (internal_fnwmatch): When size == 0, call + collseq_table_lookup. + * locale/programs/3level.h: New file. + * locale/programs/ld-ctype.c: (wcwidth_table, wctrans_table): Define + by including "3level.h". + * locale/programs/ld-collate.c (wchead_table, collidx_table, + collseq_table): New types, defined by including "3level.h". + (locale_collate_t): New wcheads_3level, wcseqorder_3level fields. + (encoding_mask, encoding_byte): Remove. + (utf8_encode): Use simple shifts instead. + (collate_finish): When !oldstyle_tables, set plane_size and plane_cnt + to 0, and initialize and fill wcheads_3level and wcseqorder_3level. + (collate_output): New local variable tablewc_3level. When + !oldstyle_tables, set table_size to 0 and names to NULL and fill + tablewc_3level instead of tablewc. Change format of TABLEWC and + COLLSEQWC entries written to the file. + * locale/C-collate.c (collseqwc): Change format. + (_nl_C_LC_COLLATE): Set HASH_SIZE and HASH_LAYERS to 0, change format + of COLLSEQWC. + * locale/Makefile (distribute): Add coll-lookup.h, programs/3level.h. + +2000-08-27 Bruno Haible + + * locale/programs/ld-ctype.c (MAX_CHARNAMES_IDX): New macro. + (locale_ctype_t): New charnames_idx field. + (ctype_startup): Initialize charnames_idx field. + (find_idx): Speed up dramatically by using charnames_idx inverse table. + +2000-08-27 Bruno Haible + + * locale/C-ctype.c: Switch to new locale format. + (_nl_C_LC_CTYPE_names): Remove array. + (STRUCT_CTYPE_CLASS): New macro. + (_nl_C_LC_CTYPE_class_{upper,lower,alpha,digit,xdigit,space,print, + graph,blank,cntrl,punct,alnum}, _nl_C_LC_CTYPE_map_{toupper,tolower}): + New three-level tables. + (_nl_C_LC_CTYPE_width): Change from array to three-level table. + (_nl_C_LC_CTYPE): Fix nstrings value. Set HASH_SIZE and HASH_LAYERS + to 0. Change WIDTH format. Set CLASS_OFFSET and MAP_OFFSET. Add + 12 class tables and 2 map tables at the end. + * ctype/ctype-info.c (_nl_C_LC_CTYPE_names): Remove declaration. + (_nl_C_LC_CTYPE_class_{upper,lower,alpha,digit,xdigit,space,print, + graph,blank,cntrl,punct,alnum}, _nl_C_LC_CTYPE_map_{toupper,tolower}): + New declarations. + (b): Remove trailing semicolon. + (__ctype_names, __ctype_width): Don't initialize. + (__ctype32_wctype, __ctype32_wctrans, __ctype32_width): Initialize. + +2000-08-27 Bruno Haible + + * elf/dl-load.c (open_path): Add a argument telling whether *dirsp + is guaranteed to be allocated with the same malloc() and may be + passed to free(). + (_dl_map_object): Update open_path calls. If rtld_search_dirs has + been set to empty by an earlier open_path call, don't pass it again. + +2000-08-28 Ulrich Drepper + + * include/libintl.h: Include since libintl.h doesn't if + we are not optimizing. + + * sysdeps/unix/sysv/linux/powerpc/sysdep.h: Protect against double + inclusion. + + * stdio-common/vfscanf.c (ungetc): Cast c to signed char first to + really match EOF. + Patch by Franz Sirl . + +2000-08-28 Andreas Jaeger + + * sysdeps/i386/fpu/libm-test-ulps: Tweaks for AMD Athlon. + +2000-08-28 Mark Kettenis + + * sysdeps/mach/hurd/getpeername.c (__getpeername): Renamed from + getpeername. Use ISO C style function definition. + (getpeername): Provide weak alias. + * sysdeps/mach/hurd/setrlimit.c (__setrlimit): Renamed from + setrlimit. Use ISO C style function definition. + (setrlimit): Provide weak alias. + +2000-08-28 Martin Schwidefsky + + * shlib-versions: Add a rule for S/390 to the libm version list. + * sysdeps/s390/Versions: New file. + * sysdeps/unix/sysv/linux/s390/Dist: Add oldgetrlimit64.c. + * sysdeps/unix/sysv/linux/s390/Makefile: Add oldgetrlimit64. + * sysdeps/unix/sysv/linux/s390/Versions: New file. + * sysdeps/unix/sysv/linux/s390/alphasort64.c: New file. + * sysdeps/unix/sysv/linux/s390/chown.c: New file. + * sysdeps/unix/sysv/linux/s390/fxstat.c: New file. + * sysdeps/unix/sysv/linux/s390/getdents64.c: New file. + * sysdeps/unix/sysv/linux/s390/getrlimit.c: New file. + * sysdeps/unix/sysv/linux/s390/getrlimit64.c: New file. + * sysdeps/unix/sysv/linux/s390/lxstat.c: New file. + * sysdeps/unix/sysv/linux/s390/oldgetrlimit64.c: New file. + * sysdeps/unix/sysv/linux/s390/readdir64.c: New file. + * sysdeps/unix/sysv/linux/s390/readdir64_r.c: New file. + * sysdeps/unix/sysv/linux/s390/scandir64.c: New file. + * sysdeps/unix/sysv/linux/s390/setrlimit.c: New file. + * sysdeps/unix/sysv/linux/s390/syscalls.list: New file. + * sysdeps/unix/sysv/linux/s390/versionsort64.c: New file. + * sysdeps/unix/sysv/linux/s390/xstat.c: New file. + +2000-08-28 Ulrich Drepper + + * sysdeps/unix/sysv/linux/powerpc/Makefile [$(subdir)==csu] + (CFLAGS-initfini.s): Add -DWEAK_GMON_START. + + * elf/Versions [ld] (GLIBC_2.2): Export _dl_debug_files. + * elf/dl-close.c (_dl_close): Print debug message if object is not + unloaded. + * elf/dl-open.c (dl_open_worked): Print message about opencount before + returning to caller. + + * po/zh.po: Renamed to... + * po/zh_TW.po: ...this. + +2000-08-27 Geoff Keating + + * sysdeps/powerpc/fpu/feenablxcpt.c: Correct bogus checkin. + + * sysdeps/powerpc/fpu/fedisblxcpt.c: New file. + * sysdeps/powerpc/fpu/feenablxcpt.c: New file. + * sysdeps/powerpc/fpu/fegetexcept.c: New file. + * sysdeps/unix/sysv/linux/powerpc/fe_nomask.c: New file. + +2000-08-27 Ulrich Drepper + + * locale/programs/ld-collate.c (insert_weights): Also update + backpointer of next element. + (collate_read): Allow definition of new collation symbols in stage 2. + Symbol after reorder-after can be UCS4 value. + Allow reordering of collation symbols and elements. + Do not only move reorder entry in new position. Instead call + insert_weight to do this and read the weights. + + * locale/findlocale.c (free_mem): Add cast to avoid warning. + + * intl/dcigettext.c (DCIGETTEXT): Remove _nl_find_language in code + to determine invalid locale name. + * locale/findlocale.c (_nl_find_locale): Likewise. + + * posix/annexc.c: Correct test for unavailable feature. + + * sysdeps/unix/sysv/linux/i386/sys/io.h (outw): Fix __INLINE -> + __inline. + +2000-08-26 Ulrich Drepper + + * sysdeps/unix/sysv/linux/powerpc/syscalls.list: Add getdents64 + syscall. + + * sysdeps/unix/sysv/linux/arm/Makefile [$(subdir)==resource] + (sysdep_routines): Add oldgetrlimit64. + + * elf/Makefile (distribute): Add unloadmod.c, reldepmod1.c, + reldepmod2.c, reldepmod3.c, and reldepmod4.c. + (tests): Add unload, reldep, reldep2, and reldep3. + (modules-names): Add unloadmod, reldepmod1, reldepmod2, reldepmod3, + and reldepmod4. + Add rules to build and run unload, reldep, reldep2, and reldep3. + * elf/dl-lookup.c (_dl_lookup_symbol): Add new parameter explicit. + Don't create relocation dependency if it is nonzero. + (_dl_lookup_symbol_skip): Remove relocation dependency stuff. This + can never happen here. + (_dl_lookup_versioned_symbol): Add new parameter explicit. + Don't create relocation dependency if it is nonzero. + (_dl_lookup_versioned_symbol_skip): Remove relocation dependency + stuff. This can never happen here. + * sysdeps/generic/ldsodefs.h: Change prototypes. + * elf/dl-reloc.c (RESOLVE_MAP): Pass 0 in explicit parameter to + _dl_lookup_up and _dl_lookup_versioned_symbol. + (RESOLV): Likewise. + * elf/dl-runtime.c (fixup): Likewise. + (profile_fixup): Likewise. + * elf/dl-libc.c (do_dlsym): Pass 1 in explicit parameter to + _dl_lookup_symbol. + * elf/dl-symbol.c (_dl_symbol_value): Likewise. + * elf/rtld.c (dl_main): Likewise. + * elf/dl-sym.c (_dl_sym): Pass 1 in explicit parameter to + _dl_lookup_symbol if handle is not RTLD_DEFAULT. Always compute + and pass down the caller map. + (_dl_vsym): Likewise. + * elf/reldep.c: New file. + * elf/reldep2.c: New file. + * elf/reldep3.c: New file. + * elf/reldepmod1.c: New file. + * elf/reldepmod2.c: New file. + * elf/reldepmod3.c: New file. + * elf/reldepmod4.c: New file. + * elf/unload.c: New file. + * elf/unloadmod.c: New file. + + * elf/do-lookup.h: Remove unused undef_name parameter. + * elf/dl-lookup.c: Adjust callers. + +2000-08-25 Ulrich Drepper + + * iconv/gconv_trans.c (__gconv_transliterate): Pass NULL instead of + irreversible in recursive call of conversion function to signal that + no error handling is wanted. + * iconv/loop.c (ignore_errors_p): irreversible must be != NULL, too. + (STANDARD_ERR_HANDLER): Don't do anything if irreversible == NULL. + * iconv/skeleton.c (lirreversiblep): New variable. Set to NULL is + recursive error handling call, otherwise to &lirreversible. Use it + for calls to conversion functions. + * iconv/gconv_simple.c (ucs4_internal_loop): Don't handle errors when + transliterating. + (ucs4_internal_loop_unaligned): Likewise. + (ucs4le_internal_loop): Likewise. + (ucs4le_internal_loop_unaligned): Likewise. + +2000-08-25 Greg McGary + + * sysdeps/i386/memchr.S: Check high bound against chars + actually scanned. + * sysdeps/i386/memcmp.S: Likewise. + * sysdeps/i386/stpncpy.S: Adjust high-bound check to + account for pointers that lie one beyond end-of-buffer. + +2000-08-25 Ulrich Drepper + + * elf/Makefile (LDFLAGS-nodelete): Add -rdynamic. + * elf/nodelete.c (fini_ran): New global variable. + (do_test): Before every dlclose call clear fini_ran and test + afterwards that it is not set by the destructors. + * elf/nodelmod1.c: Add destructor which sets fini_ran. + * elf/nodelmod2.c: Likewise. + * elf/nodelmod4.c: Likewise. + +2000-08-21 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/syscalls.list: Add getrlimit and + getrlimit to the list. + +2000-08-18 Jes Sorensen + + * sysdeps/ia64/Implies: gcc now has support for the Intel 80 bit + long double format so use ldbl-96 instead of ldbl-128. + +2000-08-25 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/mmap.S (__mmap): Return -EINVAL + even if bits 10 a 11 are non-zero. + * sysdeps/unix/sysv/linux/i386/mmap64.S (__mmap64): Likewise. + + * Makeconfig: Ensures the soversions.mk part of Makefile gets + included before building gnu/lib-names.h + Patch by Maciej W. Rozycki . + + * elf/dl-close.c (_dl_close): Don't run destructors of objects + marked DF_1_NODELETE. + + * sysdeps/posix/system.c (__libc_system): We cannot use vfork here + since we call sigaction in the child. + +2000-08-25 Andreas Jaeger + + * iconvdata/Makefile ($(objpfx)bug-iconv1.out): Depend on + gconv-modules. + +2000-08-25 Andreas Jaeger + + * manual/arith.texi (Control Functions): Clarify possible + arguments. Closes PR libc/1856. + +2000-08-24 H.J. Lu + + * stdio-common/Makefile (tests): Don't do it for cross compiling. + * malloc/Makefile (tests): Likewise. + +2000-08-24 Ulrich Drepper + + * iconvdata/unicode.c (gconv_init): Correct test for direction. + +2000-08-24 Andreas Jaeger + + * malloc/Makefile (extra-objs): Fix last patch, build memusagestat + only if LIBGD is available. + +2000-08-24 Ulrich Drepper + + * resolv/res_send.c (res_ourserver_p): Cleanup the type mess to avoid + problems with now restrict parameter types. + (convaddr4to6): Likewise. + +2000-08-24 Denis Joseph Barrow + + * sysdeps/s390/fpu/fedisblxcpt.c: New file. + * sysdeps/s390/fpu/feenablxcpt.c: New file. + * sysdeps/s390/fpu/fegetexcept.c: New file. + * sysdeps/s390/fpu/fenv_libc.h: Some reordering, new definition + FPC_VALID_MASK. + +2000-08-24 Andreas Jaeger + + * malloc/Makefile (extra-objs): Add memusagestat.o. + (generated): Added memusage and memusagestat for make clean. + + * libio/tst_putwc.c (do_test): Delete temporary file. + Move inclusion of test-skeleton to front to have prototype for + add_temp_file. + + * posix/Makefile (generated): Add wordexp-tst.out. + +2000-08-24 Ulrich Drepper + + * resolv/res_hconf.c (free_mem): Remove not needed if. + + * time/tzset.c (free_mem): New function. + * string/strsignal.c (free_mem): New function. + * inet/inet_ntoa.c (free_mem): New function. + * sunrpc/clnt_perr.c (free_mem): New function. + +2000-08-24 Andreas Jaeger + + * sysdeps/unix/syscalls.list: Use __setrlimit as strong name. + * sysdeps/unix/sysv/syscalls.list: Likewise. + + * posix/unistd.h: Move internal prototypes from here ... + * include/unistd.h: ... to here. + + * sysvipc/sys/shm.h: Add const attribute to __getpagesize. + +2000-08-24 Ulrich Drepper + + * grp/initgroups.c (initgroups): Deallocate groups array. + Reported by jani.raiha@sonera.com [PR libc/1868]. + + * sysdeps/s390/Dist: Add fpu/fenv_libc.h. + * sysdeps/alpha/Dist: Likewise. + +2000-08-23 Ulrich Drepper + + * crypt/md5-crypt.c (free_mem): Fix typo (constructor -> + destructor). Reported by Solar Designer . + + * iconv/gconv_conf.c (add_module): Remove some unneeded code to + avoid adding double slashes. + +2000-08-23 Jakub Jelinek + + * dirent/dirent.h (alphasort, versionsort): Move __attribute_pure__ + out of the __REDIRECT macro. + +2000-08-23 Ulrich Drepper + + * stdio-common/vfscanf.c: Add %F format support. + + * locale/programs/ld-ctype.c (ctype_output): Make sure + _NL_CTYPE_TRANSLIT_DEFAULT_MISSING_LEN and + _NL_CTYPE_TRANSLIT_IGNORE_LEN are aligned. + (ctype_read): Enable returning of wide character strings for reading + transliteration information. + +2000-08-23 Andreas Jaeger + + * sysdeps/unix/sysv/linux/i386/sys/io.h (_EXTERN_INLINE): Remove. + Use static __inline instead of _EXTERN_INLINE. + + * misc/sys/select.h: Move prototypes of __select from here ... + * include/sys/select.h: ... to here. + + * socket/sys/socket.h: Move prototypes of __send and __connect + from here.... + * include/sys/socket.h: ... to here. + + * locale/programs/ld-ctype.c (ctype_read): Fix parameter for + lr_error. + +2000-08-23 Jakub Jelinek + + * sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list: Use + __setrlimit as strong name. Takes only 2 arguments. + + * sysdeps/unix/sysv/linux/sh/syscalls.list: __syscall_setrlimit + takes only 2 arguments. + +2000-08-23 Martin Schwidefsky + + * sysdeps/s390/__longjmp.c: Add __ to JB_GPR*. + + * sysdeps/s390/bits/setjmp.h: Add __ to JB_GPR* defines. + +2000-08-23 Ulrich Drepper + + * locale/programs/ld-ctype.c (ctype_read): Allow more than one + default_missing character being specified, pick the first + representable. + +2000-08-23 Andreas Jaeger + + * include/wchar.h: Add some pure attributes. + + * time/time.h: Add const attribute for dysize. + + * include/stdlib.h: Add malloc attribute to __posix memalign. + + * stdlib/stdlib.h: Add some pure and malloc attributes. + * wcsmbs/wchar.h: Likewise. + + * dirent/dirent.h: Add some pure attributes. + * include/dirent.h: Likewise. + +2000-08-23 Jakub Jelinek + + * inet/netinet/in.h (struct in6_addr): Don't enforce 64bit alignment + on 64bit arches. + +2000-08-22 Ulrich Drepper + + * iconvdata/iso-2022-jp.c: In conversion to ISO-2022-JP, add two + missing buffer size checks. + +2000-08-23 Andreas Jaeger + + * sysdeps/unix/sysv/linux/alpha/syscalls.list: Use __setrlimit as + strong name. + * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. + + * sysdeps/unix/sysv/linux/dl-osinfo.h: Include "kernel-features.h", + otherwise __LINUX_KERNEL_VERSION might not be defined. + (MIN): Define if not already defined. + +2000-08-22 Ulrich Drepper + + * stdio-common/vfprintf.c: Handle %F format. + * stdio-common/printf-parse.h (parse_one_spec): Likewise. + Reported by Joseph S. Myers . + + * stdio-common/tstdiomisc.c: Add test for %F printf format. + + * po/zh.po: New file. + + * iconvdata/sjis.c: In conversion from UCS4, correct test for + enough room in target buffer. + Patch by KUSANO Takayuki [PR libc/1865]. + * iconvdata/bug-iconv1.c: New file. + * iconvdata/Makefile (tests): Add bug-iconv1. + + * locale/iso-4217.def: Update entry for Nicaragua. + +2000-08-22 Mark Kettenis + + * hurd/hurdsig.c: Rearrange headers a bit. + (_hurdsig_init): Block until _hurd_msgport_thread is initialized + when cthreads is being used. + +2000-08-22 Ulrich Drepper + + * elf/Makefile (distribute): Add dl-osinfo.h. + * sysdeps/generic/dl-osinfo.h: New file. + * sysdeps/unix/sysv/linux/dl-osinfo.h: New file. + * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Use DL_SYSDEP_OSCHECK + if defined. + * sysdeps/unix/sysv/linux/init-first.c: Perform kernel version test + only for !SHARED case. Get the code from dl-osinfo.h. + + * stdlib/random_r.c: Cleanups. + * stdlib/tst-random.c: New file. + * stdlib/Makefile (tests): Add tst-random. + Patches by Michael Fischer . + +2000-08-21 Martin Schwidefsky + + * sysdeps/unix/sysv/linux/s390/getmsg.c: Remove. + * sysdeps/unix/sysv/linux/s390/getpmsg.c: Remove. + * sysdeps/unix/sysv/linux/s390/putmsg.c: Remove. + * sysdeps/unix/sysv/linux/s390/putpmsg.c: Remove. + +2000-08-22 Jakub Jelinek + + * sysdeps/unix/sysv/linux/alpha/syscalls.list (sysctl): Remove. + * sysdeps/unix/sysv/linux/ia64/syscalls.list (sysctl): Remove. + (__syscall__sysctl): Add. + +2000-08-21 Andreas Jaeger + + * stdlib/tst-strtol.c: Add test for 0xFFFFFFFFFFFF00FF (from PR + libc/1864). + * stdlib/tst-strtoll.c: Likewise. + +2000-08-21 Ulrich Drepper + + * stdlib/random_r.c (__setstate_r): Also compute end_ptr + correctly. + (__initstate_r): Set errno on error. + (__random_r): Likewise. + (__setstate_r): Correct offset when computing + new rptr and fptr. Test for arg_state being NULL. + Reported by Michael Fischer . + + * posix/regex.h: Add macro definitions to allow compiling outside + glibc. + + * sysdeps/i370/Implies: Removed. + * sysdeps/mvs/Implies: Removed. + + * catgets/catgets.c (catopen): Filter out env_var values with / if + necessary. + + * locale/findlocale.c (_nl_find_locale): Move test for unusable + locale name after all getenvs. + + * configure.in: Allow sed versions like 3.02.8. + Patch by Rodrigo Barbosa . + +2000-08-21 Marko Myllynen + + * inet/netinet/icmp6.h: Add Mobile IPv6 extensions structures. + +2000-08-21 Ulrich Drepper + + * sysdeps/posix/getaddrinfo.c (gethosts): Handle TRY_AGAIN error + of gethostbyname2_r call. + + * intl/locale.alias: Add aliases for Korean. + +2000-08-21 Martin Schwidefsky + + * sysdeps/s390/__longjmp.c: Remove unused variable result. + * sysdeps/s390/fpu/bits/fenv.h: Move FPC_* definitions to fenv_libc.h. + * sysdeps/s390/fpu/fclrexcpt.c: Include fenv_libc.h instead of fenv.h. + * sysdeps/s390/fpu/fegetenv.c: New file. + * sysdeps/s390/fpu/fegetround.c: Include fenv_libc.h instead of fenv.h. + * sysdeps/s390/fpu/feholdexcpt.c: New file. + * sysdeps/s390/fpu/fenv_libc.h: New file. + * sysdeps/s390/fpu/fesetenv.c: New file. + * sysdeps/s390/fpu/fesetround.c: Include fenv_libc.h instead of fenv.h. + * sysdeps/s390/fpu/feupdateenv.c: New file. + * sysdeps/s390/fpu/fgetexcptflg.c: Reformatted. + * sysdeps/s390/fpu/fpu_control.h: Corrected header. + * sysdeps/s390/fpu/fraiseexcpt.c: New file. + * sysdeps/s390/fpu/fsetexcptflg.c: New file. + * sysdeps/s390/fpu/ftestexcept.c: New file. + * sysdeps/s390/fpu/libm-test-ulps: New file. + * sysdeps/s390/gmp-mparam.h: Add end of comment. + * sysdeps/s390/initfini.c: New file. + * sysdeps/unix/sysv/linux/s390/Dist: Add sys/procfs.h. + * sysdeps/unix/sysv/linux/s390/Makefile: Remove sys/reg.h. + * sysdeps/unix/sysv/linux/s390/bits/stat.h: New file. + * sysdeps/unix/sysv/linux/s390/lchown.c: New file. + * sysdeps/unix/sysv/linux/s390/sys/elf.h: Move elf definitions to + sys/procfs.h as proposed by Mark Kettenis. + * sysdeps/unix/sysv/linux/s390/sys/procfs.h: New file. + +2000-08-21 Andreas Jaeger + + * include/poll.h: Include include/sys/poll.h to get __poll + declaration. + + * io/sys/poll.h: Move __poll declaration from here... + * include/sys/poll.h: ...to here. + + * include/sys/socket.h (__getpeername): Add declaration. + + * include/wchar.h (__vswprintf): Add declaration. + + * include/stdio.h (__flockfile): Add declaration. + (__funlockfile): Likewise. + +2000-08-20 Ulrich Drepper + + * misc/sys/cdefs.h: Define __restrict_arr. + * include/sys/time.h: Add restrict where required by AGd4. + * inet/arpa/inet.h: Likewise. + * io/sys/stat.h: Likewise. + * io/sys/statvfs.h: Likewise. + * misc/search.h: Likewise. + * misc/sys/select.h: Likewise. + * posix/glob.h: Likewise. + * posix/regex.h: Likewise. + * posix/spawn.h: Likewise. + * posix/unistd.h: Likewise. + * rt/aio.h: Likewise. + * signal/signal.h: Likewise. + * socket/sys/socket.h: Likewise. + * stdlib/ucontext.h: Likewise. + * streams/stropts.h: Likewise. + * string/string.h: Likewise. + * time/time.h: Likewise. + * time/sys/time.h: Likewise. + + * posix/spawn.h: Add declarations for posix_spawnattr_getscheparam + and posix_spawnattr_setscheparam. + + * libio/stdio.h: Make cuserid prototype again available for all + XPG versions. + + * argp/argp-help.c: Unify use of function aliases to make more compact + PLT. + * include/libintl.h: Likewise. + * inet/rcmd.c: Likewise. + * intl/dcigettext.c: Likewise. + * libio/iofputws.c: Likewise. + * libio/iofputws_u.c: Likewise. + * libio/iogetwline.c: Likewise. + * libio/swprintf.c: Likewise. + * malloc/malloc.c: Likewise. + * nss/digits_dots.c: Likewise. + * posix/fnmatch.c: Likewise. + * posix/spawn_faction_addclose.c: Likewise. + * posix/spawn_faction_adddup2.c: Likewise. + * posix/spawn_faction_addopen.c: Likewise. + * posix/spawni.c: Likewise. + * posix/wordexp.c: Likewise. + * posix/spawni.c: Likewise. + * resolv/res_hconf.c: Likewise. + * resolv/res_init.c: Likewise. + * shadow/lckpwdf.c: Likewise. + * signal/sighold.c: Likewise. + * signal/sigrelse.c: Likewise. + * stdio-common/printf-parse.h: Likewise. + * stdio-common/printf-prs.c: Likewise. + * stdio-common/printf_fp.c: Likewise. + * stdio-common/vfprintf.c: Likewise. + * stdio-common/vfscanf.c: Likewise. + * stdlib/rpmatch.c: Likewise. + * sunrpc/create_xid.c: Likewise. + * sunrpc/key_call.c: Likewise. + * sysdeps/generic/setrlimit64.c: Likewise. + * sysdeps/generic/utmp_file.c: Likewise. + * sysdeps/generic/vlimit.c: Likewise. + * sysdeps/posix/posix_fallocate.c: Likewise. + * sysdeps/posix/posix_fallocate64.c: Likewise. + * sysdeps/posix/sigpause.c: Likewise. + * sysdeps/posix/sigset.c: Likewise. + * sysdeps/unix/grantpt.c: Likewise. + * sysdeps/unix/bsd/ualarm.c: Likewise. + * sysdeps/unix/sysv/linux/dl-origin.c: Likewise. + * sysdeps/unix/sysv/linux/getloadavg.c: Likewise. + * sysdeps/unix/sysv/linux/ttyname.c: Likewise. + * sysdeps/unix/sysv/linux/ulimit.c: Likewise. + * time/strftime.c: Likewise. + * wcsmbs/wcscoll.c: Likewise. + * wcsmbs/wcsxfrm.c: Likewise. + + * time/tst-getdate.c (main): Make error messages more human readable. + + * sysdeps/powerpc/fpu_control.h (_FPU_GETCW): Allow gcc to generate + postinc/predec instruction. + (_FPU_SETCW): Likewise. + Patch by Franz Sirl . + +2000-08-20 Andreas Jaeger + + * time/tst-getdate.c (main): Increase error in case of wrong + conversion. + Fix typo in test case. + +2000-08-20 Ulrich Drepper + + * ctype/ctype.h (isblank): Make available if ISO C99. + * wctype/wctype.h (iswblank): Make available if ISO C99. + * math/math.h (signgam): Don't make available if ISO C99. + * math/tgmath.h (tgamma): Renamed from gamma. + Patches by Joseph S. Myers . + + * intl/loadmsgcat.c (_nl_unload_domain): Also free conv_tab element. + Pretty printing. + * intl/plural.y (new_exp): Take number of optional parameters in + second parameter. Test for correct number of parameters and free + correctly in case of failure. Adjust all callers. + (yylex): Allow ';' as terminator character. + +2000-08-19 Ulrich Drepper + + * locale/lc-time.c (free_mem): New function. Free alt_digits and + walt_digits. + + * locale/findlocale.c (free_mem): Also free here->filename. + + * locale/loadlocale.c (_nl_unload_locale): Also free locale->name. + + * math/test-fenv.c (feenv_tests): Clear all exceptions before + first test. + (feexcp_nomask_test): Correct printf args. + (feexcp_mask_test): Likewise. + +2000-08-19 Andreas Jaeger + + * inet/tst-gethnm.c: Include string.h to provide prototype for + strcmp. + + * malloc/mtrace.pl (usage): Inform about --help. + +2000-08-19 Wolfram Gloger + + * malloc/malloc.c (new_heap): Try harder to get an aligned chunk of + size HEAP_MAX_SIZE. + +2000-08-19 Andreas Jaeger + + * shlib-versions: Remove libnss_db, libdb and libdb1. + +2000-08-19 Jakub Jelinek + + * sysdeps/unix/sysv/linux/alpha/readdir.c: Move... + * sysdeps/unix/sysv/linux/ia64/readdir.c: ...here and + * sysdeps/unix/sysv/linux/sparc/sparc64/readdir.c: ...here. + * sysdeps/unix/sysv/linux/alpha/readdir_r.c: Move... + * sysdeps/unix/sysv/linux/ia64/readdir_r.c: ...here and + * sysdeps/unix/sysv/linux/sparc/sparc64/readdir_r.c: ...here. + * sysdeps/unix/sysv/linux/alpha/readdir64.c: Remove. + * sysdeps/unix/sysv/linux/alpha/readdir64_r.c: Remove. + * sysdeps/unix/sysv/linux/alpha/getdents64.c: Remove. + * sysdeps/unix/sysv/linux/alpha/getdents.c: Only use for non-LFS + getdents. + * sysdeps/unix/sysv/linux/readdir64.c: Remove versioning. + * sysdeps/unix/sysv/linux/readdir64_r.c: Likewise. + +2000-08-18 Jakub Jelinek + + * include/glob.h (__glob64): Add prototype. + * sysdeps/generic/glob.c: If GLOB_ONLY_P is defined, only + define glob and glob_in_dir. + * sysdeps/unix/sysv/linux/i386/Versions: Add glob64@@GLIBC_2.2. + * sysdeps/unix/sysv/linux/arm/Versions: Likewise. + * sysdeps/unix/sysv/linux/powerpc/Versions: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/Versions: Likewise. + * sysdeps/unix/sysv/linux/i386/glob64.c: New file. + * sysdeps/unix/sysv/linux/arm/glob64.c: New file. + * sysdeps/unix/sysv/linux/powerpc/glob64.c: New file. + * sysdeps/unix/sysv/linux/sparc/sparc32/glob64.c: New file. + +2000-08-18 Jakub Jelinek + + * malloc/Makefile (memusage): libmemusage.so is installed in slibdir. + +2000-08-17 Andreas Jaeger + + * math/test-fenv.c (fe_single_test): New function. + (fe_env_tests): Use fe_single_test. + (feenable_test): New tests for feenable/fedisable and + fegetexcpetions. + (feexcp_mask_test): New function. + (feexcp_nomask_test): New function. + +2000-08-19 Richard Henderson + + * sysdeps/alpha/fpu/fenv_libc.h: New file. + * sysdeps/alpha/fpu/fclrexcpt.c: Use it. + * sysdeps/alpha/fpu/fegetenv.c: Likewise. + * sysdeps/alpha/fpu/fesetround.c: Likewise. + * sysdeps/alpha/fpu/fegetround.c: Likewise. + * sysdeps/alpha/fpu/fgetexcptflg.c: Likewise. + * sysdeps/alpha/fpu/fraiseexcpt.c: Likewise. + * sysdeps/alpha/fpu/ftestexcept.c: Likewise. + * sysdeps/alpha/fpu/fedisblxcpt.c: Likewise. Use the smaller mask. + * sysdeps/alpha/fpu/feenablxcpt.c: Likewise. + * sysdeps/alpha/fpu/fegetexcept.c: Likewise. + * sysdeps/alpha/fpu/feholdexcpt.c: Retain the SWCR_MAP bits. + * sysdeps/alpha/fpu/fesetenv.c: Likewise. + * sysdeps/alpha/fpu/feupdateenv.c: Likewise. + * sysdeps/alpha/fpu/fsetexcptflg.c: Likewise. + * sysdeps/alpha/fpu/bits/fenv.h (FE_DENORMAL): New. + (FE_MAP_DMZ, FE_MAP_UMZ, FE_NONIEEE_ENV): New. + +2000-08-19 Andreas Jaeger + + * elf/constload1.c: Include for puts prototype. + +2000-08-19 Ulrich Drepper + + * elf/Versions [ld] (GLIBC_2.2): Export _dl_check_map_versions. + * elf/dl-deps.c (_dl_map_object_deps): If object was dependency of + a dynamically loaded object remove old l_initfini list. + * elf/dl-libc.c (free_mem): Used as __libc_subfreeres callback to + remove some dynamically allocated memory blocks in the dynamic + loading data structures. + * elf/dl-load.c (add_name_to_object): Initialize dont_free to 0. + * elf/dl-open.c (dl_open_workder): Don't call _dl_check_all_versions. + Instead call _dl_check_map_versions only for the dependencies. + * elf/rtld.c: Avoid unneccessary initializations. Mark l_libname + information of initial objects as not free-able. + * sysdeps/generic/ldsodefs.h (struct libname_list): Add dont_free + element. + + * elf/filter.c: Call mtrace. + * elf/restest1.c: Likewise. Close the objects. + * elf/loadtest.c: Call mtrace. Check result of dlclose. Print more + debug information. + + * elf/constload1.c: Add comment explaining not freed memory. + +2000-08-18 Andreas Jaeger + + * sysdeps/unix/sysv/linux/mips/bits/stat.h: Add pads to show + alignment for structs stat and stat64. + Patch by Maciej W. Rozycki . + +2000-08-17 Ulrich Drepper + + * sysdeps/unix/sysv/linux/alpha/getdents.c: Remove special d_ino + handling. Patch by Richard Henderson . + + * nss/Versions: Remove libnss_db information. + +2000-08-16 Jakub Jelinek + + * sysdeps/sparc/fpu/fedisblxcpt.c: New file. + * sysdeps/sparc/fpu/feenablxcpt.c: New file. + * sysdeps/sparc/fpu/fegetexcept.c: New file. + * sysdeps/sparc/sparc64/fpu/e_sqrtl.c: New file. + + * sysdeps/sparc/sparc64/dl-machine.h: Subtract 4 .rela.plt entries + to match Solaris. + +2000-08-17 Ulrich Drepper + + * sysdeps/powerpc/fpu_control.h (_FPU_GETCW): Use type-correct code. + (_FPU_SETCW): Likewise. + Patch by Franz Sirl . + + * stdio-common/printf_fp.c: Fix chars_needed computation. + Patch by Greg McGary . + +2000-08-17 Jakub Jelinek + + * elf/dl-load.c (_dl_map_object): Don't crash if both loader and + _dl_loaded are NULL. + +2000-08-17 Jakub Jelinek + + * manual/arith.texi (feholdexcept): Returns 0 on success. + +2000-08-17 Andreas Jaeger + + * sysdeps/gnu/net/if.h (struct ifreq): Add ifru_newname. + (ifr_newname): New. + Reported by Andi Kleen . + +2000-08-17 Jakub Jelinek + + * sysdeps/alpha/fpu/fedisblxcpt.c: New file. + * sysdeps/alpha/fpu/feenablxcpt.c: New file. + * sysdeps/alpha/fpu/fegetexcept.c: New file. + +2000-08-16 Jakub Jelinek + + * sysdeps/unix/sysv/linux/xstatconv.c (xstat32_conv): Test sizes + of buf->st_ino and kbuf->st_ino, not __st_ino. + If _HAVE_STAT64___ST_INO is not defined, don't use __st_ino at all. + * sysdeps/unix/sysv/linux/getdents64.c: Change path in #include + directive so that only linux/getdents.c is used, not some + architecture specific one. + +2000-08-16 Jakub Jelinek + + * sysdeps/i386/fpu/fegetexcept.c (fegetexcept): Return currently + enabled, not disabled exceptions. + * sysdeps/i386/fpu/fedisblxcpt.c (fedisableexcept): Likewise. + * sysdeps/i386/fpu/feenablxcpt.c (feenableexcept): Likewise. + +2000-08-17 Greg McGary + + * Makeconfig (link-extra-libs-bounded): Strip `-bp' suffix + from test program name when constructing suffix for $(LDLIBS-*). + (bounded-thread-library): New variable. + * crypt/Makefile + [build-shared, build-static] (libcrypt-dep): Remove variable. + ($(addprefix $(objpfx),$(tests))): Consolidate individual dependencies. + [build-bounded] ($(tests:%=$(objpfx)%-bp)): Add dependencies. + * linuxthreads/Makefile (libpthread, librt): Remove variables. + (librt-tests): Add variable. (tests): Use it. + [build-shared, build-static] + ($(addprefix $(objpfx),$(tests)), + $(addprefix $(objpfx),$(librt-tests))): + Consolidate individual dependencies. + [build-bounded] + ($(tests:%=$(objpfx)%-bp), $(librt-tests:%=$(objpfx)%-bp)): + Add dependencies. + * math/Makefile (LDLIBS-*): Remove variables (they are redundant). + [build-bounded] ($(tests:%=$(objpfx)%-bp)): Add dependencies. + * misc/Makefile + [build-bounded] ($(objpfx)tst-tsearch-bp): Add dependencies. + * rt/Makefile + [build-shared, build-static] + ($(addprefix $(objpfx),$(tests))): Consolidate individual dependencies. + [build-bounded] ($(tests:%=$(objpfx)%-bp)): Add dependencies. + +2000-08-17 Greg McGary + + * sysdeps/generic/bp-checks.h: s/\(CHECK\w+\)opt/\1_NULL_OK/ + * sysdeps/unix/make-syscalls.sh: Likewise. + * sysdeps/unix/sysv/linux/shmctl.c: Likewise. + * sysdeps/unix/sysv/linux/sigprocmask.c: Likewise. + * sysdeps/unix/sysv/linux/ia64/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/ia64/sigprocmask.c: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c: Likewise. + +2000-08-17 Greg McGary + + * sysdeps/i386/fpu/s_frexp.S: Check bounds. + Wrap extern symbols in BP_SYM (). + * sysdeps/i386/fpu/s_frexpf.S: Likewise. + * sysdeps/i386/fpu/s_frexpl.S: Likewise. + * sysdeps/i386/fpu/s_remquo.S: Likewise. + * sysdeps/i386/fpu/s_remquof.S: Likewise. + * sysdeps/i386/fpu/s_remquol.S: Likewise. + * sysdeps/i386/fpu/s_sincos.S: Likewise. + * sysdeps/i386/fpu/s_sincosf.S: Likewise. + * sysdeps/i386/fpu/s_sincosl.S: Likewise. + * sysdeps/unix/sysv/linux/i386/clone.S: Likewise. + * sysdeps/unix/sysv/linux/i386/mmap64.S: Likewise. + +2000-08-16 Andreas Schwab + + * sysdeps/m68k/fpu/fegetexcept.c: New file. + * sysdeps/m68k/fpu/fedisblxcpt.c: New file. + * sysdeps/m68k/fpu/feenablxcpt.c: New file. + +2000-08-15 Ulrich Drepper + + * sysdeps/generic/ldsodefs.h: Declare _nl_nloaded. + * elf/Versions [ld] (GLIBC_2.2): Add _nl_nloaded. + * elf/dl-support.c: Define _nl_nloaded. + * elf/rtld.c: Likewise. Increment _nl_nloaded for rtld itself. + * elf/dl-object.c (_dl_new_object): Increment _nl_nloaded after adding + object to global list. + * elf/dl-close.c (_dl_close): Decrement _nl_nloaded after removing + from _dl_loaded list. + * elf/dl-load.c (_dl_map_object_from_fd): Likewise. + * elf/dl-fini.c (_dl_fini): Use _nl_nloaded instead of computing the + number here. + + * sysdeps/i386/fpu/fedisblxcpt.c (fedisableexcept): Mask, not + unmask, exceptions. + * sysdeps/i386/fpu/feenablxcpt.c (feenableexcept): Unmask, not mask, + exceptions. + Reported by Harvey J. Stein . + +2000-08-16 Andreas Jaeger + + * elf/elf.h (EM_X8664): Add official x86-64 specific value. + +2000-08-15 Marko Myllynen + + * inet/netinet/icmp6.h: Added Mobile IPv6 definitions. + +2000-08-15 Ulrich Drepper + + * sysdeps/unix/sysv/linux/powerpc/Dist: Add oldgetrlimit64.c. + * sysdeps/unix/sysv/linux/powerpc/Makefile [$(subdir)=resource] + (sysdep_routines): Add oldgetrlimit64. + * sysdeps/unix/sysv/linux/powerpc/oldgetrlimit64.c: New file. + Patch by Franz Sirl . + + * include/link.h: Undo last patches. Hurd now has stat64. + * elf/Makefile: Likewise. + * elf/dl-load.c: Likewise. + * elf/dl-misc.c: Likewise. + * elf/dl-profile.c: Likewise. + * sysdeps/generic/sysd-link.h: Removed. + * sysdeps/unix/sysv/linux/sysd-link.h: Removed. + + * rt/aio_notify.c (notify_func_wrapper): Wrapper function to call + thread event callback function. + (__aio_notify_only): Use function above. + Patch by Kaz Kylheku . + +2000-08-16 Mark Kettenis + + * sysdeps/mach/hurd/lseek64.c: New file. + +2000-08-15 Mark Kettenis + + * sysdeps/mach/hurd/i386/bits/time.h (__clockid_t, __timer_t): + Remove typedefs. + * sysdeps/mach/hurd/bits/time.h (__clockid_t, __timer_t): Remove + typedefs. + * sysdeps/generic/bits/time.h (__clockid_t, __timer_t): Remove + typedefs. + * sysdeps/generic/bits/types.h (__clockid_t, __timer_t): New typedefs. + +2000-08-15 Mark Kettenis + + * sysdeps/mach/hurd/xstatconv.c: New file. + * sysdeps/mach/hurd/fxstat64.c: New file. + * sysdeps/mach/hurd/lxstat64.c: New file. + * sysdeps/mach/hurd/xstat64.c: New file. + * sysdeps/mach/hurd/Dist: Add xstatconv.c. + +2000-08-15 Mark Kettenis + + * sysdeps/mach/hurd/dl-sysdep.c (__libc_multiple_libcs): + Initialize, needed for change in common symbol handling in newer + binutils. Mirrors 2000-01-03 change made by Andreas Schwab. + +2000-08-15 Ulrich Drepper + + * elf/constload1.c: Call mtrace. Check return value of dlclose call. + * elf/constload2.c: Add destructor to unload constload3. + + * include/link.h: Include sysd-link.h. + * sysdeps/generic/sysd-link.h: New file. + * sysdeps/unix/sysv/linux/sysd-link.h: New file. + * elf/Makefile (distribute): Add sysd-link.h. + * elf/dl-load.c: Use definitions from sysd-link.h instead of stat + types and functions directly. + * elf/dl-misc.c: Likewise. + * elf/dl-profile.c: Likewise. + + * elf/loadfail.c (main): Close all successfully loaded objects. + + * elf/multiload.c: Add mtrace call. Call dlclose for all handles and + free wd. + * elf/dl-deps.c (_dl_map_object_deps): Don't allocate needed list if + there is already one. + + * elf/dl-close.c: Pretty print. + +2000-08-14 Ulrich Drepper + + * sysdeps/posix/ttyname.c: Make name variable from getttyname function + global (with file scope). Add __libc_subfreeres function to free the + string. + * sysdeps/unix/sysv/linux/ttyname.c: Likewise. Also for buf variable + in ttyname function. + + * sysdeps/generic/strtok.c: Remove initializer for olds variable. + + * crypt/md5-crypt.c: Let destructor deallocate static buffer. + + * iconvdata/sjis.c (from_ucs4_lat1): Handle U005C and U007E by + mapping them to /x5c and /x7e respectively. + + * locale/programs/ld-ctype.c: Add support for more definitions after + copy statement. + +2000-08-14 Jakub Jelinek + + * dirent/Versions (getdirentries64): Export at GLIBC_2.2. + * sysdeps/unix/sysv/linux/kernel-features.h + (__ASSUME_GETDENTS64_SYSCALL): Define. + * sysdeps/unix/sysv/linux/getdents.c (__getdents): Use getdents64 + syscall if available to get d_type fields. + * sysdeps/unix/sysv/linux/alpha/getdents.c (DIRENT_TYPE): Define. + * sysdeps/unix/sysv/linux/arm/Versions (__xstat64, __fxstat64, + __lxstat64): Export at GLIBC_2.2. + (alphasort64, readdir64, readdir64_r, scandir64, versionsort64): + Likewise. + * sysdeps/unix/sysv/linux/i386/Versions (getdirentries64): Remove. + * sysdeps/unix/sysv/linux/i386/getdents64.c (kernel_dirent64): Define. + * sysdeps/unix/sysv/linux/powerpc/Versions (alphasort64, + getdirentries64, versionsort64): Remove. + * sysdeps/unix/sysv/linux/sparc/sparc32/Versions (alphasort64, + getdirentries64, versionsort64): Remove. + +2000-08-13 Ulrich Drepper + + * posix/Makefile: Remove rules to generate glob package. + + * posix/Makefile (tests): Add tst-regexloc. + (tst-regexloc-ENV): Add LOCPATH. + * posix/tst-regexloc.c: New file. + +2000-08-12 Andreas Jaeger + + * include/features.h (__STDC_ISO_10646__): Define. + Reported by Markus Kuhn . + +2000-08-13 Ulrich Drepper + + * include/features.h (__USE_ISOC99): Define for _XOPEN_SOURCE >= 600. + + * locale/langinfo.h: Define YESSTR and NOSTR also for XPG4 (but not + for revision 6 and up). + + * posix/sys/types.h: Define __need_timer_t and __need_clockid_t before + including . + * time/time.h: Allow __need_timer_t and __need_clockid_t to be defined + to get definitions of just these types. + + * signal/signal.h: Define thread signal handling functions also for + POSIX95. + + * sysdeps/unix/sysv/linux/bits/types.h: Define thread types also for + POSIX95. + * sysdeps/unix/sysv/linux/alpha/bits/types.h: Likewise. + * sysdeps/unix/sysv/linux/ia64/bits/types.h: Likewise. + * sysdeps/unix/sysv/linux/mips/bits/types.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/types.h: Likewise. + + * sysvipc/sys/shm.h: Define pid_t for XPG. + + * posix/unistd.h: Remove setkey, rename, and cuserid prototypes as + they are not anymore required here. + + * wcsmbs/wchar.h: Make the various wide char string and stream + functions available for the respective XPG versions. + + * nss/Makefile: Remove rules to build and distribute nss_db. + + * sysdeps/generic/alphasort64.c: Remove unnecessary versioning. + * sysdeps/generic/scandir64.c: Likewise. + * sysdeps/generic/versionsort64.c: Likewise. + +2000-08-13 Ulrich Drepper + Benjamin Koznik + + * libio/fileops.c: Merge with libstdc++-v3. + * libio/genops.c: Likewise. + * libio/iofclose.c: Likewise. + * libio/iofopen.c: Likewise. + * libio/iofwide.c: Likewise. + * libio/libio.h: Likewise. + * libio/libioP.h: Likewise. + * libio/stdfiles.c: Likewise. + * libio/stdio.c: Likewise. + * libio/wfileops.c: Likewise. + * libio/wgenops.c: Likewise. + + * libio/Versions: Export functions needed by libstdc++-v3 in GLIBC_2.2. + +2000-08-12 Ulrich Drepper + + * locale/programs/localedef.c: Implement --prefix option to allow + writing in standard places of alternative install directories. + + * posix/regex.c (compile_range): Implement collation sequence + handling for glibc. Use simple character ordering otherwise and + not strcoll. + +2000-08-12 Mark Kettenis + + * sysdeps/generic/scandir64.c: Include . + +2000-08-12 Andreas Jaeger + + * sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Handle + __USE_FILE_OFFSET64 correctly for locking. + * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise. + +2000-08-12 Jakub Jelinek + + * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_FCNTL64): + Define for 2.4.1 on sparc as well. + * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Fill in correct values + for F_GETLK64, F_SETLK64, and F_SETLKW64. + * sysdeps/unix/sysv/linux/sparc/sparc32/fcntl.c: New file. + * sysdeps/unix/sysv/linux/sparc/sparc32/lockf64.c: New file. + +2000-08-12 Ulrich Drepper + + * io/fts.c (fts_stat): Recognize DT_WHT only if S_IFWHT is also + defined. + +2000-08-12 Andreas Jaeger + + * sysdeps/unix/sysv/linux/alpha/bits/fcntl.h (F_GETLK64, + F_SETLK64, F_SETLKW64): Define with F_GETLK etc. + + * sysdeps/unix/sysv/linux/mips/sys/tas.h (_test_and_set): Add .set + mips2 for assembler. + + * sysdeps/unix/sysv/linux/i386/fcntl.c (__libc_fcntl): Try fcntl + if fnctl64 is not available for F_*LK*64. + + * sysdeps/unix/sysv/linux/i386/lockf64.c: New file. + +2000-08-12 Ulrich Drepper + + * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_FCNTL64): + Define for 2.4.1 on x86. + * sysdeps/unix/sysv/linux/i386/fcntl.c: New file. + * sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Fill in correct values + for F_GETLK64, F_SETLK64, and F_SETLKW64. + + * dirent/dirent.h: Define DT_WHT. + + * sysdeps/unix/sysv/linux/arm/alphasort64.c: New file. + * sysdeps/unix/sysv/linux/arm/getdents64.c: New file. + * sysdeps/unix/sysv/linux/arm/readdir64.c: New file. + * sysdeps/unix/sysv/linux/arm/readdir64_r.c: New file. + * sysdeps/unix/sysv/linux/arm/scandir64.c: New file. + * sysdeps/unix/sysv/linux/arm/versionsort64.c: New file. + +2000-08-11 Ulrich Drepper + + * nss/digits_dots.c: Don't pass NULL in h_aliases for successful + lookup, pass pointer to array with NULL pointer [PR libc/1858]. + * inet/Makefile (tests): Add tst-gethnm. + * inet/tst-gethnm.c: New file. + + * rt/aio_cancel.c: If canceling a specific request which is running + *really* do nothing. + * rt/aio_misc.h: Add `done' to states of a request. + * rt/aio_misc.c: Add several tests for the correct state. + Simplify request table memory handling. + +2000-08-10 Jakub Jelinek + + * dirent/scandir.c: Use it for scandir64 and old_scandir64 as well. + * dirent/scandir64.c: Move... + * sysdeps/generic/scandir64.c: ...here. + * dirent/alphasort64.c: Move... + * sysdeps/generic/alphasort64.c: ...here. + * dirent/versionsort64.c: Move... + * sysdeps/generic/versionsort64.c: ...here. + * sysdeps/unix/sysv/linux/i386/dirent/Versions (alphasort64, + getdirentries64, readdir64, readdir64_r, scandir64, versionsort64): + Export symbols at GLIBC_2.2. + * sysdeps/unix/sysv/linux/powerpc/dirent/Versions: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/dirent/Versions: Likewise. + * include/dirent.h (__readdir64_r, __scandir64, __alphasort64, + __versionsort64): Add prototypes. + * io/Versions (__xstat64, __fxstat64, __lxstat64): Export at GLIBC_2.2. + * sysdeps/unix/sysv/linux/alpha/kernel_stat.h (__xstat_conv): Remove + unused prototype. + * sysdeps/unix/sysv/linux/alpha/readdir.c: Export at both GLIBC_2.1 + and GLIBC_2.2. + * sysdeps/unix/sysv/linux/alpha/readdir_r.c: Likewise. + * sysdeps/unix/sysv/linux/alpha/getdents.c: New. + * sysdeps/unix/sysv/linux/alpha/getdents64.c: New. + * sysdeps/unix/sysv/linux/bits/types.h (__ino64_t): Change to + __u_quad_t. + * sysdeps/unix/sysv/linux/bits/stat.h (struct stat, struct stat64): + Adjust for kernel-2.4.0-test6 layout. + * sysdeps/unix/sysv/linux/i386/fxstat.c (__fxstat64): Export at both + GLIBC_2.1 and GLIBC_2.2. + * sysdeps/unix/sysv/linux/i386/lxstat.c (__lxstat64): Likewise. + * sysdeps/unix/sysv/linux/i386/xstat.c (__xstat64): Likewise. + * sysdeps/unix/sysv/linux/i386/getdents64.c: New. + * sysdeps/unix/sysv/linux/i386/olddirent.h: New. + * sysdeps/unix/sysv/linux/i386/readdir64.c: New. + * sysdeps/unix/sysv/linux/i386/readdir64_r.c: New. + * sysdeps/unix/sysv/linux/i386/scandir64.c: New. + * sysdeps/unix/sysv/linux/i386/alphasort64.c: New. + * sysdeps/unix/sysv/linux/i386/versionsort64.c: New. + * sysdeps/unix/sysv/linux/ia64/getdents.c: New. + * sysdeps/unix/sysv/linux/ia64/getdents64.c: New. + * sysdeps/unix/sysv/linux/ia64/readdir.c: Include alpha/readdir.c. + * sysdeps/unix/sysv/linux/ia64/readdir_r.c: Include alpha/readdir_r.c. + * sysdeps/unix/sysv/linux/mips/bits/types.h (__ino64_t): Change to + __u_quad_t. + * sysdeps/unix/sysv/linux/powerpc/bits/stat.h: New. + * sysdeps/unix/sysv/linux/powerpc/kernel_stat.h (_HAVE_STAT*): Define. + * sysdeps/unix/sysv/linux/powerpc/scandir64.c: New. + * sysdeps/unix/sysv/linux/powerpc/getdents64.c: New. + * sysdeps/unix/sysv/linux/powerpc/readdir64.c: New. + * sysdeps/unix/sysv/linux/powerpc/readdir64_r.c: New. + * sysdeps/unix/sysv/linux/sparc/bits/types.h (__ino64_t): Change to + __u_quad_t. + * sysdeps/unix/sysv/linux/sparc/bits/stat.h: New. + * sysdeps/unix/sysv/linux/sparc/sparc32/kernel_stat.h (_HAVE_STAT*): + Define. + * sysdeps/unix/sysv/linux/sparc/sparc32/getdents64.c: New. + * sysdeps/unix/sysv/linux/sparc/sparc32/readdir64.c: New. + * sysdeps/unix/sysv/linux/sparc/sparc32/readdir64_r.c: New. + * sysdeps/unix/sysv/linux/sparc/sparc32/scandir64.c: New. + * sysdeps/unix/sysv/linux/sparc/sparc64/kernel_stat.h (_HAVE_STAT*): + Define. + * sysdeps/unix/sysv/linux/sparc/sparc64/readdir.c: Include + alpha/readdir.c. + * sysdeps/unix/sysv/linux/sparc/sparc64/readdir_r.c: Include + alpha/readdir_r.c + * sysdeps/unix/sysv/linux/sparc/sparc64/getdents.c: New. + * sysdeps/unix/sysv/linux/sparc/sparc64/getdents64.c: New. + * sysdeps/unix/sysv/linux/fxstat64.c (__fxstat64): If + _HAVE_STAT64___ST_INO and __st_ino != (uint32_t)st_ino, set + st_ino from __st_ino. + * sysdeps/unix/sysv/linux/lxstat64.c (__lxstat64): Likewise. + * sysdeps/unix/sysv/linux/xstat64.c (__xstat64): Likewise. + * sysdeps/unix/sysv/linux/xstatconv.c (xstat_conv, xstat64_conv, + xstat32_conv): Use _HAVE_STAT* macros. If _HAVE_STAT64___ST_INO, + set __st_ino in addition to st_ino. + * sysdeps/unix/sysv/linux/kernel_stat.h (_HAVE_STAT*): Define. + * sysdeps/unix/sysv/linux/getdents.c: Use it for __getdents64 and + __old_getdents64 as well. + * sysdeps/unix/sysv/linux/getdirentries.c: Use it for + getdirentries64 and old_getdirentries64 as well. + * sysdeps/unix/sysv/linux/getdirentries64.c (GETDIRENTRIES, + __GETDENTS): Define. + (GETDENTS64): Remove. + * sysdeps/unix/sysv/linux/getdents64.c (__GETDENTS, DIRENT_TYPE): + Define. + (GETDENTS64): Remove. + * sysdeps/unix/sysv/linux/readdir64.c: Use sysdeps/unix/readdir.c. + * sysdeps/unix/sysv/linux/readdir64_r.c: Use sysdeps/unix/readdir_r.c. + * sysdeps/unix/readdir.c: Use it for readdir64 and __old_readdir64 + as well. + * sysdeps/unix/readdir_r.c: Use it for readdir64_r and + __old_readdir64_r as well. + * sysdeps/unix/sysv/linux/kernel-features.h: Define + __ASSUME_ST_INO_64_bit for kernel 2.4.1 and up. + +2000-08-08 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Add SI_KERNEL define. + Add missing ILL_BADIADDR to enum and make ILL_BREAK match the + define of the kernel. + Add missing __SEG_PSTKOVF definition. + Adjust the padding of struct siginfo and struct sigevent to + match the fact that sigval_t is 64 bit. + +2000-08-10 Ulrich Drepper + + * timezone/zic.c: Update from tzcode2000f. + * timezone/australasia: Update from tzdata2000f. + * timezone/europe: Likewise. + * timezone/southamerica: Likewise. + * timezone/yearistype: Likewise. + +2000-08-10 Andreas Jaeger + + * sysdeps/unix/sysv/linux/mips/bits/stat.h: Synch struct stat64 and + stat with current MIPS kernel. + +2000-08-01 Mark Kettenis + + * sysdeps/unix/sysv/linux/i386/sys/elf.h (elf_greg_t, ELF_NGREG, + elf_gregset_t, elf_fpregset_t, elf_fpxregset_t): Moved to + sysdeps/unix/sysv/linux/i386/sys/procfs.h. + Remove the junk that's only relevant in the Linux kernel itself. + Add a warning saying that this file is now obsolete, and include + . + * sysdeps/unix/sysv/linux/i386/sys/procfs.h (elf_greg_t, + ELF_NGREG, elf_gregset_t, elf_fpregset_t, elf_fpxregset_t): Moved + here from sysdeps/unix/sysv/linux/i386/sys/elf.h. Don't include + , and . Remove parts of + `struct elf_prstatus' that are #ifdef'ed out. Improve comments + and add the notice that the file is primarily there for GDB. + * sysdeps/unix/sysv/linux/i386/sys/user.h: Fix comment. + +2000-08-09 Jakub Jelinek + + * time/tzfile.c (__tzfile_compute): __tzstring zones + from zone_names. + +2000-08-09 Jakub Jelinek + + * resolv/resolv.h (__res_state): Surround prototype with + __BEGIN_DECLS/__END_DECLS. + * sysdeps/unix/sysv/linux/m68k/chown.c: Include kernel-features.h. + +2000-08-04 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/bits/resource.h (__rlimit_resource): + Make independant of asm/resource.h from the Linux kernel. + +2000-08-06 Bruno Haible + + * iconv/gconv_conf.c (__gconv_read_conf): Don't call realpath. + +2000-08-06 Bruno Haible + + * intl/Makefile (CPPFLAGS): Remove $(i18ndir) from LOCALE_ALIAS_PATH. + * locale/Makefile (locale-CPPFLAGS): Likewise. + +2000-08-09 Ulrich Drepper + + * sysdeps/i386/fpu/libm-test-ulps: Increase several error values + for AMD processors. + +2000-08-03 Jakub Jelinek + + * misc/Versions (mincore): Export at GLIBC_2.2. + +2000-08-03 Bruno Haible + + * intl/libintl.h (gettext, dgettext, dcgettext): Add back __THROW. + +2000-08-02 Mark Kettenis + + * sysdeps/mach/hurd/socketpair.c (__socketpair): Renamed from + socketpair. Made socketpair a weak alias. + * sysdeps/mach/hurd/pipe.c (__pipe): Reimplemented using + __socketpair. Use S_IFIFO protocol to make pipes POSIX + conforming, but fall back on the old protocol if the socket server + doesn't support it. + * include/sys/socket.h: Add prototype for __socketpair. + +2000-08-09 Andreas Schwab + + * stdio-common/vfprintf.c (vfprintf): Also set `is_long' if the + long long modifier is seen. + + * elf/nodelete.c (do_test): Remove reference to undefined member + sa_restorer. + * rt/tst-aio4.c (do_test): Likewise. + + * configure.in: Add `-lm' when checking for libgd. + * malloc/Makefile ($(objpfx)memusagestat): Add `-lm' during + linking. + +2000-08-09 Andreas Jaeger + + * configure.in: Change required make versions. + + * manual/install.texi (Tools for Compilation): Document required + make version. + (Supported Configurations): Update list of supported + configurations. + +2000-08-08 Ulrich Drepper + + * locale/linereader.c (get_string): Don't print an error is a string + contains an unknown character. + +2000-08-06 Ulrich Drepper + + * locale/programs/ld-collate.c (struct symbol_t): Add name element. + (new_symbol): Take new parameters with name of the symbol. + Adjust callers. + (handle_ellipsis): Don't only allow character symbols. + (collate_read): Allow string of collating elements contain invalid + characters; ignore entry in this case. + Handle ellipsis of collating symbols before first order_start. + Allow ellipsis in state 0. + +2000-08-04 Ulrich Drepper + + * locale/programs/ld-collate.c (handle_ellipsis): Fix typo in + error message. + Reported by Tung-Han Hsieh . + +2000-08-04 Greg McGary + + * posix/regex.c (SET_HIGH_BOUND): New macro. + (MOVE_BUFFER_POINTER): Use it. + (ELSE_EXTEND_BUFFER_HIGH_BOUND): New macro. + (EXTEND_BUFFER): Use it. + +2000-08-03 Ulrich Drepper + + * libio/iofwide.c (_IO_fwide): Initialize fp->_codecvt as well. + * libio/fileops.c (_IO_new_file_fopen): Use _codecvt not from + _wide_data but from _IO_FILE directly. + * libio/iofclose.c: Likewise. + * libio/wfileops.c: Likewise. + + * libio/genops.c (_IO_default_showmanyc): Change return type to size_t. + * libio/libioP.h: Change prototypes. + +2000-08-03 Greg McGary + + * sysdeps/i386/setjmp.S (__sigsetjmp): Pop our + frame pointer early so that we save caller's frame pointer. + * sysdeps/i386/elf/setjmp.S: Likewise. + + * sysdeps/unix/sysv/syscalls.list (time, utime): Correct signatures. + * io/test-utime.c: Test passing NULL as utimbuf* arg. + + * posix/regex.c (EXTEND_BUFFER_HIGH_BOUND): Remove macro. + (MOVE_BUFFER_POINTER): Handle high_bound properly. + (EXTEND_BUFFER): Don't call EXTEND_BUFFER_HIGH_BOUND. + +2000-08-03 Ulrich Drepper + + * iconvdata/big5.c: Updated. + Patch by Tung-Han Hsieh . + +2000-08-02 Ulrich Drepper + + * Makeconfig (all-subdirs): Add conform. + * conform/Makefile: Include ../Rules. + + * Makefile (README): Add rules to generate here as well. + +2000-08-02 Ulrich Drepper + + * version.h (VERSION): Bump to 2.1.92. + + * sysdeps/ia64/Dist: Add _mcount.S. + + * sysdeps/unix/sysv/linux/ia64/Dist: Add clone.S. + + * sysdeps/unix/sysv/linux/mips/Dist: Add _test_and_set.c. + + * elf/Makefile (distribute): Add missing modules. + + * sysdeps/unix/sysv/linux/s390/Dist: Remove nonexisting files. + + * posix/regex.c (compile_range): Translate range start and end + characters to avoid empty range in case of REG_ICASE [PR libc/1842]. + + * sysdeps/unix/sysv/linux/ia64/bits/resource.h: Don't include + asm/resource.h. + + * sysdeps/unix/sysv/linux/arm/Makefile: Undo last change. + +2000-08-02 Andreas Jaeger + + * elf/elf.h (EM_S390): Added. + (R_390_*): New relocs for S390. + + * sysdeps/unix/sysv/linux/s390/Dist: New file. + * sysdeps/unix/sysv/linux/s390/sysdep.h: New file. + * sysdeps/unix/sysv/linux/s390/sysdep.S: New file. + * sysdeps/unix/sysv/linux/s390/syscall.S: New file. + * sysdeps/unix/sysv/linux/s390/sys/user.h: New file. + * sysdeps/unix/sysv/linux/s390/sys/ucontext.h: New file. + * sysdeps/unix/sysv/linux/s390/sys/ptrace.h: New file. + * sysdeps/unix/sysv/linux/s390/sys/elf.h: New file. + * sysdeps/unix/sysv/linux/s390/socket.S: New file. + * sysdeps/unix/sysv/linux/s390/sigcontextinfo.h: New file. + * sysdeps/unix/sysv/linux/s390/shmctl.c: New file. + * sysdeps/unix/sysv/linux/s390/setreuid.c: New file. + * sysdeps/unix/sysv/linux/s390/setresuid.c: New file. + * sysdeps/unix/sysv/linux/s390/setresgid.c: New file. + * sysdeps/unix/sysv/linux/s390/setregid.c: New file. + * sysdeps/unix/sysv/linux/s390/setgroups.c: New file. + * sysdeps/unix/sysv/linux/s390/setgid.c: New file. + * sysdeps/unix/sysv/linux/s390/setfsuid.c: New file. + * sysdeps/unix/sysv/linux/s390/setfsgid.c: New file. + * sysdeps/unix/sysv/linux/s390/seteuid.c: New file. + * sysdeps/unix/sysv/linux/s390/setegid.c: New file. + * sysdeps/unix/sysv/linux/s390/semctl.c: New file. + * sysdeps/unix/sysv/linux/s390/register-dump.h: New file. + * sysdeps/unix/sysv/linux/s390/putpmsg.c: New file. + * sysdeps/unix/sysv/linux/s390/putmsg.c: New file. + * sysdeps/unix/sysv/linux/s390/profil-counter.h: New file. + * sysdeps/unix/sysv/linux/s390/msgctl.c: New file. + * sysdeps/unix/sysv/linux/s390/mmap.S: New file. + * sysdeps/unix/sysv/linux/s390/getuid.c: New file. + * sysdeps/unix/sysv/linux/s390/getresuid.c: New file. + * sysdeps/unix/sysv/linux/s390/getresgid.c: New file. + * sysdeps/unix/sysv/linux/s390/getpmsg.c: New file. + * sysdeps/unix/sysv/linux/s390/getmsg.c: New file. + * sysdeps/unix/sysv/linux/s390/getgroups.c: New file. + * sysdeps/unix/sysv/linux/s390/getegid.c: New file. + * sysdeps/unix/sysv/linux/s390/geteuid.c: New file. + * sysdeps/unix/sysv/linux/s390/fchown.c: New file. + * sysdeps/unix/sysv/linux/s390/clone.S: New file. + * sysdeps/unix/sysv/linux/s390/brk.c: New file. + * sysdeps/unix/sysv/linux/s390/bits/time.h: New file. + * sysdeps/unix/sysv/linux/s390/bits/resource.h: New file. + * sysdeps/unix/sysv/linux/s390/bits/mman.h: New file. + * sysdeps/unix/sysv/linux/s390/bits/fcntl.h: New file. + * sysdeps/unix/sysv/linux/s390/Makefile: New file. + * sysdeps/s390/sysdep.h: New file. + * sysdeps/s390/sys/ucontext.h: New file. + * sysdeps/s390/sub_n.S: New file. + * sysdeps/s390/strncpy.S: New file. + * sysdeps/s390/strcpy.S: New file. + * sysdeps/s390/stackinfo.h: New file. + * sysdeps/s390/setjmp.S: New file. + * sysdeps/s390/s390-mcount.S: New file. + * sysdeps/s390/mul_1.S: New file. + * sysdeps/s390/memusage.h: New file. + * sysdeps/s390/memset.S: New file. + * sysdeps/s390/memcpy.S: New file. + * sysdeps/s390/memchr.S: New file. + * sysdeps/s390/machine-gmon.h: New file. + * sysdeps/s390/ldbl2mpn.c: New file. + * sysdeps/s390/gmp-mparam.h: New file. + * sysdeps/s390/fpu/fpu_control.h: New file. + * sysdeps/s390/fpu/fesetround.c: New file. + * sysdeps/s390/fpu/fegetround.c: New file. + * sysdeps/s390/fpu/fclrexcpt.c: New file. + * sysdeps/s390/fpu/bits/fenv.h: New file. + * sysdeps/s390/ffs.c: New file. + * sysdeps/s390/elf/start.S: New file. + * sysdeps/s390/elf/setjmp.S: New file. + * sysdeps/s390/elf/bsd-setjmp.S: New file. + * sysdeps/s390/elf/bsd-_setjmp.S: New file. + * sysdeps/s390/dl-machine.h: New file. + * sysdeps/s390/bzero.S: New file. + * sysdeps/s390/bsd-setjmp.S: New file. + * sysdeps/s390/bsd-_setjmp.S: New file. + * sysdeps/s390/bits/string.h: New file. + * sysdeps/s390/bits/setjmp.h: New file. + * sysdeps/s390/bits/huge_val.h: New file. + * sysdeps/s390/bits/endian.h: New file. + * sysdeps/s390/bits/byteswap.h: New file. + * sysdeps/s390/bcopy.S: New file. + * sysdeps/s390/backtrace.c: New file. + * sysdeps/s390/atomicity.h: New file. + * sysdeps/s390/asm-syntax.h: New file. + * sysdeps/s390/addmul_1.S: New file. + * sysdeps/s390/add_n.S: New file. + * sysdeps/s390/abort-instr.h: New file. + * sysdeps/s390/__longjmp.c: New file. + * sysdeps/s390/Makefile: New file. + * sysdeps/s390/Implies: New file. + * sysdeps/s390/Dist: New file. + Patches by Martin Schwidefsky . + +2000-08-01 Ulrich Drepper + + Remove incompatible IPv6 extension of RPC. + * sunrpc/Makefile: Undo changes. + * sunrpc/rpc_main.c: Likewise. + * sunrpc/rpc/clnt.h: Likewise. + * sunrpc/rpc/svc.h: Likewise. + * sunrpc/bindrsvprt6.c: Removed. + * sunrpc/clnt_tcp6.c: Removed. + * sunrpc/clnt_udp6.c: Removed. + * sunrpc/svc_tcp6.c: Removed. + * sunrpc/svc_udp6.c: Removed. + + * intl/libintl.h: Don't use __attribute_format_arg__ for gettext, + dgettext, and dcgettetxt. + + * intl/locale.alias: Update japanese aliases. + + * sysdeps/ia64/bits/byteswap.h: New file. + Patch by Dan Pop . + + * misc/sys/cdefs.h: Define __attribute_format_arg__. + * intl/libintl.h: Use it here instead of using __attribute__ directly. + +2000-07-13 H.J. Lu + + * posix/regex.c (re_max_failures): Set to 4000. + +2000-08-01 Ulrich Drepper + + * gnulib/Makefile (tests): Add tst-gcc. + * gnulib/tst-gcc.c: New file. + + * assert/Makefile (routines): Add __assert. + * assert/Versions: Export __assert for glibc 2.2. + * assert/__assert.c: New file. + * assert/assert.h: Declare __assert. + +2000-07-27 Bruno Haible + + * locale/localeinfo.h (_ISCTYPE): New macro. + * posix/fnmatch_loop.c (internal_fnmatch): Use it, support new + LC_CTYPE locale format. + * locale/programs/ld-ctype.c (locale_ctype_t): New field class_b. + (ctype_output): Output class_b[nr] right before class_3level[nr]. + (allocate_arrays): Fill class_b, similarly to class_3level. + +2000-08-01 Ulrich Drepper + Joseph S. Myers + + * math/tgmath.h: Make standard compliant. Don't ask how. + +2000-07-04 H.J. Lu + + * elf/Makefile ($(inst_slibdir)/$(rtld-version-installed-name)): + Use $(do-install-program) instead of "$(INSTALL_PROGRAM) $< $@.new". + ($(inst_slibdir)/$(rtld-installed-name)): Use $(make-shlib-link) only. + +2000-07-30 Maciej W. Rozycki + + * include/features.h (_XOPEN_SOURCE): Update the explanation. + (__USE_LARGEFILE): Add an explanation. + (_POSIX_C_SOURCE): Define to 2 only if _XOPEN_SOURCE < 500. + (__USE_XOPEN2K): Define whenever _XOPEN_SOURCE >= 600. + +2000-08-01 Ulrich Drepper + + * libio/Makefile: Enable exception handling for genops, wgenops, + fileops, and wfileops. + +2000-07-29 Mark Kettenis + + * sysdeps/mach/hurd/dl-sysdep.c (_dl_sysdep_start): Take into + acount that elf/rtld's main program might remove some varibales + from the environment if we're trying to be secure. Move the Hurd + startup data if necessary, or, if we there is no startup data, + make sure the magical convention that ARGV[0] is stored just after + the environment list. + +2000-08-01 Philip Blundell + + * sysdeps/unix/sysv/linux/arm/Makefile [subdir=resource] + (sysdep_routines): Add oldgetrlimit, oldsetrlimit. + * sysdeps/unix/sysv/linux/arm/syscalls.list: Add oldgetrlimit, + oldsetrlimit for GLIBC_2.0. + +2000-08-01 Andreas Jaeger + + * nss/nss_files/files-ethers.c: Use case-insensitive lookup. + (LINE_PARSER): Allow any number of spaces between ip address and + number. Fixes PR libc/1833, reported by rp010gf@voruta.vu.lt. + + * conform/data/netdb.h-data: Remove getipnodebyaddr and friends. + + * include/netdb.h: Remove getipnodebyaddr and friends, leave + constants in. + + * nis/Versions: Remove _nss_nis_getipnodebyname_r and + _nss_nisplus_getipnodebyname_r. + + * nis/nss_nis/nis-hosts.c (_nss_nis_getipnodebyname_r): #if 0 for + now, getipnodebyname is deprecated. + * nis/nss_nisplus/nisplus-hosts.c (_nss_nisplus_getipnodebyname_r): + Likewise. + + * inet/Makefile (routines): Don't build getipnodebyaddr and + friends. + + * intl/Makefile (distribute): Add tst-translit.sh and translit.po. + + * hesiod/Makefile (distribute): Add nss_hesiod/nss_hesiod.h. + + * elf/Makefile (distribute): Add filtmod1.c and filtmod2.c. + + * wctype/Makefile (distribute): Add wchar-lookup.h. + + * sysdeps/generic/Dist: Add bp-checks.h and bp-semctl.h. + + * iconvdata/Makefile (distribute): Add isiri-3342.h. + +2000-08-01 Andreas Schwab + + * Make-dist (dist): Resolve `..' in file names. + +2000-08-01 Andreas Jaeger + + * stdio-common/Makefile (distribute): Remove removed files, add + new files. + + * Makefile (distribute): Remove include/db_185.h and db.h. + + * include/db_185.h: Remove, it's not needed anymore. + * include/db.h: Likewise. + +2000-07-31 Ulrich Drepper + + * inet/Makefile (tests): Remove tst-ipnode. + * include/netdb.h: Add stuff removed from resolv/netdb.h here for + now. + +2000-07-31 Jes Sorensen + + * sysdeps/ia64/elf/initfini.c: Kill dummy section since align and + endp statements have already been added. + +2000-04-18 David Mosberger + + * sysdeps/unix/sysv/linux/ia64/sysdep.h: Include + . + + * sysdeps/ia64/_mcount.S: New file. + + * sysdeps/ia64/elf/initfini.c (_init): Preserve gp around call to + __gmon_start__. Fix up extraneous whitespace. + +2000-01-12 H.J. Lu + + * sysdeps/ia64/elf/initfini.c: New file. + +2000-07-31 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/clone.S: Add stop bit to avoid WAW + dependency between branch and ar.pfs write. + +2000-07-31 H.J. Lu + + * sysdeps/generic/printf_fphex.c (__printf_fphex): Correctly + handle the wchar_t array. + +2000-07-31 Ulrich Drepper + + * iconvdata/gb18030.c: Don't map to and from positions in ISO + 10646 which are not yet assigned. + Patch by wang shouhua . + +2000-07-31 Andreas Jaeger + + * inet/Versions: Remove getipnodebyaddr and friends from + GLIBC_2.2. + + * resolv/netdb.h: Remove getipnodebyaddr and friends. + +2000-07-30 Bruno Haible + + * iconvdata/sjis.c (BODY for FROM_LOOP): Treat the case + ch >= 0x81 && ch2 < 0x40 as invalid. + +2000-07-30 Bruno Haible + + * iconvdata/uhc.c (BODY for FROM_LOOP): Reject ch2 == 0xff as invalid. + (BODY for TO_LOOP): Accept 0x7f. Increment outptr as needed. + +2000-07-30 Bruno Haible + + * iconvdata/johab.c (BODY for TO_LOOP): After calling + ucs4_to_ksc5601_sym, fix the conversion to JOHAB. + +2000-07-30 Bruno Haible + + * iconvdata/t.61.c (to_ucs4): Change values of 0xa4, 0a6, 0xa8, 0xb4, + 0xb8. + (from_ucs4): Change values of U+00A4, U+00BB, U+00ED. + +2000-07-30 Bruno Haible + + * iconvdata/macintosh.c (HAS_HOLES): Set to 1. + +2000-07-30 Bruno Haible + + * iconvdata/iso_6937.c (to_ucs4): Change values of 0x24 and 0xb4. + (from_ucs4): Change values of U+00A4 and U+00ED. + (BODY of TO_LOOP): Remove mapping from U+02DC to 0x0020. + +2000-07-30 Bruno Haible + + * iconvdata/ansi_x3.110.c (from_ucs4): Change entry for 0xed. + (BODY for TO_LOOP): Map U+2122, U+2126, not U+2022, U+2026. + +2000-07-30 Bruno Haible + + * iconvdata/Makefile (gen-8bit-gap-modules): Remove isiri-3342. + * iconvdata/isiri-3342.h: New file. + * iconvdata/isiri-3342.c (HAS_HOLES): Avoid gaps >= 0xe0, but don't + treat 0x80 as a gap. + +2000-07-30 Bruno Haible + + * string/strxfrm.c (encoding_mask, encoding_byte): Remove. + (utf8_encode): Use simple shifts instead. Fix return value. + +2000-07-31 Ulrich Drepper + + * timezone/private.h: Update from tzcode2000e. + * timezone/asia: Update from tzdata2000e. + * timezone/australasia: Likewise. + * timezone/europe: Likewise. + * timezone/northamerica: Likewise. + * timezone/zone-tab: Likewise. + +2000-07-30 Ralf Baechle + + * sysdeps/unix/sysv/linux/mips/bits/sigstack.h: New file. On MIPS + the order of struct sigaltstack members is different. + +2000-07-26 Philip Blundell + + * sysdeps/unix/sysv/linux/arm/bits/fcntl.h: New file. + +2000-07-29 Ulrich Drepper + + * locale/langinfo.h: Add entries for extra tables in CTYPE data. + * locale/programs/ld-ctype.c: Adjust for this. + + * locale/programs/ld-collate.c: Add more alignment checks. + * locale/string/strcoll.c: Likewise. + +2000-07-30 Mark Kettenis + + * stdio-common/vfprintf.c: Move inclusion of _i18n_number.h + outside USE_IN_LIBIO block. + +2000-07-26 Philip Blundell + + * sysdeps/arm/dl-machine.h (fix_bad_pc24): New function. + (elf_machine_rel): Use it for out-of-range PC24 relocs. + +2000-07-28 Philip Blundell + + * math/test-fpucw.c: Ignore reserved bits in control word. + +2000-07-28 Philip Blundell + + * sysdeps/unix/sysv/linux/arm/sysdep.h (PSEUDO_RET): New macro. + (ret): Redefine to PSEUDO_RET. + (PSEUDO): Remove jump to syscall_error. + +2000-07-29 Mark Kettenis + + * resolv/README: Add some information about using the resolver in + multi-threaded code and with C++. Spelling fixes. + +2000-07-29 Mark Kettenis + + * resolv/resolv.h (struct __sockaddr_in): Remove. + (struct __res_state) [!_LIBC]: Remove reference to __sockaddr_in. + +2000-07-29 Greg McGary + + * Rules (test-bp-inputs, make-test-out): New variables. + ($(objpfx)%-bp.out): New rule. + ($(objpfx)%.out): Rewrite in terms of new variables. + + * libio/iovswscanf.c (vswscanf): Pass _IO_FILE_plus pointer to + internal function that uses vtable. + * libio/vsnprintf.c (_IO_vsnprintf): Likewise. + * libio/vswprintf.c (_IO_vswprintf): Likewise. + + * malloc/malloc.c (mem2chunk): Define in terms of chunk_at_offset. + (malloc_extend_top): Convert brk to chunk using chunk_at_offset. + (chunk_align): Likewise. + + * time/asctime.c (ab_day_name, ab_month_name): Rewrite expression + in a way that conforms to decl, and avoids spurious bounds violation. + + * sysdeps/arm/frame.h (struct layout): Make pointers __unbounded. + * sysdeps/generic/frame.h: Likewise. + * sysdeps/generic/backtrace.c (ADVANCE_STACK_FRAME): Wrap bounds + around return value. + (__backtrace): Qualify frame-pointer chain and return address + pointers as __unbounded. Wrap bounds around variable `current'. + * sysdeps/generic/segfault.c (ADVANCE_STACK_FRAME): Wrap bounds + around return value. + (catch_segfault): Qualify frame-pointer chain and return address + pointers as __unbounded. Wrap bounds around variable `current'. + * sysdeps/i386/backtrace.c (struct layout): Make pointers __unbounded. + (ADVANCE_STACK_FRAME): Wrap bounds around return value. + * sysdeps/powerpc/backtrace.c (struct layout): Make pointers + __unbounded. + (__backtrace): Qualify frame-pointer chain and return address + pointers as __unbounded. Wrap bounds around variable `current'. + + * sysdeps/i386/addmul_1.S: s2_limb is scalar so remove bounds check. + * sysdeps/i386/mul_1.S: Likewise. + * sysdeps/i386/submul_1.S: Likewise. + * sysdeps/i386/i586/addmul_1.S: Likewise. + * sysdeps/i386/i586/mul_1.S: Add bounds checks. + * sysdeps/i386/i586/submul_1.S: Likewise. + +2000-07-27 Andreas Jaeger + + * libio/Depend: New file, libio needs localedata for tests. + * posix/Depend: Likewise. + +2000-07-28 Ulrich Drepper + + * stdio-common/_i18n_itoa.c: Removed. + * stdio-common/_i18n_itoa.h: Removed. + * stdio-common/_i18n_itowa.c: Removed. + * stdio-common/_i18n_itowa.h: Removed. + * stdio-common/_i18n_number.h: New file. + * stdio-common/Depend: New file. + * stdio-common/printf-parse.h: Handle I modifier correctly. Optimize. + * stdio-common/vfprintf.c: Rewrite buffer handling for integer + printing. Change printing of numbers with locale specific digits to + use new code in _i18n_number.h. + * stdio-common/Makefile (routines): Remove _i18n_itoa and + _i18n_itowa. + + * stdio-common/bug13.c: Improve messages. + + * locale/programs/ld-ctype.c (ctype_read): Improve error message. + (set_class_defaults): Always search also for Uxxxx names. + Detect insufficient number of outdigits. + + * locale/Makefile (C-translit.h): Use mv not $(move-if-changed). + +2000-07-27 Bruno Haible + + * locale/C-ctype.c (_nl_C_LC_CTYPE): Swap the two names in + _NL_CTYPE_MAP_NAMES. + * locale/localeinfo.h (__TOW_toupper, __TOW_tolower): New enum values. + * wctype/wcfuncs.c (towlower, towupper): Use them. + * wctype/wcfuncs_l.c (__towlower_l, __towupper_l): Likewise. + * wctype/wctrans.c (wctrans): Likewise. + * wctype/wctrans_l.c (__wctrans_l): Likewise. + +2000-07-27 Bruno Haible + + * posix/fnmatch.c (is_char_class): Fix logic. Avoid buffer overrun. + Use the optimized version of this function outside glibc as well. + +2000-07-27 Jakub Jelinek + + * locale/indigits.h (indigit_value): Correct. + * locale/indigitswc.h (indigitwc_value): Correct. + * stdio-common/vfscanf.c (__vfscanf): Fix I18N number + conversion, add GROUP checking for it, fix GROUP number + conversion with strlen(thousands) > 1. + Honour width correctly in the presence of floating + decimal points and thousands separators. + * stdio-common/tst-sscanf.c: New test. + * stdio-common/Makefile: Add it to tests. + * sysdeps/generic/strtol.c (strtol): Fix conversion if there are + thousands separators and group argument is non-zero. + +2000-07-25 Bruno Haible + + * locale/Versions: Enumerate __*_l functions individually. __wctrans_l + starts at GLIBC_2.2. + +2000-07-12 Maciej W. Rozycki + + * sysdeps/unix/sysv/linux/mips/Dist: Add sys/tas.h. + * sysdeps/unix/sysv/linux/mips/Makefile (sysdep_routines): Add + _test_and_set. + (headers): Add sys/tas.h. + * sysdeps/unix/sysv/linux/mips/Versions: Export _test_and_set for + GLIBC_2.2 from libc. + * sysdeps/unix/sysv/linux/mips/_test_and_set.c: New file. + * sysdeps/unix/sysv/linux/mips/sys/tas.h: New file for + _test_and_set. + +2000-07-28 Andreas Jaeger + + * sysdeps/gnu/netinet/tcp.h: Add TCP options from Linux 2.4. + + * dlfcn/Makefile ($(objpfx)tst-dladdr): New. + ($(objpfx)tst-dladdr.out): new. + (tests): Add tst-dladdr. + ($(objpfx)glrefmain): Use libdl. + + * dlfcn/tst-dladdr.c: New file. Based on a test by Volkmar Sieh + . + +2000-07-27 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/syscalls.list: Add truncate(64) and + ftruncate(64) calls. + +2000-07-27 Jes Sorensen + + * intl/tst-translit.c: Include string.h to get prototype for + strcmp(). + +2000-07-27 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/fork.c: Make __libc_fork the strong + name and add weak alias for __fork. + + * sysdeps/unix/sysv/linux/ia64/syscalls.list: Change llseek, pread + & pwrite to use __libc_ as strong names instead of + __syscall_. + + * include/sched.h: Add clone2 prototype. + +2000-07-26 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/sysdep.h (ENTRY): Don't declare the + procedure name twice. + +2000-07-27 Philip Blundell + + * malloc/malloc.c (HAVE_MREMAP): Undo change of 1997-12-04. + +2000-07-27 Andreas Jaeger + + * sysdeps/unix/sysv/linux/bits/socket.h: Rename MSG_URG TO + MSG_CONFIRM following kernel 2.4.0 (MSG_URG was never used). + * sysdeps/unix/sysv/linux/mips/bits/socket.h: Likewise. + Reported by Andi Kleen . + + * rt/tst-aio64.c: Add tests for aio_fsync64 and aio_cancel64. + (do_wait): Test requests with aio_return64. + (do_test): Change callers of do_wait. + +2000-07-26 Andreas Jaeger + + * rt/tst-aio.c: Add tests for aio_fsync and aio_cancel. + (do_wait): Test requests with aio_return. + (do_test): Change callers of do_wait. + +2000-07-27 Ulrich Drepper + + * rt/aio_misc.c (__aio_remove_request): New function. Handle removing + from request list. Don't do the list handling here, call + __aio_remove_request. + * rt/aio_misc.h: Add prototype for __aio_remove_request. + * rt/aio_cancel.c: Don't assume __aio_find_req_fd succeeds since the + request might already be processed. Don't do the list handling + here, call __aio_remove_request. + + * rt/aio_misc.c: Don't depend on aio_reqprio field for LIO_SYNC and + LIO_DSYNC. + + * rt/aio_misc.c: Add comment explaining why writer memory barriers + are missing. + +2000-07-27 Greg McGary + + * sysdeps/generic/bp-checks.h (BOUNDED_N): Make it work for void*. + * sysdeps/generic/bp-semctl.h (check_semctl): Fix syntax error + in union init. Pass zero for ignored semnum arg to semctl. + * sysdeps/unix/sysv/linux/shmat.c (shmat): Fix typo. + +2000-07-26 Greg McGary + + * sysdeps/gnu/bits/msq.h: Qualify kernel's + data structure pointers as __unbounded. + * sysdeps/unix/sysv/linux/mips/bits/shm.h: Likewise. + * sysdeps/generic/bp-semctl.h: New file. + * sysdeps/unix/sysv/linux/msgctl.c: Qualify kernel's data structure + pointers as __unbounded. Check bounds of syscall args. + * sysdeps/unix/sysv/linux/msgrcv.c: Likewise. + * sysdeps/unix/sysv/linux/msgsnd.c: Likewise. + * sysdeps/unix/sysv/linux/semctl.c: Likewise. + * sysdeps/unix/sysv/linux/semop.c: Likewise. + * sysdeps/unix/sysv/linux/shmat.c: Likewise. + * sysdeps/unix/sysv/linux/shmctl.c: Likewise. + * sysdeps/unix/sysv/linux/shmdt.c: Likewise. + * sysdeps/unix/sysv/linux/alpha/msgctl.c: Likewise. + * sysdeps/unix/sysv/linux/alpha/semctl.c: Likewise. + * sysdeps/unix/sysv/linux/alpha/shmctl.c: Likewise. + * sysdeps/unix/sysv/linux/i386/msgctl.c: Likewise. + * sysdeps/unix/sysv/linux/i386/semctl.c: Likewise. + * sysdeps/unix/sysv/linux/i386/shmctl.c: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/msgctl.c: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/semctl.c: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/shmctl.c: Likewise. + +2000-07-26 Ulrich Drepper + + * libio/iofwide.c: Enable transliteration for conversion from wchar_t + by default. + * locale/C-ctype.c: Likewise. + * wcsmbs/wcsmbsload.c: Likewise. + +2000-07-26 Greg McGary + + * Makeconfig (+link-bounded, link-libc-bounded, + link-extra-libs-bounded): New variables. + (built-program-cmd): Omit $(run-program-prefix) for static BP tests. + * Makerules (do-tests-clean, common-mostlyclean): Remove BP test files. + * Rules (tests-bp.out): New variable. + (tests): Conditionally add BP tests. + (binaries-bounded): Add variable and associated rule. + * csu/Makefile [build-bounded] (extra-objs, install-lib): + Move conditional stuff after place where condition is defined. + + * malloc/malloc.c (bp-checks.h): Add #include. + (mem2chunk, chunk_at_offset, bin_at): Wrap BOUNDED_1 around expression. + (_bin_at): Add unbounded version of bin_at. + (IAV, chunk_alloc): Use unbounded _bin_at. + (mALLOc, rEALLOc, chunk_realloc, mEMALIGn, cALLOc, + chunk2mem_check, realloc_check, malloc_starter, malloc_atfork): + Wrap BOUNDED_N around return value. + (chunk_realloc): Adjust oldsize once. + + * sysdeps/generic/bp-checks.h (__memchr): Remove incorrect decl. + (__ubp_memchr): Add correct decl. + (_CHECK_STRING): Use __ubp_memchr. + * sysdeps/alpha/memchr.S [!__BOUNDED_POINTERS__] (__ubp_memchr): + New alias for unbounded-pointer __memchr. + * sysdeps/i386/memchr.S: Likewise. + * sysdeps/ia64/memchr.S: Likewise. + * sysdeps/m68k/memchr.S: Likewise. + * sysdeps/sparc/sparc32/memchr.S: Likewise. + * sysdeps/sparc/sparc64/memchr.S: Likewise. + * sysdeps/vax/memchr.s: Likewise. + + * sysdeps/i386/strtok.S: Fix bounds checks to pass tests. + (SAVE_PTR): New macro. (save_ptr): Expand size as BP. + (strtok): Don't bother to write into SAVE_PTR when returning NULL. + * sysdeps/i386/i686/strtok.S: Likewise. + * sysdeps/i386/bp-asm.h (RETURN_BOUNDED_POINTER, + RETURN_NULL_BOUNDED_POINTER): Use %ecx as the scratch register. + + * sysdeps/i386/bits/string.h [!__BOUNDED_POINTERS__]: Disable inlines. + * sysdeps/i386/i486/bits/string.h [!__BOUNDED_POINTERS__]: Likewise. + + * sysdeps/unix/sysv/linux/getsysstats.c (get_proc_path): Copy + bounds of copy_result to mount_proc. + +2000-07-25 Bruno Haible + + * wctype/wctype.h (__wctrans_l): New declaration. + * wctype/wctrans_l.c: New file. + * wctype/Makefile (routines): Add wctrans_l. + +2000-07-26 Ulrich Drepper + + * posix/fnmatch_loop.c: Fixes for use outside glibc. + Patch by MacGyver . + +2000-07-26 Andreas Jaeger + + * rt/tst-aio4.c: New file, slightly modified version of tst-aio2. + * rt/tst-aio5.c: New file, slightly modified version of tst-aio2. + * rt/Makefile: Add rules to build and run tst-aio4 and tst-aio5. + + * rt/tst-aio.c (test_file): Fix typo. + * rt/tst-aio64.c (test_file): Likewise. + + * rt/tst-aio3.c: New file, slightly modified version of tst-aio2. + * rt/Makefile: Add rules to build and run tst-aio3. + + * sysdeps/unix/sysv/linux/netinet/ip.h: Removed ip_options since + it's not needed and confuses only. + +2000-07-26 Ulrich Drepper + + * resolv/res_init.c: Add support for nameserver communication with + IPv6. + * resolv/res_send.c: Likewise. + * resolv/resolv.h (struct __res_state): Store IPv6 address, not IPv4 + in nsaddrs field. + Patch by . + +2000-07-25 Bruno Haible + + * locale/programs/ld-ctype.c (wctype_table_get): New function. + (wcwidth_table_get): New function. + (wcwidth_table_add): Call it. + (wctrans_table_get): New function. + (wctrans_table_add): Call it. + +2000-07-25 Ulrich Drepper + + * rt/lio_listio.c (lio_listio): Always disable individual + notification. + * rt/Makefile: Add rules to build and run tst-aio2. + * rt/tst-aio2.c: New file. + + * rt/lio_listio.c (lio_listio): Handle case of SIG == NULL correctly. + Reported by Kevin Beard . + +2000-07-25 Mark Kettenis + + * nss/nss_files/files-netgrp.c (strip_whitespace): New function. + (_nss_netgroup_parseline): Use strip_whitespace to strip off any + leading and trailing spaces from host, user and domain name. + +2000-07-25 Jes Sorensen + + * csu/defs.awk: Add support for need_endp. + +2000-07-25 Mark Kettenis + + * resolv/resolv.h: Remove __P from res_send_qhook and + res_send_rhook typedefs. + +2000-07-25 Bruno Haible + + * intl/tst-translit.c (main): Unset OUTPUT_CHARSET. + +2000-07-25 Ulrich Drepper + + * iconv/gconv_builtin.h: Add WCHAR_T alias. + +2000-07-25 Mark Kettenis + + * hurd/thread-cancel.c (hurd_thread_cancel): When cancelling the + calling thread, set the cancellation flag and return success + instead of EINTR. + +2000-07-25 Ulrich Drepper + + * libio/Makefile: Add rules build, run, and distribute tst-widetext.c. + * libio/tst-widetext.c: New file. + * libio/tst-widetext.input: New file. + + * libio/iogetwline.c (_IO_getwline_info): Pretty print. + + * libio/wfileops.c (_IO_wfile_underflow): Handle not entirely + empty external buffer correctly. + +2000-07-25 Maciej W. Rozycki + + * sysdeps/mips/dl-machine.h (_RTLD_PROLOGUE): Stringify using + __STRING(entry) and not #entry. + (_RTLD_EPILOGUE): Likewise. + * sysdeps/mips/mips64/dl-machine.h: Likewise. + +2000-07-25 Andreas Jaeger + + * stdio-common/Makefile ($(objpfx)tst-unbputc.out): Change parameter + according to changes in test program, run also with static only + builds. + ($(objpfx)tst-printf.out): Likewise. + + * stdio-common/tst-unbputc.sh: Likewise. + * stdio-common/tst-printf.sh: Likewise. + +2000-07-25 Ulrich Drepper + + * libio/wfileops.c (_IO_wdo_write): Correct return value. + + * libio/wfileops.c (_IO_wdo_write): Allow partial conversions in the + loop. + + * libio/fileops.c: Pretty print. + +2000-07-23 Bruno Haible + + * wctype/wchar-lookup.h: New file. + * wctype/iswctype.c: Include "wchar-lookup.h". + (__iswctype): Support alternate locale format with 3-level tables. + * wctype/iswctype_l.c (__iswctype_l): Likewise. + * wctype/towctrans.c (__towctrans): Likewise. + * wctype/towctrans_l.c (__towctrans_l): Likewise. + * wctype/wcfuncs.c: Include "wchar-lookup.h". + (__ctype32_wctype, __ctype32_wctrans): Declare external. + (__iswalnum, __iswalpha, __iswcntrl, __iswdigit, __iswlower, + __iswgraph, __iswprint, __iswpunct, __iswspace, __iswupper, + __iswxdigit, towlower, towupper): Support alternate locale format + with 3-level tables. + * wctype/wcextra.c (iswblank): Likewise. + * wctype/wcfuncs_l.c: Include "wchar-lookup.h". + (__iswalnum_l, __iswalpha_l, __iswcntrl_l, __iswdigit_l, __iswlower_l, + __iswgraph_l, __iswprint_l, __iswpunct_l, __iswspace_l, __iswupper_l, + __iswxdigit_l, __towlower_l, __towupper_l): Support alternate locale + format with 3-level tables. + * wctype/wcextra_l.c (__iswblank_l): Likewise. + * wctype/wctype.c (__wctype): Likewise. In the alternate locale + format, return a 3-level table pointer. + * wctype/wctype_l.c (__wctype_l): Likewise. + * wctype/wctrans.c (wctrans): Likewise. + * wctype/wctype.h (__ISwupper, __ISwlower, __ISwalpha, __ISwdigit, + __ISwxdigit, __ISwspace, __ISwprint, __ISwgraph, __ISwblank, + __ISwcntrl, __ISwpunct, __ISwalnum): New enum values. + (iswctype): Remove macro definition. + * wcsmbs/wcwidth.h: Include "wchar-lookup.h". + (internal_wcwidth): Support alternate locale format with 3-level + tables. + * locale/langinfo.h (_NL_CTYPE_CLASS_OFFSET, _NL_CTYPE_MAP_OFFSET): + New nl_items. + * locale/categories.def (_NL_CTYPE_CLASS_OFFSET, _NL_CTYPE_MAP_OFFSET): + Define them as being type "word". + * locale/C-ctype.c (_nl_C_LC_CTYPE): Add initializers for them. + * ctype/ctype-info.c (__ctype32_wctype, __ctype32_wctrans, + __ctype32_width): New exported variables. + * locale/lc-ctype.c (_nl_postload_ctype): Initialize them in the + alternate locale format. Don't initialize __ctype_names and + __ctype_width in the alternate locale format. + * locale/programs/localedef.h (oldstyle_tables): New declaration. + * locale/programs/localedef.c (oldstyle_tables): New variable. + (OPT_OLDSTYLE): New macro. + (options): Add --old-style option. + (parse_opt): Handle --old-style option. + * locale/programs/ld-ctype.c (locale_ctype_t): Add class_offset, + map_offset, class_3level, map_3level, width_3level members. + (ctype_output): Support for alternate locale format: Computation of + nelems changes. _NL_CTYPE_TOUPPER32, _NL_CTYPE_TOLOWER32 and + _NL_CTYPE_CLASS32 only 256 characters. _NL_CTYPE_NAMES empty. + New fields _NL_CTYPE_CLASS_OFFSET, _NL_CTYPE_MAP_OFFSET. Field + _NL_CTYPE_WIDTH now contains the three-level table. Extra elems + now contain both class and map tables. + (struct wctype_table): New type. + (wctype_table_init, wctype_table_add, wctype_table_finalize): New + functions. + (struct wcwidth_table): New type. + (wcwidth_table_init, wcwidth_table_add, wcwidth_table_finalize): New + functions. + (struct wctrans_table): New type. + (wctrans_table_init, wctrans_table_add, wctrans_table_finalize): New + functions. + (allocate_arrays): Support for alternate locale format: Set + plane_size and plane_cnt to 0. Restrict ctype->ctype32_b to the first + 256 characters. Compute ctype->class_3level. Restrict ctype->map32[idx] + to the first 256 characters. Compute ctype->map_3level. Set + ctype->class_offset and ctype->map_offset. Compute ctype->width_3level + instead of ctype->width. + +2000-07-24 Ulrich Drepper + + * libio/iogetwline.c (_IO_getwline_info): Use wide character + string functions. + +2000-07-24 Jakub Jelinek + + * libio/wfiledoalloc.c (_IO_wfile_doallocate): Measure size + in wide characters, not bytes. + * libio/tst_putwc.c (do_test): Add test for writing lots of data + into file. + +2000-07-22 Bruno Haible + + * locale/nl_langinfo.c (nl_langinfo): Accept items belonging to the + new categories LC_PAPER, LC_NAME, LC_ADDRESS, LC_TELEPHONE, + LC_MEASUREMENT, LC_IDENTIFICATION. + + * locale/xlocale.h (struct __locale_struct): Increase size of + __locales array. + * locale/duplocale.c (__duplocale): Copy newly added categories as + well. + * locale/freelocale.c (__freelocale): Free newly added categories. + * locale/newlocale.c (__newlocale): Fix typo in sanity check. + If a base is given, use it, don't simply return it. + +2000-07-22 Bruno Haible + + * crypt/md5-crypt.c (__md5_crypt_r): Avoid gcc warnings: Use pointer + variables, copied_key and copied_salt, instead of boolean variables. + +2000-07-24 Andreas Jaeger + + * sysdeps/unix/sysv/linux/powerpc/mmap64.c (__mmap64): Really fix + check for offset. + + * grp/initgroups.c (initgroups_dyn_function): Renamed from + initgroups_function, adopted prototype for change from 2000-07-23. + (initgroups): Follow type change. + + * sysdeps/unix/sysv/linux/powerpc/mmap64.c (__mmap64): Fix offset + & PAGE_MASK case, reformat. + + * string/Makefile ($(objpfx)tst-svc.out): Fix rule to read input + from stdin and setup environment. + +2000-07-24 Andreas Schwab + + * sysdeps/unix/sysv/linux/m68k/mmap.S: Remove mmap64 alias. + +2000-07-23 Ulrich Drepper + + * string/endian.h: Explain the _*_ENDIAN constant values a bit + more. Patch by scarlet@mit.edu [PR libc/1799]. + + * io/ftwtest-sh: Add -f parameter to chmod if -R is also given. + [PR libc/1792]. + + * argp/argp-parse.c (parser_finalize): Reverse order in which + parsers are run for ARGP_KEY_END. [PR libc/1755]. + + * grp/initgroups.c (initgroups): Don't limit the possible number + of groups to NGROUPS_MAX. Allow dynamic resizing. Loop around + the setgroups call while the call fails and descrease the number + of groups each round. + The name of the initgroups function in the NSS modules changed. + (compat_call): Adapt for dynamic resizing. + * hesiod/nss_hesiod/hesiod-grp.c (_nss_hesiod_initgroups_dyn): + Implement dynamic resizing. + * nis/nss_compat/compat-initgroups.c (_nss_compat_initgroups_dyn): + Likewise. + * nis/nss_nis/compat-initgroups.c (_nss_nis_initgroups_dyn): Likewise. + * hesiod/Versions: Change exported interface name. + * nis/Versions: Change exported interface name. + +2000-07-23 Ulrich Drepper + + * locale/iso-639.def: Some errors corrected. + Patch by Keld Simonsen. + + * include/limits.h: Update non-gcc portion. + Patch by Joseph S. Myers . + +2000-07-22 Mark Kettenis + + * sysdeps/mach/hurd/brk.c (_hurd_set_brk): When shrinking the + program's data space, reallocate only the space that was just + deallocated to release its backing space. + +2000-07-23 Ulrich Drepper + + * stdio-common/vfprintf.c (process_string_arg): For wide character + version, handle precision also correctly. + + * nss/nss_files/files-hosts.c: Correct problem with three or more + entries with the same name. + + * nss/nss_files/files-hosts.c: Implement multi handling. + * resolv/Versions: Export _res_hconf for GLIBC_2.2 from libc. + +2000-07-22 Ulrich Drepper + + * nss/nss_files/files-parse.c: Don't pollute namespace by using + strcasecmp. + + * grp/Makefile: Change Makefiles and tests to run only when necessary. + * malloc/Makefile: Likewise. + * malloc/tst-mtrace.sh: Likewise. + * posix/Makefile: Likewise. + * posix/globtest.sh: Likewise. + * posix/wordexp-tst.sh: Likewise. + * string/Makefile: Likewise. + +2000-07-22 Mark Kettenis + + * locale/findlocale.c (locale_file_list): Use __LC_LAST as array + size instead of LC_ALL to take into account the new locale + categories. + +2000-07-22 Ulrich Drepper + + * iconv/gconv_trans.c: Correct a few bugs in the search loop. Remove + remainders of hash table. + * locale/categories.def: Remove remainders of transliteration + hash table. + * locale/langinfo.h: Likewise. + * locale/programs/ld-ctype.c: Likewise. Fix code to write out + transliteration tables. + + * locale/gen-translit.pl: New file. + * locale/C-translit.h.in: New file. + * locale/C-ctype.c: Include C-translit.h. Initialize transliteration + data pointers with data from this file. + * locale/Makefile (distribute): Add C-translit.h.in, C-translit.h, + and gen-translit.pl. + Add rule to generate C-translit.h. + * intl/tst-translit.c (main): Update for now performed + transliteration. + + * stdio-common/vfscanf.c: Handle input -- with format %f correctly + (it's no input error). + * stdio-common/tstscanf.c: Add test case for format %f with input --. + * stdio-common/scanf12.c: Correct expected result for first scanf. + + * stdio-common/vfprintf.c (process_string_arg): Correct handling + of multibyte character strings in %s format with precision. + +2000-07-21 Ulrich Drepper + + * locale/programs/ld-collate.c (collate_read): Allow collating + symbols and elements be named in reorder-after instructions. + Reported by Yoshito Kawada . + + * locale/programs/ld-collate.c (handle_ellipsis): Test for + duplication with generated name, not the name of the first + character. + Patch by Yong Li . + + * sysdeps/powerpc/strchr.S: Correct bugs introduced in BP-ification. + Patch by Franz Sirl . + +2000-07-21 Wolfram Gloger + + * malloc/malloc.c (chunk_alloc): Try mmap_chunk() for smaller + allocations only if a non-main arena cannot be extended. + +2000-07-21 Ulrich Drepper + + * elf/dl-load.c (_dl_map_object): Take loader==NULL into account + in DF_1_NODEFLIB handling. + +2000-07-21 Andreas Jaeger + + * elf/Makefile ($(test-modules)): Exclude filtmod1.so, it has its + own rule. + + * libio/fwide.c: Include for prototype. + +2000-07-21 Greg McGary + + * malloc/malloc.c (next_chunk, prev_chunk, inuse_bit_at_offset, + set_inuse_bit_at_offset, clear_inuse_bit_at_offset, set_foot): + Define in terms of chunk_at_offset. + (inuse, set_inuse, clear_inuse): Define in terms of next_chunk. + (next_bin, prev_bin): offset by size of real array elements. + (chunk_align): Make `m' a scalar, since that's how it's used. + +2000-07-21 Greg McGary + + * sysdeps/powerpc/bp-asm.h (DISCARD_BOUNDS): Rename from + UNCHECK_BOUNDS. + * sysdeps/powerpc/bits/setjmp.h (JB_SIZE): New constant. + * sysdeps/powerpc/elf/libc-start.c (__libc_start_main): + Wrap bounds around argv & envp and each of their string members. + * sysdeps/powerpc/elf/start.S: Designate BP symbols. + * sysdeps/unix/sysv/linux/powerpc/brk.S: Wrap entry-point + symbol in BP_SYM (). Discard bounds of address arg. + * sysdeps/unix/sysv/linux/powerpc/clone.S: Likewise. + * sysdeps/unix/sysv/linux/powerpc/mmap64.c (__mmap64): + Discard bounds on address arg, add bounds to return value. + +2000-07-20 Ulrich Drepper + + * elf/Makefile (tests): Add filter. Add rules to generate filter. + * elf/filter.c: New file. + * elf/filtmod1.c: New file. + * elf/filtmod2.c: New file. + + * elf/rtld.c: Define _dl_bind_not variable. + (process_envvars): Recognize LD_BIND_NOT and set _dl_bind_not. + * elf/dl-support.c: Likewise. + * sysdeps/generic/ldsodefs.h: Declare _dl_bind_not. + * elf/dl-runtime.c (fixup): Don't remember looked up value if + _dl_bind_not. + (profile_fixup): Likewise. + + * libio/Makefile (routines): Add fwide. + * libio/iofwide.c (_IO_fwide): Remove locking. This is done in + fwide now. Internal calls to _IO_fwide must do locking themselves + or don't need locking. + * libio/fwide.c: New file. + + * elf/dl-load.c (_dl_map_object): Implement handling of DF_1_NODEFLIB. + + * elf/Makefile: Add no modules for nodelete test. + * elf/nodelmod3.c: New file. + * elf/nodelmod4.c: New file. + * elf/nodelete.c: Also test case where dependency of dlopen() object + is marked nodelete. + + * elf/Makefile (tests): Add nodlopen. Add rules to generate nodlopen. + * elf/nodlopen.c: New file. + * elf/nodlopenmod.c: New file. + * include/dlfcn.h: Define __RTLD_DLOPEN. + * elf/dl-load.c (_dl_map_object_from_fd): If DF_1_NOOPEN is set + and this is a dlopen() call, do not load the binary. + * dlfcn/dlopen.c: Add __RTLD_DLOPEN to mode passed down to _dl_open. + * dlfcn/dlopenold.c: Likewise. + * configure.in: Add test for -z nodelete option. + * config.make.in: Define have-z-nodelete with libc_cv_z_nodelete. + +2000-07-20 Mark Kettenis + + Make Hesiod NSS module thread-safe. + + * hesiod/README.hesiod: Update. + + * hesiod/Versions [GLIBC_2.2]: Add _nss_hesiod_getservbyport_r, + _nss_hesiod_setprotoent, _nss_hesiod_endprotoent, + _nss_hesiod_getprotobyname_r, and _nss_hesiod_getprotobynumber_r. + * hesiod/Makefile (libnss_hesiod-routines): Add hesiod-init and + hesiod-proto. + * hesiod/nss_hesiod/hesiod-init.c: New file. + * hesiod/nss_hesiod/hesiod-pwd.c: Rewritten for thread-safeness. + * hesiod/nss_hesiod/hesiod-grp.c: Likewise. + * hesiod/nss_hesiod/nss_hesiod.h: New file. + * hesiod/nss_hesiod/hesiod-service.c + (_nss_hesiod_getservbyport_r): New function. Provide support for + looking up services by port number. + * hesiod/nss_hesiod/hesiod-proto.c: New file. + + * hesiod/hesiod.c: Update from BIND 8.2.3-T5B. + * hesiod/hesiod.h: Likewise. + * hesiod/hesiod_p.h: Likewise. + +2000-07-20 Mark Kettenis + + Fix problems with `struct __res_state' getting too big. + * resolv/resolv.h (struct __sockaddr_in): New definition. + (struct __res_state): Use __sockaddr_in instead of sockaddr_in in + the private parts of the structure to save some space. + * resolv/res_send.c (res_nsend): Cast &EXT(statp).nsaddrs[ns] to + (struct sockaddr_in *) in call to sock_eq. + Use memcpy to copy statp->nsaddr_list[ns] to &EXT(statp).nsaddrs[ns]. + +2000-07-20 Ulrich Drepper + + * elf/elf.h: Add various DF_1_*, DTF_1_*, and DF_P1_* entries. + * elf/dl-close.c (_dl_close): Don't close an object if it is marked + with nodelete. + * elf/dl-open.c (dl_open_worker): Pass RTLD_NOLOAD as new parameter + to _dl_map_object. Return immediately if no object loaded. + Set DF_1_NODELETE bit in l_flags_1 if RTLD_NODELETE was passed. + * elf/dynamic-link.h (elf_get_dynamic_info): Copy DT_FLAGS_1 entry + if it exists into l_flags_1 word. + * elf/dl-load.c (_dl_map_object_from_fd): Take no parameter and use + it to determine whether loading is wanted or not. + (_dl_map_object): Likewise. + Call _dl_map_object_from_fd with new parameter. + * sysdeps/generic/ldsodefs.h: Update prototype. + * elf/dl-deps.c: Add new parameter to _dl_map_object calls. + * elf/rtld.c: Likewise. + * sysdeps/mach/hurd/dl-sysdep.c: Likewise. + * elf/Makefile (tests): Add noload. Add rules to generate noload. + * elf/noload.c: New file. + * include/link.h (struct link_map): Add l_feature_1 and l_flags_1. + * sysdeps/generic/bits/dlfcn.h: Define RTLD_NOLOAD and RTLD_NODELETE. + * sysdeps/mips/bits/dlfcn.h: Likewise. + * elf/Makefile (tests): Add $(tests-nodelete-$(have-z-nodelete)). + (tests-nodelete-yes): Define. + (modules-names): Add $(modules-nodelete-$(have-z-nodelete)). + Add rules to build nodelete and modules. + * elf/nodelete.c: New file. + * elf/nodelmod1.c: New file. + * elf/nodelmod2.c: New file. + * configure.in: Add test for -z nodelete option. + * config.make.in: Define have-z-nodelete with libc_cv_z_nodelete. + + * libio/Makefile (tests): Add tst_wprintf2. + (tst_wprintf2-ARGS): Define. + * libio/tst_wprintf2.c: New file. + Based on a test case by Yoshito Kawada . + + * libio/wfiledoalloc.c: Only allocate external buffer if this + hasn't happened yet. + + * libio/wfileops.c (_IO_wdo_write): Overflow only if there is really + something in the buffer. gconv call can write up to end of the + buffer, not only _IO_write_end. + (_IO_wfile_overflow): Allocate also external buffer. + +2000-07-19 Ulrich Drepper + + * stdio-common/vfprintf.c (process_string_arg): Handle multibyte + strings with precision in vfwprintf correctly. + * stdio-common/vfprintf.c: Fix completely broken handling of + unbuffered wide character streams. + Reported by Yoshito Kawada . + + * resolv/Makefile (distribute): Add README. + + * resolv/README: New file. By Mark Kettenis . + +2000-07-18 Mark Kettenis + + Update resolver code to BIND 8.2.3-T5B. + + * resolv/Versions [GLIBC_2.2] (libc): Add __res_init and + __res_nclose. + [GLIBC_2.2] (libresolv): Add __dn_expand, __ns_samename, + __res_mkquery, __res_nsend, __res_query, __res_querydomain and + __res_search. + * resolv/Banner: BIND-8.2.3-T5B. + + * resolv/base64.c: Update from BIND 8.2.3-T5B. + * resolv/herror.c: Likewise. + * resolv/inet_addr.c: Likewise. + * resolv/inet_net_ntop.c: Likewise. + * resolv/inet_net_pton.c: Likewise. + * resolv/inet_neta.c: Likewise. + * resolv/inet_ntop.c: Likewise. + * resolv/nsap_addr.c: Likewise. + * resolv/inet_pton.c: Likewise. Reject a few more more invalid + IPv6 addresses (ISC bug #520). + + * resolv/ns_name.c: Avoid emitting RCS ID in object file. + * resolv/ns_parse.c: Likewise. + * resolv/ns_netint.c: Likewise. + * resolv/ns_samedomain.c: Likewise. + * resolv/ns_ttl.c: Likewise. + * resolv/ns_print.c: Update from BIND 8.2.3-T5B. Avoid emitting + RCS ID in object file. + + * resolv/res_debug.c: Update from BIND 8.2.3-T5B. + * resolv/res_mkquery.c: Likewise. + * resolv/res_query.c: Likewise. + * resolv/res_init.c: Likewise. + (res_setoptions): Mark internal. + * resolv/res_send.c: Likewise. + [_LIBC]: Fully reinstate the code that avoids the FD_SETSIZE limit + by using poll instead. + * resolv/res_comp.c: Likewise. + [SHLIB_COMPAT (libresolv, GLIBC_2_0, GLIBC_2_2)]: Make dn_expand a + weak alias for __dn_expand. + * resolv/res_data.c: Likewise. + (res_close) [_LIBC]: Don't call res_nclose if RES_INIT isn't set + in _res.options. Avoids a potential security risk by avoiding a + close (0). + [SHLIB_COMPAT (libresolv, GLIBC_2_0, GLIBC_2_2)]: Make + res_mkquery, res_query, res_querydomain adn res_search weak + aliases for __res_mkquery, __res_query, __res_querydomain and + __res_search. + * resolv/res_libc.c: (_res): Don't initialize. Fix res_close + instead to avoid close(0). + (res_init): Always use the static resolver context. + [SHLIB_COMPAT (libc, GLIBC_2.0, GLIBC_2_2)]: Make res_init a weak + alias for __res_init. + + * resolv/resolv.h: Update from BIND 8.2.3-T5B. Move definition of + RES_SET_H_ERRNO and accompanying comment to... + * include/resolv.h: ... here. + + * resolv/arpa/namser.h: Update from BIND 8.2.3-T5B. + * resolv/arpa/nameser_compat.h: Likewise. + +2000-07-18 Ulrich Drepper + + * nss/makedb.c (main): Compare result of load_db with + NSS_STATUS_SUCCESS and not 0. + Patch by Jan Rekorajski . + + * sysdeps/unix/sysv/linux/Versions: Export __sysctl for GLIBC_2.2. + +2000-07-18 Greg McGary + + * posix/regex.c (EXTEND_BUFFER_HIGH_BOUND): New macro. + (EXTEND_BUFFER): Use it. + +2000-07-18 Ulrich Drepper + + * include/libc-symbols.h: Define RETURN_ADDRESS macro. + * dlfcn/dlopen.c: Use RETURN_ADDRESS instead of + __builtin_return_address. + * dlfcn/dlopenold.c: Likewise. + * dlfcn/dlsym.c: Likewise. + * dlfcn/dlvsym.c: Likewise. + * elf/dl-profstub.c: Likewise. + * malloc/malloc.c: Likewise. + * sysdeps/generic/machine-gmon.h: Likewise. + Based on a patch by schwidefsky@de.ibm.com. + +2000-07-18 Andreas Jaeger + + * sysdeps/alpha/dl-machine.h (elf_machine_rela): Pass 0 instead of + NULL to elf_machine_fixup_plt t argument to silence GCC. + + * include/string.h: Add prototype for __memchr. + + * sysdeps/alpha/memchr.S: Fix copy & error in weak_alias. + + * sysdeps/generic/memchr.c: Fix copy & paste error: Use memchr + instead of memrchr. + +2000-07-18 Ulrich Drepper + + * intl/Makefile: Make sure tst-translit is run after tst-gettext. + + * locale/C-ctype.c: Add initializers for gap elements. + * locale/programs/ld-ctype.c (ctype_output): Write out index entries + for gap elements. + +2000-07-16 Ulrich Drepper + + * nscd/nscd.c (print_version): Update copyright year. + +2000-07-17 Greg McGary + + * sysdeps/unix/make-syscalls.sh: Handle new arg signature + keyletters F, I, S, W. Remove unused keyletter V. Surround + signature argnames with angle-brackets for use as word delimiters, + and to induce syntax errors for any args not handled. Split + multi-echo echoes and comment each stage. + * sysdeps/unix/common/syscalls.list: Refine & correct signatures. + * sysdeps/unix/inet/syscalls.list: Likewise. + * sysdeps/unix/mman/syscalls.list: Likewise. + * sysdeps/unix/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/ia64/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/mips/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/syscalls.list: Likewise. + * sysdeps/unix/sysv/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/powerpc/syscalls.list + + * sysdeps/generic/strcpy.c (strcpy): Stifle unused-value warnings. + * sysdeps/unix/sysv/linux/execve.c (__execve): Add const + qualifiers. Don't check NULL-terminator of argv & envp. + * sysdeps/unix/sysv/linux/getsysstats.c (get_proc_path): Use + unbounded pointer type in word-size assertion. + * sysdeps/unix/sysv/linux/ptrace.c (ptrace): Add missing + cases to stifle warnings. + + * libio/iofdopen.c (_IO_new_fdopen): Pass _IO_FILE_plus pointer to + _IO_file_attach. + * libio/iovdprintf.c (_IO_vdprintf): Likewise. + + * include/libc-symbols.h (symbol_set_declare): Revert 2000-06-26 mods. + * include/set-hooks.h (RUN_HOOK): Revert 2000-06-26 mods. Qualify + ptr as __unbouned. + + * Makerules (o-objects): Supplement with $(o-objects$o). + * string/Makefile (o-objects.ob): Add variable to pull + unbounded versions of memcpy, memset and memchr into libc_b. + + * sysdeps/generic/bp-checks.h: Use unbounded __memchr + rather than non-existent __ubp_memchr. + (CHECK_STRINGopt, CHECK_FCNTL, BOUNDED_N, BOUNDED_1): New macros. + (_CHECK_STRING, _CHECK_N): New macros. + (CHECK_STRING, CHECK_N, CHECK_Nopt): Rewrite in terms of _CHECK_*. + (CHECK_IOCTL): Move inside `#if !__ASSEMBLER__'. + * sysdeps/alpha/memchr.S: Change strong name to "__memchr". + Add weak alias "memchr". + * sysdeps/generic/memchr.c: Likewise. + * sysdeps/i386/memchr.S: Likewise. + * sysdeps/ia64/memchr.S: Likewise. + * sysdeps/m68k/memchr.S: Likewise. + * sysdeps/sparc/sparc32/memchr.S: Likewise. + * sysdeps/sparc/sparc64/memchr.S: Likewise. + * sysdeps/vax/memchr.s: Likewise. + + * iconv/gconv_trans.c: Add #include to get malloc decl. + + * elf/dl-runtime.c (fixup): Trampoline passes unbounded pointer. + (profile_fixup): Don't define for __BOUNDED_POINTERS__. + * sysdeps/i386/dl-machine.h: Don't use regparm attribute for + __BOUNDED_POINTERS__. + (ELF_MACHINE_RUNTIME_TRAMPOLINE): Use non-regparm version + for __BOUNDED_POINTERS__. + +2000-07-17 Bruno Haible + + * iconv/gconv_open.c (__gconv_open): Initialize the __data + field of struct __gconv_trans_data differently. Don't pass NULL to + trans_init_fct. Simplify list append operation. + +2000-07-14 Bruno Haible + + * intl/dcigettext.c (dcigettext): Call plural_eval on all platforms, + not only those having tsearch. + +2000-07-17 Ulrich Drepper + + * locale/langinfo.h: Add placeholder values in enum for removed + LC_CTYPE entries. + +2000-07-17 Jakub Jelinek + + * elf/dl-addr.c (_dl_addr): Keep searching in the _dl_loaded + chain if the PHDR check fails. + +2000-07-17 Mark Kettenis + + * nss/getent.c (print_hosts): Make sure we always print a space + between numeric addresses and hostnames. + +2000-07-17 Wolfram Gloger + + * malloc/malloc.c (chunk_alloc): Use mmap_chunk() only if allowed, + i.e. if n_mmaps_max>0. + +2000-07-16 Mark Kettenis + + * resolv/netdb.h (AI_V4MAPPED, AI_ALL, AI_ADDRCONFIG): Adjust + values to remove possible clash with other AI_* constants. + (AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST): Define as + hexadecimal constants to stress the fact they're in fact + bit flags. + +2000-07-15 Mark Kettenis + + * nss/getXXent_r.c [NEED__RES]: Include . + (SETFUNC_NAME, ENDFUNC_NAME, REENTRANT_GETNAME): Use res_ninit + instead of res_init. + +2000-07-16 Ulrich Drepper + + * crypt/md5-crypt.c (__md5_crypt_r): Add casts for first + parameters of memset calls to avoid warnings. + +2000-07-15 Ulrich Drepper + + * stdlib/Makefile: Rewrite rules to avoid running isomac unless + necessary. + + * sysdeps/unix/sysv/linux/getcwd.c: Correct last patch. + Patch by Greg McGary . + + * io/Makefile (tests): Add tst-getcwd. + * io/tst-getcwd.c: New file. + + * io/Makefile: Rewrite rules to avoid running ftwtest unless necessary. + +2000-07-15 Jakub Jelinek + + * iconv/gconv_open (__gconv_open): Initialize whole __gconv_trans_data + structure. + +2000-07-13 Jakub Jelinek + + * sysdeps/posix/sysconf.c: Undef __sysconf before weak_alias. + * sysdeps/unix/bsd/getpt.c: Undef __getpt before weak_alias. + +2000-07-12 H.J. Lu + + * sysdeps/unix/sysv/linux/ia64/Versions (libc): Add __clone2 to + GLIBC_2.2. + * sysdeps/unix/sysv/linux/ia64/Dist: Add clone2.S. + * sysdeps/unix/sysv/linux/ia64/Makefile [$(subdir)=misc] + (sysdep-routines): Add clone2. + * sysdeps/unix/sysv/linux/ia64/clone2.S: New. + +2000-07-13 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/clone.S: New file. + * sysdeps/unix/sysv/linux/ia64/fork.c: New file. + +2000-06-05 David Mosberger + + * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: New file + based on sysdeps/unix/sysv/linux/bits/siginfo.h. + Change type of si_band from "int" to "long". + (si_imm) [USE_GNU]: Define + (si_isr) [USE_GNU]: Likewise. + (ILL_BREAK) [USE_GNU]: Likewise. + (FPE_DECOVF) [USE_GNU]: Likewise. + (FPE_DECDIV) [USE_GNU]: Likewise. + (FPE_DECERR) [USE_GNU]: Likewise. + (FPE_INVASC) [USE_GNU]: Likewise. + (FPE_INVDEC) [USE_GNU]: Likewise. + (TRAP_BRANCH) [USE_GNU]: Likewise. + (TRAP_HWBKPT) [USE_GNU]: Likewise. + +2000-07-06 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/sys/ucontext.h: Do not include + bits/sigcontext as struct mcontext does not depend on it. + + * sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h: New file. + +2000-07-04 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/shmctl.c: Removed. + +2000-07-04 David Mosberger-Tang + + * sysdeps/unix/sysv/linux/ia64/bits/msq.h: New file. + +2000-06-22 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/bits/mman.h: New file. + +2000-07-15 Ulrich Drepper + + * intl/Makefile (test-srcs): Add tst-translit. + (tests): Likewise. + Add rules to build and run tst-translit. + * intl/tst-translit.c: New file. + * intl/tst-translit.sh: New file. + * intl/translit.po: New file. + +2000-07-14 Ulrich Drepper + + * iconv/loop.c (STANDARD_ERR_HANDLER): If one of the + transliteration function did its job, continue, don't stop. + + * iconvdata/iso646.c: Little optimizations in body for conversion + from UCS4. + +2000-07-14 Mark Kettenis + + * dlfcn/dlerror.c (free_key_mem): Add cast to silence compiler warning. + +2000-07-14 Mark Kettenis + + * configure.in: Check for pwd binary. + * config.make.in: Add PWD_P to be subsituted. + * Makerules: Use $(PWD_P) instead of /bin/pwd. + +2000-07-14 Ulrich Drepper + + * iconvdata/Makefile (modules): Add GB18030. + (distribute): Add gb18030.c. + * iconvdata/gconv-modules: Add entries for GB18030 module. + * iconvdata/gb18030.c: New file. + Contributed by Wang ShouHua + and Wu Jian. + +2000-07-13 Andreas Jaeger + + * sysdeps/unix/sysv/linux/getsysstats.c (free_mem): Revert last + patch. + + * grp/fgetgrent.c (free_mem): Remove if - free (0) is valid. + * inet/getnetgrent.c (free_mem): Likewise. + * misc/mntent.c (free_mem): Likewise. + * nss/getXXbyYY.c (free_mem): Likewise. + * nss/getXXent.c (free_mem): Likewise. + * pwd/fgetpwent.c (free_mem): Likewise. + * shadow/fgetspent.c (free_mem): Likewise. + +2000-07-14 Ulrich Drepper + + * sunrpc/xdr.c (xdr_u_long): Handle reading of unsigned long on + 64-bit architecture correctly [PR libc/1794]. + +2000-07-13 Ulrich Drepper + + * elf/Versions (ld): Export _dl_out_of_memory for GLIBC_2.2. + * dlfcn/dlerror.c (dlerror): Don't free the error string if it is the + report that we are out of memory. + * elf/dl-deps.c (_dl_map_object_deps): Likewise. + * elf/dl-libc.c (dlerror_run): Likewise. + * elf/dl-open.c (_dl_open): Likewise. + * elf/rtld.c (dl_main): Likewise. + * elf/dl-error.c: Define _dl_out_of_memory. + (_dl_signal_error): Return _dl_out_of_memory if we cannot duplicate + the error string. + * sysdeps/generic/ldsodefs.h: Declare _dl_out_of_memory. + [PR libc/1813]. + + * dlfcn/dlerror.c (free_key_mem): Also free error string. + + * iconv/loop.c: Fix comment. + + * malloc/mtrace.c (tr_freehook): Return immediately if ptr is NULL. + +2000-07-13 Andreas Jaeger + + * sysdeps/unix/sysv/linux/getcwd.c (__getcwd): Correctly handle + getcwd (NULL, size) with size > 0. + Fixes PR libc/1788, reported by John Buddery . + +2000-07-13 Andreas Jaeger + + * posix/Makefile: Remove build rules for libposix. + +2000-07-13 Andreas Schwab + + * sysdeps/generic/glob.c (glob): Fix memory leak. + [SHELL]: Remove reference to undefined variable `files'. + Fixes PR libc/1782. + +2000-07-13 Andreas Jaeger + + * sysdeps/unix/sysv/linux/mips/Versions: Add libgcc frame handling + functions. + + * sysdeps/unix/sysv/linux/getsysstats.c (free_mem): Only free + memory if it was allocated. + +2000-07-12 Ulrich Drepper + + * iconv/gconv_db.c (gen_steps): Always initialize __data field of + step. + + * iconv/gconv_open.c (__gconv_open): Reapply + 2000-07-12 Bruno Haible + + * iconv/gconv_open.c (__gconv_open): Merge duplicated code. + + * iconv/gconv_open.c: Undo last two changes for now. They break + everything. + +2000-07-12 Andreas Jaeger + + * elf/Makefile (SYSCONF-FLAGS): Added to pass sysconfdir to + compiler. + (CFLAGS-cache.c): Added, uses SYSCONF-FLAGS. + (CFLAGS-dl-cache.c): Likewise. + (CFLAGS-ldconfig.c): Added, passes directory locations. + + * sysdeps/generic/dl-cache.h (LD_SO_CACHE): Use SYSCONFDIR to + locate cache. + * elf/ldconfig.c (LD_SO_CONF): Likewise. + (main): Use configured LIBDIR and SLIBDIR. + +2000-07-11 Jakub Jelinek + + * math/bits/cmathcalls.h (cimag): Add __THROW. + (creal, conj): Likewise. + * wctype/wctype.h (_ISwbit): Avoid warnings about shifting left + by negative value. + +2000-07-12 H.J. Lu + + * resolv/Versions (libresolv): Add __res_hostalias to GLIBC_2.2 + for _nss_dns_gethostbyname2_r in resolv/nss_dns/dns-host.c. + +2000-07-12 Ulrich Drepper + + * wcsmbs/wcsmbsload.c (__wcsmbs_load_conv): Shut gcc up although + it is wrong. + +2000-07-12 Bruno Haible + + * iconv/gconv_open.c (__gconv_open): Merge duplicated code. + +2000-07-12 Bruno Haible + + * iconv/gconv_builtin.c (__gconv_get_builtin_trans): Initialize + __modname. + +2000-07-12 Bruno Haible + + * iconv/gconv_open.c (__gconv_open): Initialize + result->__steps[cnt].__data. + +2000-07-12 Mark Kettenis + + * nss/getent.c (services_keys): Pass port number in network byte + order in call to getservbyport. + +2000-07-11 Andreas Jaeger + + * stdlib/Makefile (test-canon-ARGS): Fix for building in the + source dir. + * intl/Makefile (do-gettext-test): Likewise. + * dirent/Makefile (opendir-tst1-ARGS): Likewise. + +2000-07-11 Andreas Schwab + + * Makeconfig (run-program-prefix): New rule. + (built-program-cmd): Use run-program-prefix. + +2000-07-12 Ulrich Drepper + + * locale/langinfo.h: Make CRNCYSTR, RADIXCHAR, THOUSANDS_SEP, YESEXPR, + and NOEXPR unconditionally available. + +2000-07-12 Greg McGary + + * sysdeps/generic/open64.c: Wrap extern symbols in BP_SYM (). + * sysdeps/posix/open64.c: Likewise. + * sysdeps/generic/fegetenv.c: Likewise. + * sysdeps/powerpc/fpu/fegetenv.c: Likewise. + * sysdeps/powerpc/fpu/fesetenv.c: Likewise. + * sysdeps/powerpc/fpu/feupdateenv.c: Likewise. + * sysdeps/powerpc/fpu/fgetexcptflg.c: Likewise. + * sysdeps/powerpc/fpu/fraiseexcpt.c: Likewise. + * sysdeps/powerpc/fpu/fsetexcptflg.c: Likewise. + +2000-07-11 Greg McGary + + * include/libc-symbols.h [!__ASSEMBLER__] (strong_alias): + Add extra level of macro expansion. + [!__ASSEMBLER__ && HAVE_WEAK_SYMBOLS] (weak_alias): nLikewise. + * sysdeps/generic/bp-thunks.h: Ensure `struct timeval' definition + is available at the time `select' prototype is declared. + * sysdeps/unix/make-syscalls.sh: Remove unused variables. + Collect non-versioned weak aliases. Consider only non-versioned + aliases for the user-visible systemcall name. Do checks inline with + call to primitive system call. + * sysdeps/unix/sysv/linux/ptrace.c (ptrace): Add void cast to + stand-alone bounds checks to suppress unused value warnings. + * sysdeps/unix/sysv/linux/sysctl.c (__sysctl): Likewise. + +2000-07-10 Mark Kettenis + + * sysdeps/mach/hurd/check_fds.c: New file. Implements + file descriptor checking in SUID programs for the Hurd. + + * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyname2_r): Use + res_hostalias instead of __hostalias for thread-safety. + +2000-07-09 Mark Kettenis + + * elf/rtld.c (dl_main): Move call to __libc_check_standard_fds... + * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): ... to here. + +2000-07-10 Ulrich Drepper + + * include/features.h: Include ISO C99 features if the compiler used + is an ISO C99 compiler. + Patch by Joseph S. Myers . + +2000-07-08 Mark Kettenis + + * iconv/gconv_conf.c: Include . + +2000-07-10 Andreas Jaeger + + * sysdeps/unix/sysv/linux/i386/sigaction.c: Make alias weak since + it's overridden by libpthreads. + * sysdeps/unix/sysv/linux/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/arm/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/ia64/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c: Likewise. + + * malloc/Makefile: Run tst-mtrace only with shared libs. + + * stdio-common/Makefile: Run unbputc and tst-printf tests only + with shared libs. + +2000-07-10 Maciej W. Rozycki + + * sysdeps/mips/dl-machine.h (elf_machine_runtime_link_map): Verify + that gpreg really points to the GOT section of the calling object. + Scan all PT_LOAD segments of objects for stub_pc, instead of only + checking a start address of first one. + Fix typos. + * sysdeps/mips/mips64/dl-machine.h (elf_machine_runtime_link_map): + Likewise. + + * sysdeps/mips/dl-machine.h (__dl_runtime_resolve): Fix a typo. + +2000-07-10 Andreas Jaeger + + * sysdeps/unix/sysv/linux/sigaction.c: Fix typo + (string_alias->strong_alias). + +2000-07-08 Mark Kettenis + + * hurd/hurd/fd.h: Include instead of . + +2000-07-07 Greg McGary + + * sysdeps/unix/make-syscalls.sh: Tolerate syscalls that + have no names without leading underscores. + +2000-07-07 Ulrich Drepper + + * iconvdata/sjis.c (from_ucs4_lat1): Fix mappng of U005C and + U007E. + + * stdio-common/Makefile (tests): Remove tst-printf here... + (tests-srcs): ...and add it here. + (distribute): Add tst-unbputc.sh and tst-printf.sh. + Add rules to run tst-printf.sh. + * stdio-common/tst-printf.c: Move code around so that there is really + no further output where it's stated. + * stdio-common/tst-printf.sh: New file. + +2000-07-07 Mark Kettenis + + * hurd/vpprintf.c [USE_IN_LIBIO]: Include . + (do_write): Renamed from pwrite. + (vpprintf) [USE_IN_LIBIO]: Adjust for renaming and reshufling of + `struct _IO_cookie_file'. + +2000-07-07 Ulrich Drepper + + * malloc/mtrace.pl: Exit with exit code 1 if any leak was + detected. + * malloc/tst-mtrace.sh: Run mtrace script. + +2000-07-07 Greg McGary + + * posix/regex.c (EXTEND_BUFFER): Compute increment once. + Move all three components of a bounded pointer. + +2000-07-07 Ulrich Drepper + + * locale/programs/locale.c (write_locales): Don't simply add all + directories found in the subdir, test whether at least the + LC_CTYPE file is in there. + +2000-07-06 Ulrich Drepper + + * iconvdata/euc-jp.c: Map characters in C1 area to itself. + * iconvdata/euc-kr.c: Likewise. + + * stdio-common/vfprintf.c (process_string_arg): Check result of + wcrtomb call and bail out if it failed. + + * malloc/Makefile (test-srcs): Add tst-mtrace. + (distribute): Add tst-mtrace.sh. + Add rule to run tst-mtrace.sh. + * malloc/tst-mtrace.c: New file. + * malloc/tst-mtrace.sh: New file. + + * include/signal.h: Declare __libc_sigaction. + * sysdeps/unix/sysv/linux/Versions: Export __libc_sigaction. + * sysdeps/unix/sysv/linux/sigaction.c: Add __libc_sigaction alias. + * sysdeps/unix/sysv/linux/arm/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/ia64/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c: Likewise. + + * configure.in: Fix CFLAGS-memprofstat.c definition after + 2000-06-19 change. + Patch by Bradford W. Johnson . + +2000-07-06 Jakub Jelinek + + * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela): Pass 0 + instead of NULL to elf_machine_fixup_plt t argument. + * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela): Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/mmap64.c (__mmap64): Add + cast. + +2000-07-06 Andreas Jaeger + + * crypt/Makefile (LDLIBS-cert): Removed. + (LDLIBS-md5c-test): Removed. + ($(objpfx)cert): Renamed from cert.out to fix dependencies. + ($(objpfx)md5c-test): Likewise for md5c-test.out. + +2000-07-06 Andreas Jaeger + + * sysdeps/unix/sysv/linux/getsysstats.c (get_proc_path): The type + of the proc system is "proc". + + * sysdeps/generic/libc-start.c (__libc_start_main): Initialize + thread library for static programs. + +2000-07-06 Greg McGary + + * sysdeps/generic/bp-checks.h (CHECK_SIGSET, CHECK_SIGSETopt): + New macros. + * sysdeps/generic/strcpy.c: Add bounds checks. + * sysdeps/unix/fxstat.c: Likewise. + * sysdeps/unix/xstat.c: Likewise. + * sysdeps/unix/common/lxstat.c: Likewise. + * sysdeps/unix/sysv/linux/aio_sigqueue.c: Likewise. + * sysdeps/unix/sysv/linux/execve.c: Likewise. + * sysdeps/unix/sysv/linux/fxstat.c: Likewise. + * sysdeps/unix/sysv/linux/fxstat64.c: Likewise. + * sysdeps/unix/sysv/linux/getcwd.c: Likewise. + * sysdeps/unix/sysv/linux/getdents.c: Likewise. + * sysdeps/unix/sysv/linux/llseek.c: Likewise. + * sysdeps/unix/sysv/linux/lxstat.c: Likewise. + * sysdeps/unix/sysv/linux/lxstat64.c: Likewise. + * sysdeps/unix/sysv/linux/poll.c: Likewise. + * sysdeps/unix/sysv/linux/pread.c: Likewise. + * sysdeps/unix/sysv/linux/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/ptrace.c: Likewise. + * sysdeps/unix/sysv/linux/pwrite.c: Likewise. + * sysdeps/unix/sysv/linux/pwrite64.c: Likewise. + * sysdeps/unix/sysv/linux/readv.c: Likewise. + * sysdeps/unix/sysv/linux/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/sigpending.c: Likewise. + * sysdeps/unix/sysv/linux/sigprocmask.c: Likewise. + * sysdeps/unix/sysv/linux/sigqueue.c: Likewise. + * sysdeps/unix/sysv/linux/sigsuspend.c: Likewise. + * sysdeps/unix/sysv/linux/sigtimedwait.c: Likewise. + * sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise. + * sysdeps/unix/sysv/linux/sysctl.c: Likewise. + * sysdeps/unix/sysv/linux/truncate64.c: Likewise. + * sysdeps/unix/sysv/linux/ustat.c: Likewise. + * sysdeps/unix/sysv/linux/writev.c: Likewise. + * sysdeps/unix/sysv/linux/xmknod.c: Likewise. + * sysdeps/unix/sysv/linux/xstat.c: Likewise. + * sysdeps/unix/sysv/linux/xstat64.c: Likewise. + * sysdeps/unix/sysv/linux/arm/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/i386/brk.c: Likewise. + * sysdeps/unix/sysv/linux/i386/chown.c: Likewise. + * sysdeps/unix/sysv/linux/i386/fxstat.c: Likewise. + * sysdeps/unix/sysv/linux/i386/getgroups.c: Likewise. + * sysdeps/unix/sysv/linux/i386/getresgid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/getresuid.c: Likewise. + * sysdeps/unix/sysv/linux/i386/getrlimit.c: Likewise. + * sysdeps/unix/sysv/linux/i386/lchown.c: Likewise. + * sysdeps/unix/sysv/linux/i386/lxstat.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setgroups.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setrlimit.c: Likewise. + * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/i386/xstat.c: Likewise. + * sysdeps/unix/sysv/linux/ia64/fxstat.c: Likewise. + * sysdeps/unix/sysv/linux/ia64/lxstat.c: Likewise. + * sysdeps/unix/sysv/linux/ia64/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/ia64/sigpending.c: Likewise. + * sysdeps/unix/sysv/linux/ia64/sigprocmask.c: Likewise. + * sysdeps/unix/sysv/linux/ia64/sigsuspend.c: Likewise. + * sysdeps/unix/sysv/linux/ia64/xstat.c: Likewise. + * sysdeps/unix/sysv/linux/m68k/chown.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pread.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/truncate64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/ustat.c: Likewise. + * sysdeps/unix/sysv/linux/mips/xmknod.c: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/mmap64.c: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/sigpending.c: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/sigsuspend.c: Likewise. + + * string/endian.h (__LONG_LONG_PAIR): New macro. + * sysdeps/unix/sysv/linux/ftruncate64.c: Use it. + * sysdeps/unix/sysv/linux/pread.c: Likewise. + * sysdeps/unix/sysv/linux/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/pwrite.c: Likewise. + * sysdeps/unix/sysv/linux/pwrite64.c: Likewise. + * sysdeps/unix/sysv/linux/truncate64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/ftruncate64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pread.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/truncate64.c: Likewise. + + * sysdeps/unix/sysv/linux/sys/ptrace.h (PT_SYSCALL): Fix LHS. + +2000-07-06 Andreas Jaeger + + * sysdeps/unix/sysv/linux/getsysstats.c (get_proc_path): + Initialize result. + + * math/test-fpucw.c: Include for printf. + +2000-07-05 Greg McGary + + * sysdeps/generic/bp-checks.h: New file. + * sysdeps/generic/bp-thunks.h: Replace generic thunk definitions + with list of #include files. + * sysdeps/unix/make-syscalls.sh: Handle new arg signature + keyletters a, b, B, f, n, N, P, v, V. Fixup some indentation. + Don't generate BP thunk if `V' appears in signature. + Generate thunks with complete bounds checks. + * sysdeps/unix/syscalls.list: Refine signatures using new keyletters. + * sysdeps/unix/inet/syscalls.list: Likewise. + * sysdeps/unix/mman/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/ia64/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/mips/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/powerpc/syscalls.list: Likewise. + +2000-07-05 Ulrich Drepper + + * sysdeps/unix/sysv/linux/getsysstats.c (get_proc_path): Cache + result. Search first in /etc/mtab (proc/mounts would be stupid). + If mount not in the file fall back on /proc. + + * crypt/md5-crypt.c (__md5_crypt_r): Clear arrays the key and salt + string got copied in. + Patch by Solar Designer . + +2000-07-05 Andreas Jaeger + + * manual/install.texi (Installation): Update information about + add-ons. + (Configuring and compiling): Update for glibc 2.2. + +2000-07-04 Andreas Jaeger + + * sysdeps/i386/fpu_control.h (_FPU_DEFAULT): Correct value. + (_FPU_IEEE): Likewise. + + * math/Makefile (tests): Add test-fpucw. + + * math/test-fpucw.c (main): New file. + +2000-07-05 Ulrich Drepper + + * locale/loadlocale.c (_nl_unload_locale): Add cast to avoid warning. + + * locale/programs/ld-collate.c (collate_output): Also write out the + collation sequence values and the wide character string for the + collation symbol table. + + * posix/fnmatch.c: Include "../locale/elem-hash.h". + * posix/fnmatch_loop.c: Implement collating symbol handling. + * posix/tst-fnmatch.input: Add more tests, especially for collating + symbol handling. + + * posix/regex.c: Fix comment. + +2000-07-05 Andreas Jaeger + + * sysdeps/mips/fpu_control.h: Fix type of fpu_control_t. + (_FPU_GETCW): Remove extra colon. + Patch by Ralf Baechle . + + * posix/fnmatch_loop.c (FCT): Only declare len if + !WIDE_CHAR_VERSION to silence GCC. + + * sysdeps/generic/rawmemchr.c: Include for abort + prototype. + * sysdeps/generic/strchrnul.c: Likewise. + * sysdeps/generic/strlen.c: Likewise. + * sysdeps/generic/strchr.c: Likewise. + * sysdeps/generic/memchr.c: Likewise. + +2000-07-04 Ulrich Drepper + + * posix/fnmatch_loop.c: Implement equivalence class handling. + * posix/tst-fnmatch.input: Add tests for equivalence class + handling. + + * posix/fnmatch_loop.c: Improve performance for single-byte + character sets by not using btowc. + + * posix/tst-fnmatch.input: Add tests for locale dependent + behaviour. + * posix/tst-fnmatch.c (main): Also set LC_CTYPE category. + + * posix/tst-fnmatch.input: Add more test cases. + + * crypt/md5-crypt.c (__md5_crypt_r): If buffers for key and salt + are not aligned to alignof(md5_uint32) do it before calling + __md5_process_bytes. + * crypt/md5.c: Make sure buffers are aligned. + * crypt/md5.h: Likewise. + Reported by Solar Designer . + + * crypt/Makefile: Add dependencies for test programs. + + * Rules: Define LC_ALL=C in environments of all programs we run. + + * intl/tst-gettext.sh (LC_ALL): Define to C and export. + +2000-07-03 H.J. Lu + + * locale/programs/ld-ctype.c (ctype_output): The size of iov + is 2 + elem + offset, not 2 + elem + offset + 2. + +2000-07-04 Ulrich Drepper + + * posix/fnmatch_loop.c: Fix two problems uncovered by the new test + suite. + * posix/Makefile (tests): Add tst-fnmatch. + (tst-fnmatch-ENV): Define. + * posix/tst-fnmatch.c: New file. + * posix/tst-fnmatch.sh: New file. + +2000-07-04 NIIBE Yutaka + + * locale/programs/charmap.c (charmap_read): Prepend + the condition filename == NULL. + +2000-07-03 Greg McGary + + * sysdeps/i386/bits/setjmp.h (PUSH_SIGNAL_MASK): Fix typo. + + * csu/Makefile (extra-objs, install-lib): Add BP objects conditionally. + ($(objpfx)b$(start-installed-name)): Add non-elf rule. + + * libio/libio.h (_IO_FILE): Revert type of _chain to _IO_FILE*. + * libio/libioP.h (_IO_ITER): Revert to type _IO_FILE*. + (FILEBUF_LITERAL): Add cast for CHAIN init. + * libio/genops.c (_IO_un_link, _IO_link_in, _IO_iter_begin): Add casts. + (_IO_flush_all, _IO_flush_all_linebuffered, _IO_unbuffer_write): + Revert type of `fp' to _IO_FILE*. + (_IO_iter_file): Remove cast. + (_IO_iter_next): Elide intermediate member reference. + + * sysdeps/powerpc/strchr.S: Check bounds. + Wrap extern symbols in BP_SYM (). + +2000-07-03 Andreas Jaeger + + * dlfcn/Makefile (generated): New. + +2000-07-03 Ulrich Drepper + + * libio/genops.c (__overflow): Use _IO_fwide to orient the stream. + (__uflow): Likewise. + (__underflow): Likewise. + * libio/wgenops.c (__wunderflow): Likewise. + * stdio-common/tst-unbputc.c: New file. + * stdio-common/tst-unbputc.sh: New file. + * stdio-common/Makefile: Add rules to build and run tst-unbputc. + + * po/en_GB.po: New file. + Contributed by Robert Brady . + +2000-07-01 Andreas Jaeger + + * intl/Makefile (generated-dirs): New. + + * elf/Makefile (generated): trusted-dirs.h is always generated, + move out of build-shared condition. + (generated): Merge the two entries for build-shared. + +2000-07-01 Ulrich Drepper + + * debug/Makefile (distribute): Add xtrace.sh. + +2000-06-30 Ulrich Drepper + + * version.h (VERSION): Bump to 2.1.91. + + * configure.in: Update warning comment. glibc should not be + broken anymore. + + * sysdeps/unix/sysv/linux/ia64/Dist: Remove old content. Add + ioperm.c, sys/procfs.h, and sys/io.h. + + * sysdeps/powerpc/Dist: Add bp-asm.h. + + * assert/Depend: Add localedata. + * assert/Makefile (test-assert-ENV): New. Define LANGUAGE=C. + (test-assert-perr-ENV): New. Define LANGUAGE=C. + + * sysdeps/alpha/dl-machine.h (elf_machine_rela) [r_type == + R_ALPHA_REFQUAD]: Use memcpy to load and store value from + relocation address to prevent unaligned trap. + Suggested by Richard Henderson . + +2000-06-30 Jakub Jelinek + + * io/sys/stat.h (stat64, lstat64, fstat64): Don't define inlines + if redirecting and either redirection is done using defines or + not optimizing. + +2000-06-30 Ulrich Drepper + + * sunrpc/rpc_cout.c (inline_struct): Add missing parenthesis in + generated expressions. + Patch by Darren McClelland . + + * timezone/Makefile (build-testdata): Set LANGUAGE and LC_ALL + since zic uses setlocale and gettext but we cannot make it use the + new locale data since zic calls a shell which might not use the + new libc. + + * stdlib/strfmon.c: Move somewhat closer to the standard wrt to + handling the internation currency symbol. POSIX says that the + fourth character is used to separate the currency symbol from the + value. Therefore it does not have to be printed. But we cannot + remove the space if the currency symbol is printed before the + number since this is what many locales expect. + + * iconv/gconv_trans.c: Test with _NL_CTYPE_TRANSLIT_DEFAULT_MISSING_LEN + whether this information is available. + + * intl/dcigettext.c (_nl_find_msg): Correct reallocation of + buffers in case the translation is too large. Remember allocated + memory blocks in a list. + (free_mem): Free memory for translations. + + * intl/tst-gettext.c: Use correct locale. Improve error messages. + + * locale/programs/ld-ctype.c (ctype_output): If no default_missing + information is available set the string length to zero. + + * sysdeps/i386/i686/strcmp.S: Little optimization in non-BP case. + +2000-06-30 Greg McGary + + * sysdeps/powerpc/bp-asm.h: New file. + * sysdeps/powerpc/__longjmp.S: Check bounds. + Wrap extern symbols in BP_SYM (). + * sysdeps/powerpc/bsd-_setjmp.S: Likewise. + * sysdeps/powerpc/bsd-setjmp.S: Likewise. + * sysdeps/powerpc/setjmp.S: Likewise. + * sysdeps/powerpc/add_n.S: Likewise. + * sysdeps/powerpc/addmul_1.S: Likewise. + * sysdeps/powerpc/lshift.S: Likewise. + * sysdeps/powerpc/rshift.S: Likewise. + * sysdeps/powerpc/mul_1.S: Likewise. + * sysdeps/powerpc/sub_n.S: Likewise. + * sysdeps/powerpc/submul_1.S: Likewise. + * sysdeps/powerpc/strlen.S: Likewise. + * sysdeps/powerpc/memset.S: Likewise. + * sysdeps/powerpc/stpcpy.S: Likewise. + * sysdeps/powerpc/strcmp.S: Likewise. + * sysdeps/powerpc/strcpy.S: Likewise. + * sysdeps/powerpc/elf/bzero.S: Likewise. + + * sysdeps/powerpc/stpcpy.S: Define & use symbolic register names. + Line up operands column with tabs. + +2000-06-30 Ulrich Drepper + + * elf/Makefile (LDFLAGS-origtest): Actually add it. + + * sysdeps/ia64/htonl.S: New file. + * sysdeps/ia64/htons.S: New file. + * sysdeps/ia64/memcpy.S: Replace with version which does not use + floating point registers. + Patches by Dan Pop . + +2000-06-30 Andreas Jaeger + + * posix/Makefile (tests): tst-exec and tst-spawn only work with + shared libraries. + + * io/Makefile (CFLAGS-test-lfs.c): New. + (tests): Add test-lfs. + + * io/test-lfs.c: New file. + +2000-06-30 Jakub Jelinek + + * sysdeps/i386/bits/string.h (strcmp): Use 8bit register in 8bit + instruction. + +2000-06-29 David Mosberger-Tang + + * sysdeps/unix/sysv/linux/ia64/ioperm.c: New file. + +2000-06-29 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/syscalls.list: Add __fstatfs64 + alias to the fstatfs call. + + * sysdeps/unix/sysv/linux/ia64/getrlimit64.c: New file. + * sysdeps/unix/sysv/linux/ia64/setrlimit64.c: New file. + + * sysdeps/unix/sysv/linux/ia64/ftruncate64.c: New file. + * sysdeps/unix/sysv/linux/ia64/truncate64.c: New file. + + * sysdeps/unix/sysv/linux/ia64/readdir.c: New file. + * sysdeps/unix/sysv/linux/ia64/readdir_r.c: New file. + * sysdeps/unix/sysv/linux/ia64/readdir64.c: New file. + * sysdeps/unix/sysv/linux/ia64/readdir64_r.c: New file. + + * sysdeps/unix/sysv/linux/ia64/glob.c: New file. + * sysdeps/unix/sysv/linux/ia64/glob64.c: New file. + + * sysdeps/unix/sysv/linux/ia64/fstatfs64.c: New file. + * sysdeps/unix/sysv/linux/ia64/statfs64.c: New file. + + * sysdeps/unix/sysv/linux/ia64/pread64.c: New file. + * sysdeps/unix/sysv/linux/ia64/pwrite64.c: New file. + + * sysdeps/unix/sysv/linux/ia64/shmctl.c: New file. + +2000-06-29 Andreas Jaeger + + * sunrpc/rpc_svcout.c (write_msg_out): Always use format string + with syslog. + (print_err_message): Likewise. + Reported by Chris Evans . + +2000-06-29 Ulrich Drepper + + * locale/loadlocale.c (_nl_load_locale): Make sure all locale data + used as words is properly aligned. + + * locale/programs/ld-ctype.c (ctype_output): Don't generate unaligned + data files. + +2000-06-29 Greg McGary + + * sysdeps/generic/libc-start.c (__libc_stack_end): Chop __unbounded. + * sysdeps/unix/make-syscalls.sh: Handle signatures of + length 7..9, just in case... + * misc/sys/cdefs.h (__ptrvalue): Define as nothing for non-BP. + + * sysdeps/i386/bp-asm.h (PCOFF): New constant. + (POP_ERRNO_LOCATION_RETURN): Fold insns. + * sysdeps/i386/bits/setjmp.h (JB_SIZE): New constant. + (PUSH_SIGNAL_MASK): New macro. + * sysdeps/i386/__longjmp.S (__longjmp): Wrap symbol in BP_SYM (). + LEAVE is unnecessary. Check bounds of jmp_buf. + * sysdeps/i386/elf/setjmp.S: Call PUSH_SIGNAL_MASK. Wrap symbols + in BP_SYM (). Check bounds of jmp_buf. Don't call LEAVE until + immediately before tail-call. + * sysdeps/i386/setjmp.S: Likewise. + * sysdeps/i386/bsd-_setjmp.S: Likewise. + * sysdeps/i386/bsd-setjmp.S: Likewise. + +2000-06-29 Jakub Jelinek + + * sysdeps/sparc/fpu/fclrexcpt.c: Use SHLIB_COMPAT, compat_symbol and + versioned_symbol. + * sysdeps/sparc/fpu/fesetenv.c: Likewise. + * sysdeps/sparc/fpu/feupdateenv.c: Likewise. + * sysdeps/sparc/fpu/fgetexcptflg.c: Likewise. + * sysdeps/sparc/fpu/fraiseexcpt.c: Likewise. + * sysdeps/sparc/fpu/fsetexcptflg.c: Likewise. + * sysdeps/sparc/fpu/fegetenv.c: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/Versions: New file. + * shlib-versions: Make sparc64 GLIBC_2.2+ only. + +2000-06-29 Ulrich Drepper + + * stdio-common/printf_fp.c (__printf_fp): Don't clobber pointer which + we later need to calling free(). + Patch by Matt Wilson . + + * stdio-common/tst-printf.c: Add test for above problem. + +2000-06-27 David Mosberger-Tang + + * sysdeps/unix/sysv/linux/ia64/bits/ipc.h: New file. + * sysdeps/unix/sysv/linux/ia64/bits/shm.h: New file. + +2000-06-28 Jes Sorensen + + * sysdeps/ieee754/dbl-64/s_exp2.c: Add include stdlib.h to get + prototype for abs(). + * sysdeps/ieee754/flt-32/s_exp2f.c: Likewise. + +2000-06-23 Andreas Jaeger + + * config.h.in: Don't use regparm with bounded pointers. + +2000-06-29 Ulrich Drepper + + * stdlib/grouping.h: Correctly handle multibyte thousands + separator and decimal point. + * stdlib/stdtod.c: Likewise. + * sysdeps/generic/strtol.c: Likewise. + + * locale/categories.def: Add entries for wide character decimal point + and thousands separator in numeric and monetary category. + +2000-06-28 Ulrich Drepper + + * stdio-common/printf_fp.c (__printf_fp): Remove unnecessary + second definition and initialization of decimal. + +2000-06-28 Greg McGary + + * libio/libio.h (struct _IO_cookie_file): Move struct type defintion + out. + (_IO_FILE): Declare chain as (struct _IO_FILE_plus *). + * libio/libioP.h (struct _IO_cookie_file): Move struct type defintion + in. + (_IO_JUMPS): Don't cast THIS--expect arg to be a + (struct _IO_FILE_plus *). + (_IO_JUMPS_FUNC): Express in terms of _IO_JUMPS, and add cast to + THIS, since _IO_JUMPS no longer does it implicitly. + (_IO_file_init, _IO_old_file_init, _IO_new_file_init): Declare + arg type as (struct _IO_FILE_plus *). + (_IO_str_init_static, _IO_str_init_readonly): Declare 1st + arg as (_IO_strfile *). + * libio/strops.c (_IO_str_init_static, _IO_str_init_readonly): + Declare 1st arg as (_IO_strfile *). + * libio/fileops.c (_IO_new_file_init): Declare + arg type as (struct _IO_FILE_plus *). + * libio/oldfileops.c (_IO_old_file_init): Likewise. + * libio/genops.c (_IO_link_in, _IO_un_link): Likewise. + (_IO_flush_all, _IO_flush_all_linebuffered, _IO_unbuffer_write): + Declare iteration pointer as (struct _IO_FILE_plus *). + (_IO_iter_next, _IO_iter_file): _IO_ITER is now + (struct _IO_FILE_plus *). + * libio/stdfiles.c (_IO_list_all): Declare as (struct _IO_FILE_plus *). + * libio/oldstdfiles.c (_IO_list_all): Likewise. + (_IO_check_libio): Set user-visible handles to + (struct _IO_FILE_plus *). + * libio/stdio.c (stdin, stdout, stderr): Set user-visible handles + to (struct _IO_FILE_plus *). + + * libio/iofdopen.c (_IO_new_fdopen): Pass FILE handle pointer + whose high bound includes vtable to all functions that will use + vtable. For streambufs, pass pointer whose bounds include struct + _IO_strfile. + * libio/wgenops.c (_IO_wdefault_finish): Likewise. + * libio/oldiofdopen.c (_IO_old_fdopen): Likewise. + * libio/iofopen.c (_IO_new_fopen): Likewise. + * libio/oldiofopen.c (_IO_old_fopen): Likewise. + * libio/iofopen64.c (_IO_fopen64): Likewise. + * libio/iopopen.c (_IO_new_popen): Likewise. + * libio/oldiopopen.c (_IO_old_popen): Likewise. + * libio/memstream.c (open_memstream): Likewise. + * libio/iovsscanf.c (_IO_vsscanf): Likewise. + * libio/iovsprintf.c (_IO_vsprintf): Likewise. + * libio/iovdprintf.c (_IO_vdprintf): Likewise. + * libio/iofopncook.c (_IO_cookie_init): Likewise. + * libio/obprintf.c (_IO_obstack_vprintf): Likewise. + * libio/vasprintf.c (_IO_vasprintf): Likewise. + * libio/vsnprintf.c (_IO_vsnprintf): Likewise. + * libio/stdfiles.c (_IO_stdout_, _IO_stderr_): Likewise. + * libio/oldstdfiles.c (_IO_stdout_, _IO_stderr_): Likewise. + * stdlib/strfmon.c (__strfmon_l): Likewise. + * stdio-common/vfprintf.c (buffered_vfprintf): Likewise. + (vfprintf): Qualify computed-goto targets as unbounded. + +2000-06-28 Ulrich Drepper + + * stdio-common/vfscanf.c: Finally handle multibyte decimal point and + thousands separator correctly. + + * stdio-common/vfscanf.c: Use COMPILE_WSCANF not COMPILE_WPRINTF. + * stdio-common/vfwscanf.c: Likewise. + +2000-06-27 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/syscalls.list: Change argument + count into signatures for most calls. + +2000-06-28 Ulrich Drepper + + * sysdeps/unix/sysv/linux/ia64/getsysstats.c: Removed. We can use + the generic parser now. + +2000-06-28 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/bits/elfclass.h: Deleted. Hash + table entries are 32 bit on the ia64 (as specified by the ABI), + not 64 bit as on the Alpha. + + * shlib-versions: Bump ia64 soname to ld-linux-ia64.so.2 to mark + change of objects to use 32 bit hash table indices (see above). + +2000-06-28 Jes Sorensen + + * sysdeps/ieee754/dbl-64/e_exp.c: Add include stdlib.h to get + prototype for abs(). + +2000-06-28 Wolfram Gloger + + * malloc/malloc.c (chunk_alloc): If extension of the linear heap + fails, try mmap_chunk() as a last resort even though n_mmaps_max + may have been reached. + +2000-06-28 Ulrich Drepper + + * locale/programs/ld-collate.c (insert_weights): Handle + symbols in multi-character weights correctly. + + * wcsmbs/mbrtowc.c: Set flush to 1 for conversion function calls + depending on whether the input string is empty or not. + + * wcsmbs/mbrtowc.c: Calling function without input means clearing the + given state and not avoiding this by modifying a local object. + * wcsmbs/wcrtomb.c: Likewise. + + * iconv/skeleton.c: If no EMIT_SHIFT_TO_INIT is defined clear state + object since some incomplete characters might be in there. + + * iconvdata/euc-jp.c: In conversion to UCS4, handling invalid + sequences with first byte 0x8e correctly. + + * iconvdata/jis0208.h: Remove redundant test. + +2000-06-27 Ulrich Drepper + + * sysdeps/generic/initfini.c (SECTION): Remove trailing semicolon. + Add it where it is needed now. + + * locale/programs/ld-ctype.c (ctype_finish): Take all characters from + the input charset into account when generating the hash table. + (allocate_arrays): Correct setting default width. Not all empty slots + in the table are filled, only those not covert explicitly by the + locale description and in the charset. + + * wctype/towctrans.c (__towctrans): Be graceful and accept error + return values from the wctrans function. + + * stdio-common/vfscanf.c: Make sure to always return WEOF and EOF for + wide character version. + For %C handling, test correct pointer variable for NULL. + + * wcsmbs/wctob.c: Handle WEOF special. + + * wcsmbs/wcwidth.h: 0xff in width array means invalid character. + + * wctype/wctype.h: Protect gcc-isms with __extension__. Avoid + always-true test to avoid warning. + +2000-06-27 Greg McGary + + * elf/dl-open.c (_dl_sysdep_start): Wrap weak_extern decl in BP_SYM (). + * include/libc-symbols.h (weak_extern): Add extra level of expansion. + (symbol_version, default_symbol_version): Factor redundant + definitions out of conditional. + +2000-06-27 Jakub Jelinek + + * libio/obprintf.c (_IO_obstack_vprintf): Call obstack_make_room, + not obstack_blank. + +2000-06-26 Ulrich Drepper + + * include/libc-symbols.h (symbol_version): Add extra level of + macro expansion. + (default_symbol_version): Likewise. + +2000-06-26 Greg McGary + + * sysdeps/unix/i386/sysdep.S (syscall_error): Push & pop space + for BP return value & push implicit struct-return pointer to + __errno_location. + * sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise. + (SYSCALL_ERROR_HANDLER): Likewise. + * sysdeps/unix/sysv/linux/i386/i686/sysdep.h + (SYSCALL_ERROR_HANDLER): Likewise. + + * Makeconfig: Add missing comment. + * csu/Makefile (extra-objs, omit-deps, install-lib): Add + BP-flavored startup object. + ($(objpfx)b$(start-installed-name)): New rule. + * include/libc-symbols.h (symbol_set_declare): Change type + of `__start_##set' and `__stop_##set' to pointer-to-function. + (symbol_set_declare): Change type of `set' to array of + pointer-to-function. + * include/set-hooks.h (RUN_HOOK): Change type of `ptr' to + pointer-to-function. + + * string/bits/string2.h: Inhibit inlines if __BOUNDED_POINTERS__. + + * sysdeps/unix/sysv/linux/syscalls.list: Add missing signatures. + Remove clock_* and timer_* entries. + * sysdeps/unix/sysv/linux/powerpc/syscalls.list: Replace + arg-count with signatures. + + * sysdeps/i386/add_n.S: Wrap entry-point symbol in BP_SYM (). + Check bounds of arguments. + * sysdeps/i386/addmul_1.S: Likewise. + * sysdeps/i386/lshift.S: Likewise. + * sysdeps/i386/mul_1.S: Likewise. + * sysdeps/i386/rshift.S: Likewise. + * sysdeps/i386/sub_n.S: Likewise. + * sysdeps/i386/submul_1.S: Likewise. + * sysdeps/i386/i586/add_n.S: Likewise. + * sysdeps/i386/i586/addmul_1.S: Likewise. + * sysdeps/i386/i586/lshift.S: Likewise. + * sysdeps/i386/i586/rshift.S: Likewise. + * sysdeps/i386/i586/sub_n.S: Likewise. + * sysdeps/i386/i686/add_n.S: Likewise. + + * sysdeps/i386/memchr.S: Likewise. + * sysdeps/i386/memcmp.S: Likewise. + * sysdeps/i386/rawmemchr.S: Likewise. + * sysdeps/i386/i586/bzero.S: Likewise. + * sysdeps/i386/i586/memcpy.S: Likewise. + * sysdeps/i386/i586/mempcpy.S: Likewise. + * sysdeps/i386/i586/memset.S: Likewise. + * sysdeps/i386/i686/bzero.S: Likewise. + * sysdeps/i386/i686/memcpy.S: Likewise. + * sysdeps/i386/i686/mempcpy.S: Likewise. + * sysdeps/i386/i686/memset.S: Likewise. + + * sysdeps/i386/stpcpy.S: Likewise. + * sysdeps/i386/stpncpy.S: Likewise. + * sysdeps/i386/strchr.S: Likewise. + * sysdeps/i386/strchrnul.S: Likewise. + * sysdeps/i386/strcspn.S: Likewise. + * sysdeps/i386/strpbrk.S: Likewise. + * sysdeps/i386/strrchr.S: Likewise. + * sysdeps/i386/strspn.S: Likewise. + * sysdeps/i386/strtok.S: Likewise. + * sysdeps/i386/strtok_r.S: Likewise. + * sysdeps/i386/i486/strcat.S: Likewise. + * sysdeps/i386/i486/strlen.S: Likewise. + * sysdeps/i386/i586/strchr.S: Likewise. + * sysdeps/i386/i586/strcpy.S: Likewise. + * sysdeps/i386/i586/strlen.S: Likewise. + * sysdeps/i386/i686/strcmp.S: Likewise. + * sysdeps/i386/i686/strtok.S: Likewise. + * sysdeps/i386/i686/strtok_r.S: Likewise. + + * sysdeps/i386/fpu/fegetenv.c: Wrap symbol names with BP_SYM (). + * sysdeps/i386/fpu/fesetenv.c: Likewise. + * sysdeps/i386/fpu/feupdateenv.c: Likewise. + * sysdeps/i386/fpu/fgetexcptflg.c: Likewise. + * sysdeps/i386/fpu/fsetexcptflg.c: Likewise. + + * sysdeps/i386/addmul_1.S: Exchange roles of %ebp and %ebx. + * sysdeps/i386/mul_1.S: Likewise. + * sysdeps/i386/submul_1.S: Likewise. + * sysdeps/i386/i586/add_n.S: Likewise. + * sysdeps/i386/i586/addmul_1.S: Likewise. + * sysdeps/i386/i586/lshift.S: Likewise. + * sysdeps/i386/i586/mul_1.S: Likewise. + * sysdeps/i386/i586/rshift.S: Likewise. + * sysdeps/i386/i586/sub_n.S: Likewise. + * sysdeps/i386/i586/submul_1.S: Likewise. + +2000-06-26 Ulrich Drepper + + * rt/Makefile (librt-routines): Add clock_nanosleep. + * rt/Versions [GLIBC_2.2] (librt): Add clock_nanosleep. + * sysdeps/generic/clock_nanosleep.c: New file. + * sysdeps/unix/clock_nanosleep.c: New file. + * sysdeps/unix/i386/i586/clock_nanosleep.c: New file. + * time/time.h: Declare clock_nanosleep. + +2000-06-26 Greg McGary + + * sysdeps/i386/asm-syntax.h (R, MEM, MEM_DISP, MEM_INDEX, + INSN1, INSN2, TEXT, GLOBL): Remove macros. + (ALIGN): Cleanup surrounding conditionals. + + * sysdeps/i386/addmul_1.S: Replace asm-syntax macros with gas syntax. + Call ENTER/LEAVE macros. + * sysdeps/i386/mul_1.S: Replace asm-syntax macros with gas syntax. + * sysdeps/i386/submul_1.S: Likewise. + + * sysdeps/i386/i586/addmul_1.S: Replace asm-syntax macros with gas + syntax. Define & use symbolic argument stack offsets. Call + ENTER/LEAVE macros. + * sysdeps/i386/i586/mul_1.S: Likewise. + * sysdeps/i386/i586/submul_1.S: Likewise. + +2000-06-25 Greg McGary + + * sysdeps/i386/i586/memcpy.S: Redefine memcpy as mempcpy, + not as bcopy. + +2000-06-25 Ulrich Drepper + + * iconvdata/gen-8bit-gap-1.sh: Update for new charmap format. + * iconvdata/gen-8bit-gap.sh: Likewise. + * iconvdata/gen-8bit.sh: Likewise. + + * iconv/gconv_open.c (__gconv_open): Move comment to correct position. + + * locale/programs/ld-collate.c (collate_read): Don't actually read + the copy locale if we are ignoring the content. + + * locale/programs/ld-address.c (INT_STR_ELEM): Correct test for + unknown character. + + * locale/programs/ld-collate.c: Correct handling of different + collation sections. + * locale/programs/localedef.c (add_to_readlist): Take locale pointer + as extra parameter from which to copy category information. + Change all callers. + (load_locale): Likewise. + * locale/programs/localedef.h: Update prototypes of add_to_readlist + and load_locale. + * locale/programs/ld-ctype.c: Update call to add_to_readlist. + * locale/programs/locfile.h: Likewise. + * locale/programs/locfile-kw.gperf: Add entry for script. + * locale/programs/locfile-token.h: Add tok_script. + + * locale/programs/locale.c: Update copyright year. + * locale/programs/localedef.c: Likewise. + +2000-06-23 Thorsten Kukuk + + * sunrpc/xdr_rec.c (set_input_fragment): Fix PR libc/1549, patch from + Jens Moeller . + +2000-06-24 Ulrich Drepper + + * locale/programs/ld-name.c (name_finish): Add missing format + specifier to test for name_fmt. + + * locale/programs/ld-address.c (iso639): Correct length of string + elements. + (iso3166): Likewise. + + * sysdeps/unix/sysv/linux/i386/sys/elf.h (elf_fpxregset_t): Define. + + * sysdeps/unix/sysv/linux/i386/sys/user.h (struct user_fpxregs_struct): + Define. + + * elf/elf.h (NT_PRFPXREG): Define. + +2000-06-23 Ulrich Drepper + + * sysdeps/unix/sysv/linux/sys/ptrace.h (__ptrace_request): Define + PTRACE_GETFPXREGS and PTRACE_SETFPXREGS. + +2000-06-23 Andreas Schwab + + * sysdeps/unix/sysv/linux/m68k/syscalls.list: Replace arg-count + with signatures. + +2000-06-23 Andreas Jaeger + + * iconv/gconv_int.h (norm_add_slashes): Protect suffix expansion. + + * io/test-stat.c: Add copyright header, mention Maciej. + + * sysdeps/unix/sysv/linux/mips/sys/syscall.h (SYS_pivot_root, + SYS_mincore, SYS_madvise): Added. + + * sysdeps/unix/sysv/linux/mips/syscalls.list: Fix signature of + execve. + +2000-06-22 Ulrich Drepper + + * libio/Makefile (tests): Add tst-getwc and tst_putwc. + (CFLAGS-tst_putwc.c): New definition. + * libio/tst_getwc.c: New file. + * libio/tst_getwc.input: New file. + * libio/tst_putwc.c: New file. + + * include/string.h: Add prototype for __strdup. + +2000-06-22 Greg McGary + + * sysdeps/unix/syscalls.list (sys_mknod): Fix signatures. + * sysdeps/unix/inet/syscalls.list (accept, getpeername, getsockname): + Fix signatures. + +2000-06-23 Jes Sorensen + + * sysdeps/ia64/memcpy.S: Disable branch predict instruction. + +2000-06-22 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/bits/statfs.h: New file. + +2000-06-22 Jes Sorensen + + * shlib-versions: Bump so versions to 6.1 for libc and libm on the + ia64 to allow 2.2+ libraries to coexist with 2.1 ones. + +2000-06-22 Ulrich Drepper + + * io/sys/stat.h: Define S_TYPEISMQ, S_TYPEISSEM, and S_TYPEISSHM. + * sysdeps/generic/bits/stat.h: Define __S_TYPEISMQ, __S_TYPEISSEM, + and __S_TYPEISSHM. + * sysdeps/mach/hurd/bits/stat.h: Likewise. + * sysdeps/unix/bsd/bits/stat.h: Likewise. + * sysdeps/unix/bsd/osf/alpha/bits/stat.h: Likewise. + * sysdeps/unix/sysv/bits/stat.h: Likewise. + * sysdeps/unix/sysv/irix4/bits/stat.h: Likewise. + * sysdeps/unix/sysv/hpux/bits/stat.h: Likewise. + * sysdeps/unix/sysv/linux/alpha/bits/stat.h: Likewise. + * sysdeps/unix/sysv/linux/ia64/bits/stat.h: Likewise. + * sysdeps/unix/sysv/linux/bits/stat.h: Likewise. + * sysdeps/unix/sysv/linux/mips/bits/stat.h: Likewise. + * sysdeps/unix/sysv/sysv4/i386/bits/stat.h: Likewise. + * sysdeps/unix/sysv/sysv4/solaris2/bits/stat.h: Likewise. + * sysdeps/unix/sysv/aix/bits/stat.h: Likewise. + * manual/filesys.texi: Document S_TYPEISMQ, S_TYPEISSEM, and + S_TYPEISSHM. + +2000-06-22 Andreas Jaeger + + * sysdeps/unix/sysv/linux/mips/syscalls.list: Replace arg-count + with signatures. + + * elf/dl-reloc.c (_dl_relocate_object): Fix typos. + + * sysdeps/unix/sysv/linux/mips/syscalls.list: Fix sysctl entry. + +2000-06-21 Ulrich Drepper + + * iconv/gconv_trans.c: Move initialization of winbuf and winbufend + ahead. + +2000-06-21 Greg McGary + + * Makerules (elide-routines.*, elide-bp-thunks): + Define unconditionally. + +2000-06-21 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/Makefile: New file. + +2000-06-21 Andreas Jaeger + + * io/Makefile (tests): Add test-stat. + (CFLAGS-test-stat.c): New. + + * io/test-stat.c: New file from Maciej W. Rozycki + . + +2000-06-21 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/bits/resource.h: Reorder elements + in __rlimit_resource to make them match the kernel order. + rlim_t is always 64 bit, use __rlim64_t to declare it + unconditionally. + +2000-05-04 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/bits/resource.h: Undef + RLIM_INFINITY before defining it to avoid clash with kernel header + +2000-05-03 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/bits/resource.h: New file. + +2000-06-21 Ulrich Drepper + + * sysdeps/unix/sysv/linux/ia64/Versions: New file. + +2000-06-21 Andreas Jaeger + + * stdio-common/temptest.c: Include . + * stdio-common/tst-fileno.c: Likewise. + * stdio-common/scanf4.c: Likewise. + * stdio-common/scanf5.c: Likewise. + * time/clocktest.c: Likewise. + * posix/test-vfork.c: Likewise. + * posix/globtest.c: Likewise. + * io/test-utime.c: Likewise. + * wctype/test_wcfuncs.c: Likewise. + * crypt/cert.c: Likewise. + + * stdio-common/tst-printfsz.c: Include . + * libio/tst_swscanf.c: Likewise. + * libio/tst_wscanf.c: Likewise. + * posix/runtests.c: Likewise. + * posix/tst-getaddrinfo.c: Likewise. + * posix/wordexp-test.c: Likewise. + * misc/tst-efgcvt.c: Likewise. + + * stdlib/tst-xpg-basename.c: Include and . + * nss/test-netdb.c: Likewise. + + * sysdeps/unix/sysv/linux/configure.in: Add check for minimal + supported kernel for MIPS. + + * elf/vismod2.c: Include for abort prototype. + * rt/aio_suspend.c: Likewise. + +2000-06-20 Ulrich Drepper + + * math/libm-test.inc: Include . + +2000-06-20 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/syscalls.list: New file. + +2000-06-20 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/machine-gmon.h: New file. + * sysdeps/unix/sysv/linux/ia64/profil-counter.h: New file. + +2000-06-20 David Mosberger-Tang + + * sysdeps/unix/sysv/linux/ia64/getpagesize.c: New file. + +2000-06-20 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/sys/ucontext.h: Fix typo. + +2000-06-20 Ulrich Drepper + + * locale/programs/ld-collate.c (insert_value): Now take string and + length instead of struct token* parameter. Adjust use of token. + (handle_ellipsis): Likewise. + (collate_read): Allow names and transform them into names + to be passed to insert_value and handle_ellipsis. + + * locale/programs/ld-ctype.c (uninames): New array with names of + digits in format. + (ctype_finish): Correct search for space character value. Likewise + for default outdigits values. + +2000-06-20 Greg McGary + + * Makerules (objects): Add BP thunks. + +2000-06-20 Ulrich Drepper + + * locale/programs/charmap.c (parse_charmap): Handle UCS names also + in width definitions. + +2000-06-20 Andreas Jaeger + + * sysdeps/mips/fpu/libm-test-ulps: New file. + + * sysdeps/mips/fpu/fesetenv.c (__fesetenv): Flush fpu pipeline + first. + + * sysdeps/mips/fpu/feholdexcpt.c: New file. + + * sysdeps/mips/fpu/fraiseexcpt.c: New file. + +2000-06-19 Ulrich Drepper + + * iconv/gconv_builtin.c (BUILTIN_TRANSFORMATION): Update for + change in gconv_builtin.h. + + * malloc/Makefile: Change all references to memprof into memusage. + * malloc/memprof.c: Rename to... + * malloc/memusage.c: ...this. New file. + * malloc/memprof.sh: Rename to... + * malloc/memusage.sh: ...this. New file. + * malloc/memprofstat.c: Rename to... + * malloc/memusagestat.c: ...this. New file. + * sysdeps/alpha/memprof.h: Rename to.. + * sysdeps/alpha/memusage.h: ...this. New file. + * sysdeps/arm/memprof.h: Rename to.. + * sysdeps/arm/memusage.h: ...this. New file. + * sysdeps/generic/memprof.h: Rename to.. + * sysdeps/generic/memusage.h: ...this. New file. + * sysdeps/i386/memprof.h: Rename to.. + * sysdeps/i386/memusage.h: ...this. New file. + * sysdeps/ia64/memprof.h: Rename to.. + * sysdeps/ia64/memusage.h: ...this. New file. + * sysdeps/m68k/memprof.h: Rename to.. + * sysdeps/m68k/memusage.h: ...this. New file. + * sysdeps/mips/memprof.h: Rename to.. + * sysdeps/mips/memusage.h: ...this. New file. + * sysdeps/powerpc/memprof.h: Rename to.. + * sysdeps/powerpc/memusage.h: ...this. New file. + * sysdeps/sparc/memprof.h: Rename to.. + * sysdeps/sparc/memusage.h: ...this. New file. + * sysdeps/sh/memprof.h: Rename to.. + * sysdeps/sh/memusage.h: ...this. New file. + + * elf/sprof.c (print_version): Update year. + + * elf/sprof.c (load_shobj): Don't always add load address to dynamic + table entry values. Use D_PTR. + * elf/dl-reloc.c (_dl_relocate_object): Don't start profiling weird + binaries without PLT. Patches by James Mathiesen . + +2000-06-20 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/Makefile: New file. + * sysdeps/unix/sysv/linux/ia64/sys/io.h: New file. + * sysdeps/unix/sysv/linux/ia64/sys/procfs.h: New file. + * sysdeps/unix/sysv/linux/ia64/sys/ucontext.h: New file. + +2000-05-05 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/bits/fcntl.h: New file. + +2000-06-16 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/xstat.c: New file. + * sysdeps/unix/sysv/linux/ia64/fxstat.c: New file. + * sysdeps/unix/sysv/linux/ia64/lxstat.c: New file. + + * sysdeps/unix/sysv/linux/ia64/xstatconv.c: Deleted. + + * sysdeps/unix/sysv/linux/ia64/bits/stat.h: Update after latest + kernel change. + + * sysdeps/unix/sysv/linux/ia64/bits/types.h: Make __ino_t, + __nlink_t and __blkcnt_t 64 bit to accomodate new kernel stat data + structure. + Change __fsblkcnt_t and __fsfilcnt_t to 64 bit to match kernel + implementation. + +2000-06-15 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/kernel_stat.h: Deleted. + +2000-06-08 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/mmap64.c: New file. + +2000-06-19 Ulrich Drepper + + * iconv/gconv_int.h (strict gconv_module): Remove all members + associated with regular expressions. Use a simple string as the + from name. + * iconv/gconv_db.c: Remove code handling regular expressions. + * iconv/gconv_conf.c: Likewise. + * iconv/iconv_prog.c: Likewise. + * iconv/gconv_builtin.h: Adjust for change in gconv_conf.c. + + * iconv/gconv.h (__gconv_trans_fct): Add new parameter. + General namespace cleanup. + (struct __gconv_trans_data): Add next field. + (struct __gconv_step_data): Make __trans a pointer. + * iconv/gconv_conf.c: Split out code to find gconv directories from + __gconv_read_conf in new functions. + * iconv/gconv_int.h: Define new data structure and declare new + functions for handling of gconv directory list. + * iconv/gconv_open.c: Allow more than one error handling step being + used. Call function to load error handling module if it is none + of the builtin transformations. + * iconv/gconv_close.c: Add code to free transliteration data. + * iconv/gconv_trans.c: Add functions to load and unload modules + implementing transliteration etc. + * iconv/skeleton.c: Call all context functions now that more than + one module is allowed. + * iconv/loop.c (STANDARD_ERR_HANDLING): New macro. + * iconv/gconv_simple.c: Use STANDARD_ERR_HANDLING macro for places + where the full error handling using transliteration is needed. + * iconvdata/8bit-gap.c: Likewise. + * iconvdata/8bit-generic.c: Likewise. + * iconvdata/ansi_x3.110.c: Likewise. + * iconvdata/big5.c: Likewise. + * iconvdata/big5hkscs.c: Likewise. + * iconvdata/euc-cn.c: Likewise. + * iconvdata/euc-jp.c: Likewise. + * iconvdata/euc-kr.c: Likewise. + * iconvdata/euc-tw.c: Likewise. + * iconvdata/gbgbk.c: Likewise. + * iconvdata/gbk.c: Likewise. + * iconvdata/iso-2022-cn.c: Likewise. + * iconvdata/iso-2022-jp.c: Likewise. + * iconvdata/iso-2022-kr.c: Likewise. + * iconvdata/iso646.c: Likewise. + * iconvdata/iso8859-1.c: Likewise. + * iconvdata/iso_6937-2.c: Likewise. + * iconvdata/iso_6937.c: Likewise. + * iconvdata/johab.c: Likewise. + * iconvdata/sjis.c: Likewise. + * iconvdata/t.61.c: Likewise. + * iconvdata/uhc.c: Likewise. + * iconvdata/unicode.c: Likewise. + * iconvdata/utf-16.c: Likewise. + * libio/iofwide.c: Reset __trans member of __gconv_trans_data + structure correctly after last change. + * wcsmbs/btowc.c: Likewise. + * wcsmbs/mbrtowc.c: Likewise. + * wcsmbs/mbsnrtowcs.c: Likewise. + * wcsmbs/mbsrtowcs.c: Likewise. + * wcsmbs/wcrtomb.c: Likewise. + * wcsmbs/wcsnrtombs.c: Likewise. + * wcsmbs/wcsrtombs.c: Likewise. + * wcsmbs/wctob.c: Likewise. + + * localedata/Makefile: Set -Wno-format for some files since gcc does + not know all the format specifiers. + +2000-06-18 Ulrich Drepper + + * locale/loadlocale.c (_nl_unload_locale): Remove a bit of + unneeded code. + * locale/lc-time.c (_nl_init_era_entries): Likewise. + +2000-06-18 Andreas Jaeger + + * sysdeps/mips/dl-machine.h: Always use $25 as jump register. + Patch by Ralf Baechle . + +2000-06-17 Ulrich Drepper + + * sysdeps/unix/sysv/linux/alpha/fpathconf.c: Define and use + LINUX_LINK_MAX. + * sysdeps/unix/sysv/linux/alpha/pathconf.c: Likewise. + + * locale/programs/ld-ctype.c (ctype_output): Really write out + mboutdigits information. + * localedata/tst-trans.c: Add code to test printf's I flag with locale. + * localedata/tst-trans.sh: Set GCONV_PATH for compilation environment. + * localedata/tests/trans.def: Add outdigit information. + + * localedata/tst-mbswcs3.c: Remove comment. + + * stdio-common/vfprintf.c (vfprintf): Fix handling of I flag. + * stdio-common/tiformat.c (sprint_ints): Add tests for I flag. + * libio/tst_wprintf.c (main): Add test for I flag. + + * iconv/gconv_trans.c: Implement handling if translit_ignore. + * locale/langinfo.h: Add entries for translit_ignore information. + * locale/categories.def: Add entries for new LC_CTYPE elements. + * locale/C-ctype.c: Add initializers for new fields. Use NULL + pointer instead of "" where possible. + * locale/programs/ld-ctype.c: Write out translit_ignore information. + * intl/Depend: Add localedata. + * intl/tst-gettext.c: Call setlocale for LC_CTYPE. + * intl/tst-gettext.sh: Set LOCPATH to localedata build dir. + +2000-06-16 Ulrich Drepper + + * locale/langinfo.h: Add entries for default_missing information. + * locale/C-ctype.c: Add initializers for new fields. + * iconv/gconv_trans.c: If nothing matched, try to use default_missing + information. + * locale/categories.h: Add entries for all LC_CTYPE values. + * locale/programs/ld-ctype.c (ctype_output): Write out default_missing + information. + + * localedata/tst-trans.c: Write out an error message if class is + not found. + + * iconv/gconv_int.h (norm_add_slashes): Optionally add given suffix. + * iconv/gconv_open.c: Remove error handling specification from `from' + character set name. + * intl/loadmsgcat.c (_nl_load_domain): Call norm_add_slashes with + new parameter to always enable transliteration. + * locale/localeinfo.h (LIMAGIC): Bump number because of incompatible + change. + (struct locale_data): Add new members use_translit and options. + * locale/findlocale.c (_nl_find_locale): Set use_translit flag is + character set name contained modifier TRANSLIT. + * locale/loadlocale.c (_nl_load_locale): Initialize new use_translit + and options fields. + (_nl_unload_locale): Free options string if necessary. + * wcsmbs/wcsmbsload.c (__wcsmbs_load_conv): Enable translation if + the locale names suggested this. + * locale/C-address.c: Add two new initialilzers to adjust data + structure for new format. + * locale/C-collate.c: Likewise. + * locale/C-ctype.c: Likewise. + * locale/C-identification.c: Likewise. + * locale/C-measurement.c: Likewise. + * locale/C-messages.c: Likewise. + * locale/C-monetary.c: Likewise. + * locale/C-name.c: Likewise. + * locale/C-numeric.c: Likewise. + * locale/C-paper.c: Likewise. + * locale/C-telephone.c: Likewise. + * locale/C-time.c: Likewise. + + * locale/setlocale.c: Add some more __builtin_expect. + +2000-06-15 Ulrich Drepper + + * iconv/gconv.h (__gconv_fct): Change type of fifth parameter to + unsigned char **. + (__gconv_init_fct): Remove two parameters. + * iconv/gconv_int.h (__gconv_transliterate): Renamed from + gconv_transliterate. Remove two parameters. + Change prototypes of builtin functions according to __gconv_fct change. + * iconv/skeleton.c: Change type of fifth parameter. make sure it is + != NULL only during error handling. Stop in this case after the + conversion. + * iconv/gconv_trans.c: Replace with real implementation for + __gconv_transliterate. + * iconv/gconv_open.c: Adjust for renaming of __gconv_transliterate. + * iconv/gconv.c: Change calls to downstream functions once again. + Use NULL for the fifth parameter instead of pointer to output buffer. + * libio/iofwide.c: Likewise. + * wcsmbs/btowc.c: Likewise. + * wcsmbs/mbrtowc.c: Likewise. + * wcsmbs/mbsnrtowcs.c: Likewise. + * wcsmbs/mbsrtowcs.c: Likewise. + * wcsmbs/wcrtomb.c: Likewise. + * wcsmbs/wcsnrtombs.c: Likewise. + * wcsmbs/wcsrtombs.c: Likewise. + * wcsmbs/wctob.c: Likewise. + * iconv/gconv_simple.c: Remove two parameters from error handling + function call. + * iconvdata/8bit-gap.c: Likewise. + * iconvdata/8bit-generic.c: Likewise. + * iconvdata/ansi_x3.110.c: Likewise. + * iconvdata/big5.c: Likewise. + * iconvdata/big5hkscs.c: Likewise. + * iconvdata/euc-cn.c: Likewise. + * iconvdata/euc-jp.c: Likewise. + * iconvdata/euc-kr.c: Likewise. + * iconvdata/euc-tw.c: Likewise. + * iconvdata/gbgbk.c: Likewise. + * iconvdata/gbk.c: Likewise. + * iconvdata/iso-2022-cn.c: Likewise. + * iconvdata/iso-2022-jp.c: Likewise. + * iconvdata/iso-2022-kr.c: Likewise. + * iconvdata/iso646.c: Likewise. + * iconvdata/iso8859-1.c: Likewise. + * iconvdata/iso_6937-2.c: Likewise. + * iconvdata/iso_6937.c: Likewise. + * iconvdata/johab.c: Likewise. + * iconvdata/sjis.c: Likewise. + * iconvdata/t.61.c: Likewise. + * iconvdata/uhc.c: Likewise. + * iconvdata/unicode.c: Likewise. + * iconvdata/utf-16.c: Likewise. + +2000-06-15 Greg McGary + + * sysdeps/unix/make-syscalls.sh: Strip leading whitespace from lhs + of callnum assignment. Tolerate callnum expressions containing + parens. + +2000-06-14 Ulrich Drepper + + * login/Makefile (utmpd): Remove rule to build utmpd. + + * csu/Versions: Move libgcc frame handling functions from here... + * sysdeps/unix/sysv/linux/alpha/Versions: ...to here... + * sysdeps/unix/sysv/linux/arm/Versions: ...to here... + * sysdeps/unix/sysv/linux/i386/Versions: ...to here... + * sysdeps/unix/sysv/linux/m68k/Versions: ...to here... + * sysdeps/unix/sysv/linux/powerpc/Versions: ...to here... + * sysdeps/unix/sysv/linux/sparc/sparc32/Versions: ...and here. + New file. + * sysdeps/mach/hurd/i386/Versions: ...and here. New file. + + * locale/programs/ld-ctype.c (allocate_arrays): Correct a comment. + + * misc/syslog.c (vsyslog): Initialize msgoff in all cases. + +2000-06-14 Kazumoto Kojima + + * sysdeps/sh/sh4/fpu/fclrexcpt.c: Remove definitions for backward + compatibility. + * sysdeps/sh/sh4/fpu/fegetenv.c: Likewise. + * sysdeps/sh/sh4/fpu/fesetenv.c: Likewise. + * sysdeps/sh/sh4/fpu/fraiseexcpt.c: Likewise. + * sysdeps/sh/sh4/fpu/fsetexcptflg.c: Likewise. + +2000-06-14 Jakub Jelinek + + * include/libc-symbols.h (link_warning): If HAVE_SECTION_QUOTES is + defined, terminate quotes and read them after the comment char. + * configure.in (HAVE_SECTION_QUOTES): Test whether + __attribute__((section ("x"))) puts quotes around x or not. + * config.h.in (HAVE_SECTION_QUOTES): Add. + * configure: Rebuilt. + +2000-06-14 Andreas Jaeger + + * sysdeps/unix/sysv/linux/configure.in: Set libc_cv_sysconfdir + depending on the configure option --sysconfdir. + Closes PR libc/1762. + Patch by Andreas Schwab . + + * sysdeps/mips/dl-machine.h: Pass finalizer correctly to user + entry point. + Reported by Jim Pick . + +2000-06-14 Ulrich Drepper + + * misc/syslog.c (vsyslog): Allow open_memstream to fail without + crashing the application. Emit some simple error message. + Reported by mju@panasas.com [PR libc/1769]. + +2000-06-13 Ulrich Drepper + + * malloc/Makefile (distribute): Add memprof.sh and memprofstat.c. + + * crypt/Makefile (distribute): Add md5.h. + + * Makefile (distribute): Add include/shlib-compat.h. + + * Make-dist: Search for tests also in sysdeps hierachy. + + * crypt/Makefile (distribute): Add ufc-crypt.h, crypt-private.h, + ufc.c, speeds.c, README.ufc-crypt, and Banner. + + * sysdeps/sparc/Subdirs: New file. + + * locale/Makefile (distribute): Add weightwc.h and + programs/localedef.h. + + * time/Makefile (distribute): Add datemsk. + + * sysdeps/ia64/Dist: Add softpipe.h. + + * sysdeps/unix/sysv/aix/Dist: New file. + + * posix/setpgrp.c: Moved to... + * sysdeps/generic/setpgrp.c: ...here. New file. + * io/mknod.c: Moved to... + * sysdeps/generic/mknod.c: ...here. New file. + + * sysdeps/unix/sysv/linux/ia64/Dist: New file. + + * sysdeps/unix/sysv/linux/sparc/Dist: Add sys/procfs.h. + + * sysdeps/unix/sysv/linux/arm/Dist: Add oldgetrlimit64.c. + + * sysdeps/powerpc/Dist: Add fprrest.S, fprsave.S, gprsave1.S, + gprsave0.S, gprrest1.S, and gprrest0.S. + + * sysdeps/generic/Dist: Add bp-thunks.h, bp-sym.h, and bp-start.h. + + * posix/Makefile (routines): Add spawnattr_getsigmask, + spawnattr_getschedpolicy, spawnattr_getschedparam, + spawnattr_setsigmask, spawnattr_setschedpolicy, and + spawnattr_setschedparam. + * posix/Versions: Add posix_spawnattr_getschedpolicy, + posix_spawnattr_setschedpolicy, posix_spawnattr_getschedparam, and + posix_spawnattr_setschedparam. + + * posix/spawnattr_setschedparam.c: Fix typo. + + * posix/spawnattr_setsigmask.c (posix_spawnattr_setsigmask): + Correct typo. + + * login/programs/utmpd.c: Removed. + * login/programs/utmpd.h: Removed. + * login/programs/utmpd-private.h: Removed. + + * Makefile (distribute): Add include/db_185.h and include/db.h. + + * iconvdata/Makefile (distribute): Add iso-ir-165.c and + iso-ir-165.h. + + * elf/Makefile (distribute): Add missing files. + + * dlfcn/Makefile: Add back rules to include eval in libdl.so. + * elf/eval.c: Moved to... + * dlfcn/eval.c: ...here. New file. + + * Makefile (distribute): Also distribute ChangeLog.1?. + + * Make-dist (+tsrcs): Remove .args handling here as well. + + * rt/Makefile (tests): Add tst-timer. + * sysdeps/generic/tst-timer.c: New file. + + * Makerules (sources): Don't add BP sources here. + + * login/Makefile (distribute): Remove xtmp.h. + + * iconv/iconv_prog.c (main): Fix appending slashes if omit_invalid + is true. Reported by Bruno Haible . + +2000-06-13 Andreas Jaeger + + * sysdeps/mips/elf/start.S (ENTRY_POINT): Remove mips64 defines. + Patch by Ralf Baechle . + +2000-06-13 Ulrich Drepper + + * sysdeps/unix/sysv/linux/syscalls.list: Add parameter information + for mincore syscall. + + * misc/sys/cdefs.h: Define __bounded and __unbounded if + __BOUNDED_POINTERS__ is not defined. + +2000-06-07 Greg McGary + + * sysdeps/generic/bp-sym.h: New file. + * sysdeps/generic/bp-start.h: New file. + * sysdeps/i386/elf/start.S: Designate BP symbols. + * sysdeps/generic/libc-start.c: Wrap bounds around + argv & envp and each of their string members. + +2000-06-07 Greg McGary + + * sysdeps/unix/make-syscalls.sh: Add comments to + output that aid debugging & comprehension. + Map simple syscall signatures to number of args. + Generate BP syscall thunk definitions. + * sysdeps/generic/bp-thunks.h: New file. + * sysdeps/unix/syscalls.list: Replace arg-count with + simple return+arg signature. + * sysdeps/unix/common/syscalls.list: Likewise. + * sysdeps/unix/inet/syscalls.list: Likewise. + * sysdeps/unix/mman/syscalls.list: Likewise. + * sysdeps/unix/sysv/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/i386/syscalls.list: Likewise. + +2000-06-07 Greg McGary + + * Makeconfig (CPPFLAGS-.ob): Pass -fbounded-pointers + for all files *.[cS]. + (CFLAGS-.ob): Don't optimize sibling calls. + (bppfx): New variable. + * Makerules (elide-bp-thunks): New variable. + (elide-routines.*): Elide BP-* files for all but *.ob. + (sources): Include bp-thunks. + +2000-06-12 Ulrich Drepper + + * iconv/gconv_simple.c: Remove unnecessary prototype. + + * iconv/gconv_trans.c: Pretty print. + + * elf/elf.h (R_SH_NUM): Got accidently dropped. + + * sysdeps/unix/sysv/linux/configure.in: Improve handling of + minimal kernel versions. Add information about IA-64 kernel. + + * sysdeps/unix/sysv/linux/configure.in: Allow architecture + specific minimal supported kernel versions to be specified. + + * libio/iofwide.c (_IO_fwide): Initialize transliteration part of + step data structure. + * wcsmbs/btowc.c: Likewise. + * wcsmbs/mbrtowc.c: Likewise. + * wcsmbs/mbsnrtowcs.c: Likewise. + * wcsmbs/mbsrtowcs.c: Likewise. + * wcsmbs/wcrtomb.c: Likewise. + * wcsmbs/wcsnrtombs.c: Likewise. + * wcsmbs/wcsrtombs.c: Likewise. + * wcsmbs/wctob.c: Likewise. + + * sysdeps/unix/sysv/linux/sh/Dist: There is no ioperm file. + * sysdeps/unix/sysv/linux/sh/oldgetrlimit64.c: Removed. + + * shlib-versions: Earliest backward compatible version for SH is 2.2. + + * misc/sys/cdefs.h: Remove one more __P. + + * sysvipc/sys/shm.h: Move __getpagesize declaration inside extern C. + Reported by HJ Lu. + + * sysdeps/sh/sh3/bits/setjmp.h: Removed. + * sysdeps/sh/sh4/bits/setjmp.h: Moved to... + * sysdeps/sh/bits/setjmp.h: ...here. New file. + +2000-06-12 Kazumoto Kojima + Yutaka Niibe + + * configure.in: Add machine sh3, sh4. + * elf/elf.h: Add SH specific declarations of relocations. + * shlib-versions: Add sh*-*-linux* cases. + +2000-06-12 Ulrich Drepper + + * sysdeps/sh/sh3/bsd-_setjmp.S: Move to... + * sysdeps/sh/bsd-_setjmp.S: ...here. New file. + * sysdeps/sh/sh4/bsd-_setjmp.S: Removed. + * sysdeps/sh/sh3/bsd-setjmp.S: Move to... + * sysdeps/sh/bsd-setjmp.S: ...here. New file. + * sysdeps/sh/sh4/bsd-setjmp.S: Removed. + + * sysdeps/sh/dl-machine.h (FGR_SAVE): Protect using HAVE_FPU macro + instead of KERNEL_MATH_EMULATION. + * sysdeps/sh/sh4/dl-machine.h: Define HAVE_FPU not + KERNEL_MATH_EMULATION. + + * sysdeps/sh/Dist: Removed. There is no ieee754.h file. + * sysdeps/sh/sh3/dl-machine.h: Moved to... + * sysdeps/sh/dl-machine.h: ...here. New file. + * sysdeps/sh/sh4/dl-machine.h: Simply define KERNEL_MATH_EMULATION + and include generic SH version. + * sysdeps/sh/sh3/bits/endian.h: Move to... + * sysdeps/sh/bits/endian.h: ...here. New file. + * sysdeps/sh/sh4/bits/endian.h: Removed. + * sysdeps/sh/sh3/bits/huge_val.h: Move to... + * sysdeps/sh/bits/huge_val.h: ...here. New file. + * sysdeps/sh/sh4/bits/huge_val.h: Removed. + + * include/libc-symbols.h (link_warning): Work around a change in + GAS which warns about changing section attributes. + Proposed by Nick Clifton . + +2000-06-12 H.J. Lu + + * sysdeps/i386/fpu/bits/mathinline.h (__sgn1l): Add __extension__. + +2000-06-11 H.J. Lu + + * sysdeps/i386/fpu/Versions: New file. + +2000-06-12 Ulrich Drepper + + * iconv/gconv.h (__gconv_trans_context_fct): Remove two + parameters. + * iconv/skeleton.c (FUNCTION_NAME): Call __trans_context_fct if it + exists. + +2000-06-12 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/kernel_stat.h: New file. + * sysdeps/unix/sysv/linux/ia64/xstatconv.c: New file. + * sysdeps/unix/sysv/linux/ia64/bits/stat.h: New file. + + * sysdeps/unix/sysv/linux/ia64/fxstat64.c: New file. + * sysdeps/unix/sysv/linux/ia64/lxstat64.c: New file. + * sysdeps/unix/sysv/linux/ia64/xstat64.c: New file. + +2000-06-12 Kazumoto Kojima + Yutaka Niibe + + * sysdeps/sh/Dist: New file. + * sysdeps/sh/Implies: New file. + * sysdeps/sh/elf/initfini.c: New file. + * sysdeps/sh/gmp-mparam.h: New file. + * sysdeps/sh/init-first.c: New file. + * sysdeps/sh/machine-gmon.h: New file. + * sysdeps/sh/memcpy.S: New file. + * sysdeps/sh/memprof.h: New file. + * sysdeps/sh/memset.S: New file. + * sysdeps/sh/sh3/__longjmp.S: New file. + * sysdeps/sh/sh3/bits/endian.h: New file. + * sysdeps/sh/sh3/bits/huge_val.h: New file. + * sysdeps/sh/sh3/bits/setjmp.h: New file. + * sysdeps/sh/sh3/bsd-_setjmp.S: New file. + * sysdeps/sh/sh3/bsd-setjmp.S: New file. + * sysdeps/sh/sh3/dl-machine.h: New file. + * sysdeps/sh/sh3/setjmp.S: New file. + * sysdeps/sh/sh4/__longjmp.S: New file. + * sysdeps/sh/sh4/bits/endian.h: New file. + * sysdeps/sh/sh4/bits/huge_val.h: New file. + * sysdeps/sh/sh4/bits/setjmp.h: New file. + * sysdeps/sh/sh4/bsd-_setjmp.S: New file. + * sysdeps/sh/sh4/bsd-setjmp.S: New file. + * sysdeps/sh/sh4/dl-machine.h: New file. + * sysdeps/sh/sh4/fpu/bits/fenv.h: New file. + * sysdeps/sh/sh4/fpu/bits/huge_val.h: New file. + * sysdeps/sh/sh4/fpu/bits/mathdef.h: New file. + * sysdeps/sh/sh4/fpu/fclrexcpt.c: New file. + * sysdeps/sh/sh4/fpu/fegetenv.c: New file. + * sysdeps/sh/sh4/fpu/fegetround.c: New file. + * sysdeps/sh/sh4/fpu/feholdexcpt.c: New file. + * sysdeps/sh/sh4/fpu/fesetenv.c: New file. + * sysdeps/sh/sh4/fpu/fesetround.c: New file. + * sysdeps/sh/sh4/fpu/fpu_control.h: New file. + * sysdeps/sh/sh4/fpu/fraiseexcpt.c: New file. + * sysdeps/sh/sh4/fpu/fsetexcptflg.c: New file. + * sysdeps/sh/sh4/fpu/ftestexcept.c: New file. + * sysdeps/sh/sh4/fpu/libm-test-ulps: New file. + * sysdeps/sh/sh4/setjmp.S: New file. + * sysdeps/sh/elf/start.S: New file. + * sysdeps/sh/sys/ucontext.h: New file. + * sysdeps/sh/strlen.S: New file. + * sysdeps/sh/sysdep.h: New file. + * sysdeps/unix/sh/sysdep.S: New file. + * sysdeps/unix/sh/sysdep.h: New file. + * sysdeps/unix/sysv/linux/sh/Dist: New file. + * sysdeps/unix/sysv/linux/sh/Makefile: New file. + * sysdeps/unix/sysv/linux/sh/Versions: New file. + * sysdeps/unix/sysv/linux/sh/bits/mman.h: New file. + * sysdeps/unix/sysv/linux/sh/bits/resource.h: New file. + * sysdeps/unix/sysv/linux/sh/brk.c: New file. + * sysdeps/unix/sysv/linux/sh/chown.c: New file. + * sysdeps/unix/sysv/linux/sh/clone.S: New file. + * sysdeps/unix/sysv/linux/sh/fchown.c: New file. + * sysdeps/unix/sysv/linux/sh/fxstat.c: New file. + * sysdeps/unix/sysv/linux/sh/getegid.c: New file. + * sysdeps/unix/sysv/linux/sh/geteuid.c: New file. + * sysdeps/unix/sysv/linux/sh/getgroups.c: New file. + * sysdeps/unix/sysv/linux/sh/getresgid.c: New file. + * sysdeps/unix/sysv/linux/sh/getresuid.c: New file. + * sysdeps/unix/sysv/linux/sh/getrlimit.c: New file. + * sysdeps/unix/sysv/linux/sh/getrlimit64.c: New file. + * sysdeps/unix/sysv/linux/sh/getuid.c: New file. + * sysdeps/unix/sysv/linux/sh/lchown.c: New file. + * sysdeps/unix/sysv/linux/sh/lxstat.c: New file. + * sysdeps/unix/sysv/linux/sh/msgctl.c: New file. + * sysdeps/unix/sysv/linux/sh/oldgetrlimit64.c: New file. + * sysdeps/unix/sysv/linux/sh/pipe.S: New file. + * sysdeps/unix/sysv/linux/sh/profil-counter.h: New file. + * sysdeps/unix/sysv/linux/sh/semctl.c: New file. + * sysdeps/unix/sysv/linux/sh/setegid.c: New file. + * sysdeps/unix/sysv/linux/sh/seteuid.c: New file. + * sysdeps/unix/sysv/linux/sh/setfsgid.c: New file. + * sysdeps/unix/sysv/linux/sh/setfsuid.c: New file. + * sysdeps/unix/sysv/linux/sh/setgid.c: New file. + * sysdeps/unix/sysv/linux/sh/setgroups.c: New file. + * sysdeps/unix/sysv/linux/sh/setregid.c: New file. + * sysdeps/unix/sysv/linux/sh/setresgid.c: New file. + * sysdeps/unix/sysv/linux/sh/setresuid.c: New file. + * sysdeps/unix/sysv/linux/sh/setreuid.c: New file. + * sysdeps/unix/sysv/linux/sh/setrlimit.c: New file. + * sysdeps/unix/sysv/linux/sh/setuid.c: New file. + * sysdeps/unix/sysv/linux/sh/sh3/register-dump.h: New file. + * sysdeps/unix/sysv/linux/sh/sh4/register-dump.h: New file. + * sysdeps/unix/sysv/linux/sh/shmctl.c: New file. + * sysdeps/unix/sysv/linux/sh/sigcontextinfo.h: New file. + * sysdeps/unix/sysv/linux/sh/socket.S: New file. + * sysdeps/unix/sysv/linux/sh/sys/io.h: New file. + * sysdeps/unix/sysv/linux/sh/sys/ucontext.h: New file. + * sysdeps/unix/sysv/linux/sh/sys/user.h: New file. + * sysdeps/unix/sysv/linux/sh/syscalls.list: New file. + * sysdeps/unix/sysv/linux/sh/sysdep.S: New file. + * sysdeps/unix/sysv/linux/sh/sysdep.h: New file. + * sysdeps/unix/sysv/linux/sh/vfork.S: New file. + * sysdeps/unix/sysv/linux/sh/xstat.c: New file. + +2000-06-12 Ulrich Drepper + + * Rules (%.out): Define GCONV_PATH in the environment. + * assert/Depend: New file. + * iconvdata/Depend: New file. + * intl/Depend: New file. + * timezone/Makefile (build-testdata): Add GCONV_PATH to environment. + * intl/tst-gettext.sh: Likewise. + * iconv/Makefile (routines): Add gconv_trans. + * iconv/gconv_trans.c: New file. + * iconv/gconv.h (struct __gconv_trans_data): New type. + (__gconv_fct): New parameter with starting position in output buffer. + (__gconv_trans_fct, __gconv_trans_context_fct, __gconv_trans_query_fct, + __gconv_trans_init_fct, __gconv_trans_end_fct): New types. + (struct __gconv_step): Add new member __trans. + * iconv/gconv_int.h: Pretty print prototypes. + (gconv_transliterate): New prototype. + (__BUILTIN_TRANS): Update for new conversion function interface. + * iconv/gconv.c (__gconv): Pass new parameter to conversion function. + * iconv/gconv_open.c (__gconv_open): Recognize error handling suffix + in names, find appropriate function, and install in the conversion + steps it can be used. + * iconv/skeleton.c: Add additional parameter for beginning of output + buffer. Change calls of downstream functions. + * iconv/loop.c: Change loop function interface completely. Pass in + step and step_data structure. Remove optimization for BODY with + NEED_LENGTH_TEST == 0. + * iconv/gconv_simple.c: Update interfaces of functions. Insert + appropriate error handling code to use transliteration steps. Remove + optimization for BODY with NEED_LENGTH_TEST == 0. + * iconvdata/8bit-gap.c: Likewise. + * iconvdata/8bit-generic.c: Likewise. + * iconvdata/ansi_x3.110.c: Likewise. + * iconvdata/big5.c: Likewise. + * iconvdata/big5hkscs.c: Likewise. + * iconvdata/euc-cn.c: Likewise. + * iconvdata/euc-jp.c: Likewise. + * iconvdata/euc-kr.c: Likewise. + * iconvdata/euc-tw.c: Likewise. + * iconvdata/gbgbk.c: Likewise. + * iconvdata/gbk.c: Likewise. + * iconvdata/iso-2022-cn.c: Likewise. + * iconvdata/iso-2022-jp.c: Likewise. + * iconvdata/iso-2022-kr.c: Likewise. + * iconvdata/iso646.c: Likewise. + * iconvdata/iso8859-1.c: Likewise. + * iconvdata/iso_6937-2.c: Likewise. + * iconvdata/iso_6937.c: Likewise. + * iconvdata/johab.c: Likewise. + * iconvdata/sjis.c: Likewise. + * iconvdata/t.61.c: Likewise. + * iconvdata/uhc.c: Likewise. + * iconvdata/unicode.c: Likewise. + * iconvdata/utf-16.c: Likewise. + * libio/iofwide.c: Adjust to new interface of gconv functions. Use + DL_CALL_FCT. + * wcsmbs/btowc.c: Likewise. + * wcsmbs/mbrtowc.c: Likewise. + * wcsmbs/mbsnrtowcs.c: Likewise. + * wcsmbs/mbsrtowcs.c: Likewise. + * wcsmbs/wcrtomb.c: Likewise. + * wcsmbs/wcsnrtombs.c: Likewise. + * wcsmbs/wcsrtombs.c: Likewise. + * wcsmbs/wctob.c: Likewise. + +2000-04-11 Geoff Keating + + * sysdeps/powerpc/dl-machine.c: Include dl-machine.h after the + other header files. Mention about 128-byte cache line sizes. + (__elf_machine_fixup_plt): Make types match elf_machine_fixup_plt. + * sysdeps/powerpc/dl-machine.h (elf_machine_fixup_plt): Update + for current calling sequence. + * sysdeps/powerpc/dl-start.S (_dl_start_user): Close comment. + + * sysdeps/powerpc/fpu/s_rint.c: Handle rounding to -0 correctly. + * sysdeps/powerpc/fpu/s_rintf.c: Likewise. + + * sysdeps/unix/sysv/linux/powerpc/syscalls.list: Add getrlimit + and setrlimit syscalls for backwards compatibility. + +2000-06-10 Ulrich Drepper + + * iconv/skeleton.c: Rename converted written to correcter name + irreversible. + * iconv/gconv.c: Rename converted variable to correcter name + irreversible. + * iconv/gconv_int.h: Likewise. + * iconv/gconv_simple.c: Likewise. + * iconv/iconv.c: Likewise. + * iconv/loop.c: Likewise. + * iconvdata/8bit-gap.c: Likewise. + * iconvdata/8bit-generic.c: Likewise. + * iconvdata/ansi_x3.110.c: Likewise. + * iconvdata/big5.c: Likewise. + * iconvdata/big5hkscs.c: Likewise. + * iconvdata/euc-cn.c: Likewise. + * iconvdata/euc-jp.c: Likewise. + * iconvdata/euc-kr.c: Likewise. + * iconvdata/gbgbk.c: Likewise. + * iconvdata/gbk.c: Likewise. + * iconvdata/iso-2022-cn.c: Likewise. + * iconvdata/iso-2022-jp.c: Likewise. + * iconvdata/iso-2022-kr.c: Likewise. + * iconvdata/iso646.c: Likewise. + * iconvdata/iso8859-1.c: Likewise. + * iconvdata/iso_6937-2.c: Likewise. + * iconvdata/iso_6937.c: Likewise. + * iconvdata/johab.c: Likewise. + * iconvdata/sjis.c: Likewise. + * iconvdata/t.61.c: Likewise. + * iconvdata/uhc.c: Likewise. + * iconvdata/unicode.c: Likewise. + * iconvdata/utf-16.c: Likewise. + + * sysdeps/unix/sysv/linux/bits/socket.h (struct cmsghdr): Mark + __cmsg_data field with __extension__. + +2000-06-10 David Mosberger + + * sysdeps/unix/sysv/linux/ia64/syscall.S: Fix it so it actually works. + +2000-06-10 Ulrich Drepper + + * iconv/gconv_simple.c: Fix various small bugs in several + functions. + + * iconv/loop.c: Fix comment. + +2000-06-10 Jakub Jelinek + + * elf/link.h: Remove libc internal declarations. + * include/link.h: Move them here. + +2000-06-09 Ulrich Drepper + + * sysdeps/unix/sysv/linux/ia64/getsysstats.c: New file. + Patch by Dan Pop . + + Rewrite error message handling. + * elf/dl-deps.c (_dl_map_object_deps): Pass new parameter to + _dl_catch_error. + * elf/dl-error (struct catch): Add objname member. + (_dl_signal_error): Take new parameter with object name. When + passing message on simply store object name and duplicate error + message. + (_dl_catch_error): Take new parameter. Store object name in the + place pointed to. + * include/dlfcn.h: Adjust _dl_catch_error prototype. + * sysdeps/generic/ldsodefs.h: Adjust _dl_signal_error prototype. + * dlfcn/dlerror.c (struct dl_action_result): Add objname member. + (dlerror): Add objname to asprintf() parameters. + (_dl_error_run): Pass new parameter to _dl_catch_error. + * elf/dl-libc.c (dlerror_run): Pass new parameter to _dl_catch_error. + * elf/dl-open.c (_dl_open): Likewise. + * elf/rtld.c (dl_main): Likewise. + * elf/dl-close.c: Mark error messages with N_(). + * elf/dl-deps.c: Likewise. + * elf/dl-error.c: Likewise. + * elf/dl-load.c: Likewise. + * elf/dl-open.c: Likewise. + * elf/dl-reloc.c: Likewise. + * elf/dl-support.c: Likewise. + * elf/dl-sym.c: Likewise. + * elf/dl-version.c: Likewise. + * elf/dl-lookup.c: Add comments about problems with error message + translations. + * elf/dl-reloc.c: Likewise. + * elf/dl-version.c: Likewise. + +2000-06-09 H.J. Lu + + * dlfcn/dlerror.c (_dlerror_run): Set result->errstring to NULL + after freeing it. + + * dlfcn/Makefile (distribute): Add failtestmod.c. + (tests): Add failtest. + Add rules to build and run failtest. + * dlfcn/failtest.c: New file. + * dlfcn/failtestmod.c: New file. + +2000-06-09 David Mosberger-Tang + + * sysdeps/unix/sysv/linux/ia64/__longjmp.S: new file + * sysdeps/unix/sysv/linux/ia64/bsd-_setjmp.S: new file + * sysdeps/unix/sysv/linux/ia64/bsd-setjmp.S: new file + * sysdeps/unix/sysv/linux/ia64/setjmp.S: new file + * sysdeps/unix/sysv/linux/ia64/bits/setjmp.h: new file + +2000-06-09 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/brk.S: New file. + * sysdeps/unix/sysv/linux/ia64/pipe.S: New file. + +2000-06-09 Jes Sorensen + Ulrich Drepper + + * sysdeps/unix/sysv/linux/ia64/sigaction.c: New file. + * sysdeps/unix/sysv/linux/ia64/sigpending.c: New file. + * sysdeps/unix/sysv/linux/ia64/sigprocmask.c: New file. + * sysdeps/unix/sysv/linux/ia64/sigsuspend.c: New file. + * sysdeps/unix/sysv/linux/ia64/bits/sigaction.h: New file. + * sysdeps/unix/sysv/linux/ia64/bits/sigstack.h: New file. + +2000-06-09 Ulrich Drepper + + * sysdeps/unix/sysv/linux/shm_open.c (where_is_shmfs): Try harder + to find correct mount point despite wrong information from the + kernel. + +2000-06-09 Jes Sorensen + + * elf/dl-libc.c (__libc_dlsym): Use DL_SYMBOL_ADDRESS() to obtain + the address of a symbol so function pointers are handled properly. + +2000-06-08 Ulrich Drepper + + * sysdeps/i386/Dist: Add bp-asm.h. + + * sysdeps/unix/sysv/linux/shm_open.c (where_is_shmfs): Use + defaultdir variable instead of "/var/shm" everywhere. + (defaultdir): Change to /dev/shm/. + +2000-06-08 Greg McGary + + * sysdeps/i386/bp-asm.h: New file. + * sysdeps/i386/__longjmp.S: Define & use symbolic argument stack + offsets. Add ENTER/LEAVE macros for optionally maintaining + frame-pointer chain when debugging. + * sysdeps/i386/add_n.S: Likewise. + * sysdeps/i386/addmul_1.S: Likewise. + * sysdeps/i386/lshift.S: Likewise. + * sysdeps/i386/memchr.S: Likewise. + * sysdeps/i386/memcmp.S: Likewise. + * sysdeps/i386/mul_1.S: Likewise. + * sysdeps/i386/rawmemchr.S: Likewise. + * sysdeps/i386/rshift.S: Likewise. + * sysdeps/i386/stpcpy.S: Likewise. + * sysdeps/i386/stpncpy.S: Likewise. + * sysdeps/i386/strchr.S: Likewise. + * sysdeps/i386/strchrnul.S: Likewise. + * sysdeps/i386/strcspn.S: Likewise. + * sysdeps/i386/strpbrk.S: Likewise. + * sysdeps/i386/strrchr.S: Likewise. + * sysdeps/i386/strspn.S: Likewise. + * sysdeps/i386/strtok.S: Likewise. + * sysdeps/i386/sub_n.S: Likewise. + * sysdeps/i386/submul_1.S: Likewise. + * sysdeps/i386/elf/setjmp.S: Likewise. + * sysdeps/i386/i486/strcat.S: Likewise. + * sysdeps/i386/i486/strlen.S: Likewise. + * sysdeps/i386/i586/add_n.S: Likewise. + * sysdeps/i386/i586/lshift.S: Likewise. + * sysdeps/i386/i586/memcpy.S: Likewise. + * sysdeps/i386/i586/memset.S: Likewise. + * sysdeps/i386/i586/rshift.S: Likewise. + * sysdeps/i386/i586/strchr.S: Likewise. + * sysdeps/i386/i586/strcpy.S: Likewise. + * sysdeps/i386/i586/strlen.S: Likewise. + * sysdeps/i386/i586/sub_n.S: Likewise. + * sysdeps/i386/i686/add_n.S: Likewise. + * sysdeps/i386/i686/memcpy.S: Likewise. + * sysdeps/i386/i686/mempcpy.S: Likewise. + * sysdeps/i386/i686/memset.S: Likewise. + * sysdeps/i386/i686/strcmp.S: Likewise. + +2000-06-08 Ulrich Drepper + + * sysdeps/unix/sysv/linux/getdtsz.c: New file. + + * sysdeps/unix/sysv/linux/sys/param.h: Define NOFILE directly as + 256 and don't use OPEN_MAX. + + * sysdeps/unix/sysv/linux/pathconf.c: Define LINUX_LINK_MAX and + use it instead of LINK_MAX. + * sysdeps/unix/sysv/linux/fpathconf.c: Likewise. + +2000-06-08 Andreas Jaeger + + * libio/genops.c (_IO_list_lock): Only compile body if we're + thread safe. + (_IO_list_unlock): Likewise. + (_IO_list_resetlock): Likewise. + +2000-06-07 Ulrich Drepper + + * sysdeps/unix/sysv/linux/bits/local_lim.h: Undefine OPEN_MAX + unless user defined it. + + * sysdeps/unix/sysv/linux/bits/local_lim.h: Also undefine LINK_MAX + if not defined by the user. + + * libio/iofwrite_u.c (fwrite_unlocked): Remove obsolete comment. + * libio/iofwrite.c (_IO_fwrite): Likewise. + + * time/time.h: Add missing __THROW for clock_getcpuclockid + prototype. + + * elf/Makefile (distribute): Add dl-dtprocnum.h. + * include/elf.h: Include also . + * elf/dl-deps.c: Likewise. + * elf/dl-lookup.c: Likewise. + * elf/dl-runtime.c: Likewise. + * elf/dl-version.c: Likewise. + * elf/do-rel.h: Likewise. + * elf/dynamic-link.h: Likewise. + * elf/link.h: Likewise. + * elf/rtld.c: Likewise. + * sysdeps/generic/dl-dtprocnum.h: New file. + * sysdeps/ia64/dl-dtprocnum.h: New file. + * sysdeps/mips/dl-dtprocnum.h: New file. + * sysdeps/sparc/dl-dtprocnum.h: New file. + + * sysdeps/i386/dl-machine.h: Add more __builtin_expect. + + * elf/do-lookup.h: Add some __builtin_expect. + + * dlfcn/dlfcn.h: Pretty print dladdr declaraction. + + * elf/rtld.c (process_envvars): Recognize LD_DYNAMIC_WEAK. + (_dl_dynamic_weak): New variable. + * elf/dl-support.c: Likewise. + * sysdeps/generic/ldsodefs.h: Declare _dl_dynamic_weak. + * elf/do-lookup.h: If we find a weak definition treat it like a + normal symbol unless _dl_dynamic_weak is nonzero. In the latter + case treat it like before. + + * elf/dl-addr.c (_dl_addr): Fill in correct information if symbol + is in main program. + * elf/Versions [ld] (GLIBC_2.2): Export _dl_argv. + + * elf/dl-addr.c (_dl_addr): Do exact testing of address range + using l_map_start and l_map_end. + + * elf/dl-version.c: Add __builtin_expect in many places. + + * sysdeps/unix/sysv/linux/i386/dl-procinfo.h (x86_cap_flags): + Update. + +2000-06-04 Kaz Kylheku + + Lock for stdio stream list becomes global, for use in LinuxThreads. + + * libio/genops.c (_IO_iter_begin, _IO_iter_end, + _IO_iter_next, _IO_iter_file, _IO_list_lock, _IO_list_unlock, + _IO_list_resetlock): New interface for iterating global list of + streams without accessing the _IO_list_all global variable, + and for manipulating the lock which protects this list. + * libio/libioP.h: Likewise. + * libio/Version: Add entries for the new functions. + + * libio/libioP.h (_IO_ITER): New typedef, just an alias for + pointer to _IO_FILE. + +2000-06-07 Ulrich Drepper + + * locale/programs/ld-ctype.c (set_class_defaults): Several uses of + BIT() must actually be BITw(). + + * locale/programs/ld-ctype.c: Handle SP and space consistently. + + * locale/programs/charmap.c: Allow string arguments for + code_set_name and repertoiremap. + +2000-06-07 Andreas Jaeger + + * elf/Makefile: Build ldconfig only when building shared libraries. + +2000-06-07 Jakub Jelinek + + * sysdeps/alpha/fpu/bits/mathinline.h (__fdimf): Only declare if + __USE_ISOC99. + (fdimf, __fdim, fdim): Likewise. + +2000-06-07 Ulrich Drepper + + * locale/findlocale.c: Add __builtin_expect in many places. + * locale/loadlocale.c: Likewise. + +2000-06-06 Greg McGary + + * sysdeps/mips/elf/start.S: Trim redundant code. + + * sysdeps/powerpc/memset.S: Define & use symbolic register names. + Use C comments throughout. Line up operands column with tabs. + * sysdeps/powerpc/strchr.S: Likewise. + * sysdeps/powerpc/strcmp.S: Likewise. + * sysdeps/powerpc/strcpy.S: Likewise. + * sysdeps/powerpc/strlen.S: Likewise. + + * sysdeps/unix/sysv/linux/powerpc/brk.S [!PIC]: + Get low part of &__curbrk with @l. + +2000-06-06 Ulrich Drepper + + * iconvdata/utf-16.c: Add __builtin_expect in many places. + * iconvdata/unicode.c: Likewise. + * iconvdata/uhc.c: Likewise. + * iconvdata/t.61.c: Likewise. + * iconvdata/sjis.c: Likewise. + * iconvdata/johab.c: Likewise. + * iconvdata/iso_6937.c: Likewise. + * iconvdata/iso_6937-2.c: Likewise. + * iconvdata/iso8859-1.c: Likewise. + * iconvdata/iso646.c: Likewise. + * iconvdata/iso-2022-kr.c: Likewise. + * iconvdata/iso-2022-jp.c: Likewise. + * iconvdata/iso-2022-cn.c: Likewise. + * iconvdata/gbgbk.c: Likewise. + * iconvdata/gbk.c: Likewise. + * iconvdata/euc-kr.c: Likewise. + * iconvdata/euc-jp.c: Likewise. + * iconvdata/euc-cn.c: Likewise. + +2000-06-05 Ulrich Drepper + + * iconvdata/big5hkscs.c: Add __builtin_expect in many places. + * iconvdata/big5.c: Likewise. + * iconvdata/ansi_x3.110.c: Likewise. + * iconvdata/8bit-generic.c: Likewise. + * iconvdata/8bit-gap.c: Likewise. + * iconv/loop.c: Likewise. + * iconv/gconv_db.c: Likewise. + * iconv/gconv_dl.c: Likewise. + * iconv/gconv_simple.c: Likewise. + * iconv/skeleton.c: Likewise. + + * iconv/gconv.h (__GCONV_IS_LAST, __GCONV_IGNORE_ERRORS): Define. + (struct __gconv_step_data): Rename __is_last to __flags. + * iconv/gconv_close.c: Change all uses of __is_last. + * iconv/skeleton.c: Likewise. + * iconvdata/iso-2022-cn.c: Likewise. + * iconvdata/iso-2022-jp.c: Likewise. + * iconvdata/iso-2022-kr.c: Likewise. + * iconv/gconv_open.c: Likewise. Avoid unneeded initializations. + Recognize IGNORE error handling, set flag, and remove from name. + * iconv/loop.c (ignore_errors_p): Define. + Add flags parameter to both functions. + * iconv/skeleton.c: Pass flags to all conversion functions. + * iconv/gconv_simple.c: Add flags parameter to all functions. + Don't return error for invald error if ignore flag is set. + (ucs4_internal_loop_single): Add missing pointer increment. + (internal_ucs4le_loop_single): Likewise. + * iconv/iconv_prog.c: Implement handling of -c parameter. + * iconvdata/8bit-gap.c: Don't return error for invald error if + ignore flag is set. + * iconvdata/8bit-generic.c: Likewise. + * iconvdata/ansi_x3.110.c: Likewise. + * iconvdata/big5.c: Likewise. + * iconvdata/big5hkscs.c: Likewise. + * iconvdata/euc-cn.c: Likewise. + * iconvdata/euc-jp.c: Likewise. + * iconvdata/euc-kr.c: Likewise. + * iconvdata/gbgbk.c: Likewise. + * iconvdata/gbk.c: Likewise. + * iconvdata/iso-2022-cn.c: Likewise. + * iconvdata/iso-2022-jp.c: Likewise. + * iconvdata/iso-2022-kr.c: Likewise. + * iconvdata/iso646.c: Likewise. + * iconvdata/iso8859-1.c: Likewise. + * iconvdata/iso_6937-2.c: Likewise. + * iconvdata/iso_6937.c: Likewise. + * iconvdata/johab.c: Likewise. + * iconvdata/sjis.c: Likewise. + * iconvdata/t.61.c: Likewise. + * iconvdata/uhc.c: Likewise. + * iconvdata/unicode.c: Likewise. + * iconvdata/utf-16.c: Likewise. + * libio/fileops.c: Likewise. + * libio/iofwide.c: Likewise. + * wcsmbs/btowc.c: Likewise. + * wcsmbs/mbrtowc.c: Likewise. + * wcsmbs/mbsnrtowcs.c: Likewise. + * wcsmbs/mbsrtowcs.c: Likewise. + * wcsmbs/wcrtomb.c: Likewise. + * wcsmbs/wcsnrtombs.c: Likewise. + * wcsmbs/wcsrtombs.c: Likewise. + * wcsmbs/wctob.c: Likewise. + + * iconvdata/ksc5601.h (ksc5601_to_ucs4): Undo *s change in all cases of + an error. + +2000-06-04 Ulrich Drepper + + * iconv/gconv_dl.c (do_release_shlib): Don't reset reference + counter for the object we are releasing, just decrement it. + Patch by Akira Higuchi . + +2000-06-04 Jakub Jelinek + + * sysdeps/i386/fpu/bits/mathinline.h: Only inline sinh, cosh and tanh + if -ffast-math. + +2000-06-04 Ulrich Drepper + + * iconvdata/big5hkscs.c: New file. + Modified from big5.c by Roger So . + + * iconvdata/gconv-modules: Add entry for new module. + * iconvdata/Makefile (modules): Add BIG5HKSCS. + (distribute): Add big5hkscs.c. + +2000-06-01 Jakub Jelinek + + * libc/sysdeps/alpha/fpu/bits/mathinline.h: Add __THROW to all + inlines to match prototypes in mathcalls.h. + * libc/sysdeps/i386/fpu/bits/mathinline.h: Likewise. + * libc/sysdeps/m68k/fpu/bits/mathinline.h: Likewise. + * libc/sysdeps/powerpc/fpu/bits/mathinline.h: Likewise. + * libc/sysdeps/sparc/fpu/bits/mathinline.h: Likewise. + +2000-06-03 Ulrich Drepper + + * elf/elf.h (SHT_SUNW_move): Define. + + * elf/elf.h: Add more Solaris compatiblity definitions. + +2000-06-03 Andreas Jaeger + + * sysdeps/powerpc/dl-start.S: Close open comment. + +2000-06-03 Jakub Jelinek + + * inet/Versions: Fix typo in rresvport_af export. + +2000-06-02 Ulrich Drepper + + * math/tgmath.h: Pretty print. + +2000-06-02 Andreas Jaeger + + * sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Fix typo. + Reported by Maciej W. Rozycki . + +2000-06-02 Ulrich Drepper + + * elf/rtld.c (process_envvars): Test for = after variable name. + +2000-06-01 Ulrich Drepper + + * sysdeps/generic/initfini.c (_init): One less relocation. Don't + have extra call to __gmon_start__, use the pointer we already have. + + * elf/elf.h (ELF64_R_INFO): Cast sym value to Elf64_Xword before + shifting. + + * sysdeps/i386/elf/setjmp.S: Work around change is recent + binutils. gas now emits a jump through the PLT instead of a + relative jump if the jump target is an exported symbol. + +2000-05-31 Ulrich Drepper + + * sysdeps/unix/sysv/linux/powerpc/aix/aix-termios.h: Define AIX_CBAUD. + +2000-05-31 Andreas Jaeger + + * sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Use array for + gregset_t. + + * sysdeps/unix/sysv/linux/mips/Versions: Export _flush_cache. + Patches by Maciej W. Rozycki . + + * sysdeps/unix/sysv/linux/mips/ftruncate64.c: Fix prototype of + syscall. + * sysdeps/unix/sysv/linux/mips/truncate64.c: Likewise. + +2000-05-30 Ulrich Drepper + + * sysdeps/unix/sysv/linux/alpha/oldglob.c (__old_glob): Loose __P. + + * locale/Versions [libc] (GLIBC_2.2): Add localeconv. + * locale/localeconv.c: Make function versioned (with same definition). + + * elf/Makefile (modules-names): Strip before using it. + +2000-05-30 Andreas Jaeger + + * sysdeps/unix/sysv/linux/mips/truncate64.c: New file. + * sysdeps/unix/sysv/linux/mips/ftruncate64.c: New file. + * sysdeps/unix/sysv/linux/mips/pread64.c: Readded file. + * sysdeps/unix/sysv/linux/mips/pwrite64.c: Readded file. + * sysdeps/unix/sysv/linux/mips/pread.c: Readded file. + * sysdeps/unix/sysv/linux/mips/pwrite.c: Readded file. + +2000-05-29 Ulrich Drepper + + * Makefile: Add GNU make magic. + + * inet/Makefile (CFLAGS-rcmd.c, CFLAGS-rexec.c, CFLAGS-ruserpass.c): + Removed. + * inet/rcmd.c: Remove __P. Remove unused variables. + (iruserfopen): Make first parameter const. + (ruserok_sa): Return result of ruserok2_sa. + (__checkhost_sa): Correctly iterate through results of getaddrinfo. + * inet/rexec.c: Remove unused variables. Other small cleanups. + * inet/ruserpass.c: Remove __P. Remove unused variables. + (ruserpass): Check results of memory allocation. + * include/netdb.h: Add prototype for ruserpass. + +2000-05-29 Andreas Jaeger + + * elf/readlib.c (interpreters): Use LD_SO since this is supported + for all platforms. + +2000-05-29 Jakub Jelinek + + * inet/rcmd.c (rresvport_af): Use correct port number. + +2000-05-26 Andreas Schwab + + * Makeconfig ($(common-objpfx)soversions.mk): Prepend `$lib=' to + entries in all-sonames. + ($(common-objpfx)gnu/lib-names.h): Use it for the CPP symbol, + preserving the old name if different for compatibility. + +2000-05-29 Ulrich Drepper + + * posix/Makefile (tests): Add tst-spawn. + (tst-spawn-ARGS): New variable. + * posix/tst-spawn.c: New file. + + * posix/spawn_faction_addclose.c: Correctly account for new entry. + * posix/spawn_faction_adddup2.c: Likewise. + * posix/spawn_faction_addopen.c: Likewise. + * posix/spawni.c: Correctly test for success of dup2 calls. + + * posix/tst-preadwrite.c: Check success of malloc call. + +2000-05-28 Ulrich Drepper + + * posix/Makefile (tests): Add tst-exec. + (tst-exec-ARGS): New variable. + * posix/tst-exec.c: New file. + + * sysdeps/arm/atomicity.h (compare_and_swap): Return result. + +2000-05-04 Andreas Jaeger + + * string/string.h: Remove __strdup prototype, it's not needed in + this file anymore. + +2000-05-28 Ulrich Drepper + + * posix/Makefile (tests): Add tst-fork. + * posix/tst-fork.c: New file. + + * resolv/inet_pton.c: Loose __P. + +2000-05-21 Jakub Jelinek + + * libio/libioP.h (_IO_CHECK_WIDE): Define. + * libio/iosetbuffer.c (_IO_setbuffer): Use it. + * libio/iosetvbuf.c (_IO_setvbuf): Likewise. + * libio/fileops.c (_IO_new_file_fopen): Return NULL if + _IO_CHECK_WIDE fails. + +2000-05-28 Ulrich Drepper + + * po/da.po: New file. + + * manual/arith.texi (Rounding Functions): Fix documentation of trunc. + Patch by Steven G. Johnson . + + * manual/charset.texi (Extended Char Intro): Fix typo (and -> as). + (Other iconv Implementations): Fix typo. + Patch by Martin Pool . + +2000-05-27 Andreas Jaeger + + * sysdeps/unix/sysv/linux/i386/pread.c: Removed, we can use the + normal version now. + * sysdeps/unix/sysv/linux/i386/pwrite.c: Likewise. + * sysdeps/unix/sysv/linux/i386/pwrite64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pread.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pwrite.c: Likewise. + * sysdeps/unix/sysv/linux/arm/pread.c: Likewise. + * sysdeps/unix/sysv/linux/arm/pwrite.c: Likewise. + + * sysdeps/unix/sysv/linux/pread.c (__libc_pread): Check + endianness to decide how to pass arguments. + * sysdeps/unix/sysv/linux/pwrite.c (__libc_pwrite): Likewise. + + * elf/vismain.c: Use test-skeleton interface. + (TEST_FUNCTION): New macro. + (do_test): Renamed from main. + +2000-05-27 Ulrich Drepper + + * sysdeps/posix/getaddrinfo.c (gaih_inet): If req->ai_family == + AF_UNSPEC don't allow the IPv6 lookup to return mapped IPv4 addresses. + + * nss/nss_files/files-hosts.c (LINE_PARSER): Simplify. Correct + handling of AI_V4MAPPED flag. + + * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyname2_r): If lookup + of IPv6 address failed and RES_USE_INET6 bit in _res.options is set, + perform lookup for T_A type and tell getanswer_r to convert the + result with new argument. + (_nss_dns_gethostbyaddr_r): Pass zero as new argument to getanswer_r. + Don't convert addresses from IPv4 to IPv6 here. + (getanswer_r): Take new parameter indicating if mapping from IPv4 to + IPv6 is wanted. Allow qtype and type from reply to disagree if + IPv4 mapping has to be done. Perform mappings if required by the + caller and not if RES_USE_INET6 bit in _res.options is set. + Add several __builtin_expect. + +2000-05-26 Ulrich Drepper + + * catgets/open_catalog.c (__open_catalog): Add a few __builtin_expect. + + * elf/dl-load.c (_dl_map_object): Don't ignore RPATHs if loader == + NULL. + + * posix/tst-preadwrite.c: Allow parallel execution of + tst-preadwrite and tst-preadwrite64. + + * posix/Makefile (tests): Add tst-truncate and tst-truncate64. + * posix/tst-truncate.c: New file. + * posix/tst-truncate64.c: New file. + + * sysdeps/unix/sysv/linux/pread64.c: The little/big endian code + was switched. + + * posix/Makefile (tests): Add tst-preadwrite64. + * posix/tst-preadwrite.c: Alloc file being used also for testing + pread64 and pwrite64. + * posix/tst-preadwrite64.c: New file. + +2000-05-26 Andreas Jaeger + + * sysdeps/unix/sysv/linux/ftruncate64.c (ftruncate64): Make order + of arguments dependend on endianness. + * sysdeps/unix/sysv/linux/truncate64.c: Likewise. + + * sysdeps/unix/sysv/linux/i386/pread64.c: Removed, we can use the + normal version now. + * sysdeps/unix/sysv/linux/arm/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/arm/pwrite64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise. + + * sysdeps/unix/sysv/linux/pwrite64.c (__libc_pwrite64): Check + endianness to check how to pass argument. + * sysdeps/unix/sysv/linux/pread64.c (__libc_pread64): Likewise. + + * elf/ldconfig.h: Update parameter list for process_elf_file. + + * sysdeps/unix/sysv/linux/sparc/readelflib.c (process_elf_file): + Add parameter file_length and pass it ot process_elf*file. + + * sysdeps/generic/readelflib.c (check_ptr): New. + (process_elf_file): Use check_ptr to check all accesses to the + mmapped file. Add parameter file_length. + + * elf/readlib.c (known_libs): Use to specify + library names. + + * sunrpc/xdr_intXX_t.c (xdr_uint8_t): Fix conversion. + Closes PR libc/1573, reported by Bradley White + . + +2000-05-25 Ulrich Drepper + + * sysdeps/i386/fpu/bits/mathinline.h: Define expm1 inline only if + __FAST_MATH__ is defined. + +2000-05-22 Andreas Jaeger + + * math/Makefile: Add -D__FAST_MATH__ to CFLAGS-test-ifloat.c, + CFLAGS-test-idouble.c, CFLAGS-test-ildoubl.c. + + * manual/math.texi (FP Function Optimizations): Document gcc + -ffast-math behaviour with mathinlines. + + * sysdeps/i386/fpu/bits/mathinline.h: Only use save inline + functions unless -ffast-math is given to gcc. + +2000-05-23 Jakub Jelinek + + * sysdeps/i386/fpu/bits/mathinline.h (__sincos, __sincosf, + __sincosl): Guard with __USE_GNU. + +2000-05-24 Ulrich Drepper + + * csu/Makefile (routines): Add check_fds. + * elf/rtld.c (dl_main): Call __libc_check_standard_fds for SUID + binaries. Add various __builtin_expect. + * sysdeps/generic/libc-start.c: Move check_fds and helper functions... + * sysdeps/generic/check_fds.c: ...here. New file. + + * malloc/malloc.c (ptmalloc_init): Only enable debugging for SUID + binaries if file /etc/suid-debug is available. + + * locale/programs/ld-collate.c (struct element_t): Add mbseqorder + and wcseqorder members. + (struct locale_collate_t): Likewise. + (collate_finish): Assign collation sequence value to each character. + Create tables for output. + (collate_output): Write out tables with collation sequence information. + * locale/C-collate.c: Provide C locale data for collation sequence + table. + * locale/langinfo.h: Add _NL_COLLATE_COLLSEQMB and + _NL_COLLATE_COLLSEQWC. + * locale/categories.def: Add entries for _NL_COLLATE_COLLSEQMB and + _NL_COLLATE_COLLSEQWC. + * posix/fnmatch.c: Define SUFFIX and WIDE_CHAR_VERSION before + include fnmatch_loop.c. + * posix/fnmatch_loop.c: Don't use strcoll while determining whether + character is matched by range expression. Use collation sequence + table. Outside glibc fall back on simple character value comparison. + +2000-05-24 Andreas Jaeger + + * sysdeps/mips/elf/start.S (ENTRY_POINT): Align stack for double + words. + + * intl/Makefile: Run gettext-test only if msgfmt is available. + + * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_LDT_WORKS): + Define it for newer kernels. + +2000-05-23 Ulrich Drepper + + * elf/dl-sym.c: Minor cleanups. + + * configure.in: Add test for .protected. + * config.make.in: Add have-protected variable. + * elf/Makefile (tests): Add $(tests-vis-$(have-protected)). + (tests-vis-yes): Add vismain. + (modules-names): Add $(modules-vis-$(have-protected)). + (modules-vis-yes): Add vismod1, vismod2, and vismod3. + Add rules to generate and run vismain. + * elf/vismain.c: New file. + * elf/vismod1.c: New file. + * elf/vismod2.c: New file. + * elf/vismod3.c: New file. + +2000-05-23 Andreas Jaeger + + * stdio-common/tfformat.c (sprint_doubles): Add testcase for %a. + + * manual/search.texi (Array Sort Function): Document that qsort is + not necessarily in-place. + + * sunrpc/rpc_main.c (parseargs): Don't accept -M and -N. + Closes PR libc/1731. + + * csu/munch-tmpl.c (__libc_init): Remove K&R support. + * dirent/scandir64.c: Likewise. + * pwd/getpw.c: Likewise. + * stdlib/bsearch.c (bsearch): Likewise. + * stdlib/tst-strtoll.c: Likewise. + * localedata/collate-test.c: Likewise. + * localedata/xfrm-test.c: Likewise. + * posix/bsd-getpgrp.c: Likewise. + * sysdeps/alpha/fpu/bits/fenv.h: Likewise. + * sysdeps/generic/bits/siginfo.h: Likewise. + * sysdeps/generic/bits/sockaddr.h: Likewise. + * sysdeps/generic/sys/swap.h: Likewise. + * sysdeps/generic/sys/sysinfo.h: Likewise. + * sysdeps/generic/vfork.c: Likewise. + * sysdeps/m68k/fpu/switch/68881-sw.h: Likewise. + * sysdeps/mach/hurd/fdopen.c: Likewise. + * sysdeps/unix/sysv/linux/alpha/sys/acct.h: Likewise. + * sysdeps/unix/sysv/linux/poll.c: Likewise. + * sysdeps/unix/sysv/linux/readv.c: Likewise. + * sysdeps/unix/sysv/linux/writev.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setgroups.c: Likewise. + * sysdeps/unix/sysv/linux/powerpc/bits/ipc.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/sigaction.h: Likewise. + + * misc/tst-dirname.c: Remove K&R support, use ANSI C prototypes. + * shadow/lckpwdf.c: Likewise. + * stdlib/tst-strtol.c: Likewise. + * sysdeps/generic/tcsetattr.c: Likewise. + * sysdeps/unix/sysv/linux/ttyname.c: Likewise. + * sysdeps/unix/sysv/linux/ttyname_r.c: Likewise. + +2000-05-22 Jakub Jelinek + + * elf/dl-load.c (_dl_init_paths): If env_path_list has 0 elements, + free it and set to (void *) -1. + +2000-05-22 Jakub Jelinek + + * stdio-common/vfscanf.c (__vfscanf): Remove bogus check if '-' is + not the second character in the range. + * stdio-common/tstscanf.c (main): Add testcase for the above. + Reported by jik@kamens.brookline.ma.us. + +2000-05-21 H.J. Lu + + * elf/do-lookup.h (do_lookup_versioned): Replace reloc_type parameter + with noexec and noplt parameter. + (do_lookup): Likewise. + + * elf/dl-lookup.c (_dl_lookup_symbol): Change for new parameters of + do_lookup. Support STV_PROTECTED. + (_dl_lookup_symbol_skip): Likewise. + (_dl_lookup_versioned_symbol): Likewise. + (_dl_lookup_versioned_symbol_skip): Likewise. + + * elf/dl-reloc.c (RESOLVE): Check STB_LOCAL instead of ST_VISIBILITY. + + * elf/dl-runtime.c (profile_fixup): Fix a typo in comment. + +2000-05-21 Jakub Jelinek + + * sysdeps/arm/bits/huge_val.h: Prereq gcc 2.96+, not 2.95. + * sysdeps/i386/bits/huge_val.h: Likewise. + * sysdeps/ieee754/bits/huge_val.h: Likewise. + * sysdeps/m68k/bits/huge_val.h: Likewise. + * sysdeps/sparc/sparc32/bits/huge_val.h: Likewise. + * sysdeps/sparc/sparc64/bits/huge_val.h: Likewise. + +2000-05-22 Andreas Jaeger + + * iconv/tst-iconv1.c (main): Remove const from inbuf to follow + change in iconv.h. + +2000-05-19 Andreas Jaeger + + * sysdeps/unix/sysv/linux/i386/i686/sysdep.h + (SYSCALL_ERROR_HANDLER): Remove unneeded syscall_error which + breaks compilation without linuxthreads. + +2000-05-21 Ulrich Drepper + + * sysdeps/ia64/memccpy.S: New file. + * sysdeps/ia64/memchr.S: New file. + * sysdeps/ia64/memcmp.S: New file. + * sysdeps/ia64/memcpy.S: New file. + * sysdeps/ia64/memmove.S: New file. + * sysdeps/ia64/memset.S: New file. + * sysdeps/ia64/strcat.S: New file. + * sysdeps/ia64/strchr.S: New file. + * sysdeps/ia64/strcmp.S: New file. + * sysdeps/ia64/strcpy.S: New file. + * sysdeps/ia64/strlen.S: New file. + * sysdeps/ia64/strncmp.S: New file. + * sysdeps/ia64/strncpy.S: New file. + * sysdeps/ia64/softpipe.h: New file. + Patches by Dan Pop . + + * manual/memory.texi: Document memory handling functions (mlock, + munlock, mlockall, munlockall, brk, and sbrk) + * manual/time.texi: Document timespec and friends. + * manual/conf.texi: Fix references. + * manual/ctype.texi: Likewise. + * manual/errno.texi: Likewise. + * manual/intro.texi: Likewise. + * manual/locale.texi: Likewise. + * manual/sysinfo.texi: Likewise. + Patches by Bryan Henderson . + +2000-05-09 Jes Sorensen + + * sysdeps/ia64/dl-machine.h: Move DL_SYMBOL_ADDRESS definition to... + * sysdeps/ia64/dl-lookupcfg.h: ...here. + +2000-05-21 Jakub Jelinek + + * sysdeps/unix/sysv/linux/scsi/sg.h (sg_io_hdr_t): Remove duplicate + dxfer_direction. + +2000-05-21 Ulrich Drepper + + * locale/locale.h (struct lconv): Add new elements from ISO C99. + * locale/localeconv.c: Initialize new elements from ISO C99. + * locale/langinfo.h: Remove _NL_MONETARY prefix from descriptors for + new standard elements. + * locale/categories.def: Adjust accordingly. + + * iconv/iconv.h (iconv): Remove const from inbuf parameter. + * iconv/iconv.c: Likewise. + * conform/data/iconv.h-data: Likewise. + * iconv/iconv_prog.c (process_block): Remove const from second + parameter. + (main): Remove const from addr definition. + * manual/charset.texi (Generic Conversion Interface): Remove from + inbuf parameter of iconv. + + * intl/dcigettext.c: Fix typo in comment. + +2000-05-20 2000 H.J. Lu + + * resolv/res_libc.c (_res): Initialize _sock to -1. + +2000-05-18 Jakub Jelinek + + * libio/iofopncook.c (_IO_fopencookie): Renamed from fopencookie. + (fopencookie@@GLIBC_2.2): New. + (_IO_old_cookie_seek, _IO_old_fopencookie, _IO_old_cookie_jumps): New. + (fopencookie@GLIBC_2.0): New. + * libio/Versions: Add fopencookie to GLIBC_2.2. + +2000-05-18 Andreas Jaeger + + * sunrpc/rpc_main.c (parseargs): Don't accept -M and -N. + Closes PR libc/1731. + + * manual/arith.texi (Parsing of Integers): Fix typo. + Closes PR libc/1744, reported by blp@gnu.org. + +2000-05-17 Jakub Jelinek + + * sysdeps/arm/bits/huge_val.h (HUGE_VAL, HUGE_VALF): Add + __extension__ to hexadecimal floating constant notation. + * sysdeps/i386/bits/huge_val.h (HUGE_VAL, HUGE_VALF, HUGE_VALL): + Likewise. + * sysdeps/ieee754/bits/huge_val.h (HUGE_VAL, HUGE_VALF): Likewise. + * sysdeps/m68k/bits/huge_val.h (HUGE_VAL, HUGE_VALF, HUGE_VALL): + Likewise. + * sysdeps/sparc/sparc64/bits/huge_val.h (HUGE_VAL, HUGE_VALF, + HUGE_VALL): Likewise. + * sysdeps/sparc/sparc32/bits/huge_val.h (HUGE_VAL, HUGE_VALF, + HUGE_VALL): Likewise. + (HUGE_VALL): Set to HUGE_VAL on sparc32. + +2000-05-17 Andreas Jaeger + + * string/envz.h: Add pure attributes if possible. + + * string/argz.h: argz_count is a pure function. + + * string/strings.h: Add pure and const attributes if possible. + + * sysdeps/generic/memmem.c (memmem): Check arguments to avoid + possibly searching through the whole memory. + Closes PR libc/1730, reported by Greg Hudson . + +2000-05-17 Jakub Jelinek + + * sysdeps/generic/dl-cache.h (_DL_CACHE_DEFAULT_ID): Only define if + not yet defined. + (_dl_cache_check_flags): Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/dl-cache.h: include_next + dl-cache.h. + +2000-05-17 Andreas Jaeger + + * manual/creature.texi (Feature Test Macros): Remove paragraph + since the description is wrong. + Closes PR libc/1691, reported by Geoff Clare . + + * scripts/config.sub: New version. + * scripts/config.guess: Likewise. + * manual/texinfo.tex: Likewise. + + * time/test_time.args: Removed. + * time/Makefile (test_time-ARGS): Added contents here instead. + + * posix/tstgetopt.args: Removed. + * posix/Makefile (tstgetopt-ARGS): Added contents here instead. + + * Rules: Allow arguments for test files to be specified in + Makefile with testname-ARGS; remove rules with .args in it. + + * dirent/Makefile (opendir-tst1-ARGS): Use this for opendir-tst1, + remove old bogus rule for opendir-tst1.args. + + * stdlib/test-canon.c: Rewrite to use test-skeleton.c. + + * stdlib/Makefile (test-canon-ARGS): New, supply argument to chdir + into objdir. This allows a readonly sourcetree. + Reported by lrgallardo@yahoo.com, closes PR libc/1421. + +2000-05-16 Andreas Jaeger , + David Huggins-Daines + + * sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Set + cache_data in case of only new cache format correctly. + + * sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Align struct + cache_file_new. + + * sysdeps/generic/dl-cache.h (ALIGN_CACHE): New macro to align + struct cache_file_new. + + * elf/cache.c (save_cache): Fix str_offset if only new cache is + present. + + * elf/cache.c (save_cache): Align struct new_file_cache. + (print_cache): Likewise. + +2000-05-13 Jakub Jelinek + + * elf/soinit.c (__libc_global_ctors): Move + __pthread_initialize_minimal call out of HAVE_DWARF2_* defines. + * resolv/resolv.h (__res_state): Added __attribute__((const)). + (_res): If __RES_PTHREAD_INTERNAL is defined, declare it as + variable, don't define it to __res_state call. + +2000-05-13 Andreas Jaeger + + * sysdeps/unix/sysv/linux/bits/socket.h (PF_PPPOX): New, from + Linux 2.3.99pre7. + (AF_PPPOX): Likewise. + * sysdeps/unix/sysv/linux/mips/bits/socket.h (PF_PPPOX): Likewise. + (AF_PPPOX): Likewise. + +2000-05-12 Andreas Jaeger + + * inet/netinet/in.h (IN6_ARE_ADDR_EQUAL): Correct indices. + Reported by tmoestl@gmx.net, closes PR libc/1732. + +2000-05-11 Jan Hubicka + + * misc/sys/cdefs.h: Add support for pure attribute. + + * include/string.h: Add __attribute_pure__ to various functions. + * string/string.h: Likewise. + +2000-05-10 Jakub Jelinek + + * elf/dl-reloc.c (_dl_reloc_bad_type): Sync messages with plt + argument. + * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela): Handle + R_SPARC_UA64. + * sysdeps/unix/sysv/linux/sparc/sparc64/time.c: New file. + +2000-05-10 Jakub Jelinek + + * elf/dl-reloc.c (_dl_reloc_bad_type): Write type into the message + at proper place. Compute the high nibble correctly. + +2000-05-09 Jakub Jelinek + + * elf/ldconfig.c: Include elf.h. + + * elf/dl-sym.c (_dl_sym): Test ref not result for non-zero. + (_dl_vsym): Likewise. + Reported by Owen Taylor . + + * elf/dl-deps.c (_dl_map_object_deps): Zero terminate L->l_initfini + always. + +2000-05-08 Andreas Jaeger + + * include/libintl.h: Add prototype for __bind_textdomain_codeset. + + * intl/bindtextdom.c (set_binding_values): Add prototype. + +2000-05-08 Jakub Jelinek + + * sysdeps/alpha/dl-machine.h (elf_machine_rela): Fix arguments in + call to elf_machine_fixup_plt. + * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela): Likewise. + * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela): Likewise. + +2000-05-08 Jakub Jelinek + + * elf/dl-fini.c (_dl_fini): Bump l_opencount of all objects so that + they are not dlclose'd from underneath us. + +2000-05-08 Andreas Schwab + + * posix/execle.c: Fix size parameter of memcpy. + +2000-05-08 Andreas Schwab + + * sysdeps/unix/sysv/linux/m68k/getpagesize.c: New file. Use + getpagesize syscall if available. + +2000-05-08 Andreas Jaeger + + * sysdeps/generic/lockf64.c (lockf64): Return -1 for overflow and + set errno. + +2000-05-08 Jakub Jelinek + + * elf/dl-lookup.c (add_dependency): Reallocate l_reldeps in + sizeof(struct link_map *) chunks, not in bytes. + +2000-05-07 Ulrich Drepper + + * locale/Makefile (locale-CPPFLAGS): Renamed from CPPFLAGS. It's + only needed for locale. + * catgets/Makefile (catgets-CPPFLAGS): Renamed from CPPFLAGS. + It's only needed for catgets. + Patches by Greg McGary . + +2000-05-07 Mark Kettenis + + * nss/nss_db/db-open.c: Cleanup and add comments. Pretty print. + Remove duplicate include. Remove inclusion of + and "nsswitch.h". + (set_cloexec_flag): New function, broken out of dbopen. + (dbopen): Changed return type to `enum + nss_status'. Mostly rewritten to make sure that we do not report + NSS_STATUS_SUCCESS if something went wrong. Remove unnecessary casts. + (internal_setent): Change return type to nss_status. + Document, and make sure that the function + behaves accordingly. Make dynamically loading the database + library really thread-safe and return NSS_STATUS_UNAVAIL if it + failed. + (db_cursor): Return ENOMEM is memory allocation failed. Remove + unecessary casts. + * nss/nss_db/dummy-db.h: Add copyright notice. Improve + documentation. + (struct dbc24, struct dbc27): Use DBT type in parameter lists for + c_get function member. + * nss/nss_db/nss_db.h: Add and tweak some comments. + (DBT): Move typedef before NSS_DBC typedef. + (NSS_DBC, NSS_DB): Use DBT in function member parameter lists. + +2000-05-07 H.J. Lu + + * csu/initfini.c: Moved to .... + * sysdeps/generic/initfini.c: ...here. + + * csu/Makefile (initfini.c): Set vpath to $(full_config_sysdirs). + +2000-05-07 Ulrich Drepper + + * manual/resource.texi: Document POSIX scheduling functions. + Patch by Bryan Henderson . + + * inet/rcmd.c (rcmd_af): errno is not set if read returns without + reading anything. Reported by Andries.Brouwer@cwi.nl. + + * sysdeps/generic/memccpy.c (__memccpy): Don't use reg_char type + for x since promotion in comparison might leads to unexpected + results. Reported by Dan Pop . + + * iconv/Makefile (tests): Add tst-iconv1. + * iconv/tst-iconv1.c: New file. + * iconv/gconv_simple.c (internal_ucs4_loop): Prefer reporting + empty input buffer over full output buffer. + (ucs4_internal_loop): Likewise. + (ucs4_internal_loop_unaligned): Likewise. + (internal_ucs4le_loop): Likewise. + (internal_ucs4le_loop_unaligned): Likewise. + (ucs4le_internal_loop): Likewise. + (ucs4le_internal_loop_unaligned): Likewise. + Reported by yaoz@nih.gov. + +2000-05-06 Bruno Haible + + * iconv/gconv_open.c (__gconv_open): If __gconv_find_transform + returned != __GCONV_OK, there is nothing to clean up. + +2000-05-06 Bruno Haible + + * intl/tst-gettext.c (main): Disable possibly existing LC_CTYPE and + OUTPUT_CHARSET environment variables. + +2000-05-06 Andreas Jaeger + + * sysdeps/generic/dl-cache.h (struct file_entry_new): New. + (struct cache_file_new): New. + (struct file_entry): New (moved from cache.c). + (struct cache_file): New (moved from cache.c). + + * sysdeps/generic/dl-cache.c (SEARCH_CACHE): New macro, broken out + from _dl_load_cache_lookup. + (_dl_load_cache_lookup): Move search to SEARCH_CACHE macro, handle + the different cache formats. + New variable cache_new for new format. + + * elf/ldconfig.h: Change according to changes in cache.c and + ldconfig.c; remove cache_libcmp; add opt_format. + + * elf/ldconfig.c: Include "dl-cache.h" and "dl-procinfo.h"; remove + stuff that's defined in those headers. + Add hwcap to struct lib_entry. + (opt_format): New variable to select cache format. + (options): Add format parameter. + (is_hwcap): New function. + (path_hwcap): New function. + (parse_opt): Handle new format parameter. + (search_dir): Handle hwcap, search also subdirectories with hwcap. + + * elf/cache.c (_GNU_SOURCE): Removed. Not needed anymore since + ldconfig is part of glibc. + Include dl-cache.h and remove stuff that's defined there. + (struct cache_entry): Add new member hwcap. + (print_entry): Print hwcap, cleanup a bit. + (print_cache): Print new and old formats. + (compare): Use _dl_cache_libcmp from dl-cache.h; handle hwcap. + (save_cache): Save new and old formats. + (add_to_cache): Handle hwcap. + + * sysdeps/generic/dl-cache.c (_dl_cache_libcmp): Moved from here... + * sysdeps/generic/dl-cache.h (_dl_cache_libcmp): ...to here. + * sysdeps/generic/dl-cache.c (LD_SO_CACHE): Moved from here... + * sysdeps/generic/dl-cache.h (LD_SO_CACHE): ...to here. + * sysdeps/generic/dl-cache.c (CACHEMAGIC): Moved from here... + * sysdeps/generic/dl-cache.h (CACHEMAGIC): ...to here. + +2000-05-05 Bruno Haible + + * intl/dcigettext.c (alignof): New macro. + (_nl_find_msg): Use it instead of __alignof__. Pass correct output + buffer length to __gconv/iconv. If malloc (freemem_size) fails, set + freemem_size to 0. + +2000-05-05 Bruno Haible + + * intl/dcigettext.c (dcigettext): Fix interpretation of tsearch + return value. + +2000-05-06 Ulrich Drepper + + * intl/dcigettext.c (DCIGETTEXT): Always define local variable `index'. + (mempcpy): Correct typo is parameter list. + +2000-05-06 Andreas Jaeger + + * sysdeps/i386/fpu/bits/mathinline.h: Disable some inline + functions unless -ffast-math is given to gcc. + +2000-05-06 Ulrich Drepper + + * po/ko.po: Update from translation team. + +2000-05-05 Ulrich Drepper + + * sysdeps/unix/sysv/aix/linux/errnoconv.c: Moved to... + * sysdeps/unix/sysv/linux/powerpc/aix/errnoconv.c: ...here. + * sysdeps/unix/sysv/aix/linux/statconv.c: Moved to... + * sysdeps/unix/sysv/linux/powerpc/aix/statconv.c: ...here. + * sysdeps/unix/sysv/aix/linux/direntconv.c: Moved to... + * sysdeps/unix/sysv/linux/powerpc/aix/direntconv.c: ...here. + + * sysdeps/unix/sysv/aix/linux/linux-errno.h: Removed. + * sysdeps/unix/sysv/aix/linux/linux-stat.h: Removed + * sysdeps/unix/sysv/aix/linux/linux-dirent.h: Removed. + + * sysdeps/unix/sysv/linux/powerpc/aix/aix-dirent.h: New file. + * sysdeps/unix/sysv/linux/powerpc/aix/aix-errno.h: New file. + * sysdeps/unix/sysv/linux/powerpc/aix/aix-stat.h: New file. + * sysdeps/unix/sysv/linux/powerpc/aix/aix-termios.h: New file. + + * sysdeps/unix/sysv/linux/powerpc/aix/tcgetattr.c: New file. + * sysdeps/unix/sysv/linux/powerpc/aix/tcsetattr.c: New file. + +2000-05-05 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/sysdep.h: New file. + * sysdeps/unix/sysv/linux/ia64/syscall.S: New file. + + * sysdeps/unix/sysv/linux/ia64/bits/types.h: New file. + * sysdeps/unix/sysv/linux/ia64/bits/endian.h: New file. + + * sysdeps/ia64/Implies: New file. + * sysdeps/ia64/Versions: New file. Declare _dl_symbol_address. + * sysdeps/ia64/Makefile: New file. + * sysdeps/ia64/gmp-mparam.h: New file, + + * sysdeps/ia64/elf/start.S: New file. + + * sysdeps/ia64/bits/fenv.h: New file. + +2000-05-05 David Mosberger-Tang + + * sysdeps/unix/sysv/linux/ia64/sysdep.S: New file. + +2000-04-26 Jes Sorensen + + * sysdeps/unix/sysv/linux/ia64/bits/elfclass.h: New file. The + ia64 has 64 bit .hash entries just as the Alpha. + +2000-04-25 Jes Sorensen + + * sysdeps/ia64/memprof.h: New file. Provide GETSP() macro. + +2000-04-17 Jes Sorensen + + * sysdeps/ia64/fpu/fclrexcpt.c: New file. + * sysdeps/ia64/fpu/fedisblxcpt.c: New file. + * sysdeps/ia64/fpu/feenablxcpt.c: New file. + * sysdeps/ia64/fpu/fegetenv.c: New file. + * sysdeps/ia64/fpu/fegetexcept.c: New file. + * sysdeps/ia64/fpu/fegetround.c: New file. + * sysdeps/ia64/fpu/feholdexcpt.c: New file. + * sysdeps/ia64/fpu/fesetenv.c: New file. + * sysdeps/ia64/fpu/fesetround.c: New file. + * sysdeps/ia64/fpu/feupdateenv.c: New file. + * sysdeps/ia64/fpu/fgetexcptflg.c: New file. + * sysdeps/ia64/fpu/fraiseexcpt.c: New file. + * sysdeps/ia64/fpu/fsetexcptflg.c: New file. + * sysdeps/ia64/fpu/ftestexcept.c: New file. + +2000-05-05 Andreas Jaeger + + * misc/tst-tsearch.c (main): Correct type for initstate argument. + + * sysdeps/generic/dl-procinfo.h (_DL_HWCAP_COUNT): New. + (_dl_string_hwcap): New, does nothing. + + * sysdeps/unix/sysv/linux/i386/dl-procinfo.h (_DL_HWCAP_COUNT): New. + (_dl_procinfo): Use _DL_HWCAP_COUNT instead of a constant. + (_dl_string_hwcap): New function, converts from string to hwcap + encoding. + * sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h + (_DL_HWCAP_COUNT): New. + (_dl_procinfo): Use _DL_HWCAP_COUNT instead of a constant. + (_dl_string_hwcap): New function, converts from string to hwcap + encoding. + * sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.h + (_DL_HWCAP_COUNT): New. + (_dl_procinfo): Use _DL_HWCAP_COUNT instead of a constant. + (_dl_string_hwcap): New function, converts from string to hwcap + encoding. + +2000-05-05 Ulrich Drepper + + * elf/Makefile (distribute): Add dl-lookupcfg.h. + * sysdeps/ia64/Dist: New file. + + * elf/dl-load.c (_dl_map_object_from_fd): Little of computation of + parameter to mprotect and for variable assignments. + +2000-05-03 Jes Sorensen + + * sysdeps/generic/ldsodefs.h (LOOKUP_VALUE_ADDRESS): Check the + validity of map before dereferencing it. + + * elf/dl-reloc.c (RESOLVE_MAP): Define. + +2000-05-02 Jes Sorensen + + * elf/dl-runtime.c (fixup): Add the value returned in the symbol + lookup to the arguments to elf_machine_fixup_plt(). + + * sysdeps/ia64/dl-machine.h (elf_machine_fixup_plt): Add Link_map + of the symbol being resolved to input argument list and make the + function return the pointer to the reloc. + + * sysdeps/alpha/dl-machine.h (elf_machine_fixup_plt): Change + return valuie to lookup_t and return the value. + * sysdeps/arm/dl-machine.h (elf_machine_fixup_plt): Likewise. + * sysdeps/generic/dl-machine.h (elf_machine_fixup_plt): Likewise. + * sysdeps/i386/dl-machine.h (elf_machine_fixup_plt): Likewise. + * sysdeps/m68k/dl-machine.h (elf_machine_fixup_plt): Likewise. + * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_fixup_plt): Likewise. + * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_fixup_plt): Likewise. + + * sysdeps/powerpc/dl-machine.h (elf_machine_fixup_plt): Likewise. + Make it an inline function returning value after calling + __elf_machine_fixup_plt(). + + * elf/dl-sym.c (_dl_vsym): Use DL_SYMBOL_ADDRESS() to obtain the + symbol address. + + * elf/dl-symbol.c (_dl_symbol_value): Use LOOKUP_VALUE_ADDRESS to + obtain the symbol address. + + * sysdeps/generic/ldsodefs.h: Add generic DL_SYMBOL_ADDRESS() macro + depending on the definition of ELF_FUNCTION_PTR_IS_SPECIAL. + + * sysdeps/ia64/dl-machine.h: Add DL_SYMBOL_ADDRESS() macro calling + _dl_symbol_address() - this way DL_SYMBOL_ADDRESS() turns into an + inline on non ia64. + +2000-04-28 Jes Sorensen + + * elf/dl-runtime.c (fixup): Use the portable macros to get the + symbol address of an object. + + * elf/dl-runtime.c (fixup-profile): Use the portable macros to get + the symbol address of an object. + + * elf/dl-libc.c (struct do_dlsym_args): Change loadbase to a lookup_t. + * elf/dl-lookup.c (_dl_lookup_symbol): Likewise. + (_dl_lookup_symbol_skip): Likewise. + (_dl_lookup_versioned_symbol): Likewise. + (_dl_lookup_versioned_symbol_skip): Likewise. + +2000-04-27 Jes Sorensen + + * elf/rtld.c (_dl_start): Get the function pointer return address + via _dl_start_address for architectures that need a function + pointer descriptor rather than just a pointer (ia64). + + * sysdeps/generic/dl-lookupcfg.h: New file. + * sysdeps/ia64/dl-lookupcfg.h: New file. + * sysdeps/ia64/dl-machine.h: New file. + * sysdeps/ia64/dl-symaddr.c: New file. + * sysdeps/ia64/dl-fptr.c: New file. + + * elf/elf.h: Add IA-64 specific definitions. + +2000-05-04 Jakub Jelinek + + * sysdeps/generic/bits/confname.h (_SC* enum): Avoid comma at the + end of enum. + +2000-05-04 Jakub Jelinek + + * iconv/gconv.h (__gconv_t): Add __extension__ to make gcc -pedantic + happy. + +2000-04-11 Geoff Keating + + * sysdeps/powerpc/dl-start.S (_dl_start): Add _dl_start_user + symbol. Call _dl_init rather than the old way. + +2000-05-04 Ulrich Drepper + + * elf/dl-open.c (dl_open_worker): Use l_map_start and l_map_end to + test for pointer in range of DSO address space. + +2000-05-04 Andreas Jaeger + + * nscd/pwdcache.c (addpwbyname): Initialize oldeuid to silence GCC. + +2000-05-03 Ulrich Drepper + + * locale/findlocale.c (_nl_find_locale): Add new parameter to + calls of _nl_make_l10nflist. + + * libio/stdio.h: Make fseeko and ftello prototypes available is + __USE_LARGEFILE. Patch by Paul Eggert . + + * sysdeps/generic/dl-environ.c (unsetenv): Follow change to the + real unsetenv implementation from 1999-07-29 [PR libc/1714]. + +2000-05-03 Bruno Haible + + * intl/dcigettext.c (dcigettext): Do the defaulting of 'domainname' + before calling tfind. + +2000-03-05 Jakub Jelinek + + * resolv/resolv.h (res_querydomain): Remove redefinition to + __res_querydomain (reported by Owen Taylor ). + +2000-05-03 Ulrich Drepper + + * po/gl.po: Update from translation team. + + * manual/intro.texi (Program Basics): Change section title. + * manual/process.texi: Fix reference. + (Executing a File): Add reference exec in other section. + * manual/signal.texi: Fix reference. + * manual/startup.texi: Document syscall function. + Patches by Bryan Henderson . + +2000-04-29 Bruno Haible + + * intl/libintl.h (bind_textdomain_codeset): New declaration. + * intl/bindtextdom.c (set_binding_values): New function. + (bindtextdomain): Call it. + (bind_textdomain_codeset): New function. + * intl/dcigettext.c (dcigettext): Pass binding to _nl_find_domain. + (free_mem): Free each binding's codeset. + * intl/gettextP.h (struct binding): Add codeset field. + (_nl_find_domain): Add domainbinding argument. + * intl/finddomain.c (_nl_find_domain): Add domainbinding argument. + Pass it to _nl_make_l10nflist. + * intl/loadinfo.h (struct loaded_l10nfile): Add domainbinding field. + (_nl_make_l10nflist): Add domainbinding argument. + * intl/l10nflist.c (_nl_make_l10nflist): Add domainbinding argument. + * intl/loadmsgcat.c (_nl_load_domain): Look at the domainbinding's + codeset when determining outcharset. If !_LIBC && HAVE_ICONV, call + locale_charset(). + * manual/message.texi: New node "Charset conversion in gettext". + +2000-04-30 Bruno Haible + + * catgets/open_catalog.c (__open_catalog): Use __builtin_expect where + appropriate. Handle possible __read error. + +2000-04-29 Bruno Haible + + * intl/gettextP.h (__builtin_expect): Define as empty if not a + compiler builtin. + * intl/loadinfo.h (__builtin_expect): Likewise. + * intl/dcigettext.c (dcigettext, _nl_find_msg): Use + __builtin_expect where appropriate. + * intl/loadmsgcat.c (_nl_load_domain): Likewise. + * intl/localealias.c (extend_alias_table): Return an error indicator. + (read_alias_file): Bail out if extend_alias_table fails. + +2000-04-29 Bruno Haible + + * intl/loadmsgcat.c: Define _GNU_SOURCE as early as possible. + * intl/localealias.c: Likewise. + +2000-05-01 Bruno Haible + + * intl/loadmsgcat.c (_nl_load_domain): Initialize domain->conv_tab. + Initialize domain->plural and domain->nplurals even if there is no + nullentry. + +2000-05-01 Bruno Haible + + * intl/dcigettext.c (_nl_find_msg): Terminate __gconv loop if return + value is == __GCONV_OK or == __GCONV_EMPTY_INPUT, not != __GCONV_OK. + In case of failure, goto converted. + +2000-05-01 Bruno Haible + + * wcsmbs/wcsmbsload.c (norm_add_slashes): Move away. + * iconv/gconv_int.h (norm_add_slashes): Move to here. + * intl/loadmsgcat.c (_nl_load_domain): Normalize strings passed to + __gconv_open. + +2000-04-29 Bruno Haible + + * intl/dcigettext.c (transcmp): Compare the domains as well. + (dcigettext): Call strlen (msgid1) after testing msgid1 against NULL, + not before. + * intl/loadmsgcat.c (_nl_load_domain): Deal with EINTR. Include + . + +2000-05-03 Ulrich Drepper + + * string/bits/string2.h: Declare __strdup and __strndup if necessary. + Reported by Bruno Haible. + +2000-04-29 Bruno Haible + + * manual/arith.texi: Remove @w from @itemize. + +2000-05-02 Andreas Jaeger + + * conform/data/tar.h-data: Add some checks for specific values. + + * conform/data/stdlib.h-data: Add checks for value of EXIT_SUCCESS + and RAND_MAX. + + * conform/data/stdio.h-data: Add checks for value of TMP_MAX and + FOPEN_MAX. + + * conform/data/netinet/in.h-data: Add exact checks for the values + fo INET_ADDRSTRLEN and INET6_ADDRSTRLEN. + + * conform/data/float.h-data: Add some minimal values. + + * conform/conformtest.pl: Test for macros with string constants, + check for minimum and maximum values. + Add limits.h to headers. + + * conform/data/cpio.h-data: Test for value of MAGIC. + + * conform/data/limits.h-data: New file. + +2000-04-30 Bruno Haible + + * math/Makefile (headers): Add bits/fenvinline.h. + +2000-05-01 Ulrich Drepper + + * sysdeps/unix/sysv/aix/linux/linux-dirent.h: New file. + * sysdeps/unix/sysv/aix/linux/direntconv.c: New file. + + * posix/Versions: Change posix_spawnattr_getdefault and + posix_spawnattr_setdefault to posix_spawnattr_getsigdefault + and posix_spawnattr_setsigdefault respectively. + * posix/spawn.h: Likewise. + * posix/spawnattr_getdefault.h: Likewise. + * posix/spawnattr_setdefault.h: Likewise. + * conform/data/spawn.h-data: Likewise. + +2000-05-01 Andreas Jaeger + + * nscd/nscd.c: Include for setgroups prototype. + +2000-04-30 Ulrich Drepper + + * manual/sysinfo.texi: Document getdomainname, setdomainname + and sysctl. + * manual/string.texi: Fix typo. + * manual/terminal.texi: Document gtty and stty. + Patch by Bryan Henderson . + +2000-04-30 Andreas Jaeger + + * posix/bits/posix1_lim.h (_POSIX_PATH_MAX): Increase to 256 in + accordance with Austin Draft. + +2000-04-30 Ulrich Drepper + + * catgets/gencat.c (read_input_file): Use isblank and not isspace + to recognize second character in comment line. + + * sysdeps/unix/sysv/linux/if_index.c (if_nameindex): Set errno to + ENOBUFS if we are out of memory. + + * sysdeps/generic/bits/fcntl.h (F_SETOWN, F_GETOWN): Make + available if __USE_XOPEN2K. + * sysdeps/mach/hurd/bits/fcntl.h: Likewise. + * sysdeps/unix/common/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/aix/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/bits/fcntl.h: Likewise. + +2000-04-29 Ulrich Drepper + + * iconv/iconv_prog.c (main): Handle input file name "-" correctly. + Recognize option -s, -c, and -l. + +2000-04-20 Thorsten Kukuk + + * nscd/nscd.c: Start new session for nscd, drop privilegs + to configured user if requested and no -S parameter are used. + * nscd/nscd.conf: Add new option "server-user". + * nscd/nscd_conf.c: Add support for new "server-user" option. + * nscd/nscd.h: Add declaration for server_user variable. + Based on patch by Chris Wing + +2000-04-29 Mark Kettenis + + * sysdeps/unix/sysv/linux/i386/sigaction.c: Add comment explaining + that changing the __restore and __restore_rt signal return code + will break GDB. + +2000-04-29 Mark Kettenis + + * sysdeps/unix/sysv/linux/i386/sys/ucontext.h: Do not include + . + +2000-04-29 Mark Kettenis + + * conform/data/ucontext.h-data: Allow ss_* instead of SS_*. + +2000-04-29 Ulrich Drepper + + * conform/conformtest.pl (@headers): Add sys/utsname.h, sys/un.h, + sys/socket.h, spawn.h, netinet/tcp.h, netinet/in.h, net/if.h, and + arpa/inet.h. + * conform/data/fcntl.h-data: Add F_GETOWN, F_SETOWN, + SEEK_SET, SEEK_CUR, SEEK_END, S_IFMT, S_IFBLK, S_IFCHR, S_IFIFO, + S_IFREG, S_IFDIR, S_IFLNK, S_IFSOCK, S_IRWXU, S_IRUSR S_IWUSR, + S_IXUSR, S_IRWXG, S_IRGRP, S_IWGRP, S_IXGRP, S_IRWXO, S_IROTH, + S_IWOTH, S_IXOTH, S_ISUID, S_ISGID, S_ISVTX, POSIX_FADV_NORMAL, + POSIX_FADV_SEQUENTIAL, POSIX_FADV_RANDOM, POSIX_FADV_WILLNEED, + POSIX_FADV_DONTNEED, POSIX_FADV_NOREUSE, posix_fadvise, + posix_fallocate, and posix_madvise. + * conform/data/netdb.h-data: New file. + * conform/data/pthread.h-data: Add pthread_barrier_t, + pthread_barrierattr_t, pthread_barrier_destroy, + pthread_barrier_init, pthread_barrier_wait, + pthread_barrierattr_destroy, pthread_barrierattr_getpshared, + pthread_barrierattr_init, pthread_barrierattr_setpshared, + pthread_condattr_getclock, pthread_condattr_setclock, + pthread_getcpuclockid, pthread_mutex_timedlock, + pthread_rwlock_timedrdlock, pthread_rwlock_timedwrlock, + pthread_sigmask, pthread_spin_destroy, pthread_spin_init, + pthread_spin_lock, pthread_spin_trylock, and pthread_spin_unlock. + * conform/data/sched.h-data: Add sched_ss_low_priority, + sched_ss_repl_period, sched_ss_init_budget, sched_ss_max_repl, and + SCHED_SPORADIC. + * conform/data/semaphore.h-data: Add sem_timedwait. + * conform/data/signal.h-data: Add SIGIO. + * conform/data/spawn.h-data: New file. + * conform/data/stdlib.h-data: Add posix_memalign, setenv, and unsetenv. + * conform/data/time.h-data: Add CLOCK_PROCESS_CPUTIME_ID, + CLOCK_THREAD_CPUTIME_ID, clock_getcpuclockid, and clock_nanosleep. + Fix typo in gmtime_r definition. + * conform/data/unistd.h-data: Add _POSIX_ADVISORY_INFO, + _POSIX_ASYNCHRONOUS_IO, _POSIX_BARRIERS, _POSIX_MONOTONIC_CLOCK, + _POSIX_READER_WRITER_LOCKS, _POSIX_SHELL, _POSIX_SPAWN, + _POSIX_SPIN_LOCKS, _POSIX_SPORADIC_SERVER, _POSIX_THREAD_CPUTIME, + _POSIX_TYPED_MEMORY_OBJECTS, _POSIX_THREAD_SPORADIC_SERVER, + _XOPEN_STREAMS, _POSIX_TIMEOUTS, _POSIX2_PBS, + _POSIX2_PBS_ACCOUNTING, _POSIX2_PBS_CHECKPOINT, + _POSIX2_PBS_LOCATE, _POSIX2_PBS_MESSAGE, _POSIX2_PBS_TRACK, + _SC_2_PBS, _SC_2_PBS_ACCOUNTING, _SC_2_PBS_CHECKPOINT, + _SC_2_PBS_LOCATE, _SC_2_PBS_MESSAGE, _SC_2_PBS_TRACK, + _SC_BARRIERS, _SC_BASE, _SC_CLOCK_SELECTION, _SC_DEVICE_IO, + _SC_DEVICE_SPECIFIC, _SC_DEVICE_SPECIFIC_R, _SC_FD_MGMT, _SC_FIFO, + _SC_FILE_ATTRIBUTES, _SC_FILE_LOCKING, _SC_FILE_SYSTEM, + _SC_MEMORY_PROTECTION, _SC_MESSAGE_PASSING, _SC_MONOTONIC_CLOCK, + _SC_MESSAGE_PASSING, _SC_MONOTONIC_CLOCK, _SC_MULTIPLE_PROCESS, + _SC_NETWORKING, _SC_PIPE, _SC_READER_WRITER_LOCKS, _SC_REGEXP, + _SC_SHELL, _SC_SIGNALS, _SC_SINGLE_PROCESS, _SC_SPIN_LOCKS, + _SC_TYPED_MEMORY_OBJECTS, _SC_USER_GROUPS, _SC_USER_GROUPS_R, + _SC_STREAMS, _PC_REC_INCR_XFER_SIZE, _PC_REC_MAX_XFER_SIZE, + _PC_REC_MIN_XFER_SIZE, _PC_REC_XFER_ALIGN, setegid, seteuid. Fix + typo in off_t definition. + * conform/data/net/if.h-data: New file. + * conform/data/netinet/in.h-data: New file. + * conform/data/netinet/tcp.h-data: New file. + * conform/data/sys/mman.h-data: Add POSIX_MADV_NORMAL, + POSIX_MADV_SEQUENTIAL, POSIX_MADV_RANDOM, POSIX_MADV_WILLNEED, + POSIX_MADV_DONTNEED, POSIX_TYPED_MEM_ALLOCATE, + POSIX_TYPED_MEM_ALLOCATE_CONTIG, POSIX_TYPED_MEM_MAP_ALLOCATABLE, + posix_typedmem_info, posix_mem_offset, posix_typed_mem_get_info, + and posix_typed_mem_open. + * conform/data/sys/socket.h-data: New file. + * conform/data/sys/stat.h-data: Add S_TYPEISTMO and isfdtype. + * conform/data/sys/types.h-data: Add pthread_barrier_t, + pthread_barrierattr_t, and pthread_spinlock_t. + * conform/data/sys/un.h-data: New file. + * conform/data/sys/utsname.h-data: New file. + + * include/netdb.h (__gethostbyaddr_r): Fix types of first and second + parameter. + * inet/gethstbyad.c (gethostbyname): Likewise. + * inet/gethstbyad_t.c (gethostbyname_r): Likewise. + * inet/getipnodebyad.c (getipnodebyad): Likewise. + * nis/nss_nis/nis-hosts.c (_nss_nis_gethostbyaddr_r): Likewise. + * nis/nss_nisplus/nisplus-hosts.c (_nss_nisplus_gethostbyaddr_r): + Likewise. + * nscd/gethstbyad_r.c (gethostbyaddr_r): Likewise. + * nscd/nscd_gethst_r.c (__nscd_gethostbyaddr_r): Likewise. + * nscd/nscd_proto.h (__nscd_gethostbyaddr_r): Likewise. + * nss/nss_files/files-hosts.c (_nss_files_gethostbyaddr_r): Likewise. + * resolv/gethnamaddr.c (gethostbyname): Likewise. + * resolv/netdb.h (struct hostent): Fix type of h_length member. + (gethostbyaddr, getipnodebyaddr, gethostbyaddr_r): Fix types of first + and second parameter. + + * wcsmbs/mbrtowc.c (__mbrtowc): Set end of buffer correctly if s + == NULL. + +2000-04-29 Andreas Jaeger + + * conform/data/arpa/inet.h-data: New file. + +2000-04-28 Geoff Clare + + * io/ftw.c: Set errno to ENOENT (instead of ENOTDIR) when the + path passed to ftw() or nftw() is an empty string. + Closes PR libc/1710. + +2000-04-27 Ulrich Drepper + + * localedata/Makefile (test-srcs): Add tst-mbswcs4 and tst-mbswcs5. + (do-tst-mbswcs): Add tst-mbswcs4 and tst-mbswcs5 to dependencies. + * localedata/tst-mbswcs.sh: Run tst-mbswcs4 and tst-mbswcs5. + * localedata/tst-mbswcs4.c: New file. + * localedata/tst-mbswcs5.c: New file. + + * wcsmbs/wcrtomb.c (__wcrtomb): Set end of buffer correctly if s + == NULL. Little optimization. + + * elf/dl-init.c (_dl_init): Correct typo (DT_PREINIT_ARRAY not + DT_PREINIT_ARRAYSZ). + Reported by Jes Sorensen . + + * hesiod/nss_hesiod/hesiod-grp.c (_nss_hesiod_initgroups): Handle + overflows in conversion from ASCII. + +2000-04-26 Jakub Jelinek + + * Makeconfig (full_config_sysdirs): Renamed from full-config-sysdirs. + * Makerules (full_config_sysdirs): Likewise. + * MakeTAGS (full_config_sysdirs): Likewise. + +2000-04-26 Jakub Jelinek + + * .cvsignore: Remove linuxthreads. + * po/.cvsignore: Remove *.pot. + * posix/glob/.cvsignore: Removed. + * sysdeps/unix/bsd/osf/.cvsignore: Removed. + +2000-04-25 Andreas Jaeger + + * conform/Makefile (distribute): Also distribute contents of + subdirectories. + + * Makerules (no_deps): Remove abi-versions.h. + + * nis/nis_print_group_entry.c: Include alloca.h for alloca prototype. + +2000-04-25 Jakub Jelinek + + * sysdeps/sparc/sparc64/elf/Dist: Remove. + * sysdeps/sparc/sparc64/elf/crtbegin.S: Remove. + * sysdeps/sparc/sparc64/elf/crtbeginS.S: Remove. + * sysdeps/sparc/sparc64/elf/crtend.S: Remove. + * sysdeps/sparc/sparc64/elf/crtendS.S: Remove. + * sysdeps/sparc/sparc64/elf/Makefile: Don't build crtbegin/crtend + objects. + +2000-04-25 Thorsten Kukuk + + * nscd/grpcache.c: Fix gr_name pointer [PR/1702]. + +2000-04-23 Bruno Haible + + * intl/dcigettext.c: Define _GNU_SOURCE as early as possible. + * intl/l10nflist.c: Likewise. + +2000-04-23 Bruno Haible + + * intl/bindtextdom.c [!_LIBC]: Define __libc_rwlock_define, + __libc_rwlock_wrlock, __libc_rwlock_unlock as empty. + * intl/textdomain.c [!_LIBC]: Likewise. + * intl/dcigettext.c [!_LIBC]: Define __libc_rwlock_define_initialized, + __libc_rwlock_rdlock, __libc_rwlock_unlock as empty. + * intl/loadmsgcat.c (_nl_load_domain) [!_LIBC, !HAVE_ICONV]: Avoid + syntax error. + +2000-04-23 Bruno Haible + + * intl/dcigettext.c (_nl_find_msg): Do the plural treatment and + character set conversion also in the case the translation was found + after a hash collision or through binary search. Store the maximum + index together with the converted message. Use iconv() when available. + In case of out of memory during conversion, return the unconverted + translated string, not NULL. + +2000-04-25 Jes Sorensen + + * shlib-versions: Rename ia64 dynamic linker to ld-linux-ia64.so.1 + to avoid name clashes with the ia32 linker. + +2000-04-25 Jakub Jelinek + + * sysdeps/alpha/dl-machine.h (_dl_start_user): Fix the _dl_skip_args + handling. + +2000-04-27 Ulrich Drepper + + * manual/string.texi: Document strcasestr, strchrnul, strtoimax, + strtoumax, strfry, and memfrob. + * manual/arith.texi: Document {,u}int*_t types, and strto{i,u}max. + Patch by Bryan Henderson . + + * elf/soinit.c (__libc_global_ctors): Call __pthread_initialize_minimal + if this function is available. + + * sysdeps/i386/i486/atomicity.h (exchange_and_add): Use uint32_t for + all values. + +2000-04-27 Jakub Jelinek + + * nss/getXXbyYY_r.c: Fix a typo in __old_getxxbyyy_r versioning. + +2000-04-27 Ulrich Drepper + + * localedata/Makefile (test-srcs); Add tst-mbswcs3. + Add rule to build tst-mbswcs3 before running tst-mbswcs.sh. + * localedata/tst-mbswcs.sh: Run tst-mbswcs3. + * localedata/tst-mbswcs3.c: New file. + +2000-04-26 Ulrich Drepper + + * wcsmbs/mbsnrtowcs.c: Correctly compute number of converted + characters. Don't handle incomplete characters as errors. + * wcsmbs/mbsrtowcs.c: Don't handle incomplete characters as errors. + * localedata/Makefile (test-srcs): Add tst-mbswcs2. + Add rule to build tst-mbswcs2 before running tst-mbswcs.sh. + * localedata/tst-mbswcs.sh: Run tst-mbswcs2. + * localedata/tst-mbswcs2.c: New file. + + * iconv/gconv_simple.c (utf8_internal_loop): Correctly reconstruct + stored character in state in UNPACK_BYTES macro. + * iconv/loop.c (SINGLE(LOOPFCT)): Make it actually work. Correct + test for available characters, handle result of BODY code correctly. + * localedata/Makefile (test-srcs): Add tst-mbswcs1. + (distribute): Add tst-mbswcs.sh. + Add rule to run tst-mbswcs.sh. + * localedata/tst-mbswcs.sh: New file. + * localedata/tst-mbswcs1.c: New file. + +2000-04-26 Jakub Jelinek + + * nis/nis_callback.c (__nis_create_callback): Do failed memory + allocation fixups centrally, fix __builtin_expect call, return NULL + on failure, not NIS_NOMEMORY. + +2000-04-27 Bruno Haible + + * intl/ngettext.c [!_LIBC]: Fix definition of NGETTEXT. + + * intl/loadinfo.h (internal_function): Define if not already defined. + +2000-04-27 Andreas Jaeger + + * intl/libintl.h: Fix typo, reported by Bruno Haible + . + +2000-04-25 Ulrich Drepper + + * elf/dl-profile.c (_dl_mcount): Try to be thread-safe while not + setting the state to GMON_PROF_BUSY. + +2000-04-24 Ulrich Drepper + + * elf/dl-profile.c (_dl_start_profile): define all variables which + do not have to be global as local variables. + + * nis/nis_callback.c (__nis_create_callback): Partially undo last + patch. Keep needed tests for failed memory allocation. + + * elf/dl-reloc.c (_dl_relocate_object): Add one more + __builtin_expect saying that we don't normally expect to profile. + + * sysdeps/i386/dl-machine.h (elf_machine_rel): Add + __builtin_expect where desirable. + +2000-04-23 Ulrich Drepper + + * manual/Makefile (chapters): Add syslog. + * manual/syslog.texi: New file. + * manual/math.texi: Fix references. + * manual/terminal.texi: Likewise. + Patch by Bryan Henderson . + +2000-04-18 Jakub Jelinek + + * posix/sys/wait.h: Define __WAIT_STATUS and the like either if + stdlib.h was not included or __USE_XOPEN not defined. + +2000-04-23 Ulrich Drepper + + * nss/Makefile (libnss_db-dbs): Remove stray backslash. + Patch by Zack Weinberg . + +2000-04-22 Ulrich Drepper + + * manual/examples/subopt.c (mount_opts): Add missing terminating + entry. + Reported by Michael Deutschmann . + + * assert/assert-perr.c: Include for abort prototype. + * libio/ftello.c: Likewise. + * libio/ftello64.c: Likewise. + * libio/ioftell.c: Likewise. + * sysdeps/generic/memrchr.c: Likewise. + * sysdeps/posix/libc_fatal.c: Likewise. + * sysdeps/unix/sysv/linux/init-first.c: Likewise. + * misc/fstab.c: Include for strcmp prototype. + * sysdeps/generic/ldsodefs.h: Likewise. + * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise. + Patch by Kurt Roeckx . + + * nss/Makefile (libnss_db-dbs): Renamed from libnss_db-routines. + Remove db-open. Change all uses. + (libnss_db-routines): Define as $(libnss_db-dbs) db-open. + +2000-04-21 Jakub Jelinek + + * sysdeps/unix/sysv/linux/alpha/msgctl.c (__syscall_msgctl): Declare. + * sysdeps/unix/sysv/linux/alpha/semctl.c (__syscall_semctl): Declare. + * sysdeps/unix/sysv/linux/alpha/shmctl.c (__syscall_shmctl): Declare. + * sysdeps/unix/sysv/linux/alpha/getrusage.S: Surround uses of $f28 + with .set noat/at to shut up warnings. + * sysdeps/unix/sysv/linux/alpha/syscalls.list (__fstatfs64): Add alias. + * sysdeps/unix/sysv/linux/alpha/ioperm.c (init_iosys): Allow + compilation if __NR_pciconfig_iobase is not defined. + * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list (__fstatfs64): + Add alias. + +2000-04-21 Ulrich Drepper + + * manual/sysinfo.texi: Fix typo. + * manual/time.texi: Document timelocal, timegm, adjtimex, and stime. + Replace "high precision time" with "high accuracy clock". + Fix language. + Patches by Bryan Henderson . + + * nis/nis_findserv.c (__nis_findfastest): Improve memory handling. + * nis/nis_print_group_entry.c (nis_print_group_entry): Use alloca + instead of malloc. + * nis/nis_subr.c: Use __builtin_expect. + * nis/ypclnt.c: Likewise. + * nis/nis_getservlist.c: Likewise. + * nis/nis_creategroup.c: Likewise. + + * nis/nis_callback.c (__nis_create_callback): Check result of + memory allocation. Fix memory leaks. Use __builtin_expect. + (__nis_destroy_callback): Fix memory leaks. + +2000-04-21 Andreas Jaeger + + * sysdeps/mips/elf/start.S: Use __PIC__ instead of PIC. + * sysdeps/mips/mips64/add_n.S: Likewise. + * sysdeps/mips/mips64/bsd-_setjmp.S: Likewise. + * sysdeps/mips/mips64/lshift.S: Likewise. + * sysdeps/mips/mips64/mul_1.S: Likewise. + * sysdeps/mips/mips64/rshift.S: Likewise. + * sysdeps/mips/mips64/setjmp.S: Likewise. + * sysdeps/mips/mips64/sub_n.S: Likewise. + * sysdeps/mips/mips64/submul_1.S: Likewise + * sysdeps/unix/mips/sysdep.S: Likewise. + + * sysdeps/mips/dl-machine.h (elf_machine_got_rel): Remove strtab + and update comment. The strtab from _dl_relocate_object can be + used. + +2000-04-21 Ulrich Drepper + + * iconv/iconv.c (iconv): Add __builtin_expect where useful. + * iconv/iconv_close.c (iconv_close): Likewise. + * iconv/iconv_open.c (iconv_open): Likewise. + + * grp/putgrent.c (putgrent): Unlock steam if fprintf failed. Add + __builtin_expect where useful. + + * grp/initgroups.c (initgroups): Test for result of memory + allocation and punt if it fails. + + * dirent/scandir.c (scandir): Add __builtin_expect where useful. + * grp/fgetgrent.c (fgetfrent): Likewise. + * grp/fgetgrent_r.c (__fgetgrent_r): Likewise. + +2000-04-21 Jakub Jelinek + + * libio/vasprintf.c: Include string.h to get memcpy prototype. + +2000-04-20 Ulrich Drepper + + * wcsmbs/wcsrtombs.c (__wcsrtombs): If output buffer is too small + don't search for NUL byte to decrement counter. + Reported by Ulrich.Brink@sap.com. + + * iconv/gconv_simple.c: Define separate functions to convert from + UCS4/UCS4-LE to the internal encoding. + * iconv/gconv_builtin.h: Use separate functions to convert from + UCS4/UCS4-LE to the internal encoding. + * iconv/gconv_int.h: Declare __gconv_transform_ucs4_internal and + __gconv_transform_ucs4le_internal. + + * iconv/gconv_simple.c (internal_utf8_loop): Correct check for + output buffer overflow. Reported by Ulrich.Brink@sap.com. + + * iconv/skeleton.c: Add some more __builtin_expect. + * iconv/loop.c: Likewise. + +2000-03-08 H.J. Lu + + * posix/regex.c (regex_compile): Correctly handle "\{" when + the RE_INTERVALS is set and the RE_NO_BK_BRACES bit is not set. + +2000-04-20 Ulrich Drepper + + * manual/stdio.texi: Give advise about handling error when using + stream functions. + Patch by Michael Deutschmann . + +2000-04-19 Jakub Jelinek + + * locale/programs/ld-ctype.c (ctype_output): Set size of the idx + field to nelems * sizeof (uint32_t). + * locale/programs/ld-address.c (address_output): Align word fields + properly. + * locale/programs/ld-monetary.c (monetary_output): Likewise. + Don't restart idx pointers to idx end at the duo_int_curr_symbol + field. + Avoid giving arbitrary garbage in the crncystr field. + Use sizeof(uint32_t) instead of 4 for len in uno_valid_from, + uno_valid_to, duo_valid_from, duo_valid_to and conversion_rate + fields. + * locale/programs/ld-numeric.c (numeric_output): Likewise. + Don't restart idx pointers to idx end at the decimal_point_wc field. + * locale/programs/ld-time.c (time_output): week_1stday should be + word, not byte. Align it properly. + +2000-04-19 H.J. Lu + + * csu/gmon-start.c (_start): Declared as "extern void". + (etext): Likewise. + +2000-04-18 Andreas Jaeger + + * manual/install.texi (Running make install): Don't mention utmpd + anymore. + +2000-04-18 Andreas Jaeger + + * linuxthreads/Versions: Use ld instead of ld.so. + + * elf/Makefile (ld-map): Use ld.map. + + * Versions.def: Use ld instead of ld.so. + * elf/Versions: Likewise. + * sysdeps/mach/hurd/Versions: Likewise. + +2000-04-20 Andreas Jaeger + + * elf/rtld.c (print_statistics): Move ifndef further up. + (_dl_start_final): Added HP_TIMINIG_NONAVAIL to avoid warnings. + (dl_main): Likewise. + +2000-04-18 Ulrich Drepper + + * gmon/gmon.c: Add weak alias moncontrol for __moncontrol. + * gmon/Versions: Move moncontrol to GLIBC_2.2. + + * po/cs.po: Update from translation team. + + * sysdeps/generic/updwtmp.c: Remove daemon support. + + * login/Makefile (routines): Remove utmp_daemon. + + * sysdeps/unix/sysv/aix/gethostname.c: Fix type of len argument. + * sysdeps/unix/sysv/aix/access.c: Define ACC_INVOKER. + * sysdeps/unix/sysv/aix/getegid.c: Define ID_EFFECTIVE. + * sysdeps/unix/sysv/aix/geteuid.c: Likewise. + + * elf/rtld.c: Display statitics option also if hp timing is not + available. + + * login/programs/connection.c: Removed. + * login/programs/database.c Removed. + * login/programs/error.c: Removed. + * login/programs/request.c: Removed. + * login/programs/xtmp.c: Removed. + * login/programs/xtmp.h: Removed. + * login/Makefile: Remove rules for utmpd. + * login/README.utmpd: Removed. + * login/utmp_daemon.c: Removed. + * login/getutent_r.c: Remove references to daemon functions. + * login/utmp-private.h (__libc_utmp_daemon_functions): Remove + declaration. + +2000-04-18 Andreas Jaeger + + * shlib-versions (mips.*-.*-linux.*): Support only GLIBC 2.0 and + 2.2 for libnsl, libresolv, librt, libnss_*. + + * elf/rtld.c (process_dl_debug): Remove obsolete comment. + + * sysdeps/mips/dl-machine.h (elf_machine_rel): Fix relocation. + +2000-04-18 Ulrich Drepper + + * sysdeps/unix/sysv/aix/geteuid.c: Don't try to include . + * sysdeps/unix/sysv/aix/getegid.c: Likewise. + * sysdeps/unix/sysv/aix/xstat64.c: Define STX_NORMAL and STX_64. + * sysdeps/unix/sysv/aix/xstat.c: Define STX_NORMAL. + * sysdeps/unix/sysv/aix/sys/param.h: Define NGROUPS. + * sysdeps/unix/sysv/aix/setreuid.c: Define ID_EFFECTIVE and ID_REAL. + * sysdeps/unix/sysv/aix/setregid.c: Likewise. + * sysdeps/unix/sysv/aix/setuid.c: Define ID_REAL. + * sysdeps/unix/sysv/aix/setgid.c: Likewise. + * sysdeps/unix/sysv/aix/seteuid.c: Define ID_EFFECTIVE. + * sysdeps/unix/sysv/aix/setegid.c: Likewise. + * sysdeps/unix/sysv/aix/sbrk.c: Update parameter type. + * sysdeps/unix/sysv/aix/nanosleep.c (struct timestruc_t): Define + it here. + * sysdeps/unix/sysv/aix/msync.c: New file. + * sysdeps/unix/sysv/aix/msgsnd.c: New file. + * sysdeps/unix/sysv/aix/net/if.h: New file. + * sysdeps/unix/sysv/aix/pipe.c: New file. + * sysdeps/unix/sysv/aix/poll.c: New file. + * sysdeps/unix/sysv/aix/rename.c: New file. + * sysdeps/unix/sysv/aix/rmdir.c: New file. + * sysdeps/unix/sysv/aix/select.c: New file. + * sysdeps/unix/sysv/aix/semctl.c: New file. + * sysdeps/unix/sysv/aix/semget.c: New file. + * sysdeps/unix/sysv/aix/semop.c: New file. + * sysdeps/unix/sysv/aix/sendto.c: New file. + * sysdeps/unix/sysv/aix/setgroups.c: New file. + * sysdeps/unix/sysv/aix/setpgid.c: New file. + * sysdeps/unix/sysv/aix/setpgrp.c: New file. + * sysdeps/unix/sysv/aix/setpriority.c: New file. + * sysdeps/unix/sysv/aix/setrlimit.c: New file. + * sysdeps/unix/sysv/aix/setrlimit64.c: New file. + * sysdeps/unix/sysv/aix/setsid.c: New file. + * sysdeps/unix/sysv/aix/setsockopt.c: New file. + * sysdeps/unix/sysv/aix/shmat.c: New file. + * sysdeps/unix/sysv/aix/shmctl.c: New file. + * sysdeps/unix/sysv/aix/shmdt.c: New file. + * sysdeps/unix/sysv/aix/shmget.c: New file. + * sysdeps/unix/sysv/aix/sigaltstack.c: New file. + * sysdeps/unix/sysv/aix/sigstack.c: New file. + * sysdeps/unix/sysv/aix/socket.c: New file. + * sysdeps/unix/sysv/aix/socketpair.c: New file. + * sysdeps/unix/sysv/aix/speed.c: New file. + * sysdeps/unix/sysv/aix/symlink.c: New file. + * sysdeps/unix/sysv/aix/sync.c: New file. + * sysdeps/unix/sysv/aix/tcgetattr.c: New file. + * sysdeps/unix/sysv/aix/tcsetattr.c: New file. + * sysdeps/unix/sysv/aix/times.c: New file. + * sysdeps/unix/sysv/aix/ulimit.c: New file. + * sysdeps/unix/sysv/aix/umask.c: New file. + * sysdeps/unix/sysv/aix/unlink.c: New file. + * sysdeps/unix/sysv/aix/ustat.c: New file. + * sysdeps/unix/sysv/aix/utimes.c: New file. + +2000-04-18 Andreas Jaeger + + * manual/startup.texi (Environment Access): Fix putenv prototype + according to recent changes. + Reported by Andries Brouwer , closes + PR libc/1692. + + * elf/rtld.c (print_statistics): Added HP_TIMINIG_NONAVAIL where + needed. + +2000-04-18 Ulrich Drepper + + * posix/Makefile (tests): Add tst-getaddrinfo. + * posix/tst-getaddrinfo.c: New file. + +2000-04-17 Ulrich Drepper + + * manual/sysinfo.texi: Document that umount2 is not widely available. + + * sysdeps/generic/hp-timing.h (HP_TIMING_NONAVAIL): Define to + signal timing is not really implemented. + +2000-04-17 Andreas Jaeger + + * elf/rtld.c (process_dl_debug): Mention statistics in help message. + +2000-04-17 Jakub Jelinek + + * Makefile (install): Use slibdir and libdir instead of inst_slibdir + and inst_libdir. + +2000-04-17 Ulrich Drepper + + * manual/intro.texi: Change reference from System Information to + System Management. + * manual/users.texi: Likewise. + * manual/conf.texi: Likewise. + * manual/sysinfo.texi: Document mount, umount, and umount2. + Patch by Bryan Henderson . + +2000-04-17 Jakub Jelinek + + * sysdeps/ieee754/ldbl-128/printf_fphex.c (PRINT_FPHEX_LONG_DOUBLE): + Create wnumstr as well as numstr to support wide character output + correctly. + +2000-04-15 Jakub Jelinek + + * sysdeps/sparc/sparc64/Makefile: Remove sysdep-CFLAGS + modification and move it... + * sysdeps/unix/sysv/linux/sparc/sparc64/Makefile: ...here. + Add -melf64_sparc switch to $(LD) on sparc64-linux. + * sysdeps/unix/sysv/linux/sparc/sparc32/Makefile: Add -melf32_sparc + switch to $(LD) on sparc-linux. + +2000-04-17 Thorsten Kukuk + + * sysdeps/unix/sysv/linux/sparc/sparc32/Makefile: Remove setresgid + and setresuid from sysdep_routines. + +2000-04-17 Ulrich Drepper + + * manual/Makefile (chapters): Add resource. + + * manual/time.texi: Move section on resources to... + * manual/resource.texi: ...here. New file. Document ulimit, vlimit, + and vtimes. + * manual/setjmp.texi: Adjust back reference. + Patch by Bryan Henderson . + + * sysdeps/unix/sysv/aix/lxstat64.c: Uncomment STX_LINK and STX_64 + definition. + * sysdeps/unix/sysv/aix/lxstat.c: Uncomment STX_LINK definition. + * sysdeps/unix/sysv/aix/kill.c: Add copyright. + * sysdeps/unix/sysv/aix/getuid.c: Define ID_REAL. + * sysdeps/unix/sysv/aix/getgid.c: Define ID_REAL. + * sysdeps/unix/sysv/aix/execve.c: Add copyright. + * sysdeps/unix/sysv/aix/euidaccess.c: Add copyright. + * sysdeps/unix/sysv/aix/close.c: Add copyright. + * sysdeps/unix/sysv/aix/brk.c: Add copyright. + * sysdeps/unix/sysv/aix/bits/errno.h: Add EAFNOSUPPORT. + * sysdeps/unix/sysv/aix/access.c: Add copyright. + * sysdeps/unix/sysv/aix/Makefile: Add some temporary definitions. + * sysdeps/unix/sysv/aix/Implies: New file. + * sysdeps/unix/sysv/aix/Versions: New file. + * sysdeps/unix/sysv/aix/bind.c: New file. + * sysdeps/unix/sysv/aix/bits/ioctl-types.h: New file. + * sysdeps/unix/sysv/aix/bits/ioctls.h: New file. + * sysdeps/unix/sysv/aix/bits/poll.h: New file. + * sysdeps/unix/sysv/aix/bits/termios.h: New file. + * sysdeps/unix/sysv/aix/chdir.c: New file. + * sysdeps/unix/sysv/aix/chmod.c: New file. + * sysdeps/unix/sysv/aix/chroot.c: New file. + * sysdeps/unix/sysv/aix/creat.c: New file. + * sysdeps/unix/sysv/aix/dl-close.c: New file. + * sysdeps/unix/sysv/aix/dl-open.c: New file. + * sysdeps/unix/sysv/aix/dl-sym.c: New file. + * sysdeps/unix/sysv/aix/fchdir.c: New file. + * sysdeps/unix/sysv/aix/fchmod.c: New file. + * sysdeps/unix/sysv/aix/getgroups.c: New file. + * sysdeps/unix/sysv/aix/gethostname.c: New file. + * sysdeps/unix/sysv/aix/getpriority.c: New file. + * sysdeps/unix/sysv/aix/getrlimit.c: New file. + * sysdeps/unix/sysv/aix/getrlimit64.c: New file. + * sysdeps/unix/sysv/aix/getrusage.c: New file. + * sysdeps/unix/sysv/aix/link.c: New file. + * sysdeps/unix/sysv/aix/madvise.c: New file. + * sysdeps/unix/sysv/aix/mkdir.c: New file. + * sysdeps/unix/sysv/aix/mknod.c: New file. + * sysdeps/unix/sysv/aix/mprotect.c: New file. + * sysdeps/unix/sysv/aix/msgctl.c: New file. + * sysdeps/unix/sysv/aix/msgget.c: New file. + * sysdeps/unix/sysv/aix/msgrcv.c: New file. + +2000-04-17 Andreas Jaeger + + * sysdeps/mips/dl-machine.h (elf_machine_got_rel): Optimize a bit + as suggested by Ulrich Drepper. + (__dl_runtime_resolve): Remove unused variable, initialize sym + directly. + (RTLD_START): Document OFFSET_GP_GOT. + (OFFSET_GP_GOT): New magic value. + (elf_mips_got_from_gpreg): Use OFFSET_GP_GOT. + (elf_machine_got_rel): Only declare strtab if needed. + (elf_machine_relplt): Removed, it's not needed. + (_dl_runtime_resolve): Fix \n for a comment, safe gp and not pc. + + * sysdeps/mips/add_n.S: Add newline at EOF. + * sysdeps/mips/rshift.S: Likewise. + * sysdeps/mips/mul_1.S: Likewise. + * sysdeps/mips/lshift.S: Likewise. + * sysdeps/mips/addmul_1.S: Likewise. + +2000-04-17 Ulrich Drepper + + * sysdeps/powerpc/fpu/s_isnan.c: Pretty printing. + + * elf/dl-reloc.c (_dl_relocate_object): Add more __builtin_expect. + * elf/dl-lookup.c: Likewise. + * elf/dl-init.c (_dl_init): Likewise. + * elf/dl-fini.c (_dl_fini): Likewise. + * elf/dl-deps.c (_dl_map_object_deps): Likewise. + * elf/dl-close.c (_dl_close): Likewise. + * elf/rtld.c (_dl_start_final): Likewise. + + * elf/dl-lookup.c (add_dependency): Correct __builtin_expect use. + +2000-04-15 Ulrich Drepper + + * csu/Makefile ($(objpfx)version-info.h): Get OS name from uname and + only fall back on using Linux. + + * elf/dl-version.c (_dl_check_map_versions): New argument trace_mode. + Before testing versions check that we actually loaded the object + and whether we are in trace mode. If not loaded during tracing don't + test versions in this object. + (_dl_check_all_versions): Take new parameter and pass to + _dl_check_map_versions. + * sysdeps/generic/ldsodefs.h: Update prototypes for + _dl_check_all_versions and _dl_check_map_versions. + * elf/rtld.c (struct version_check_args): Add dotrace. + (version_check_doit): Pass args->dotrace to _dl_check_all_versions. + (dl_main): Pass info about trace mode to version_check_doit. + * elf/dl-open.c (dl_open_worker): Pass zero as new argument to + _dl_check_all_versions. + + * manual/users.texi (XPG Functions): Document utmpxname, getutmp, + and getutmpx. + Patch by Bryan Henderson . + + * manual/argp.texi: Document index parameter of argp_parse. + Fix typo. + Reported by Andrew Schulman . + +2000-04-14 Andreas Jaeger + + * sysdeps/unix/sysv/linux/shm_open.c: Include linux_fsinfo for + SHMFS_SUPER_MAGIC. Remove definition of SHMFS_SUPER_MAGIC. + + * sysdeps/unix/sysv/linux/linux_fsinfo.h (SHMFS_SUPER_MAGIC): Added. + +2000-04-15 Ulrich Drepper + + * sysdeps/unix/sysv/linux/alpha/adjtime.c: Fix typo in + compat_symbol call for old adjtime. + + * sysdeps/alpha/dl-machine.h (RTLD_START): Rewrite for new init + function interface. Patch by Richard Henderson . + + * posix/Makefile (headers): Add spawn.h. + (distribute): Add spawn_int.h. + (routines): Add spawn_faction_init, spawn_faction_destroy, + spawn_faction_addclose, spawn_faction_addopen, spawn_faction_adddup2, + spawnattr_init, spawnattr_destroy, spawnattr_getdefault, + spawnattr_setdefault, spawnattr_getflags, spawnattr_setflags, + spawnattr_getpgroup, spawnattr_setpgroup, spawn, spawnp, and spawni. + * posix/Versions [libc] (GLIBC_2.2): Add posix_spawn_file_actions_init, + posix_spawn_file_actions_destroy, posix_spawn_file_actions_addclose, + posix_spawn_file_actions_addopen, posix_spawn_file_actions_adddup2, + posix_spawnattr_init, posix_spawnattr_destroy, + posix_spawnattr_getdefault, posix_spawnattr_setdefault, + posix_spawnattr_getflags, posix_spawnattr_setflags, + posix_spawnattr_getpgroup, posix_spawnattr_setpgroup, posix_spawn, + and posix_spawnp. + * posix/spawn.c: New file. + * posix/spawn.h: New file. + * posix/spawn_faction_addclose.c: New file. + * posix/spawn_faction_adddup2.c: New file. + * posix/spawn_faction_addopen.c: New file. + * posix/spawn_faction_destroy.c: New file. + * posix/spawn_faction_init.c: New file. + * posix/spawn_int.h: New file. + * posix/spawnattr_destroy.c: New file. + * posix/spawnattr_getdefault.c: New file. + * posix/spawnattr_getflags.c: New file. + * posix/spawnattr_getpgroup.c: New file. + * posix/spawnattr_getschedparam.c: New file. + * posix/spawnattr_getschedpolicy.c: New file. + * posix/spawnattr_getsigmask.c: New file. + * posix/spawnattr_init.c: New file. + * posix/spawnattr_setdefault.c: New file. + * posix/spawnattr_setflags.c: New file. + * posix/spawnattr_setpgroup.c: New file. + * posix/spawnattr_setschedparam.c: New file. + * posix/spawnattr_setschedpolicy.c: New file. + * posix/spawnattr_setsigmask.c: New file. + * posix/spawni.c: New file. + * posix/spawnp.c: New file. + + * sysdeps/mach/hurd/bits/posix_opt.h: Add _POSIX_SPAWN. + * sysdeps/unix/sysv/linux/bits/posix_opt.h: Likewise. + +2000-04-14 Ulrich Drepper + + * malloc/Versions [libc] (GLIBC_2.2): Add posix_memalign. + * malloc/malloc.c: Implement posix_memalign for glibc. + * include/stdlib.h: Add prototype for __posix_memalign. + * stdlib/stdlib.h: Add prototype for posix_memalign. + +2000-04-14 Andreas Jaeger + + * sysdeps/mips/dl-machine.h (elf_machine_got_rel): Initialize + symidx correctly. + (elf_machine_got_rel): Cast sym correctly. + + * sysdeps/mips/add_n.S: Use __PIC__, add end directive. + * sysdeps/mips/addmul_1.S: Likewise. + * sysdeps/mips/lshift.S: Likewise. + * sysdeps/mips/mul_1.S: Likewise. + * sysdeps/mips/rshift.S: Likewise. + * sysdeps/mips/sub_n.S: Likewise. + * sysdeps/mips/submul_1.S: Likewise. + + * stdlib/stdlib.h: Fix typo in comment. + + * shlib-versions (mips.*-.*-linux.*): Support only GLIBC 2.0 and + 2.2 for libdl, ld and libm. + + * sysdeps/generic/madvise.c: Fix typos. + + * sysdeps/unix/sysv/linux/mips/clone.S (error): Use __PIC__. + + * sysdeps/mips/bits/setjmp.h: Remove K&R compatibility. + + * sysdeps/mips/setjmp_aux.c (__sigsetjmp_aux): Silence gcc + warnings. + +2000-04-14 Ulrich Drepper + + * include/sys/statfs.h: Add prototypes for __statfs64 and __fstatfs64. + * sysdeps/generic/fstatfs64.c (__fstatfs64): Renamed to fstatfs64. + Make old name weak alias. + * sysdeps/unix/sysv/linux/fstatfs64.c: Likewise. + * sysdeps/generic/statfs64.c (__statfs64): Renamed to statfs64. + Make old name weak alias. + * sysdeps/unix/sysv/linux/statfs64.c: Likewise. + + * io/Makefile (routines): Add posix_fadvise, posix_fadvise64, + posix_fallocate, and posix_fallocate64. + * io/Versions [libc] (GLIBC_2.2): Add posix_fadvise, posix_fadvise64, + posix_fallocate, and posix_fallocate64. + * io/fcntl.h: Declare posix_fadvise, posix_fadvise64, + posix_fallocate, and posix_fallocate64. + * sysdeps/generic/fadvise.c: New file. + * sysdeps/generic/fadvise64.c: New file. + * sysdeps/generic/fallocate.c: New file. + * sysdeps/generic/fallocate64.c: New file. + * sysdeps/posix/fallocate.c: New file. + * sysdeps/posix/fallocate64.c: New file. + * sysdeps/generic/bits/fcntl.h: Define POSIX_FADV_NORMAL, + POSIX_FADV_RANDOM, POSIX_FADV_SEQUENTIAL, POSIX_FADV_WILLNEED, + POSIX_FADV_DONTNEED, and POSIX_FADV_NOREUSE. + * sysdeps/mach/hurd/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise. + + * sysdeps/generic/madvise.c (__madvise): Renamed to posix_madvise. + * sysdeps/unix/sysv/linux/syscalls.list: Likewise. + +2000-04-13 Ulrich Drepper + + * misc/Versions [libc] (GLIBC_2.2): Add posix_madvice. + * misc/sys/mman.h (posix_madvise): Add prototype. + * sysdeps/generic/madvise.c (madvise): Renamed to __madvise. Make + old name and posix_madvise weak aliases. + * sysdeps/unix/sysv/linux/syscalls.list: Likewise. + * sysdeps/generic/bits/mman.h: Add POSIX_MADV_* constants. + * sysdeps/unix/sysv/linux/alpha/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/arm/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/i386/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/bits/mman.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/mman.h: Likewise. + +2000-04-13 Andreas Jaeger + + * sysdeps/mips/dl-machine.h (__dl_runtime_resolve): Handle symbol + versioning. + (elf_machine_got_rel): Only add runtime display if needed. + (elf_machine_got_rel): Handle symbol versioning. + +2000-04-13 Andreas Jaeger + + * sysdeps/unix/sysv/linux/mips/clone.S: Fix function. + + * sysdeps/unix/mips/pipe.S: Reorder instructions since .reorder is + default. + + * sysdeps/mips/__longjmp.c (__longjmp): Use $25 to fix problems + with some applications. + Patches by Ralf Baechle . + + * sysdeps/mips/bsd-setjmp.S: Use __PIC__. + * sysdeps/mips/bsd-_setjmp.S: Likewise. + * sysdeps/mips/setjmp.S: Likewise. + + * sysdeps/unix/sysv/linux/mips/pipe.S: New file. + +2000-04-13 Ulrich Drepper + + * posix/globtest.sh: Work around inconsistency with expanding ~/ + in shell (PR libc/1690). Reported by patsmith@pobox.com. + +2000-04-12 Ulrich Drepper + + * posix/getconf.c: Add support for many more POSIX options. + * sysdeps/posix/sysconf.c: Likewise. + * sysdeps/generic/bits/confname.h: Add many more POSIX options. + * sysdeps/mach/hurd/bits/posix_opt.h: Add _POSIX_REGEXP and + _POSIX_SHELL. + * sysdeps/unix/sysv/linux/bits/posix_opt.h: Likewise. + * sysdeps/unix/sysv/linux/i386/bits/time.h: Rename __CLOCK_HIGHRES to + CLOCK_PROCESS_CPUTIME_ID. Add define CLOCK_MONOTONIC and + CLOCK_THREAD_CPUTIME_ID. + * sysdeps/unix/i386/clock_getcpuclockid.c: Set *clock_id to + CLOCK_PROCESS_CPUTIME_ID. + * sysdeps/unix/i386/i586/clock_getres.c: Change for renaming of + __CLOCK_HIGHRES to CLOCK_PROCESS_CPUTIME_ID. Handle + CLOCK_THREAD_CPUTIME_ID and CLOCK_MONOTONIC the same. + * sysdeps/unix/i386/i586/clock_gettime.c: Likewise. + + * malloc/Makefile (tests): Add tst-calloc. + * malloc/tst-calloc.c: New file. + + * sysdeps/arm/libm-test-ulps: New file. + + * malloc/malloc.c: Undo all of today's changes. + + * locale/programs/locale.c (show_info): Don't try to look into + data for LC_ALL (there is none). + + * malloc/malloc.c (cALLOc): Clear only what the user asked for and + avoid writing over boundary. + Patch by Greg McGary . + + * sysdeps/arm/memprof.h: New file. + +2000-04-12 Andreas Jaeger + + * sysdeps/unix/i386/i586/clock_gettime.c: Fix typo. + + * sysdeps/unix/sysv/linux/i386/get_clockfreq.c: Include + for memmem declaration. + +2000-04-12 Ulrich Drepper + + * sysdeps/unix/clock_gettime.c (clock_gettime): Initialize retval + to -1. + * sysdeps/posix/clock_getres.c (clock_getres): Likewise. + + * libio/iopopen.c (_IO_new_proc_open): Close pipes in case the + mode is invalid. + * libio/oldiopopen.c (_IO_old_proc_open): Likewise. + Patch by Bart Veer . + + * sysdeps/arm/dl-machine.h (RTLD_START): Rewrite for new init + function interface. + +2000-04-11 Andreas Jaeger + + * sysdeps/mips/dl-machine.h: Update some comments. + (ELF_MACHINE_ALIGN_MASK): Removed, it's not needed. + +2000-04-11 Ulrich Drepper + + * sysdeps/unix/sysv/linux/bits/posix_opt.h: Add + _POSIX_SHARED_MEMORY_OBJECTS. + + * rt/Makefile (tests): Add tst-shm. + Add rules to generate tst-shm. + * rt/tst-shm.c: New file. + + * sysdeps/unix/sysv/linux/shm_open.c (shm_open): Set FD_CLOEXEC + for descriptor. + + * misc/sys/mman.h: Add prototypes for shm_open and shm_unlink. + * rt/Makefile (librt-routines): Add shm_open and shm_unlink. + * rt/Versions [librt] (GLIBC_2.2): Add shm_open and shm_unlink. + * sysdeps/generic/shm_open.c: New file. + * sysdeps/generic/shm_unlink.c: New file. + * sysdeps/unix/sysv/linux/shm_open.c: New file. + * sysdeps/unix/sysv/linux/shm_unlink.c: New file. + * sysdeps/unix/sysv/linux/Versions [libc] (GLIBC_2.2): Export + __endmntent, __getmntent_r, __setmntent, and __statfs. + + * libio/vasprintf.c (_IO_vasprintf): Try to avoid memory + fragmentation by allocating new memory at the end instead of + reallocating. + + * posix/globtest.sh: Fix last change. + +2000-04-10 Philip Blundell + + * sysdeps/unix/sysv/linux/bits/in.h (IPV6_JOIN_GROUP, + IPV6_LEAVE_GROUP): New names for IPV6_ADD_MEMBERSHIP, + IPV6_DROP_MEMBERSHIP. + * sysdeps/generic/bits/in.h (IPV6_JOIN_GROUP, IPV6_LEAVE_GROUP): + Likewise. + +2000-04-11 Ulrich Drepper + + * elf/readlib (process_file): Close streams in case of an error. + +2000-04-09 Andreas Jaeger + + * elf/readlib.c (process_file): Check if file is big enough to + contain aout and ELF headers. + Reported by Reinhard Moosauer . + +2000-04-10 Jes Sorensen + + * elf/dl-fini.c: Include alloca.h to get proper prototype for alloca(). + +2000-04-11 Ulrich Drepper + + * test-skeleton.c (main): If STDOUT_UNBUFFERED is defined, make stdout + stream unbuffered. + * rt/Makefile (tests): Add tst-clock. + Add rules to build tst-clock. + * rt/tst-clock.c: New file. + * sysdeps/unix/i386/i586/clock_getres.c: Correct expression to decide + about initialization of nsec. + * sysdeps/unix/i386/i586/clock_gettime.c: Correct expression to decide + about initialization of freq. Set retval to zero if successful. + * sysdeps/unix/sysv/linux/i386/get_clockfreq.c: Cache result. + +2000-04-10 Ulrich Drepper + + * Versions.def (librt): Add GLIBC_2.2. + * rt/Makefile (librt-routines): Add get_clockfreq, clock_getcpuclockid, + clock_getres, clock_gettime, clock_settime, timer_create, timer_delete, + timer_getoverr, timer_gettime, and timer_settime. + * rt/Versions [librt] (GLIBC_2.2): Add clock_getres, clock_gettime, + clock_settime, timer_create, timer_delete, timer_getoverrun, + timer_gettime, and timer_settime. + * sysdeps/generic/clock_getcpuclockid.c: New file. + * sysdeps/generic/get_clockfreq.c: New file. + * sysdeps/unix/i386/clock_getcpuclockid.c: New file. + * sysdeps/unix/sysv/linux/i386/get_clockfreq.c: New file. + * sysdeps/mach/hurd/i386/bits/time.h: New file. + * sysdeps/unix/i386/i586/clock_getres.c: New file. + * sysdeps/unix/i386/i586/clock_gettime.c: New file. + * sysdeps/unix/i386/i686/Implies: New file. + * sysdpes/unix/sysv/linux/i386/bits/time.h: New file. + * time/Makefile (routines): Move clock_getres, clock_gettime, + clock_settime, timer_create, timer_delete, timer_getoverr, + timer_gettime, and timer_settime to rt/Makefile. + * time/Versions [libc] (GLIBC_2.2): Remove clock_getres, clock_gettime, + clock_settime, timer_create, timer_delete, timer_getoverrun, + timer_gettime, and timer_settime. + * time/time.h: Define pid_t. Add prototype for clock_getcpuclockid. + + * sysdeps/mach/hurd/bits/time.h: Drop K&R compatibility. Use __const__ + and not const as attribute name. + +2000-04-10 Thorsten Kukuk + + * elf/cache.c (save_cache): Make sure /etc/ld.so.cache is mode 644. + +2000-04-10 Andreas Schwab + + * posix/globtest.sh: Skip tests that depend on unreadable + directories if run as root. + +2000-04-10 Ulrich Drepper + + * sysdeps/unix/clock_settime.c (clock_settime): Test tv_nsec value + for correct range. From code by Kaz Kylheku . + +2000-04-09 Ulrich Drepper + + * sysdeps/unix/clock_gettime.c: New file. + * sysdeps/unix/clock_settime.c: New file. + * sysdeps/posix/clock_getres.c: New file. + + * conform/data/ftw.h-data: Add allow-header sys/stat.h. + + * sysdeps/unix/sysv/linux/getdents.c (__getdents): Avoid initial + lseek call be passing in a buffer which never allow a successful + first getdents syscall if not at leas the initial entry can be + stored in the user buffer. + + * localedata/Makefile: Add rules to clean up directories created by + new strfmon tests. + +2000-04-09 Geoff Clare + + * localedata/tst-fmon.data: Added new tests for strfmon() + using test locales with all combinations of cs_precedes, + sign_posn and sep_by_space. + * localedata/tst-fmon.sh: Updated to support the new tests. + * localedata/tst-fmon-locales/tstfmon_n01y12: New file containing + the localedef source for the new strfmon() test locale. + * localedata/tst-fmon-locales/tstfmon_n02n40: Likewise. + * localedata/tst-fmon-locales/tstfmon_n10y31: Likewise. + * localedata/tst-fmon-locales/tstfmon_n11y41: Likewise. + * localedata/tst-fmon-locales/tstfmon_n12y11: Likewise. + * localedata/tst-fmon-locales/tstfmon_n20n32: Likewise. + * localedata/tst-fmon-locales/tstfmon_n30y20: Likewise. + * localedata/tst-fmon-locales/tstfmon_n41n00: Likewise. + * localedata/tst-fmon-locales/tstfmon_y01y10: Likewise. + * localedata/tst-fmon-locales/tstfmon_y02n22: Likewise. + * localedata/tst-fmon-locales/tstfmon_y22n42: Likewise. + * localedata/tst-fmon-locales/tstfmon_y30y21: Likewise. + * localedata/tst-fmon-locales/tstfmon_y32n31: Likewise. + * localedata/tst-fmon-locales/tstfmon_y40y00: Likewise. + * localedata/tst-fmon-locales/tstfmon_y42n21: Likewise. + + * stdlib/strfmon.c: Correct problems with missing or extra + spaces for unusual combinations of sign_posn and sep_by_space. + Improved left-precision alignment code. + +2000-04-07 Andreas Jaeger + + * posix/Makefile (CFLAGS-regex.c): Remove DEBUG. + +2000-04-10 Andreas Jaeger + + * intl/Makefile: Don't run do-gettext-test when cross-compiling. + +2000-04-09 Ulrich Drepper + + Implement handling of restartable conversion functions according to + ISO C. + * iconv/gconv.h (__gconv_fct): Add additional parameter. + * iconv/gconv_int.h (__BUILTIN_TRANS): Likewise. + * iconv/gconv.c: Pass additional parameter to conversion function. + * iconv/gconv_simple.c (internal_ucs4_loop_single): New function. + (internal_ucs4le_loop_single): New function. + (__gconv_transform_ascii_internal): Define ONE_DIRECTION. + (__gconv_transform_internal_ascii): Likewise. + (__gconv_transform_internal_utf8): Likewise. + (__gconv_transform_utf8_internal): Likewise. + (__gconv_transform_ucs2_internal): Likewise. + (__gconv_transform_internal_ucs2): Likewise. + (__gconv_transform_ucs2reverse_internal): Likewise. + (__gconv_transform_internal_ucs2reverse): Likewise. + (internal_ucs4le_loop_unaligned): Before return + __GCONV_INCOMPLETE_INPUT check that the remaining bytes really form + a valid character. Otherwise return __GCONV_ILLEGAL_INPUT. + (__gconv_transform_utf8_internal): Define STORE_REST and UNPACK_BYTES. + * iconv/loop.c: Fit in definition of function to convert one character + for processing of left-over bytes from the state object. + * iconv/skeleton.c (gconv): Rename inbuf to inptrp and inbufend to + inend to match names in loop functions. + (RESET_INPUT_BUFFER): Change apprpriately. + (gconv): If needed, call function to process bytes from the state + object. Similar at the end: store left over bytes if input is + incomplete. + Take extra argument and add new argument to all calls of the + conversion function. + * iconvdata/iso-2022-cn.c: Adjust numeric values used to store + information in the state object to not conflict with length count. + * iconvdata/iso-2022-jp.c: Likewise. + * iconvdata/iso-2022-kr.c: Likewise. + * iconvdata/unicode.c: Adjust for change change in parameters of + skeleton function. + * iconvdata/utf-16.c: Likewise. + * libio/iofwide.c: Add new parameter to all calls of conversion + function. + * wcsmbs/btowc.c: Likewise. + * wcsmbs/mbrtowc.c: Likewise. + * wcsmbs/mbsnrtowcs.c: Likewise. + * wcsmbs/mbsrtowcs.c: Likewise. + * wcsmbs/wcrtomb.c: Likewise. + * wcsmbs/wcsnrtombs.c: Likewise. + * wcsmbs/wcsrtombs.c: Likewise. + * wcsmbs/wctob.c: Likewise. + + * iconvdata/gbgbk.c: Always define MAX_NEEDED_OUTPUT and + MAX_NEEDED_INPUT. + +2000-04-07 Andreas Jaeger + + * sysdeps/unix/sysv/linux/mips/kernel_sigaction.h: Updated for + newer kernels. + +2000-04-07 Ulrich Drepper + + * wcsmbs/wchar.h (__mbstate_t): Rename elements. Make __value + element a union to allow byte access. + * iconvdata/iso-2022-cn.c: Adjust for change of element name in + mbstate_t. + * iconvdata/iso-2022-jp.c: Likewise. + * iconvdata/iso-2022-kr.c: Likewise. + * wcsmbs/mbsinit.c: Likewise. + * stdlib/mblen.c: Likewise. + * stdio-common/printf-parse.h: Likewise. + +2000-04-06 Ulrich Drepper + + * sysdeps/unix/sysv/linux/getdents.c (__getdents): The Linux + kernel does not allow relative seeks on descriptors associated + with directories. Go back to get the position in the directory + every time we enter the function. Return -1 and set errno if one + entry could be read from the kernel but does not fit into the + buffer passed in by the user. + + * locale/programs/charmap.c (charmap_new_char): Add parameter step. + Support ..(2).. ellipsis. + (parse_charmap): Recognize ..(2).. etc and pass step down. + Correctly generate names for UCS4 characters. + + * locale/programs/ld-ctype.c (struct translit_ignore_t): Add step. + (ctype_finish): We know the wide character value for , + don't search. + (charclass_symbolic_ellipsis): Handle ..(2).. ellipsis. + (charclass_ucs4_ellipsis): Likewise. + (read_translit_ignore_entry): Store ellipsis step. + (ctype_read): Recognize ..(2).. etc and pass step down. + + * locale/programs/linereader.c (lr_token): When seeing comment + character ignore only rest of line in sources but stop at escaped + newline. + Recognize ..(2).. and ....(2)..... + + * locale/programs/locfile-token.h (enum token_t): Add tok_ellipsis2_2 + and tok_ellipsis4_2. + +2000-04-06 Andreas Jaeger + + * sysdeps/unix/sysv/linux/alpha/Dist: init-first.h has been + removed, remove it here also. + * sysdeps/unix/sysv/linux/arm/Dist: Likewise. + * sysdeps/unix/sysv/linux/powerpc/Dist: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/Dist: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/Dist: Likewise. + +2000-04-06 Jakub Jelinek + + * sysdeps/unix/sysv/linux/sparc/sparc32/register-dump.h: Don't + include bits/sigcontext.h. + * sysdeps/unix/sysv/linux/sparc/sparc64/register-dump.h: Likewise. + +2000-04-06 Ulrich Drepper + + * locale/programs/ld-collate.c (collate_read): Handle ellipsis in + collation symbol definition. Value in quivalence definition must + be defined, don't check that it is not. + + * locale/programs/charmap.c (parse_charmap): Recognize + values as character names. + + * locale/programs/ld-ctype.c (get_character): Handle missing + repertoire map correctly. + +2000-04-05 Cristian Gafton + + * ctype/ctype.h (__isctype_l): Define even if not __OPTIMIZE__ + because it is used in generic code. + * wctype/wctrans.c: Define __ctype32_toupper and __ctype32_tolower. + * wcsmbs/wcwidth.h: Declare __ctype32_b. + * intl/gettext.c: Include . + * intl/ngettext.c: Likewise. + +2000-04-05 Jakub Jelinek + + * resolv/inet_ntop.c (inet_ntop4, inet_ntop6, inet_ntop): Use + socklen_t type for size. + * sysdeps/sparc/sparc32/dl-machine.h (RTLD_START): Rewrite for new + init function interface. + * sysdeps/sparc/sparc64/dl-machine.h (RTLD_START): Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/setjmp.h: Don't include + sys/ucontext.h. + (__jmp_buf): Declare the whole type structure here, don't use + ucontext. + +2000-04-05 Ulrich Drepper + + * iconv/skeleton.c (put16u): Fix typo. + Reported by Bruno Haible . + + * sysdeps/unix/sysv/linux/alpha/init-first.h: Not needed anymore. + * sysdeps/unix/sysv/linux/arm/init-first.h: Likewise. + * sysdeps/unix/sysv/linux/mips/init-first.h: Likewise. + * sysdeps/unix/sysv/linux/powerpc/init-first.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/init-first.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/init-first.h: Likewise. + + * sysdeps/unix/sysv/linux/Dist: Remove getresuid and getresgid. + * Makefile (distribute): Add abi-versions.awk and + firstversions.awk. + Patches by Torsten Duwe . + +2000-04-05 Andreas Schwab + + * nss/Makefile ($(objpfx)makedb): Move $(libdl) after db-open.o. + +2000-04-05 Andreas Schwab + + * sysdeps/m68k/dl-machine.h (RTLD_START): Readd _dl_start_user + entry point, used on Hurd. + +2000-04-04 Andreas Jaeger + + * intl/Makefile: Only run the gettext test with shared libraries. + +2000-03-16 Mark Kettenis + + * sysdeps/unix/sysv/linux/i386/sys/procfs.h (prfpregset_t): + Typedef for elf_fpregset_t instead of `elf_fpregset_t *'. + +2000-04-05 Roland McGrath + + * Makeconfig: Undo last change. + * configure.in: If --disable-shared was given, don't set VERSIONING, + don't define DO_VERSIONING, and don't give scare warning for no + versioning. + * configure: Regenerated. + +2000-04-04 Roland McGrath + + * Makeconfig [$(build-shared) != yes] (versioning): Set to `no'. + +2000-04-04 Andreas Jaeger + + * sysdeps/generic/fgetexcptflg.c: Use shlib-compat macros. + +2000-04-04 Ulrich Drepper + + * elf/dl-runtime.c (fixup): Correct handling of symbols marked + STV_HIDDEN and STV_INTERNAL during lookup. + (profile_fixup): Likewise. + * elf/dl-reloc.c (RESOLVE): Likewise. + + * iconv/skeleton.c (FUNCTION_NAME): Reorder initialization of + unaligned so that it compiles for system which need unaligned + access handling. + +2000-04-04 Andreas Schwab + + * elf/cache.c (print_entry): Only look at the type field when + printing the type. + +2000-04-04 Andreas Schwab + + * iconvdata/big5.c (BODY): Fix typo. + +2000-04-04 Andreas Schwab + + * sysdeps/m68k/dl-machine.h (RTLD_START): Rewrite for new init + function interface. Remove unused _dl_start_user entry point. + +2000-04-03 Andreas Jaeger + + * include/arpa/inet.h (__inet_aton): Add protoype. + +2000-04-01 Andreas Jaeger + + * sysdeps/mach/hurd/mips/init-first.c: Use SHARED instead of PIC. + + * sysdeps/unix/mips/sysdep.h: Use __PIC__ instead of PIC. + * sysdeps/mach/mips/thread_state.h: Likewise. + + * sysdeps/generic/fclrexcpt.c: Use shlib-compat macros. + * sysdeps/generic/fegetenv.c: Likewise. + * sysdeps/generic/fesetenv.c: Likewise. + * sysdeps/generic/feupdateenv.c: Likewise. + * sysdeps/generic/fraiseexcpt.c: Likewise. + * sysdeps/generic/fsetexcptflg.c: Likewise. + * sysdeps/unix/sysv/linux/alpha/glob.c: Likewise. + * sysdeps/unix/sysv/linux/arm/errlist.c: Likewise. + * sysdeps/unix/sysv/linux/errlist.c: Likewise. + * sysdeps/unix/sysv/linux/i386/chown.c: Likewise. + +2000-04-02 H.J. Lu + + * elf/ldconfig.h (FLAG_IA64_LIB64): New. Defined. + +2000-04-03 Ulrich Drepper + + * elf/dl-load.c (_dl_dst_substitute): Pretty print comment. + (add_name_to_object): Add cast in malloc call. + (fillin_rpath): Optimize loop to initialize ->status a bit. + + * sysdeps/i386/dl-machine.h: Undo last change. + * sysdeps/mach/hurd/i386/dl-machine.h (RTLD_START_SPECIAL_INIT): + Restore %edx register after call here. + + * sysdeps/arm/atomicity.h: New file. + Contributed by Jesper Skov . + +2000-04-03 Roland McGrath + + * Makeconfig (preprocess-versions): Undo last change. + Instead, pass -I$(common-objdir) -I$(..)include instead of $(CPPFLAGS). + + * sysdeps/mach/hurd/i386/init-first.c (init): Don't set __environ + here, before we might move the stack. + (posixland_init): Set __libc_argc, __libc_argc, and __environ here. + (init1): And not here. + + * sysdeps/i386/dl-machine.h (RTLD_START): Fix code broken by last + change, to restore argc value in call-clobbered register after + RTLD_START_SPECIAL_INIT, which will contain a call. + + * elf/dl-deps.c (_dl_map_object_deps): Fix size calculations for + allocating and initializing L->l_initfini. + + * resolv/Makefile (headers): Add bits/netdb.h, so it gets installed. + +2000-04-03 Ulrich Drepper + + * elf/dl-load.c (_dl_init_paths): Use (void*) -1 to signal non-existing + RUNPATH, RPATH, and LD_LIBRARY_PATH. + (open_path): Change type of fourth parameter. Make pointer to array + of pointers. Create variable dirs with original type. + Track whether any directory for the object exists and if not, + change *DIRSP to (void*) -1 to signal there is no such search path. + (_dl_map_object): Change all calls of open_path. + Rewrite decompose_rpath calls. + +2000-03-31 Andreas Schwab + + * string/strfry.c: Declare STATE as array of char instead of int + and do not initialize it (done by initstate_r). Pass correct + size. + +2000-04-03 Ulrich Drepper + + * sysdeps/generic/ldsodefs.h: Fix typo in comment. + + * sysdeps/i386/dl-machine.h (RTLD_START): Squeeze one more + instruction out of the code. + +2000-04-02 Ulrich Drepper + + * elf/dl-fini.c (_dl_fini): Increment j counter after swapping in + element at this position. + + * elf/Versions [ld.so] (GLIBC_2.2): Export _dl_load_lock. + * elf/link.h (struct link_map): Add l_reldepsmax, l_reldepsact, and + l_reldeps elements. + * elf/dl-lookup.c (add_dependency): New function. + (_dl_lookup_symbol): Use it whenever symbol was found in a global, + dynamically loaded object. + (_dl_lookup_symbol_skip): Likewise. + (_dl_lookup_versioned_symbol): Likewise. + (_dl_lookup_versioned_symbol_skip): Likewise. + * elf/dl-open.c: Don't define _dl_load_lock here... + * elf/rtld.c: ...but here... + * elf/dl-support.c: ...and here. + * elf/dl-close.c (_dl_close): Close also dependent objects introduce + through relocation. + * elf/dl-fini.c (_dl_fini): Also take dependencies introduced through + relocations. + * dlfcn/Makefile (glrefmain.out): Test is not expected to fail + anymore. + * dlfcn/glrefmain.c: Add one more debug message. + + * Makeconfig (preprocess-versions): Don't add $(CPPFLAGS) to compiler + command line. + * Makerules (sysd-versions): Use ( ) instead of { }. + + * elf/dl-load.c: Use __builtin_expect to signal that compiler should + optimize for the non-debugging case. + * elf/dl-lookup.c: Likewise. + * sysdeps/generic/libc-start.c: Likewise. + +2000-04-02 Roland McGrath + + * sysdeps/mach/hurd/i386/init-first.c: Replace PIC #ifdefs with SHARED. + (init1): Don't initialize __environ here, since init already does it. + (first_init): New function, broken out of _init. + (_hurd_stack_setup): Use it. + [SHARED] (_dl_init_first): New function, renamed from old _init. + (init1) [SHARED]: Don't call posixland_init here. + (posixland_init): Take ENVP arg, so signature is usual for initializer. + [SHARED] (_init): Define as alias for posixland_init. + [! SHARED] (__libc_first_init): Define as alias for posixland_init. + * sysdeps/i386/dl-machine.h (RTLD_START): Insert the macro + RTLD_START_SPECIAL_INIT before calling initializers. + (RTLD_START_SPECIAL_INIT): Define to empty if undefined. + * sysdeps/mach/hurd/i386/dl-machine.h: New file. + * sysdeps/mach/hurd/dl-sysdep.c (_dl_init_first): New weak function. + * elf/Versions ({libc,ld.so}: GLIBC_2.2): Add _dl_init_first. + + * stdio-common/tmpfile.c [! USE_IN_LIBIO]: No alias needed, + since we define the function with the name `tmpfile'. + + * mach/Versions: Define SHARED instead of PIC to affect shlib-compat.h. + * hurd/Versions: Likewise. + +2000-04-02 Ulrich Drepper + + * elf/dl-runtime.c (fixup): Fix typo in comment. + + * resolv/netdb.h (getnameinfo): All length parameters are of type + socklen_t. + * inet/getnameinfo.c: Likewise. + +2000-04-01 Ulrich Drepper + + * posix/unistd.h (socklen_t): Define if it has not yet happened. + (gethostname): Change type of second parameter to socklen_t. + * include/unistd.h (__gethostname): Change type of second + parameter to socklen_t. + * sysdeps/generic/gethostname.c (__gethostname): Likewise. + * sysdeps/mach/hurd/gethostname.c (__gethostname): Likewise. + * sysdeps/unix/sysv/gethostname.c (__gethostname): Likewise. + * sysdeps/unix/sysv/sysv4/solaris2/gethostname.c (__gethostname): + Likewise. + * sysdeps/unix/sysv/linux/gethostname.c: Removed. + * sysdeps/generic/bits/socket.h: Use __socklen_t to define socklen_t. + Allow definition elsewhere. + * sysdeps/unix/sysv/aix/bits/socket.h: Likewise. + * sysdeps/unix/sysv/linux/bits/socket.h: Likewise. + * sysdeps/unix/sysv/linux/mips/bits/socket.h: Likewise. + * sysdeps/generic/bits/types.h: Define __socklen_t. + * sysdeps/unix/sysv/aix/bits/types.h: Likewise. + * sysdeps/unix/sysv/hpux/bits/types.h: Likewise. + * sysdeps/unix/sysv/linux/alpha/bits/types.h: Likewise. + * sysdeps/unix/sysv/linux/bits/types.h: Likewise. + * sysdeps/unix/sysv/linux/mips/bits/types.h: Likewise. + * sysdeps/unix/sysv/linux/sparc/bits/types.h: Likewise. + * sysdeps/unix/sysv/sysv4/solaris2/bits/types.h: Likewise. + + * inet/arpa/inet.h (inet_addr): Change return type to in_addr_t. + (inet_lnaof): Likewise. + (inet_netof): Likewise. + (inet_network): Likewise. + (inet_aton): Likewise. + (inet_makeaddr): Change parameter types to in_addr_t. + (inet_neta): Likewise. + (inet_ntop): Change type of last parameter to socklen_t. + (inet_aton): Only make available if __USE_MISC. + (inet_neta): Likewise. + (inet_net_ntop): Likewise. + (inet_net_pton): Likewise. + (inet_nsap_ntoa): Likewise. + + * inet/in.h: Define in_port_t type. + Define in_addr_t type. + (struct in_addr): Use in_addr_t in definition. + (IN_CLASSA): Use cast to in_addr_t. + (IN_CLASSB): Likewise. + (IN_CLASSC): Likewise. + (IN_CLASSD): Likewise. + (IN_EXPERIMENTAL): Likewise. + (IN_BADCLASS): Likewise. + (INADDR_ANY): Likewise. + (INADDR_BROADCAST): Likewise. + (INADDR_NONE): Likewise. + (INADDR_LOOPBACK): Likewise. + (INADDR_UNSPEC_GROUP): Likewise. + (INADDR_ALLHOSTS_GROUP): Likewise. + (INADDR_ALLRTRS_GROUP): Likewise. + (INADDR_MAX_LOCAL_GROUP): Likewise. + (struct sockaddr_in): Use in_port_t for sin_port element. + (struct sockaddr_in6): Use in_port_t for sin6_port element. + Use uint8_t instead of u_int8_t. + + * resolv/inet_addr.c (inet_addr): Change return type to in_addr_t. + Call __inet_aton instead of inet_aton. + (__inet_aton): Renamed from inet_aton. Add weak alias under old name. + + * resolv/netdb.h (gethostbyname2): Define only is __USE_MISC. + (innetgr): Likewise. + (struct addrinfo): Use socklen_t for ai_addrlen element. + + * sysdeps/unix/sysv/linux/bits/in.h (IPV6_MTU_DISCOVER, IPV6_MTU, + IPV6_RECVERR): New defines. + + * include/netdb.h: Change type of first parameter of __getnetbyaddr_r. + * inet/getnetbyad.c: Likewise. + * inet/getnetbyad_r.c: Likewise. + * nis/nss_nis/nis-network.c: Likewise. + * nis/nssplus_nis/nisplus-network.c: Likewise. + * nss/nss_files/files-network.c: Likewise. + * resolv/netdb.h: Define uint32_t if not already happened. + Include bits/netdb.h. Remove definition of struct netent. + Change type of first parameter of getnetbyaddr_r and getnetbyaddr. + * sysdeps/generic/stdint.h: Allow definition of uint32_t elsewhere. + * sysdeps/generic/bits/netdb.h: New file. + * sysdeps/unix/sysv/linux/alpha/bits/netdb.h: New file. + + * dlfcn/Makefile (distribute): Add glreflib1.c and glreflib2.c. + (tests): Add glrefmain. + Add rules to build modules and run tests. Ignore result of glrefmain + for now since it fails. + * dlfcn/glrefmain.c: New file. + * dlfcn/glreflib1.c: New file. + * dlfcn/glreflib2.c: New file. + + * test-skeleton.c: Include for strsignal prototype. + + * locale/programs/ld-collate.c (check_duplicate): Allow repertoire + to be missing. + + * sysdeps/unix/sysv/linux/init-first.c (init): Add code from + former init-first.h. Initialize __libc_multiple_libcs. + +2000-03-31 Ulrich Drepper + + * iconv/skeleton.c: Define access macros with u suffix. Adjust + #if expression for use of unaligned function to the one used in + the definition of these functions. + * iconv/loop.c: Undefined `unaligned' before recursive inclusion. + * iconv/gconv_simple.c (internal_ucs4_loop_unaligned): New function. + (internal_ucs4le_loop_unaligned): New function. + + * elf/Makefile (distribute): Add dep1.c, dep2.c, dep3.c, and dep4.c. + (tests): Add order. + (module-names): Add dep1, dep2, dep3, and dep4. + Add dependencies for dep* modules and order. + Define rule for order.out which checks the result. + * elf/dep1.c: New file. + * elf/dep2.c: New file. + * elf/dep3.c: New file. + * elf/dep4.c: New file. + * elf/order.c: New file. + + * elf/dl-init.c: Fix typo in comment. + +2000-03-31 Andreas Jaeger + + * sysdeps/mips/dl-machine.h (RTLD_START): Rewritten to match new + init function interface. + * sysdeps/mips/mips64/dl-machine.h (RTLD_START): Likewise. + +2000-03-31 Andreas Jaeger + + * sysdeps/mips/fpu/fgetexcptflg.c: Fix last patch to use #if. + * sysdeps/mips/fpu/fegetenv.c: Likewise. + * sysdeps/mips/fpu/feupdateenv.c: Likewise. + * sysdeps/mips/fpu/fclrexcpt.c: Likewise. + * sysdeps/mips/fpu/fesetenv.c: Likewise. + + * sysdeps/generic/ldsodefs.h: DT_INIT_ARRAY is not relocated + anymore, update comment. + + * sysdeps/unix/sysv/linux/shmctl.c: Likewise. + + * sysdeps/unix/sysv/linux/semctl.c (struct __old_semid_ds): Remove + SHLIB_COMPAT - the struct is always needed. + +2000-03-31 Ulrich Drepper + + * sysdeps/i386/dl-machine.h (RTLD_START): Optimize for i686. + * elf/dl-support.c: Define _dl_starting_up. + +2000-03-30 Ulrich Drepper + + * elf/dl-init.c (_dl_init): Clear _dl_starting_up at end of function. + * sysdeps/i386/dl-machine.h: Remove code to clear _dl_starting_up. + + * misc/sys/cdefs.h: Don't allow gcc in traditional mode to be used. + + * elf/Makefile (dl-routines): Remove preinit. + * elf/Versions: Remove _dl_preinit. + * elf/dl-preinit.c: Removed. Move content into... + * elf/dl-init.c: ...here. + * sysdeps/i386/dl-machine.h (RTLD_START): Remove call to _dl_preinit. + + * sysdeps/generic/bits/shm.h (struct shmid_ds): Correct names of + elements. + +2000-03-29 Geoff Clare + + * stdlib/strfmon.c: Corrected problems with the code that + sets default values for [np]_sep_by_space and + [np]_sign_posn; also the new positive/negative alignment + code from the previous patch was not quite right for + [np]_sign_posn = 0. + + * localedata/tst-fmon.data: Changes corresponding to the + two sets of fixes made to stdlib/strfmon.c. + +2000-03-29 Jes Sorensen + + * malloc/malloc.c: Declare bit flags UL so that they will not + default to int size when being inverted. + +2000-03-29 Andreas Jaeger + + * sysdeps/unix/sysv/linux/arm/errlist.c: Use shlib-compat macros. + * sysdeps/unix/sysv/linux/arm/siglist.c: Likewise. + +2000-03-29 Andreas Jaeger , + Ralf Baechle + + * Makeconfig: Introduce new variable SHARED to mark code used in + the shared library. + * elf/dl-close.c: Use it instead of PIC. + * elf/dl-load.c: Likewise. + * elf/dl-open.c: Likewise. + * hurd/geteuids.c: Likewise. + * include/libc-symbols.h: Likewise. + * include/shlib-compat.h: Likewise. + * libio/freopen.c: Likewise. + * linuxthreads/cancel.c: Likewise. + * linuxthreads/pthread.c: Likewise. + * linuxthreads/wrapsyscall.c: Likewise. + * nss/nsswitch.c: Likewise. + * stdio-common/vfprintf.c: Likewise. + * sysdeps/arm/init-first.c: Likewise. + * sysdeps/i386/init-first.c: Likewise + * sysdeps/generic/init-first.c: Likewise. + * sysdeps/generic/libc-start.c: Likewise. + * sysdeps/mips/init-first.c: Likewise. + * sysdeps/powerpc/elf/libc-start.c: Likewise. + * sysdeps/unix/sysv/linux/init-first.c: Likewise. + * sysdeps/unix/sysv/linux/arm/siglist.c: Likewise. + * sysdeps/unix/sysv/linux/arm/errlist.c: Likewise. + * sysdeps/unix/sysv/linux/i386/chown.c: Likewise. + + * sysdeps/mips/machine-gmon.h (asm): Use __PIC__ as check. + +2000-03-29 Andreas Jaeger + + * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_runtime_setup): + Use D_PTR to access relocated entries in l_info. + (elf_machine_rela): Likewise. + + * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_runtime_setup): + Likewise. + (elf_machine_rela): Likewise. + + * sysdeps/powerpc/dl-machine.c (__elf_machine_runtime_setup): + Likewise. + (__elf_machine_fixup_plt): Likewise. + (__process_machine_rela): Likewise. + + * sysdeps/m68k/dl-machine.h (elf_machine_runtime_setup): Likewise. + (elf_machine_rela): Likewise. + + * sysdeps/arm/dl-machine.h (elf_machine_runtime_setup): Likewise. + (elf_machine_rel): Likewise. + + * sysdeps/alpha/dl-machine.h (elf_machine_runtime_setup): Likewise. + (elf_machine_fixup_plt): Likewise. + (elf_machine_rela): Likewise. + +2000-03-29 Andreas Jaeger + + * sysdeps/unix/sysv/linux/msgctl.c: Use shlib-compat macros. + * sysdeps/unix/sysv/linux/semctl.c: Likewise. + * sysdeps/unix/sysv/linux/shmctl.c: Likewise. + * sysdeps/unix/sysv/linux/i386/getrlimit.c: Likewise. + * sysdeps/unix/sysv/linux/i386/getrlimit64.c: Likewise. + * sysdeps/unix/sysv/linux/i386/msgctl.c: Likewise. + * sysdeps/unix/sysv/linux/i386/oldgetrlimit64.c: Likewise. + * sysdeps/unix/sysv/linux/i386/semctl.c: Likewise. + * sysdeps/unix/sysv/linux/i386/setrlimit.c: Likewise. + * sysdeps/unix/sysv/linux/i386/shmctl.c: Likewise. + * sysdeps/unix/sysv/linux/alpha/msgctl.c: Likewise. + * sysdeps/unix/sysv/linux/alpha/semctl.c: Likewise. + * sysdeps/unix/sysv/linux/alpha/shmctl.c: Likewise. + * sysdeps/unix/sysv/linux/alpha/adjtime.c: Likewise. + * sysdeps/unix/sysv/linux/powerpc/chown.c: Likewise. + + * sysdeps/unix/sysv/linux/alpha/oldglob.c: Use shlib-compat + macros, remove K&R prototypes. + +2000-03-30 Ulrich Drepper + + * posix/getopt.c (_getopt_internal): Return -1 if argc < 1. + Reported by Andrew Wiseman + (PR libc/1677). + +2000-03-30 Andreas Jaeger + + * misc/sys/cdefs.h: Remove K&R support. + +2000-03-30 Ulrich Drepper + + * iconv/skeleton.c: Avoid compiling unaligned versions in some + more cases. + * iconv/loop.c: Likewise. + +2000-03-29 Bruno Haible + + * iconv/loop.c (put16): Remove __const. Fix access index. + (put32): Remove __const. Use uint32_t instead of uint16_t. + * iconv/skeleton.c: Likewise. + +2000-03-30 Roland McGrath + + * mach/Versions (libc: GLIBC_2.0) + [SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)]: Conditionalize + __vm_allocate on this. + [SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)]: Conditionalize + mutex- and spinlock-related symbols on this. + [!SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)] (libc: HURD_CTHREADS_0.3): + New version set. Lock-related symbols go here instead in this case. + * sysdeps/mach/hurd/Versions (libc: GLIBC_2.0): Remove + _cthread_exit_routine, _cthread_init_routine, cthread_keycreate, + cthread_getspecific, cthread_setspecific, __libc_getspecific. + * hurd/Versions + [SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)] (libc: GLIBC_2.0): + Put them here instead. + [!SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)] (libc: HURD_CTHREADS_0.3): + New version set. Those cthreads symbols go here instead in this case. + * Versions.def (libc) [USE_IN_LIBIO]: Add HURD_CTHREADS_0.3 version. + +2000-03-30 Ulrich Drepper + + * elf/dl-init.c (_dl_init): We don't need to call constructors + recursively. Fold _dl_init_rec in _dl_init and optimize a bit more. + + Implement dynamic determination of constructor/destructor order in + the dynamic linker. + * elf/Versions [ld.so] (GLIBC_2.0): Remove _dl_init_next. + (GLIBC_2.2): Add _dl_init. + * elf/dl-close.c: Also call all destructors in FINI_ARRAY. + r_duplist is not anymore allocated separately. l_initfini is and + therefore free it if necessary. + * elf/dl-deps.c: If a searchlist has to be allocated, put all in one + malloc block. Otherwise allocate l_initfini list only. + Put dependencies for the object in l_initfini list. + Sort dependencies for the object to be loaded topologically. + * elf/dl-fini.c: Before running the destructors sort the topologically. + * elf/dl-init.c (_dl_init): Renamed from _dl_init_next. Rewrite to + call constructors instead of iterating over the pointers. Get list of + objects for which to run constructors from l_initfini element. Accept + argc, argv, and env as parameters and pass them to the constructors. + * elf/ld-load.c (_dl_map_object_from_fd): Initialize l_ldnum member + with size of dynamic section. + * elf/dl-open.c (dl_open_worker): Only call _dl_init instead of + _dl_init_next and calling constructors ourself. + * elf/dl-preinit.c (_dl_preinit): Renamed from _dl_preinit_next. + Take argc, argv, and env as parameters and pass them to the + constructors. Rewrite to call all constructors and not iterate over + the pointers. + * elf/dynamic-link.h: Don't relocate DT_FINI_ARRAY entry. Don't + precompute l_initcount and l_preinitcount. + * elf/link.h (struct link_map): Add l_ldnum member. + Make l_phdr_allocated part of the bitfield. Remove l_runcount, + l_initcount, and l_preinitcount. Add l_initfini. + * sysdeps/generic/ldsodefs.h: Replace _dl_init_next prototype with + one for _dl_init. + * sysdeps/i386/dl-machine (RTLD_START): Rewrite to match new init + function interface. + * sysdeps/unix/sysv/linux/init-first.h: Removed. + * sysdeps/unix/sysv/linux/Dist: Delete file here as well. + * sysdeps/unix/sysv/linux/init-first.c [PIC]: Don't use + SYSDEP_CALL_INIT. Make _init a strong alias of init. The calling + conventions now match. + + * sysdeps/generic/libc-start.c: Calling __libc_init_first has no + effect for shared objects. Don't emit message and call only for + static library. + +2000-03-29 Ulrich Drepper + + * iconvdata/testdata/CSA_Z243.4-1985-1..UCS-2BE: Renamed from + CSA_Z243.4-1985-1..UCS2. + * iconvdata/testdata/ISO-8859-10..UCS-2BE: Renamed from + ISO-8859-10..UCS2. + +2000-03-29 Andreas Jaeger + + * include/unistd.h: Remove duplicate entry for __rmdir. + Remove declaration of __mkdir since __mkdir is declared in + sys/stat.h. + + * manual/creature.texi (Feature Test Macros): Fix typo, reported + by Michael Deutschmann . + + * sysdeps/mips/fpu/fclrexcpt.c: Use shlib-compat macros. + * sysdeps/mips/fpu/fegetenv.c: Likewise. + * sysdeps/mips/fpu/fesetenv.c: Likewise. + * sysdeps/mips/fpu/feupdateenv.c: Likewise. + * sysdeps/mips/fpu/fgetexcptflg.c: Likewise. + +2000-03-28 Andreas Jaeger + + * sysdeps/i386/fpu/bits/mathinline.h (__sincos): Remove redundant + declaration, the prototype is defined via bits/mathcalls.h. + (__sincosf): Likewise. + (__sincosl): Likewise. + (ldexp): Likewise. + (ldexpf): Likewise. + (ldexpl): Likewise. + (__finite): Likewise. + (__inline_mathcodeNP): New macro without prototype + declarations. + (__inline_mathcodeNP2): Likewise. + (__inline_mathcodeNP3): Likewise. + (__inline_mathcodeNP_): Likewise. + (__inline_mathcodeNP2_): Likewise. + (__inline_mathcodeNP3_): Likewise. + (__inline_mathopNP): Likewise. + (__inline_mathop_declNP): Likewise. + (__inline_mathop_declNP_): Likewise. + (__inline_mathcode_): Use __inline_mathcodeNP_. + (__inline_mathcode2_): Use __inline_mathcodeNP2_. + (__inline_mathcode3_): Use __inline_mathcodeNP3_. + (__inline_mathop_decl_): Use __inline_mathop_declNP__. + (__expm1l): Don't define prototype, the prototype is defined via + bits/mathcalls.h. + (exp): Likewise. + (__expl): Likewise. + (tan): Likewise. + (atan2): Likewise. + (__atan2l): Likewise. + (fmod): Likewise. + (pow): Likewise. + (fabsf): Likewise. + (fabsl): Likewise. + (__fabsl): Likewise. + (asin): Likewise. + (acos): Likewise. + (sinh): Likewise. + (cosh): Likewise. + (tanh): Likewise. + (floor): Likewise. + (ceil): Likewise. + (expm1): Likewise. + (log1p): Likewise. + (asinh): Likewise. + (acosh): Likewise. + (atanh): Likewise. + (hypot): Likewise. + (logb): Likewise. + (fma): Likewise. + (drem): Likewise. + (sqrt): Likewise. + (__sqrtl): Likewise. + (sin): Likewise. + (cos): Likewise. + (atan): Likewise. + (log): Likewise. + (log10): Likewise. + (asinh): Likewise. + (log2): Likewise. + (rint): Likewise. + +2000-03-28 Ulrich Drepper + + * Makerules: If make variable md5 is defined to yes after + generating dependencies generate MD5 sum for the object. + + * iconv/gconv_builtin.h: Fix length in transformation definition + for UNICODEBIG. + + * iconvdata/TESTS: Use UCS-2BE instead of UCS2. + + * iconv/loop.c: Define get16, get32, put16, and put32 macros to + allow as well reading from/writing to unaligned addresses on machines + which don't support this in hardware. Use FCTNAME macro to define + function name. Include the file a second time for platforms which + need special unaligned handling. + * iconv/skeleton.c: Define get16u, get32u, put16u, and put32u macros + to access potentially unaligned addresses. These macros are intended + to be used only outside the loops. + (unaligned): New definition. In case the machine can handle unaligned + access define as zero. Otherwise as a variable which is initialized + as nonzero in case the buffer passed in at runtime is unaligned with + respect to the character set encoding involved. + Call aligned or unaligned looop functions according to unaligned + variable. + * iconvdata/8bit-gap.c: Use get16, get32, put16, and put32 instead + of direct casting pointer to potentially handle unaligned memory + accesses. + * iconvdata/8bit-generic.c: Likewise. + * iconvdata/ansi_x3.110.c: Likewise. + * iconvdata/big5.c: Likewise. + * iconvdata/euc-cn.c: Likewise. + * iconvdata/euc-jp.c: Likewise. + * iconvdata/euc-kr.c: Likewise. + * iconvdata/euc-tw.c: Likewise. + * iconvdata/gbk.c: Likewise. + * iconvdata/iso-2022-cn.c: Likewise. + * iconvdata/iso-2022-jp.c: Likewise. + * iconvdata/iso-2022-kr.c: Likewise. + * iconvdata/iso646.c: Likewise. + * iconvdata/iso_6937-2.c: Likewise. + * iconvdata/iso_6937.c: Likewise. + * iconvdata/johab.c: Likewise. + * iconvdata/sjis.c: Likewise. + * iconvdata/t.61.c: Likewise. + * iconvdata/uhc.c: Likewise. + * iconvdata/unicode.c: Likewise. + * iconvdata/utf-16.c: Likewise. + + * locale/programs/simple-hash.c: Little optimizations. Remove K&R + prototypes. + + * malloc/Versions [libc] (GLIBC_2.2): Add mcheck_check_all. + * malloc/mcheck.c (mcheck_check_all): Renamed from check_all and made + public. + * malloc/mcheck.h (mcheck_check_all): Declare. + + * stdio-common/Makefile (tests): Add tst-obprintf. + +2000-03-28 Roland McGrath + + * sysdeps/generic/bits/sigthread.h: Clean up conditionals. + Declare pthread_sigmask. + + * csu/version.c: Add 2000 to copyright years. + Remove Emacs local variables section. + +2000-03-23 Bruno Haible + + * iconv/gconv_int.h (__gconv_transform_ucs2little_internal, + __gconv_transform_internal_ucs2little): Remove declarations. + * iconv/gconv_simple.c (__gconv_transform_ucs2_internal, + __gconv_transform_internal_ucs2): Never need to bswap_16. + (__gconv_transform_ucs2reverse_internal, + __gconv_transform_internal_ucs2reverse): Always need to bswap_16. + +2000-03-27 Roland McGrath + + * include/shlib-compat.h (SHLIB_COMPAT): Make the test handle the + obsoleting version not being defined at all, in which case the + result is always true. + + * Makeconfig (preprocess-versions): New canned sequence for running + cpp on shlib-versions and the like. + (soversions.i): Use it. + * Makerules (Versions.all, sysd-versions): Use it to preprocess the + Versions.def and Versions files. + +2000-03-27 Ulrich Drepper + + * stdio-common/tst-obprintf.c (main): Add another check to see + obstack_printf handling all possible beginnings of the block + inside an obstack chunk. + + * locale/programs/localedef.c: Use __malloc_initialize_hook to + install mcheck handler. + + * libio/obprintf.c (_IO_obstack_vprintf): Fix one more memory + handling problem. + +2000-03-27 Roland McGrath + + * stdio-common/tmpfile.c: Use macros. + + * include/shlib-compat.h: Conditionalize include + on [HAVE_ELF && DO_VERSIONING]. + +2000-03-27 Ulrich Drepper + + * stdio-common/tst-obprintf.c: New file. + +2000-03-26 Ulrich Drepper + + * libio/genops.c (_IO_default_xsputn): Little optimization. Call + _IO_OVERFLOW directly instead through __overflow. + + * locale/programs/localedef.c (construct_output_path): If path + contains a / compute the end of the directory name correctly. + + * include/features.h: Undef and document __USE_XOPEN2K. + + * malloc/mcheck.c: Implement pedantic checking of all allocated blocks + whenever a function is called. Initiated by calling mcheck_pedantic + instead of mcheck. + * malloc/mcheck.h: Declare mcheck_pedantic. + * malloc/Versions [libc] (GLIBC_2.2): Add mcheck_pedantic. + * locale/programs/localdef.c: Use mcheck_pedantic instead of mcheck + for now. + +2000-03-26 Roland McGrath + + * dlfcn/dlopen.c: Use macros. + * dlfcn/dlopenold.c: Likewise. + * nss/getXXbyYY_r.c: Likewise. + * nss/getXXent_r.c: Likewise. + * hurd/hurdinit.c: Likewise. + * hurd/compat-20.c: Likewise. + * libio/oldiofopen.c: Likewise. + * libio/oldiofclose.c: Likewise. + * libio/oldiofdopen.c: Likewise. + * libio/oldfileops.c: Likewise. + * libio/oldstdfiles.c: Likewise. + * libio/oldiofsetpos.c: Likewise. + * libio/oldiofgetpos.c: Likewise. + * libio/oldiofgetpos64.c: Likewise. + * libio/oldiofsetpos64.c: Likewise. + * libio/oldiopopen.c: Likewise. + * libio/oldpclose.c: Likewise. + * libio/oldtmpfile.c: Likewise. + * libio/freopen.c (freopen): Likewise. + * libio/iofclose.c (_IO_new_fclose): Likewise. + + * sysdeps/mach/sys/reboot.h: Include . + (reboot): Declare it. + + * libio/Makefile (headers): Add bits/stdio-lock.h here. + + * sysdeps/mach/hurd/bits/stdio-lock.h: New file. + + * include/shlib-compat.h: Include unconditionally. + + * posix/unistd.h (intptr_t): Conditionalize on [__USE_MISC || + __USE_XOPEN_EXTENDED] rather than on [__USE_UNIX98]. + We need this for the sbrk decl, which can be included without Unix98. + +2000-03-20 Richard Henderson + + * nis/nss_nis/nis-service.c (_nss_nis_getservbyport_r): Last + argument to yperr2nss is an int, not size_t. + * posix/regex.c (print_partial_compiled_pattern): Cast all + ptrdiff_t to long for printing. + (print_compiled_pattern): Use Z for printing size_t. + * posix/testfnm.c (tests): Avoid trigraphs. + * sysdeps/alpha/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE): + Use a C comment, not an assembly comment. + + * sysdeps/unix/sysv/linux/alpha/msgctl.c: Clarify use + of __ASSUME_32BITUIDS. + +2000-03-26 Ulrich Drepper + + * libio/iofopncook.c: Remove K&R prototypes. + +2000-03-26 Roland McGrath + + * hurd/hurdrlimit.c (init_rlimit): Give the RLIMIT_NOFILE soft limit + an initial value of 1024 instead of RLIM_INFINITY. + + * Versions.def (libmachuser, libhurduser): Remove these sections, + since these libraries do not presently use symbol versions. + + * sysdeps/mach/hurd/getdtsz.c (__getdtablesize): If the resource limit + is RLIM_INFINITY, return -1 instead. + +2000-03-24 Andreas Jaeger + + * Makefile (postclean): Added soversions.i. + +2000-03-24 Scott Bambrough + + * sysdeps/arm/fpu/fpu_control.h: Define _FPU_MASK_IM, _FPU_MASK_ZM, + _FPU_MASK_OM, _FPU_MASK_UM, _FPU_MASK_PM, _FPU_MASK_DM, _FPU_DEFAULT, + and _FPU_IEEE. Change _FPU_RESERVED. + +2000-03-24 Scott Bambrough + + * sysdeps/unix/sysv/linux/arm/sys/ucontext.h: New file. + +2000-03-24 Roland McGrath + + * sysdeps/posix/getaddrinfo.c: Include for if_nametoindex. + (gaih_inet): Remove unused duplicate variable. + + * inet/getnameinfo.c (getnameinfo): Use IFNAMSIZ, not MAXHOSTNAMELEN. + Don't use __libc_sa_len, which only exists for Linux. Just handle + AF_INET and AF_INET6 directly as well as AF_LOCAL, since those are the + only flavors supported by this function anyway. + +2000-03-24 Geoff Clare + + * stdlib/strfmon.c: Corrected problems with missing signs and + missing or extra spaces; allow for sign strings longer than + one character; add padding to ensure positive and negative + formats are aligned when a left precision is used. + +2000-03-26 Ulrich Drepper + + * stdlib/random_r.c (__setstate_r): Allow RNGs of type 4. + Patch by John Mizel . + +2000-03-25 Ulrich Drepper + + * manual/install.texi: Remove references to crypt add-on. + +2000-03-25 Roland McGrath + + * sysdeps/mach/hurd/setrlimit.c (setrlimit): Go into a critical + section while taking the _hurd_rlimit_lock. + * sysdeps/mach/hurd/getrlimit.c (__getrlimit): Likewise. + +2000-03-24 Roland McGrath + + * Makerules [$(cross-compiling) = yes] (symbolic-link-prog): Define + using $(LN_S). + + * sysdeps/mach/hurd/if_index.c: New file. + + * sysdeps/unix/sysv/linux/net/if.h: Moved to ... + * sysdeps/gnu/net/if.h: here. + (_IOT_ifconf, _IOT_ifreq): Hurd ioctl type macros moved from ... + * sysdeps/mach/hurd/net/if.h: ... here; this file now removed. + * sysdeps/generic/net/if.h: New file. Declares just the standard + functions and `struct if_nameindex' type. + * socket/Makefile (headers): Add net/if.h here. + * sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Not here. + * sysdeps/mach/hurd/Dist: Remove it here. + * sysdeps/unix/sysv/linux/Dist: And here. + * sysdeps/generic/if_index.c: Include . + +2000-03-24 Andreas Jaeger + + * sysdeps/mips/dl-machine.h (__dl_runtime_resolve): Use D_PTR to + access relocated entries in l_info. + (elf_machine_got_rel): Likewise. + (elf_machine_runtime_setup): Likewise. + * sysdeps/mips/mips64/dl-machine.h (elf_machine_got_rel): Likewise. + (elf_machine_runtime_setup): Likewise. + (__dl_runtime_resolve): Likewise. + +2000-03-23 Ulrich Drepper + + * resolv/netdb.h (SCOPE_DELIMITER): New definitions. + * inet/netinet/in.h (struct sockaddr_in6): Add sin6_scope_id + according to RFC 2553. + * sysdeps/posix/getaddrinfo.c: Change to follow latest RFC draft. + * inet/getnameinfo.c: Likewise. + Patches by YOSHIFUJI Hideaki . + +2000-03-23 Bruno Haible + + * iconv/gconv_simple.c (internal_ucs4_loop, internal_ucs4le_loop): + Remove no-op pointer increment. + +2000-03-23 Andreas Jaeger + + * stdio-common/tst-cookie.c (cookieseek): Change prototype to + follow change for libio.h from 2000-03-10. + +2000-03-23 Andreas Jaeger + + * elf/dl-addr.c: Adjust include paths for ldsodefs location + change. + * elf/dl-debug.c: Likewise. + * elf/dl-deps.c: Likewise. + * elf/dl-error.c: Likewise. + * elf/dl-fini.c: Likewise. + * elf/dl-init.c: Likewise. + * elf/dl-load.c: Likewise. + * elf/dl-lookup.c: Likewise. + * elf/dl-minimal.c: Likewise. + * elf/dl-object.c: Likewise. + * elf/dl-open.c: Likewise. + * elf/dl-preinit.c: Likewise. + * elf/dl-profile.c: Likewise. + * elf/dl-profstub.c: Likewise. + * elf/dl-reloc.c: Likewise. + * elf/dl-runtime.c: Likewise. + * elf/dl-support.c: Likewise. + * elf/dl-symbol.c: Likewise. + * elf/dl-version.c: Likewise. + * elf/rtld.c: Likewise. + * elf/sprof.c: Likewise. + * sysdeps/generic/dl-cache.c: Likewise. + * sysdeps/generic/dl-origin.c: Likewise. + * sysdeps/generic/dl-sysdep.c: Likewise. + * sysdeps/generic/elf/backtracesyms.c: Likewise. + * sysdeps/generic/elf/backtracesymsfd.c: Likewise. + * sysdeps/generic/libc-start.c: Likewise. + * sysdeps/mach/hurd/dl-sysdep.c: Likewise. + * sysdeps/powerpc/dl-machine.c: Likewise. + * sysdeps/powerpc/elf/libc-start.c: Likewise. + * sysdeps/sparc/sparc32/dl-machine.h: Likewise. + * sysdeps/sparc/sparc64/dl-machine.h: Likewise. + * sysdeps/unix/sysv/linux/dl-origin.c: Likewise. + + * elf/ldsodefs.h: Move file to ... + * sysdeps/generic/ldsodefs.h: ... here. + + * sysdeps/generic/ldsodefs.h: Add definition for D_PTR. + + * sysdeps/mips/elf/ldsodefs.h: New file. + + * elf/dl-version.c (match_symbol): Use D_PTR to access relocated + entries in l_info. + (_dl_check_map_versions): Likewise. + * elf/dl-reloc.c (_dl_relocate_object): Likewise. + * elf/dl-load.c (_dl_init_paths): Likewise. + (_dl_map_object): Likewise. + * elf/dynamic-link.h (_ELF_DYNAMIC_DO_RELOC): Likewise. + (elf_get_dynamic_info): Likewise. + * elf/do-lookup.h (FCT): Likewise. + * elf/do-rel.h (elf_dynamic_do_rel): Likewise. + * elf/dl-deps.c (_dl_map_object_deps): Likewise. + * elf/dl-addr.c (_dl_addr): Likewise. + * elf/dl-runtime.c (profile_fixup): Likewise. + (fixup): Likewise. + * elf/dl-init.c (_dl_init_next): Likewise. + * sysdeps/generic/dl-machine.h (elf_machine_runtime_setup): Likewise. + * sysdeps/unix/sysv/linux/i386/dl-librecon.h + (DISTINGUISH_LIB_VERSIONS): Likewise. + * sysdeps/i386/dl-machine.h (elf_machine_runtime_setup): Likewise. + (elf_machine_rel): Likewise. + + * elf/dynamic-link.h (elf_get_dynamic_info): Only change l_info + for writable dynamic section. + +2000-03-22 Ulrich Drepper + + * inet/getnameinfo.c (getnameinfo): Check that addrlen value is + large enough. Patch by YOSHIFUJI Hideaki . + +2000-03-22 Andreas Jaeger + + * sysdeps/unix/sysv/linux/powerpc/bits/mman.h (MADV_*): Add flags + from latest Linux kernel. + +2000-03-21 Andreas Jaeger + + * Versions.def: Add version 2.1.4. + +2000-03-21 Ulrich Drepper + + * libio/oldtmpfile.c: Update for new SHLIB_COMPAT definition. + * libio/oldiofopen.c: Likewise. + * libio/oldiofclose.c: Likewise. + * sysdeps/unix/sysv/linux/errlist.c: Likewise. + +2000-03-22 Roland McGrath + + * include/shlib-compat.h (SHLIB_COMPAT): Take a third argument, + indicating the first version set to obsolete the conditionalized code. + (compat_symbol): New macro. + * scripts/abi-versions.awk: For subsumed versions, make ABI_* defn's + rhs be the ABI_* macro for the subsuming version. Assign increasing + integer values to the ABI_* macros for supported versions. + * sysdeps/gnu/siglist.c: Use new SHLIB_COMPAT convention, and use + compat_symbol macro. + +2000-03-21 Ulrich Drepper + + * nscd/connections.c (nscd_run): Pretty print. + * elf/dl-runtime.c: Include stdlib.h for alloca prototype. + + * manual/charset.texi: Fix typos. Rephrase. + * manual/process.texi: Likewise. + * manual/signal.texi: Likewise. + Patches by Mike Coleman . + + * libio/oldtmpfile.c: Use new macros from shlib-compat.h to define + versions. + * libio/iofdopen.c: Likewise. + * libio/iofgetpos.c: Likewise. + * libio/iofgetpos64.c: Likewise. + * libio/iofopen.c: Likewise. + * libio/iofsetpos.c: Likewise. + * libio/iofsetpos64.c: Likewise. + * libio/iopopen.c: Likewise. + * libio/oldiofopen.c: Likewise. + * libio/pclose.c: Likewise. + * sysdeps/gnu/siglist.c: Likewise. + * sysdeps/unix/sysv/linux/errlist.c: Likewise. + + * include/shlib-compat.h (versioned_symbol): Give preprocessor the + chance to expand VERSION_##lib##_##version. + + * libio/fileops.c: Use new macros from shlib-compat.h to define + versions. + * libio/iofclose.c: Likewise. + * libio/oldiofclose.c: Likewise. + Patch by Roland McGrath . + +2000-03-21 Jakub Jelinek + + * sysdeps/unix/sysv/linux/sparc/bits/sigcontext.h: Clean up namespace. + Lay out struct sigcontext according to what really gets passed on + the stack. + * sysdeps/unix/sysv/linux/sparc/sys/procfs.h: Don't include asm/elf.h. + (elf_gregset_t, elf_greg_t, elf_fpregset_t, ELF_NGREG): Define. + (prgregset_t, prfpregset_t): Define to elf_* types. + * sysdeps/unix/sysv/linux/sparc/sys/ptrace.h (PTRACE_WRITEDATA): + Define to correct value. + * sysdeps/unix/sysv/linux/sparc/sparc32/profil-counter.h: Use struct + sigcontext. + * sysdeps/unix/sysv/linux/sparc/sparc32/sigcontextinfo.h: Likewise. + +2000-03-21 Roland McGrath + + * scripts/firstversions.awk: Allow multiple version sets in the + "earliest version" specification, meaning that version sets in the + gaps between listed versions should be folded into the earliest later + version that is explicitly listed. + * shlib-versions (mips.*-.*-linux.*): Use that syntax for to say + we support GLIBC_2.0 and GLIBC_2.2 but not the intervening sets. + +2000-03-21 Ulrich Drepper + + * iconv/gconv_builtin.c: Include . + * iconv/gconv_builtin.h: Add UCS-BE aliases. + Add UCS-4LE transformation. Define UNICODEBIG and UNICODELITTLE + according to current platform. + * iconv/gconv_int.h: Declare __gconv_transform_ucs2reverse_internal, + __gconv_transform_internal_ucs2reverse, and + __gconv_transform_internal_ucs4le. + * iconv/gconv_simple.c: Implement __gconv_transform_internal_ucs4le, + __gconv_transform_ucs2reverse_internal and + __gconv_transform_internal_ucs2reverse. + * iconvdata/Makefile (modules): Add UNICODE. + (distribute): Add unicode.c. + * iconvdata/gconv-modules: Add definitions for UNICODE module. + * iconvdata/unicode.c: New file. + + * iconvdata/utf-16.c: Rewrite code to emit BOM. Correct code to + determine byte order of input and convert accordingly. + + * iconvdata/utf-16.c (gconv_init): Fix typo. + +2000-03-20 Ulrich Drepper + + * iconvdata/gconv-modules: Fix typo. + + * sysdeps/unix/sysv/linux/configure.in: Remove `crypt' from one + more messages. + + * sysdeps/unix/sysv/aix/*: Add initial code for port to AIX 4.3. + +2000-03-16 Thorsten Kukuk + + * sysdeps/unix/sysv/linux/sparc/bits/sigcontext.h: New. + +2000-03-20 Ulrich Drepper + + * misc/Makefile (routines): Add mincore. + +2000-03-20 Andreas Jaeger + + * sysdeps/generic/mincore.c: New stub file. + + * sysdeps/unix/sysv/linux/arm/bits/mman.h (MADV_*): Add flags + from latest Linux kernel. + +2000-03-20 Ulrich Drepper + + * grp/initgroups.c (compat_call): Use _SC_GETGR_R_SIZE_MAX instead of + _SC_GETPW_R_SIZE_MAX. + +2000-03-20 Richard Henderson + + * sysdeps/unix/sysv/linux/alpha/Versions: Put pciconfig_iobase + in GLIBC_2.1.4. + +2000-03-20 Richard Henderson + + * sysdeps/alpha/fpu/fraiseexcpt.c: Use get/set_fp_control instead + of arithmetic instructions. + + * sysdeps/alpha/fpu/s_ceil.c: Use round to -inf instead of playing + with the fpcr. Protect from INV exception. + * sysdeps/alpha/fpu/s_ceilf.c: Likewise. + * sysdeps/alpha/fpu/s_floor.c: Protect from INV exception. + * sysdeps/alpha/fpu/s_floorf.c: Likewise. + + * sysdeps/alpha/fpu/s_copysign.c: New. + * sysdeps/alpha/fpu/s_copysignf.c: New. + * sysdeps/alpha/fpu/s_fabs.c: New. + * sysdeps/alpha/fpu/s_fabsf.c: New. + * sysdeps/alpha/fpu/s_rint.c: New. + * sysdeps/alpha/fpu/s_rintf.c: New. + + * sysdeps/unix/sysv/linux/alpha/bits/mman.h: Add MADV constants. + + * sysdeps/unix/sysv/linux/alpha/Makefile (sysdep_routines): + Kill sethae. + * sysdeps/unix/sysv/linux/alpha/Versions: Add pciconfig_iobase. + * sysdeps/unix/sysv/linux/alpha/ioperm.c (all address constants): + Use physical addresses not KSEG addresses. + (io_system): Add PYXIS. + (io): Remove hae.reg, sys, hae_shift. + (stb_mb, stw_mb, stl_mb, __sethae): New. + (inline_outb, inline_outw, inline_outl): Don't set hae. + (inline_inb, inline_inw, inline_inl): Likewise. + (dense_sethae): New null function. + (struct cpuinfo_data): New. + (process_cpuinfo): Use local and stack variables, not static. + Move readlink check here from init_iosys. + (init_iosys): Use __pciconfig_iobase first. Know SX and LX as PYXIS. + (_iopl): Simplify. + (_hae_shift): Calculate it here. + * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove sethae, + add pciconfig_iobase. + +2000-03-20 Roland McGrath + + * locale/programs/ld-time.c (time_finish): Use %Z instead of %z. + * locale/programs/ld-ctype.c (ctype_finish, ctype_class_new): Likewise. + + * scripts/versions.awk: Fixed version renaming code to distinguish + libraries properly. + +2000-03-19 Ulrich Drepper + + * include/stdlib.h: Add prototype for __cxa_atexit. + + * sysdeps/unix/sysv/linux/i386/sys/debugreg.h: Update comment about + _SLOWDOWN flags. Patch by Jim Blandy . + +2000-03-17 Cristian Gafton + + * elf/Makefile ($(rtld-version-installed-name)): Delay replacing + existing rtld-installed-name. + ($(rtld-installed-name)): Request libc-$(version) be installed too. + replace existing rtld-installed-name using $(symbolic-link-prog). + +2000-03-17 Roland McGrath + + * locale/programs/ld-collate.c (collate_read): Remove bogus cast. + (insert_value, handle_ellipsis, collate_read): Replace %zu in format + strings with %Zu, because gcc-2.95.2's -Wformat knows about the latter + but not the former. + +2000-03-19 Ulrich Drepper + + * sysdeps/generic/glob.c [_LIBC]: Always use __xstat64, not only for + glob64. Since there is no glob64 in the LFS proposal applications + can assume that glob handles LFS situations. glob64 is only needed + if alternative filesystem functions are used. + +2000-03-19 Geoff Clare + + * sysdeps/generic/glob.c: Correct gl_pathc value returned + when GLOB_DOOFFS is set; correct handling of patterns + containing escaped wildcards (and no unescaped ones); + GLOB_ERR flag was being ignored in some situations. + + * posix/globtest.c, posix/globtest.sh: Updated to include + tests for the problems fixed by the above changes to glob.c. + + * manual/pattern.texi (Calling Glob): Update description of gl_pathc. + +2000-03-19 Roland McGrath + + * Makeconfig (soversion.i): Use only first match for each lib. + + * Makeconfig (soversion.i): Pass -undef to $(CC) -E. + + * Makerules (Versions.all, sysd-versions): Test $(sysd-sorted-done) + rather than $(sysd-dirs-done) to protect these rules. + + * Makerules (version-renames.def): Target removed. + (Versions.all): Depend on soversions.i directly and parse it. + + * Makeconfig (soversions.i): New target, input-reading parts of + soversions.mk generation moved here; result is a canonicalized + list "LIB VERSION [SET]" for this configuration. + (soversions.mk): Use that as input. Don't emit map-firstversions. + * Makerules (version-renames.def): New target, generated from + soversions.i with contents that was in $(map-firstversions). + (Versions.all): Don't depend on soversions.mk, depend on + version-renames.def instead; just cat it into the input. + + * Makerules (Versions.all): Use $(foreach ...) instead of sh for loop + for $(map-firstversions), which better handles it being empty. + + * shlib-versions [USE_IN_LIBIO] (.*-.*-gnu-gnu*): Set earliest + supported version for libc 0.2.90.libio to GLIBC_2.2. + + * Makeconfig (soversions.mk): Grok new third column in shlib-versions, + and use it to emit new variable `map-firstversions'. + * scripts/firstversions.awk: New file. + * Makerules (Versions.all): Use scripts/firstversions.awk and + the $(map-firstversions) value to generate a modified versions list + that includes renames in "A = B" syntax for each version set earlier + than the "earliest symbol version" named in shlib-versions. + * scripts/versions.awk: Recognize "A = B" lines in the input to mean + rename version set A to B in the output to the intermediate file. + * scripts/abi-versions.awk: New file. + * Makerules (abi-versions.h): New target, generated by that script. + [$(versioning) = yes] (before-compile): Prepend abi-versions.h. + * include/shlib-compat.h: New file, uses that generated header. + +2000-03-18 Roland McGrath + + * Makeconfig (soversions.mk): Convert % -> # in shlib-versions + after stripping # comments, and then run it through cpp. + This allows things like "%ifdef FOO" based on config.h settings. + * shlib-versions [USE_IN_LIBIO] (.*-.*-gnu-gnu*): libc=0.2.90.libio + + * hurd/intr-msg.c (_hurd_intr_rpc_mach_msg): For MACH_SEND_INTERRUPTED + and other errors that indicate a pseudo-receive happened, grok through + the message buffer for port rights that need references fixed up. + +2000-03-16 Andreas Jaeger + + * sysdeps/unix/sysv/linux/syscalls.list: Added madvise and mincore. + + * sysdeps/unix/sysv/linux/madvise.c: Remove. + + * sysdeps/unix/sysv/linux/sparc/bits/mman.h (MADV_*): Add flags + from latest Linux kernel. + * sysdeps/unix/sysv/linux/i386/bits/mman.h (MADV_*): Likewise. + + * misc/sys/mman.h: Add prototype for mincore. + +2000-03-17 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/syscalls.list: Add oldsetrlimit + entry for GLIBC_2.0 version of setrlimit. + Patch by Shinya Hanataka . + +2000-03-16 Thorsten Kukuk + + * nis/nss_nis/nis-ethers.c: Return with error if malloc fails. + * nis/nss_compat/compat-initgroups.c: Likewise. + * nis/nss_nis/nis-initgroups.c: Likewise. + * nis/nss_nis/nis-netgrp.c: Likewise. + * nis/nss_nis/nis-proto.c: Likewise. + * nis/nss_nis/nis-rpc.c: Likewise. + * nis/nss_nis/nis-service.c: Likewise. + * nis/ypclnt.c: Likewise. + +2000-03-16 Andreas Jaeger + + * manual/Makefile: MAKEINFO is set to `:' from configure if it + doesn't exist, correct checks. Fixes PR libc/1649. + +2000-03-16 Thorsten Kukuk + + * nscd/hstcache.c: Restore correct UID. + * nscd/pwdcache.c: Likewise. + Patch from Gabor Gombas . + +2000-03-17 Roland McGrath + + * sysdeps/i386/sys/ucontext.h: Prepend REG_ to enum values and + macros for register names, in line with 2000-03-14 linux change. + + * sysdeps/mach/sched_yield.c: New file. + +2000-03-13 Roland McGrath + + * sysdeps/generic/lockfile.c: Include + (_IO_flockfile, _IO_funlockfile, _IO_ftrylockfile): #undef these in + case defined them. + (__flockfile, __funlockfile, __ftrylockfile): Functions renamed + from __internal_*. + (flockfile, _IO_flockfile, funlockfile, _IO_funlockfile, + ftrylockfile, _IO_ftrylockfile): Fix aliases accordingly. + + * sysdeps/generic/bits/stdio-lock.h (_IO_lock_initializer): Use ... + for more pleasing parse error. + +2000-03-16 Ulrich Drepper + + * locale/lc-time.c (_nl_init_era_entries): Correct allocation of + memory for eras. + Patch by Shinya Hanataka . + + * elf/Makefile: Add rules to compile and run constload1 test. + * elf/constload1.c: New file. + * elf/constload2.c: New file. + * elf/constload3.c: New file. + +2000-03-15 Ulrich Drepper + + * sysdeps/posix/open64.c: Make __open64 weak alias. + * sysdeps/posix/pread64.c: Make __pread64 weak alias. + * sysdeps/unix/sysv/linux/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/i386/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/powerpc/pread64.c: Likewise. + * sysdeps/posix/pwrite64.c: Make __pwrite64 weak alias. + * sysdeps/unix/sysv/linux/pwrite64.c: Likewise. + * sysdeps/unix/sysv/linux/i386/pwrite64.c: Likewise. + * sysdeps/unix/sysv/linux/mips/pwrite64.c: Likewise. + * sysdeps/unix/sysv/linux/powerpc/pwrite64.c: Likewise. + +2000-03-14 Ulrich Drepper + + * sysdeps/unix/sysv/linux/alpha/ioperm.c (platform): Add entry for + Nautilus. Patch by Soohoon Lee . + +2000-03-16 Mark Kettenis + + * sysdeps/unix/sysv/linux/i386/sys/procfs.h (prfpregset_t): + Typedef for elf_fpregset_t instead of `elf_fpregset_t *'. + +2000-03-08 Andreas Jaeger + + * sysdeps/unix/sysv/linux/scsi/sg.h: Sync with Linux 2.3.50. + +2000-03-14 Ulrich Drepper + + * timezone/africa: Update from tzdata2000d. + * timezone/asia: Likewise. + * timezone/australasia: Likewise. + * timezone/europe: Likewise. + * timezone/northamerica: Likewise. + * timezone/southamerica: Likewise. + + * po/fr.po: Update from translation team. + * po/de.po: Likewise. + + * elf/dl-deps.c (_dl_map_object_deps): Change return type and remove + last parameter. Move code to add map to global scope from here... + * elf/dl-open.c (dl_open_worker): ...here. + * elf/ldsodefs.h: Adjust declaration of _dl_map_object_deps. + * elf/rtld.c: Adjust call to _dl_map_object_deps. + + * locale/programs/ld-collate.c (collate_read): Fix warning. + + * sysdeps/unix/sysv/linux/i386/sys/ucontext.h: Prepend REG_ to enum + values and macros for register names. + + * libio/iofopncook.c (_IO_cookie_seek): Return error only if value + returned by seek cookie function is -1. + +2000-03-14 Andreas Jaeger + + * locale/localeconv.c (localeconv): Fix typo. + Reported by Andre Charbonneau . + +2000-03-14 Ulrich Drepper + + * iconv/skeleton.c: Increment __invocation_counter in inner loop + since modules depend on it counting the number of times the conversion + function got called. + + * iconv/gconv_open.c: Optimize loop to setup step data structure. + + * iconv/gconv.h: Pretty print. + +2000-03-04 Ulrich Drepper + + * posix/wordexp-test.c: Correct one of the tests added in the last + change. Really get the root passwd entry to check again ~root. + +2000-03-10 Andreas Jaeger + + * manual/filesys.texi (Working Directory): Fix last patch. + Patch by Martin Buchholz . + +2000-03-10 Andreas Jaeger + + * manual/creature.texi (Feature Test Macros): Fix language. + +2000-03-10 Roland McGrath + + * mach/devstream.c (devstream_write, devstream_read): New functions. + (input, output): Functions removed. + (mach_open_devstream): Use devstream_{read,write} as cookie functions, + using only the vanilla fopencookie interface. + + * hurd/fopenport.c [! USE_IN_LIBIO] (cookie_io_functions_t): Define + as macro for __io_functions. + (funcsio): Use cookie_io_functions_t type name. + (fopenport): Renamed from __fopenport. Rewrite to call fopencookie. + + * libio/iofopncook.c (_IO_cookie_init): New function, broken out of + fopencookie. + (fopencookie): Use it. + * libio/libio.h: Declare _IO_cookie_init. + * hurd/vpprintf.c (vpprintf) [USE_IN_LIBIO]: Implement using + _IO_cookie_init. + + * libio/libio.h (__io_seek_fn): Fix second argument type + to be a pointer, in line with the manual and the old stdio. + * libio/iofopncook.c (_IO_cookie_seek): Fix (sole) caller. + + * sysdeps/generic/bits/stdio-lock.h: New file. + This is a stub with #error, but that's better than no file at all. + +2000-03-09 Martin Buchholz + + * sysdeps/unix/sysv/linux/alpha/syscall.S: Doc Fixes. + * manual/message.texi (Using gettextized software): Doc Fixes. + * manual/message.texi (Message Translation): Doc Fixes. + * manual/filesys.texi (File Size): Doc Fixes. + * manual/charset.texi (glibc iconv Implementation): Doc Fixes. + * locale/programs/ld-collate.c (collate_output): Doc Fixes. + * iconv/gconv_db.c (find_derivation): Doc Fixes. + * manual/install.texi: Doc Fixes. + * manual/search.texi (Hash Search Function): Doc Fixes. + * manual/stdio.texi (Output Conversion Syntax): Doc Fixes. + * FAQ.in: Doc Fixes. + * config.h.in: Doc Fixes. + * sysdeps/generic/dl-sysdep.c: Doc Fixes. + Doc Fixes. `allows to' is not correct English. + + * elf/rtld.c: Doc fixes. + * manual/creature.texi (Feature Test Macros): Doc fixes. + * manual/memory.texi (Hooks for Malloc): Doc Fixes. + + * manual/filesys.texi (Working Directory): Check for ERANGE to + avoid infloop. + +2000-02-23 Roland McGrath + + * string/argz-stringify.c (__argz_stringify): Fix loop termination + conditions so as not to clobber the final '\0' when there is only one + element in the vector. + +2000-03-09 Roland McGrath + + * io/sys/stat.h: Fix inverted sense of `defined __S_IFSOCK' test, + broken by 2000-02-27 change. + + * sysdeps/generic/bits/poll.h (POLLRDNORM, POLLRDBAND): New macros. + +2000-02-23 Roland McGrath + + * sysdeps/mach/hurd/sigstack.c (sigstack): Remove `const' from + argument type, for 2000-02-22 change in signal/signal.h declaration. + +2000-03-09 Roland McGrath + + * sysdeps/generic/getdents64.c (__getdirentries64): Renamed + to getdirentries64 (no __), since the Linux implementation + has no __ name, and there is no declaration for the __ name. + + * sysdeps/mach/bits/libc-lock.h (__libc_cleanup_end): New macro. + + * sysdeps/mach/hurd/Makefile ($(common-objpfx)errnos.d): Tighten up + sed regexp so as not to break directory names including /../ within. + + * sysdeps/unix/bsd/bits/waitflags.h: File removed. + The sysdeps/generic file is right for BSD. This file was in fact the + Hurd file, but the only difference was the WNOREAP flag that was never + actually implemented or used anywhere. + + * configure.in (PERL, INSTALL_INFO): Don't AC_SUBST these, + since AC_PATH_PROG already does it for us. + (PERL): Rewrite check added in 2000-02-29 change for syntactic + correctness and sh portability. I replaced the broken check + with a more sensible implementation of the apparently intended + semantics, which might still be questionable. Using expr causes + a non-numeric value for `perl -V:apiversion` to be accepted, + refusing to use only a perl that reports a number less than 5; + on my system, perl (5.004_04) -V:apiversion produces UNKNOWN. + * configure: Regenerated. + +2000-03-08 Andreas Jaeger + + * manual/crypt.texi: Fix paths. + +2000-03-07 Andreas Jaeger + + * resolv/netdb.h: The descriptions of rresvport and rresvport_af + were swapped. + Patch by YOSHIFUJI Hideaki , closes PR + libc/1636. + +2000-03-06 Andreas Jaeger + + * sysdeps/i386/fpu/bits/mathinline.h: Fix union definition error + in __sgn1l, otherwise g++ fails to parse this. + Reported by Sean Chen . + +2000-03-03 Geoff Keating + + * configure.in: Compute sizeof-long-double. + * configure: Regenerated. + * config.make.in: Make sizeof-long-double available to sub-makes. + +2000-03-03 Ulrich Drepper + + * sysdeps/unix/sysv/linux/init-first.c: Remove trace of personality + call. + +2000-03-03 Geoff Keating + + * Makeconfig (rpath-dirs): Add crypt. + (all-subdirs): Remove md5crypt. + * crypt/sysdeps/unix/crypt.c: Move to crypt/. + * crypt/sysdeps/unix/crypt-entry.c: Move to crypt/. + * sysdeps/generic/crypt-entry.c: Delete. + * crypt/sysdeps/unix/crypt.h: Move to crypt/. + * sysdeps/generic/crypt.h: Delete. + * crypt/sysdeps/unix/crypt-private.h: Move to crypt/. + * crypt/sysdeps/unix/crypt_util.c: Move to crypt/. + * crypt/sysdeps/unix/des_impl.c: Move to sunrpc/. + * sysdeps/generic/des_impl.c: Delete. + * crypt/sysdeps/unix/ufc-crypt.h: Move to crypt/. + * crypt/sysdeps: Delete. + * crypt/crypt_util.c: Don't use `patchlevel.h'. + * md5-crypt/Versions: Move to crypt/. + * md5-crypt/md5-crypt.c: Move to crypt/. + * md5-crypt/md5.c: Move to crypt/. + * md5-crypt/md5c-test.c: Move to crypt/. + * md5-crypt/md5test.c: Move to crypt/. + * md5-crypt: Delete. + * crypt/Makefile: Adjust for new structure. + +2000-03-03 Paul Eggert + + * posix/regex.c (MB_LEN_MAX): Include to define; + define to 1 if not defined. + +2000-03-03 Andreas Jaeger + + * sunrpc/xdr.c (xdr_hyper): Correctly handle lower half of llp. + +2000-03-03 Andreas Jaeger + + * sunrpc/xdr_intXX_t.c (xdr_uint16_t): Fix ENCODE and DECODE + cases. + (xdr_int64_t): Correctly handle lower half. + Fix by Sten Dahlgren , closes PR libc/1623. + +2000-03-03 Ulrich Drepper + + * sysdeps/unix/sysv/linux/init-first.c: Remove trace of personality + call. + +2000-03-02 Andreas Jaeger + + * sysdeps/unix/sysv/linux/scsi/sg.h: Integrate changes from Linux + 2.3.43. + +2000-03-02 Andreas Jaeger + + * resolv/Makefile (headers): Add arpa/nameser_compat.h. + +2000-03-01 Andreas Jaeger + + * time/Makefile (tst-getdate-ENV): New flag to pass DATEMSK. + (tests): Added tst-getdate. + + * time/tst-getdate.c: New file. + + * time/datemsk: New file, needed for tst-getdate. + +2000-02-29 Cristian Gafton + + * configure.in (CCVERSION): Require at least veersion 5 of perl API. + +2000-02-17 H.J. Lu + + * sunrpc/rpc/svc.h (SVCXPRT): Add a "xp_pad" field at the end. + + * sunrpc/svc_udp.c (svcudp_bufcreate): Turn on IP_PKTINFO if + available. + (svcudp_recv): Set up message with the new "xp_pad" field for + IP_PKTINFO. + (svcudp_reply): Support IP_PKTINFO if available. + +2000-03-01 Andreas Jaeger + + * time/getdate.c (check_mday): Fix check for february. + Reported by ane@np.bs1.fc.nec.co.jp and Akira YOSHIYAMA + , closes PR libc/1617 and PR libc/1619. + +2000-03-02 Andreas Jaeger + + * posix/unistd.h: __THROW has to precede __attribute__, otherwise + g++ fails to parse this. + Reported by Sean Chen . + +2000-02-28 Ulrich Drepper + + * io/creat.c: Moved to... + * sysdeps/generic/creat.c: ...here. + * io/creat64.c: Moved to... + * sysdeps/generic/creat64.c: ...here. + * io/lockf.c: Moved to... + * sysdeps/generic/lockf.c: ...here. + + * crypt/crypt.texi: Moved to... + * manual/crypt.texi: ...here. + * crypt/examples/genpass.c: Moved to... + * manual/examples/genpass.c: ...here. + * crypt/examples/mygenpass.c: Moved to... + * manual/examples/mygenpass.c: ...here. + * crypt/examples/testpass.c: Moved to... + * manual/examples/testpass.c: ...here. + + * manual/Makefile (chapters): Add crypt. + * manual/conf.texi: Add usual header for not-last chapter. + * manual/crypt.texi: Add special header for last chapter. + +2000-02-28 Geoff Keating + + * Makeconfig (all-subdirs): Add 'crypt' subdirectory. + * sysdeps/unix/sysv/linux/configure.in (inhibit_glue): Don't + complain if there is no crypt add-on. + * crypt/configure: Removed. + + * crypt/crypt.texi: Update documentation of US export restrictions + to match the 14 Jan 2000 regulations. + +2000-02-28 Geoff Keating + + * crypt: New subdirectory, merged in from the crypt add-on. + +2000-02-28 Ulrich Drepper + + * include/unistd.h: Add __rmdir and __mkdir prototypes. + + +See ChangeLog.10 for earlier changes. diff -adurpN glibc-2.2/FAQ glibc-2.2.1/FAQ --- glibc-2.2/FAQ Thu Nov 9 16:21:47 2000 +++ glibc-2.2.1/FAQ Sat Jan 13 11:22:06 2001 @@ -182,6 +182,7 @@ please let me know. 4.7. Why do so many programs using math functions fail on my AlphaStation? 4.8. The conversion table for character set XX does not match with what I expect. +4.9. How can I find out which version of glibc I am using in the moment? ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ @@ -236,22 +237,9 @@ a local mirror first. You should always try to use the latest official release. Older versions may not have all the features GNU libc requires. The current releases of -egcs (1.0.3 and 1.1.1) should work with the GNU C library (for powerpc see +gcc (2.95 or newer) should work with the GNU C library (for powerpc see question 1.5; for ARM see question 1.6; for MIPS see question 1.20). -While the GNU CC should be able to compile glibc it is nevertheless adviced -to use EGCS. Comparing the sizes of glibc on Intel compiled with a recent -EGCS and gcc 2.8.1 shows this: - - text data bss dec hex filename - egcs-2.93.10 862897 15944 12824 891665 d9b11 libc.so - gcc-2.8.1 959965 16468 12152 988585 f15a9 libc.so - -Make up your own decision. - -GNU CC versions 2.95 and above are derived from egcs, and they may do even -better. - Please note that gcc 2.95 and 2.95.x cannot compile glibc on Alpha due to problems in the complex float support. @@ -328,19 +316,19 @@ Binutils 2.9.1.0.16 or later is also req * lots of disk space (~400MB for i?86-linux; more for RISC platforms). * plenty of time. Compiling just the shared and static libraries for - i?86-linux takes approximately 1h on an AMD-K6@225MHz w/ 96MB of RAM, - 45mins on a Celeron@400MHz w/ 128MB, and 55mins on a Alpha@533MHz w/ 256MB. - Multiply this by 1.5 or 2.0 if you build profiling and/or the highly - optimized version as well. For Hurd systems times are much higher. + 35mins on a 2xPIII@550Mhz w/ 512MB RAM. On a 2xUltraSPARC-II@360Mhz + w/ 1GB RAM it takes about 14 minutes. Multiply this by 1.5 or 2.0 + if you build profiling and/or the highly optimized version as well. + For Hurd systems times are much higher. You should avoid compiling in a NFS mounted filesystem. This is very slow. - James Troup reports a compile time of - 45h34m for a full build (shared, static, and profiled) on Atari - Falcon (Motorola 68030 @ 16 Mhz, 14 Mb memory) and Jan Barte - reports 22h48m on Atari TT030 - (Motorola 68030 @ 32 Mhz, 34 Mb memory) + James Troup reports a compile time for + an earlier (and smaller!) version of glibc of 45h34m for a full build + (shared, static, and profiled) on Atari Falcon (Motorola 68030 @ 16 Mhz, + 14 Mb memory) and Jan Barte reports + 22h48m on Atari TT030 (Motorola 68030 @ 32 Mhz, 34 Mb memory) A full build of the PowerPC library took 1h on a PowerPC 750@400Mhz w/ 64MB of RAM, and about 9h on a 601@60Mhz w/ 72Mb. @@ -373,11 +361,7 @@ to the root of the 2.2 tree and do `make 1.9. The compiler hangs while building iconvdata modules. What's wrong? -{ZW} This is a problem with old versions of GCC. Initialization of large -static arrays is very slow. The compiler will eventually finish; give it -time. - -The problem is fixed in egcs 1.1. +{} Removed. Does not apply anymore. 1.10. When I run `nm -u libc.so' on the produced library I still @@ -843,8 +827,7 @@ you got with your distribution. glibc 2.x? {AJ} There's only correct support for glibc 2.0.x in gcc 2.7.2.3 or later. -But you should get at least gcc 2.8.1 or egcs 1.1 (or later versions) -instead. +But you should get at least gcc 2.95.2.1 (or later versions) instead. 2.10. The `gencat' utility cannot process the catalog sources which @@ -1229,7 +1212,7 @@ be needed after upgrading: If it has been in use, it should be switched off. - Programs using IPv6 have to be recompiled due to incompatible changes in sockaddr_in6 by the IPv6 working group. -- The Berkeley db libraries have been removed (for details see ??nssdb). +- The Berkeley db libraries have been removed (for details see question 2.31). - The format of the locale files has changed, all locales should be regenerated with localedef. All statically linked applications which use i18n should be recompiled, otherwise they'll not be localized. @@ -1262,10 +1245,9 @@ http://clisp.cons.org/~haible/gccinclude 2.35. When recompiling GCC, I get compilation errors in libio. -{BH} You are trying to recompile gcc 2.95.2? After upgrading to glibc 2.2, -you need to apply a patch to the gcc sources, because the fpos_t type and -a few libio internals have changed in glibc 2.2. T he patch is at -http://clisp.cons.org/~haible/gcc-glibc-2.2-compat.diff +{BH} You are trying to recompile gcc 2.95.2? Use gcc 2.95.2.1 instead. +This version is needed because the fpos_t type and a few libio internals +have changed in glibc 2.2, and gcc 2.95.2.1 contains a corresponding patch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @@ -1830,6 +1812,30 @@ Before doing this look through the list characters. Since the iconv() implementation can do whatever it wants if it cannot directly map a character this is a perfectly good solution since the semantics and appearance of the character does not change. + + +4.9. How can I find out which version of glibc I am using in the moment? + +{UD} If you want to find out about the version from the command line simply +run the libc binary. This is probably not possible on all platforms but +where it is simply locate the libc DSO and start it as an application. On +Linux like + + /lib/libc.so.6 + +This will produce all the information you need. + +What always will work is to use the API glibc provides. Compile and run the +following little program to get the version information: + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +#include +#include +int main (void) { puts (gnu_get_libc_version ()); return 0; } +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This interface can also obviously be used to perform tests at runtime if +this should be necessary. ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ diff -adurpN glibc-2.2/FAQ.in glibc-2.2.1/FAQ.in --- glibc-2.2/FAQ.in Wed Nov 8 14:10:15 2000 +++ glibc-2.2.1/FAQ.in Sat Jan 13 10:48:47 2001 @@ -63,22 +63,9 @@ a local mirror first. You should always try to use the latest official release. Older versions may not have all the features GNU libc requires. The current releases of -egcs (1.0.3 and 1.1.1) should work with the GNU C library (for powerpc see +gcc (2.95 or newer) should work with the GNU C library (for powerpc see ?powerpc; for ARM see ?arm; for MIPS see ?mips). -While the GNU CC should be able to compile glibc it is nevertheless adviced -to use EGCS. Comparing the sizes of glibc on Intel compiled with a recent -EGCS and gcc 2.8.1 shows this: - - text data bss dec hex filename - egcs-2.93.10 862897 15944 12824 891665 d9b11 libc.so - gcc-2.8.1 959965 16468 12152 988585 f15a9 libc.so - -Make up your own decision. - -GNU CC versions 2.95 and above are derived from egcs, and they may do even -better. - Please note that gcc 2.95 and 2.95.x cannot compile glibc on Alpha due to problems in the complex float support. @@ -193,11 +180,7 @@ to the root of the 2.2 tree and do `make ?? The compiler hangs while building iconvdata modules. What's wrong? -{ZW} This is a problem with old versions of GCC. Initialization of large -static arrays is very slow. The compiler will eventually finish; give it -time. - -The problem is fixed in egcs 1.1. +{} Removed. Does not apply anymore. ?? When I run `nm -u libc.so' on the produced library I still find unresolved symbols. Can this be ok? @@ -643,8 +626,7 @@ you got with your distribution. glibc 2.x? {AJ} There's only correct support for glibc 2.0.x in gcc 2.7.2.3 or later. -But you should get at least gcc 2.8.1 or egcs 1.1 (or later versions) -instead. +But you should get at least gcc 2.95.2.1 (or later versions) instead. ?? The `gencat' utility cannot process the catalog sources which were used on my Linux libc5 based system. Why? @@ -1008,7 +990,7 @@ be needed after upgrading: If it has been in use, it should be switched off. - Programs using IPv6 have to be recompiled due to incompatible changes in sockaddr_in6 by the IPv6 working group. -- The Berkeley db libraries have been removed (for details see ??nssdb). +- The Berkeley db libraries have been removed (for details see ?nssdb). - The format of the locale files has changed, all locales should be regenerated with localedef. All statically linked applications which use i18n should be recompiled, otherwise they'll not be localized. @@ -1038,10 +1020,9 @@ http://clisp.cons.org/~haible/gccinclude ?? When recompiling GCC, I get compilation errors in libio. -{BH} You are trying to recompile gcc 2.95.2? After upgrading to glibc 2.2, -you need to apply a patch to the gcc sources, because the fpos_t type and -a few libio internals have changed in glibc 2.2. T he patch is at -http://clisp.cons.org/~haible/gcc-glibc-2.2-compat.diff +{BH} You are trying to recompile gcc 2.95.2? Use gcc 2.95.2.1 instead. +This version is needed because the fpos_t type and a few libio internals +have changed in glibc 2.2, and gcc 2.95.2.1 contains a corresponding patch. ? Source and binary incompatibilities, and what to do about them @@ -1577,6 +1558,29 @@ Before doing this look through the list characters. Since the iconv() implementation can do whatever it wants if it cannot directly map a character this is a perfectly good solution since the semantics and appearance of the character does not change. + +?? How can I find out which version of glibc I am using in the moment? + +{UD} If you want to find out about the version from the command line simply +run the libc binary. This is probably not possible on all platforms but +where it is simply locate the libc DSO and start it as an application. On +Linux like + + /lib/libc.so.6 + +This will produce all the information you need. + +What always will work is to use the API glibc provides. Compile and run the +following little program to get the version information: + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +#include +#include +int main (void) { puts (gnu_get_libc_version ()); return 0; } +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This interface can also obviously be used to perform tests at runtime if +this should be necessary. Answers were given by: diff -adurpN glibc-2.2/Makeconfig glibc-2.2.1/Makeconfig --- glibc-2.2/Makeconfig Tue Oct 31 11:09:38 2000 +++ glibc-2.2.1/Makeconfig Sat Jan 6 20:35:10 2001 @@ -345,8 +345,12 @@ endif # Default flags to pass the C compiler. ifndef default_cflags +ifeq ($(release),stable) +default_cflags := -g -O2 +else default_cflags := -g -O endif +endif # Flags to pass the C compiler when assembling preprocessed assembly code # (`.S' files). On some systems the assembler doesn't understand the `#' line @@ -495,12 +499,9 @@ sysdep-library-path = \ $(subst $(empty) ,:,$(strip $(patsubst -Wl$(comma)-rpath-link=%, %,\ $(filter -Wl$(comma)-rpath-link=%,\ $(sysdep-LDFLAGS))))) -ifeq (,$(findstring $(notdir $(built-program-file)), $(tests-static))) -run-program-prefix = $(elf-objpfx)$(rtld-installed-name) \ - --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) -else -run-program-prefix = -endif +run-program-prefix = $(if $(findstring $(notdir $(built-program-file)), $(tests-static)),, \ + $(elf-objpfx)$(rtld-installed-name) \ + --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path))) else run-program-prefix = endif @@ -518,7 +519,11 @@ RANLIB = ranlib endif # Extra flags to pass to GCC. +ifeq ($(all-warnings),yes) ++gccwarn := -Wall -Wwrite-strings -Winline -Wstrict-prototypes -Wcast-qual -Wbad-function-cast -Wmissing-noreturn -Wmissing-prototypes -Wmissing-declarations -Wcomment -Wcomments -Wtrigraphs -Wsign-compare -Wfloat-equal -Wmultichar +else +gccwarn := -Wall -Wwrite-strings -Winline -Wstrict-prototypes +endif # This is the program that generates makefile # dependencies from C source files. @@ -696,11 +701,11 @@ ifeq (yes, $(build-shared)) # Commands to put in a pipeline to preprocess a file with # comments # %ifdef et al based on config.h settings or other %include'd files. define preprocess-versions -sed 's/#.*$$//;s/^[ ]*%/#/' \ +sed '/^[ ]*#/d;s/^[ ]*%/#/' \ | $(CC) -E -undef -I$(common-objdir) -I$(..)include \ -include $(common-objpfx)config.h \ - -x c - \ -| sed 's/#.*$$//;/^[ ]*$$/d' + -x assembler-with-cpp - \ +| sed '/^[ ]*#/d;/^[ ]*$$/d' endef # Process the shlib-versions file, which tells us what shared library diff -adurpN glibc-2.2/Makefile glibc-2.2.1/Makefile --- glibc-2.2/Makefile Sun Oct 8 17:04:47 2000 +++ glibc-2.2.1/Makefile Sat Jan 6 23:38:06 2001 @@ -1,4 +1,4 @@ -# Copyright (C) 1991-1999, 2000 Free Software Foundation, Inc. +# Copyright (C) 1991-1999, 2000, 2001 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 @@ -149,7 +149,7 @@ $(inst_includedir)/gnu/stubs.h: subdir_i echo ' It defines a symbol `__stub_FUNCTION'\'' for each function';\ echo ' in the C library which is a stub, meaning it will fail';\ echo ' every time called, usually setting errno to ENOSYS. */';\ - sort $(subdir-stubs)) > $(objpfx)stubs.h + LC_ALL=C sort $(subdir-stubs)) > $(objpfx)stubs.h if test -r $@ && cmp -s $(objpfx)stubs.h $@; \ then echo 'stubs.h unchanged'; \ else $(INSTALL_DATA) $(objpfx)stubs.h $@; fi @@ -259,7 +259,7 @@ distribute := README README.libm INSTAL config-name.in Makefile.in sysdep.h set-hooks.h \ libc-symbols.h version.h shlib-versions rpm/Makefile \ rpm/template rpm/rpmrc glibcbug.in abi-tags stub-tag.h \ - test-skeleton.c include/des.h \ + test-skeleton.c include/des.h include/libc-internal.h \ include/shlib-compat.h Versions.def \ INTERFACE CONFORMANCE NAMESPACE \ $(addprefix scripts/, \ diff -adurpN glibc-2.2/Makefile.in glibc-2.2.1/Makefile.in --- glibc-2.2/Makefile.in Thu Feb 26 06:51:55 1998 +++ glibc-2.2.1/Makefile.in Thu Nov 16 11:12:00 2000 @@ -1,4 +1,4 @@ -# Generated from $Id: Makefile.in,v 1.6 1998/02/26 14:51:55 drepper Exp $. +# Generated from $Id: Makefile.in,v 1.7 2000/11/15 23:03:08 drepper Exp $. srcdir = @srcdir@ @@ -11,4 +11,8 @@ srcdir = @srcdir@ # CVSOPTS = -z9 all .DEFAULT: + $(MAKE) -r PARALLELMFLAGS="$(PARALLELMFLAGS)" CVSOPTS="$(CVSOPTS)" -C $(srcdir) objdir=`pwd` $@ + +install: + LANGUAGE=C LC_ALL=C; export LANGUAGE LC_ALL; \ $(MAKE) -r PARALLELMFLAGS="$(PARALLELMFLAGS)" CVSOPTS="$(CVSOPTS)" -C $(srcdir) objdir=`pwd` $@ diff -adurpN glibc-2.2/Makerules glibc-2.2.1/Makerules --- glibc-2.2/Makerules Wed Aug 2 14:51:55 2000 +++ glibc-2.2.1/Makerules Sat Jan 6 20:35:10 2001 @@ -135,7 +135,7 @@ ifndef avoid-generated before-compile := $(common-objpfx)abi-versions.h $(before-compile) $(common-objpfx)abi-versions.h: $(..)scripts/abi-versions.awk \ $(common-objpfx)Versions.all - LC_ALL=C $(AWK) -f $^ > $@T + LC_ALL=C $(AWK) -v oldest_abi=$(oldest-abi) -f $^ > $@T mv -f $@T $@ endif # avoid-generated endif # $(versioning) = yes diff -adurpN glibc-2.2/NEWS glibc-2.2.1/NEWS --- glibc-2.2/NEWS Wed Nov 8 14:10:15 2000 +++ glibc-2.2.1/NEWS Sat Jan 13 10:48:47 2001 @@ -1,12 +1,38 @@ -GNU C Library NEWS -- history of user-visible changes. 2000-08-13 +GNU C Library NEWS -- history of user-visible changes. 2001-1-12 -Copyright (C) 1992-1999, 2000 Free Software Foundation, Inc. +Copyright (C) 1992-1999, 2000, 2001 Free Software Foundation, Inc. See the end for copying conditions. Please send GNU C library bug reports using the `glibcbug' script to . Questions and suggestions should be send to . +Version 2.2.1 + +* The gencat program now parses the input file according to the charset + selected by the LC_CTYPE category. This is important for stateful + character sets. To make generating catalogs easier there is a way + to overwrite the charset selected by the locale: before the first + message or $ quote line the catalog can contain a line like + + $ codeset=ISO-8859-2 + + to select the charset (ISO-8859-2 in this case). + + Implemented by Shinya Hanataka and Ulrich Drepper. + +* New codeset conversion modules: IBM-922 (Estonia PC codeset), + IBM-1124 (Ukraine PC codeset), IBM-1129 (Vietnamese PC codeset). + Contributed by Masahide Washizawa . + +* Optimized string functions for Alpha ev6 and ev67 by Richard Henderson + and Rick Gorton . + +* The LANGUAGE environment variable is now ignored unless the locale is + changed from the default "C" locale. + +* The usual bug fixes. + Version 2.2 * Greg McGary added runtime support for bounds checking using gcc's @@ -104,24 +130,25 @@ Recommended Tools for Compilation least the following versions of the GNU tools (the : * The Cygnus toolchain snapshot for the ia64 as of August 4 - including the provided set of patches. + including the provided set of patches. It is however recommend + you use the October 24 toolchain snapshot or a more recent version. OR alternatively you can try the following (the Cygnus toolchain is the recommended solution): * GCC and binutils, GAS and GNU LD out of CVS from - sources.redhat.com as of August 28, 2000 or later. The CVS tree + sources.redhat.com as of August 28, 2000 or later. The CVS tree may require special patches to work properly on the ia64. Configuring and compiling GNU Libc for Linux/ia64 ================================================= The library requires Linux kernel version 2.4.0-test4-000728 or -later to funtion properly. Besides that it currently does not have -support for debug and profiling libraries. Hence the following options +later to funtion properly. Besides that it support for debug libraries +is currently untested. Hence the following options are required for configuring the library: - --disable-debug --disable-profile --enable-kernel=2.4.0 + --disable-debug --enable-kernel=2.4.0 It is also important that you make sure the library picks up the appropriate kernel header files, if you do not have recent enough @@ -132,7 +159,6 @@ kernel headers in /usr/src/linux/include the library: --disable-debug - --disable-profile --disable-cvs --enable-kernel=2.4.0 --host=ia64-linux @@ -144,7 +170,7 @@ the library: Good luck Jes Sorensen , -August 28th, 2000 +November 14th, 2000 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Version 2.1.3 diff -adurpN glibc-2.2/README glibc-2.2.1/README --- glibc-2.2/README Thu Nov 9 11:36:53 2000 +++ glibc-2.2.1/README Sat Jan 6 23:01:14 2001 @@ -1,4 +1,4 @@ -This directory contains the version 2.2 release of the GNU C Library. +This directory contains the version 2.2.1 release of the GNU C Library. Many bugs have been fixed since the last release. Some bugs surely remain. diff -adurpN glibc-2.2/Rules glibc-2.2.1/Rules --- glibc-2.2/Rules Tue Oct 17 14:53:55 2000 +++ glibc-2.2.1/Rules Sat Jan 6 20:35:10 2001 @@ -74,7 +74,8 @@ endef $(common-objpfx)dummy.c: rm -f $@ - echo 'void __dummy__ (void) { }' > $@ + (echo 'extern void __dummy__ (void);'; \ + echo 'void __dummy__ (void) { }') > $@ common-generated += dummy.o dummy.c # This makes all the auxiliary and test programs. diff -adurpN glibc-2.2/Versions.def glibc-2.2.1/Versions.def --- glibc-2.2/Versions.def Fri Apr 21 12:25:18 2000 +++ glibc-2.2.1/Versions.def Sat Jan 13 10:48:47 2001 @@ -9,6 +9,7 @@ libc { GLIBC_2.1.3 GLIBC_2.1.4 GLIBC_2.2 + GLIBC_2.2.1 %ifdef USE_IN_LIBIO HURD_CTHREADS_0.3 %endif @@ -84,6 +85,8 @@ ld { GLIBC_2.0 GLIBC_2.1 GLIBC_2.1.1 + GLIBC_2.2 + GLIBC_2.2.1 } libthread_db { GLIBC_2.1.3 diff -adurpN glibc-2.2/assert/assert.h glibc-2.2.1/assert/assert.h --- glibc-2.2/assert/assert.h Thu Sep 14 12:24:07 2000 +++ glibc-2.2.1/assert/assert.h Sat Jan 13 10:48:47 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991,92,94,95,96,97,98,99,2000 Free Software Foundation, Inc. +/* Copyright (C) 1991,1992,1994-1999,2000,2001 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 @@ -24,6 +24,7 @@ # undef _ASSERT_H # undef assert +# undef __ASSERT_VOID_CAST # ifdef __USE_GNU # undef assert_perror @@ -34,6 +35,12 @@ #define _ASSERT_H 1 #include +#if defined __cplusplus && __GNUC_PREREQ (2,95) +# define __ASSERT_VOID_CAST static_cast +#else +# define __ASSERT_VOID_CAST (void) +#endif + /* void assert (int expression); If NDEBUG is defined, do nothing. @@ -41,7 +48,7 @@ #ifdef NDEBUG -# define assert(expr) ((void) 0) +# define assert(expr) (__ASSERT_VOID_CAST (0)) /* void assert_perror (int errnum); @@ -50,7 +57,7 @@ (This is a GNU extension.) */ # ifdef __USE_GNU -# define assert_perror(errnum) ((void) 0) +# define assert_perror(errnum) (__ASSERT_VOID_CAST (0)) # endif #else /* Not NDEBUG. */ @@ -77,16 +84,16 @@ extern void __assert (const char *__asse __END_DECLS -# define assert(expr) \ - ((void) ((expr) ? 0 : \ - (__assert_fail (__STRING(expr), \ - __FILE__, __LINE__, __ASSERT_FUNCTION), 0))) +# define assert(expr) \ + (__ASSERT_VOID_CAST ((expr) ? 0 : \ + (__assert_fail (__STRING(expr), __FILE__, __LINE__, \ + __ASSERT_FUNCTION), 0))) # ifdef __USE_GNU -# define assert_perror(errnum) \ - ((void) (!(errnum) ? 0 : (__assert_perror_fail ((errnum), \ - __FILE__, __LINE__, \ - __ASSERT_FUNCTION), 0))) +# define assert_perror(errnum) \ + (__ASSERT_VOID_CAST (!(errnum) ? 0 : \ + (__assert_perror_fail ((errnum), __FILE__, __LINE__, \ + __ASSERT_FUNCTION), 0))) # endif /* Version 2.4 and later of GCC define a magical variable `__PRETTY_FUNCTION__' diff -adurpN glibc-2.2/assert/test-assert-perr.c glibc-2.2.1/assert/test-assert-perr.c --- glibc-2.2/assert/test-assert-perr.c Sat Jul 4 03:18:41 1998 +++ glibc-2.2.1/assert/test-assert-perr.c Sat Jan 6 20:35:10 2001 @@ -14,7 +14,7 @@ jmp_buf rec; char buf[160]; -void +static void sigabrt (int unused) { longjmp (rec, 1); /* recover control */ @@ -22,13 +22,13 @@ sigabrt (int unused) #undef NDEBUG #include -void +static void assert1 (void) { assert_perror (1); } -void +static void assert2 (void) { assert_perror (0); @@ -36,7 +36,7 @@ assert2 (void) #define NDEBUG #include -void +static void assert3 (void) { assert_perror (2); diff -adurpN glibc-2.2/assert/test-assert.c glibc-2.2.1/assert/test-assert.c --- glibc-2.2/assert/test-assert.c Sat Jul 4 03:18:53 1998 +++ glibc-2.2.1/assert/test-assert.c Sat Jan 6 20:35:10 2001 @@ -14,7 +14,7 @@ jmp_buf rec; char buf[160]; -void +static void sigabrt (int unused) { longjmp (rec, 1); /* recover control */ @@ -22,13 +22,13 @@ sigabrt (int unused) #undef NDEBUG #include -void +static void assert1 (void) { assert (1 == 2); } -void +static void assert2 (void) { assert (1 == 1); @@ -37,7 +37,7 @@ assert2 (void) #define NDEBUG #include -void +static void assert3 (void) { assert (2 == 3); diff -adurpN glibc-2.2/catgets/Makefile glibc-2.2.1/catgets/Makefile --- glibc-2.2/catgets/Makefile Mon Sep 18 15:42:23 2000 +++ glibc-2.2.1/catgets/Makefile Sat Jan 6 20:35:10 2001 @@ -22,13 +22,15 @@ subdir := catgets headers = nl_types.h -distribute = catgetsinfo.h config.h xopen-msg.sed test1.msg +distribute = catgetsinfo.h config.h xopen-msg.sed test1.msg \ + test-gencat.sh sample.SJIS routines = catgets open_catalog others = gencat install-bin = gencat extra-objs = $(gencat-modules:=.o) tests = tst-catgets +test-srcs = test-gencat gencat-modules = xmalloc @@ -43,23 +45,34 @@ $(objpfx)gencat: $(gencat-modules:%=$(ob catgets-CPPFLAGS := -DNLSPATH='"$(msgcatdir)/%L/%N:$(msgcatdir)/%L/LC_MESSAGES/%N:$(msgcatdir)/%l/%N:$(msgcatdir)/%l/LC_MESSAGES/%N:"' \ -DHAVE_CONFIG_H -generated = de.msg test1.cat test1.h +generated = de.msg test1.cat test1.h sample.SJIS.cat generated-dirs = de tst-catgets-ENV = NLSPATH="$(objpfx)%l/%N.cat" LANG=de ifneq ($(cross-compiling),yes) -tests: $(objpfx)de/libc.cat $(objpfx)test1.cat +tests: $(objpfx)de/libc.cat $(objpfx)test1.cat $(objpfx)test-gencat.out # This test just checks whether the program produces any error or not. # The result is not tested. $(objpfx)test1.cat: test1.msg $(objpfx)gencat + LC_ALL=hr_HR.ISO-8859-2 LOCPATH=$(common-objpfx)localedata \ + GCONV_PATH=$(common-objpfx)iconvdata \ $(built-program-cmd) -H $(objpfx)test1.h $@ $< $(objpfx)de/libc.cat: $(objpfx)de.msg $(objpfx)gencat $(make-target-directory) - $(built-program-cmd) $@ $< + LC_ALL=de_DE.ISO-8859-1 LOCPATH=$(common-objpfx)localedata \ + GCONV_PATH=$(common-objpfx)iconvdata $(built-program-cmd) $@ $< $(objpfx)tst-catgets.out: $(objpfx)de/libc.cat # Generate a non-simple input file. $(objpfx)de.msg: $(..)po/de.po sed -f xopen-msg.sed $< > $@ + +$(objpfx)test-gencat.out: test-gencat.sh $(objpfx)test-gencat \ + $(objpfx)sample.SJIS.cat + $(SHELL) -e $< $(common-objpfx) '$(built-program-cmd)' + +$(objpfx)sample.SJIS.cat: sample.SJIS $(objpfx)gencat + GCONV_PATH=$(common-objpfx)iconvdata LC_ALL=C \ + $(built-program-cmd) < $(word 1,$^) > $@ endif diff -adurpN glibc-2.2/catgets/gencat.c glibc-2.2.1/catgets/gencat.c --- glibc-2.2/catgets/gencat.c Wed Nov 8 14:10:15 2000 +++ glibc-2.2.1/catgets/gencat.c Sat Jan 6 20:35:10 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1996-1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -22,11 +22,14 @@ #endif #include +#include #include #include #include #include #include +#include +#include #include #include #include @@ -37,6 +40,7 @@ #include #include #include +#include #include "version.h" @@ -79,7 +83,7 @@ struct catalog struct set_list *all_sets; struct set_list *current_set; size_t total_messages; - char quote_char; + wint_t quote_char; int last_set; struct obstack mem_pool; @@ -137,6 +141,8 @@ static struct argp argp = /* Wrapper functions with error checking for standard functions. */ extern void *xmalloc (size_t n); extern void *xcalloc (size_t n, size_t s); +extern void *xrealloc (void *o, size_t n); +extern char *xstrdup (const char *); /* Prototypes for local functions. */ static void error_print (void); @@ -145,9 +151,12 @@ static struct catalog *read_input_file ( static void write_out (struct catalog *result, const char *output_name, const char *header_name); static struct set_list *find_set (struct catalog *current, int number); -static void normalize_line (const char *fname, size_t line, char *string, - char quote_char); +static void normalize_line (const char *fname, size_t line, iconv_t cd, + wchar_t *string, wchar_t quote_char, + wchar_t escape_char); static void read_old (struct catalog *catalog, const char *file_name); +static int open_conversion (const char *codesetp, iconv_t *cd_towcp, + iconv_t *cd_tombp, wchar_t *escape_charp); int @@ -238,7 +247,7 @@ print_version (FILE *stream, struct argp 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\ -"), "2000"); +"), "2001"); fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper"); } @@ -260,6 +269,12 @@ read_input_file (struct catalog *current char *buf; size_t len; size_t line_number; + wchar_t *wbuf; + size_t wbufsize; + iconv_t cd_towc = (iconv_t) -1; + iconv_t cd_tomb = (iconv_t) -1; + wchar_t escape_char = L'\\'; + char *codeset = NULL; if (strcmp (fname, "-") == 0 || strcmp (fname, "/dev/stdin") == 0) { @@ -289,6 +304,10 @@ read_input_file (struct catalog *current buf = NULL; len = 0; line_number = 0; + + wbufsize = 1024; + wbuf = (wchar_t *) xmalloc (wbufsize); + while (!feof (fp)) { int continued; @@ -328,7 +347,29 @@ read_input_file (struct catalog *current if (this_line[0] == '$') { if (isblank (this_line[1])) - /* This is a comment line. Do nothing. */; + { + int cnt = 1; + while (isblank (this_line[cnt])) + ++cnt; + if (strncmp (&this_line[cnt], "codeset=", 8) != 0) + /* This is a comment line. Do nothing. */; + else if (codeset != NULL) + /* Ignore multiple codeset. */; + else + { + int start = cnt + 8; + cnt = start; + while (this_line[cnt] != '\0' && !isspace (this_line[cnt])) + ++cnt; + if (cnt != start) + { + int len = cnt - start; + codeset = xmalloc (len + 1); + *((char *) mempcpy (codeset, &this_line[start], len)) + = '\0'; + } + } + } else if (strncmp (&this_line[1], "set", 3) == 0) { int cnt = sizeof ("set"); @@ -470,12 +511,45 @@ this is the first definition")); } else if (strncmp (&this_line[1], "quote", 5) == 0) { - int cnt = sizeof ("quote"); + char buf[2]; + char *bufptr; + size_t buflen; + char *wbufptr; + size_t wbuflen; + int cnt; + + cnt = sizeof ("quote"); while (isspace (this_line[cnt])) ++cnt; + + /* We need the conversion. */ + if (cd_towc == (iconv_t) -1 + && open_conversion (codeset, &cd_towc, &cd_tomb, + &escape_char) != 0) + /* Something is wrong. */ + goto out; + /* Yes, the quote char can be '\0'; this means no quote - char. */ - current->quote_char = this_line[cnt]; + char. The function using the information works on + wide characters so we have to convert it here. */ + buf[0] = this_line[cnt]; + buf[1] = '\0'; + bufptr = buf; + buflen = 2; + + wbufptr = (char *) wbuf; + wbuflen = wbufsize; + + /* Flush the state. */ + iconv (cd_towc, NULL, NULL, NULL, NULL); + + iconv (cd_towc, &bufptr, &buflen, &wbufptr, &wbuflen); + if (buflen != 0 || (wchar_t *) wbufptr != &wbuf[2]) + error_at_line (0, 0, fname, start_line, + gettext ("invalid quote character")); + else + /* Use the converted wide character. */ + current->quote_char = wbuf[0]; } else { @@ -492,13 +566,14 @@ this is the first definition")); else if (isalnum (this_line[0]) || this_line[0] == '_') { const char *ident = this_line; + char *line = this_line; int message_number; do - ++this_line; - while (this_line[0] != '\0' && !isspace (this_line[0])); - if (this_line[0] != '\0') - *this_line++ = '\0'; /* Terminate the identifier. */ + ++line; + while (line[0] != '\0' && !isspace (line[0])); + if (line[0] != '\0') + *line++ = '\0'; /* Terminate the identifier. */ /* Now we found the beginning of the message itself. */ @@ -568,18 +643,98 @@ duplicated message identifier")); if (message_number != 0) { + char *inbuf; + size_t inlen; + char *outbuf; + size_t outlen; struct message_list *newp; + size_t line_len = strlen (line) + 1; - used = 1; /* Yes, we use the line. */ + /* We need the conversion. */ + if (cd_towc == (iconv_t) -1 + && open_conversion (codeset, &cd_towc, &cd_tomb, + &escape_char) != 0) + /* Something is wrong. */ + goto out; + + /* Convert to a wide character string. We have to + interpret escape sequences which will be impossible + without doing the conversion if the codeset of the + message is stateful. */ + while (1) + { + inbuf = line; + inlen = line_len; + outbuf = (char *) wbuf; + outlen = wbufsize; + + /* Flush the state. */ + iconv (cd_towc, NULL, NULL, NULL, NULL); + + iconv (cd_towc, &inbuf, &inlen, &outbuf, &outlen); + if (inlen == 0) + { + /* The string is converted. */ + assert (outlen < wbufsize); + assert (wbuf[(wbufsize - outlen) / sizeof (wchar_t) - 1] + == L'\0'); + break; + } + + if (outlen != 0) + { + /* Something is wrong with this string, we ignore it. */ + error_at_line (0, 0, fname, start_line, gettext ("\ +invalid character: message ignored")); + goto ignore; + } + + /* The output buffer is too small. */ + wbufsize *= 2; + wbuf = (wchar_t *) xrealloc (wbuf, wbufsize); + } /* Strip quote characters, change escape sequences into correct characters etc. */ - normalize_line (fname, start_line, this_line, - current->quote_char); + normalize_line (fname, start_line, cd_towc, wbuf, + current->quote_char, escape_char); + + /* Now the string is free of escape sequences. Convert it + back into a multibyte character string. First free the + memory allocated for the original string. */ + obstack_free (¤t->mem_pool, this_line); + + used = 1; /* Yes, we use the line. */ + + /* Now fill in the new string. It should never happen that + the replaced string is longer than the original. */ + inbuf = (char *) wbuf; + inlen = (wcslen (wbuf) + 1) * sizeof (wchar_t); + + outlen = obstack_room (¤t->mem_pool); + obstack_blank (¤t->mem_pool, outlen); + this_line = (char *) obstack_base (¤t->mem_pool); + outbuf = this_line; + + /* Flush the state. */ + iconv (cd_tomb, NULL, NULL, NULL, NULL); + + iconv (cd_tomb, &inbuf, &inlen, &outbuf, &outlen); + if (inlen != 0) + { + error_at_line (0, 0, fname, start_line, + gettext ("invalid line")); + goto ignore; + } + assert (outbuf[-1] == '\0'); + + /* Free the memory in the obstack we don't use. */ + obstack_blank (¤t->mem_pool, -(int) outlen); + line = obstack_finish (¤t->mem_pool); newp = (struct message_list *) xmalloc (sizeof (*newp)); newp->number = message_number; - newp->message = this_line; + newp->message = line; /* Remember symbolic name; is NULL if no is given. */ newp->symbol = ident; /* Remember where we found the character. */ @@ -625,11 +780,20 @@ duplicated message identifier")); gettext ("malformed line ignored")); } + ignore: /* We can save the memory for the line if it was not used. */ if (!used) obstack_free (¤t->mem_pool, this_line); } + /* Close the conversion modules. */ + iconv_close (cd_towc); + iconv_close (cd_tomb); + free (codeset); + + out: + free (wbuf); + if (fp != stdin) fclose (fp); return current; @@ -895,13 +1059,14 @@ find_set (struct catalog *current, int n /* Normalize given string *in*place* by processing escape sequences and quote characters. */ static void -normalize_line (const char *fname, size_t line, char *string, char quote_char) +normalize_line (const char *fname, size_t line, iconv_t cd, wchar_t *string, + wchar_t quote_char, wchar_t escape_char) { int is_quoted; - char *rp = string; - char *wp = string; + wchar_t *rp = string; + wchar_t *wp = string; - if (quote_char != '\0' && *rp == quote_char) + if (quote_char != L'\0' && *rp == quote_char) { is_quoted = 1; ++rp; @@ -909,62 +1074,89 @@ normalize_line (const char *fname, size_ else is_quoted = 0; - while (*rp != '\0') + while (*rp != L'\0') if (*rp == quote_char) /* We simply end the string when we find the first time an not-escaped quote character. */ break; - else if (*rp == '\\') + else if (*rp == escape_char) { ++rp; - if (quote_char != '\0' && *rp == quote_char) + if (quote_char != L'\0' && *rp == quote_char) /* This is an extension to XPG. */ *wp++ = *rp++; else /* Recognize escape sequences. */ switch (*rp) { - case 'n': - *wp++ = '\n'; - ++rp; - break; - case 't': - *wp++ = '\t'; + case L'n': + *wp++ = L'\n'; ++rp; break; - case 'v': - *wp++ = '\v'; + case L't': + *wp++ = L'\t'; ++rp; break; - case 'b': - *wp++ = '\b'; + case L'v': + *wp++ = L'\v'; ++rp; break; - case 'r': - *wp++ = '\r'; + case L'b': + *wp++ = L'\b'; ++rp; break; - case 'f': - *wp++ = '\f'; + case L'r': + *wp++ = L'\r'; ++rp; break; - case '\\': - *wp++ = '\\'; + case L'f': + *wp++ = L'\f'; ++rp; break; - case '0' ... '7': + case L'0' ... L'7': { - int number = *rp++ - '0'; - while (number <= (255 / 8) && *rp >= '0' && *rp <= '7') + int number; + char cbuf[2]; + char *cbufptr; + size_t cbufin; + wchar_t wcbuf[2]; + char *wcbufptr; + size_t wcbufin; + + number = *rp++ - L'0'; + while (number <= (255 / 8) && *rp >= L'0' && *rp <= L'7') { number *= 8; - number += *rp++ - '0'; + number += *rp++ - L'0'; } - *wp++ = (char) number; + + cbuf[0] = (char) number; + cbuf[1] = '\0'; + cbufptr = cbuf; + cbufin = 2; + + wcbufptr = (char *) wcbuf; + wcbufin = sizeof (wcbuf); + + /* Flush the state. */ + iconv (cd, NULL, NULL, NULL, NULL); + + iconv (cd, &cbufptr, &cbufin, &wcbufptr, &wcbufin); + if (cbufptr != &cbuf[2] || (wchar_t *) wcbufptr != &wcbuf[2]) + error_at_line (0, 0, fname, line, + gettext ("invalid escape sequence")); + else + *wp++ = wcbuf[0]; } break; default: - /* Simply ignore the backslash character. */ + if (*rp == escape_char) + { + *wp++ = escape_char; + ++rp; + } + else + /* Simply ignore the backslash character. */; break; } } @@ -974,10 +1166,10 @@ normalize_line (const char *fname, size_ /* If we saw a quote character at the beginning we expect another one at the end. */ if (is_quoted && *rp != quote_char) - error (0, 0, fname, line, gettext ("unterminated message")); + error_at_line (0, 0, fname, line, gettext ("unterminated message")); /* Terminate string. */ - *wp = '\0'; + *wp = L'\0'; return; } @@ -1068,4 +1260,64 @@ read_old (struct catalog *catalog, const last->next = message->next; } } +} + + +static int +open_conversion (const char *codeset, iconv_t *cd_towcp, iconv_t *cd_tombp, + wchar_t *escape_charp) +{ + char buf[2]; + char *bufptr; + size_t bufsize; + wchar_t wbuf[2]; + char *wbufptr; + size_t wbufsize; + + /* If the input file does not specify the codeset use the locale's. */ + if (codeset == NULL) + { + setlocale (LC_ALL, ""); + codeset = nl_langinfo (CODESET); + setlocale (LC_ALL, "C"); + } + + /* Get the conversion modules. */ + *cd_towcp = iconv_open ("WCHAR_T", codeset); + *cd_tombp = iconv_open (codeset, "WCHAR_T"); + if (*cd_towcp == (iconv_t) -1 || *cd_tombp == (iconv_t) -1) + { + error (0, 0, gettext ("conversion modules not available")); + if (*cd_towcp != (iconv_t) -1) + iconv_close (*cd_towcp); + + return 1; + } + + /* One special case for historical reasons is the backslash + character. In some codesets the byte value 0x5c is not mapped to + U005c in Unicode. These charsets then don't have a backslash + character at all. Therefore we have to live with whatever the + codeset provides and recognize, instead of the U005c, the character + the byte value 0x5c is mapped to. */ + buf[0] = '\\'; + buf[1] = '\0'; + bufptr = buf; + bufsize = 2; + + wbufptr = (char *) wbuf; + wbufsize = sizeof (wbuf); + + iconv (*cd_towcp, &bufptr, &bufsize, &wbufptr, &wbufsize); + if (bufsize != 0 || wbufsize != 0) + { + /* Something went wrong, we couldn't convert the byte 0x5c. Go + on with using U005c. */ + error (0, 0, gettext ("cannot determine escape character")); + *escape_charp = L'\\'; + } + else + *escape_charp = wbuf[0]; + + return 0; } diff -adurpN glibc-2.2/catgets/sample.SJIS glibc-2.2.1/catgets/sample.SJIS --- glibc-2.2/catgets/sample.SJIS Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/catgets/sample.SJIS Tue Nov 28 05:55:03 2000 @@ -0,0 +1,10 @@ +$ test message catalog + +$ codeset=sjis +$quote " +$set 1 +1 sample1:ABCDEF: +2 sample2:“ú–{Œê: +3 sample3:—\’è•\: +4 sample4:TEST\tTAB: +5 sample5:‹@”\\t\Ží—Þ: diff -adurpN glibc-2.2/catgets/test-gencat.c glibc-2.2.1/catgets/test-gencat.c --- glibc-2.2/catgets/test-gencat.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/catgets/test-gencat.c Tue Nov 28 05:55:33 2000 @@ -0,0 +1,23 @@ +#include +#include +#include +#include + +int +main (void) +{ + nl_catd catalog; + setlocale (LC_ALL, ""); + + printf ("LC_MESSAGES = %s\n", setlocale (LC_MESSAGES, NULL)); + + catalog = catopen ("sample", NL_CAT_LOCALE); + printf ("%s\n", catgets(catalog, 1, 1, "sample 1")); + printf ("%s\n", catgets(catalog, 1, 2, "sample 2")); + printf ("%s\n", catgets(catalog, 1, 3, "sample 3")); + printf ("%s\n", catgets(catalog, 1, 4, "sample 4")); + printf ("%s\n", catgets(catalog, 1, 5, "sample 5")); + catclose (catalog); + + return 0; +} diff -adurpN glibc-2.2/catgets/test-gencat.sh glibc-2.2.1/catgets/test-gencat.sh --- glibc-2.2/catgets/test-gencat.sh Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/catgets/test-gencat.sh Tue Nov 28 05:55:43 2000 @@ -0,0 +1,40 @@ +#! /bin/sh +# Test escape character handling in gencat. +# Copyright (C) 2000 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. + +common_objpfx=$1 +run_program_prefix=$2 + +# Run the test program. +LOCPATH=${common_objpfx}localedata GCONV_PATH=${common_objpfx}iconvdata \ +NLSPATH=${common_objpfx}catgets/%N.%c.cat LC_ALL=ja_JP.SJIS \ + ${run_program_prefix} \ + > ${common_objpfx}catgets/test-gencat.out + +# Compare with the expected result. +cmp - ${common_objpfx}catgets/test-gencat.out < /dev/null -then - with_cvs=no +if test "$with_cvs" = yes; then + if test -d $srcdir/CVS && grep :pserver: $srcdir/CVS/Root > /dev/null + then + with_cvs=no + fi fi @@ -778,6 +785,24 @@ else fi +# Check whether --enable-oldest-abi or --disable-oldest-abi was given. +if test "${enable_oldest_abi+set}" = set; then + enableval="$enable_oldest_abi" + oldest_abi=$enableval +else + oldest_abi=no +fi + +if test "$oldest_abi" = yes || test "$oldest_abi" = no; then + oldest_abi=default +else + cat >> confdefs.h <&2; exit 1; } + fi + if test "$f" = "localedata"; then + { echo "configure: error: +*** It seems that you're using an old \`localedata' add-on. localedata +*** is now part of glibc and using the old add-on will not work with +*** this release. Start again with fresh sources and without the old +*** \`localedata' add-on." 1>&2; exit 1; } + fi # Test whether such a subdir really exists. if test -d $srcdir/$f; then add_ons_pfx="$add_ons_pfx $f/" @@ -845,6 +885,14 @@ else fi fi +# Check whether --enable-all-warnings or --disable-all-warnings was given. +if test "${enable_all_warnings+set}" = set; then + enableval="$enable_all_warnings" + all_warnings=$enableval +fi + + + # Make sure we can run config.sub. if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then : @@ -852,7 +900,7 @@ else { echo "configure: error: can not r fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:856: checking host system type" >&5 +echo "configure:904: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -991,7 +1039,7 @@ fi # This can take a while to compute. sysdep_dir=$srcdir/sysdeps echo $ac_n "checking sysdep dirs""... $ac_c" 1>&6 -echo "configure:995: checking sysdep dirs" >&5 +echo "configure:1043: 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'`" @@ -1197,7 +1245,7 @@ echo "$ac_t""$default_sysnames" 1>&6 # 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:1201: checking for a BSD compatible install" >&5 +echo "configure:1249: 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 @@ -1254,7 +1302,7 @@ if test "$INSTALL" = "${srcdir}/scripts/ INSTALL='\$(..)./scripts/install-sh -c' fi echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:1258: checking whether ln -s works" >&5 +echo "configure:1306: 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 @@ -1283,7 +1331,7 @@ fi # Extract the first word of "pwd", so it can be a program name with args. set dummy pwd; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1287: checking for $ac_word" >&5 +echo "configure:1335: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PWD_P'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1322,7 +1370,7 @@ fi # These programs are version sensitive. echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:1326: checking build system type" >&5 +echo "configure:1374: checking build system type" >&5 build_alias=$build case "$build_alias" in @@ -1350,7 +1398,7 @@ 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:1354: checking for $ac_word" >&5 +echo "configure:1402: 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 @@ -1384,11 +1432,11 @@ if test -z "$CC"; then else # Found it, now check the version. echo $ac_n "checking version of $CC""... $ac_c" 1>&6 -echo "configure:1388: checking version of $CC" >&5 +echo "configure:1436: checking version of $CC" >&5 ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'` case $ac_prog_version in '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - egcs-2.9[1-9].*|egcs-2.90.2[789]|egcs-2.90.[3-9][0-9]|*gcc-2.9[1-9].*|pgcc-2.90.2[789]|pgcc-2.90.[3-9][0-9]|*2.8.[1-9]*|*2.9|*2.9.[0-9]*|2.9[5-9]*|cygnus-2.9[1-9]*|gcc-2.9[5-9]|gcc-2.1[0-9][0-9]|sgicc-*) + *gcc-2.9[5-9].*|*2.8.[1-9]*|*2.9|*2.9.[0-9]*|2.9[5-9]*|cygnus-2.9[1-9]*|gcc-2.9[5-9]|gcc-2.1[0-9][0-9]|sgicc-*) ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; @@ -1404,7 +1452,7 @@ 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:1408: checking for $ac_word" >&5 +echo "configure:1456: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1438,7 +1486,7 @@ if test -z "$MAKE"; then else # Found it, now check the version. echo $ac_n "checking version of $MAKE""... $ac_c" 1>&6 -echo "configure:1442: checking version of $MAKE" >&5 +echo "configure:1490: checking version of $MAKE" >&5 ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'` case $ac_prog_version in '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; @@ -1459,7 +1507,7 @@ 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:1463: checking for $ac_word" >&5 +echo "configure:1511: 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 @@ -1493,7 +1541,7 @@ if test -z "$MSGFMT"; then else # Found it, now check the version. echo $ac_n "checking version of $MSGFMT""... $ac_c" 1>&6 -echo "configure:1497: checking version of $MSGFMT" >&5 +echo "configure:1545: checking version of $MSGFMT" >&5 ac_prog_version=`$MSGFMT --version 2>&1 | sed -n 's/^.*GNU gettext.* \([0-9]*\.[0-9.]*\).*$/\1/p'` case $ac_prog_version in '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; @@ -1513,7 +1561,7 @@ 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:1517: checking for $ac_word" >&5 +echo "configure:1565: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1547,7 +1595,7 @@ if test -z "$MAKEINFO"; then else # Found it, now check the version. echo $ac_n "checking version of $MAKEINFO""... $ac_c" 1>&6 -echo "configure:1551: checking version of $MAKEINFO" >&5 +echo "configure:1599: checking version of $MAKEINFO" >&5 ac_prog_version=`$MAKEINFO --version 2>&1 | sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'` case $ac_prog_version in '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; @@ -1567,7 +1615,7 @@ 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:1571: checking for $ac_word" >&5 +echo "configure:1619: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_SED'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1601,7 +1649,7 @@ if test -z "$SED"; then else # Found it, now check the version. echo $ac_n "checking version of $SED""... $ac_c" 1>&6 -echo "configure:1605: checking version of $SED" >&5 +echo "configure:1653: checking version of $SED" >&5 ac_prog_version=`$SED --version 2>&1 | sed -n 's/^.*GNU sed version \([0-9]*\.[0-9.]*\).*$/\1/p'` case $ac_prog_version in '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; @@ -1634,7 +1682,7 @@ CCVERSION=`$CC -v 2>&1 | sed -n 's/gcc v echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1638: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1686: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1648,12 +1696,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 1652 "configure" +#line 1700 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:1657: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1705: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; 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 @@ -1684,7 +1732,7 @@ 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:1688: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1736: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_cross'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1696,7 +1744,7 @@ 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:1700: checking whether we are using GNU C" >&5 +echo "configure:1748: 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 @@ -1705,7 +1753,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1709: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1757: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -1718,7 +1766,7 @@ if test $ac_cv_prog_gcc != yes; then fi echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:1722: checking build system type" >&5 +echo "configure:1770: checking build system type" >&5 build_alias=$build case "$build_alias" in @@ -1741,7 +1789,7 @@ 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:1745: checking for $ac_word" >&5 +echo "configure:1793: 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 @@ -1773,7 +1821,7 @@ done fi echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1777: checking how to run the C preprocessor" >&5 +echo "configure:1825: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1788,13 +1836,13 @@ else # 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:1798: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1846: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1805,13 +1853,13 @@ else 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:1815: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1863: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1822,13 +1870,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1832: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1880: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1871,7 +1919,7 @@ if test $RANLIB = ranlib; then # 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:1875: checking for $ac_word" >&5 +echo "configure:1923: 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 @@ -1903,7 +1951,7 @@ 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:1907: checking for $ac_word" >&5 +echo "configure:1955: 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 @@ -1940,7 +1988,7 @@ fi # Determine whether we are using GNU binutils. echo $ac_n "checking whether $AS is GNU as""... $ac_c" 1>&6 -echo "configure:1944: checking whether $AS is GNU as" >&5 +echo "configure:1992: checking whether $AS is GNU as" >&5 if eval "test \"`echo '$''{'libc_cv_prog_as_gnu'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1959,7 +2007,7 @@ rm -f a.out gnu_as=$libc_cv_prog_as_gnu echo $ac_n "checking whether $LD is GNU ld""... $ac_c" 1>&6 -echo "configure:1963: checking whether $LD is GNU ld" >&5 +echo "configure:2011: checking whether $LD is GNU ld" >&5 if eval "test \"`echo '$''{'libc_cv_prog_ld_gnu'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1979,7 +2027,7 @@ gnu_ld=$libc_cv_prog_ld_gnu # Extract the first word of "${ac_tool_prefix}mig", so it can be a program name with args. set dummy ${ac_tool_prefix}mig; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1983: checking for $ac_word" >&5 +echo "configure:2031: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2020,7 +2068,7 @@ fi # check if ranlib is necessary echo $ac_n "checking whether ranlib is necessary""... $ac_c" 1>&6 -echo "configure:2024: checking whether ranlib is necessary" >&5 +echo "configure:2072: checking whether ranlib is necessary" >&5 if eval "test \"`echo '$''{'libc_cv_ranlib_necessary'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2054,7 +2102,7 @@ fi # - two terminals occur directly after each other # - the path contains an element with a dot in it echo $ac_n "checking LD_LIBRARY_PATH variable""... $ac_c" 1>&6 -echo "configure:2058: checking LD_LIBRARY_PATH variable" >&5 +echo "configure:2106: checking LD_LIBRARY_PATH variable" >&5 case ${LD_LIBRARY_PATH} in [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* ) ld_library_path_setting="contains current directory" @@ -2074,7 +2122,7 @@ 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:2078: checking for $ac_word" >&5 +echo "configure:2126: 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 @@ -2120,7 +2168,7 @@ 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:2124: checking for $ac_word" >&5 +echo "configure:2172: 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 @@ -2165,12 +2213,12 @@ else fi -for ac_prog in gawk mawk nawk awk +for ac_prog in mawk gawk nawk awk 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:2174: checking for $ac_word" >&5 +echo "configure:2222: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2202,7 +2250,7 @@ done # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2206: checking for $ac_word" >&5 +echo "configure:2254: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2242,7 +2290,7 @@ fi # Extract the first word of "install-info", so it can be a program name with args. set dummy install-info; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2246: checking for $ac_word" >&5 +echo "configure:2294: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_INSTALL_INFO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2277,7 +2325,7 @@ fi if test "$INSTALL_INFO" != "no"; then echo $ac_n "checking for old Debian install-info""... $ac_c" 1>&6 -echo "configure:2281: checking for old Debian install-info" >&5 +echo "configure:2329: checking for old Debian install-info" >&5 if eval "test \"`echo '$''{'libc_cv_old_debian_install_info'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2310,7 +2358,7 @@ fi echo $ac_n "checking for signed size_t type""... $ac_c" 1>&6 -echo "configure:2314: checking for signed size_t type" >&5 +echo "configure:2362: 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 @@ -2334,12 +2382,12 @@ EOF fi echo $ac_n "checking for libc-friendly stddef.h""... $ac_c" 1>&6 -echo "configure:2338: checking for libc-friendly stddef.h" >&5 +echo "configure:2386: 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 <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2406: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* libc_cv_friendly_stddef=yes else @@ -2373,7 +2421,7 @@ override stddef.h = # The installed &6 -echo "configure:2377: checking whether we need to use -P to assemble .S files" >&5 +echo "configure:2425: 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 @@ -2396,7 +2444,7 @@ asm-CPPFLAGS = -P # The assembler can't fi echo $ac_n "checking whether .text pseudo-op must be used""... $ac_c" 1>&6 -echo "configure:2400: checking whether .text pseudo-op must be used" >&5 +echo "configure:2448: checking whether .text pseudo-op must be used" >&5 if eval "test \"`echo '$''{'libc_cv_dot_text'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2417,7 +2465,7 @@ else fi echo $ac_n "checking for assembler global-symbol directive""... $ac_c" 1>&6 -echo "configure:2421: checking for assembler global-symbol directive" >&5 +echo "configure:2469: 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 @@ -2447,7 +2495,7 @@ EOF fi echo $ac_n "checking for .set assembler directive""... $ac_c" 1>&6 -echo "configure:2451: checking for .set assembler directive" >&5 +echo "configure:2499: 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 @@ -2480,8 +2528,17 @@ EOF fi +# The Aix ld uses global .symbol_names instead of symbol_names. +case "$os" in +aix4.3*) + cat >> confdefs.h <<\EOF +#define HAVE_ASM_GLOBAL_DOT_NAME 1 +EOF + +esac + echo $ac_n "checking for .symver assembler directive""... $ac_c" 1>&6 -echo "configure:2485: checking for .symver assembler directive" >&5 +echo "configure:2542: 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 @@ -2500,7 +2557,7 @@ 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:2504: checking for ld --version-script" >&5 +echo "configure:2561: 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 @@ -2523,7 +2580,7 @@ EOF if { ac_try='${CC-cc} $CFLAGS -shared -o conftest.so conftest.o -nostartfiles -nostdlib -Wl,--version-script,conftest.map - 1>&5'; { (eval echo configure:2527: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; + 1>&5'; { (eval echo configure:2584: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_ld_version_script_option=yes else @@ -2562,7 +2619,7 @@ if test $shared != no && test $VERSIONIN fi if test $elf = yes; then echo $ac_n "checking for .previous assembler directive""... $ac_c" 1>&6 -echo "configure:2566: checking for .previous assembler directive" >&5 +echo "configure:2623: 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 @@ -2570,7 +2627,7 @@ else .section foo_section .previous EOF - if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2574: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2631: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_asm_previous_directive=yes else libc_cv_asm_previous_directive=no @@ -2586,7 +2643,7 @@ EOF else echo $ac_n "checking for .popsection assembler directive""... $ac_c" 1>&6 -echo "configure:2590: checking for .popsection assembler directive" >&5 +echo "configure:2647: 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 @@ -2594,7 +2651,7 @@ else .pushsection foo_section .popsection EOF - if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2598: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2655: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_asm_popsection_directive=yes else libc_cv_asm_popsection_directive=no @@ -2611,7 +2668,7 @@ EOF fi fi echo $ac_n "checking for .protected and .hidden assembler directive""... $ac_c" 1>&6 -echo "configure:2615: checking for .protected and .hidden assembler directive" >&5 +echo "configure:2672: checking for .protected and .hidden assembler directive" >&5 if eval "test \"`echo '$''{'libc_cv_asm_protected_directive'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2621,7 +2678,7 @@ foo: .hidden bar bar: EOF - if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2625: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2682: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_asm_protected_directive=yes else libc_cv_asm_protected_directive=no @@ -2633,14 +2690,14 @@ echo "$ac_t""$libc_cv_asm_protected_dire echo $ac_n "checking for -z nodelete option""... $ac_c" 1>&6 -echo "configure:2637: checking for -z nodelete option" >&5 +echo "configure:2694: checking for -z nodelete option" >&5 if eval "test \"`echo '$''{'libc_cv_z_nodelete'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } + if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,nodelete 1>&5'; { (eval echo configure:2701: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } then libc_cv_z_nodelete=yes else @@ -2653,14 +2710,14 @@ echo "$ac_t""$libc_cv_z_nodelete" 1>&6 echo $ac_n "checking for -z nodlopen option""... $ac_c" 1>&6 -echo "configure:2657: checking for -z nodlopen option" >&5 +echo "configure:2714: checking for -z nodlopen option" >&5 if eval "test \"`echo '$''{'libc_cv_z_nodlopen'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } + if { ac_try='${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,nodlopen 1>&5'; { (eval echo configure:2721: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } then libc_cv_z_nodlopen=yes else @@ -2675,12 +2732,12 @@ fi if test $elf != yes; then echo $ac_n "checking for .init and .fini sections""... $ac_c" 1>&6 -echo "configure:2679: checking for .init and .fini sections" >&5 +echo "configure:2736: 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 +if { (eval echo configure:2750: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* libc_cv_have_initfini=yes else @@ -2712,7 +2769,7 @@ fi if test $elf = yes -a $gnu_ld = yes; then echo $ac_n "checking whether cc puts quotes around section names""... $ac_c" 1>&6 -echo "configure:2716: checking whether cc puts quotes around section names" >&5 +echo "configure:2773: checking whether cc puts quotes around section names" >&5 if eval "test \"`echo '$''{'libc_cv_have_section_quotes'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2749,19 +2806,19 @@ if test $elf = yes; then else if test $ac_cv_prog_cc_works = yes; then echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6 -echo "configure:2753: checking for _ prefix on C symbol names" >&5 +echo "configure:2810: 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${ac_exeext}; then +if { (eval echo configure:2822: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* libc_cv_asm_underscores=yes else @@ -2776,17 +2833,17 @@ fi echo "$ac_t""$libc_cv_asm_underscores" 1>&6 else echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6 -echo "configure:2780: checking for _ prefix on C symbol names" >&5 +echo "configure:2837: 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_compile) 2>&5; }; then +if { (eval echo configure:2847: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if grep _underscore_test conftest* >/dev/null; then rm -f conftest* libc_cv_asm_underscores=yes @@ -2818,7 +2875,7 @@ if test $elf = yes; then fi echo $ac_n "checking for assembler .weak directive""... $ac_c" 1>&6 -echo "configure:2822: checking for assembler .weak directive" >&5 +echo "configure:2879: 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 @@ -2841,7 +2898,7 @@ echo "$ac_t""$libc_cv_asm_weak_directive if test $libc_cv_asm_weak_directive = no; then echo $ac_n "checking for assembler .weakext directive""... $ac_c" 1>&6 -echo "configure:2845: checking for assembler .weakext directive" >&5 +echo "configure:2902: 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 @@ -2881,14 +2938,14 @@ fi case "${host_cpu}-${host_os}" in hppa*linux*) echo $ac_n "checking for assembler line separator""... $ac_c" 1>&6 -echo "configure:2885: checking for assembler line separator" >&5 +echo "configure:2942: checking for assembler line separator" >&5 if eval "test \"`echo '$''{'libc_cv_asm_line_sep'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.s <&5; (eval $ac_try) 2>&5; }; }; then + if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2949: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_asm_line_sep='!' else if test -z "$enable_hacker_mode"; then @@ -2910,7 +2967,7 @@ EOF esac echo $ac_n "checking for ld --no-whole-archive""... $ac_c" 1>&6 -echo "configure:2914: checking for ld --no-whole-archive" >&5 +echo "configure:2971: 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 @@ -2921,7 +2978,7 @@ __throw () {} EOF if { ac_try='${CC-cc} $CFLAGS -nostdlib -nostartfiles -Wl,--no-whole-archive - -o conftest conftest.c 1>&5'; { (eval echo configure:2925: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + -o conftest conftest.c 1>&5'; { (eval echo configure:2982: \"$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 @@ -2935,7 +2992,7 @@ if test $libc_cv_ld_no_whole_archive = y fi echo $ac_n "checking for gcc -fexceptions""... $ac_c" 1>&6 -echo "configure:2939: checking for gcc -fexceptions" >&5 +echo "configure:2996: checking for gcc -fexceptions" >&5 if eval "test \"`echo '$''{'libc_cv_gcc_exceptions'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2946,7 +3003,7 @@ __throw () {} EOF if { ac_try='${CC-cc} $CFLAGS -nostdlib -nostartfiles -fexceptions - -o conftest conftest.c 1>&5'; { (eval echo configure:2950: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + -o conftest conftest.c 1>&5'; { (eval echo configure:3007: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_gcc_exceptions=yes else libc_cv_gcc_exceptions=no @@ -2961,14 +3018,14 @@ fi if test "$base_machine" = alpha ; then echo $ac_n "checking for function ..ng prefix""... $ac_c" 1>&6 -echo "configure:2965: checking for function ..ng prefix" >&5 +echo "configure:3022: checking for function ..ng prefix" >&5 if eval "test \"`echo '$''{'libc_cv_gcc_alpha_ng_prefix'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <<\EOF foo () { } EOF -if { ac_try='${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null'; { (eval echo configure:2972: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; +if { ac_try='${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null'; { (eval echo configure:3029: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_gcc_alpha_ng_prefix=yes else @@ -2995,19 +3052,19 @@ if test "$host_cpu" = powerpc ; then # Check for a bug present in at least versions 2.8.x of GCC # and versions 1.0.x of EGCS. echo $ac_n "checking whether clobbering cr0 causes problems""... $ac_c" 1>&6 -echo "configure:2999: checking whether clobbering cr0 causes problems" >&5 +echo "configure:3056: checking whether clobbering cr0 causes problems" >&5 if eval "test \"`echo '$''{'libc_cv_c_asmcr0_bug'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3068: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* libc_cv_c_asmcr0_bug='no' else @@ -3029,12 +3086,12 @@ fi fi echo $ac_n "checking for DWARF2 unwind info support""... $ac_c" 1>&6 -echo "configure:3033: checking for DWARF2 unwind info support" >&5 +echo "configure:3090: checking for DWARF2 unwind info support" >&5 if eval "test \"`echo '$''{'libc_cv_gcc_dwarf2_unwind_info'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <&5; (eval $ac_try) 2>&5; }; }; then + -o conftest conftest.c -lgcc >&5'; { (eval echo configure:3122: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_gcc_dwarf2_unwind_info=static else libc_cv_gcc_dwarf2_unwind_info=no @@ -3069,7 +3126,7 @@ fi if test $libc_cv_gcc_dwarf2_unwind_info = no; then if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame -nostdlib -nostartfiles - -o conftest conftest.c -lgcc >&5'; { (eval echo configure:3073: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + -o conftest conftest.c -lgcc >&5'; { (eval echo configure:3130: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_gcc_dwarf2_unwind_info=yes else libc_cv_gcc_dwarf2_unwind_info=no @@ -3099,12 +3156,12 @@ EOF esac echo $ac_n "checking for __builtin_expect""... $ac_c" 1>&6 -echo "configure:3103: checking for __builtin_expect" >&5 +echo "configure:3160: checking for __builtin_expect" >&5 if eval "test \"`echo '$''{'libc_cv_gcc_builtin_expect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <&5; (eval $ac_try) 2>&5; }; }; then + -o conftest conftest.c -lgcc >&5'; { (eval echo configure:3173: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_gcc_builtin_expect=yes else libc_cv_gcc_builtin_expect=no @@ -3129,12 +3186,12 @@ EOF fi echo $ac_n "checking for local label subtraction""... $ac_c" 1>&6 -echo "configure:3133: checking for local label subtraction" >&5 +echo "configure:3190: checking for local label subtraction" >&5 if eval "test \"`echo '$''{'libc_cv_gcc_subtract_local_labels'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <&5; (eval $ac_try) 2>&5; }; }; then + -o conftest conftest.c -lgcc >&5'; { (eval echo configure:3208: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_gcc_subtract_local_labels=yes else libc_cv_gcc_subtract_local_labels=no @@ -3164,7 +3221,7 @@ EOF fi echo $ac_n "checking for libgd""... $ac_c" 1>&6 -echo "configure:3168: checking for libgd" >&5 +echo "configure:3225: checking for libgd" >&5 old_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $libgd_include" old_LDFLAGS="$LDFLAGS" @@ -3172,14 +3229,14 @@ LDFLAGS="$LDFLAGS $libgd_ldflags" old_LIBS="$LIBS" LIBS="$LIBS -lgd -lpng -lz -lm" cat > conftest.$ac_ext < int main() { gdImagePng (0, 0) ; return 0; } EOF -if { (eval echo configure:3183: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3240: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* LIBGD=yes else @@ -3196,7 +3253,7 @@ echo "$ac_t""$LIBGD" 1>&6 echo $ac_n "checking size of long double""... $ac_c" 1>&6 -echo "configure:3200: checking size of long double" >&5 +echo "configure:3257: checking size of long double" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_long_double'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3204,7 +3261,7 @@ else ac_cv_sizeof_long_double=0 else cat > conftest.$ac_ext < main() @@ -3215,7 +3272,7 @@ main() exit(0); } EOF -if { (eval echo configure:3219: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3276: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_long_double=`cat conftestval` else @@ -3283,7 +3340,7 @@ if test "$uname" = "sysdeps/generic"; th fi echo $ac_n "checking OS release for uname""... $ac_c" 1>&6 -echo "configure:3287: checking OS release for uname" >&5 +echo "configure:3344: 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 @@ -3305,7 +3362,7 @@ echo "$ac_t""$libc_cv_uname_release" 1>& uname_release="$libc_cv_uname_release" echo $ac_n "checking OS version for uname""... $ac_c" 1>&6 -echo "configure:3309: checking OS version for uname" >&5 +echo "configure:3366: 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 @@ -3327,7 +3384,7 @@ else fi echo $ac_n "checking stdio selection""... $ac_c" 1>&6 -echo "configure:3331: checking stdio selection" >&5 +echo "configure:3388: checking stdio selection" >&5 case $stdio in libio) cat >> confdefs.h <<\EOF @@ -3341,7 +3398,7 @@ echo "$ac_t""$stdio" 1>&6 # Test for old glibc 2.0.x headers so that they can be removed properly # Search only in includedir. echo $ac_n "checking for old glibc 2.0.x headers""... $ac_c" 1>&6 -echo "configure:3345: checking for old glibc 2.0.x headers" >&5 +echo "configure:3402: checking for old glibc 2.0.x headers" >&5 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h" then old_glibc_headers=yes @@ -3396,7 +3453,7 @@ if test $shared = default; then fi echo $ac_n "checking whether -fPIC is default""... $ac_c" 1>&6 -echo "configure:3400: checking whether -fPIC is default" >&5 +echo "configure:3457: checking whether -fPIC is default" >&5 if eval "test \"`echo '$''{'pic_default'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3574,8 +3631,10 @@ s%@oldincludedir@%$oldincludedir%g s%@infodir@%$infodir%g s%@mandir@%$mandir%g s%@with_cvs@%$with_cvs%g +s%@oldest_abi@%$oldest_abi%g s%@subdirs@%$subdirs%g s%@force_install@%$force_install%g +s%@all_warnings@%$all_warnings%g s%@host@%$host%g s%@host_alias@%$host_alias%g s%@host_cpu@%$host_cpu%g diff -adurpN glibc-2.2/configure.in glibc-2.2.1/configure.in --- glibc-2.2/configure.in Thu Nov 2 16:50:06 2000 +++ glibc-2.2.1/configure.in Sat Jan 6 20:35:10 2001 @@ -68,9 +68,11 @@ AC_ARG_WITH(elf, dnl AC_ARG_WITH(cvs, dnl [ --without-cvs if CVS should not be used], with_cvs=$withval, with_cvs=yes) -if test "$with_cvs" = yes && test -d CVS && grep :pserver: CVS/Root > /dev/null -then - with_cvs=no +if test "$with_cvs" = yes; then + if test -d $srcdir/CVS && grep :pserver: $srcdir/CVS/Root > /dev/null + then + with_cvs=no + fi fi AC_SUBST(with_cvs) @@ -119,6 +121,17 @@ AC_ARG_ENABLE(versioning, dnl library objects [default=yes if supported]], enable_versioning=$enableval, enable_versioning=yes) +AC_ARG_ENABLE(oldest-abi, dnl +[ --enable-oldest-abi=ABI configure the oldest ABI supported [e.g. 2.2] + [default=glibc default]], + oldest_abi=$enableval, oldest_abi=no) +if test "$oldest_abi" = yes || test "$oldest_abi" = no; then + oldest_abi=default +else + AC_DEFINE_UNQUOTED(GLIBC_OLDEST_ABI, "$oldest_abi") +fi +AC_SUBST(oldest_abi) + dnl Generic infrastructure for drop-in additions to libc. AC_ARG_ENABLE(add-ons, dnl [ --enable-add-ons[=DIR1,DIR2]... @@ -135,6 +148,21 @@ AC_CONFIG_SUBDIRS($add_ons) add_ons_pfx= if test x"$add_ons" != x; then for f in $add_ons; do + # Some sanity checks + if test "$f" = "crypt"; then + AC_MSG_ERROR([ +*** It seems that you're using an old \`crypt' add-on. crypt is now +*** part of glibc and using the old add-on will not work with this +*** release. Start again with fresh sources and without the old +*** \`crypt' add-on.]) + fi + if test "$f" = "localedata"; then + AC_MSG_ERROR([ +*** It seems that you're using an old \`localedata' add-on. localedata +*** is now part of glibc and using the old add-on will not work with +*** this release. Start again with fresh sources and without the old +*** \`localedata' add-on.]) + fi # Test whether such a subdir really exists. if test -d $srcdir/$f; then add_ons_pfx="$add_ons_pfx $f/" @@ -175,6 +203,14 @@ else fi fi +dnl For the development we sometimes want gcc to issue even more warnings. +dnl This is not the default since many of the extra warnings are not +dnl appropriate. +AC_ARG_ENABLE(all-warnings, +[ --enable-all-warnings enable all useful warnings gcc can issue], + all_warnings=$enableval) +AC_SUBST(all_warnings) + AC_CANONICAL_HOST # The way shlib-versions is used to generate soversions.mk uses a @@ -515,7 +551,7 @@ fi AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v, [version \([egcygnustpi-]*[0-9.]*\)], - [egcs-2.9[1-9].*|egcs-2.90.2[789]|egcs-2.90.[3-9][0-9]|*gcc-2.9[1-9].*|pgcc-2.90.2[789]|pgcc-2.90.[3-9][0-9]|*2.8.[1-9]*|*2.9|*2.9.[0-9]*|2.9[5-9]*|cygnus-2.9[1-9]*|gcc-2.9[5-9]|gcc-2.1[0-9][0-9]|sgicc-*], + [*gcc-2.9[5-9].*|*2.8.[1-9]*|*2.9|*2.9.[0-9]*|2.9[5-9]*|cygnus-2.9[1-9]*|gcc-2.9[5-9]|gcc-2.1[0-9][0-9]|sgicc-*], critic_missing=t) AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version, [GNU Make[^0-9]*\([0-9][0-9.]*\)], @@ -785,6 +821,12 @@ rm -f conftest*]) if test $libc_cv_asm_set_directive = yes; then AC_DEFINE(HAVE_ASM_SET_DIRECTIVE) fi + +# The Aix ld uses global .symbol_names instead of symbol_names. +case "$os" in +aix4.3*) + AC_DEFINE(HAVE_ASM_GLOBAL_DOT_NAME) +esac AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive, [cat > conftest.s <.\n"; #include +extern void __libc_print_version (void); void __libc_print_version (void) { @@ -58,6 +62,7 @@ weak_alias (__gnu_get_libc_version, gnu_ /* This function is the entry point for the shared object. Running the library as a program will get here. */ +extern void __libc_main (void) __attribute__ ((noreturn)); void __libc_main (void) { diff -adurpN glibc-2.2/ctype/ctype-extn.c glibc-2.2.1/ctype/ctype-extn.c --- glibc-2.2/ctype/ctype-extn.c Thu Apr 29 09:55:58 1999 +++ glibc-2.2.1/ctype/ctype-extn.c Fri Dec 1 11:55:01 2000 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1997, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1997, 1999, 2000 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 @@ -19,14 +19,14 @@ #define __NO_CTYPE #include -/* Real function versions of the non-ANSI ctype functions. */ +/* Real function versions of the non-ANSI ctype functions. isblank is + now in ISO C99 but we leave it here. */ int -__isblank (int c) +isblank (int c) { return __isctype (c, _ISblank); } -weak_alias (__isblank, isblank) int _tolower (int c) diff -adurpN glibc-2.2/ctype/test_ctype.c glibc-2.2.1/ctype/test_ctype.c --- glibc-2.2/ctype/test_ctype.c Fri Feb 14 20:26:12 1997 +++ glibc-2.2.1/ctype/test_ctype.c Sat Jan 6 20:35:11 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1994, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1994, 1996, 1997, 2000 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 @@ -97,5 +97,5 @@ main (int argc, char **argv) TRYEM; #undef TRY - exit (lose ? EXIT_FAILURE : EXIT_SUCCESS); + return lose ? EXIT_FAILURE : EXIT_SUCCESS; } diff -adurpN glibc-2.2/debug/backtrace-tst.c glibc-2.2.1/debug/backtrace-tst.c --- glibc-2.2/debug/backtrace-tst.c Mon Jun 8 15:55:51 1998 +++ glibc-2.2.1/debug/backtrace-tst.c Fri Dec 1 11:55:02 2000 @@ -22,7 +22,7 @@ compare (const void *p1, const void *p2) } } - return *(uint32_t *) p1 - *(uint32_t *) p2; + return *(const uint32_t *) p1 - *(const uint32_t *) p2; } diff -adurpN glibc-2.2/debug/catchsegv.sh glibc-2.2.1/debug/catchsegv.sh --- glibc-2.2/debug/catchsegv.sh Mon Jan 4 10:11:04 1999 +++ glibc-2.2.1/debug/catchsegv.sh Sat Jan 6 20:35:11 2001 @@ -1,6 +1,6 @@ #! /bin/sh -# Copyright (C) 1998, 1999 Free Software Foundation, Inc. +# Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc. # This file is part of the GNU C Library. # Contributed by Ulrich Drepper , 1998. @@ -39,7 +39,7 @@ if test $# -eq 0; then ;; --v | --ve | --ver | --vers | --versi | --versio | --version) echo 'catchsegv (GNU libc) @VERSION@' - echo 'Copyright (C) 1999 Free Software Foundation, Inc. + echo 'Copyright (C) 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Written by Ulrich Drepper.' diff -adurpN glibc-2.2/debug/noophooks.c glibc-2.2.1/debug/noophooks.c --- glibc-2.2/debug/noophooks.c Sun Aug 8 15:18:27 1999 +++ glibc-2.2.1/debug/noophooks.c Sat Jan 6 20:35:11 2001 @@ -1,5 +1,5 @@ /* Noop hooks for the instrumenting functions. - Copyright (C) 1999 Free Software Foundation, Inc. + Copyright (C) 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1999. @@ -17,6 +17,8 @@ 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. */ + +#include void __cyg_profile_func_enter (void *this_fn, void *call_site) diff -adurpN glibc-2.2/debug/pcprofile.c glibc-2.2.1/debug/pcprofile.c --- glibc-2.2/debug/pcprofile.c Fri Oct 8 10:40:53 1999 +++ glibc-2.2.1/debug/pcprofile.c Sat Jan 6 20:35:11 2001 @@ -1,5 +1,5 @@ /* Profile PC and write result to FIFO. - Copyright (C) 1999 Free Software Foundation, Inc. + Copyright (C) 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1999. @@ -23,6 +23,7 @@ #include #include #include +#include /* Nonzero if we are actually doing something. */ static int active; diff -adurpN glibc-2.2/debug/xtrace.sh glibc-2.2.1/debug/xtrace.sh --- glibc-2.2/debug/xtrace.sh Thu Oct 21 09:14:29 1999 +++ glibc-2.2.1/debug/xtrace.sh Sat Jan 6 20:35:11 2001 @@ -1,5 +1,5 @@ #! @BASH@ -# Copyright (C) 1999 Free Software Foundation, Inc. +# Copyright (C) 1999, 2001 Free Software Foundation, Inc. # This file is part of the GNU C Library. # Contributed by Ulrich Drepper , 1999. @@ -53,7 +53,7 @@ Report bugs using the \`glibcbug' script do_version() { echo 'xtrace (GNU libc) @VERSION@' - echo $"Copyright (C) 1999 Free Software Foundation, Inc. + echo $"Copyright (C) 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Written by Ulrich Drepper." diff -adurpN glibc-2.2/dirent/list.c glibc-2.2.1/dirent/list.c --- glibc-2.2/dirent/list.c Wed Mar 18 11:47:47 1998 +++ glibc-2.2.1/dirent/list.c Sat Jan 6 20:35:11 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1993, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1993, 1997, 1998, 2000 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 @@ -23,7 +23,7 @@ #include -int +static int test (const char *name) { DIR *dirp; diff -adurpN glibc-2.2/dirent/opendir-tst1.c glibc-2.2.1/dirent/opendir-tst1.c --- glibc-2.2/dirent/opendir-tst1.c Mon Nov 16 11:13:22 1998 +++ glibc-2.2.1/dirent/opendir-tst1.c Sat Jan 6 20:35:11 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1998 Free Software Foundation, Inc. +/* Copyright (C) 1998, 2000 Free Software Foundation, Inc. Contributed by Ulrich Drepper , 1998. The GNU C Library is free software; you can redistribute it and/or @@ -84,7 +84,7 @@ do_test (int argc, char *argv[]) } -void +static void do_cleanup (void) { remove (tmpname); diff -adurpN glibc-2.2/dirent/tst-seekdir.c glibc-2.2.1/dirent/tst-seekdir.c --- glibc-2.2/dirent/tst-seekdir.c Wed Oct 30 18:50:45 1996 +++ glibc-2.2.1/dirent/tst-seekdir.c Sat Jan 6 20:35:11 2001 @@ -38,5 +38,5 @@ main (int argc, char *argv[]) closedir (dirp); - exit(0); + return 0; } diff -adurpN glibc-2.2/dlfcn/Makefile glibc-2.2.1/dlfcn/Makefile --- glibc-2.2/dlfcn/Makefile Mon Sep 18 15:42:24 2000 +++ glibc-2.2.1/dlfcn/Makefile Sat Jan 6 23:38:07 2001 @@ -1,4 +1,4 @@ -# Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc. +# Copyright (C) 1995-1999, 2000, 2001 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 @@ -21,7 +21,7 @@ headers := bits/dlfcn.h dlfcn.h extra-libs := libdl libdl-routines := dlopen dlclose dlsym dlvsym dlerror dladdr eval distribute := dlopenold.c glreflib1.c glreflib2.c failtestmod.c eval.c \ - defaultmod1.c defaultmod2.c + defaultmod1.c defaultmod2.c errmsg1mod.c extra-libs-others := libdl @@ -34,9 +34,10 @@ endif libdl-shared-only-routines += eval ifeq (yes,$(build-shared)) -tests = glrefmain failtest tst-dladdr default +tests = glrefmain failtest tst-dladdr default errmsg1 endif -modules-names = glreflib1 glreflib2 failtestmod defaultmod1 defaultmod2 +modules-names = glreflib1 glreflib2 failtestmod defaultmod1 defaultmod2 \ + errmsg1mod extra-objs += $(modules-names:=.os) eval.os generated := $(modules-names:=.so) @@ -63,3 +64,6 @@ $(objpfx)default: $(libdl) $(objpfx)defa $(objpfx)defaultmod1.so: $(libdl) LDFLAGS-defaultmod2.so = -Bsymbolic $(objpfx)defaultmod2.so: $(libdl) + +$(objpfx)errmsg1: $(libdl) +$(objpfx)errmsg1.out: $(objpfx)errmsg1 $(objpfx)errmsg1mod.so diff -adurpN glibc-2.2/dlfcn/default.c glibc-2.2.1/dlfcn/default.c --- glibc-2.2/dlfcn/default.c Sat Sep 16 02:05:17 2000 +++ glibc-2.2.1/dlfcn/default.c Thu Nov 16 11:12:01 2000 @@ -1,5 +1,6 @@ #include #include +#include extern int test_in_mod1 (void *); @@ -12,7 +13,22 @@ main (int argc, char *argv[]) int (*ifp) (void); void *p; int result = 0; - + Dl_info info; + + dladdr(main, &info); + if (info.dli_fname == NULL) + { + printf ("%s: dladdr returns NULL dli_fname\n", __FILE__); + result = 1; + } + else if (strcmp (info.dli_fname, argv[0])) + { + printf ("%s: dladdr returned '%s' as dli_fname\n", __FILE__, info.dli_fname); + result = 1; + } + else + printf ("%s: dladdr returned correct dli_fname\n", __FILE__); + /* Find function `main'. */ p = dlsym (RTLD_DEFAULT, "main"); if (p == NULL) diff -adurpN glibc-2.2/dlfcn/defaultmod1.c glibc-2.2.1/dlfcn/defaultmod1.c --- glibc-2.2/dlfcn/defaultmod1.c Sat Sep 16 02:05:31 2000 +++ glibc-2.2.1/dlfcn/defaultmod1.c Fri Dec 1 11:55:02 2000 @@ -1,6 +1,7 @@ #include #include +extern int found_in_mod1 (void); int found_in_mod1 (void) { @@ -8,6 +9,7 @@ found_in_mod1 (void) } +extern int test_in_mod1 (void *mainp); int test_in_mod1 (void *mainp) { diff -adurpN glibc-2.2/dlfcn/defaultmod2.c glibc-2.2.1/dlfcn/defaultmod2.c --- glibc-2.2/dlfcn/defaultmod2.c Sat Sep 16 02:05:31 2000 +++ glibc-2.2.1/dlfcn/defaultmod2.c Fri Dec 1 11:55:02 2000 @@ -1,12 +1,14 @@ #include #include +extern int found_in_mod1 (void); int found_in_mod1 (void) { return 1; } +extern int found_in_mod2 (void); int found_in_mod2 (void) { @@ -14,6 +16,7 @@ found_in_mod2 (void) } +extern int test_in_mod2 (void *mainp); int test_in_mod2 (void *mainp) { diff -adurpN glibc-2.2/dlfcn/dlerror.c glibc-2.2.1/dlfcn/dlerror.c --- glibc-2.2/dlfcn/dlerror.c Wed Aug 2 14:51:58 2000 +++ glibc-2.2.1/dlfcn/dlerror.c Sat Jan 6 20:35:11 2001 @@ -46,7 +46,7 @@ static void free_key_mem (void *mem); char * dlerror (void) { - char *buf; + char *buf = NULL; struct dl_action_result *result; /* Get error string. */ @@ -64,15 +64,13 @@ dlerror (void) free ((char *) result->errstring); result->errstring = NULL; } - buf = NULL; } - else + else if (result->errstring != NULL) { buf = (char *) result->errstring; - if (result->errcode != 0 - && __asprintf (&buf, "%s: %s: %s", - result->objname, _(result->errstring), - strerror (result->errcode)) != -1) + if (__asprintf (&buf, result->errcode != 0 ? "%s: %s: %s" : "%s: %s", + result->objname, _(result->errstring), + strerror (result->errcode)) != -1) { /* We don't need the error string anymore. */ if (strcmp (result->errstring, "out of memory") != 0) diff -adurpN glibc-2.2/dlfcn/dlopen.c glibc-2.2.1/dlfcn/dlopen.c --- glibc-2.2/dlfcn/dlopen.c Wed Aug 2 14:51:59 2000 +++ glibc-2.2.1/dlfcn/dlopen.c Fri Dec 1 11:55:02 2000 @@ -41,6 +41,7 @@ dlopen_doit (void *a) } +extern void *__dlopen_check (const char *file, int mode); void * __dlopen_check (const char *file, int mode) { diff -adurpN glibc-2.2/dlfcn/dlopenold.c glibc-2.2.1/dlfcn/dlopenold.c --- glibc-2.2/dlfcn/dlopenold.c Wed Aug 2 14:51:59 2000 +++ glibc-2.2.1/dlfcn/dlopenold.c Fri Dec 1 11:55:02 2000 @@ -46,6 +46,7 @@ dlopen_doit (void *a) args->caller); } +extern void *__dlopen_nocheck (const char *file, int mode); void * __dlopen_nocheck (const char *file, int mode) { diff -adurpN glibc-2.2/dlfcn/errmsg1.c glibc-2.2.1/dlfcn/errmsg1.c --- glibc-2.2/dlfcn/errmsg1.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/dlfcn/errmsg1.c Tue Jan 2 20:31:03 2001 @@ -0,0 +1,48 @@ +/* Copyright (C) 2000 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. */ + +#include +#include +#include +#include + +int +main (void) +{ + void *h; + const char *s; + + /* Test that dlerror works initially. */ + s = dlerror (); + printf ("dlerror() without prior dl*() call returned: %s\n", s); + if (s != NULL) + return 1; + + h = dlopen ("errmsg1mod.so", RTLD_NOW); + if (h != NULL) + { + dlclose (h); + puts ("errmsg1mod.so could be loaded !?"); + exit (1); + } + + s = dlerror (); + puts (s); + + return strstr (s, "errmsg1mod.so") == NULL; +} diff -adurpN glibc-2.2/dlfcn/errmsg1mod.c glibc-2.2.1/dlfcn/errmsg1mod.c --- glibc-2.2/dlfcn/errmsg1mod.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/dlfcn/errmsg1mod.c Wed Dec 27 22:57:34 2000 @@ -0,0 +1,26 @@ +/* Copyright (C) 2000 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. */ + +extern int bar (void); +extern int foo (void); + +int +foo (void) +{ + return bar (); +} diff -adurpN glibc-2.2/dlfcn/eval.c glibc-2.2.1/dlfcn/eval.c --- glibc-2.2/dlfcn/eval.c Tue Jun 13 16:50:20 2000 +++ glibc-2.2.1/dlfcn/eval.c Fri Dec 1 11:55:02 2000 @@ -1,5 +1,5 @@ /* You don't really want to know what this hack is for. - Copyright (C) 1996, 1997 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 2000 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 @@ -122,7 +122,9 @@ eval (char **stringp) } +extern void _start (void) __attribute__ ((noreturn)); void +__attribute__ ((noreturn)) _start (void) { char *buf = NULL; diff -adurpN glibc-2.2/dlfcn/failtest.c glibc-2.2.1/dlfcn/failtest.c --- glibc-2.2/dlfcn/failtest.c Fri Jun 9 21:29:18 2000 +++ glibc-2.2.1/dlfcn/failtest.c Sat Jan 6 20:35:11 2001 @@ -52,6 +52,8 @@ main (void) } +extern void foo (void); + void foo (void) { diff -adurpN glibc-2.2/dlfcn/failtestmod.c glibc-2.2.1/dlfcn/failtestmod.c --- glibc-2.2/dlfcn/failtestmod.c Fri Jun 9 21:29:34 2000 +++ glibc-2.2.1/dlfcn/failtestmod.c Fri Dec 1 11:55:02 2000 @@ -2,6 +2,7 @@ #include +extern void constr (void) __attribute__ ((__constructor__)); void __attribute__ ((__constructor__)) constr (void) diff -adurpN glibc-2.2/dlfcn/glreflib1.c glibc-2.2.1/dlfcn/glreflib1.c --- glibc-2.2/dlfcn/glreflib1.c Sat Apr 1 13:47:21 2000 +++ glibc-2.2.1/dlfcn/glreflib1.c Fri Dec 1 11:55:02 2000 @@ -17,6 +17,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +extern int ref1 (void); int ref1 (void) { diff -adurpN glibc-2.2/dlfcn/glreflib2.c glibc-2.2.1/dlfcn/glreflib2.c --- glibc-2.2/dlfcn/glreflib2.c Sat Apr 1 13:47:21 2000 +++ glibc-2.2.1/dlfcn/glreflib2.c Fri Dec 1 11:55:02 2000 @@ -19,6 +19,7 @@ extern int ref1 (void); +extern int ref2 (void); int ref2 (void) { diff -adurpN glibc-2.2/dlfcn/glrefmain.c glibc-2.2.1/dlfcn/glrefmain.c --- glibc-2.2/dlfcn/glrefmain.c Sun Apr 2 20:38:59 2000 +++ glibc-2.2.1/dlfcn/glrefmain.c Sat Jan 6 20:35:11 2001 @@ -35,6 +35,8 @@ load (const char *name) #define TEST_FUNCTION do_test () +extern int do_test (void); + int do_test (void) { diff -adurpN glibc-2.2/dlfcn/tst-dladdr.c glibc-2.2.1/dlfcn/tst-dladdr.c --- glibc-2.2/dlfcn/tst-dladdr.c Fri Jul 28 01:13:05 2000 +++ glibc-2.2.1/dlfcn/tst-dladdr.c Sat Jan 6 20:35:11 2001 @@ -26,6 +26,7 @@ #define TEST_FUNCTION do_test () +extern int do_test (void); int do_test (void) diff -adurpN glibc-2.2/elf/Makefile glibc-2.2.1/elf/Makefile --- glibc-2.2/elf/Makefile Thu Nov 2 17:25:56 2000 +++ glibc-2.2.1/elf/Makefile Sat Jan 6 20:35:11 2001 @@ -55,7 +55,9 @@ distribute := $(rtld-routines:=.c) dynam reldepmod1.c reldepmod2.c reldepmod3.c reldepmod4.c \ nextmod1.c nextmod2.c pathoptobj.c tst-pathopt.sh \ neededobj1.c neededobj2.c neededobj3.c neededobj4.c \ - unload2mod.c unload2dep.c ltglobmod1.c ltglobmod2.c + neededobj5.c neededobj6.c \ + unload2mod.c unload2dep.c ltglobmod1.c ltglobmod2.c \ + testobj.h vismod.h include ../Makeconfig @@ -99,7 +101,7 @@ tests = loadtest restest1 preloadtest lo constload1 order $(tests-vis-$(have-protected)) noload filter unload \ reldep reldep2 reldep3 next $(tests-nodelete-$(have-z-nodelete)) \ $(tests-nodlopen-$(have-z-nodlopen)) neededtest neededtest2 \ - neededtest3 unload2 lateglobal + neededtest3 neededtest4 unload2 lateglobal test-srcs = tst-pathopt tests-vis-yes = vismain tests-nodelete-yes = nodelete @@ -112,6 +114,7 @@ modules-names = testobj1 testobj2 testob $(modules-nodlopen-$(have-z-nodlopen)) filtmod1 filtmod2 \ reldepmod1 reldepmod2 reldepmod3 reldepmod4 nextmod1 nextmod2 \ neededobj1 neededobj2 neededobj3 neededobj4 \ + neededobj5 neededobj6 \ unload2mod unload2dep ltglobmod1 ltglobmod2 pathoptobj modules-vis-yes = vismod1 vismod2 vismod3 modules-nodelete-yes = nodelmod1 nodelmod2 nodelmod3 nodelmod4 @@ -262,6 +265,7 @@ $(objpfx)neededobj2.so: $(objpfx)neededo $(objpfx)neededobj3.so: $(objpfx)neededobj1.so $(objpfx)neededobj2.so $(libdl) $(objpfx)neededobj4.so: $(objpfx)neededobj1.so $(objpfx)neededobj2.so \ $(objpfx)neededobj3.so $(libdl) +$(objpfx)neededobj6.so: $(objpfx)neededobj5.so $(objpfx)unload2mod.so: $(objpfx)unload2dep.so $(objpfx)ltglobmod2.so: $(libdl) @@ -285,6 +289,10 @@ $(objpfx)neededtest2.out: $(objpfx)neede $(objpfx)neededtest3: $(libdl) $(objpfx)neededtest3.out: $(objpfx)neededobj1.so $(objpfx)neededobj2.so \ $(objpfx)neededobj3.so $(objpfx)neededobj4.so + +neededtest4-ENV = LC_ALL=C LANGUAGE=C +$(objpfx)neededtest4: $(libdl) $(objpfx)neededobj1.so +$(objpfx)neededtest4.out: $(objpfx)neededobj5.so $(objpfx)neededobj6.so $(objpfx)restest1: $(objpfx)testobj1.so $(objpfx)testobj1_1.so $(libdl) LDFLAGS-restest1 = -rdynamic diff -adurpN glibc-2.2/elf/cache.c glibc-2.2.1/elf/cache.c --- glibc-2.2/elf/cache.c Sun Oct 8 17:04:48 2000 +++ glibc-2.2.1/elf/cache.c Thu Nov 16 11:12:01 2000 @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -38,7 +39,7 @@ struct cache_entry char *lib; /* Library name. */ char *path; /* Path to find library. */ int flags; /* Flags to indicate kind of library. */ - unsigned long int hwcap; /* Important hardware capabilities. */ + uint64_t hwcap; /* Important hardware capabilities. */ int bits_hwcap; /* Number of bits set in hwcap. */ struct cache_entry *next; /* Next entry in list. */ }; @@ -51,7 +52,7 @@ static const char *flag_descr[] = /* Print a single entry. */ static void -print_entry (const char *lib, int flag, unsigned long int hwcap, const char *key) +print_entry (const char *lib, int flag, uint64_t hwcap, const char *key) { printf ("\t%s (", lib); switch (flag & FLAG_TYPE_MASK) @@ -83,7 +84,7 @@ print_entry (const char *lib, int flag, break; } if (hwcap != 0) - printf (", hwcap: 0x%lx", hwcap); + printf (", hwcap: 0x%Lx", hwcap); printf (") => %s\n", key); } @@ -411,7 +412,7 @@ save_cache (const char *cache_name) /* Add one library to the cache. */ void add_to_cache (const char *path, const char *lib, int flags, - unsigned long int hwcap) + uint64_t hwcap) { struct cache_entry *new_entry, *ptr, *prev; char *full_path; @@ -431,8 +432,8 @@ add_to_cache (const char *path, const ch new_entry->bits_hwcap = 0; /* Count the number of bits set in the masked value. */ - for (i = 0; (~((1UL << i) - 1) & hwcap) != 0; ++i) - if ((hwcap & (1UL << i)) != 0) + for (i = 0; (~((1ULL << i) - 1) & hwcap) != 0; ++i) + if ((hwcap & (1ULL << i)) != 0) ++new_entry->bits_hwcap; diff -adurpN glibc-2.2/elf/chroot_canon.c glibc-2.2.1/elf/chroot_canon.c --- glibc-2.2/elf/chroot_canon.c Fri Sep 29 17:50:22 2000 +++ glibc-2.2.1/elf/chroot_canon.c Thu Nov 16 11:12:01 2000 @@ -25,6 +25,8 @@ #include #include #include +#include + #include "ldconfig.h" #ifndef PATH_MAX diff -adurpN glibc-2.2/elf/constload2.c glibc-2.2.1/elf/constload2.c --- glibc-2.2/elf/constload2.c Tue Aug 15 11:16:17 2000 +++ glibc-2.2.1/elf/constload2.c Sat Jan 6 20:35:11 2001 @@ -3,6 +3,8 @@ #include extern int bar (void); +extern int baz (void); +extern int foo (void); void *h; diff -adurpN glibc-2.2/elf/constload3.c glibc-2.2.1/elf/constload3.c --- glibc-2.2/elf/constload3.c Thu Mar 16 18:17:03 2000 +++ glibc-2.2.1/elf/constload3.c Sat Jan 6 20:35:11 2001 @@ -1,4 +1,5 @@ extern int baz (void); +extern int bar (void); int bar (void) diff -adurpN glibc-2.2/elf/dep1.c glibc-2.2.1/elf/dep1.c --- glibc-2.2/elf/dep1.c Fri Mar 31 09:08:12 2000 +++ glibc-2.2.1/elf/dep1.c Sat Jan 6 20:35:11 2001 @@ -1,5 +1,6 @@ #include +extern int dep1 (void); extern int dep2 (void); extern int dep4 (void); diff -adurpN glibc-2.2/elf/dep2.c glibc-2.2.1/elf/dep2.c --- glibc-2.2/elf/dep2.c Fri Mar 31 09:08:12 2000 +++ glibc-2.2.1/elf/dep2.c Sat Jan 6 20:35:11 2001 @@ -1,5 +1,6 @@ #include +extern int dep2 (void); extern int dep3 (void); extern int dep4 (void); diff -adurpN glibc-2.2/elf/dep3.c glibc-2.2.1/elf/dep3.c --- glibc-2.2/elf/dep3.c Fri Mar 31 09:08:12 2000 +++ glibc-2.2.1/elf/dep3.c Sat Jan 6 20:35:11 2001 @@ -1,5 +1,7 @@ #include +extern int dep3 (void); + static void __attribute__ ((constructor)) init (void) diff -adurpN glibc-2.2/elf/dep4.c glibc-2.2.1/elf/dep4.c --- glibc-2.2/elf/dep4.c Fri Mar 31 09:08:12 2000 +++ glibc-2.2.1/elf/dep4.c Sat Jan 6 20:35:11 2001 @@ -1,6 +1,7 @@ #include extern int dep3 (void); +extern int dep4 (void); static void __attribute__ ((constructor)) diff -adurpN glibc-2.2/elf/dl-close.c glibc-2.2.1/elf/dl-close.c --- glibc-2.2/elf/dl-close.c Thu Oct 26 22:57:22 2000 +++ glibc-2.2.1/elf/dl-close.c Sat Jan 13 10:48:47 2001 @@ -1,5 +1,5 @@ /* Close a shared object opened by `_dl_open'. - Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1996,1997,1998,1999,2000,2001 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 @@ -55,7 +55,7 @@ _dl_close (void *_map) unsigned int *new_opencount; /* First see whether we can remove the object at all. */ - if (map->l_flags_1 & DF_1_NODELETE) + if ((map->l_flags_1 & DF_1_NODELETE) && map->l_init_called) /* Nope. Do nothing. */ return; @@ -101,7 +101,7 @@ _dl_close (void *_map) } --new_opencount[0]; for (i = 1; list[i] != NULL; ++i) - if (! (list[i]->l_flags_1 & DF_1_NODELETE) + if ((! (list[i]->l_flags_1 & DF_1_NODELETE) || ! list[i]->l_init_called) /* Decrement counter. */ && --new_opencount[i] == 0 /* Test whether this object was also loaded directly. */ @@ -113,7 +113,8 @@ _dl_close (void *_map) struct link_map **dep_list = list[i]->l_searchlist.r_list; for (j = 1; j < list[i]->l_searchlist.r_nlist; ++j) - if (! (dep_list[j]->l_flags_1 & DF_1_NODELETE)) + if (! (dep_list[j]->l_flags_1 & DF_1_NODELETE) + || ! dep_list[j]->l_init_called) { assert (dep_list[j]->l_idx < map->l_searchlist.r_nlist); --new_opencount[dep_list[j]->l_idx]; @@ -127,7 +128,7 @@ _dl_close (void *_map) struct link_map *imap = list[i]; if (new_opencount[i] == 0 && imap->l_type == lt_loaded && (imap->l_info[DT_FINI] || imap->l_info[DT_FINI_ARRAY]) - && ! (imap->l_flags_1 & DF_1_NODELETE) + && (! (imap->l_flags_1 & DF_1_NODELETE) || ! imap->l_init_called) /* Skip any half-cooked objects that were never initialized. */ && imap->l_init_called) { @@ -152,8 +153,9 @@ _dl_close (void *_map) /* Next try the old-style destructor. */ if (imap->l_info[DT_FINI] != NULL) - (*(void (*) (void)) ((void *) imap->l_addr - + imap->l_info[DT_FINI]->d_un.d_ptr)) (); + (*(void (*) (void)) DL_DT_FINI_ADDRESS + (imap, (void *) imap->l_addr + + imap->l_info[DT_FINI]->d_un.d_ptr)) (); } /* Store the new l_opencount value. */ @@ -180,7 +182,7 @@ _dl_close (void *_map) if (__builtin_expect (imap->l_global, 0)) { /* This object is in the global scope list. Remove it. */ - int cnt = _dl_main_searchlist->r_nlist; + unsigned int cnt = _dl_main_searchlist->r_nlist; do --cnt; diff -adurpN glibc-2.2/elf/dl-deps.c glibc-2.2.1/elf/dl-deps.c --- glibc-2.2/elf/dl-deps.c Thu Oct 26 22:57:22 2000 +++ glibc-2.2.1/elf/dl-deps.c Sat Jan 6 20:35:11 2001 @@ -141,6 +141,12 @@ _dl_map_object_deps (struct link_map *ma struct list known[1 + npreloads + 1]; struct list *runp, *utail, *dtail; unsigned int nlist, nduplist, i; + /* Object name. */ + const char *name; + int errno_saved; + int errno_reason; + + auto inline void preload (struct link_map *map); inline void preload (struct link_map *map) { @@ -190,6 +196,10 @@ _dl_map_object_deps (struct link_map *ma The whole process is complicated by the fact that we better should use alloca for the temporary list elements. But using alloca means we cannot use recursive function calls. */ + errno_saved = errno; + errno_reason = 0; + errno = 0; + name = NULL; for (runp = known; runp; ) { struct link_map *l = runp->map; @@ -225,15 +235,24 @@ _dl_map_object_deps (struct link_map *ma struct link_map *dep; /* Allocate new entry. */ struct list *newp; - /* Object name. */ - const char *name; + const char *objname; + const char *errstring; /* Recognize DSTs. */ name = expand_dst (l, strtab + d->d_un.d_val, 0); + /* Store the tag in the argument structure. */ + args.name = name; - dep = _dl_map_object (l, name, 0, - l->l_type == lt_executable ? lt_library : - l->l_type, trace_mode, 0); + if (_dl_catch_error (&objname, &errstring, openaux, &args)) + { + if (errno) + errno_reason = errno; + else + errno_reason = -1; + goto out; + } + else + dep = args.aux; /* Add it in any case to the duplicate list. */ newp = alloca (sizeof (struct list)); @@ -264,18 +283,15 @@ _dl_map_object_deps (struct link_map *ma const char *objname; const char *errstring; struct list *newp; - /* Object name. */ - const char *name; /* Recognize DSTs. */ name = expand_dst (l, strtab + d->d_un.d_val, d->d_tag == DT_AUXILIARY); + /* Store the tag in the argument structure. */ + args.name = name; if (d->d_tag == DT_AUXILIARY) { - /* Store the tag in the argument structure. */ - args.name = name; - /* Say that we are about to load an auxiliary library. */ if (__builtin_expect (_dl_debug_libs, 0)) _dl_debug_message (1, "load auxiliary object=", @@ -308,10 +324,14 @@ _dl_map_object_deps (struct link_map *ma "\n", NULL); /* For filter objects the dependency must be available. */ - args.aux = _dl_map_object (l, name, 0, - (l->l_type == lt_executable - ? lt_library : l->l_type), - trace_mode, 0); + if (_dl_catch_error (&objname, &errstring, openaux, &args)) + { + if (errno) + errno_reason = errno; + else + errno_reason = -1; + goto out; + } } /* The auxiliary object is actually available. @@ -458,6 +478,10 @@ _dl_map_object_deps (struct link_map *ma while (runp != NULL && runp->done); } +out: + if (errno == 0 && errno_saved != 0) + __set_errno (errno_saved); + if (map->l_initfini != NULL && map->l_type == lt_loaded) { /* This object was previously loaded as a dependency and we have @@ -556,4 +580,8 @@ _dl_map_object_deps (struct link_map *ma } /* Terminate the list of dependencies. */ map->l_initfini[nlist] = NULL; + + if (errno_reason) + _dl_signal_error (errno_reason == -1 ? 0 : errno_reason, + name ?: "", N_("cannot load shared object file")); } diff -adurpN glibc-2.2/elf/dl-error.c glibc-2.2.1/elf/dl-error.c --- glibc-2.2/elf/dl-error.c Tue Oct 17 14:53:56 2000 +++ glibc-2.2.1/elf/dl-error.c Sat Jan 6 20:35:11 2001 @@ -88,7 +88,7 @@ _dl_signal_error (int errcode, const cha else { /* This is better than nothing. */ - lcatch->objname = objname; + lcatch->objname = ""; lcatch->errstring = _dl_out_of_memory; } longjmp (lcatch->env, errcode ?: -1); diff -adurpN glibc-2.2/elf/dl-fini.c glibc-2.2.1/elf/dl-fini.c --- glibc-2.2/elf/dl-fini.c Thu Aug 31 14:44:56 2000 +++ glibc-2.2.1/elf/dl-fini.c Thu Nov 16 11:12:01 2000 @@ -167,7 +167,7 @@ _dl_fini (void) /* Next try the old-style destructor. */ if (l->l_info[DT_FINI] != NULL) - ((fini_t) (l->l_addr + l->l_info[DT_FINI]->d_un.d_ptr)) (); + ((fini_t) DL_DT_FINI_ADDRESS (l, l->l_addr + l->l_info[DT_FINI]->d_un.d_ptr)) (); } } } diff -adurpN glibc-2.2/elf/dl-init.c glibc-2.2.1/elf/dl-init.c --- glibc-2.2/elf/dl-init.c Mon May 1 14:56:34 2000 +++ glibc-2.2.1/elf/dl-init.c Thu Nov 16 11:12:01 2000 @@ -105,7 +105,8 @@ _dl_init (struct link_map *main_map, int */ if (l->l_info[DT_INIT] != NULL) { - init = (init_t) (l->l_addr + l->l_info[DT_INIT]->d_un.d_ptr); + init = (init_t) DL_DT_INIT_ADDRESS + (l, l->l_addr + l->l_info[DT_INIT]->d_un.d_ptr); /* Call the function. */ init (argc, argv, env); diff -adurpN glibc-2.2/elf/dl-libc.c glibc-2.2.1/elf/dl-libc.c --- glibc-2.2/elf/dl-libc.c Thu Aug 31 14:44:56 2000 +++ glibc-2.2.1/elf/dl-libc.c Sat Jan 13 10:48:47 2001 @@ -1,5 +1,5 @@ /* Handle loading and unloading shared objects for internal libc purposes. - Copyright (C) 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Zack Weinberg , 1999. diff -adurpN glibc-2.2/elf/dl-load.c glibc-2.2.1/elf/dl-load.c --- glibc-2.2/elf/dl-load.c Thu Nov 2 16:50:07 2000 +++ glibc-2.2.1/elf/dl-load.c Sat Jan 13 10:48:47 2001 @@ -1,5 +1,5 @@ /* Map in a shared object's segments from the file. - Copyright (C) 1995,96,97,98,99,2000 Free Software Foundation, Inc. + Copyright (C) 1995,96,97,98,99,2000,2001 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 @@ -419,7 +419,7 @@ fillin_rpath (char *rpath, struct r_sear dirp->dirname = ((char *) dirp + sizeof (*dirp) + ncapstr * sizeof (enum r_dir_status)); - memcpy ((char *) dirp->dirname, cp, len + 1); + *((char *) __mempcpy ((char *) dirp->dirname, cp, len)) = '\0'; dirp->dirnamelen = len; if (len > max_dirnamelen) @@ -750,6 +750,9 @@ _dl_map_object_from_fd (const char *name { struct link_map *l = NULL; + auto inline caddr_t map_segment (ElfW(Addr) mapstart, size_t len, + int prot, int fixed, off_t offset); + inline caddr_t map_segment (ElfW(Addr) mapstart, size_t len, int prot, int fixed, off_t offset) { @@ -1556,7 +1559,7 @@ _dl_map_object (struct link_map *loader, fd = open_path (name, namelen, preloaded, &env_path_list, &realname, &fb); - /* Look at the RUNPATH informaiton for this binary. */ + /* Look at the RUNPATH information for this binary. */ if (loader != NULL && loader->l_runpath_dirs.dirs != (void *) -1) { if (loader->l_runpath_dirs.dirs == NULL) @@ -1582,11 +1585,10 @@ _dl_map_object (struct link_map *loader, &loader->l_runpath_dirs, &realname, &fb); } - if (fd == -1) + if (fd == -1 && (! preloaded || ! __libc_enable_secure)) { /* Check the list of libraries in the file /etc/ld.so.cache, for compatibility with Linux's ldconfig program. */ - extern const char *_dl_load_cache_lookup (const char *name); const char *cached = _dl_load_cache_lookup (name); #ifdef SHARED @@ -1602,7 +1604,7 @@ _dl_map_object (struct link_map *loader, if (l && __builtin_expect (l->l_flags_1 & DF_1_NODEFLIB, 0)) { const char *dirp = system_dirs; - int cnt = 0; + unsigned int cnt = 0; do { diff -adurpN glibc-2.2/elf/dl-minimal.c glibc-2.2.1/elf/dl-minimal.c --- glibc-2.2/elf/dl-minimal.c Tue Mar 28 11:05:25 2000 +++ glibc-2.2.1/elf/dl-minimal.c Sat Jan 6 20:35:11 2001 @@ -33,6 +33,20 @@ static void *alloc_ptr, *alloc_end, *alloc_last_block; +/* Declarations of global functions. */ +extern void weak_function free (void *ptr); +extern void * weak_function realloc (void *ptr, size_t n); +extern long int weak_function __strtol_internal (const char *nptr, + char **endptr, + int base, int group); +extern long int weak_function strtol (const char *nptr, char **endptr, + int base); +extern unsigned long int weak_function __strtoul_internal +(const char *nptr, char **endptr, int base, int group); +extern unsigned long int weak_function strtoul (const char *nptr, + char **endptr, int base); + + void * weak_function malloc (size_t n) { diff -adurpN glibc-2.2/elf/dl-misc.c glibc-2.2.1/elf/dl-misc.c --- glibc-2.2/elf/dl-misc.c Thu Aug 31 14:44:56 2000 +++ glibc-2.2.1/elf/dl-misc.c Sat Jan 6 20:35:11 2001 @@ -19,6 +19,7 @@ #include #include +#include #include #include #include @@ -42,6 +43,7 @@ _dl_sysdep_open_zero_fill (void) protections. *SIZEP gets the size of the file. */ void * +internal_function _dl_sysdep_read_whole_file (const char *file, size_t *sizep, int prot) { void *result; diff -adurpN glibc-2.2/elf/dl-open.c glibc-2.2.1/elf/dl-open.c --- glibc-2.2/elf/dl-open.c Thu Oct 26 22:57:22 2000 +++ glibc-2.2.1/elf/dl-open.c Sat Jan 13 10:48:47 2001 @@ -1,5 +1,5 @@ /* Load a shared object at runtime, relocate it, and run its initializer. - Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1996,1997,1998,1999,2000,2001 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 @@ -269,10 +269,6 @@ dl_open_worker (void *a) /* Load that object's dependencies. */ _dl_map_object_deps (new, NULL, 0, 0); - /* Increment the open count for all dependencies. */ - for (i = 0; i < new->l_searchlist.r_nlist; ++i) - ++new->l_searchlist.r_list[i]->l_opencount; - /* So far, so good. Now check the versions. */ for (i = 0; i < new->l_searchlist.r_nlist; ++i) if (new->l_searchlist.r_list[i]->l_versions == NULL) @@ -321,6 +317,10 @@ dl_open_worker (void *a) l = l->l_prev; } + /* Increment the open count for all dependencies. */ + for (i = 0; i < new->l_searchlist.r_nlist; ++i) + ++new->l_searchlist.r_list[i]->l_opencount; + /* Run the initializer functions of new objects. */ _dl_init (new, __libc_argc, __libc_argv, __environ); @@ -391,21 +391,48 @@ _dl_open (const char *file, int mode, co { /* Some error occurred during loading. */ char *local_errstring; + size_t len_errstring; /* Remove the object from memory. It may be in an inconsistent state if relocation failed, for example. */ if (args.map) - _dl_close (args.map); + { + unsigned int i; + + /* Increment open counters for all objects since this has + not happened yet. */ + for (i = 0; i < args.map->l_searchlist.r_nlist; ++i) + ++args.map->l_searchlist.r_list[i]->l_opencount; + + _dl_close (args.map); + } /* Make a local copy of the error string so that we can release the memory allocated for it. */ - local_errstring = strdupa (errstring); + len_errstring = strlen (errstring) + 1; + if (objname == errstring + len_errstring) + { + size_t total_len = len_errstring + strlen (objname) + 1; + local_errstring = alloca (total_len); + memcpy (local_errstring, errstring, total_len); + objname = local_errstring + len_errstring; + } + else + { + local_errstring = alloca (len_errstring); + memcpy (local_errstring, errstring, len_errstring); + } + if (errstring != _dl_out_of_memory) free ((char *) errstring); /* Reraise the error. */ _dl_signal_error (errcode, objname, local_errstring); } + +#ifndef SHARED + DL_STATIC_INIT (args.map); +#endif return args.map; } diff -adurpN glibc-2.2/elf/dl-profile.c glibc-2.2.1/elf/dl-profile.c --- glibc-2.2/elf/dl-profile.c Thu Aug 31 14:44:57 2000 +++ glibc-2.2.1/elf/dl-profile.c Wed Jan 10 15:54:22 2001 @@ -1,5 +1,5 @@ /* Profiling of shared libraries. - Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. Based on the BSD mcount implementation. @@ -256,7 +256,12 @@ _dl_start_profile (struct link_map *map, *cp++ = '/'; __stpcpy (__stpcpy (cp, _dl_profile), ".profile"); - fd = __open (filename, O_RDWR | O_CREAT, 0666); +#ifdef O_NOFOLLOW +# define EXTRA_FLAGS | O_NOFOLLOW +#else +# define EXTRA_FLAGS +#endif + fd = __open (filename, O_RDWR | O_CREAT EXTRA_FLAGS, 0666); if (fd == -1) { /* We cannot write the profiling data so don't do anything. */ @@ -538,5 +543,7 @@ _dl_mcount (ElfW(Addr) frompc, ElfW(Addr #if 0 /* XXX See above, Shouldn't be necessary anymore. */ state = GMON_PROF_ON; +#else + ; #endif } diff -adurpN glibc-2.2/elf/dl-support.c glibc-2.2.1/elf/dl-support.c --- glibc-2.2/elf/dl-support.c Sun Oct 8 17:04:48 2000 +++ glibc-2.2.1/elf/dl-support.c Sat Jan 6 20:35:11 2001 @@ -1,5 +1,5 @@ /* Support for dynamic linking code in static libc. - Copyright (C) 1996,97,98,99,2000 Free Software Foundation, Inc. + Copyright (C) 1996, 97, 98, 99, 2000, 2001 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 @@ -108,14 +108,35 @@ int _dl_starting_up = 1; __libc_lock_define_initialized_recursive (, _dl_load_lock) +#ifdef HAVE_AUX_VECTOR +extern int _dl_clktck; + +void +internal_function +_dl_aux_init (ElfW(auxv_t) *av) +{ + for (; av->a_type != AT_NULL; ++av) + switch (av->a_type) + { + case AT_PAGESZ: + _dl_pagesize = av->a_un.a_val; + break; + case AT_CLKTCK: + _dl_clktck = av->a_un.a_val; + break; + } +} +#endif + static void non_dynamic_init (void) __attribute__ ((unused)); static void non_dynamic_init (void) { - _dl_verbose = *(getenv ("LD_WARN") ?: "") == '\0' ? 0 : 1; + if (!_dl_pagesize) + _dl_pagesize = __getpagesize (); - _dl_pagesize = __getpagesize (); + _dl_verbose = *(getenv ("LD_WARN") ?: "") == '\0' ? 0 : 1; /* Initialize the data structures for the search paths for shared objects. */ diff -adurpN glibc-2.2/elf/dl-version.c glibc-2.2.1/elf/dl-version.c --- glibc-2.2/elf/dl-version.c Thu Oct 26 22:57:23 2000 +++ glibc-2.2.1/elf/dl-version.c Sat Jan 6 20:35:11 2001 @@ -95,7 +95,7 @@ match_symbol (const char *name, ElfW(Wor only print a message if verbose output is requested. */ if (verbose) /* XXX We cannot translate the messages. */ - _dl_signal_cerror (0, map->l_name, + _dl_signal_cerror (0, map->l_name[0] ? map->l_name : _dl_argv[0], make_string ("\ no version information available (required by ", name, ")")); @@ -115,7 +115,7 @@ no version information available (requir char buf[20]; buf[sizeof (buf) - 1] = '\0'; /* XXX We cannot translate the message. */ - _dl_signal_error (0, map->l_name, + _dl_signal_error (0, map->l_name[0] ? map->l_name : _dl_argv[0], make_string ("unsupported version ", _itoa_word (def->vd_version, &buf[sizeof (buf) - 1], @@ -149,7 +149,7 @@ no version information available (requir { if (verbose) /* XXX We cannot translate the message. */ - _dl_signal_cerror (0, map->l_name, + _dl_signal_cerror (0, map->l_name[0] ? map->l_name : _dl_argv[0], make_string ("weak version `", string, "' not found (required by ", name, ")")); @@ -157,7 +157,7 @@ no version information available (requir } /* XXX We cannot translate the message. */ - _dl_signal_cerror (0, map->l_name, + _dl_signal_cerror (0, map->l_name[0] ? map->l_name : _dl_argv[0], make_string ("version `", string, "' not found (required by ", name, ")")); return 1; diff -adurpN glibc-2.2/elf/failobj.c glibc-2.2.1/elf/failobj.c --- glibc-2.2/elf/failobj.c Mon Jan 25 09:37:23 1999 +++ glibc-2.2.1/elf/failobj.c Sat Jan 6 20:35:11 2001 @@ -1,6 +1,8 @@ /* This function is supposed to not exist. */ extern int xyzzy (int); +extern int foo (int); + int foo (int a) { diff -adurpN glibc-2.2/elf/filtmod1.c glibc-2.2.1/elf/filtmod1.c --- glibc-2.2/elf/filtmod1.c Thu Jul 20 23:57:29 2000 +++ glibc-2.2.1/elf/filtmod1.c Sat Jan 6 20:35:11 2001 @@ -1,3 +1,5 @@ +extern const char *foo (void); + const char * foo (void) { diff -adurpN glibc-2.2/elf/filtmod2.c glibc-2.2.1/elf/filtmod2.c --- glibc-2.2/elf/filtmod2.c Thu Jul 20 23:57:29 2000 +++ glibc-2.2.1/elf/filtmod2.c Sat Jan 6 20:35:11 2001 @@ -1,3 +1,5 @@ +extern const char *foo (void); + const char * foo (void) { diff -adurpN glibc-2.2/elf/ldconfig.c glibc-2.2.1/elf/ldconfig.c --- glibc-2.2/elf/ldconfig.c Sun Oct 8 17:04:48 2000 +++ glibc-2.2.1/elf/ldconfig.c Sat Jan 6 20:35:12 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1999, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Jaeger , 1999. @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -53,7 +54,7 @@ struct lib_entry { int flags; - unsigned long int hwcap; + uint64_t hwcap; char *lib; char *path; }; @@ -148,25 +149,31 @@ static struct argp argp = options, parse_opt, NULL, doc, NULL, NULL, NULL }; -/* Check if string corresponds to an important hardware capability. */ +/* Check if string corresponds to an important hardware capability or + a platform. */ static int -is_hwcap (const char *name) +is_hwcap_platform (const char *name) { int hwcap_idx = _dl_string_hwcap (name); if (hwcap_idx != -1 && ((1 << hwcap_idx) & HWCAP_IMPORTANT)) return 1; + + hwcap_idx = _dl_string_platform (name); + if (hwcap_idx != -1) + return 1; + return 0; } -/* Get hwcap encoding of path. */ -static unsigned long int +/* Get hwcap (including platform) encoding of path. */ +static uint64_t path_hwcap (const char *path) { char *str = xstrdup (path); char *ptr; - unsigned long int hwcap = 0; - unsigned long int h; + uint64_t hwcap = 0; + uint64_t h; size_t len; @@ -182,11 +189,15 @@ path_hwcap (const char *path) if (ptr == NULL) break; - h = _dl_string_hwcap (ptr+1); + h = _dl_string_hwcap (ptr + 1); - if (h == -1) - break; - hwcap += 1 << h; + if (h == (uint64_t) -1) + { + h = _dl_string_platform (ptr + 1); + if (h == (uint64_t) -1) + break; + } + hwcap += 1ULL << h; /* Search the next part of the path. */ *ptr = '\0'; @@ -254,7 +265,7 @@ print_version (FILE *stream, struct argp 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\ -"), "2000"); +"), "2001"); fprintf (stream, gettext ("Written by %s.\n"), "Andreas Jaeger"); } @@ -370,13 +381,13 @@ create_links (const char *real_path, con /* Get complete path. */ full_libname = alloca (strlen (path) + strlen (libname) + 2); - full_soname = alloca (strlen (path) + strlen (libname) + 2); + full_soname = alloca (strlen (path) + strlen (soname) + 2); sprintf (full_libname, "%s/%s", path, libname); sprintf (full_soname, "%s/%s", path, soname); if (opt_chroot) { real_full_libname = alloca (strlen (real_path) + strlen (libname) + 2); - real_full_soname = alloca (strlen (real_path) + strlen (libname) + 2); + real_full_soname = alloca (strlen (real_path) + strlen (soname) + 2); sprintf (real_full_libname, "%s/%s", real_path, libname); sprintf (real_full_soname, "%s/%s", real_path, soname); } @@ -576,7 +587,7 @@ search_dir (const struct dir_entry *entr struct dlib_entry *dlib_ptr; struct stat64 stat_buf; int is_link; - unsigned long int hwcap = path_hwcap (entry->path); + uint64_t hwcap = path_hwcap (entry->path); file_name_len = PATH_MAX; file_name = alloca (file_name_len); @@ -586,7 +597,7 @@ search_dir (const struct dir_entry *entr if (opt_verbose) { if (hwcap != 0) - printf ("%s: (hwcap: 0x%lx)\n", entry->path, hwcap); + printf ("%s: (hwcap: 0x%Lx)\n", entry->path, hwcap); else printf ("%s:\n", entry->path); } @@ -630,7 +641,7 @@ search_dir (const struct dir_entry *entr if (((strncmp (direntry->d_name, "lib", 3) != 0 && strncmp (direntry->d_name, "ld-", 3) != 0) || strstr (direntry->d_name, ".so") == NULL) - && !is_hwcap (direntry->d_name)) + && !is_hwcap_platform (direntry->d_name)) continue; len = strlen (entry->path) + strlen (direntry->d_name); if (len > file_name_len) @@ -662,7 +673,7 @@ search_dir (const struct dir_entry *entr continue; } - if (S_ISDIR (stat_buf.st_mode) && is_hwcap (direntry->d_name)) + if (S_ISDIR (stat_buf.st_mode) && is_hwcap_platform (direntry->d_name)) { /* Handle subdirectory later. */ struct dir_entry *new_entry; diff -adurpN glibc-2.2/elf/ldconfig.h glibc-2.2.1/elf/ldconfig.h --- glibc-2.2/elf/ldconfig.h Sun Oct 8 17:04:48 2000 +++ glibc-2.2.1/elf/ldconfig.h Thu Nov 16 11:12:01 2000 @@ -39,7 +39,7 @@ extern void init_cache (void); extern void save_cache (const char *cache_name); extern void add_to_cache (const char *path, const char *lib, int flags, - unsigned long int hwcap); + uint64_t hwcap); /* Declared in readlib.c. */ extern int process_file (const char *real_file_name, const char *file_name, diff -adurpN glibc-2.2/elf/loadfail.c glibc-2.2.1/elf/loadfail.c --- glibc-2.2/elf/loadfail.c Tue Aug 15 11:16:18 2000 +++ glibc-2.2.1/elf/loadfail.c Fri Dec 1 11:55:02 2000 @@ -34,6 +34,7 @@ main (void) return h != NULL; } +extern int foo (int a); int foo (int a) { diff -adurpN glibc-2.2/elf/loadtest.c glibc-2.2.1/elf/loadtest.c --- glibc-2.2/elf/loadtest.c Thu Oct 26 22:57:23 2000 +++ glibc-2.2.1/elf/loadtest.c Fri Dec 1 11:55:02 2000 @@ -146,7 +146,7 @@ main (int argc, char *argv[]) } /* Unload all loaded modules. */ - for (count = 0; count < NOBJS; ++count) + for (count = 0; count < (int) NOBJS; ++count) if (testobjs[count].handle != NULL) { printf ("\nclose: %s: l_initfini = %p, l_versions = %p\n", @@ -174,6 +174,7 @@ main (int argc, char *argv[]) } +extern int foo (int a); int foo (int a) { diff -adurpN glibc-2.2/elf/ltglobmod1.c glibc-2.2.1/elf/ltglobmod1.c --- glibc-2.2/elf/ltglobmod1.c Sat Oct 21 00:13:48 2000 +++ glibc-2.2.1/elf/ltglobmod1.c Sat Jan 6 20:35:12 2001 @@ -1,3 +1,5 @@ +extern int bar (void); + int bar (void) { diff -adurpN glibc-2.2/elf/ltglobmod2.c glibc-2.2.1/elf/ltglobmod2.c --- glibc-2.2/elf/ltglobmod2.c Sat Oct 21 00:13:48 2000 +++ glibc-2.2.1/elf/ltglobmod2.c Sat Jan 6 20:35:12 2001 @@ -3,6 +3,7 @@ #include extern int bar (void); +extern int foo (void); int foo (void) diff -adurpN glibc-2.2/elf/multiload.c glibc-2.2.1/elf/multiload.c --- glibc-2.2/elf/multiload.c Tue Aug 15 11:16:18 2000 +++ glibc-2.2.1/elf/multiload.c Fri Dec 1 11:55:02 2000 @@ -97,6 +97,7 @@ main (void) return 0; } +extern int foo (int a); int foo (int a) { diff -adurpN glibc-2.2/elf/neededobj1.c glibc-2.2.1/elf/neededobj1.c --- glibc-2.2/elf/neededobj1.c Fri Oct 20 17:00:36 2000 +++ glibc-2.2.1/elf/neededobj1.c Sat Jan 6 20:35:12 2001 @@ -1,3 +1,5 @@ +extern void c_function (void); + void c_function (void) { diff -adurpN glibc-2.2/elf/neededobj2.c glibc-2.2.1/elf/neededobj2.c --- glibc-2.2/elf/neededobj2.c Fri Oct 20 17:00:36 2000 +++ glibc-2.2.1/elf/neededobj2.c Sat Jan 6 20:35:12 2001 @@ -1,3 +1,4 @@ +extern void b_function (void); extern void c_function (void); void diff -adurpN glibc-2.2/elf/neededobj3.c glibc-2.2.1/elf/neededobj3.c --- glibc-2.2/elf/neededobj3.c Fri Oct 20 17:00:36 2000 +++ glibc-2.2.1/elf/neededobj3.c Sat Jan 6 20:35:12 2001 @@ -1,3 +1,4 @@ +extern void a_function (void); extern void b_function (void); extern void c_function (void); diff -adurpN glibc-2.2/elf/neededobj4.c glibc-2.2.1/elf/neededobj4.c --- glibc-2.2/elf/neededobj4.c Tue Oct 24 09:59:10 2000 +++ glibc-2.2.1/elf/neededobj4.c Sat Jan 6 20:35:12 2001 @@ -1,6 +1,7 @@ extern void a_function (void); extern void b_function (void); extern void c_function (void); +extern void d_function (void); void d_function (void) diff -adurpN glibc-2.2/elf/neededobj5.c glibc-2.2.1/elf/neededobj5.c --- glibc-2.2/elf/neededobj5.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/elf/neededobj5.c Sat Dec 30 22:08:17 2000 @@ -0,0 +1,5 @@ +extern void a1_function (void); + +void a1_function (void) +{ +} diff -adurpN glibc-2.2/elf/neededobj6.c glibc-2.2.1/elf/neededobj6.c --- glibc-2.2/elf/neededobj6.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/elf/neededobj6.c Sat Dec 30 22:08:30 2000 @@ -0,0 +1,7 @@ +extern void a1_function (void); +extern void a2_function (void); + +void a2_function (void) +{ + a1_function (); +} diff -adurpN glibc-2.2/elf/neededtest4.c glibc-2.2.1/elf/neededtest4.c --- glibc-2.2/elf/neededtest4.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/elf/neededtest4.c Sat Dec 30 22:07:57 2000 @@ -0,0 +1,156 @@ +#include +#include +#include +#include +#include +#include + +static int +check_loaded_objects (const char **loaded) +{ + struct link_map *lm; + int n; + int *found = NULL; + int errors = 0; + + for (n = 0; loaded[n]; n++) + /* NOTHING */; + + if (n) + { + found = (int *) alloca (sizeof (int) * n); + memset (found, 0, sizeof (int) * n); + } + + printf(" Name\n"); + printf(" --------------------------------------------------------\n"); + for (lm = _r_debug.r_map; lm; lm = lm->l_next) + { + if (lm->l_name && lm->l_name[0]) + printf(" %s, count = %d\n", lm->l_name, (int) lm->l_opencount); + if (lm->l_type == lt_loaded && lm->l_name) + { + int match = 0; + for (n = 0; loaded[n] != NULL; n++) + { + if (strcmp (basename (loaded[n]), basename (lm->l_name)) == 0) + { + found[n] = 1; + match = 1; + break; + } + } + + if (match == 0) + { + ++errors; + printf ("ERRORS: %s is not unloaded\n", lm->l_name); + } + } + } + + for (n = 0; loaded[n] != NULL; n++) + { + if (found[n] == 0) + { + ++errors; + printf ("ERRORS: %s is not loaded\n", loaded[n]); + } + } + + return errors; +} + +extern void c_function (void); +extern char *dirname (__const char *__filename); + +int +main (int argc, char **argv) +{ + void *obj; + const char *loaded[] = { NULL, NULL, NULL}; + int errors = 0; + void (*f) (void); + const char *dir = dirname (argv [0]); + char *oldfilename; + char *newfilename; + + c_function (); + + printf ("\nThis is what is in memory now:\n"); + errors += check_loaded_objects (loaded); + + printf( "Loading shared object neededobj6.so\n"); + obj = dlopen( "neededobj6.so", RTLD_LAZY); + if (obj == NULL) + { + printf ("%s\n", dlerror ()); + exit (1); + } + f = dlsym (obj, "a2_function"); + if (f == NULL) + { + printf ("%s\n", dlerror ()); + exit (1); + } + f (); + loaded[0] = "neededobj5.so"; + loaded[1] = "neededobj6.so"; + errors += check_loaded_objects (loaded); + + printf ("Closing neededobj6.so\n"); + dlclose (obj); + loaded[0] = NULL; + errors += check_loaded_objects (loaded); + + printf ("Rename neededobj5.so\n"); + oldfilename = alloca (strlen (dir) + 1 + sizeof ("neededobj5.so")); + strcpy (oldfilename, dir); + strcat (oldfilename, "/"); + strcat (oldfilename, "neededobj5.so"); + newfilename = alloca (strlen (oldfilename) + sizeof (".renamed")); + strcpy (newfilename, oldfilename); + strcat (newfilename, ".renamed"); + if (rename (oldfilename, newfilename)) + { + perror ("rename"); + exit (1); + } + + printf( "Loading shared object neededobj6.so\n"); + obj = dlopen( "neededobj6.so", RTLD_LAZY); + if (obj == NULL) + printf ("%s\n", dlerror ()); + else + { + printf ("neededobj6.so should fail to load\n"); + exit (1); + } + + printf( "Loading shared object neededobj1.so\n"); + obj = dlopen( "neededobj1.so", RTLD_LAZY); + if (obj == NULL) + { + printf ("%s\n", dlerror ()); + exit (1); + } + errors += check_loaded_objects (loaded); + f = dlsym (obj, "c_function"); + if (f == NULL) + { + printf ("%s\n", dlerror ()); + exit (1); + } + f (); + + printf ("Restore neededobj5.so\n"); + if (rename (newfilename, oldfilename)) + { + perror ("rename"); + exit (1); + } + + if (errors != 0) + printf ("%d errors found\n", errors); + return errors; +} diff -adurpN glibc-2.2/elf/next.c glibc-2.2.1/elf/next.c --- glibc-2.2/elf/next.c Fri Sep 15 10:27:03 2000 +++ glibc-2.2.1/elf/next.c Fri Dec 1 11:55:02 2000 @@ -5,7 +5,7 @@ extern int successful_rtld_next_test (vo extern void *failing_rtld_next_use (void); -int +static int do_test (void) { int result; diff -adurpN glibc-2.2/elf/nextmod1.c glibc-2.2.1/elf/nextmod1.c --- glibc-2.2/elf/nextmod1.c Sun Oct 8 17:04:48 2000 +++ glibc-2.2.1/elf/nextmod1.c Sat Jan 6 20:35:12 2001 @@ -1,5 +1,8 @@ #include +extern int successful_rtld_next_test (void); +extern void *failing_rtld_next_use (void); + int nextmod1_dummy_var; int diff -adurpN glibc-2.2/elf/nextmod2.c glibc-2.2.1/elf/nextmod2.c --- glibc-2.2/elf/nextmod2.c Fri Sep 15 10:27:18 2000 +++ glibc-2.2.1/elf/nextmod2.c Sat Jan 6 20:35:12 2001 @@ -1,4 +1,8 @@ /* Very elaborated function. */ + +extern int successful_rtld_next_test (void); + + int successful_rtld_next_test (void) { diff -adurpN glibc-2.2/elf/nodelete.c glibc-2.2.1/elf/nodelete.c --- glibc-2.2/elf/nodelete.c Thu Aug 31 14:44:57 2000 +++ glibc-2.2.1/elf/nodelete.c Fri Dec 1 11:55:02 2000 @@ -11,6 +11,7 @@ int fini_ran; static void +__attribute__ ((noreturn)) handler (int sig) { siglongjmp (jmpbuf, 1); diff -adurpN glibc-2.2/elf/nodelmod3.c glibc-2.2.1/elf/nodelmod3.c --- glibc-2.2/elf/nodelmod3.c Thu Jul 20 21:36:29 2000 +++ glibc-2.2.1/elf/nodelmod3.c Sat Jan 6 20:35:12 2001 @@ -1,4 +1,5 @@ extern int var_in_mod4; +extern int *addr (void); int * addr (void) diff -adurpN glibc-2.2/elf/noload.c glibc-2.2.1/elf/noload.c --- glibc-2.2/elf/noload.c Thu Jul 20 15:49:36 2000 +++ glibc-2.2.1/elf/noload.c Fri Dec 1 11:55:02 2000 @@ -63,6 +63,7 @@ main (void) } +extern int foo (int a); int foo (int a) { diff -adurpN glibc-2.2/elf/order.c glibc-2.2.1/elf/order.c --- glibc-2.2/elf/order.c Fri Mar 31 09:08:48 2000 +++ glibc-2.2.1/elf/order.c Fri Dec 1 11:55:02 2000 @@ -1,5 +1,6 @@ #include +void init (void) __attribute__ ((constructor)); void __attribute__ ((constructor)) init (void) @@ -7,6 +8,7 @@ init (void) write (1, "4", 1); } +void fini (void) __attribute__ ((destructor)); void __attribute__ ((destructor)) fini (void) diff -adurpN glibc-2.2/elf/origtest.c glibc-2.2.1/elf/origtest.c --- glibc-2.2/elf/origtest.c Wed May 5 16:26:10 1999 +++ glibc-2.2.1/elf/origtest.c Fri Dec 1 11:55:02 2000 @@ -31,6 +31,7 @@ main (void) } +extern int foo (int a); int foo (int a) { diff -adurpN glibc-2.2/elf/pathoptobj.c glibc-2.2.1/elf/pathoptobj.c --- glibc-2.2/elf/pathoptobj.c Sun Oct 29 16:10:32 2000 +++ glibc-2.2.1/elf/pathoptobj.c Sat Jan 6 20:35:12 2001 @@ -1,3 +1,6 @@ +extern int in_renamed (int); + + int in_renamed (int a) { diff -adurpN glibc-2.2/elf/preloadtest.c glibc-2.2.1/elf/preloadtest.c --- glibc-2.2/elf/preloadtest.c Tue Jan 19 16:31:44 1999 +++ glibc-2.2.1/elf/preloadtest.c Sat Jan 6 20:35:12 2001 @@ -1,6 +1,6 @@ #include -extern int preload (int); +#include "testobj.h" int main (void) diff -adurpN glibc-2.2/elf/reldepmod1.c glibc-2.2.1/elf/reldepmod1.c --- glibc-2.2/elf/reldepmod1.c Sat Aug 26 16:38:32 2000 +++ glibc-2.2.1/elf/reldepmod1.c Sat Jan 6 20:35:12 2001 @@ -1,4 +1,7 @@ +extern int foo (void); + int some_var; + int foo (void) diff -adurpN glibc-2.2/elf/reldepmod2.c glibc-2.2.1/elf/reldepmod2.c --- glibc-2.2/elf/reldepmod2.c Sat Aug 26 16:38:32 2000 +++ glibc-2.2.1/elf/reldepmod2.c Sat Jan 6 20:35:12 2001 @@ -1,4 +1,5 @@ extern int foo (void); +extern int call_me (void); int call_me (void) diff -adurpN glibc-2.2/elf/reldepmod3.c glibc-2.2.1/elf/reldepmod3.c --- glibc-2.2/elf/reldepmod3.c Sat Aug 26 18:44:13 2000 +++ glibc-2.2.1/elf/reldepmod3.c Sat Jan 6 20:35:12 2001 @@ -2,6 +2,8 @@ #include #include +extern int call_me (void); + int call_me (void) { diff -adurpN glibc-2.2/elf/reldepmod4.c glibc-2.2.1/elf/reldepmod4.c --- glibc-2.2/elf/reldepmod4.c Sat Aug 26 18:44:04 2000 +++ glibc-2.2.1/elf/reldepmod4.c Sat Jan 6 20:35:12 2001 @@ -2,6 +2,8 @@ #include #include +extern int call_me (void); + int call_me (void) { diff -adurpN glibc-2.2/elf/restest1.c glibc-2.2.1/elf/restest1.c --- glibc-2.2/elf/restest1.c Thu Aug 31 14:44:57 2000 +++ glibc-2.2.1/elf/restest1.c Fri Dec 1 11:55:02 2000 @@ -49,6 +49,7 @@ main (void) } +extern int foo (int a); int foo (int a) { diff -adurpN glibc-2.2/elf/rtld.c glibc-2.2.1/elf/rtld.c --- glibc-2.2/elf/rtld.c Thu Oct 26 22:57:23 2000 +++ glibc-2.2.1/elf/rtld.c Wed Jan 10 15:54:22 2001 @@ -1,5 +1,5 @@ /* Run time dynamic linker. - Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1995-1999, 2000, 2001 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 @@ -34,25 +34,6 @@ #include -/* System-specific function to do initial startup for the dynamic linker. - After this, file access calls and getenv must work. This is responsible - for setting __libc_enable_secure if we need to be secure (e.g. setuid), - and for setting _dl_argc and _dl_argv, and then calling _dl_main. */ -extern ElfW(Addr) _dl_sysdep_start (void **start_argptr, - void (*dl_main) (const ElfW(Phdr) *phdr, - ElfW(Half) phent, - ElfW(Addr) *user_entry)); -extern void _dl_sysdep_start_cleanup (void); - -/* This function is used to unload the cache file if necessary. */ -extern void _dl_unload_cache (void); - -/* System-dependent function to read a file's whole contents - in the most convenient manner available. */ -extern void *_dl_sysdep_read_whole_file (const char *filename, - size_t *filesize_ptr, - int mmap_prot); - /* Helper function to handle errors while resolving symbols. */ static void print_unresolved (int errcode, const char *objname, const char *errsting); @@ -138,7 +119,7 @@ int _dl_starting_up; static void dl_main (const ElfW(Phdr) *phdr, - ElfW(Half) phent, + ElfW(Word) phnum, ElfW(Addr) *user_entry); struct link_map _dl_rtld_map; @@ -390,7 +371,7 @@ static int version_info; /* Nonzero if static void dl_main (const ElfW(Phdr) *phdr, - ElfW(Half) phent, + ElfW(Word) phnum, ElfW(Addr) *user_entry) { const ElfW(Phdr) *ph; @@ -532,7 +513,7 @@ of this helper program; chances are you } phdr = _dl_loaded->l_phdr; - phent = _dl_loaded->l_phnum; + phnum = _dl_loaded->l_phnum; /* We overwrite here a pointer to a malloc()ed string. But since the malloc() implementation used at this point is the dummy implementations which has no real free() function it does not @@ -548,7 +529,7 @@ of this helper program; chances are you if (_dl_loaded == NULL) _dl_sysdep_fatal ("cannot allocate memory for link map\n", NULL); _dl_loaded->l_phdr = phdr; - _dl_loaded->l_phnum = phent; + _dl_loaded->l_phnum = phnum; _dl_loaded->l_entry = *user_entry; /* At this point we are in a bit of trouble. We would have to @@ -576,7 +557,7 @@ of this helper program; chances are you _dl_loaded->l_map_start = ~0; /* Scan the program header table for the dynamic section. */ - for (ph = phdr; ph < &phdr[phent]; ++ph) + for (ph = phdr; ph < &phdr[phnum]; ++ph) switch (ph->p_type) { case PT_PHDR: @@ -1341,7 +1322,7 @@ process_envvars (enum mode *modep, int * char *debug_output = NULL; /* This is the default place for profiling data file. */ - _dl_profile_output = "/var/tmp"; + _dl_profile_output = __libc_enable_secure ? "/var/profile" : "/var/tmp"; while ((envline = _dl_next_ld_env_entry (&runp)) != NULL) { diff -adurpN glibc-2.2/elf/soinit.c glibc-2.2.1/elf/soinit.c --- glibc-2.2/elf/soinit.c Sun Oct 8 17:04:48 2000 +++ glibc-2.2.1/elf/soinit.c Sat Jan 6 20:35:12 2001 @@ -3,9 +3,11 @@ the `.ctors' and `.dtors' sections so the lists are terminated, and calling those lists of functions. */ -# ifdef HAVE_DWARF2_UNWIND_INFO_STATIC +#include + +#ifdef HAVE_DWARF2_UNWIND_INFO_STATIC # include -# endif +#endif static void (*const __CTOR_LIST__[1]) (void) __attribute__ ((section (".ctors"))) diff -adurpN glibc-2.2/elf/sprof.c glibc-2.2.1/elf/sprof.c --- glibc-2.2/elf/sprof.c Wed Jun 21 11:10:54 2000 +++ glibc-2.2.1/elf/sprof.c Sat Jan 6 20:35:12 2001 @@ -1,5 +1,5 @@ /* Read and display shared object profiling data. - Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -357,7 +357,7 @@ Copyright (C) %s Free Software Foundatio 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\ "), - "2000"); + "2001"); fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper"); } diff -adurpN glibc-2.2/elf/testobj.h glibc-2.2.1/elf/testobj.h --- glibc-2.2/elf/testobj.h Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/elf/testobj.h Fri Dec 15 08:01:48 2000 @@ -0,0 +1,28 @@ +extern int preload (int a); + +extern int foo (int); + +extern int obj1func1 (int); + +extern int obj1func2 (int); + +extern int obj2func1 (int); + +extern int obj2func2 (int); + +extern int obj3func1 (int); + +extern int obj3func2 (int); + +extern int obj4func1 (int); + +extern int obj4func2 (int); + +extern int obj5func1 (int); + +extern int obj5func2 (int); + +extern int obj6func1 (int); + +extern int obj6func2 (int); + diff -adurpN glibc-2.2/elf/testobj1.c glibc-2.2.1/elf/testobj1.c --- glibc-2.2/elf/testobj1.c Thu Jan 21 09:09:42 1999 +++ glibc-2.2.1/elf/testobj1.c Sat Jan 6 20:35:12 2001 @@ -1,7 +1,7 @@ #include #include -extern int foo (int); +#include "testobj.h" int obj1func1 (int a __attribute__ ((unused))) diff -adurpN glibc-2.2/elf/testobj1_1.c glibc-2.2.1/elf/testobj1_1.c --- glibc-2.2/elf/testobj1_1.c Thu Jan 21 09:09:43 1999 +++ glibc-2.2.1/elf/testobj1_1.c Sat Jan 6 20:35:12 2001 @@ -1,4 +1,4 @@ -extern int obj1func2 (int); +#include "testobj.h" int obj1func1 (int a) diff -adurpN glibc-2.2/elf/testobj2.c glibc-2.2.1/elf/testobj2.c --- glibc-2.2/elf/testobj2.c Thu Jan 21 09:09:45 1999 +++ glibc-2.2.1/elf/testobj2.c Sat Jan 6 20:35:12 2001 @@ -1,7 +1,7 @@ #include #include -extern int obj1func1 (int); +#include "testobj.h" int obj2func1 (int a __attribute__ ((unused))) diff -adurpN glibc-2.2/elf/testobj3.c glibc-2.2.1/elf/testobj3.c --- glibc-2.2/elf/testobj3.c Thu Jan 21 09:09:46 1999 +++ glibc-2.2.1/elf/testobj3.c Sat Jan 6 20:35:12 2001 @@ -1,7 +1,8 @@ #include #include -extern int foo (int); +#include "testobj.h" + int obj3func1 (int a __attribute__ ((unused))) diff -adurpN glibc-2.2/elf/testobj4.c glibc-2.2.1/elf/testobj4.c --- glibc-2.2/elf/testobj4.c Thu Jan 21 09:09:47 1999 +++ glibc-2.2.1/elf/testobj4.c Sat Jan 6 20:35:12 2001 @@ -1,7 +1,7 @@ #include #include -extern int foo (int); +#include "testobj.h" int obj4func1 (int a __attribute__ ((unused))) diff -adurpN glibc-2.2/elf/testobj5.c glibc-2.2.1/elf/testobj5.c --- glibc-2.2/elf/testobj5.c Thu Jan 21 09:09:48 1999 +++ glibc-2.2.1/elf/testobj5.c Sat Jan 6 20:35:12 2001 @@ -1,7 +1,8 @@ #include #include -extern int foo (int); +#include "testobj.h" + int obj5func1 (int a __attribute__ ((unused))) diff -adurpN glibc-2.2/elf/testobj6.c glibc-2.2.1/elf/testobj6.c --- glibc-2.2/elf/testobj6.c Thu Jan 21 09:09:49 1999 +++ glibc-2.2.1/elf/testobj6.c Sat Jan 6 20:35:12 2001 @@ -1,4 +1,4 @@ -extern int foo (int); +#include "testobj.h" int obj6func1 (int a __attribute__ ((unused))) diff -adurpN glibc-2.2/elf/unload2dep.c glibc-2.2.1/elf/unload2dep.c --- glibc-2.2/elf/unload2dep.c Fri Oct 20 19:05:33 2000 +++ glibc-2.2.1/elf/unload2dep.c Sat Jan 6 20:35:12 2001 @@ -1,3 +1,5 @@ +extern void foo (void); + void foo (void) { diff -adurpN glibc-2.2/elf/unload2mod.c glibc-2.2.1/elf/unload2mod.c --- glibc-2.2/elf/unload2mod.c Fri Oct 20 19:05:33 2000 +++ glibc-2.2.1/elf/unload2mod.c Sat Jan 6 20:35:12 2001 @@ -1,4 +1,5 @@ extern void foo (void); +extern void bar (void); void bar (void) diff -adurpN glibc-2.2/elf/vismain.c glibc-2.2.1/elf/vismain.c --- glibc-2.2/elf/vismain.c Wed May 31 11:10:39 2000 +++ glibc-2.2.1/elf/vismain.c Sat Jan 6 20:35:12 2001 @@ -20,6 +20,8 @@ #include #include +#include "vismod.h" + /* Prototype for our test function. */ extern int do_test (void); @@ -28,31 +30,6 @@ extern int do_test (void); /* This defines the `main' function and some more. */ #include -/* Prototypes for the functions in the DSOs. */ -extern int calllocal1 (void); -extern int (*getlocal1 (void)) (void); -extern int callinmod1 (void); -extern int (*getinmod1 (void)) (void); -extern int callitcpt1 (void); -extern int (*getitcpt1 (void)) (void); -extern const char *getvarlocal1 (void); -extern const char *getvarinmod1 (void); -extern const char *getvaritcpt1 (void); -extern int calllocal2 (void); -extern int (*getlocal2 (void)) (void); -extern int callinmod2 (void); -extern int (*getinmod2 (void)) (void); -extern int callitcpt2 (void); -extern int (*getitcpt2 (void)) (void); -extern const char *getvarlocal2 (void); -extern const char *getvarinmod2 (void); -extern const char *getvaritcpt2 (void); -extern int callitcpt3 (void); -extern int (*getitcpt3 (void)) (void); -extern const char *getvaritcpt3 (void); - -extern int protinmod (void); -extern int protitcpt (void); /* Prototypes for local functions. */ extern int protlocal (void); diff -adurpN glibc-2.2/elf/vismod.h glibc-2.2.1/elf/vismod.h --- glibc-2.2/elf/vismod.h Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/elf/vismod.h Sun Dec 17 09:07:45 2000 @@ -0,0 +1,27 @@ +/* Prototypes for the functions in the DSOs. */ +extern int calllocal1 (void); +extern int (*getlocal1 (void)) (void); +extern int callinmod1 (void); +extern int (*getinmod1 (void)) (void); +extern int callitcpt1 (void); +extern int (*getitcpt1 (void)) (void); +extern const char *getvarlocal1 (void); +extern const char *getvarinmod1 (void); +extern const char *getvaritcpt1 (void); +extern int calllocal2 (void); +extern int (*getlocal2 (void)) (void); +extern int callinmod2 (void); +extern int (*getinmod2 (void)) (void); +extern int callitcpt2 (void); +extern int (*getitcpt2 (void)) (void); +extern const char *getvarlocal2 (void); +extern const char *getvarinmod2 (void); +extern const char *getvaritcpt2 (void); +extern int callitcpt3 (void); +extern int (*getitcpt3 (void)) (void); +extern const char *getvaritcpt3 (void); + +extern int protinmod (void); +extern int protitcpt (void); +extern int protlocal (void); + diff -adurpN glibc-2.2/elf/vismod1.c glibc-2.2.1/elf/vismod1.c --- glibc-2.2/elf/vismod1.c Tue May 23 11:12:26 2000 +++ glibc-2.2.1/elf/vismod1.c Sat Jan 6 20:35:12 2001 @@ -16,6 +16,8 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include "vismod.h" + int protlocal (void) { diff -adurpN glibc-2.2/elf/vismod2.c glibc-2.2.1/elf/vismod2.c --- glibc-2.2/elf/vismod2.c Wed Jun 21 11:10:54 2000 +++ glibc-2.2.1/elf/vismod2.c Sat Jan 6 20:35:12 2001 @@ -17,6 +17,7 @@ Boston, MA 02111-1307, USA. */ #include +#include "vismod.h" int protlocal (void) diff -adurpN glibc-2.2/elf/vismod3.c glibc-2.2.1/elf/vismod3.c --- glibc-2.2/elf/vismod3.c Tue May 23 11:12:26 2000 +++ glibc-2.2.1/elf/vismod3.c Sat Jan 6 20:35:12 2001 @@ -16,6 +16,8 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include "vismod.h" + int protitcpt (void) { diff -adurpN glibc-2.2/gmon/bb_exit_func.c glibc-2.2.1/gmon/bb_exit_func.c --- glibc-2.2/gmon/bb_exit_func.c Wed Jul 15 17:37:21 1998 +++ glibc-2.2.1/gmon/bb_exit_func.c Sat Jan 6 20:35:12 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by David Mosberger (davidm@cs.arizona.edu). @@ -20,25 +20,13 @@ /* __bb_exit_func() dumps all the basic-block statistics linked into the __bb_head chain to .d files. */ +#include #include #include #include #include -/* structure emitted by -a */ -struct bb - { - long int zero_word; - const char *filename; - long int *counts; - long int ncounts; - struct bb *next; - const unsigned long int *addresses; - }; - -extern struct bb *__bb_head; /* from gmon.c */ - #define OUT_NAME "gmon.out" @@ -47,7 +35,7 @@ __bb_exit_func (void) { const int version = GMON_VERSION; struct gmon_hdr ghdr; - struct bb *ptr; + struct __bb *ptr; FILE *fp; fp = fopen (OUT_NAME, "wb"); if (!fp) diff -adurpN glibc-2.2/gmon/gmon.c glibc-2.2.1/gmon/gmon.c --- glibc-2.2/gmon/gmon.c Fri Apr 21 12:25:18 2000 +++ glibc-2.2.1/gmon/gmon.c Sat Jan 6 20:35:12 2001 @@ -41,8 +41,7 @@ #include #include #include - -extern int __profile_frequency __P ((void)); +#include struct __bb *__bb_head; /* Head of basic-block list or NULL. */ diff -adurpN glibc-2.2/grp/testgrp.c glibc-2.2.1/grp/testgrp.c --- glibc-2.2/grp/testgrp.c Wed Oct 30 18:51:05 1996 +++ glibc-2.2.1/grp/testgrp.c Sat Jan 6 20:35:12 2001 @@ -37,5 +37,5 @@ main (int argc, char *argv[]) } } - exit (my_passwd && my_group ? EXIT_SUCCESS : EXIT_FAILURE); + return my_passwd && my_group ? EXIT_SUCCESS : EXIT_FAILURE; } diff -adurpN glibc-2.2/hesiod/nss_hesiod/hesiod-grp.c glibc-2.2.1/hesiod/nss_hesiod/hesiod-grp.c --- glibc-2.2/hesiod/nss_hesiod/hesiod-grp.c Thu Oct 26 22:57:23 2000 +++ glibc-2.2.1/hesiod/nss_hesiod/hesiod-grp.c Sat Jan 6 20:35:12 2001 @@ -36,7 +36,7 @@ #include enum nss_status -_nss_hesiod_setgrent (void) +_nss_hesiod_setgrent (int stayopen) { return NSS_STATUS_SUCCESS; } diff -adurpN glibc-2.2/hesiod/nss_hesiod/hesiod-proto.c glibc-2.2.1/hesiod/nss_hesiod/hesiod-proto.c --- glibc-2.2/hesiod/nss_hesiod/hesiod-proto.c Thu Jul 20 18:35:34 2000 +++ glibc-2.2.1/hesiod/nss_hesiod/hesiod-proto.c Sat Jan 6 20:35:12 2001 @@ -46,7 +46,7 @@ LINE_PARSER ) enum nss_status -_nss_hesiod_setprotoent (void) +_nss_hesiod_setprotoent (int stayopen) { return NSS_STATUS_SUCCESS; } diff -adurpN glibc-2.2/hesiod/nss_hesiod/hesiod-pwd.c glibc-2.2.1/hesiod/nss_hesiod/hesiod-pwd.c --- glibc-2.2/hesiod/nss_hesiod/hesiod-pwd.c Wed Aug 2 14:52:01 2000 +++ glibc-2.2.1/hesiod/nss_hesiod/hesiod-pwd.c Sat Jan 6 20:35:12 2001 @@ -34,7 +34,7 @@ #include enum nss_status -_nss_hesiod_setpwent (void) +_nss_hesiod_setpwent (int stayopen) { return NSS_STATUS_SUCCESS; } diff -adurpN glibc-2.2/hesiod/nss_hesiod/hesiod-service.c glibc-2.2.1/hesiod/nss_hesiod/hesiod-service.c --- glibc-2.2/hesiod/nss_hesiod/hesiod-service.c Wed Aug 2 14:52:01 2000 +++ glibc-2.2.1/hesiod/nss_hesiod/hesiod-service.c Sat Jan 6 20:35:12 2001 @@ -47,7 +47,7 @@ LINE_PARSER ) enum nss_status -_nss_hesiod_setservent (void) +_nss_hesiod_setservent (int stayopen) { return NSS_STATUS_SUCCESS; } diff -adurpN glibc-2.2/hurd/get-host.c glibc-2.2.1/hurd/get-host.c --- glibc-2.2/hurd/get-host.c Tue May 11 12:39:09 1999 +++ glibc-2.2.1/hurd/get-host.c Thu Nov 16 11:12:01 2000 @@ -1,5 +1,5 @@ /* Get a host configuration item kept as the whole contents of a file. - Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1999, 2000 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 @@ -70,10 +70,17 @@ _hurd_get_host_config (const char *item, *buf = '\0'; return 0; } - + /* Remove newlines in case someone wrote the file by hand. */ - while (buf[nread - 1] == '\n') + while (nread > 0 && buf[nread - 1] == '\n') buf[--nread] = '\0'; + + /* Null-terminate the result if there is enough space. */ + if (nread < buflen) + buf[nread] = '\0'; + else + if (buf[nread - 1] != '\0') + more = 1; if (more) /* If we didn't read the whole file, tell the caller to use a bigger diff -adurpN glibc-2.2/hurd/hurd/ioctl.h glibc-2.2.1/hurd/hurd/ioctl.h --- glibc-2.2/hurd/hurd/ioctl.h Fri Jun 20 18:15:36 1997 +++ glibc-2.2.1/hurd/hurd/ioctl.h Sat Jan 6 20:35:12 2001 @@ -1,5 +1,5 @@ /* User-registered handlers for specific `ioctl' requests. - Copyright (C) 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc. + Copyright (C) 1993,94,95,96,97,2000 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 @@ -53,17 +53,20 @@ extern int hurd_register_ioctl_handler ( LAST inclusive. The last element gratuitously references HANDLER to avoid `defined but not used' warnings. */ -#define _HURD_HANDLE_IOCTLS(handler, first, last) \ - static const struct ioctl_handler handler##_ioctl_handler \ +#define _HURD_HANDLE_IOCTLS_1(handler, first, last, moniker) \ + static const struct ioctl_handler handler##_ioctl_handler##moniker \ __attribute__ ((__unused__)) = \ { _IOC_NOTYPE (first), _IOC_NOTYPE (last), \ (int (*) (int, int, void *)) (handler), NULL }; \ - text_set_element (_hurd_ioctl_handler_lists, ##handler##_ioctl_handler) + text_set_element (_hurd_ioctl_handler_lists, \ + ##handler##_ioctl_handler##moniker) +#define _HURD_HANDLE_IOCTLS(handler, first, last) \ + _HURD_HANDLE_IOCTLS_1 (handler, first, last, first##_to_##last) /* Define a library-internal handler for a single ioctl command. */ #define _HURD_HANDLE_IOCTL(handler, ioctl) \ - _HURD_HANDLE_IOCTLS (handler, (ioctl), (ioctl)) + _HURD_HANDLE_IOCTLS_1 (handler, ioctl, ioctl, ioctl##_only) /* Lookup the handler for the given ioctl request. */ diff -adurpN glibc-2.2/iconv/Makefile glibc-2.2.1/iconv/Makefile --- glibc-2.2/iconv/Makefile Tue Jun 13 13:17:35 2000 +++ glibc-2.2.1/iconv/Makefile Sat Jan 6 20:35:12 2001 @@ -1,4 +1,4 @@ -# Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc. +# Copyright (C) 1997, 1998, 2000, 2001 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 @@ -34,7 +34,7 @@ CFLAGS-gconv_db.c = -DSTATIC_GCONV CFLAGS-gconv_simple.c = -DSTATIC_GCONV endif -tests = tst-iconv1 +tests = tst-iconv1 tst-iconv2 tst-iconv3 distribute = gconv_builtin.h gconv_int.h loop.c skeleton.c diff -adurpN glibc-2.2/iconv/gconv.c glibc-2.2.1/iconv/gconv.c --- glibc-2.2/iconv/gconv.c Wed Jun 21 11:10:55 2000 +++ glibc-2.2.1/iconv/gconv.c Wed Nov 22 10:59:47 2000 @@ -20,7 +20,7 @@ Boston, MA 02111-1307, USA. */ #include -#include +#include #include #include #include diff -adurpN glibc-2.2/iconv/gconv.h glibc-2.2.1/iconv/gconv.h --- glibc-2.2/iconv/gconv.h Sun Oct 8 17:04:48 2000 +++ glibc-2.2.1/iconv/gconv.h Fri Dec 1 11:55:02 2000 @@ -115,8 +115,8 @@ struct __gconv_step int __counter; - __const char *__from_name; - __const char *__to_name; + char *__from_name; + char *__to_name; __gconv_fct __fct; __gconv_init_fct __init_fct; @@ -168,7 +168,7 @@ typedef struct __gconv_info { size_t __nsteps; struct __gconv_step *__steps; - __extension__ struct __gconv_step_data __data[0]; + __extension__ struct __gconv_step_data __data __flexarr; } *__gconv_t; #endif /* gconv.h */ diff -adurpN glibc-2.2/iconv/gconv_builtin.h glibc-2.2.1/iconv/gconv_builtin.h --- glibc-2.2/iconv/gconv_builtin.h Wed Aug 2 14:52:02 2000 +++ glibc-2.2.1/iconv/gconv_builtin.h Wed Nov 22 10:59:47 2000 @@ -76,6 +76,28 @@ BUILTIN_TRANSFORMATION ("INTERNAL", "ISO 4, 4, 2, 2) +BUILTIN_ALIAS ("ANSI_X3.4//", "ANSI_X3.4-1968//") +BUILTIN_ALIAS ("ISO-IR-6//", "ANSI_X3.4-1968//") +BUILTIN_ALIAS ("ANSI_X3.4-1986//", "ANSI_X3.4-1968//") +BUILTIN_ALIAS ("ISO_646.IRV:1991//", "ANSI_X3.4-1968//") +BUILTIN_ALIAS ("ASCII//", "ANSI_X3.4-1968//") +BUILTIN_ALIAS ("ISO646-US//", "ANSI_X3.4-1968//") +BUILTIN_ALIAS ("US-ASCII//", "ANSI_X3.4-1968//") +BUILTIN_ALIAS ("US//", "ANSI_X3.4-1968//") +BUILTIN_ALIAS ("IBM367//", "ANSI_X3.4-1968//") +BUILTIN_ALIAS ("CP367//", "ANSI_X3.4-1968//") +BUILTIN_ALIAS ("CSASCII//", "ANSI_X3.4-1968//") +BUILTIN_ALIAS ("OSF00010020//", "ANSI_X3.4-1968//") + +BUILTIN_TRANSFORMATION ("ANSI_X3.4-1968//", "INTERNAL", 1, "=ascii->INTERNAL", + __gconv_transform_ascii_internal, NULL, NULL, + 4, 4, 1, 1) + +BUILTIN_TRANSFORMATION ("INTERNAL", "ANSI_X3.4-1968//", 1, "=INTERNAL->ascii", + __gconv_transform_internal_ascii, NULL, NULL, + 4, 4, 1, 1) + + #if BYTE_ORDER == BIG_ENDIAN BUILTIN_ALIAS ("UNICODEBIG//", "ISO-10646/UCS2/") BUILTIN_ALIAS ("UCS-2BE//", "ISO-10646/UCS2/") diff -adurpN glibc-2.2/iconv/gconv_conf.c glibc-2.2.1/iconv/gconv_conf.c --- glibc-2.2/iconv/gconv_conf.c Sun Oct 8 17:04:48 2000 +++ glibc-2.2.1/iconv/gconv_conf.c Fri Dec 1 11:55:02 2000 @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -38,7 +39,7 @@ static const char default_gconv_path[] = /* The path elements, as determined by the __gconv_get_path function. All path elements end in a slash. */ -const struct path_elem *__gconv_path_elem; +struct path_elem *__gconv_path_elem; /* Maximum length of a single path element in __gconv_path_elem. */ size_t __gconv_max_path_elem_len; @@ -195,8 +196,20 @@ insert_module (struct gconv_module *newp if (root != NULL) { - /* This is a no new conversion. */ - if (tobefreed) + /* This is a no new conversion. But maybe the cost is + better. */ + if (newp->cost_hi < root->cost_hi + || (newp->cost_hi == root->cost_hi + && newp->cost_lo < root->cost_lo)) + { + newp->left = root->left; + newp->right = root->right; + newp->same = root->same; + *rootp = newp; + + free (root); + } + else if (tobefreed) free (newp); return; } @@ -283,7 +296,7 @@ add_module (char *rp, const char *direct /* See whether we must add the ending. */ need_ext = 0; - if (wp - module < sizeof (gconv_module_ext) + if (wp - module < (ptrdiff_t) sizeof (gconv_module_ext) || memcmp (wp - sizeof (gconv_module_ext), gconv_module_ext, sizeof (gconv_module_ext)) != 0) /* We must add the module extension. */ @@ -304,23 +317,19 @@ add_module (char *rp, const char *direct { char *tmp; - new_module->from_string = memcpy ((char *) new_module - + sizeof (struct gconv_module), - from, to - from); + new_module->from_string = tmp = (char *) (new_module + 1); + tmp = __mempcpy (tmp, from, to - from); - new_module->to_string = memcpy ((char *) new_module->from_string - + (to - from), to, module - to); + new_module->to_string = tmp; + tmp = __mempcpy (tmp, to, module - to); new_module->cost_hi = cost_hi; new_module->cost_lo = modcounter; - new_module->module_name = (char *) new_module->to_string + (module - to); + new_module->module_name = tmp; - if (dir_len == 0) - tmp = (char *) new_module->module_name; - else - tmp = __mempcpy ((char *) new_module->module_name, - directory, dir_len); + if (dir_len != 0) + tmp = __mempcpy (tmp, directory, dir_len); tmp = __mempcpy (tmp, module, wp - module); @@ -342,7 +351,7 @@ read_conf_file (const char *filename, co FILE *fp = fopen (filename, "r"); char *line = NULL; size_t line_len = 0; - int modcounter = 0; + static int modcounter; /* Don't complain if a file is not present or readable, simply silently ignore it. */ diff -adurpN glibc-2.2/iconv/gconv_db.c glibc-2.2.1/iconv/gconv_db.c --- glibc-2.2/iconv/gconv_db.c Thu Sep 7 11:56:23 2000 +++ glibc-2.2.1/iconv/gconv_db.c Wed Nov 22 10:59:47 2000 @@ -44,8 +44,8 @@ __libc_lock_define_initialized (static, int __gconv_alias_compare (const void *p1, const void *p2) { - struct gconv_alias *s1 = (struct gconv_alias *) p1; - struct gconv_alias *s2 = (struct gconv_alias *) p2; + const struct gconv_alias *s1 = (const struct gconv_alias *) p1; + const struct gconv_alias *s2 = (const struct gconv_alias *) p2; return strcmp (s1->fromname, s2->fromname); } @@ -90,8 +90,8 @@ struct known_derivation static int derivation_compare (const void *p1, const void *p2) { - struct known_derivation *s1 = (struct known_derivation *) p1; - struct known_derivation *s2 = (struct known_derivation *) p2; + const struct known_derivation *s1 = (const struct known_derivation *) p1; + const struct known_derivation *s2 = (const struct known_derivation *) p2; int result; result = strcmp (s1->from, s2->from); diff -adurpN glibc-2.2/iconv/gconv_dl.c glibc-2.2.1/iconv/gconv_dl.c --- glibc-2.2/iconv/gconv_dl.c Thu Sep 14 12:24:07 2000 +++ glibc-2.2.1/iconv/gconv_dl.c Wed Nov 22 10:59:47 2000 @@ -149,7 +149,7 @@ __gconv_find_shlib (const char *name) static struct __gconv_loaded_object *release_handle; static void -do_release_shlib (const void *nodep, VISIT value, int level) +do_release_shlib (void *nodep, VISIT value, int level) { struct __gconv_loaded_object *obj = *(struct __gconv_loaded_object **) nodep; @@ -184,7 +184,7 @@ __gconv_release_shlib (struct __gconv_lo /* Process all entries. Please note that we also visit entries with release counts <= 0. This way we can finally unload them if necessary. */ - __twalk (loaded, do_release_shlib); + __twalk (loaded, (__action_fn_t) do_release_shlib); } diff -adurpN glibc-2.2/iconv/gconv_int.h glibc-2.2.1/iconv/gconv_int.h --- glibc-2.2/iconv/gconv_int.h Thu Sep 7 11:56:23 2000 +++ glibc-2.2.1/iconv/gconv_int.h Wed Nov 22 10:59:47 2000 @@ -33,7 +33,7 @@ struct path_elem }; /* Variable with search path for `gconv' implementation. */ -extern const struct path_elem *__gconv_path_elem; +extern struct path_elem *__gconv_path_elem; /* Maximum length of a single path element. */ extern size_t __gconv_max_path_elem_len; @@ -41,8 +41,8 @@ extern size_t __gconv_max_path_elem_len; /* Structure for alias definition. Simply to strings. */ struct gconv_alias { - const char *fromname; - const char *toname; + char *fromname; + char *toname; }; diff -adurpN glibc-2.2/iconv/gconv_simple.c glibc-2.2.1/iconv/gconv_simple.c --- glibc-2.2/iconv/gconv_simple.c Mon Sep 18 15:42:24 2000 +++ glibc-2.2.1/iconv/gconv_simple.c Sat Jan 6 20:35:12 2001 @@ -1,5 +1,5 @@ /* Simple transformations functions. - Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -29,6 +29,15 @@ #include #include +#define BUILTIN_ALIAS(s1, s2) /* nothing */ +#define BUILTIN_TRANSFORMATION(From, To, Cost, Name, Fct, Init, End, MinF, \ + MaxF, MinT, MaxT) \ + extern int Fct (struct __gconv_step *, struct __gconv_step_data *, \ + __const unsigned char **, __const unsigned char *, \ + unsigned char **, size_t *, int, int); +#include "gconv_builtin.h" + + #ifndef EILSEQ # define EILSEQ EINVAL #endif @@ -66,7 +75,7 @@ internal_ucs4_loop (struct __gconv_step size_t cnt; for (cnt = 0; cnt < n_convert; ++cnt, inptr += 4) - *((uint32_t *) outptr)++ = bswap_32 (*(uint32_t *) inptr); + *((uint32_t *) outptr)++ = bswap_32 (*(const uint32_t *) inptr); *inptrp = inptr; *outptrp = outptr; @@ -81,7 +90,7 @@ internal_ucs4_loop (struct __gconv_step /* Determine the status. */ if (*inptrp == inend) result = __GCONV_EMPTY_INPUT; - else if (*outptrp == outend) + else if (*outptrp + 4 > outend) result = __GCONV_FULL_OUTPUT; else result = __GCONV_INCOMPLETE_INPUT; @@ -126,7 +135,7 @@ internal_ucs4_loop_unaligned (struct __g # endif /* Determine the status. */ - if (*outptrp == outend) + if (*outptrp + 4 > outend) result = __GCONV_FULL_OUTPUT; else if (*inptrp == inend) result = __GCONV_EMPTY_INPUT; @@ -215,9 +224,9 @@ ucs4_internal_loop (struct __gconv_step uint32_t inval; #if __BYTE_ORDER == __LITTLE_ENDIAN - inval = bswap_32 (*(uint32_t *) inptr); + inval = bswap_32 (*(const uint32_t *) inptr); #else - inval = *(uint32_t *) inptr; + inval = *(const uint32_t *) inptr; #endif if (__builtin_expect (inval, 0) > 0x7fffffff) @@ -251,7 +260,7 @@ ucs4_internal_loop (struct __gconv_step /* Determine the status. */ if (*inptrp == inend) result = __GCONV_EMPTY_INPUT; - else if (*outptrp == outend) + else if (*outptrp + 4 > outend) result = __GCONV_FULL_OUTPUT; else result = __GCONV_INCOMPLETE_INPUT; @@ -319,7 +328,7 @@ ucs4_internal_loop_unaligned (struct __g /* Determine the status. */ if (*inptrp == inend) result = __GCONV_EMPTY_INPUT; - else if (*outptrp == outend) + else if (*outptrp + 4 > outend) result = __GCONV_FULL_OUTPUT; else result = __GCONV_INCOMPLETE_INPUT; @@ -420,7 +429,7 @@ internal_ucs4le_loop (struct __gconv_ste size_t cnt; for (cnt = 0; cnt < n_convert; ++cnt, inptr += 4) - *((uint32_t *) outptr)++ = bswap_32 (*(uint32_t *) inptr); + *((uint32_t *) outptr)++ = bswap_32 (*(const uint32_t *) inptr); *inptrp = inptr; *outptrp = outptr; @@ -435,7 +444,7 @@ internal_ucs4le_loop (struct __gconv_ste /* Determine the status. */ if (*inptrp == inend) result = __GCONV_EMPTY_INPUT; - else if (*outptrp == outend) + else if (*outptrp + 4 > outend) result = __GCONV_FULL_OUTPUT; else result = __GCONV_INCOMPLETE_INPUT; @@ -480,9 +489,9 @@ internal_ucs4le_loop_unaligned (struct _ # endif /* Determine the status. */ - if (*inptrp == inend) + if (*inptrp + 4 > inend) result = __GCONV_EMPTY_INPUT; - else if (*outptrp == outend) + else if (*outptrp + 4 > outend) result = __GCONV_FULL_OUTPUT; else result = __GCONV_INCOMPLETE_INPUT; @@ -566,9 +575,9 @@ ucs4le_internal_loop (struct __gconv_ste uint32_t inval; #if __BYTE_ORDER == __BIG_ENDIAN - inval = bswap_32 (*(uint32_t *) inptr); + inval = bswap_32 (*(const uint32_t *) inptr); #else - inval = *(uint32_t *) inptr; + inval = *(const uint32_t *) inptr; #endif if (__builtin_expect (inval, 0) > 0x7fffffff) @@ -600,7 +609,7 @@ ucs4le_internal_loop (struct __gconv_ste /* Determine the status. */ if (*inptrp == inend) result = __GCONV_EMPTY_INPUT; - else if (*outptrp == outend) + else if (*outptrp + 4 > outend) result = __GCONV_FULL_OUTPUT; else result = __GCONV_INCOMPLETE_INPUT; @@ -669,7 +678,7 @@ ucs4le_internal_loop_unaligned (struct _ /* Determine the status. */ if (*inptrp == inend) result = __GCONV_EMPTY_INPUT; - else if (*outptrp == outend) + else if (*outptrp + 4 > outend) result = __GCONV_FULL_OUTPUT; else result = __GCONV_INCOMPLETE_INPUT; @@ -796,13 +805,13 @@ ucs4le_internal_loop_single (struct __gc #define LOOPFCT FROM_LOOP #define BODY \ { \ - if (__builtin_expect (*((uint32_t *) inptr), 0) > 0x7f) \ + if (__builtin_expect (*((const uint32_t *) inptr), 0) > 0x7f) \ { \ STANDARD_ERR_HANDLER (4); \ } \ else \ /* It's an one byte sequence. */ \ - *outptr++ = *((uint32_t *) inptr)++; \ + *outptr++ = *((const uint32_t *) inptr)++; \ } #define LOOP_NEED_FLAGS #include @@ -827,7 +836,7 @@ ucs4le_internal_loop_single (struct __gc #define LOOPFCT FROM_LOOP #define BODY \ { \ - uint32_t wc = *((uint32_t *) inptr); \ + uint32_t wc = *((const uint32_t *) inptr); \ \ /* Since we control every character we read this cannot happen. */ \ assert (wc <= 0x7fffffff); \ @@ -1146,7 +1155,7 @@ ucs4le_internal_loop_single (struct __gc #define LOOPFCT FROM_LOOP #define BODY \ { \ - uint16_t u1 = *((uint16_t *) inptr); \ + uint16_t u1 = *((const uint16_t *) inptr); \ \ if (__builtin_expect (u1 >= 0xd800 && u1 < 0xe000, 0)) \ { \ @@ -1186,7 +1195,7 @@ ucs4le_internal_loop_single (struct __gc #define LOOPFCT FROM_LOOP #define BODY \ { \ - uint32_t val = *((uint32_t *) inptr); \ + uint32_t val = *((const uint32_t *) inptr); \ \ if (__builtin_expect (val, 0) >= 0x10000) \ { \ @@ -1236,7 +1245,7 @@ ucs4le_internal_loop_single (struct __gc #define LOOPFCT FROM_LOOP #define BODY \ { \ - uint16_t u1 = bswap_16 (*((uint16_t *) inptr)); \ + uint16_t u1 = bswap_16 (*((const uint16_t *) inptr)); \ \ if (__builtin_expect (u1 >= 0xd800 && u1 < 0xe000, 0)) \ { \ @@ -1276,7 +1285,7 @@ ucs4le_internal_loop_single (struct __gc #define LOOPFCT FROM_LOOP #define BODY \ { \ - uint32_t val = *((uint32_t *) inptr); \ + uint32_t val = *((const uint32_t *) inptr); \ if (__builtin_expect (val, 0) >= 0x10000) \ { \ STANDARD_ERR_HANDLER (4); \ diff -adurpN glibc-2.2/iconv/gconv_trans.c glibc-2.2.1/iconv/gconv_trans.c --- glibc-2.2/iconv/gconv_trans.c Thu Sep 7 11:56:23 2000 +++ glibc-2.2.1/iconv/gconv_trans.c Fri Dec 1 11:55:02 2000 @@ -41,18 +41,18 @@ __gconv_transliterate (struct __gconv_st { /* Find out about the locale's transliteration. */ uint_fast32_t size; - uint32_t *from_idx; - uint32_t *from_tbl; - uint32_t *to_idx; - uint32_t *to_tbl; - uint32_t *winbuf; - uint32_t *winbufend; + const uint32_t *from_idx; + const uint32_t *from_tbl; + const uint32_t *to_idx; + const uint32_t *to_tbl; + const uint32_t *winbuf; + const uint32_t *winbufend; uint_fast32_t low; uint_fast32_t high; /* The input buffer. There are actually 4-byte values. */ - winbuf = (uint32_t *) *inbufp; - winbufend = (uint32_t *) inbufend; + winbuf = (const uint32_t *) *inbufp; + winbufend = (const uint32_t *) inbufend; /* If there is no transliteration information in the locale don't do anything and return the error. */ @@ -61,10 +61,14 @@ __gconv_transliterate (struct __gconv_st goto no_rules; /* Get the rest of the values. */ - from_idx = (uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TRANSLIT_FROM_IDX); - from_tbl = (uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TRANSLIT_FROM_TBL); - to_idx = (uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TRANSLIT_TO_IDX); - to_tbl = (uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TRANSLIT_TO_TBL); + from_idx = + (const uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TRANSLIT_FROM_IDX); + from_tbl = + (const uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TRANSLIT_FROM_TBL); + to_idx = + (const uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TRANSLIT_TO_IDX); + to_tbl = + (const uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TRANSLIT_TO_TBL); /* Test whether there is enough input. */ if (winbuf + 1 > winbufend) @@ -156,9 +160,9 @@ __gconv_transliterate (struct __gconv_st if (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_TRANSLIT_IGNORE_LEN) != 0) { int n = _NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_TRANSLIT_IGNORE_LEN); - uint32_t *ranges = (uint32_t *) _NL_CURRENT (LC_CTYPE, - _NL_CTYPE_TRANSLIT_IGNORE); - uint32_t wc = *(uint32_t *) (*inbufp); + const uint32_t *ranges = + (const uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TRANSLIT_IGNORE); + const uint32_t wc = *(const uint32_t *) (*inbufp); int i; /* Test whether there is enough input. */ @@ -184,7 +188,7 @@ __gconv_transliterate (struct __gconv_st /* One last chance: use the default replacement. */ if (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_TRANSLIT_DEFAULT_MISSING_LEN) != 0) { - uint32_t *default_missing = (uint32_t *) + const uint32_t *default_missing = (const uint32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TRANSLIT_DEFAULT_MISSING); const unsigned char *toinptr = (const unsigned char *) default_missing; uint32_t len = _NL_CURRENT_WORD (LC_CTYPE, @@ -230,7 +234,7 @@ struct known_trans /* This structure must remain the first member. */ struct trans_struct info; - const char *fname; + char *fname; void *handle; int open_count; }; @@ -247,8 +251,8 @@ __libc_lock_define_initialized (static, static int trans_compare (const void *p1, const void *p2) { - struct known_trans *s1 = (struct known_trans *) p1; - struct known_trans *s2 = (struct known_trans *) p2; + const struct known_trans *s1 = (const struct known_trans *) p1; + const struct known_trans *s2 = (const struct known_trans *) p2; return strcmp (s1->info.name, s2->info.name); } @@ -362,8 +366,8 @@ __gconv_translit_find (struct trans_stru memset (newp, '\0', sizeof (struct known_trans)); /* Store a copy of the module name. */ - newp->info.name = (char *) (newp + 1); - cp = __mempcpy ((char *) newp->info.name, trans->name, name_len); + newp->info.name = cp = (char *) (newp + 1); + cp = __mempcpy (cp, trans->name, name_len); newp->fname = cp; diff -adurpN glibc-2.2/iconv/iconv_prog.c glibc-2.2.1/iconv/iconv_prog.c --- glibc-2.2/iconv/iconv_prog.c Thu Sep 7 11:56:23 2000 +++ glibc-2.2.1/iconv/iconv_prog.c Sat Jan 13 10:48:48 2001 @@ -1,5 +1,5 @@ /* Convert text in given files from the specified from-set to the to-set. - Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1998. @@ -352,7 +352,7 @@ print_version (FILE *stream, struct argp 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\ -"), "2000"); +"), "2001"); fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper"); } @@ -462,7 +462,7 @@ process_fd (iconv_t cd, int fd, FILE *ou while (actlen < maxlen) { - size_t n = read (fd, inptr, maxlen - actlen); + ssize_t n = read (fd, inptr, maxlen - actlen); if (n == 0) /* No more text to read. */ @@ -482,7 +482,7 @@ process_fd (iconv_t cd, int fd, FILE *ou if (actlen == maxlen) while (1) { - size_t n; + ssize_t n; /* Increase the buffer. */ maxlen += 32768; diff -adurpN glibc-2.2/iconv/loop.c glibc-2.2.1/iconv/loop.c --- glibc-2.2/iconv/loop.c Thu Aug 31 14:44:58 2000 +++ glibc-2.2.1/iconv/loop.c Fri Dec 1 11:55:02 2000 @@ -63,8 +63,8 @@ #undef FCTNAME2 #if defined _STRING_ARCH_unaligned || !defined DEFINE_UNALIGNED /* We can handle unaligned memory access. */ -# define get16(addr) *((uint16_t *) (addr)) -# define get32(addr) *((uint32_t *) (addr)) +# define get16(addr) *((__const uint16_t *) (addr)) +# define get32(addr) *((__const uint32_t *) (addr)) /* We need no special support for writing values either. */ # define put16(addr, val) *((uint16_t *) (addr)) = (val) @@ -217,7 +217,7 @@ static inline int FCTNAME (LOOPFCT) (struct __gconv_step *step, struct __gconv_step_data *step_data, const unsigned char **inptrp, const unsigned char *inend, - unsigned char **outptrp, unsigned char *outend, + unsigned char **outptrp, const unsigned char *outend, size_t *irreversible EXTRA_LOOP_DECLS) { #ifdef LOOP_NEED_STATE @@ -326,7 +326,7 @@ SINGLE(LOOPFCT) (struct __gconv_step *st UNPACK_BYTES #else /* Add the bytes from the state to the input buffer. */ - for (inlen = 0; inlen < (state->__count & 7); ++ inlen) + for (inlen = 0; inlen < (size_t) (state->__count & 7); ++inlen) bytebuf[inlen] = state->__value.__wchb[inlen]; #endif diff -adurpN glibc-2.2/iconv/skeleton.c glibc-2.2.1/iconv/skeleton.c --- glibc-2.2/iconv/skeleton.c Thu Sep 14 12:24:07 2000 +++ glibc-2.2.1/iconv/skeleton.c Sat Jan 6 20:35:13 2001 @@ -1,5 +1,5 @@ /* Skeleton for a conversion module. - Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1998. @@ -127,8 +127,8 @@ static int to_object; loops we have other definitions which allow optimized access. */ #ifdef _STRING_ARCH_unaligned /* We can handle unaligned memory access. */ -# define get16u(addr) *((uint16_t *) (addr)) -# define get32u(addr) *((uint32_t *) (addr)) +# define get16u(addr) *((__const uint16_t *) (addr)) +# define get32u(addr) *((__const uint32_t *) (addr)) /* We need no special support for writing values either. */ # define put16u(addr, val) *((uint16_t *) (addr)) = (val) @@ -213,6 +213,7 @@ static int to_object; # error "CHARSET_NAME not defined" # endif +extern int gconv_init (struct __gconv_step *step); int gconv_init (struct __gconv_step *step) { @@ -273,6 +274,12 @@ gconv_init (struct __gconv_step *step) #define SINGLE2(fct) fct##_single +extern int FUNCTION_NAME (struct __gconv_step *step, + struct __gconv_step_data *data, + const unsigned char **inptrp, + const unsigned char *inend, + unsigned char **outbufstart, size_t *irreversible, + int do_flush, int consume_incomplete); int FUNCTION_NAME (struct __gconv_step *step, struct __gconv_step_data *data, const unsigned char **inptrp, const unsigned char *inend, @@ -391,7 +398,7 @@ FUNCTION_NAME (struct __gconv_step *step || (uintptr_t) inptr % MIN_NEEDED_TO != 0))); #endif - do + while (1) { struct __gconv_trans_data *trans; @@ -502,15 +509,13 @@ FUNCTION_NAME (struct __gconv_step *step if (FROM_DIRECTION) /* Run the conversion loop. */ nstatus = FROM_LOOP (step, data, inptrp, inend, - &outbuf, - (unsigned char *) outerr, + &outbuf, outerr, lirreversiblep EXTRA_LOOP_ARGS); else /* Run the conversion loop. */ nstatus = TO_LOOP (step, data, inptrp, inend, - &outbuf, - (unsigned char *) outerr, + &outbuf, outerr, lirreversiblep EXTRA_LOOP_ARGS); } @@ -524,15 +529,14 @@ FUNCTION_NAME (struct __gconv_step *step nstatus = GEN_unaligned (FROM_LOOP) (step, data, inptrp, inend, &outbuf, - (unsigned char *) outerr, + outerr, lirreversiblep EXTRA_LOOP_ARGS); else /* Run the conversion loop. */ nstatus = GEN_unaligned (TO_LOOP) (step, data, inptrp, inend, - &outbuf, - (unsigned char *) outerr, + &outbuf, outerr, lirreversiblep EXTRA_LOOP_ARGS); } @@ -557,10 +561,18 @@ FUNCTION_NAME (struct __gconv_step *step /* All the output is consumed, we can make another run if everything was ok. */ if (status == __GCONV_FULL_OUTPUT) - status = __GCONV_OK; + { + status = __GCONV_OK; + outbuf = data->__outbuf; + } } + + if (status != __GCONV_OK) + break; + + /* Reset the output buffer pointer for the next round. */ + outbuf = data->__outbuf; } - while (status == __GCONV_OK); #ifdef END_LOOP END_LOOP diff -adurpN glibc-2.2/iconv/tst-iconv2.c glibc-2.2.1/iconv/tst-iconv2.c --- glibc-2.2/iconv/tst-iconv2.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/iconv/tst-iconv2.c Fri Jan 5 00:01:53 2001 @@ -0,0 +1,100 @@ +/* Copyright (C) 2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 2001. + + 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. */ + +#include +#include +#include +#include +#include +#include +#include + + +int +main (void) +{ + char buf[3]; + const wchar_t wc[1] = L"a"; + iconv_t cd; + char *inptr; + size_t inlen; + char *outptr; + size_t outlen; + size_t n; + int e; + int result = 0; + + mtrace (); + + cd = iconv_open ("UCS4", "WCHAR_T"); + if (cd == (iconv_t) -1) + { + printf ("cannot convert from wchar_t to UCS4: %m\n"); + exit (1); + } + + inptr = (char *) wc; + inlen = sizeof (wchar_t); + outptr = buf; + outlen = 3; + + n = iconv (cd, &inptr, &inlen, &outptr, &outlen); + e = errno; + + if (n != (size_t) -1) + { + printf ("incorrect iconv() return value: %zd, expected -1\n", n); + result = 1; + } + + if (e != E2BIG) + { + printf ("incorrect error value: %s, expected %s\n", + strerror (e), strerror (E2BIG)); + result = 1; + } + + if (inptr != (char *) wc) + { + puts ("inptr changed"); + result = 1; + } + + if (inlen != sizeof (wchar_t)) + { + puts ("inlen changed"); + result = 1; + } + + if (outptr != buf) + { + puts ("outptr changed"); + result = 1; + } + + if (outlen != 3) + { + puts ("outlen changed"); + result = 1; + } + + iconv_close (cd); + + return result; +} diff -adurpN glibc-2.2/iconv/tst-iconv3.c glibc-2.2.1/iconv/tst-iconv3.c --- glibc-2.2/iconv/tst-iconv3.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/iconv/tst-iconv3.c Sat Jan 6 12:21:57 2001 @@ -0,0 +1,52 @@ +/* Contributed by Owen Taylor . */ + +#include +#include +#include + +#define BUFSIZE 10000 + +int +main (int argc, char *argv[]) +{ + char inbuf[BUFSIZE]; + wchar_t outbuf[BUFSIZE]; + + iconv_t cd; + int i; + char *inptr; + char *outptr; + size_t inbytes_left, outbytes_left; + int count; + int result = 0; + + for (i=0; i < BUFSIZE; i++) + inbuf[i] = 'a'; + + cd = iconv_open ("UCS-4LE", "UTF-8"); + + inbytes_left = BUFSIZE; + outbytes_left = BUFSIZE * 4; + inptr = inbuf; + outptr = (char *) outbuf; + + count = iconv (cd, &inptr, &inbytes_left, &outptr, &outbytes_left); + + if (count < 0) + { + if (errno == E2BIG) + printf ("Received E2BIG\n"); + else + printf ("Received something else\n"); + + printf ("inptr change: %td\n", inptr - inbuf); + printf ("inlen change: %d\n", BUFSIZE - inbytes_left); + printf ("outptr change: %zd\n", outptr - (char *) outbuf); + printf ("outlen change: %d\n", BUFSIZE * 4 - outbytes_left); + result = 1; + } + else + printf ("Succeeded\n"); + + return result; +} diff -adurpN glibc-2.2/iconvdata/EUC-JP.irreversible glibc-2.2.1/iconvdata/EUC-JP.irreversible --- glibc-2.2/iconvdata/EUC-JP.irreversible Mon Sep 4 18:47:42 2000 +++ glibc-2.2.1/iconvdata/EUC-JP.irreversible Sat Jan 6 20:35:13 2001 @@ -1,6 +1,2 @@ 0x5C 0x00A5 0x7E 0x203E -0x8FA2B7 0x007E -0x8FA2B7 0xFF5E -0xA1C0 0x005C -0xA1C0 0xFF3C diff -adurpN glibc-2.2/iconvdata/Makefile glibc-2.2.1/iconvdata/Makefile --- glibc-2.2/iconvdata/Makefile Thu Nov 2 17:25:56 2000 +++ glibc-2.2.1/iconvdata/Makefile Fri Dec 1 11:55:02 2000 @@ -37,7 +37,7 @@ modules := ISO8859-1 ISO8859-2 ISO8859-3 IBM280 IBM281 IBM284 IBM285 IBM290 IBM297 IBM420 IBM424 \ IBM437 IBM850 IBM851 IBM852 IBM855 IBM857 IBM860 IBM861 \ IBM862 IBM863 IBM864 IBM865 IBM868 IBM869 IBM875 IBM880 \ - IBM866 CP1258 \ + IBM866 CP1258 IBM922 IBM1124 IBM1129 \ IBM856 IBM930 IBM933 IBM935 IBM937 IBM939 IBM1046 \ IBM918 IBM1004 IBM1026 CP1250 CP1251 CP1252 CP1253 CP1254 \ CP1255 CP1256 CP1257 ISO-2022-JP MACINTOSH IEC_P27-1 \ @@ -121,6 +121,7 @@ distribute := gconv-modules extra-module ibm891.c ibm903.c ibm904.c ibm905.c ibm918.c ibm1004.c \ ibm856.c ibm930.c ibm933.c ibm935.c ibm937.c ibm939.c ibm1046.c \ ibm856.h ibm930.h ibm933.h ibm935.h ibm937.h ibm939.h ibm1046.h \ + ibm922.c ibm922.h ibm1124.c ibm1124.h ibm1129.c ibm1129.h \ ibm1026.c ibm1047.c iec_p27-1.c inis.c inis-8.c viscii.c \ inis-cyrillic.c iso-2022-jp.c iso-2022-kr.c iso646.c \ iso8859-1.c iso8859-2.c iso8859-3.c iso8859-4.c iso8859-5.c \ diff -adurpN glibc-2.2/iconvdata/SJIS.irreversible glibc-2.2.1/iconvdata/SJIS.irreversible --- glibc-2.2/iconvdata/SJIS.irreversible Mon Sep 4 18:48:08 2000 +++ glibc-2.2.1/iconvdata/SJIS.irreversible Sat Jan 6 20:35:13 2001 @@ -1,7 +1,5 @@ 0x5C 0x005C 0x7E 0x007E -0x815F 0x005C -0x815F 0xFF3C 0x8191 0xFFE0 0x8192 0xFFE1 0x81CA 0xFFE2 diff -adurpN glibc-2.2/iconvdata/ansi_x3.110.c glibc-2.2.1/iconvdata/ansi_x3.110.c --- glibc-2.2/iconvdata/ansi_x3.110.c Wed Aug 2 14:52:03 2000 +++ glibc-2.2.1/iconvdata/ansi_x3.110.c Fri Dec 1 11:55:02 2000 @@ -474,7 +474,7 @@ static const char from_ucs4[][2] = uint32_t ch = get32 (inptr); \ const char *cp; \ \ - if (__builtin_expect (ch, 0) \ + if ((size_t) __builtin_expect (ch, 0) \ >= sizeof (from_ucs4) / sizeof (from_ucs4[0])) \ { \ if (ch == 0x2c7) \ diff -adurpN glibc-2.2/iconvdata/big5.c glibc-2.2.1/iconvdata/big5.c --- glibc-2.2/iconvdata/big5.c Wed Nov 8 14:10:17 2000 +++ glibc-2.2.1/iconvdata/big5.c Fri Dec 1 11:55:03 2000 @@ -8484,7 +8484,7 @@ static const char from_ucs4_tab15[][2] = uint32_t ch = get32 (inptr); \ const char *cp; \ \ - if (__builtin_expect (ch, 0) \ + if ((size_t) __builtin_expect (ch, 0) \ >= sizeof (from_ucs4_tab1) / sizeof (from_ucs4_tab1[0])) \ switch (ch) \ { \ diff -adurpN glibc-2.2/iconvdata/big5hkscs.c glibc-2.2.1/iconvdata/big5hkscs.c --- glibc-2.2/iconvdata/big5hkscs.c Thu Oct 26 22:57:24 2000 +++ glibc-2.2.1/iconvdata/big5hkscs.c Fri Dec 1 11:55:04 2000 @@ -11756,7 +11756,9 @@ static struct const char *cp = ""; \ int i; \ \ - for (i = 0; i < sizeof (from_ucs4_idx) / sizeof (from_ucs4_idx[0]); ++i) \ + for (i = 0; \ + i < (int) (sizeof (from_ucs4_idx) / sizeof (from_ucs4_idx[0])); \ + ++i) \ { \ if (ch < from_ucs4_idx[i].from) \ break; \ diff -adurpN glibc-2.2/iconvdata/bug-iconv2.c glibc-2.2.1/iconvdata/bug-iconv2.c --- glibc-2.2/iconvdata/bug-iconv2.c Tue Aug 29 14:11:06 2000 +++ glibc-2.2.1/iconvdata/bug-iconv2.c Wed Nov 22 10:59:47 2000 @@ -38,7 +38,7 @@ main (void) exit (1); puts ("This used to crash"); - printf ("%d\n", iconv (cd_a, &from, &from_left, &to, &to_left)); + printf ("%zd\n", iconv (cd_a, &from, &from_left, &to, &to_left)); iconv_close (cd_a); puts ("works now"); diff -adurpN glibc-2.2/iconvdata/cns11643.h glibc-2.2.1/iconvdata/cns11643.h --- glibc-2.2/iconvdata/cns11643.h Mon Sep 18 15:42:24 2000 +++ glibc-2.2.1/iconvdata/cns11643.h Fri Dec 1 11:55:04 2000 @@ -107,7 +107,7 @@ ucs4_to_cns11643 (uint32_t wch, char *s, unsigned int ch = (unsigned int) wch; char buf[2]; const char *cp = buf; - int needed = 2; + size_t needed = 2; switch (ch) { diff -adurpN glibc-2.2/iconvdata/gb18030.c glibc-2.2.1/iconvdata/gb18030.c --- glibc-2.2/iconvdata/gb18030.c Thu Sep 14 12:24:14 2000 +++ glibc-2.2.1/iconvdata/gb18030.c Fri Dec 1 11:55:05 2000 @@ -41825,7 +41825,7 @@ static const char __ucs_to_gb18030_tab63 #define LOOPFCT TO_LOOP #define BODY \ { \ - uint32_t ch = *((uint32_t *) inptr); \ + uint32_t ch = *((const uint32_t *) inptr); \ unsigned char buf[4]; \ const unsigned char *cp = buf; \ int len = 2; /* This is the most often case. */ \ diff -adurpN glibc-2.2/iconvdata/gconv-modules glibc-2.2.1/iconvdata/gconv-modules --- glibc-2.2/iconvdata/gconv-modules Tue Oct 31 11:09:48 2000 +++ glibc-2.2.1/iconvdata/gconv-modules Fri Dec 1 11:55:06 2000 @@ -33,22 +33,6 @@ # alias: alias name which is not really recognized. # name: the real name of the character set -# from to module cost -alias ANSI_X3.4// ANSI_X3.4-1968// -alias ISO-IR-6// ANSI_X3.4-1968// -alias ANSI_X3.4-1986// ANSI_X3.4-1968// -alias ISO_646.IRV:1991// ANSI_X3.4-1968// -alias ASCII// ANSI_X3.4-1968// -alias ISO646-US// ANSI_X3.4-1968// -alias US-ASCII// ANSI_X3.4-1968// -alias US// ANSI_X3.4-1968// -alias IBM367// ANSI_X3.4-1968// -alias CP367// ANSI_X3.4-1968// -alias CSASCII// ANSI_X3.4-1968// -alias OSF00010020// ANSI_X3.4-1968// -module ANSI_X3.4-1968// INTERNAL ISO646 2 -module INTERNAL ANSI_X3.4-1968// ISO646 2 - alias ISO-IR-4// BS_4730// alias ISO646-GB// BS_4730// alias GB// BS_4730// @@ -842,6 +826,13 @@ module IBM918// INTERNAL IBM918 1 module INTERNAL IBM918// IBM918 1 # from to module cost +alias IBM-922// IBM922// +alias CP922// IBM922// +alias CSIBM922// IBM922// +module IBM922// INTERNAL IBM922 1 +module INTERNAL IBM922// IBM922 1 + +# from to module cost alias IBM-930// IBM930// alias CP930// IBM930// alias EBCDIC-CP-AR2// IBM930// @@ -910,6 +901,20 @@ module IBM1047// INTERNAL IBM1047 1 module INTERNAL IBM1047// IBM1047 1 # from to module cost +alias IBM-1124// IBM1124// +alias CP1124// IBM1124// +alias CSIBM1124// IBM1124// +module IBM1124// INTERNAL IBM1124 1 +module INTERNAL IBM1124// IBM1124 1 + +# from to module cost +alias IBM-1129// IBM1129// +alias CP1129// IBM1129// +alias CSIBM1129// IBM1129// +module IBM1129// INTERNAL IBM1129 1 +module INTERNAL IBM1129// IBM1129 1 + +# from to module cost alias EUCKR// EUC-KR// alias CSEUCKR// EUC-KR// alias OSF0004000a// EUC-KR// @@ -934,6 +939,7 @@ alias BIG-FIVE// BIG5// alias BIGFIVE// BIG5// alias BIG-5// BIG5// alias CN-BIG5// BIG5// +alias CP950// BIG5// module BIG5// INTERNAL BIG5 1 module INTERNAL BIG5// BIG5 1 @@ -959,6 +965,7 @@ module INTERNAL EUC-CN// EUC-CN 1 # from to module cost alias GB13000// GBK// +alias CP936// GBK// module GBK// INTERNAL GBK 1 module INTERNAL GBK// GBK 1 diff -adurpN glibc-2.2/iconvdata/ibm1124.c glibc-2.2.1/iconvdata/ibm1124.c --- glibc-2.2/iconvdata/ibm1124.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/iconvdata/ibm1124.c Tue Nov 28 06:10:14 2000 @@ -0,0 +1,29 @@ +/* Conversion from and to IBM1124. + Copyright (C) 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Masahide Washizawa , 2000. + + 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. */ + +#include + +/* Get the conversion table. */ +#define TABLES + +#define CHARSET_NAME "IBM1124//" +#define HAS_HOLES 0 /* All 256 character are defined. */ + +#include <8bit-gap.c> diff -adurpN glibc-2.2/iconvdata/ibm1124.h glibc-2.2.1/iconvdata/ibm1124.h --- glibc-2.2/iconvdata/ibm1124.h Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/iconvdata/ibm1124.h Tue Nov 28 06:10:23 2000 @@ -0,0 +1,147 @@ +/* Conversion from and to IBM1124. + Copyright (C) 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Masahide Washizawa , 2000. + + 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. */ + +static const uint32_t to_ucs4[256] = +{ + [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003, + [0x04] = 0x0004, [0x05] = 0x0005, [0x06] = 0x0006, [0x07] = 0x0007, + [0x08] = 0x0008, [0x09] = 0x0009, [0x0a] = 0x000a, [0x0b] = 0x000b, + [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f, + [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013, + [0x14] = 0x0014, [0x15] = 0x0015, [0x16] = 0x0016, [0x17] = 0x0017, + [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x001a, [0x1b] = 0x001b, + [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f, + [0x20] = 0x0020, [0x21] = 0x0021, [0x22] = 0x0022, [0x23] = 0x0023, + [0x24] = 0x0024, [0x25] = 0x0025, [0x26] = 0x0026, [0x27] = 0x0027, + [0x28] = 0x0028, [0x29] = 0x0029, [0x2a] = 0x002a, [0x2b] = 0x002b, + [0x2c] = 0x002c, [0x2d] = 0x002d, [0x2e] = 0x002e, [0x2f] = 0x002f, + [0x30] = 0x0030, [0x31] = 0x0031, [0x32] = 0x0032, [0x33] = 0x0033, + [0x34] = 0x0034, [0x35] = 0x0035, [0x36] = 0x0036, [0x37] = 0x0037, + [0x38] = 0x0038, [0x39] = 0x0039, [0x3a] = 0x003a, [0x3b] = 0x003b, + [0x3c] = 0x003c, [0x3d] = 0x003d, [0x3e] = 0x003e, [0x3f] = 0x003f, + [0x40] = 0x0040, [0x41] = 0x0041, [0x42] = 0x0042, [0x43] = 0x0043, + [0x44] = 0x0044, [0x45] = 0x0045, [0x46] = 0x0046, [0x47] = 0x0047, + [0x48] = 0x0048, [0x49] = 0x0049, [0x4a] = 0x004a, [0x4b] = 0x004b, + [0x4c] = 0x004c, [0x4d] = 0x004d, [0x4e] = 0x004e, [0x4f] = 0x004f, + [0x50] = 0x0050, [0x51] = 0x0051, [0x52] = 0x0052, [0x53] = 0x0053, + [0x54] = 0x0054, [0x55] = 0x0055, [0x56] = 0x0056, [0x57] = 0x0057, + [0x58] = 0x0058, [0x59] = 0x0059, [0x5a] = 0x005a, [0x5b] = 0x005b, + [0x5c] = 0x005c, [0x5d] = 0x005d, [0x5e] = 0x005e, [0x5f] = 0x005f, + [0x60] = 0x0060, [0x61] = 0x0061, [0x62] = 0x0062, [0x63] = 0x0063, + [0x64] = 0x0064, [0x65] = 0x0065, [0x66] = 0x0066, [0x67] = 0x0067, + [0x68] = 0x0068, [0x69] = 0x0069, [0x6a] = 0x006a, [0x6b] = 0x006b, + [0x6c] = 0x006c, [0x6d] = 0x006d, [0x6e] = 0x006e, [0x6f] = 0x006f, + [0x70] = 0x0070, [0x71] = 0x0071, [0x72] = 0x0072, [0x73] = 0x0073, + [0x74] = 0x0074, [0x75] = 0x0075, [0x76] = 0x0076, [0x77] = 0x0077, + [0x78] = 0x0078, [0x79] = 0x0079, [0x7a] = 0x007a, [0x7b] = 0x007b, + [0x7c] = 0x007c, [0x7d] = 0x007d, [0x7e] = 0x007e, [0x7f] = 0x007f, + [0x80] = 0x0080, [0x81] = 0x0081, [0x82] = 0x0082, [0x83] = 0x0083, + [0x84] = 0x0084, [0x85] = 0x0085, [0x86] = 0x0086, [0x87] = 0x0087, + [0x88] = 0x0088, [0x89] = 0x0089, [0x8a] = 0x008a, [0x8b] = 0x008b, + [0x8c] = 0x008c, [0x8d] = 0x008d, [0x8e] = 0x008e, [0x8f] = 0x008f, + [0x90] = 0x0090, [0x91] = 0x0091, [0x92] = 0x0092, [0x93] = 0x0093, + [0x94] = 0x0094, [0x95] = 0x0095, [0x96] = 0x0096, [0x97] = 0x0097, + [0x98] = 0x0098, [0x99] = 0x0099, [0x9a] = 0x009a, [0x9b] = 0x009b, + [0x9c] = 0x009c, [0x9d] = 0x009d, [0x9e] = 0x009e, [0x9f] = 0x009f, + [0xa0] = 0x00a0, [0xa1] = 0x0401, [0xa2] = 0x0402, [0xa3] = 0x0490, + [0xa4] = 0x0404, [0xa5] = 0x0405, [0xa6] = 0x0406, [0xa7] = 0x0407, + [0xa8] = 0x0408, [0xa9] = 0x0409, [0xaa] = 0x040a, [0xab] = 0x040b, + [0xac] = 0x040c, [0xad] = 0x00ad, [0xae] = 0x040e, [0xaf] = 0x040f, + [0xb0] = 0x0410, [0xb1] = 0x0411, [0xb2] = 0x0412, [0xb3] = 0x0413, + [0xb4] = 0x0414, [0xb5] = 0x0415, [0xb6] = 0x0416, [0xb7] = 0x0417, + [0xb8] = 0x0418, [0xb9] = 0x0419, [0xba] = 0x041a, [0xbb] = 0x041b, + [0xbc] = 0x041c, [0xbd] = 0x041d, [0xbe] = 0x041e, [0xbf] = 0x041f, + [0xc0] = 0x0420, [0xc1] = 0x0421, [0xc2] = 0x0422, [0xc3] = 0x0423, + [0xc4] = 0x0424, [0xc5] = 0x0425, [0xc6] = 0x0426, [0xc7] = 0x0427, + [0xc8] = 0x0428, [0xc9] = 0x0429, [0xca] = 0x042a, [0xcb] = 0x042b, + [0xcc] = 0x042c, [0xcd] = 0x042d, [0xce] = 0x042e, [0xcf] = 0x042f, + [0xd0] = 0x0430, [0xd1] = 0x0431, [0xd2] = 0x0432, [0xd3] = 0x0433, + [0xd4] = 0x0434, [0xd5] = 0x0435, [0xd6] = 0x0436, [0xd7] = 0x0437, + [0xd8] = 0x0438, [0xd9] = 0x0439, [0xda] = 0x043a, [0xdb] = 0x043b, + [0xdc] = 0x043c, [0xdd] = 0x043d, [0xde] = 0x043e, [0xdf] = 0x043f, + [0xe0] = 0x0440, [0xe1] = 0x0441, [0xe2] = 0x0442, [0xe3] = 0x0443, + [0xe4] = 0x0444, [0xe5] = 0x0445, [0xe6] = 0x0446, [0xe7] = 0x0447, + [0xe8] = 0x0448, [0xe9] = 0x0449, [0xea] = 0x044a, [0xeb] = 0x044b, + [0xec] = 0x044c, [0xed] = 0x044d, [0xee] = 0x044e, [0xef] = 0x044f, + [0xf0] = 0x2116, [0xf1] = 0x0451, [0xf2] = 0x0452, [0xf3] = 0x0491, + [0xf4] = 0x0454, [0xf5] = 0x0455, [0xf6] = 0x0456, [0xf7] = 0x0457, + [0xf8] = 0x0458, [0xf9] = 0x0459, [0xfa] = 0x045a, [0xfb] = 0x045b, + [0xfc] = 0x045c, [0xfd] = 0x00a7, [0xfe] = 0x045e, [0xff] = 0x045f, +}; + +static const struct gap from_idx[] = +{ + { start: 0x0000, end: 0x00a0, idx: 0 }, + { start: 0x00a7, end: 0x00ad, idx: -6 }, + { start: 0x0401, end: 0x045f, idx: -857 }, + { start: 0x0490, end: 0x0491, idx: -905 }, + { start: 0x2116, end: 0x2116, idx: -8205 }, + { start: 0xff01, end: 0xff5e, idx: -65015 }, + { start: 0xffff, end: 0xffff, idx: 0 } +}; + +static const char from_ucs4[] = +{ + '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', + '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f', + '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', + '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f', + '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27', + '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f', + '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', + '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f', + '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47', + '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f', + '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57', + '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f', + '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', + '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f', + '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77', + '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f', + '\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87', + '\x88', '\x89', '\x8a', '\x8b', '\x8c', '\x8d', '\x8e', '\x8f', + '\x90', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96', '\x97', + '\x98', '\x99', '\x9a', '\x9b', '\x9c', '\x9d', '\x9e', '\x9f', + '\xa0', '\xfd', '\x00', '\x00', '\x00', '\x00', '\x00', '\xad', + '\xa1', '\xa2', '\x00', '\xa4', '\xa5', '\xa6', '\xa7', '\xa8', + '\xa9', '\xaa', '\xab', '\xac', '\x00', '\xae', '\xaf', '\xb0', + '\xb1', '\xb2', '\xb3', '\xb4', '\xb5', '\xb6', '\xb7', '\xb8', + '\xb9', '\xba', '\xbb', '\xbc', '\xbd', '\xbe', '\xbf', '\xc0', + '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7', '\xc8', + '\xc9', '\xca', '\xcb', '\xcc', '\xcd', '\xce', '\xcf', '\xd0', + '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6', '\xd7', '\xd8', + '\xd9', '\xda', '\xdb', '\xdc', '\xdd', '\xde', '\xdf', '\xe0', + '\xe1', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6', '\xe7', '\xe8', + '\xe9', '\xea', '\xeb', '\xec', '\xed', '\xee', '\xef', '\x00', + '\xf1', '\xf2', '\x00', '\xf4', '\xf5', '\xf6', '\xf7', '\xf8', + '\xf9', '\xfa', '\xfb', '\xfc', '\x00', '\xfe', '\xff', '\xa3', + '\xf3', '\xf0', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', + '\x27', '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', + '\x2f', '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', + '\x37', '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', + '\x3f', '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', + '\x47', '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', + '\x4f', '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', + '\x57', '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', + '\x5f', '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', + '\x67', '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', + '\x6f', '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', + '\x77', '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', +}; diff -adurpN glibc-2.2/iconvdata/ibm1129.c glibc-2.2.1/iconvdata/ibm1129.c --- glibc-2.2/iconvdata/ibm1129.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/iconvdata/ibm1129.c Tue Nov 28 06:09:54 2000 @@ -0,0 +1,29 @@ +/* Conversion from and to IBM1129. + Copyright (C) 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Masahide Washizawa , 2000. + + 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. */ + +#include + +/* Get the conversion table. */ +#define TABLES + +#define CHARSET_NAME "IBM1129//" +#define HAS_HOLES 0 /* All 256 character are defined. */ + +#include <8bit-gap.c> diff -adurpN glibc-2.2/iconvdata/ibm1129.h glibc-2.2.1/iconvdata/ibm1129.h --- glibc-2.2/iconvdata/ibm1129.h Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/iconvdata/ibm1129.h Tue Nov 28 06:10:04 2000 @@ -0,0 +1,153 @@ +/* Conversion from and to IBM1129. + Copyright (C) 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Masahide Washizawa , 2000. + + 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. */ + +static const uint32_t to_ucs4[256] = +{ + [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003, + [0x04] = 0x0004, [0x05] = 0x0005, [0x06] = 0x0006, [0x07] = 0x0007, + [0x08] = 0x0008, [0x09] = 0x0009, [0x0a] = 0x000a, [0x0b] = 0x000b, + [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f, + [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013, + [0x14] = 0x0014, [0x15] = 0x0015, [0x16] = 0x0016, [0x17] = 0x0017, + [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x001a, [0x1b] = 0x001b, + [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f, + [0x20] = 0x0020, [0x21] = 0x0021, [0x22] = 0x0022, [0x23] = 0x0023, + [0x24] = 0x0024, [0x25] = 0x0025, [0x26] = 0x0026, [0x27] = 0x0027, + [0x28] = 0x0028, [0x29] = 0x0029, [0x2a] = 0x002a, [0x2b] = 0x002b, + [0x2c] = 0x002c, [0x2d] = 0x002d, [0x2e] = 0x002e, [0x2f] = 0x002f, + [0x30] = 0x0030, [0x31] = 0x0031, [0x32] = 0x0032, [0x33] = 0x0033, + [0x34] = 0x0034, [0x35] = 0x0035, [0x36] = 0x0036, [0x37] = 0x0037, + [0x38] = 0x0038, [0x39] = 0x0039, [0x3a] = 0x003a, [0x3b] = 0x003b, + [0x3c] = 0x003c, [0x3d] = 0x003d, [0x3e] = 0x003e, [0x3f] = 0x003f, + [0x40] = 0x0040, [0x41] = 0x0041, [0x42] = 0x0042, [0x43] = 0x0043, + [0x44] = 0x0044, [0x45] = 0x0045, [0x46] = 0x0046, [0x47] = 0x0047, + [0x48] = 0x0048, [0x49] = 0x0049, [0x4a] = 0x004a, [0x4b] = 0x004b, + [0x4c] = 0x004c, [0x4d] = 0x004d, [0x4e] = 0x004e, [0x4f] = 0x004f, + [0x50] = 0x0050, [0x51] = 0x0051, [0x52] = 0x0052, [0x53] = 0x0053, + [0x54] = 0x0054, [0x55] = 0x0055, [0x56] = 0x0056, [0x57] = 0x0057, + [0x58] = 0x0058, [0x59] = 0x0059, [0x5a] = 0x005a, [0x5b] = 0x005b, + [0x5c] = 0x005c, [0x5d] = 0x005d, [0x5e] = 0x005e, [0x5f] = 0x005f, + [0x60] = 0x0060, [0x61] = 0x0061, [0x62] = 0x0062, [0x63] = 0x0063, + [0x64] = 0x0064, [0x65] = 0x0065, [0x66] = 0x0066, [0x67] = 0x0067, + [0x68] = 0x0068, [0x69] = 0x0069, [0x6a] = 0x006a, [0x6b] = 0x006b, + [0x6c] = 0x006c, [0x6d] = 0x006d, [0x6e] = 0x006e, [0x6f] = 0x006f, + [0x70] = 0x0070, [0x71] = 0x0071, [0x72] = 0x0072, [0x73] = 0x0073, + [0x74] = 0x0074, [0x75] = 0x0075, [0x76] = 0x0076, [0x77] = 0x0077, + [0x78] = 0x0078, [0x79] = 0x0079, [0x7a] = 0x007a, [0x7b] = 0x007b, + [0x7c] = 0x007c, [0x7d] = 0x007d, [0x7e] = 0x007e, [0x7f] = 0x007f, + [0x80] = 0x0080, [0x81] = 0x0081, [0x82] = 0x0082, [0x83] = 0x0083, + [0x84] = 0x0084, [0x85] = 0x0085, [0x86] = 0x0086, [0x87] = 0x0087, + [0x88] = 0x0088, [0x89] = 0x0089, [0x8a] = 0x008a, [0x8b] = 0x008b, + [0x8c] = 0x008c, [0x8d] = 0x008d, [0x8e] = 0x008e, [0x8f] = 0x008f, + [0x90] = 0x0090, [0x91] = 0x0091, [0x92] = 0x0092, [0x93] = 0x0093, + [0x94] = 0x0094, [0x95] = 0x0095, [0x96] = 0x0096, [0x97] = 0x0097, + [0x98] = 0x0098, [0x99] = 0x0099, [0x9a] = 0x009a, [0x9b] = 0x009b, + [0x9c] = 0x009c, [0x9d] = 0x009d, [0x9e] = 0x009e, [0x9f] = 0x009f, + [0xa0] = 0x00a0, [0xa1] = 0x00a1, [0xa2] = 0x00a2, [0xa3] = 0x00a3, + [0xa4] = 0x00a4, [0xa5] = 0x00a5, [0xa6] = 0x00a6, [0xa7] = 0x00a7, + [0xa8] = 0x0153, [0xa9] = 0x00a9, [0xaa] = 0x00aa, [0xab] = 0x00ab, + [0xac] = 0x00ac, [0xad] = 0x00ad, [0xae] = 0x00ae, [0xaf] = 0x00af, + [0xb0] = 0x00b0, [0xb1] = 0x00b1, [0xb2] = 0x00b2, [0xb3] = 0x00b3, + [0xb4] = 0x0178, [0xb5] = 0x00b5, [0xb6] = 0x00b6, [0xb7] = 0x00b7, + [0xb8] = 0x0152, [0xb9] = 0x00b9, [0xba] = 0x00ba, [0xbb] = 0x00bb, + [0xbc] = 0x00bc, [0xbd] = 0x00bd, [0xbe] = 0x00be, [0xbf] = 0x00bf, + [0xc0] = 0x00c0, [0xc1] = 0x00c1, [0xc2] = 0x00c2, [0xc3] = 0x0102, + [0xc4] = 0x00c4, [0xc5] = 0x00c5, [0xc6] = 0x00c6, [0xc7] = 0x00c7, + [0xc8] = 0x00c8, [0xc9] = 0x00c9, [0xca] = 0x00ca, [0xcb] = 0x00cb, + [0xcc] = 0x0300, [0xcd] = 0x00cd, [0xce] = 0x00ce, [0xcf] = 0x00cf, + [0xd0] = 0x0110, [0xd1] = 0x00d1, [0xd2] = 0x0309, [0xd3] = 0x00d3, + [0xd4] = 0x00d4, [0xd5] = 0x01a0, [0xd6] = 0x00d6, [0xd7] = 0x00d7, + [0xd8] = 0x00d8, [0xd9] = 0x00d9, [0xda] = 0x00da, [0xdb] = 0x00db, + [0xdc] = 0x00dc, [0xdd] = 0x01af, [0xde] = 0x0303, [0xdf] = 0x00df, + [0xe0] = 0x00e0, [0xe1] = 0x00e1, [0xe2] = 0x00e2, [0xe3] = 0x0103, + [0xe4] = 0x00e4, [0xe5] = 0x00e5, [0xe6] = 0x00e6, [0xe7] = 0x00e7, + [0xe8] = 0x00e8, [0xe9] = 0x00e9, [0xea] = 0x00ea, [0xeb] = 0x00eb, + [0xec] = 0x0301, [0xed] = 0x00ed, [0xee] = 0x00ee, [0xef] = 0x00ef, + [0xf0] = 0x0111, [0xf1] = 0x00f1, [0xf2] = 0x0323, [0xf3] = 0x00f3, + [0xf4] = 0x00f4, [0xf5] = 0x01a1, [0xf6] = 0x00f6, [0xf7] = 0x00f7, + [0xf8] = 0x00f8, [0xf9] = 0x00f9, [0xfa] = 0x00fa, [0xfb] = 0x00fb, + [0xfc] = 0x00fc, [0xfd] = 0x01b0, [0xfe] = 0x20ab, [0xff] = 0x00ff, +}; + +static const struct gap from_idx[] = +{ + { start: 0x0000, end: 0x0103, idx: 0 }, + { start: 0x0110, end: 0x0111, idx: -12 }, + { start: 0x0152, end: 0x0153, idx: -76 }, + { start: 0x0178, end: 0x0178, idx: -112 }, + { start: 0x01a0, end: 0x01a1, idx: -151 }, + { start: 0x01af, end: 0x01b0, idx: -164 }, + { start: 0x0300, end: 0x0309, idx: -499 }, + { start: 0x0323, end: 0x0323, idx: -524 }, + { start: 0x20ab, end: 0x20ab, idx: -8083 }, + { start: 0xff01, end: 0xff5e, idx: -65000 }, + { start: 0xffff, end: 0xffff, idx: 0 } +}; + +static const char from_ucs4[] = +{ + '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', + '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f', + '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', + '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f', + '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27', + '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f', + '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', + '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f', + '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47', + '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f', + '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57', + '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f', + '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', + '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f', + '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77', + '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f', + '\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87', + '\x88', '\x89', '\x8a', '\x8b', '\x8c', '\x8d', '\x8e', '\x8f', + '\x90', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96', '\x97', + '\x98', '\x99', '\x9a', '\x9b', '\x9c', '\x9d', '\x9e', '\x9f', + '\xa0', '\xa1', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6', '\xa7', + '\x00', '\xa9', '\xaa', '\xab', '\xac', '\xad', '\xae', '\xaf', + '\xb0', '\xb1', '\xb2', '\xb3', '\x00', '\xb5', '\xb6', '\xb7', + '\x00', '\xb9', '\xba', '\xbb', '\xbc', '\xbd', '\xbe', '\xbf', + '\xc0', '\xc1', '\xc2', '\x00', '\xc4', '\xc5', '\xc6', '\xc7', + '\xc8', '\xc9', '\xca', '\xcb', '\x00', '\xcd', '\xce', '\xcf', + '\x00', '\xd1', '\x00', '\xd3', '\xd4', '\x00', '\xd6', '\xd7', + '\xd8', '\xd9', '\xda', '\xdb', '\xdc', '\x00', '\x00', '\xdf', + '\xe0', '\xe1', '\xe2', '\x00', '\xe4', '\xe5', '\xe6', '\xe7', + '\xe8', '\xe9', '\xea', '\xeb', '\x00', '\xed', '\xee', '\xef', + '\x00', '\xf1', '\x00', '\xf3', '\xf4', '\x00', '\xf6', '\xf7', + '\xf8', '\xf9', '\xfa', '\xfb', '\xfc', '\x00', '\x00', '\xff', + '\x00', '\x00', '\xc3', '\xe3', '\xd0', '\xf0', '\xb8', '\xa8', + '\xb4', '\xd5', '\xf5', '\xdd', '\xfd', '\xcc', '\xec', '\x00', + '\xde', '\x00', '\x00', '\x00', '\x00', '\x00', '\xd2', '\xf2', + '\xfe', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27', + '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f', + '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', + '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f', + '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47', + '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f', + '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57', + '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f', + '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', + '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f', + '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77', + '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', +}; diff -adurpN glibc-2.2/iconvdata/ibm922.c glibc-2.2.1/iconvdata/ibm922.c --- glibc-2.2/iconvdata/ibm922.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/iconvdata/ibm922.c Tue Nov 28 06:09:34 2000 @@ -0,0 +1,29 @@ +/* Conversion from and to IBM922. + Copyright (C) 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Masahide Washizawa , 2000. + + 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. */ + +#include + +/* Get the conversion table. */ +#define TABLES + +#define CHARSET_NAME "IBM922//" +#define HAS_HOLES 0 /* All 256 character are defined. */ + +#include <8bit-gap.c> diff -adurpN glibc-2.2/iconvdata/ibm922.h glibc-2.2.1/iconvdata/ibm922.h --- glibc-2.2/iconvdata/ibm922.h Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/iconvdata/ibm922.h Tue Nov 28 06:09:42 2000 @@ -0,0 +1,185 @@ +/* Tables for conversion from and to IBM922. + Copyright (C) 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Masahide Washizawa , 2000. + + 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. */ + +static const uint32_t to_ucs4[256] = +{ + [0x00] = 0x0000, [0x01] = 0x0001, [0x02] = 0x0002, [0x03] = 0x0003, + [0x04] = 0x0004, [0x05] = 0x0005, [0x06] = 0x0006, [0x07] = 0x0007, + [0x08] = 0x0008, [0x09] = 0x0009, [0x0a] = 0x000a, [0x0b] = 0x000b, + [0x0c] = 0x000c, [0x0d] = 0x000d, [0x0e] = 0x000e, [0x0f] = 0x000f, + [0x10] = 0x0010, [0x11] = 0x0011, [0x12] = 0x0012, [0x13] = 0x0013, + [0x14] = 0x0014, [0x15] = 0x0015, [0x16] = 0x0016, [0x17] = 0x0017, + [0x18] = 0x0018, [0x19] = 0x0019, [0x1a] = 0x001a, [0x1b] = 0x001b, + [0x1c] = 0x001c, [0x1d] = 0x001d, [0x1e] = 0x001e, [0x1f] = 0x001f, + [0x20] = 0x0020, [0x21] = 0x0021, [0x22] = 0x0022, [0x23] = 0x0023, + [0x24] = 0x0024, [0x25] = 0x0025, [0x26] = 0x0026, [0x27] = 0x0027, + [0x28] = 0x0028, [0x29] = 0x0029, [0x2a] = 0x002a, [0x2b] = 0x002b, + [0x2c] = 0x002c, [0x2d] = 0x002d, [0x2e] = 0x002e, [0x2f] = 0x002f, + [0x30] = 0x0030, [0x31] = 0x0031, [0x32] = 0x0032, [0x33] = 0x0033, + [0x34] = 0x0034, [0x35] = 0x0035, [0x36] = 0x0036, [0x37] = 0x0037, + [0x38] = 0x0038, [0x39] = 0x0039, [0x3a] = 0x003a, [0x3b] = 0x003b, + [0x3c] = 0x003c, [0x3d] = 0x003d, [0x3e] = 0x003e, [0x3f] = 0x003f, + [0x40] = 0x0040, [0x41] = 0x0041, [0x42] = 0x0042, [0x43] = 0x0043, + [0x44] = 0x0044, [0x45] = 0x0045, [0x46] = 0x0046, [0x47] = 0x0047, + [0x48] = 0x0048, [0x49] = 0x0049, [0x4a] = 0x004a, [0x4b] = 0x004b, + [0x4c] = 0x004c, [0x4d] = 0x004d, [0x4e] = 0x004e, [0x4f] = 0x004f, + [0x50] = 0x0050, [0x51] = 0x0051, [0x52] = 0x0052, [0x53] = 0x0053, + [0x54] = 0x0054, [0x55] = 0x0055, [0x56] = 0x0056, [0x57] = 0x0057, + [0x58] = 0x0058, [0x59] = 0x0059, [0x5a] = 0x005a, [0x5b] = 0x005b, + [0x5c] = 0x005c, [0x5d] = 0x005d, [0x5e] = 0x005e, [0x5f] = 0x005f, + [0x60] = 0x0060, [0x61] = 0x0061, [0x62] = 0x0062, [0x63] = 0x0063, + [0x64] = 0x0064, [0x65] = 0x0065, [0x66] = 0x0066, [0x67] = 0x0067, + [0x68] = 0x0068, [0x69] = 0x0069, [0x6a] = 0x006a, [0x6b] = 0x006b, + [0x6c] = 0x006c, [0x6d] = 0x006d, [0x6e] = 0x006e, [0x6f] = 0x006f, + [0x70] = 0x0070, [0x71] = 0x0071, [0x72] = 0x0072, [0x73] = 0x0073, + [0x74] = 0x0074, [0x75] = 0x0075, [0x76] = 0x0076, [0x77] = 0x0077, + [0x78] = 0x0078, [0x79] = 0x0079, [0x7a] = 0x007a, [0x7b] = 0x007b, + [0x7c] = 0x007c, [0x7d] = 0x007d, [0x7e] = 0x007e, [0x7f] = 0x007f, + [0x80] = 0x0080, [0x81] = 0x0081, [0x82] = 0x0082, [0x83] = 0x0083, + [0x84] = 0x0084, [0x85] = 0x0085, [0x86] = 0x0086, [0x87] = 0x0087, + [0x88] = 0x0088, [0x89] = 0x0089, [0x8a] = 0x008a, [0x8b] = 0x008b, + [0x8c] = 0x008c, [0x8d] = 0x008d, [0x8e] = 0x008e, [0x8f] = 0x008f, + [0x90] = 0x0090, [0x91] = 0x0091, [0x92] = 0x0092, [0x93] = 0x0093, + [0x94] = 0x0094, [0x95] = 0x0095, [0x96] = 0x0096, [0x97] = 0x0097, + [0x98] = 0x0098, [0x99] = 0x0099, [0x9a] = 0x009a, [0x9b] = 0x009b, + [0x9c] = 0x009c, [0x9d] = 0x009d, [0x9e] = 0x009e, [0x9f] = 0x009f, + [0xa0] = 0x00a0, [0xa1] = 0x00a1, [0xa2] = 0x00a2, [0xa3] = 0x00a3, + [0xa4] = 0x00a4, [0xa5] = 0x00a5, [0xa6] = 0x00a6, [0xa7] = 0x00a7, + [0xa8] = 0x00a8, [0xa9] = 0x00a9, [0xaa] = 0x00aa, [0xab] = 0x00ab, + [0xac] = 0x00ac, [0xad] = 0x00ad, [0xae] = 0x00ae, [0xaf] = 0x00af, + [0xb0] = 0x00b0, [0xb1] = 0x00b1, [0xb2] = 0x00b2, [0xb3] = 0x00b3, + [0xb4] = 0x00b4, [0xb5] = 0x00b5, [0xb6] = 0x00b6, [0xb7] = 0x00b7, + [0xb8] = 0x00b8, [0xb9] = 0x00b9, [0xba] = 0x00ba, [0xbb] = 0x00bb, + [0xbc] = 0x00bc, [0xbd] = 0x00bd, [0xbe] = 0x00be, [0xbf] = 0x00bf, + [0xc0] = 0x00c0, [0xc1] = 0x00c1, [0xc2] = 0x00c2, [0xc3] = 0x00c3, + [0xc4] = 0x00c4, [0xc5] = 0x00c5, [0xc6] = 0x00c6, [0xc7] = 0x00c7, + [0xc8] = 0x00c8, [0xc9] = 0x00c9, [0xca] = 0x00ca, [0xcb] = 0x00cb, + [0xcc] = 0x00cc, [0xcd] = 0x00cd, [0xce] = 0x00ce, [0xcf] = 0x00cf, + [0xd0] = 0x0160, [0xd1] = 0x00d1, [0xd2] = 0x00d2, [0xd3] = 0x00d3, + [0xd4] = 0x00d4, [0xd5] = 0x00d5, [0xd6] = 0x00d6, [0xd7] = 0x00d7, + [0xd8] = 0x00d8, [0xd9] = 0x00d9, [0xda] = 0x00da, [0xdb] = 0x00db, + [0xdc] = 0x00dc, [0xdd] = 0x00dd, [0xde] = 0x017d, [0xdf] = 0x00df, + [0xe0] = 0x00e0, [0xe1] = 0x00e1, [0xe2] = 0x00e2, [0xe3] = 0x00e3, + [0xe4] = 0x00e4, [0xe5] = 0x00e5, [0xe6] = 0x00e6, [0xe7] = 0x00e7, + [0xe8] = 0x00e8, [0xe9] = 0x00e9, [0xea] = 0x00ea, [0xeb] = 0x00eb, + [0xec] = 0x00ec, [0xed] = 0x00ed, [0xee] = 0x00ee, [0xef] = 0x00ef, + [0xf0] = 0x0161, [0xf1] = 0x00f1, [0xf2] = 0x00f2, [0xf3] = 0x00f3, + [0xf4] = 0x00f4, [0xf5] = 0x00f5, [0xf6] = 0x00f6, [0xf7] = 0x00f7, + [0xf8] = 0x00f8, [0xf9] = 0x00f9, [0xfa] = 0x00fa, [0xfb] = 0x00fb, + [0xfc] = 0x00fc, [0xfd] = 0x00fd, [0xfe] = 0x017e, [0xff] = 0x00ff, +}; + +static const struct gap from_idx[] = +{ + { start: 0x0000, end: 0x00ff, idx: 0 }, + { start: 0x0160, end: 0x0161, idx: -96 }, + { start: 0x017d, end: 0x017e, idx: -123 }, + { start: 0x2017, end: 0x2017, idx: -7955 }, + { start: 0x2022, end: 0x2022, idx: -7965 }, + { start: 0x203c, end: 0x203e, idx: -7990 }, + { start: 0x2190, end: 0x2195, idx: -8327 }, + { start: 0x21a8, end: 0x21a8, idx: -8345 }, + { start: 0x221f, end: 0x221f, idx: -8463 }, + { start: 0x2264, end: 0x2265, idx: -8531 }, + { start: 0x2500, end: 0x2502, idx: -9197 }, + { start: 0x250c, end: 0x251c, idx: -9206 }, + { start: 0x2524, end: 0x2524, idx: -9213 }, + { start: 0x252c, end: 0x252c, idx: -9220 }, + { start: 0x2534, end: 0x2534, idx: -9227 }, + { start: 0x253c, end: 0x253c, idx: -9234 }, + { start: 0x2550, end: 0x256c, idx: -9253 }, + { start: 0x2580, end: 0x2588, idx: -9272 }, + { start: 0x2591, end: 0x2593, idx: -9280 }, + { start: 0x25a0, end: 0x25a0, idx: -9292 }, + { start: 0x25ac, end: 0x25b2, idx: -9303 }, + { start: 0x25ba, end: 0x25bc, idx: -9310 }, + { start: 0x25c4, end: 0x25c4, idx: -9317 }, + { start: 0x25cb, end: 0x25cb, idx: -9323 }, + { start: 0x25d8, end: 0x25d9, idx: -9335 }, + { start: 0x263a, end: 0x2642, idx: -9431 }, + { start: 0x2660, end: 0x266c, idx: -9460 }, + { start: 0xff01, end: 0xff5e, idx: -64904 }, + { start: 0xffe8, end: 0xffee, idx: -65041 }, + { start: 0xffff, end: 0xffff, idx: 0 } +}; + +static const char from_ucs4[] = +{ + '\x00', '\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', + '\x08', '\x09', '\x0a', '\x0b', '\x0c', '\x0d', '\x0e', '\x0f', + '\x10', '\x11', '\x12', '\x13', '\x14', '\x15', '\x16', '\x17', + '\x18', '\x19', '\x1a', '\x1b', '\x1c', '\x1d', '\x1e', '\x1f', + '\x20', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27', + '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f', + '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', + '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f', + '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47', + '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f', + '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57', + '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f', + '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', + '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f', + '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77', + '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x7f', + '\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87', + '\x88', '\x89', '\x8a', '\x8b', '\x8c', '\x8d', '\x8e', '\x8f', + '\x90', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96', '\x97', + '\x98', '\x99', '\x9a', '\x9b', '\x9c', '\x9d', '\x9e', '\x9f', + '\xa0', '\xa1', '\xa2', '\xa3', '\xa4', '\xa5', '\xa6', '\xa7', + '\xa8', '\xa9', '\xaa', '\xab', '\xac', '\xad', '\xae', '\xaf', + '\xb0', '\xb1', '\xb2', '\xb3', '\xb4', '\xb5', '\xb6', '\xb7', + '\xb8', '\xb9', '\xba', '\xbb', '\xbc', '\xbd', '\xbe', '\xbf', + '\xc0', '\xc1', '\xc2', '\xc3', '\xc4', '\xc5', '\xc6', '\xc7', + '\xc8', '\xc9', '\xca', '\xcb', '\xcc', '\xcd', '\xce', '\xcf', + '\x00', '\xd1', '\xd2', '\xd3', '\xd4', '\xd5', '\xd6', '\xd7', + '\xd8', '\xd9', '\xda', '\xdb', '\xdc', '\xdd', '\x00', '\xdf', + '\xe0', '\xe1', '\xe2', '\xe3', '\xe4', '\xe5', '\xe6', '\xe7', + '\xe8', '\xe9', '\xea', '\xeb', '\xec', '\xed', '\xee', '\xef', + '\x00', '\xf1', '\xf2', '\xf3', '\xf4', '\xf5', '\xf6', '\xf7', + '\xf8', '\xf9', '\xfa', '\xfb', '\xfc', '\xfd', '\x00', '\xff', + '\xd0', '\xf0', '\xde', '\xfe', '\x97', '\x07', '\x13', '\x00', + '\xaf', '\x1b', '\x18', '\x1a', '\x19', '\x1d', '\x12', '\x17', + '\x1c', '\x9f', '\x8e', '\x94', '\x00', '\x83', '\x86', '\x00', + '\x00', '\x00', '\x8f', '\x00', '\x00', '\x00', '\x90', '\x00', + '\x00', '\x00', '\x85', '\x00', '\x00', '\x00', '\x93', '\x84', + '\x92', '\x91', '\x95', '\x9d', '\x8a', '\x00', '\x00', '\x99', + '\x00', '\x00', '\x8b', '\x00', '\x00', '\x98', '\x00', '\x00', + '\x8c', '\x00', '\x00', '\x9c', '\x00', '\x00', '\x89', '\x00', + '\x00', '\x9b', '\x00', '\x00', '\x9a', '\x00', '\x00', '\x9e', + '\x8d', '\x00', '\x00', '\x00', '\x88', '\x00', '\x00', '\x00', + '\x87', '\x80', '\x81', '\x82', '\x96', '\x16', '\x00', '\x00', + '\x00', '\x00', '\x00', '\x1e', '\x10', '\x00', '\x1f', '\x11', + '\x09', '\x08', '\x0a', '\x01', '\x02', '\x0f', '\x00', '\x00', + '\x00', '\x0c', '\x00', '\x0b', '\x06', '\x00', '\x00', '\x05', + '\x00', '\x03', '\x04', '\x00', '\x00', '\x00', '\x0d', '\x00', + '\x0e', '\x21', '\x22', '\x23', '\x24', '\x25', '\x26', '\x27', + '\x28', '\x29', '\x2a', '\x2b', '\x2c', '\x2d', '\x2e', '\x2f', + '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37', + '\x38', '\x39', '\x3a', '\x3b', '\x3c', '\x3d', '\x3e', '\x3f', + '\x40', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47', + '\x48', '\x49', '\x4a', '\x4b', '\x4c', '\x4d', '\x4e', '\x4f', + '\x50', '\x51', '\x52', '\x53', '\x54', '\x55', '\x56', '\x57', + '\x58', '\x59', '\x5a', '\x5b', '\x5c', '\x5d', '\x5e', '\x5f', + '\x60', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67', + '\x68', '\x69', '\x6a', '\x6b', '\x6c', '\x6d', '\x6e', '\x6f', + '\x70', '\x71', '\x72', '\x73', '\x74', '\x75', '\x76', '\x77', + '\x78', '\x79', '\x7a', '\x7b', '\x7c', '\x7d', '\x7e', '\x83', + '\x1b', '\x18', '\x1a', '\x19', '\x96', '\x09', +}; diff -adurpN glibc-2.2/iconvdata/ibm930.c glibc-2.2.1/iconvdata/ibm930.c --- glibc-2.2/iconvdata/ibm930.c Tue Oct 31 00:17:25 2000 +++ glibc-2.2.1/iconvdata/ibm930.c Sat Jan 6 20:35:13 2001 @@ -1,5 +1,5 @@ /* Conversion from and to IBM930. - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Masahide Washizawa , 2000. @@ -32,42 +32,77 @@ #define CHARSET_NAME "IBM930//" #define FROM_LOOP from_ibm930 #define TO_LOOP to_ibm930 +#define MIN_NEEDED_FROM 1 +#define MAX_NEEDED_FROM 2 +#define MIN_NEEDED_TO 4 +#define MAX_NEEDED_TO 4 +#define PREPARE_LOOP \ + int save_curcs; \ + int *curcsp = &data->__statep->__count; +#define EXTRA_LOOP_ARGS , curcsp /* Definitions of initialization and destructor function. */ #define DEFINE_INIT 1 #define DEFINE_FINI 1 -#define MIN_NEEDED_FROM 1 -#define MIN_NEEDED_TO 4 + +/* Since this is a stateful encoding we have to provide code which resets + the output state to the initial state. This has to be done during the + flushing. */ +#define EMIT_SHIFT_TO_INIT \ + if ((data->__statep->__count & ~7) != sb) \ + { \ + if (FROM_DIRECTION) \ + data->__statep->__count &= 7; \ + else \ + { \ + unsigned char *outbuf = data->__outbuf; \ + \ + /* We are not in the initial state. To switch back we have \ + to emit `SI'. */ \ + if (__builtin_expect (outbuf >= data->__outbufend, 0)) \ + /* We don't have enough room in the output buffer. */ \ + status = __GCONV_FULL_OUTPUT; \ + else \ + { \ + /* Write out the shift sequence. */ \ + *outbuf++ = SI; \ + data->__outbuf = outbuf; \ + data->__statep->__count &= 7; \ + } \ + } \ + } + + +/* Since we might have to reset input pointer we must be able to save + and retore the state. */ +#define SAVE_RESET_STATE(Save) \ + if (Save) \ + save_curcs = *curcsp; \ + else \ + *curcsp = save_curcs + /* Current codeset type. */ enum { - init = 0, - sb, - db + sb = 0, + db = 64 }; + /* First, define the conversion function from IBM-930 to UCS4. */ #define MIN_NEEDED_INPUT MIN_NEEDED_FROM +#define MAX_NEEDED_INPUT MAX_NEEDED_FROM #define MIN_NEEDED_OUTPUT MIN_NEEDED_TO -#define INIT_PARAMS int curcs = init; #define LOOPFCT FROM_LOOP #define BODY \ { \ uint32_t ch = *inptr; \ uint32_t res; \ - const struct gap *rp1 = __ibm930sb_to_ucs4_idx; \ - const struct gap *rp2 = __ibm930db_to_ucs4_idx; \ \ if (__builtin_expect (ch, 0) == SO) \ { \ - if (__builtin_expect (inptr + 1 >= inend, 0)) \ - { \ - result = __GCONV_INCOMPLETE_INPUT; \ - break; \ - } \ - \ /* Shift OUT, change to DBCS converter. */ \ if (curcs == db) \ { \ @@ -76,16 +111,10 @@ enum } \ curcs = db; \ ++inptr; \ - ch = *inptr; \ + continue; \ } \ else if (__builtin_expect (ch, 0) == SI) \ { \ - if (__builtin_expect (inptr + 1 >= inend, 0)) \ - { \ - result = __GCONV_INCOMPLETE_INPUT; \ - break; \ - } \ - \ /* Shift IN, change to SBCS converter */ \ if (curcs == sb) \ { \ @@ -94,19 +123,14 @@ enum } \ curcs = sb; \ ++inptr; \ - ch = *inptr; \ + continue; \ } \ \ - if (curcs == sb || curcs == init) \ + if (curcs == sb) \ { \ /* Use the IBM930 table for single byte. */ \ - while (ch > rp1->end) \ - ++rp1; \ - \ - if (__builtin_expect (rp1 == NULL, 0) \ - || __builtin_expect (ch < rp1->start, 0) \ - || (res = __ibm930sb_to_ucs4[ch + rp1->idx], \ - __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \ + res = __ibm930sb_to_ucs4[ch]; \ + if (__builtin_expect (res, L'\1') == L'\0' && ch != '\0') \ { \ /* This is an illegal character. */ \ if (! ignore_errors_p ()) \ @@ -115,21 +139,21 @@ enum break; \ } \ ++*irreversible; \ - ++inptr; \ - continue; \ } \ else \ { \ - if (res == 0xa5) \ - res = 0x5c; \ put32 (outptr, res); \ outptr += 4; \ - ++inptr; \ } \ + ++inptr; \ } \ - else if (curcs == db) \ + else \ { \ /* Use the IBM930 table for double byte. */ \ + const struct gap *rp2 = __ibm930db_to_ucs4_idx; \ + \ + assert (curcs == db); \ + \ if (__builtin_expect (inptr + 1 >= inend, 0)) \ { \ /* The second character is not available. Store the \ @@ -142,8 +166,7 @@ enum while (ch > rp2->end) \ ++rp2; \ \ - if (__builtin_expect (rp2 == NULL, 0) \ - || __builtin_expect (ch < rp2->start, 0) \ + if (__builtin_expect (ch < rp2->start, 0) \ || (res = __ibm930db_to_ucs4[ch + rp2->idx], \ __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \ { \ @@ -154,24 +177,25 @@ enum break; \ } \ ++*irreversible; \ - inptr += 2; \ - continue; \ } \ else \ { \ put32 (outptr, res); \ outptr += 4; \ - inptr += 2; \ } \ + inptr += 2; \ } \ } #define LOOP_NEED_FLAGS +#define EXTRA_LOOP_DECLS , int *curcsp +#define INIT_PARAMS int curcs = *curcsp & ~7 +#define UPDATE_PARAMS *curcsp = curcs #include /* Next, define the other direction. */ #define MIN_NEEDED_INPUT MIN_NEEDED_TO #define MIN_NEEDED_OUTPUT MIN_NEEDED_FROM -#define INIT_PARAMS int curcs = init; +#define MAX_NEEDED_OUTPUT MAX_NEEDED_FROM #define LOOPFCT TO_LOOP #define BODY \ { \ @@ -182,16 +206,21 @@ enum \ if (__builtin_expect (ch, 0) >= 0xffff) \ { \ - rp1 = NULL; \ - rp2 = NULL; \ + if (! ignore_errors_p ()) \ + { \ + result = __GCONV_ILLEGAL_INPUT; \ + break; \ + } \ + ++*irreversible; \ + inptr += 4; \ + continue; \ } \ - else \ - while (ch > rp1->end) \ - ++rp1; \ + \ + while (ch > rp1->end) \ + ++rp1; \ \ /* Use the UCS4 table for single byte. */ \ - if (__builtin_expect (rp1 == NULL, 0) \ - || __builtin_expect (ch < rp1->start, 0) \ + if (__builtin_expect (ch < rp1->start, 0) \ || (cp = __ucs4_to_ibm930sb[ch + rp1->idx], \ __builtin_expect (cp[0], L'\1') == L'\0' && ch != '\0')) \ { \ @@ -199,8 +228,7 @@ enum while (ch > rp2->end) \ ++rp2; \ \ - if (__builtin_expect (rp2 == NULL, 0) \ - || __builtin_expect (ch < rp2->start, 0) \ + if (__builtin_expect (ch < rp2->start, 0) \ || (cp = __ucs4_to_ibm930db[ch + rp2->idx], \ __builtin_expect (cp[0], L'\1')==L'\0' && ch != '\0')) \ { \ @@ -214,7 +242,7 @@ enum } \ else \ { \ - if (curcs == init || curcs == sb) \ + if (curcs == sb) \ { \ if (__builtin_expect (outptr+1 > outend, 0)) \ { \ @@ -264,6 +292,9 @@ enum inptr += 4; \ } #define LOOP_NEED_FLAGS +#define EXTRA_LOOP_DECLS , int *curcsp +#define INIT_PARAMS int curcs = *curcsp & ~7 +#define UPDATE_PARAMS *curcsp = curcs #include /* Now define the toplevel functions. */ diff -adurpN glibc-2.2/iconvdata/ibm930.h glibc-2.2.1/iconvdata/ibm930.h --- glibc-2.2/iconvdata/ibm930.h Tue Oct 31 00:18:06 2000 +++ glibc-2.2.1/iconvdata/ibm930.h Sat Jan 6 20:35:13 2001 @@ -1,5 +1,5 @@ /* Tables for conversion from and to IBM930. - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Masahide Washizawa , 2000. @@ -32,49 +32,40 @@ struct gap }; -static const struct gap __ibm930sb_to_ucs4_idx[] = -{ - { start: 0x0000, end: 0x0056, idx: 0 }, - { start: 0x0058, end: 0x0058, idx: -1 }, - { start: 0x005a, end: 0x0069, idx: -2 }, - { start: 0x006b, end: 0x009b, idx: -3 }, - { start: 0x009d, end: 0x00c9, idx: -4 }, - { start: 0x00d0, end: 0x00d9, idx: -10 }, - { start: 0x00e0, end: 0x00e0, idx: -16 }, - { start: 0x00e2, end: 0x00e9, idx: -17 }, - { start: 0x00f0, end: 0x00f9, idx: -23 }, - { start: 0x00ff, end: 0x00ff, idx: -28 }, - { start: 0xffff, end: 0xffff, idx: 0 } -}; - -static const uint16_t __ibm930sb_to_ucs4[] = +static const uint16_t __ibm930sb_to_ucs4[256] = { - 0x0000, 0x0001, 0x0002, 0x0003, 0x009C, 0x0009, 0x0086, 0x007F, 0x0097, - 0x008D, 0x008E, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, 0x0010, 0x0011, - 0x0012, 0x0013, 0x009D, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, - 0x008F, 0x001C, 0x001D, 0x001E, 0x001F, 0x0080, 0x0081, 0x0082, 0x0083, - 0x0084, 0x000A, 0x0017, 0x001B, 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, - 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, - 0x0096, 0x0004, 0x0098, 0x0099, 0x009A, 0x009B, 0x0014, 0x0015, 0x009E, - 0x001A, 0x0020, 0xFF61, 0xFF62, 0xFF63, 0xFF64, 0xFF65, 0xFF66, 0xFF67, - 0xFF68, 0xFF69, 0x00A3, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, 0x0026, - 0xFF6A, 0xFF6B, 0xFF6C, 0xFF6D, 0xFF6E, 0xFF6F, 0xFF70, 0x0021, 0x00A5, - 0x002A, 0x0029, 0x003B, 0x00AC, 0x002D, 0x002F, 0x0061, 0x0062, 0x0063, - 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x002C, 0x0025, 0x005F, 0x003E, - 0x003F, 0x005B, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, - 0x0070, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, 0x005D, - 0xFF71, 0xFF72, 0xFF73, 0xFF74, 0xFF75, 0xFF76, 0xFF77, 0xFF78, 0xFF79, - 0xFF7A, 0x0071, 0xFF7B, 0xFF7C, 0xFF7D, 0xFF7E, 0xFF7F, 0xFF80, 0xFF81, - 0xFF82, 0xFF83, 0xFF84, 0xFF85, 0xFF86, 0xFF87, 0xFF88, 0xFF89, 0x0072, - 0xFF8A, 0xFF8B, 0xFF8C, 0x007E, 0x203E, 0xFF8D, 0xFF8E, 0xFF8F, 0xFF90, - 0xFF91, 0xFF92, 0xFF93, 0xFF94, 0xFF95, 0x0073, 0xFF96, 0xFF97, 0xFF98, - 0xFF99, 0x005E, 0x00A2, 0x005C, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, - 0x0079, 0x007A, 0xFF9A, 0xFF9B, 0xFF9C, 0xFF9D, 0xFF9E, 0xFF9F, 0x007B, - 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, - 0x007D, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, - 0x0052, 0x0024, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, - 0x005A, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, - 0x0038, 0x0039, 0x009F + /* 0x00 */ 0x0000, 0x0001, 0x0002, 0x0003, 0x009C, 0x0009, 0x0086, 0x007F, + /* 0x08 */ 0x0097, 0x008D, 0x008E, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + /* 0x10 */ 0x0010, 0x0011, 0x0012, 0x0013, 0x009D, 0x0085, 0x0008, 0x0087, + /* 0x18 */ 0x0018, 0x0019, 0x0092, 0x008F, 0x001C, 0x001D, 0x001E, 0x001F, + /* 0x20 */ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000A, 0x0017, 0x001B, + /* 0x28 */ 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x0005, 0x0006, 0x0007, + /* 0x30 */ 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, + /* 0x38 */ 0x0098, 0x0099, 0x009A, 0x009B, 0x0014, 0x0015, 0x009E, 0x001A, + /* 0x40 */ 0x0020, 0xFF61, 0xFF62, 0xFF63, 0xFF64, 0xFF65, 0xFF66, 0xFF67, + /* 0x48 */ 0xFF68, 0xFF69, 0x00A3, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, + /* 0x50 */ 0x0026, 0xFF6A, 0xFF6B, 0xFF6C, 0xFF6D, 0xFF6E, 0xFF6F, 0x0000, + /* 0x58 */ 0xFF70, 0x0000, 0x0021, 0x005C, 0x002A, 0x0029, 0x003B, 0x00AC, + /* 0x60 */ 0x002D, 0x002F, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, + /* 0x68 */ 0x0067, 0x0068, 0x0000, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, + /* 0x70 */ 0x005B, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + /* 0x78 */ 0x0070, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, + /* 0x80 */ 0x005D, 0xFF71, 0xFF72, 0xFF73, 0xFF74, 0xFF75, 0xFF76, 0xFF77, + /* 0x88 */ 0xFF78, 0xFF79, 0xFF7A, 0x0071, 0xFF7B, 0xFF7C, 0xFF7D, 0xFF7E, + /* 0x90 */ 0xFF7F, 0xFF80, 0xFF81, 0xFF82, 0xFF83, 0xFF84, 0xFF85, 0xFF86, + /* 0x98 */ 0xFF87, 0xFF88, 0xFF89, 0x0072, 0x0000, 0xFF8A, 0xFF8B, 0xFF8C, + /* 0xa0 */ 0x007E, 0x203E, 0xFF8D, 0xFF8E, 0xFF8F, 0xFF90, 0xFF91, 0xFF92, + /* 0xa8 */ 0xFF93, 0xFF94, 0xFF95, 0x0073, 0xFF96, 0xFF97, 0xFF98, 0xFF99, + /* 0xb0 */ 0x005E, 0x00A2, 0x005C, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, + /* 0xb8 */ 0x0079, 0x007A, 0xFF9A, 0xFF9B, 0xFF9C, 0xFF9D, 0xFF9E, 0xFF9F, + /* 0xc0 */ 0x007B, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + /* 0xc8 */ 0x0048, 0x0049, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xd0 */ 0x007D, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, + /* 0xd8 */ 0x0051, 0x0052, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xe0 */ 0x0024, 0x0000, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, + /* 0xe8 */ 0x0059, 0x005A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xf0 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + /* 0xf8 */ 0x0038, 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x009F }; static const struct gap __ibm930db_to_ucs4_idx[] = diff -adurpN glibc-2.2/iconvdata/ibm933.c glibc-2.2.1/iconvdata/ibm933.c --- glibc-2.2/iconvdata/ibm933.c Tue Oct 31 00:18:11 2000 +++ glibc-2.2.1/iconvdata/ibm933.c Sat Jan 6 20:35:13 2001 @@ -1,5 +1,5 @@ /* Conversion from and to IBM933. - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Masahide Washizawa , 2000. @@ -32,42 +32,76 @@ #define CHARSET_NAME "IBM933//" #define FROM_LOOP from_ibm933 #define TO_LOOP to_ibm933 +#define MIN_NEEDED_FROM 1 +#define MAX_NEEDED_FROM 2 +#define MIN_NEEDED_TO 4 +#define MAX_NEEDED_TO 4 +#define PREPARE_LOOP \ + int save_curcs; \ + int *curcsp = &data->__statep->__count; +#define EXTRA_LOOP_ARGS , curcsp /* Definitions of initialization and destructor function. */ #define DEFINE_INIT 1 #define DEFINE_FINI 1 -#define MIN_NEEDED_FROM 1 -#define MIN_NEEDED_TO 4 + +/* Since this is a stateful encoding we have to provide code which resets + the output state to the initial state. This has to be done during the + flushing. */ +#define EMIT_SHIFT_TO_INIT \ + if ((data->__statep->__count & ~7) != sb) \ + { \ + if (FROM_DIRECTION) \ + data->__statep->__count &= 7; \ + else \ + { \ + unsigned char *outbuf = data->__outbuf; \ + \ + /* We are not in the initial state. To switch back we have \ + to emit `SI'. */ \ + if (__builtin_expect (outbuf >= data->__outbufend, 0)) \ + /* We don't have enough room in the output buffer. */ \ + status = __GCONV_FULL_OUTPUT; \ + else \ + { \ + /* Write out the shift sequence. */ \ + *outbuf++ = SI; \ + data->__outbuf = outbuf; \ + data->__statep->__count &= 7; \ + } \ + } \ + } + + +/* Since we might have to reset input pointer we must be able to save + and retore the state. */ +#define SAVE_RESET_STATE(Save) \ + if (Save) \ + save_curcs = *curcsp; \ + else \ + *curcsp = save_curcs + /* Current codeset type. */ enum { - init = 0, - sb, - db + sb = 0, + db = 64 }; /* First, define the conversion function from IBM-933 to UCS4. */ #define MIN_NEEDED_INPUT MIN_NEEDED_FROM +#define MAX_NEEDED_INPUT MAX_NEEDED_FROM #define MIN_NEEDED_OUTPUT MIN_NEEDED_TO -#define INIT_PARAMS int curcs = init; #define LOOPFCT FROM_LOOP #define BODY \ { \ uint32_t ch = *inptr; \ uint32_t res; \ - const struct gap *rp1 = __ibm933sb_to_ucs4_idx; \ - const struct gap *rp2 = __ibm933db_to_ucs4_idx; \ \ if (__builtin_expect (ch, 0) == SO) \ { \ - if (__builtin_expect (inptr + 1 >= inend, 0)) \ - { \ - result = __GCONV_INCOMPLETE_INPUT; \ - break; \ - } \ - \ /* Shift OUT, change to DBCS converter. */ \ if (curcs == db) \ { \ @@ -76,16 +110,10 @@ enum } \ curcs = db; \ ++inptr; \ - ch = *inptr; \ + continue; \ } \ else if (__builtin_expect (ch, 0) == SI) \ { \ - if (__builtin_expect (inptr + 1 >= inend, 0)) \ - { \ - result = __GCONV_INCOMPLETE_INPUT; \ - break; \ - } \ - \ /* Shift IN, change to SBCS converter. */ \ if (curcs == sb) \ { \ @@ -94,19 +122,14 @@ enum } \ curcs = sb; \ ++inptr; \ - ch = *inptr; \ + continue; \ } \ \ - if (curcs == sb || curcs == init) \ + if (curcs == sb) \ { \ /* Use the IBM933 table for single byte. */ \ - while (ch > rp1->end) \ - ++rp1; \ - \ - if (__builtin_expect (rp1 == NULL, 0) \ - || __builtin_expect (ch < rp1->start, 0) \ - || (res = __ibm933sb_to_ucs4[ch + rp1->idx], \ - __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \ + res = __ibm933sb_to_ucs4[ch]; \ + if (__builtin_expect (res, L'\1') == L'\0' && ch != '\0') \ { \ /* This is an illegal character. */ \ if (! ignore_errors_p ()) \ @@ -115,18 +138,20 @@ enum break; \ } \ ++*irreversible; \ - ++inptr; \ - continue; \ } \ else \ { \ put32 (outptr, res); \ outptr += 4; \ - ++inptr; \ } \ + ++inptr; \ } \ - else if (curcs == db) \ + else \ { \ + const struct gap *rp2 = __ibm933db_to_ucs4_idx; \ + \ + assert (curcs == db); \ + \ /* Use the IBM933 table for double byte. */ \ if (__builtin_expect (inptr + 1 >= inend, 0)) \ { \ @@ -164,12 +189,15 @@ enum } \ } #define LOOP_NEED_FLAGS +#define EXTRA_LOOP_DECLS , int *curcsp +#define INIT_PARAMS int curcs = *curcsp & ~7 +#define UPDATE_PARAMS *curcsp = curcs #include /* Next, define the other direction. */ #define MIN_NEEDED_INPUT MIN_NEEDED_TO #define MIN_NEEDED_OUTPUT MIN_NEEDED_FROM -#define INIT_PARAMS int curcs = init; +#define MAX_NEEDED_OUTPUT MAX_NEEDED_FROM #define LOOPFCT TO_LOOP #define BODY \ { \ @@ -180,16 +208,21 @@ enum \ if (__builtin_expect (ch, 0) >= 0xffff) \ { \ - rp1 = NULL; \ - rp2 = NULL; \ + if (! ignore_errors_p ()) \ + { \ + result = __GCONV_ILLEGAL_INPUT; \ + break; \ + } \ + ++*irreversible; \ + inptr += 4; \ + continue; \ } \ - else \ - while (ch > rp1->end) \ - ++rp1; \ + \ + while (ch > rp1->end) \ + ++rp1; \ \ /* Use the UCS4 table for single byte. */ \ - if (__builtin_expect (rp1 == NULL, 0) \ - || __builtin_expect (ch < rp1->start, 0) \ + if (__builtin_expect (ch < rp1->start, 0) \ || (cp = __ucs4_to_ibm933sb[ch + rp1->idx], \ __builtin_expect (cp[0], L'\1') == L'\0' && ch != '\0')) \ { \ @@ -197,8 +230,7 @@ enum while (ch > rp2->end) \ ++rp2; \ \ - if (__builtin_expect (rp2 == NULL, 0) \ - || __builtin_expect (ch < rp2->start, 0) \ + if (__builtin_expect (ch < rp2->start, 0) \ || (cp = __ucs4_to_ibm933db[ch + rp2->idx], \ __builtin_expect (cp[0], L'\1')==L'\0' && ch != '\0')) \ { \ @@ -212,7 +244,7 @@ enum } \ else \ { \ - if (curcs == init || curcs == sb) \ + if (curcs == sb) \ { \ if (__builtin_expect (outptr+1 > outend, 0)) \ { \ @@ -257,6 +289,9 @@ enum inptr += 4; \ } #define LOOP_NEED_FLAGS +#define EXTRA_LOOP_DECLS , int *curcsp +#define INIT_PARAMS int curcs = *curcsp & ~7 +#define UPDATE_PARAMS *curcsp = curcs #include /* Now define the toplevel functions. */ diff -adurpN glibc-2.2/iconvdata/ibm933.h glibc-2.2.1/iconvdata/ibm933.h --- glibc-2.2/iconvdata/ibm933.h Tue Oct 31 00:19:02 2000 +++ glibc-2.2.1/iconvdata/ibm933.h Sat Jan 6 20:35:14 2001 @@ -1,5 +1,5 @@ /* Tables for conversion from and to IBM933. - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Masahide Washizawa , 2000. @@ -32,51 +32,40 @@ struct gap }; -static const struct gap __ibm933sb_to_ucs4_idx[] = -{ - { start: 0x0000, end: 0x0040, idx: 0 }, - { start: 0x0042, end: 0x0050, idx: -1 }, - { start: 0x0052, end: 0x0070, idx: -2 }, - { start: 0x0072, end: 0x008f, idx: -3 }, - { start: 0x0091, end: 0x00b0, idx: -4 }, - { start: 0x00b2, end: 0x00b2, idx: -5 }, - { start: 0x00ba, end: 0x00bc, idx: -12 }, - { start: 0x00c0, end: 0x00c9, idx: -15 }, - { start: 0x00d0, end: 0x00d9, idx: -21 }, - { start: 0x00e0, end: 0x00e0, idx: -27 }, - { start: 0x00e2, end: 0x00e9, idx: -28 }, - { start: 0x00f0, end: 0x00f9, idx: -34 }, - { start: 0x00ff, end: 0x00ff, idx: -39 }, - { start: 0xffff, end: 0xffff, idx: 0 } -}; - -static const uint16_t __ibm933sb_to_ucs4[] = +static const uint16_t __ibm933sb_to_ucs4[256] = { - 0x0000, 0x0001, 0x0002, 0x0003, 0x009C, 0x0009, 0x0086, 0x007F, 0x0097, - 0x008D, 0x008E, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, 0x0010, 0x0011, - 0x0012, 0x0013, 0x009D, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, - 0x008F, 0x001C, 0x001D, 0x001E, 0x001F, 0x0080, 0x0081, 0x0082, 0x0083, - 0x0084, 0x000A, 0x0017, 0x001B, 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, - 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, - 0x0096, 0x0004, 0x0098, 0x0099, 0x009A, 0x009B, 0x0014, 0x0015, 0x009E, - 0x001A, 0x0020, 0xFFA0, 0xFFA1, 0xFFA2, 0xFFA3, 0xFFA4, 0xFFA5, 0xFFA6, - 0xFFA7, 0x00A2, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, 0x0026, 0xFFA8, - 0xFFA9, 0xFFAA, 0xFFAB, 0xFFAC, 0xFFAD, 0xFFAE, 0xFFAF, 0x0021, 0x0024, - 0x002A, 0x0029, 0x003B, 0x00AC, 0x002D, 0x002F, 0xFFB0, 0xFFB1, 0xFFB2, - 0xFFB3, 0xFFB4, 0xFFB5, 0xFFB6, 0xFFB7, 0x00A6, 0x002C, 0x0025, 0x005F, - 0x003E, 0x003F, 0x005B, 0xFFB8, 0xFFB9, 0xFFBA, 0xFFBB, 0xFFBC, 0xFFBD, - 0xFFBE, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, 0x005D, - 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, - 0xFFC2, 0xFFC3, 0xFFC4, 0xFFC5, 0xFFC6, 0xFFC7, 0x006A, 0x006B, 0x006C, - 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0xFFCA, 0xFFCB, 0xFFCC, - 0xFFCD, 0xFFCE, 0xFFCF, 0x203E, 0x007E, 0x0073, 0x0074, 0x0075, 0x0076, - 0x0077, 0x0078, 0x0079, 0x007A, 0xFFD2, 0xFFD3, 0xFFD4, 0xFFD5, 0xFFD6, - 0xFFD7, 0x005E, 0x005C, 0xFFDA, 0xFFDB, 0xFFDC, 0x007B, 0x0041, 0x0042, - 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x007D, 0x004A, - 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x20A9, - 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x0030, - 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, - 0x009F + /* 0x00 */ 0x0000, 0x0001, 0x0002, 0x0003, 0x009C, 0x0009, 0x0086, 0x007F, + /* 0x08 */ 0x0097, 0x008D, 0x008E, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + /* 0x10 */ 0x0010, 0x0011, 0x0012, 0x0013, 0x009D, 0x0085, 0x0008, 0x0087, + /* 0x18 */ 0x0018, 0x0019, 0x0092, 0x008F, 0x001C, 0x001D, 0x001E, 0x001F, + /* 0x20 */ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000A, 0x0017, 0x001B, + /* 0x28 */ 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x0005, 0x0006, 0x0007, + /* 0x30 */ 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, + /* 0x38 */ 0x0098, 0x0099, 0x009A, 0x009B, 0x0014, 0x0015, 0x009E, 0x001A, + /* 0x40 */ 0x0020, 0x0000, 0xFFA0, 0xFFA1, 0xFFA2, 0xFFA3, 0xFFA4, 0xFFA5, + /* 0x48 */ 0xFFA6, 0xFFA7, 0x00A2, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, + /* 0x50 */ 0x0026, 0x0000, 0xFFA8, 0xFFA9, 0xFFAA, 0xFFAB, 0xFFAC, 0xFFAD, + /* 0x58 */ 0xFFAE, 0xFFAF, 0x0021, 0x0024, 0x002A, 0x0029, 0x003B, 0x00AC, + /* 0x60 */ 0x002D, 0x002F, 0xFFB0, 0xFFB1, 0xFFB2, 0xFFB3, 0xFFB4, 0xFFB5, + /* 0x68 */ 0xFFB6, 0xFFB7, 0x00A6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, + /* 0x70 */ 0x005B, 0x0000, 0xFFB8, 0xFFB9, 0xFFBA, 0xFFBB, 0xFFBC, 0xFFBD, + /* 0x78 */ 0xFFBE, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, + /* 0x80 */ 0x005D, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + /* 0x88 */ 0x0068, 0x0069, 0xFFC2, 0xFFC3, 0xFFC4, 0xFFC5, 0xFFC6, 0xFFC7, + /* 0x90 */ 0x0000, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, + /* 0x98 */ 0x0071, 0x0072, 0xFFCA, 0xFFCB, 0xFFCC, 0xFFCD, 0xFFCE, 0xFFCF, + /* 0xa0 */ 0x203E, 0x007E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, + /* 0xa8 */ 0x0079, 0x007A, 0xFFD2, 0xFFD3, 0xFFD4, 0xFFD5, 0xFFD6, 0xFFD7, + /* 0xb0 */ 0x005E, 0x0000, 0x005C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xb8 */ 0x0000, 0x0000, 0xFFDA, 0xFFDB, 0xFFDC, 0x0000, 0x0000, 0x0000, + /* 0xc0 */ 0x007B, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + /* 0xc8 */ 0x0048, 0x0049, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xd0 */ 0x007D, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, + /* 0xd8 */ 0x0051, 0x0052, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xe0 */ 0x20A9, 0x0000, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, + /* 0xe8 */ 0x0059, 0x005A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xf0 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + /* 0xf8 */ 0x0038, 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x009F }; static const struct gap __ibm933db_to_ucs4_idx[] = diff -adurpN glibc-2.2/iconvdata/ibm935.c glibc-2.2.1/iconvdata/ibm935.c --- glibc-2.2/iconvdata/ibm935.c Tue Oct 31 00:19:07 2000 +++ glibc-2.2.1/iconvdata/ibm935.c Sat Jan 6 20:35:14 2001 @@ -1,5 +1,5 @@ /* Conversion from and to IBM935 - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Masahide Washizawa , 2000. @@ -32,42 +32,76 @@ #define CHARSET_NAME "IBM935//" #define FROM_LOOP from_ibm935 #define TO_LOOP to_ibm935 +#define MIN_NEEDED_FROM 1 +#define MAX_NEEDED_FROM 2 +#define MIN_NEEDED_TO 4 +#define MAX_NEEDED_TO 4 +#define PREPARE_LOOP \ + int save_curcs; \ + int *curcsp = &data->__statep->__count; +#define EXTRA_LOOP_ARGS , curcsp /* Definitions of initialization and destructor function. */ #define DEFINE_INIT 1 #define DEFINE_FINI 1 -#define MIN_NEEDED_FROM 1 -#define MIN_NEEDED_TO 4 + +/* Since this is a stateful encoding we have to provide code which resets + the output state to the initial state. This has to be done during the + flushing. */ +#define EMIT_SHIFT_TO_INIT \ + if ((data->__statep->__count & ~7) != sb) \ + { \ + if (FROM_DIRECTION) \ + data->__statep->__count &= 7; \ + else \ + { \ + unsigned char *outbuf = data->__outbuf; \ + \ + /* We are not in the initial state. To switch back we have \ + to emit `SI'. */ \ + if (__builtin_expect (outbuf >= data->__outbufend, 0)) \ + /* We don't have enough room in the output buffer. */ \ + status = __GCONV_FULL_OUTPUT; \ + else \ + { \ + /* Write out the shift sequence. */ \ + *outbuf++ = SI; \ + data->__outbuf = outbuf; \ + data->__statep->__count &= 7; \ + } \ + } \ + } + + +/* Since we might have to reset input pointer we must be able to save + and retore the state. */ +#define SAVE_RESET_STATE(Save) \ + if (Save) \ + save_curcs = *curcsp; \ + else \ + *curcsp = save_curcs + /* Current codeset type. */ enum { - init = 0, - sb, - db + sb = 0, + db = 64 }; /* First, define the conversion function from IBM-935 to UCS4. */ #define MIN_NEEDED_INPUT MIN_NEEDED_FROM +#define MAX_NEEDED_INPUT MAX_NEEDED_FROM #define MIN_NEEDED_OUTPUT MIN_NEEDED_TO -#define INIT_PARAMS int curcs = init; #define LOOPFCT FROM_LOOP #define BODY \ { \ uint32_t ch = *inptr; \ uint32_t res; \ - const struct gap *rp1 = __ibm935sb_to_ucs4_idx; \ - const struct gap *rp2 = __ibm935db_to_ucs4_idx; \ \ if (__builtin_expect(ch, 0) == SO) \ { \ - if (__builtin_expect (inptr + 1 >= inend, 0)) \ - { \ - result = __GCONV_INCOMPLETE_INPUT; \ - break; \ - } \ - \ /* Shift OUT, change to DBCS converter. */ \ if (curcs == db) \ { \ @@ -76,16 +110,10 @@ enum } \ curcs = db; \ ++inptr; \ - ch = *inptr; \ + continue; \ } \ else if (__builtin_expect (ch, 0) == SI) \ { \ - if (__builtin_expect (inptr + 1 >= inend, 0)) \ - { \ - result = __GCONV_INCOMPLETE_INPUT; \ - break; \ - } \ - \ /* Shift IN, change to SBCS converter. */ \ if (curcs == sb) \ { \ @@ -94,19 +122,14 @@ enum } \ curcs = sb; \ ++inptr; \ - ch = *inptr; \ + continue; \ } \ \ - if (curcs == sb || curcs == init) \ + if (curcs == sb) \ { \ /* Use the IBM935 table for single byte. */ \ - while (ch > rp1->end) \ - ++rp1; \ - \ - if (__builtin_expect (rp1 == NULL, 0) \ - || __builtin_expect (ch < rp1->start, 0) \ - || (res = __ibm935sb_to_ucs4[ch + rp1->idx], \ - __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \ + res = __ibm935sb_to_ucs4[ch]; \ + if (__builtin_expect (res, L'\1') == L'\0' && ch != '\0') \ { \ /* This is an illegal character. */ \ if (! ignore_errors_p ()) \ @@ -115,18 +138,20 @@ enum break; \ } \ ++*irreversible; \ - ++inptr; \ - continue; \ } \ else \ { \ put32 (outptr, res); \ outptr += 4; \ - inptr++; \ } \ + ++inptr; \ } \ - else if (curcs == db) \ + else \ { \ + const struct gap *rp2 = __ibm935db_to_ucs4_idx; \ + \ + assert (curcs == db); \ + \ /* Use the IBM935 table for double byte. */ \ if (__builtin_expect (inptr + 1 >= inend, 0)) \ { \ @@ -152,24 +177,25 @@ enum break; \ } \ ++*irreversible; \ - inptr += 2; \ - continue; \ } \ else \ { \ put32 (outptr, res); \ outptr += 4; \ - inptr += 2; \ } \ + inptr += 2; \ } \ } #define LOOP_NEED_FLAGS +#define EXTRA_LOOP_DECLS , int *curcsp +#define INIT_PARAMS int curcs = *curcsp & ~7 +#define UPDATE_PARAMS *curcsp = curcs #include /* Next, define the other direction. */ #define MIN_NEEDED_INPUT MIN_NEEDED_TO #define MIN_NEEDED_OUTPUT MIN_NEEDED_FROM -#define INIT_PARAMS int curcs = init; +#define MAX_NEEDED_OUTPUT MAX_NEEDED_FROM #define LOOPFCT TO_LOOP #define BODY \ { \ @@ -180,16 +206,21 @@ enum \ if (__builtin_expect (ch, 0) >= 0xffff) \ { \ - rp1 = NULL; \ - rp2 = NULL; \ + if (! ignore_errors_p ()) \ + { \ + result = __GCONV_ILLEGAL_INPUT; \ + break; \ + } \ + ++*irreversible; \ + inptr += 4; \ + continue; \ } \ - else \ - while (ch > rp1->end) \ - ++rp1; \ + \ + while (ch > rp1->end) \ + ++rp1; \ \ /* Use the UCS4 table for single byte. */ \ - if (__builtin_expect (rp1 == NULL, 0) \ - || __builtin_expect (ch < rp1->start, 0) \ + if (__builtin_expect (ch < rp1->start, 0) \ || (cp = __ucs4_to_ibm935sb[ch + rp1->idx], \ __builtin_expect (cp[0], L'\1') == L'\0' && ch != '\0')) \ { \ @@ -197,8 +228,7 @@ enum while (ch > rp2->end) \ ++rp2; \ \ - if (__builtin_expect (rp2 == NULL, 0) \ - || __builtin_expect (ch < rp2->start, 0) \ + if (__builtin_expect (ch < rp2->start, 0) \ || (cp = __ucs4_to_ibm935db[ch + rp2->idx], \ __builtin_expect (cp[0], L'\1')==L'\0' && ch != '\0')) \ { \ @@ -212,7 +242,7 @@ enum } \ else \ { \ - if (curcs == init || curcs == sb) \ + if (curcs == sb) \ { \ if (__builtin_expect (outptr+1 > outend, 0)) \ { \ @@ -257,6 +287,9 @@ enum inptr += 4; \ } #define LOOP_NEED_FLAGS +#define EXTRA_LOOP_DECLS , int *curcsp +#define INIT_PARAMS int curcs = *curcsp & ~7 +#define UPDATE_PARAMS *curcsp = curcs #include /* Now define the toplevel functions. */ diff -adurpN glibc-2.2/iconvdata/ibm935.h glibc-2.2.1/iconvdata/ibm935.h --- glibc-2.2/iconvdata/ibm935.h Tue Oct 31 00:19:44 2000 +++ glibc-2.2.1/iconvdata/ibm935.h Sat Jan 6 20:35:15 2001 @@ -1,5 +1,5 @@ /* Tables for conversion from and to IBM935 - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Masahide Washizawa , 2000. @@ -32,49 +32,40 @@ struct gap }; -static const struct gap __ibm935sb_to_ucs4_idx[] = -{ - { start: 0x0000, end: 0x0040, idx: 0 }, - { start: 0x004a, end: 0x0050, idx: -9 }, - { start: 0x005a, end: 0x0061, idx: -18 }, - { start: 0x006a, end: 0x006f, idx: -26 }, - { start: 0x0079, end: 0x007f, idx: -35 }, - { start: 0x0081, end: 0x0089, idx: -36 }, - { start: 0x0091, end: 0x0099, idx: -43 }, - { start: 0x00a0, end: 0x00a9, idx: -49 }, - { start: 0x00b0, end: 0x00b0, idx: -55 }, - { start: 0x00b2, end: 0x00b2, idx: -56 }, - { start: 0x00ba, end: 0x00bb, idx: -63 }, - { start: 0x00c0, end: 0x00c9, idx: -67 }, - { start: 0x00d0, end: 0x00d9, idx: -73 }, - { start: 0x00e0, end: 0x00e0, idx: -79 }, - { start: 0x00e2, end: 0x00e9, idx: -80 }, - { start: 0x00f0, end: 0x00f9, idx: -86 }, - { start: 0x00ff, end: 0x00ff, idx: -91 }, - { start: 0xffff, end: 0xffff, idx: 0 } -}; - -static const uint16_t __ibm935sb_to_ucs4[] = +static const uint16_t __ibm935sb_to_ucs4[256] = { - 0x0000, 0x0001, 0x0002, 0x0003, 0x009C, 0x0009, 0x0086, 0x007F, 0x0097, - 0x008D, 0x008E, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, 0x0010, 0x0011, - 0x0012, 0x0013, 0x009D, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, - 0x008F, 0x001C, 0x001D, 0x001E, 0x001F, 0x0080, 0x0081, 0x0082, 0x0083, - 0x0084, 0x000A, 0x0017, 0x001B, 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, - 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, - 0x0096, 0x0004, 0x0098, 0x0099, 0x009A, 0x009B, 0x0014, 0x0015, 0x009E, - 0x001A, 0x0020, 0x00A3, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, 0x0026, - 0x0021, 0x00A5, 0x002A, 0x0029, 0x003B, 0x00AC, 0x002D, 0x002F, 0x00A6, - 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, 0x0060, 0x003A, 0x0023, 0x0040, - 0x0027, 0x003D, 0x0022, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, - 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, - 0x0070, 0x0071, 0x0072, 0x007E, 0x203E, 0x0073, 0x0074, 0x0075, 0x0076, - 0x0077, 0x0078, 0x0079, 0x007A, 0x005E, 0x005C, 0x005B, 0x005D, 0x007B, - 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, - 0x007D, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, - 0x0052, 0x0024, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, - 0x005A, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, - 0x0038, 0x0039, 0x009F + /* 0x00 */ 0x0000, 0x0001, 0x0002, 0x0003, 0x009C, 0x0009, 0x0086, 0x007F, + /* 0x08 */ 0x0097, 0x008D, 0x008E, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + /* 0x10 */ 0x0010, 0x0011, 0x0012, 0x0013, 0x009D, 0x0085, 0x0008, 0x0087, + /* 0x18 */ 0x0018, 0x0019, 0x0092, 0x008F, 0x001C, 0x001D, 0x001E, 0x001F, + /* 0x20 */ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000A, 0x0017, 0x001B, + /* 0x28 */ 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x0005, 0x0006, 0x0007, + /* 0x30 */ 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, + /* 0x38 */ 0x0098, 0x0099, 0x009A, 0x009B, 0x0014, 0x0015, 0x009E, 0x001A, + /* 0x40 */ 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x48 */ 0x0000, 0x0000, 0x00A3, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, + /* 0x50 */ 0x0026, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x58 */ 0x0000, 0x0000, 0x0021, 0x00A5, 0x002A, 0x0029, 0x003B, 0x00AC, + /* 0x60 */ 0x002D, 0x002F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x68 */ 0x0000, 0x0000, 0x00A6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, + /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x78 */ 0x0000, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, + /* 0x80 */ 0x0000, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + /* 0x88 */ 0x0068, 0x0069, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x90 */ 0x0000, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, + /* 0x98 */ 0x0071, 0x0072, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xa0 */ 0x007E, 0x203E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, + /* 0xa8 */ 0x0079, 0x007A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xb0 */ 0x005E, 0x0000, 0x005C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xb8 */ 0x0000, 0x0000, 0x005B, 0x005D, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xc0 */ 0x007B, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + /* 0xc8 */ 0x0048, 0x0049, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xd0 */ 0x007D, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, + /* 0xd8 */ 0x0051, 0x0052, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xe0 */ 0x0024, 0x0000, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, + /* 0xe8 */ 0x0059, 0x005A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xf0 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + /* 0xf8 */ 0x0038, 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x009F }; static const struct gap __ibm935db_to_ucs4_idx[] = diff -adurpN glibc-2.2/iconvdata/ibm937.c glibc-2.2.1/iconvdata/ibm937.c --- glibc-2.2/iconvdata/ibm937.c Tue Oct 31 00:19:49 2000 +++ glibc-2.2.1/iconvdata/ibm937.c Sat Jan 6 20:35:15 2001 @@ -1,5 +1,5 @@ /* Conversion to and from IBM937. - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Masahide Washizawa , 2000. @@ -32,26 +32,68 @@ #define CHARSET_NAME "IBM937//" #define FROM_LOOP from_ibm937 #define TO_LOOP to_ibm937 +#define MIN_NEEDED_FROM 1 +#define MAX_NEEDED_FROM 2 +#define MIN_NEEDED_TO 4 +#define MAX_NEEDED_TO 4 +#define PREPARE_LOOP \ + int save_curcs; \ + int *curcsp = &data->__statep->__count; +#define EXTRA_LOOP_ARGS , curcsp /* Definitions of initialization and destructor function. */ #define DEFINE_INIT 1 #define DEFINE_FINI 1 -#define MIN_NEEDED_FROM 1 -#define MIN_NEEDED_TO 4 + +/* Since this is a stateful encoding we have to provide code which resets + the output state to the initial state. This has to be done during the + flushing. */ +#define EMIT_SHIFT_TO_INIT \ + if ((data->__statep->__count & ~7) != sb) \ + { \ + if (FROM_DIRECTION) \ + data->__statep->__count &= 7; \ + else \ + { \ + unsigned char *outbuf = data->__outbuf; \ + \ + /* We are not in the initial state. To switch back we have \ + to emit `SI'. */ \ + if (__builtin_expect (outbuf >= data->__outbufend, 0)) \ + /* We don't have enough room in the output buffer. */ \ + status = __GCONV_FULL_OUTPUT; \ + else \ + { \ + /* Write out the shift sequence. */ \ + *outbuf++ = SI; \ + data->__outbuf = outbuf; \ + data->__statep->__count &= 7; \ + } \ + } \ + } + + +/* Since we might have to reset input pointer we must be able to save + and retore the state. */ +#define SAVE_RESET_STATE(Save) \ + if (Save) \ + save_curcs = *curcsp; \ + else \ + *curcsp = save_curcs + /* Current codeset type. */ enum { - init = 0, - sb, - db + sb = 0, + db = 64 }; /* First, define the conversion function from IBM-937 to UCS4. */ #define MIN_NEEDED_INPUT MIN_NEEDED_FROM +#define MAX_NEEDED_INPUT MAX_NEEDED_FROM #define MIN_NEEDED_OUTPUT MIN_NEEDED_TO -#define INIT_PARAMS int curcs = init; #define LOOPFCT FROM_LOOP #define BODY \ { \ @@ -59,12 +101,6 @@ enum \ if (__builtin_expect (ch, 0) == SO) \ { \ - if (__builtin_expect (inptr + 1 >= inend, 0)) \ - { \ - result = __GCONV_INCOMPLETE_INPUT; \ - break; \ - } \ - \ /* Shift OUT, change to DBCS converter. */ \ if (curcs == db) \ { \ @@ -73,16 +109,10 @@ enum } \ curcs = db; \ ++inptr; \ - ch = *inptr; \ + continue; \ } \ else if (__builtin_expect (ch, 0) == SI) \ { \ - if (__builtin_expect (inptr + 1 >= inend, 0)) \ - { \ - result = __GCONV_INCOMPLETE_INPUT; \ - break; \ - } \ - \ /* Shift IN, change to SBCS converter. */ \ if (curcs == sb) \ { \ @@ -91,10 +121,10 @@ enum } \ curcs = sb; \ ++inptr; \ - ch = *inptr; \ + continue; \ } \ \ - if (curcs == sb || curcs == init) \ + if (curcs == sb) \ { \ /* Use the UCS4 table for single byte. */ \ ch = __ibm937sb_to_ucs4[ch]; \ @@ -107,19 +137,20 @@ enum break; \ } \ ++*irreversible; \ - ++inptr; \ - continue; \ } \ else \ { \ put32 (outptr, ch); \ outptr += 4; \ - inptr++; \ } \ + ++inptr; \ } \ - else if (curcs == db) \ + else \ { \ /* Use the IBM937 table for double byte. */ \ + \ + assert (curcs == db); \ + \ ch = ibm937db_to_ucs4(inptr[0], inptr[1]); \ if (__builtin_expect (ch, L'\1') == L'\0' && *inptr != '\0') \ { \ @@ -130,24 +161,25 @@ enum break; \ } \ ++*irreversible; \ - inptr += 2; \ - continue; \ } \ else \ { \ put32 (outptr, ch); \ outptr += 4; \ - inptr += 2; \ } \ + inptr += 2; \ } \ } #define LOOP_NEED_FLAGS +#define EXTRA_LOOP_DECLS , int *curcsp +#define INIT_PARAMS int curcs = *curcsp & ~7 +#define UPDATE_PARAMS *curcsp = curcs #include /* Next, define the other direction. */ #define MIN_NEEDED_INPUT MIN_NEEDED_TO #define MIN_NEEDED_OUTPUT MIN_NEEDED_FROM -#define INIT_PARAMS int curcs = init; +#define MAX_NEEDED_OUTPUT MAX_NEEDED_FROM #define LOOPFCT TO_LOOP #define BODY \ { \ @@ -156,13 +188,15 @@ enum \ /* Use the UCS4 table for single byte. */ \ cp = __ucs4_to_ibm937sb[ch]; \ - if (__builtin_expect (ch >= sizeof (__ucs4_to_ibm937sb) \ - / sizeof (__ucs4_to_ibm937sb[0]), 0) \ + if (__builtin_expect (ch >= (sizeof (__ucs4_to_ibm937sb) \ + / sizeof (__ucs4_to_ibm937sb[0])), 0) \ || (__builtin_expect (cp[0], '\1') == '\0' && ch != 0)) \ { \ /* Use the UCS4 table for double byte. */ \ cp = __ucs4_to_ibm937db[ch]; \ - if (__builtin_expect (cp[0], '\1') == '\0' && ch != 0) \ + if (__builtin_expect (ch >= (sizeof (__ucs4_to_ibm937db) \ + / sizeof (__ucs4_to_ibm937db[0])), 0) \ + || __builtin_expect (cp[0], '\1') == '\0') \ { \ /* This is an illegal character. */ \ if (! ignore_errors_p ()) \ @@ -174,16 +208,16 @@ enum } \ else \ { \ - if (curcs == init || curcs == sb) \ + if (curcs == sb) \ { \ *outptr++ = SO; \ - if (__builtin_expect (outptr == outend, 0)) \ - { \ - result = __GCONV_FULL_OUTPUT; \ - break; \ - } \ curcs = db; \ } \ + if (__builtin_expect (outptr + 1 >= outend, 0)) \ + { \ + result = __GCONV_FULL_OUTPUT; \ + break; \ + } \ *outptr++ = cp[0]; \ *outptr++ = cp[1]; \ } \ @@ -193,13 +227,13 @@ enum if (curcs == db) \ { \ *outptr++ = SI; \ + curcs = sb; \ if (__builtin_expect (outptr == outend, 0)) \ { \ result = __GCONV_FULL_OUTPUT; \ break; \ } \ } \ - curcs = sb; \ *outptr++ = cp[0]; \ } \ \ @@ -207,6 +241,9 @@ enum inptr += 4; \ } #define LOOP_NEED_FLAGS +#define EXTRA_LOOP_DECLS , int *curcsp +#define INIT_PARAMS int curcs = *curcsp & ~7 +#define UPDATE_PARAMS *curcsp = curcs #include /* Now define the toplevel functions. */ diff -adurpN glibc-2.2/iconvdata/ibm939.c glibc-2.2.1/iconvdata/ibm939.c --- glibc-2.2/iconvdata/ibm939.c Tue Oct 31 00:21:11 2000 +++ glibc-2.2.1/iconvdata/ibm939.c Sat Jan 6 20:35:15 2001 @@ -1,5 +1,5 @@ /* Conversion to and from IBM939. - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Masahide Washizawa , 2000. @@ -32,42 +32,76 @@ #define CHARSET_NAME "IBM939//" #define FROM_LOOP from_ibm939 #define TO_LOOP to_ibm939 +#define MIN_NEEDED_FROM 1 +#define MAX_NEEDED_FROM 2 +#define MIN_NEEDED_TO 4 +#define MAX_NEEDED_TO 4 +#define PREPARE_LOOP \ + int save_curcs; \ + int *curcsp = &data->__statep->__count; +#define EXTRA_LOOP_ARGS , curcsp /* Definitions of initialization and destructor function. */ #define DEFINE_INIT 1 #define DEFINE_FINI 1 -#define MIN_NEEDED_FROM 1 -#define MIN_NEEDED_TO 4 + +/* Since this is a stateful encoding we have to provide code which resets + the output state to the initial state. This has to be done during the + flushing. */ +#define EMIT_SHIFT_TO_INIT \ + if ((data->__statep->__count & ~7) != sb) \ + { \ + if (FROM_DIRECTION) \ + data->__statep->__count &= 7; \ + else \ + { \ + unsigned char *outbuf = data->__outbuf; \ + \ + /* We are not in the initial state. To switch back we have \ + to emit `SI'. */ \ + if (__builtin_expect (outbuf >= data->__outbufend, 0)) \ + /* We don't have enough room in the output buffer. */ \ + status = __GCONV_FULL_OUTPUT; \ + else \ + { \ + /* Write out the shift sequence. */ \ + *outbuf++ = SI; \ + data->__outbuf = outbuf; \ + data->__statep->__count &= 7; \ + } \ + } \ + } + + +/* Since we might have to reset input pointer we must be able to save + and retore the state. */ +#define SAVE_RESET_STATE(Save) \ + if (Save) \ + save_curcs = *curcsp; \ + else \ + *curcsp = save_curcs + /* Current codeset type. */ enum { - init = 0, - sb, - db + sb = 0, + db = 64 }; /* First, define the conversion function from IBM-939 to UCS4. */ #define MIN_NEEDED_INPUT MIN_NEEDED_FROM +#define MAX_NEEDED_INPUT MAX_NEEDED_FROM #define MIN_NEEDED_OUTPUT MIN_NEEDED_TO -#define INIT_PARAMS int curcs = init; #define LOOPFCT FROM_LOOP #define BODY \ { \ uint32_t ch = *inptr; \ uint32_t res; \ - const struct gap *rp1 = __ibm939sb_to_ucs4_idx; \ - const struct gap *rp2 = __ibm939db_to_ucs4_idx; \ \ if (__builtin_expect (ch, 0) == SO) \ { \ - if (__builtin_expect (inptr + 1 >= inend, 0)) \ - { \ - result = __GCONV_INCOMPLETE_INPUT; \ - break; \ - } \ - \ /* Shift OUT, change to DBCS converter. */ \ if (curcs == db) \ { \ @@ -76,16 +110,10 @@ enum } \ curcs = db; \ ++inptr; \ - ch = *inptr; \ + continue; \ } \ else if (__builtin_expect (ch, 0) == SI) \ { \ - if (__builtin_expect (inptr + 1 >= inend, 0)) \ - { \ - result = __GCONV_INCOMPLETE_INPUT; \ - break; \ - } \ - \ /* Shift IN, change to SBCS converter. */ \ if (curcs == sb) \ { \ @@ -94,19 +122,14 @@ enum } \ curcs = sb; \ ++inptr; \ - ch = *inptr; \ + continue; \ } \ \ - if (curcs == sb || curcs == init) \ + if (curcs == sb) \ { \ /* Use the IBM939 table for single byte. */ \ - while (ch > rp1->end) \ - ++rp1; \ - \ - if (__builtin_expect (rp1 == NULL, 0) \ - || __builtin_expect (ch < rp1->start, 0) \ - || (res = __ibm939sb_to_ucs4[ch + rp1->idx], \ - __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \ + res = __ibm939sb_to_ucs4[ch]; \ + if (__builtin_expect (res, L'\1') == L'\0' && ch != '\0') \ { \ /* This is an illegal character. */ \ if (! ignore_errors_p ()) \ @@ -115,21 +138,21 @@ enum break; \ } \ ++*irreversible; \ - ++inptr; \ - continue; \ } \ else \ { \ - if (res == 0xa5) \ - res = 0x5c; \ put32 (outptr, res); \ outptr += 4; \ - ++inptr; \ } \ + ++inptr; \ } \ - else if (curcs == db) \ + else \ { \ /* Use the IBM939 table for double byte. */ \ + const struct gap *rp2 = __ibm939db_to_ucs4_idx; \ + \ + assert (curcs == db); \ + \ if (__builtin_expect (inptr + 1 >= inend, 0)) \ { \ /* The second character is not available. Store the \ @@ -154,24 +177,25 @@ enum break; \ } \ ++*irreversible; \ - inptr += 2; \ - continue; \ } \ else \ { \ put32 (outptr, res); \ outptr += 4; \ - inptr += 2; \ } \ + inptr += 2; \ } \ } #define LOOP_NEED_FLAGS +#define EXTRA_LOOP_DECLS , int *curcsp +#define INIT_PARAMS int curcs = *curcsp & ~7 +#define UPDATE_PARAMS *curcsp = curcs #include /* Next, define the other direction */ #define MIN_NEEDED_INPUT MIN_NEEDED_TO #define MIN_NEEDED_OUTPUT MIN_NEEDED_FROM -#define INIT_PARAMS int curcs = init; +#define MAX_NEEDED_OUTPUT MAX_NEEDED_FROM #define LOOPFCT TO_LOOP #define BODY \ { \ @@ -214,7 +238,7 @@ enum } \ else \ { \ - if (curcs == init || curcs == sb) \ + if (curcs == sb) \ { \ if (__builtin_expect (outptr+1 > outend, 0)) \ { \ @@ -264,6 +288,9 @@ enum inptr += 4; \ } #define LOOP_NEED_FLAGS +#define EXTRA_LOOP_DECLS , int *curcsp +#define INIT_PARAMS int curcs = *curcsp & ~7 +#define UPDATE_PARAMS *curcsp = curcs #include /* Now define the toplevel functions. */ diff -adurpN glibc-2.2/iconvdata/ibm939.h glibc-2.2.1/iconvdata/ibm939.h --- glibc-2.2/iconvdata/ibm939.h Tue Oct 31 00:21:52 2000 +++ glibc-2.2.1/iconvdata/ibm939.h Sat Jan 6 20:35:15 2001 @@ -1,5 +1,5 @@ /* Tables for conversion to and from IBM939. - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Masahide Washizawa , 2000. @@ -32,49 +32,40 @@ struct gap }; -static const struct gap __ibm939sb_to_ucs4_idx[] = -{ - { start: 0x0000, end: 0x0040, idx: 0 }, - { start: 0x0042, end: 0x0069, idx: -1 }, - { start: 0x006b, end: 0x007f, idx: -2 }, - { start: 0x0081, end: 0x008f, idx: -3 }, - { start: 0x0091, end: 0x00c9, idx: -4 }, - { start: 0x00d0, end: 0x00d9, idx: -10 }, - { start: 0x00e0, end: 0x00e0, idx: -16 }, - { start: 0x00e2, end: 0x00e9, idx: -17 }, - { start: 0x00f0, end: 0x00f9, idx: -23 }, - { start: 0x00ff, end: 0x00ff, idx: -28 }, - { start: 0xffff, end: 0xffff, idx: 0 } -}; - -static const uint16_t __ibm939sb_to_ucs4[] = +static const uint16_t __ibm939sb_to_ucs4[256] = { - 0x0000, 0x0001, 0x0002, 0x0003, 0x009C, 0x0009, 0x0086, 0x007F, 0x0097, - 0x008D, 0x008E, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, 0x0010, 0x0011, - 0x0012, 0x0013, 0x009D, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, - 0x008F, 0x001C, 0x001D, 0x001E, 0x001F, 0x0080, 0x0081, 0x0082, 0x0083, - 0x0084, 0x000A, 0x0017, 0x001B, 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, - 0x0005, 0x0006, 0x0007, 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, - 0x0096, 0x0004, 0x0098, 0x0099, 0x009A, 0x009B, 0x0014, 0x0015, 0x009E, - 0x001A, 0x0020, 0xFF61, 0xFF62, 0xFF63, 0xFF64, 0xFF65, 0xFF66, 0xFF67, - 0xFF68, 0x00A2, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, 0x0026, 0xFF69, - 0xFF6A, 0xFF6B, 0xFF6C, 0xFF6D, 0xFF6E, 0xFF6F, 0xFF70, 0xFF71, 0x0021, - 0x0024, 0x002A, 0x0029, 0x003B, 0x00AC, 0x002D, 0x002F, 0xFF72, 0xFF73, - 0xFF74, 0xFF75, 0xFF76, 0xFF77, 0xFF78, 0xFF79, 0x002C, 0x0025, 0x005F, - 0x003E, 0x003F, 0xFF7A, 0xFF7B, 0xFF7C, 0xFF7D, 0xFF7E, 0xFF7F, 0xFF80, - 0xFF81, 0xFF82, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, - 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, - 0xFF83, 0xFF84, 0xFF85, 0xFF86, 0xFF87, 0xFF88, 0x006A, 0x006B, 0x006C, - 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0xFF89, 0xFF8A, 0xFF8B, - 0xFF8C, 0xFF8D, 0xFF8E, 0x203E, 0x007E, 0x0073, 0x0074, 0x0075, 0x0076, - 0x0077, 0x0078, 0x0079, 0x007A, 0xFF8F, 0xFF90, 0xFF91, 0x005B, 0xFF92, - 0xFF93, 0x005E, 0x00A3, 0x00A5, 0xFF94, 0xFF95, 0xFF96, 0xFF97, 0xFF98, - 0xFF99, 0xFF9A, 0xFF9B, 0xFF9C, 0xFF9D, 0x005D, 0xFF9E, 0xFF9F, 0x007B, - 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, - 0x007D, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, - 0x0052, 0x005C, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, - 0x005A, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, - 0x0038, 0x0039, 0x009F + /* 0x00 */ 0x0000, 0x0001, 0x0002, 0x0003, 0x009C, 0x0009, 0x0086, 0x007F, + /* 0x08 */ 0x0097, 0x008D, 0x008E, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + /* 0x10 */ 0x0010, 0x0011, 0x0012, 0x0013, 0x009D, 0x0085, 0x0008, 0x0087, + /* 0x18 */ 0x0018, 0x0019, 0x0092, 0x008F, 0x001C, 0x001D, 0x001E, 0x001F, + /* 0x20 */ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000A, 0x0017, 0x001B, + /* 0x28 */ 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x0005, 0x0006, 0x0007, + /* 0x30 */ 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, + /* 0x38 */ 0x0098, 0x0099, 0x009A, 0x009B, 0x0014, 0x0015, 0x009E, 0x001A, + /* 0x40 */ 0x0020, 0x0000, 0xFF61, 0xFF62, 0xFF63, 0xFF64, 0xFF65, 0xFF66, + /* 0x48 */ 0xFF67, 0xFF68, 0x00A2, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, + /* 0x50 */ 0x0026, 0xFF69, 0xFF6A, 0xFF6B, 0xFF6C, 0xFF6D, 0xFF6E, 0xFF6F, + /* 0x58 */ 0xFF70, 0xFF71, 0x0021, 0x0024, 0x002A, 0x0029, 0x003B, 0x00AC, + /* 0x60 */ 0x002D, 0x002F, 0xFF72, 0xFF73, 0xFF74, 0xFF75, 0xFF76, 0xFF77, + /* 0x68 */ 0xFF78, 0xFF79, 0x0000, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, + /* 0x70 */ 0xFF7A, 0xFF7B, 0xFF7C, 0xFF7D, 0xFF7E, 0xFF7F, 0xFF80, 0xFF81, + /* 0x78 */ 0xFF82, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, + /* 0x80 */ 0x0000, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + /* 0x88 */ 0x0068, 0x0069, 0xFF83, 0xFF84, 0xFF85, 0xFF86, 0xFF87, 0xFF88, + /* 0x90 */ 0x0000, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, + /* 0x98 */ 0x0071, 0x0072, 0xFF89, 0xFF8A, 0xFF8B, 0xFF8C, 0xFF8D, 0xFF8E, + /* 0xa0 */ 0x203E, 0x007E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, + /* 0xa8 */ 0x0079, 0x007A, 0xFF8F, 0xFF90, 0xFF91, 0x005B, 0xFF92, 0xFF93, + /* 0xb0 */ 0x005E, 0x00A3, 0x005C, 0xFF94, 0xFF95, 0xFF96, 0xFF97, 0xFF98, + /* 0xb8 */ 0xFF99, 0xFF9A, 0xFF9B, 0xFF9C, 0xFF9D, 0x005D, 0xFF9E, 0xFF9F, + /* 0xc0 */ 0x007B, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + /* 0xc8 */ 0x0048, 0x0049, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xd0 */ 0x007D, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, + /* 0xd8 */ 0x0051, 0x0052, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xe0 */ 0x005C, 0x0000, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, + /* 0xe8 */ 0x0059, 0x005A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xf0 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + /* 0xf8 */ 0x0038, 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x009F }; static const struct gap __ibm939db_to_ucs4_idx[] = diff -adurpN glibc-2.2/iconvdata/iso-2022-cn-ext.c glibc-2.2.1/iconvdata/iso-2022-cn-ext.c --- glibc-2.2/iconvdata/iso-2022-cn-ext.c Sun Oct 8 17:04:50 2000 +++ glibc-2.2.1/iconvdata/iso-2022-cn-ext.c Fri Dec 1 11:55:06 2000 @@ -411,7 +411,7 @@ enum uint32_t ch; \ size_t written = 0; \ \ - ch = *((uint32_t *) inptr); \ + ch = *((const uint32_t *) inptr); \ \ /* First see whether we can write the character using the currently \ selected character set. */ \ diff -adurpN glibc-2.2/iconvdata/iso-2022-jp.c glibc-2.2.1/iconvdata/iso-2022-jp.c --- glibc-2.2/iconvdata/iso-2022-jp.c Sun Oct 8 17:04:50 2000 +++ glibc-2.2.1/iconvdata/iso-2022-jp.c Fri Dec 1 11:55:06 2000 @@ -111,6 +111,7 @@ enum }; +extern int gconv_init (struct __gconv_step *step); int gconv_init (struct __gconv_step *step) { @@ -180,6 +181,7 @@ gconv_init (struct __gconv_step *step) } +extern void gconv_end (struct __gconv_step *data); void gconv_end (struct __gconv_step *data) { diff -adurpN glibc-2.2/iconvdata/iso646.c glibc-2.2.1/iconvdata/iso646.c --- glibc-2.2/iconvdata/iso646.c Wed Aug 2 14:52:08 2000 +++ glibc-2.2.1/iconvdata/iso646.c Fri Dec 1 11:55:06 2000 @@ -62,7 +62,6 @@ enum direction enum variant { illegal_var, - US, /* ANSI_X3.4-1968 */ GB, /* BS_4730 */ CA, /* CSA_Z243.4-1985-1 */ CA2, /* CSA_Z243.4-1985-2 */ @@ -90,7 +89,6 @@ enum variant static const char *names[] = { - [US] = "ANSI_X3.4-1968//", [GB] = "BS_4730//", [CA] = "CSA_Z243.4-1985-1//", [CA2] = "CSA_Z243.4-1985-2//", @@ -124,6 +122,7 @@ struct iso646_data }; +extern int gconv_init (struct __gconv_step *step); int gconv_init (struct __gconv_step *step) { @@ -182,6 +181,7 @@ gconv_init (struct __gconv_step *step) } +extern void gconv_end (struct __gconv_step *data); void gconv_end (struct __gconv_step *data) { diff -adurpN glibc-2.2/iconvdata/iso8859-1.c glibc-2.2.1/iconvdata/iso8859-1.c --- glibc-2.2/iconvdata/iso8859-1.c Wed Jun 21 11:10:59 2000 +++ glibc-2.2.1/iconvdata/iso8859-1.c Fri Dec 1 11:55:06 2000 @@ -45,7 +45,7 @@ #define LOOPFCT TO_LOOP #define BODY \ { \ - uint32_t ch = *((uint32_t *) inptr); \ + uint32_t ch = *((const uint32_t *) inptr); \ if (__builtin_expect (ch, 0) > 0xff) \ { \ /* We have an illegal character. */ \ diff -adurpN glibc-2.2/iconvdata/iso_6937-2.c glibc-2.2.1/iconvdata/iso_6937-2.c --- glibc-2.2/iconvdata/iso_6937-2.c Thu Sep 7 11:56:27 2000 +++ glibc-2.2.1/iconvdata/iso_6937-2.c Fri Dec 1 11:55:06 2000 @@ -490,7 +490,7 @@ static const char from_ucs4[][2] = uint32_t ch = get32 (inptr); \ const char *cp; \ \ - if (__builtin_expect (ch, 0) \ + if ((size_t) __builtin_expect (ch, 0) \ >= sizeof (from_ucs4) / sizeof (from_ucs4[0])) \ { \ switch (ch) \ diff -adurpN glibc-2.2/iconvdata/iso_6937.c glibc-2.2.1/iconvdata/iso_6937.c --- glibc-2.2/iconvdata/iso_6937.c Wed Aug 2 14:52:08 2000 +++ glibc-2.2.1/iconvdata/iso_6937.c Fri Dec 1 11:55:06 2000 @@ -482,7 +482,7 @@ static const char from_ucs4[][2] = uint32_t ch = get32 (inptr); \ const char *cp; \ \ - if (__builtin_expect (ch, 0) \ + if ((size_t) __builtin_expect (ch, 0) \ >= sizeof (from_ucs4) / sizeof (from_ucs4[0])) \ { \ int fail = 0; \ diff -adurpN glibc-2.2/iconvdata/jis0208.c glibc-2.2.1/iconvdata/jis0208.c --- glibc-2.2/iconvdata/jis0208.c Thu Sep 7 11:56:27 2000 +++ glibc-2.2.1/iconvdata/jis0208.c Sat Jan 6 20:35:15 2001 @@ -67,7 +67,7 @@ const uint16_t __jis0208_to_ucs[0x1e80] [0x0010] = 0xffe3, [0x0011] = 0xff3f, [0x0012] = 0x30fd, [0x0013] = 0x30fe, [0x0014] = 0x309d, [0x0015] = 0x309e, [0x0016] = 0x3003, [0x0017] = 0x4edd, [0x0018] = 0x3005, [0x0019] = 0x3006, [0x001a] = 0x3007, [0x001b] = 0x30fc, - [0x001c] = 0x2015, [0x001d] = 0x2010, [0x001e] = 0xff0f, [0x001f] = 0x005c, + [0x001c] = 0x2015, [0x001d] = 0x2010, [0x001e] = 0xff0f, [0x001f] = 0xff3c, [0x0020] = 0x301c, [0x0021] = 0x2016, [0x0022] = 0xff5c, [0x0023] = 0x2026, [0x0024] = 0x2025, [0x0025] = 0x2018, [0x0026] = 0x2019, [0x0027] = 0x201c, [0x0028] = 0x201d, [0x0029] = 0xff08, [0x002a] = 0xff09, [0x002b] = 0x3014, diff -adurpN glibc-2.2/iconvdata/jis0212.c glibc-2.2.1/iconvdata/jis0212.c --- glibc-2.2/iconvdata/jis0212.c Thu Sep 7 11:56:27 2000 +++ glibc-2.2.1/iconvdata/jis0212.c Sat Jan 6 20:35:15 2001 @@ -111,7 +111,7 @@ const struct jisx0212_idx __jisx0212_to_ const uint16_t __jisx0212_to_ucs[] = { 0x02d8, 0x02c7, 0x00b8, 0x02d9, 0x02dd, 0x00af, 0x02db, 0x02da, - 0x007e, 0x0384, 0x0385, 0x00a1, 0x00a6, 0x00bf, 0x00ba, 0x00aa, + 0xff5e, 0x0384, 0x0385, 0x00a1, 0x00a6, 0x00bf, 0x00ba, 0x00aa, 0x00a9, 0x00ae, 0x2122, 0x00a4, 0x2116, 0x0386, 0x0388, 0x0389, 0x038a, 0x03aa, 000000, 0x038c, 000000, 0x038e, 0x03ab, 000000, 0x038f, 000000, 000000, 000000, 000000, 0x03ac, 0x03ad, 0x03ae, diff -adurpN glibc-2.2/iconvdata/sjis.c glibc-2.2.1/iconvdata/sjis.c --- glibc-2.2/iconvdata/sjis.c Thu Sep 7 11:56:27 2000 +++ glibc-2.2.1/iconvdata/sjis.c Sat Jan 6 20:35:15 2001 @@ -67,7 +67,7 @@ static const uint16_t cjk_block1[703] = [ 16] = 0xFFE3, [ 17] = 0xFF3F, [ 18] = 0x30FD, [ 19] = 0x30FE, [ 20] = 0x309D, [ 21] = 0x309E, [ 22] = 0x3003, [ 23] = 0x4EDD, [ 24] = 0x3005, [ 25] = 0x3006, [ 26] = 0x3007, [ 27] = 0x30FC, - [ 28] = 0x2015, [ 29] = 0x2010, [ 30] = 0xFF0F, [ 31] = 0x005C, + [ 28] = 0x2015, [ 29] = 0x2010, [ 30] = 0xFF0F, [ 31] = 0xFF3C, [ 32] = 0x301C, [ 33] = 0x2016, [ 34] = 0xFF5C, [ 35] = 0x2026, [ 36] = 0x2025, [ 37] = 0x2018, [ 38] = 0x2019, [ 39] = 0x201C, [ 40] = 0x201D, [ 41] = 0xFF08, [ 42] = 0xFF09, [ 43] = 0x3014, diff -adurpN glibc-2.2/iconvdata/t.61.c glibc-2.2.1/iconvdata/t.61.c --- glibc-2.2/iconvdata/t.61.c Wed Aug 2 14:52:08 2000 +++ glibc-2.2.1/iconvdata/t.61.c Fri Dec 1 11:55:06 2000 @@ -457,7 +457,7 @@ static const char from_ucs4[][2] = uint32_t ch = get32 (inptr); \ const char *cp; \ \ - if (__builtin_expect (ch, 0) \ + if ((size_t) __builtin_expect (ch, 0) \ >= sizeof (from_ucs4) / sizeof (from_ucs4[0])) \ { \ if (__builtin_expect (ch, 0) == 0x2126) \ diff -adurpN glibc-2.2/iconvdata/testdata/IBM1124 glibc-2.2.1/iconvdata/testdata/IBM1124 --- glibc-2.2/iconvdata/testdata/IBM1124 Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/iconvdata/testdata/IBM1124 Tue Nov 28 06:10:44 2000 @@ -0,0 +1,14 @@ + ! " # $ % & ' ( ) * + , - . / 0 +1 2 3 4 5 6 7 8 9 : ; < = > ? @ A +B C D E F G H I J K L M N O P Q R +S T U V W X Y Z [ \ ] ^ _ ` a b c +d e f g h i j k l m n o p q r s t +u v w x y z { | } ~  € ‚ ƒ „ … +† ‡ ˆ ‰ Š ‹ Œ Ž ‘ ’ “ ” • – +— ˜ ™ š › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § +¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ +¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É +Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú +Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë +ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü +ý þ ÿ diff -adurpN glibc-2.2/iconvdata/testdata/IBM1124..UTF8 glibc-2.2.1/iconvdata/testdata/IBM1124..UTF8 --- glibc-2.2/iconvdata/testdata/IBM1124..UTF8 Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/iconvdata/testdata/IBM1124..UTF8 Tue Nov 28 06:10:56 2000 @@ -0,0 +1,14 @@ + ! " # $ % & ' ( ) * + , - . / 0 +1 2 3 4 5 6 7 8 9 : ; < = > ? @ A +B C D E F G H I J K L M N O P Q R +S T U V W X Y Z [ \ ] ^ _ ` a b c +d e f g h i j k l m n o p q r s t +u v w x y z { | } ~  €  ‚ ƒ „ Â… +† ‡ ˆ ‰ Š ‹ ÂŒ  Ž   ‘ Â’ “ ” • – +— ˜ ™ š › Âœ  ž Ÿ   РЂ Ò Ð„ Ð… І Ї +Ј Љ Њ Ћ ÐŒ ­ ÐŽ РРБ Ð’ Г Д Е Ж З И +Й К Л Ðœ РО П Р С Т У Ф Ð¥ Ц Ч Ш Щ +Ъ Ы Ь Э Ю Я а б в г д е ж з и й к +л м н о п Ñ€ Ñ Ñ‚ у Ñ„ Ñ… ц ч ш щ ÑŠ Ñ‹ +ÑŒ Ñ ÑŽ Ñ â„– Ñ‘ Ñ’ Ò‘ Ñ” Ñ• Ñ– Ñ— ј Ñ™ Ñš Ñ› Ñœ +§ Ñž ÑŸ diff -adurpN glibc-2.2/iconvdata/testdata/IBM1129 glibc-2.2.1/iconvdata/testdata/IBM1129 --- glibc-2.2/iconvdata/testdata/IBM1129 Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/iconvdata/testdata/IBM1129 Tue Nov 28 06:11:13 2000 @@ -0,0 +1,14 @@ + ! " # $ % & ' ( ) * + , - . / 0 +1 2 3 4 5 6 7 8 9 : ; < = > ? @ A +B C D E F G H I J K L M N O P Q R +S T U V W X Y Z [ \ ] ^ _ ` a b c +d e f g h i j k l m n o p q r s t +u v w x y z { | } ~  € ‚ ƒ „ … +† ‡ ˆ ‰ Š ‹ Œ Ž ‘ ’ “ ” • – +— ˜ ™ š › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § +¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ +¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É +Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú +Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë +ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü +ý þ ÿ diff -adurpN glibc-2.2/iconvdata/testdata/IBM1129..UTF8 glibc-2.2.1/iconvdata/testdata/IBM1129..UTF8 --- glibc-2.2/iconvdata/testdata/IBM1129..UTF8 Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/iconvdata/testdata/IBM1129..UTF8 Tue Nov 28 06:11:05 2000 @@ -0,0 +1,14 @@ + ! " # $ % & ' ( ) * + , - . / 0 +1 2 3 4 5 6 7 8 9 : ; < = > ? @ A +B C D E F G H I J K L M N O P Q R +S T U V W X Y Z [ \ ] ^ _ ` a b c +d e f g h i j k l m n o p q r s t +u v w x y z { | } ~  €  ‚ ƒ „ Â… +† ‡ ˆ ‰ Š ‹ ÂŒ  Ž   ‘ Â’ “ ” • – +— ˜ ™ š › Âœ  ž Ÿ   ¡ ¢ £ ¤ Â¥ ¦ § +Å“ © ª « ¬ ­ ® ¯ ° ± ² ³ Ÿ µ ¶ · Å’ +¹ º » ¼ ½ ¾ ¿ À à  Ă Ä Ã… Æ Ç È É +Ê Ë Ì€ à Î Ã Ä Ã‘ ̉ Ó Ô Æ  Ö × Ø Ù Ú +Û Ãœ Ư ̃ ß à á â ă ä Ã¥ æ ç è é ê ë +Ì Ã­ î ï Ä‘ ñ Ì£ ó ô Æ¡ ö ÷ ø ù ú û ü +Æ° â‚« ÿ diff -adurpN glibc-2.2/iconvdata/testdata/IBM922 glibc-2.2.1/iconvdata/testdata/IBM922 --- glibc-2.2/iconvdata/testdata/IBM922 Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/iconvdata/testdata/IBM922 Tue Nov 28 06:11:23 2000 @@ -0,0 +1,14 @@ + ! " # $ % & ' ( ) * + , - . / 0 +1 2 3 4 5 6 7 8 9 : ; < = > ? @ A +B C D E F G H I J K L M N O P Q R +S T U V W X Y Z [ \ ] ^ _ ` a b c +d e f g h i j k l m n o p q r s t +u v w x y z { | } ~  € ‚ ƒ „ … +† ‡ ˆ ‰ Š ‹ Œ Ž ‘ ’ “ ” • – +— ˜ ™ š › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § +¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ +¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É +Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú +Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë +ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü +ý þ ÿ diff -adurpN glibc-2.2/iconvdata/testdata/IBM922..UTF8 glibc-2.2.1/iconvdata/testdata/IBM922..UTF8 --- glibc-2.2/iconvdata/testdata/IBM922..UTF8 Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/iconvdata/testdata/IBM922..UTF8 Tue Nov 28 06:11:33 2000 @@ -0,0 +1,14 @@ + ! " # $ % & ' ( ) * + , - . / 0 +1 2 3 4 5 6 7 8 9 : ; < = > ? @ A +B C D E F G H I J K L M N O P Q R +S T U V W X Y Z [ \ ] ^ _ ` a b c +d e f g h i j k l m n o p q r s t +u v w x y z { | } ~  €  ‚ ƒ „ Â… +† ‡ ˆ ‰ Š ‹ ÂŒ  Ž   ‘ Â’ “ ” • – +— ˜ ™ š › Âœ  ž Ÿ   ¡ ¢ £ ¤ Â¥ ¦ § +¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ +¹ º » ¼ ½ ¾ ¿ À à Â Ã Ä Ã… Æ Ç È É +Ê Ë ÃŒ à Î à Š Ñ Ã’ Ó Ô Õ Ö × Ø Ù Ú +Û Ãœ à Ž ß à á â ã ä Ã¥ æ ç è é ê ë +ì í î ï Å¡ ñ ò ó ô õ ö ÷ ø ù ú û ü +ý ž ÿ diff -adurpN glibc-2.2/iconvdata/testdata/IBM930 glibc-2.2.1/iconvdata/testdata/IBM930 --- glibc-2.2/iconvdata/testdata/IBM930 Wed Nov 1 23:48:13 2000 +++ glibc-2.2.1/iconvdata/testdata/IBM930 Sat Jan 6 20:35:16 2001 @@ -1,2 +1,2 @@ @@@@7@-@.@/@@@%@ @ @ @?@?@@%@@@<@=@2@&@@@?@'@@@@@@@Z@%@{@à@l@P@}@M@]@\@N@k@`@K@a@ð@ñ@ò@%ó@ô@õ@ö@÷@ø@ù@z@^@L@~@n@o@|@Á@Â@Ã@%Ä@Å@Æ@Ç@È@É@Ñ@Ò@Ó@Ô@Õ@Ö@×@Ø@Ù@â@ã@%ä@å@æ@ç@è@é@p@[@€@°@m@y@b@c@d@e@f@%g@h@i@q@r@s@t@u@v@w@x@‹@›@«@³@´@µ@%¶@·@¸@¹@À@O@Ð@¡@@ @!@"@#@$@@@@%(@)@*@+@,@ @ -@@0@1@@3@4@5@6@@8@%9@;@@@>@ÿ@?@?@±@J@?@[@?@?@?@_@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@¡@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@A@B@C@D@E@F@G@H@%I@Q@R@S@T@U@V@X@@‚@ƒ@„@…@†@‡@ˆ@‰@%Š@Œ@@Ž@@@‘@’@“@”@•@–@—@˜@™@š@@%ž@Ÿ@¢@£@¤@¥@¦@§@¨@©@ª@¬@­@®@¯@º@»@%¼@½@¾@¿@?@?@?@?@?@?@?@%Bj@Dj@D`@Dí@DK@DP@%Cy@Dz@D{@Aa@Ab@Ac@Ad@Ae@Af@Ag@Ah@Ai@Aj@Ak@Al@Am@An@%Ao@Ap@Aq@Ar@As@At@Au@Av@Aw@Ax@AA@AB@AC@AD@AE@AF@AG@%AH@AI@AJ@AK@AL@AM@AN@AO@AP@AQ@AR@AS@AT@AU@AV@AW@AX@%AÆ@AÀ@AÁ@AÂ@AÃ@AÄ@AÅ@AÇ@AÈ@AÉ@AÊ@AË@AÌ@AÍ@AÎ@AÏ@AÐ@%AÑ@AÒ@AÓ@AÔ@AÕ@AÖ@A×@AØ@AÙ@AÚ@AÛ@AÜ@AÝ@AÞ@Aß@Aà@A€@%A@A‚@Aƒ@A„@A…@A‡@Aˆ@A‰@AŠ@A‹@AŒ@A@AŽ@A@A@A‘@A’@%A“@A”@A•@A–@A—@A˜@A™@Aš@A›@Aœ@A@Až@AŸ@A @A†@DZ@DJ@%DJ@D|@Da@Dq@Db@Dr@Cw@Cx@D~@D@Cs@Dî@Dï@Dk@DN@Dn@Do@%Cr@Añ@Aò@Aó@Aô@Aõ@Aö@A÷@Aø@Aù@Aú@A±@A²@A³@A´@Aµ@A¶@%A·@A¸@A¹@Aº@Dñ@Dò@Dð@Dó@Cn@Co@Cp@CN@Cq@CO@Cd@Ce@B`@%C_@Ca@DM@CK@D|@Cl@Cm@Ck@Cj@Cb@Cc@Dh@Dx@C`@C\@DL@C[@%Dg@Dw@C]@C^@Ch@Ci@Cf@Cg@CL@CM@C|@C·@C}@C¸@C~@C¹@C@%Cá@C±@Cã@C°@Câ@C²@Cî@Cé@Cä@C´@Cð@Cë@Cæ@C³@Cê@Cï@Cå@%Cµ@Cì@Cñ@Cç@C¶@Cí@Cò@Cè@Dê@Dé@Dã@Dâ@Dì@Dë@Dè@Dç@Dà@%Dä@Dá@Cz@Dæ@Då@Dy@Di@Cv@Cu@Ct@@@@CD@CA@D[@D]@D^@D_@%Dd@Dt@De@Du@CB@CC@DB@DC@Df@Dv@Dl@D}@Dc@Ds@C¡@DG@D@%DH@D‚@DI@Dƒ@DQ@D„@DR@D…@D†@DÀ@D‡@DÁ@Dˆ@DÂ@D‰@DÃ@DŠ@%DÄ@DŒ@DÅ@D@DÆ@DŽ@DÇ@D@DÈ@D@DÉ@D‘@DÊ@D’@DË@DV@D“@%DÌ@D”@DÍ@D•@DÎ@D–@D—@D˜@D™@Dš@D@DÏ@DÕ@Dž@DÐ@DÖ@DŸ@%DÑ@D×@D¢@DÒ@DØ@D£@DÓ@DÙ@D¤@D¥@D¦@D§@D¨@DS@D©@DT@Dª@%DU@D¬@D­@D®@D¯@Dº@D»@DW@D¼@DÚ@DÛ@DF@D½@C¾@C¿@DÜ@DÝ@%CG@C@CH@C‚@CI@Cƒ@CQ@C„@CR@C…@C†@CÀ@C‡@CÁ@Cˆ@CÂ@C‰@%CÃ@CŠ@CÄ@CŒ@CÅ@C@CÆ@CŽ@CÇ@C@CÈ@C@CÉ@C‘@CÊ@C’@CË@%CV@C“@CÌ@C”@CÍ@C•@CÎ@C–@C—@C˜@C™@Cš@C@CÏ@CÕ@Cž@CÐ@%CÖ@CŸ@CÑ@C×@C¢@CÒ@CØ@C£@CÓ@CÙ@C¤@C¥@C¦@C§@C¨@CS@C©@%CT@Cª@CU@C¬@C­@C®@C¯@Cº@C»@CW@C¼@CÚ@CÛ@CF@C½@CÔ@CY@%CZ@CE@CX@CÜ@CÝ@Dm@EA@KÎ@EG@EM@IÓ@EC@E^@E_@F¯@G‰@VB@%Mì@O—@VC@F›@Wu@MV@PÅ@Ob@Hƒ@H|@VD@VE@E\@VF@L¸@VG@Fz@%H«@Gb@TÈ@VH@VI@KŸ@EŠ@EØ@U©@T¥@Ol@bÐ@VJ@IG@VK@K½@EI@%Nµ@GI@VL@K¿@J˜@Ip@GÀ@VM@VN@K±@GÂ@H–@VO@EÎ@EB@VP@I@%Kt@EE@Em@Kä@Pè@UÜ@Hg@VR@Qg@VS@LÎ@VT@GŽ@O@Oú@K¬@Ks@%Eu@NR@Iœ@VU@VV@VW@E“@SÙ@Gv@V\@VZ@V[@P…@Eà@HK@VY@VX@%Kå@Te@Hµ@GU@V^@G]@H¢@D\@V_@Va@V]@Eš@IÃ@Fö@V`@Mq@Mí@%Hi@H²@SA@JU@Vb@Ve@GÒ@Vf@Vc@E²@M™@NŸ@Jƒ@Pö@J@E½@Vd@%HÙ@I¦@Vh@IÉ@TJ@Fô@Vj@PŠ@K¼@Ta@Nß@Nþ@Vl@GÈ@H¤@Fà@Ev@%Læ@F–@Gp@Vn@Vk@IÁ@Vg@Vo@E”@Vi@Vm@Vy@V|@Vz@Hv@K”@Qâ@%Vw@Tb@H¶@O˜@V}@Vr@Vq@JF@OÂ@Vs@O@Vp@V{@V~@Vv@Vt@H¼@%Jž@Rì@GZ@Vx@Vu@S¹@Sã@OŒ@U|@KL@HQ@Jj@TÇ@R”@F`@V†@V€@%V…@Vƒ@V@N—@V@V„@V‚@Eª@SÄ@Rì@E¥@KJ@V‡@Vˆ@FÞ@V–@Lá@%M±@Qø@Pù@Ng@V•@V”@V@V™@EÖ@Iú@JÄ@V¡@V—@Kj@VŒ@SC@L®@%V‰@V˜@JÐ@V@V‘@Ui@H}@VŽ@Rñ@V‹@V’@V@MQ@V“@Où@Oc@Rú@%VŠ@V¤@Vš@V¢@V›@Vž@Mû@PI@V@Vœ@V @VŸ@Np@F@V¥@V£@TÒ@%IC@O•@PÃ@V¦@PY@V§@Vª@Nç@OÃ@V¨@Pœ@F¬@V©@LC@TÚ@V­@V°@%V«@KX@L[@JC@V±@OÉ@V®@V¯@Hì@Kº@U­@J»@RÔ@Vµ@M‚@V³@V·@%V´@N„@V¶@V¸@V²@Vº@V¹@Ux@IÊ@V¼@V½@EN@V»@To@VÀ@V¿@VÁ@%R@V¾@J¢@VÂ@GÚ@T½@VÄ@VÃ@VÆ@VÅ@VÇ@VÈ@L‘@F•@Kè@HÉ@Mó@%UZ@G¢@Ež@VÉ@Gž@VÊ@KV@PP@FŸ@VË@VÌ@IK@Q¾@VÍ@VÎ@Fe@F±@%VÏ@VÐ@EH@F»@EF@VÑ@G³@FI@Og@G¯@GÉ@Hô@VÒ@VÓ@EŽ@FE@VÖ@%N¡@VÕ@Hë@V×@a@VØ@O@VÙ@VÚ@VÛ@R~@HÄ@VÜ@N{@Vß@VÝ@Tg@%VÞ@Hx@Và@Vá@Vâ@KÞ@Væ@Vä@Vå@Vã@PÉ@Vç@QF@Hü@Vé@Vè@RÜ@%Vê@O€@Vë@Uù@SD@Kæ@Ww@Vì@h„@NÙ@Ví@Má@Hæ@UŠ@Vî@Tž@Vï@%Vð@Vñ@Q¬@Vò@Qì@PÏ@Pæ@E›@K¶@Vó@LP@OD@Vô@E´@Ge@K›@L×@%Võ@Tã@LR@Vö@V÷@K´@GK@I\@FÝ@Vø@E¼@Vù@Vú@LÝ@Vû@FÄ@HÏ@%Kk@Vü@KÀ@Kõ@Sy@Vý@GM@J@Vþ@Q®@E¯@WA@WC@Q™@IÇ@T@WB@%LÓ@Gf@T@WH@WE@KN@M…@WD@GÖ@WF@WG@Ká@WJ@WI@UÖ@Ið@WL@%Q…@WK@WN@WM@U€@E÷@WO@Hp@EŸ@Nh@WP@Fq@Jd@TÆ@WQ@WR@_ª@%M’@H©@WT@Ix@WS@Uj@WV@WU@T±@Nï@Fœ@HÎ@WW@SÖ@Eä@S’@Kš@%Fí@WX@Eµ@WY@Já@W\@Gî@WZ@IŸ@W[@L~@Iz@W]@W^@W_@W`@Tp@%Qé@R—@Wa@O[@NË@J¨@Wb@Wc@Wd@Wf@Wh@Wg@Wi@E@EZ@TW@Wj@%Q·@Nk@MM@Wl@Wk@Uí@Wm@Wn@Wo@Wp@OÑ@ET@J‡@Pñ@Wq@EJ@EL@%Wr@Ws@NG@Eß@Wt@G@Wv@S­@Jò@I–@G×@EY@Hã@Eö@QÀ@Wy@Iî@%SÛ@Wz@W{@L‚@G™@K‘@W|@Km@J¤@Lõ@W}@Ny@W~@Sâ@W@SR@W€@%W@OU@IB@Et@W‚@W„@Wƒ@Qx@Sg@S·@W…@W†@W‡@LŽ@Wˆ@JÊ@HÒ@%W‰@Hõ@P¥@H\@FÔ@Kq@Gù@G‘@O¥@F¦@HL@Põ@U²@W‹@WŒ@Q”@Sõ@%Eˆ@EÔ@L‹@W‘@Oq@NA@MÕ@O†@W’@W@GÆ@Gx@PB@GÙ@HZ@OY@Hâ@%Eð@W“@W”@Uê@Gº@E @E~@SÓ@U¼@Fm@Eó@Q¯@PÆ@N²@F¥@GÏ@W@%Pz@Sá@LO@Wœ@IË@W—@W˜@Wš@W›@K˜@IÄ@Så@W™@W•@Gö@W–@KP@%Ps@OV@Jî@IT@Wž@P°@W¢@H¡@T@W¥@W£@G@W @Wª@W¤@W§@Jö@%I°@W¨@W«@W­@W®@OP@Ez@W¡@WŸ@W¬@W¦@W©@W²@W¼@W´@W¹@W½@%Wº@Wµ@W±@LÞ@Sé@W³@W°@R±@W¾@Nù@EÐ@W»@W¶@W¯@W¸@Jk@W·@%FË@WÇ@W¿@WÁ@Uh@Uð@WÆ@WÅ@GG@T|@WÄ@WÀ@LÛ@Q¸@Ov@WÂ@K«@%WÃ@TÔ@WÌ@Kà@MC@WÒ@WÑ@WÈ@Tx@WÉ@Sƒ@WÎ@F¾@WË@Fä@Gä@WÏ@%WÐ@WÍ@WÓ@TÔ@WÊ@WØ@WÝ@WÙ@WÕ@Wß@F³@WÞ@Wá@RS@WÖ@UX@WÚ@%WÔ@Rµ@EÑ@Tu@WÛ@W×@OÓ@Wâ@Wà@Qh@Mm@L_@WÜ@N¹@HÓ@Wå@Wã@%XX@Wè@R¢@Wæ@Wä@K^@Wç@Wë@Wé@Wî@Wí@Pc@G~@Wê@Wì@Tì@Pó@%Wï@RÊ@Wø@PÊ@Wó@T@Wò@Wô@R›@Pb@Wð@Wñ@T}@Wö@Eü@Wú@Wõ@%Wù@Nm@Uñ@U‚@Wþ@W÷@UØ@XA@Wý@Wü@T}@XB@Q@XC@XD@XF@XE@%XI@XL@XJ@XH@XK@XG@Q@XM@XO@XN@XP@VÔ@Pe@ED@F©@JI@Gð@%XQ@KD@Jú@GÁ@XR@J”@E@XS@Rf@SÏ@XT@XV@XU@Q½@XW@OI@Gá@%Tç@XZ@XY@X[@F„@X\@G‚@GÍ@Iæ@EÂ@QÑ@X]@X_@Xa@Eì@I®@LU@%X^@Xb@N@Nó@X`@Xe@S¦@Xc@QÄ@S˜@II@Xf@KÉ@Xd@Xg@Fæ@Xh@%Xi@Tf@GÎ@Xj@Xm@Xl@SÍ@Xk@Xq@Xn@Xo@Xs@Xp@N¬@EÛ@Xt@Xu@%Xr@Xv@Mô@Hé@Q~@Xy@OH@MW@M¬@Fñ@F£@F@I@Jç@Sq@Xx@Xz@%S°@X{@S§@X|@Ka@O¬@NS@P¤@I¸@EÙ@Tö@J|@X€@SŸ@Kë@PS@X}@%NÆ@X@LË@Hj@Rø@Oo@FW@SÁ@O^@X~@GC@O^@Xƒ@X†@M‰@X„@Ry@%J•@X…@N¾@FM@QP@XŠ@X‡@Jü@Xˆ@X‹@XŒ@R‰@X‰@X@XŽ@UR@Tˆ@%K•@X@NŽ@NÈ@Q–@X‘@X@U¹@X’@X”@X“@X–@X•@X—@X˜@X™@F}@%QO@LŸ@Xš@Il@N°@Gu@X›@Xœ@Pw@X@Xž@Ru@XŸ@Go@X @X¡@I~@%X¢@JÃ@F”@RÈ@TÝ@Eþ@X£@HÈ@K‹@X¥@E[@FŠ@E«@Es@X¦@X§@G’@%IA@X¨@QG@X©@Xª@Rò@Mi@Eæ@M²@Q@LS@X¬@Ld@X­@R„@X«@Uƒ@%X¯@X®@X°@X±@X´@X³@X²@Få@Xµ@NÊ@X·@N»@X¶@NÝ@F™@M@X¸@%Fž@X¹@Kø@Q¢@UM@PC@Xº@S•@SÑ@Jf@X»@X¼@X½@X¾@Mž@Pì@S@%X¿@KÜ@XÀ@I£@S¯@XÁ@LÁ@I@Tœ@Sò@Oñ@HO@XÃ@XÄ@Q„@RU@UÞ@%XÂ@UŒ@J³@Qy@R¹@KB@Le@Uz@XÊ@XÇ@KT@XÉ@XÈ@XÆ@RL@XÅ@TŸ@%Pµ@XÎ@XÏ@T˜@XË@Pø@NÌ@XÍ@Jw@XÐ@Io@XÑ@XÌ@TT@M€@XÒ@HU@%XÓ@XØ@XÔ@N‰@X×@Sà@XÖ@NÃ@XÕ@XÝ@XÚ@Ug@XÙ@XÛ@XÜ@XÞ@Xß@%O‹@Xá@Xà@Xâ@Mä@Xä@Rê@Uè@Xã@Xå@Xæ@Xé@Xç@Xè@Ed@Xê@KÙ@%Xë@Xì@Hò@JA@RX@Xî@Oò@Eô@Oƒ@Jì@N¯@Xï@E¾@Xð@L^@Xñ@Y[@%Xò@Xó@Xô@Xõ@Xö@X÷@Ho@FÕ@Fð@E¨@RM@HÅ@Lu@FÈ@Q\@GÝ@I¢@%Md@Eç@P«@M‹@IM@Eí@JÞ@I@G¸@Oz@Xø@E’@NÔ@Ih@Px@Rï@F†@%Xù@H‰@H‚@Xü@Oé@Xú@Iß@J„@JV@Xû@Xý@E¬@YA@K@Uô@RD@YB@%Gø@KY@YC@K“@R¸@YF@YE@YG@Qü@O©@\~@I‡@YH@YD@Lz@YI@YJ@%UV@YK@K`@F @FV@F²@Mv@Iû@IŠ@YL@IY@YM@YN@Q‰@Lï@M_@YO@%H®@E]@HJ@YP@SÀ@Hq@YQ@YR@YS@S®@YT@h€@Kî@YU@Q]@Lk@IÎ@%J†@O¹@EÈ@LÆ@H‹@YV@H^@YW@M”@M§@Eé@Uº@YX@TC@YZ@T²@YY@%HÝ@TC@Gm@Sû@UÀ@UÀ@JŽ@L¢@Y\@Y]@OÝ@Ee@Y^@Y_@Y`@GJ@RZ@%Ya@Er@Yg@T¹@E¿@Yc@PÕ@Rb@MF@Ye@Yf@GH@Yh@Yd@Yj@Yb@Yi@%Yk@Yl@O–@Q³@O@Ym@Yr@Yq@J¬@Hþ@Yp@Eo@Yo@Pr@Yn@L@Ys@%E@Yw@QM@Yt@Pt@Tñ@Y|@Y{@Yz@Yv@Yu@Yy@Yx@O_@Y„@Yƒ@Y}@%Y‚@IŒ@Y~@Y@Y@Pž@Y…@Y‡@NÓ@Y†@Yˆ@Y‹@YŠ@Y‰@GÑ@YŒ@Y@%YŽ@Y@Y@Y‘@Y’@Y“@Y•@Lè@Y”@O„@Y–@IÏ@R@Y—@Y™@Y˜@Qß@%Yš@Eg@GA@MG@Lg@Ej@H[@L£@JR@Y›@I‹@G­@JK@Jæ@N}@Yœ@SË@%H“@NF@J}@ES@Gk@Ou@Y@Jµ@Y @QÇ@YŸ@Yž@Y¡@Hœ@R¯@JD@KS@%I`@I‚@MÅ@Y¢@T¾@Fï@L…@Y¥@Y¤@Y£@J^@Y¦@Ik@Y§@Y©@LÊ@Y¨@%Tƒ@HÞ@Yª@N@Y«@Jo@E@E`@Y¬@Y­@E©@HÚ@Y®@P¢@M¯@R_@KW@%Y¯@K’@E·@HP@U@Jí@MO@Kd@UO@HT@QZ@EQ@Y°@EÞ@H±@Eø@Hà@%Në@PÁ@Fš@L]@Y±@Y²@KÇ@Y³@NÛ@N§@Yµ@Y´@T­@Sl@Y·@Y¸@Y¶@%U¯@Ub@Yº@Y¹@Pé@Y»@Y¼@Y½@Y¾@Y¿@YÀ@YÁ@GÐ@P[@RÖ@Ff@K¯@%Ud@TK@QÙ@KG@YÂ@T¿@YÃ@PÍ@YÄ@VA@VQ@F@Pá@YÅ@Kc@Qå@FÚ@%YÆ@T¬@EÓ@U—@L›@YÇ@Gæ@NB@Sk@YÈ@YÉ@YÊ@Kn@YË@Hº@FÒ@YÌ@%Rà@JÔ@YÍ@SÇ@YÎ@S…@YÏ@YÐ@YÑ@F_@YÒ@YÓ@YÔ@YÕ@YÖ@Y×@F@%Eá@YØ@MÍ@QY@N†@Nˆ@Rœ@Id@I^@YÙ@YÚ@I]@Gr@YÝ@Lê@Ja@YÜ@%YÛ@N`@H£@Yà@Yß@YÞ@I‘@Eå@P³@Yá@Ll@Hû@Gè@Yä@Yâ@Yã@Yå@%F˜@Yæ@Jp@Nõ@Yç@K]@FT@Lt@Yè@Hø@Yé@Uà@Fç@GÊ@P—@K×@Yê@%Fa@LE@N£@H•@Yð@Yñ@FO@Yì@L`@Yï@Yî@J®@Yí@Yë@PV@Yò@Y÷@%Yý@Yõ@LÖ@Yú@Nð@Yô@Yù@PŸ@F­@P@Yó@GÌ@Yü@Fn@TÞ@Yö@Nq@%Yû@UB@Yø@Yþ@ZB@RV@ZL@ZI@ZH@KÊ@ZJ@KÕ@GÇ@R˜@ZP@ZA@ZD@%ZG@ZC@U”@ZK@ZM@NÎ@S¸@L@ZE@ZO@ZN@IN@K°@S„@FC@ZF@ZR@%ZS@ZU@ZQ@Ti@ZW@Z\@Mã@UD@ZZ@P‘@ZX@ZY@ZT@ZV@J±@MØ@Më@%Hs@Z[@KÍ@Ie@L@Rv@S£@Zd@UT@Z^@QE@Zb@H_@Zc@Ne@Nx@Za@%Ze@Zf@T@N×@Z_@Oà@Z`@Z]@Kh@UJ@Pn@T¸@Zs@Zh@H³@Zn@Zk@%Zl@Tr@Zo@Zr@Zm@R‚@Zp@Zj@SÈ@P˜@Zt@Zu@Gc@Zv@Zi@R²@EÆ@%G÷@Zg@Zq@Z{@Zz@Z€@Z~@Z@Zy@Z@Z„@Z|@Qã@Z…@Z†@Zw@L¾@%Z}@Hý@SŽ@Zx@Jv@Z’@Rã@ZŠ@Z‹@ZŒ@Zƒ@Z‘@MÛ@MÓ@Z‚@N¶@RŠ@%Z@LI@Z@O­@Z@Z‡@ZŽ@Z“@H¨@Z‰@Sô@P|@Zˆ@Z™@OJ@U[@Zš@%Z˜@Z–@Z”@Z•@UÏ@Oü@SÂ@Qu@Z›@Z—@Zœ@G¾@Nl@Z£@Q¥@Z¡@Z¢@%N¤@Z @ZŸ@Zž@Z¤@Z@Z¦@Nò@Z¨@Z§@QS@Z©@Z«@Zª@MÆ@Z­@Z¯@%Z¬@Z°@Z®@Z±@Z²@Z³@Qa@T`@Z´@Q@Eº@IÞ@M @Zµ@Z¶@M@U•@%Z·@dn@Z¸@TÙ@Z¹@Gd@Zº@Z»@O’@Z¼@Z½@Z¾@P’@EÏ@LD@GÜ@EŒ@%Z¿@MÊ@e]@P­@EË@Iñ@ZÀ@Gê@I@UÕ@ZÃ@ZÁ@ZÄ@ZÂ@ZÅ@T·@Li@%Mz@Lv@ZÆ@ZÊ@LH@H÷@ZÇ@ZÍ@NÀ@ZÈ@Nã@Mf@ZÉ@ZË@ZÎ@GQ@ZÌ@%Jg@I@ZÜ@J…@N~@ZÚ@O¦@ZÓ@L†@K@Qà@ZÑ@Iá@MS@ZÙ@J¡@ZÔ@%ZÛ@ZÕ@ZÝ@ZØ@SE@Oº@ZÒ@S¢@ZÐ@Oa@KÛ@Z×@ZÏ@PE@R\@Ký@ZÖ@%Nâ@Mw@Hå@OÅ@Nå@Zß@Zä@Zà@P@Zå@Ož@Uµ@M×@Zæ@FØ@Zâ@G¶@%Zã@T‰@ZÞ@OÛ@K‚@U±@Zá@O@T@Hö@S‡@R¨@Zé@UU@S @U}@Zè@%Zê@Zç@LA@UF@MÝ@R…@K³@Zõ@Zô@NÖ@T“@Zï@M@OÀ@TÀ@Zí@MÃ@%La@Zò@Nì@Zì@Zñ@Lú@Zë@MD@Jã@Zó@Uæ@KO@K@Zð@G¨@L¬@HÕ@%UÐ@J`@Zî@UA@MÁ@TÍ@Zö@T£@Z÷@Zù@Ný@[B@Zú@Zý@KÏ@I¹@Zþ@%Lò@LF@Iª@M`@Zü@Zø@Kò@JÕ@Zû@[A@O~@[D@KØ@[K@[E@T£@[L@%[I@[H@[F@[J@MÈ@R@[C@[G@NI@P£@NŒ@[M@TÍ@MË@[P@[N@HÑ@%[O@[Q@Uõ@Qï@Jt@[Z@SÞ@[W@[U@SH@[S@UÛ@Nz@[X@[Y@Qá@Nb@%Lw@Sr@NÇ@[R@[V@[[@QN@[b@[^@[_@I›@[T@[]@[`@[a@[\@[e@%[f@UC@[g@OÖ@[d@OÍ@[h@[c@[k@[i@[j@[l@[n@Uö@[m@[r@[o@%[p@[q@[r@[t@[s@R@[u@[v@G{@[w@[x@[z@[y@[{@H@KÅ@H¯@%EÇ@J÷@[}@[€@[~@FG@L\@[‚@[@KŠ@[@G¥@[ƒ@Q±@OÏ@JÉ@Iò@%G°@FÌ@[„@G|@Kó@IQ@[…@[†@[‡@EÊ@Xí@FŽ@Q@GÛ@K€@Rä@Nƒ@%FN@[‰@KÑ@[Š@U@TÏ@QA@QÂ@[‹@Nü@I‰@N¥@E‡@[Œ@EÍ@M¤@Hˆ@%[@[@[@JÏ@[Ž@M{@[‘@JÜ@[’@M«@[“@Qe@[•@[”@Kw@Eb@M@%L{@Mj@Fé@Mg@Gì@[–@O£@[œ@[—@[™@[›@Oç@Fþ@[@RŽ@FÑ@E¦@%Tè@Gé@LY@[˜@[£@[¡@G©@G¬@[¤@Fb@U@Hè@E³@[ @K»@Rë@[¢@%[Ÿ@Q“@OŸ@L˜@[ž@RQ@FQ@H°@[¥@[¦@K²@Qê@TÃ@[¨@[«@[­@[©@%OÎ@[¬@[ª@[§@Um@P @Q²@L¶@Iø@I“@[°@[¯@G•@Jø@F¨@Lƒ@[±@%[³@OF@[²@NÑ@O«@O¾@Ml@Kâ@[µ@[´@[·@[¶@LÇ@PÌ@P“@Jþ@[¸@%L²@[¿@RC@[¾@[½@[»@[º@[¹@LV@[¼@[À@QR@[Á@Kþ@R¦@QÌ@[Â@%[Ã@[Ä@I¶@N¼@Jm@[Å@[Æ@G@NÒ@[Ç@S—@W@I_@Qf@KÃ@Fõ@V¬@%Ea@F…@KÄ@GÔ@[È@Tý@O¤@Uó@[Ê@Hn@G»@G\@[Ë@F‹@[Í@[Î@El@%IÆ@GF@Ef@Hù@[Ð@MB@N¢@[Ò@[Ó@[Ô@M–@Pð@[Ñ@SO@[Õ@Fh@NQ@%PÐ@F¼@EV@TÁ@Pô@[×@R]@[Ö@KK@T€@G^@Q¦@R‘@[Ù@Fv@[Ø@[Þ@%P‹@Lc@[Ü@EW@[š@[à@J¦@R€@Tß@Ex@F´@[Û@R^@[Ú@[ß@Tò@Jâ@%Ox@E¢@IÙ@G¹@Fr@OÒ@[â@RÐ@[á@[Ý@Pa@TÉ@[æ@Nè@[ä@[é@[ò@%[ã@[ð@UÍ@J@[ô@RÙ@[ñ@I€@PJ@NÁ@H›@Mê@OØ@Ná@[í@Tó@[î@%[ë@[ê@[è@[ç@[ï@[å@Kê@Fê@G§@Qñ@Gs@PT@JÁ@[ó@RÑ@GÓ@Eú@%Qñ@Pã@MÌ@G›@[õ@H¿@RB@RÞ@HV@Râ@[ú@UÚ@Kž@Fg@GÞ@Mà@[ø@%PÖ@I«@JÚ@[ù@[ö@Hñ@[÷@[û@IÀ@Hy@[ì@Sm@SK@[ý@Gq@Mˆ@Qó@%[ü@PF@\K@Nw@\A@\D@\B@ND@\H@G˜@[þ@[þ@\E@PÚ@\G@RÌ@S¼@%N’@\C@RÆ@P¬@X¤@RÓ@HX@\F@Qä@F‚@SY@Sa@\L@I­@\J@\M@\I@%N±@\`@S†@UÊ@\P@Nñ@\V@\_@KZ@\W@\Y@TÂ@\R@Kï@N©@\^@\T@%\]@\X@E@\[@Su@T”@U¶@Th@\O@\\@O÷@\Q@Mý@\U@GÅ@K @\N@%\Z@Oí@Sp@Qc@Hm@\c@\a@\d@Sú@\S@\e@\b@\q@T§@\i@Rí@\o@%Lº@Q×@R•@\k@UÅ@\p@SL@Tâ@\s@\r@Jß@R|@M“@\n@\l@T¢@Ek@%Sï@O®@R³@\m@I·@\h@\j@\g@Rº@Ga@\t@\u@LB@KR@Ië@Tv@UÇ@%\†@\y@M~@\…@\„@S@QJ@\€@\v@S²@\‚@\|@\w@\z@\ƒ@M¹@\@%G–@Nú@RÛ@\}@TŒ@\{@HH@h@\@\‡@\@\@\‰@\”@\’@\Ž@\@%K\@M·@\Œ@\Š@S»@\•@IO@\@\—@\™@\“@S‹@If@\‹@\‘@S›@Hd@%\–@\˜@HÜ@Eò@Ko@\ˆ@\š@U…@\Ÿ@\§@FÏ@Ni@K¾@\œ@\¦@\¡@\¥@%E‰@KÂ@\£@Ey@UÔ@\¢@\¤@\›@\¨@\©@\ @\¯@O²@Oõ@\¬@\«@Uî@%\ª@\°@MU@\ž@\­@\®@\²@\±@T]@\¶@\µ@\³@\·@\´@R‹@\º@U†@%\»@M¦@\¸@Sb@\¹@\¼@QÅ@\¿@\Â@Rî@NÞ@\À@\Á@\Ã@\Ä@U÷@\Å@%Lµ@E—@K@J @Kö@\Ç@\Æ@\È@Q}@Lø@Nû@\Ì@\Ë@\Í@F÷@T‡@\Î@%MN@\Ð@\Ï@\Ñ@\Ò@\Ó@HØ@Ew@ML@E±@GØ@UŽ@JŸ@Hä@IU@\Ô@\Õ@%I™@\Ö@\×@\Ù@\Ø@OB@S¤@He@I’@\Ú@\Ü@Ns@\Û@\Ý@\Þ@\ß@\à@%\á@\â@\ã@\ä@TY@Gí@\å@Ié@PÀ@\æ@HI@X@J[@\ç@\è@Ii@Iõ@%L—@\é@GN@\ê@S×@Fâ@\ë@\í@\ì@\ï@\î@\ð@HŽ@GV@\ñ@\ò@E¹@%\ó@\õ@\ô@Eœ@L¤@Eû@Un@\ö@SM@M„@I @P^@Pj@\ø@NÄ@N‚@\ù@%U^@\÷@E­@Eè@\ú@]E@R´@\þ@PÒ@PÈ@]F@G¤@IL@]D@]B@\û@UÙ@%\ý@L@U˜@\ü@]H@]G@Oø@Gý@N­@]A@]C@Pu@E…@Sì@]M@]P@FZ@%Nª@F\@]R@E„@FÆ@]K@]Q@No@JX@]I@]L@Fî@M¸@Qý@T×@FJ@UÆ@%]U@]N@]S@]O@N‡@FÊ@MK@NV@ID@]V@]T@Fó@]J@OW@]X@EÚ@]^@%]]@JN@R¶@TP@M˜@]W@EÜ@P·@OÔ@]Z@Kr@]\@R¬@]Y@P¼@G´@][@%Jr@Fü@LÉ@F@]f@]d@Eê@]_@]c@Fk@Fë@J@UÌ@JŒ@]b@K~@E§@%MA@]e@]j@]`@Hk@O}@]g@]a@]h@]k@MÚ@]i@UP@]r@O‘@JE@]o@%]s@Nt@Jˆ@]|@]u@]q@RÇ@]x@]t@J¿@]{@]‚@Uá@]~@]w@L¥@]@%]p@]y@]ƒ@UN@]v@]„@Gw@]@H”@Hê@KF@]z@]l@]}@J‘@]€@E–@%TA@Gi@JÀ@]m@H’@Q˜@Qd@]‡@Pä@GŠ@]™@]’@Rz@EÒ@]Œ@]˜@NC@%Q @]“@IP@]@IE@]…@]n@HÆ@]š@]Š@]–@]•@]‹@]”@Lˆ@]‘@]—@%MR@QU@Só@]Ž@]‰@O½@]@]†@H½@]ˆ@]@Mk@L@G[@]›@Tú@]¥@%Gü@FÎ@]@MÄ@JM@]¨@Rq@Sv@]œ@] @]¢@H¾@]ž@T—@]Ÿ@]¦@]§@%]¡@Næ@R©@HW@]³@K¢@RJ@]£@]¤@G£@M¡@]«@]±@]¯@O·@]·@]¬@%]­@]´@Kx@O¼@M®@TÐ@PÄ@Uu@]¶@Ií@T¡@PŽ@OX@Tà@On@NŠ@]°@%]²@Ms@]µ@]®@]©@]ª@Tú@JÂ@]Ã@]½@MÀ@FÂ@JÒ@]Ç@]¾@L“@]¼@%TF@]¿@]º@]¹@]Â@]»@U @]À@H‡@]¸@]Á@]Å@]Æ@Tº@]Ë@]É@NK@%]Î@U‰@]È@]Ê@]Ì@KÐ@P¾@]Ï@JÎ@]Ä@]Ô@]Ñ@]Ó@]Í@]Ð@S€@P~@%QÒ@U£@]Ò@]Ö@MÔ@PU@]â@]Õ@fX@]Û@Q‡@]Ý@]×@UP@]Ø@]Ù@]Ú@%]Þ@]Ü@UÑ@]ä@]à@]ß@R°@S\@]á@OÞ@R®@]ã@F[@]å@]ç@]æ@Sê@%]è@K–@]é@G…@Ke@Jõ@Ts@Tj@L¼@]ê@I}@OË@M­@Oî@]ë@]í@]î@%Ha@]ð@]ì@RÍ@]ï@Gˆ@I×@Rž@MÑ@]ò@P™@]ó@SŒ@]ñ@]÷@U‡@]ø@%]ö@]ô@]õ@Sî@]ú@TO@]ù@G_@Mæ@Sî@Gï@Iƒ@]ü@]ý@Lo@^B@T@%h…@^C@KÝ@]û@^A@Tê@SW@]þ@GB@T @^D@LL@U@^G@^E@F@^F@%R@^H@Oh@N¿@T»@^J@GÕ@^L@^M@^K@IÕ@Nø@^P@^S@Jy@^N@^Q@%PG@^R@Wû@^U@Lf@TÎ@^O@^V@Tæ@W@^T@^Y@^W@^X@^Z@^[@JÙ@%^\@^]@S|@^^@L‡@^`@^_@^a@^b@S©@EÌ@P–@^c@^d@RÝ@Ly@^e@%^f@^g@Gg@J½@^h@Uo@UÝ@^i@Sü@Is@U·@J¯@Pš@UÄ@H{@FR@QX@%^j@F¢@TŠ@^k@ST@^l@^n@^m@^o@^p@OÜ@^q@^r@JÅ@L§@^s@^t@%HR@^y@^u@NZ@^v@^x@^w@^z@QÛ@^{@Rt@NÏ@PÜ@^}@^~@^|@J{@%JÛ@Lž@^€@Rþ@^@Po@TÖ@^‚@^„@^@JQ@^ƒ@^…@N@^†@^‹@^ˆ@%IÅ@OÐ@OE@^‰@^‡@PO@SÝ@^Œ@LZ@N•@QŸ@^Ž@^@^@Oe@^’@^‘@%^“@Ma@^–@^”@^•@QË@^—@Ln@Gƒ@Eý@I±@Mé@NL@Jù@^š@^œ@^™@%^@Lš@^˜@^ž@S™@M]@^›@^¢@^Ÿ@^¥@K™@^¡@^ @L¹@Pf@^£@^¤@%^¨@^¦@F·@HÛ@^©@Eë@^§@P÷@N\@^¬@^ª@^­@^«@^®@^¯@TS@LØ@%R£@RŸ@^°@^²@^µ@^±@^´@Sñ@OR@^¶@K[@^³@PŒ@^¼@^¹@^»@^·@%^º@^¾@^¸@Qˆ@hƒ@^¿@RŒ@^½@PM@^Á@^À@^Â@^Ã@J¹@RI@^Ä@^Å@%^Æ@Nd@^Ç@TR@^È@IÂ@^É@^Ê@^Ë@^Ì@^Î@^Í@LÔ@^Ï@^Ð@^Ñ@^Ó@%^Ò@^Ô@^Ö@^Õ@^×@T•@^Ø@Sæ@KU@Kf@R§@^Ù@E™@EÀ@U×@^Ú@E¶@%MX@^Û@Xþ@Ec@F|@H @Ig@E|@We@EU@Fw@^Ü@^Ý@^á@^à@^ß@[|@%G®@^Þ@U@G‹@NÜ@G«@^ã@^â@Mr@P†@Iþ@Uš@^ä@Lð@Q´@^å@Rý@%H¹@^æ@^é@^ç@J©@NT@^è@^ë@PÝ@^ê@PÔ@^ì@^í@^î@^ð@^ï@N @%Qq@U°@L´@^ñ@^ò@^ó@^õ@^ô@PÎ@^ý@M—@^÷@^ù@^û@Tá@^ü@^ú@%QB@^ö@^ø@I¿@NJ@_A@^þ@_B@Q‚@Sý@UI@_C@LG@_E@Qt@_D@T¤@%_J@_L@_M@P‰@_K@_H@_F@_G@_I@_O@_N@RO@_P@_R@_S@_T@_U@%T¤@_Q@_W@_V@_X@K·@_\@_Y@_Z@TG@Sª@S~@_[@_]@_^@__@_b@%_`@_a@_c@_d@_e@_f@_g@Sš@FK@Fè@_h@FY@EK@_j@_i@_k@Eï@%J°@L»@_l@_m@R™@R¤@N@S–@_n@_o@_r@_p@_q@_s@IÚ@_t@_u@%hh@_v@_w@_x@MÇ@_y@Sº@PW@Qµ@Gt@_{@_}@_|@Me@HD@\É@_~@%K„@_@Iã@H@_€@S÷@_@Fu@P€@Ft@Fx@_ƒ@P‚@HG@_†@_…@_„@%R¼@M¢@ER@_‹@QÊ@FB@Nj@_‡@_‰@_Š@_ˆ@_Œ@_@N_@I¥@Gª@_Ž@%_@_@_“@Rl@Js@_”@J–@_‘@_’@_—@_–@_•@_™@_˜@_š@_œ@_›@%Ur@M°@R}@_@O›@_ž@_Ÿ@_£@_¡@_¢@_ @_¤@_¥@SP@_¦@Pí@_§@%FÁ@_¨@E°@UÉ@NM@J‚@_©@Q»@E€@_«@I[@_¬@_­@FÓ@LÃ@_°@_®@%ME@T´@RH@LÂ@J¾@Pß@_¯@_±@_²@Iv@_³@I„@Jï@Si@R¿@_´@_¶@%_¹@ON@_·@Q•@_º@SV@_µ@Q{@O±@RÒ@T[@_¸@_»@Mø@P}@_½@_¾@%_¼@Hz@_Ä@_Ã@Jb@_Å@_À@_Æ@_Á@Kœ@_¿@_Â@_É@_È@I´@_Ç@Hª@%_Ë@_Ê@Q°@_Ì@Lœ@_Í@Mð@_Î@Q¹@QL@_Ð@_Ï@_Ñ@HS@IX@Fc@_Ó@%SÒ@Q’@NØ@Oë@HŒ@U\@_Ø@LÜ@Se@_×@Lë@E¡@_Ö@_Ô@O‰@Iù@M¿@%Lq@US@RØ@_Ú@Pç@Mu@P®@O‡@_Û@R†@K§@E‹@_Ü@_ß@_Þ@Uª@O×@%_à@Tõ@Pú@US@_á@Sj@_â@U]@Tc@SÐ@Eñ@FÃ@_ã@FX@Hí@Mº@_ä@%Lp@Mƒ@Tµ@_ç@P@LŠ@_å@MŸ@_æ@Kß@Iu@Rd@_è@Gô@_é@GÄ@Gú@%P‡@_ê@_ë@MÏ@R–@_ì@Sf@F’@_í@Gj@_ï@_ð@M¾@OÇ@_î@OÕ@N”@%HÔ@_ñ@R¾@_ó@H‘@RT@P¸@P›@_ò@_õ@_ô@N˜@_ö@O\@_ø@K†@I†@%_ù@G@_ú@N‘@Jý@Qi@T™@_û@O°@Ké@_ü@_þ@`A@_ý@P¦@`B@Je@%Pª@I§@`C@`D@Už@`G@`F@`I@`H@`J@Rð@`K@EÝ@`L@`M@`O@`N@%`Q@`P@`R@`S@Iç@`T@fÁ@Gn@`U@`V@Tk@MP@`W@`X@QÈ@`Z@`[@%Hï@`\@Iq@`]@Eõ@T\@R‡@`^@TÕ@`b@QÏ@`a@``@`_@Iµ@Sç@`e@%OA@`f@Gà@Rô@OÙ@`h@F~@`c@`g@`d@In@`l@JÇ@M›@F§@K@`k@%`j@Rõ@`i@KE@K|@IÐ@FÉ@`m@T„@PH@SN@`s@`q@`r@`p@`n@`o@%U›@OQ@U¤@`w@`{@`z@Nà@LÌ@HC@`u@`|@`y@`x@`t@`‚@`v@Fò@%TÊ@Q@Jû@`€@P\@G¡@Qè@Iè@`@O¶@I¨@`~@`@`}@`ƒ@Hu@JØ@%`‡@`…@`„@TD@`Œ@`Ž@`†@`‰@`‹@`@OS@WŠ@`Š@`ˆ@Q|@TÊ@`’@%Kì@`@`@`‘@`”@`“@Q«@`•@Rp@OL@`–@`˜@`—@Mþ@Qò@`š@O™@%`™@`›@`œ@Lî@Rª@`@`ž@Fo@`Ÿ@Oð@Uç@N…@` @Hž@OÌ@SÉ@`¡@%L©@LK@MY@K÷@OÈ@Kû@`¥@`£@`¢@R«@KÔ@`§@`¤@`¦@`«@`ª@`©@%`¨@`¬@`®@Fl@Q¼@`°@`¯@Tq@Q`@`±@H„@`³@`´@T’@QŒ@QK@`²@%NÅ@`µ@`¶@`·@`¸@FÇ@RÂ@Hú@Qþ@FÛ@`º@G½@Kg@`¹@`½@Lù@Iâ@%Oµ@G¦@`¼@OG@Lx@F€@Ió@Oó@`»@GŸ@Hw@Lô@Jð@U’@`À@QH@Gh@%`Á@NY@`Ã@Lä@L½@`Â@Iô@Uc@F¹@`¾@`Å@`Ä@`¿@Fˆ@`É@`Ì@F¿@%`È@`Ð@`Æ@Pm@Lç@N÷@`Í@GW@`Ê@`Ë@H@Rh@`Ç@Jä@Jó@Iö@Tí@%`Ï@St@`Î@JJ@GË@Të@Pp@`Ü@`Ú@`Ø@`Ò@`×@Q£@H€@`Ñ@`Ù@`Ý@%HË@JS@MÉ@`Ó@`Ô@`Û@TÓ@T¦@`Ö@IÜ@H@`Õ@K—@S}@G“@H¥@J›@%`Þ@`á@`ß@F‡@`è@`à@`ã@J€@`ç@`â@HN@Lü@Uk@Nš@`æ@H`@`ä@%Kª@HY@`é@`î@`ê@`å@`ì@Ræ@Ok@`í@`ë@[Ì@U¨@N“@Iä@I÷@`ò@%`ù@`ô@`ø@`ö@`ï@`õ@`ó@Hf@GY@`÷@`ð@`ñ@Hh@Ss@RÚ@`ý@Hš@%QÔ@`û@`þ@aA@`ú@`ü@RÚ@`ñ@aB@aE@aD@Ss@Mš@Ki@aC@aG@aF@%aH@aJ@Uë@aK@Rx@aL@Q¿@aN@aM@Uú@Rs@aO@aP@aQ@aR@aS@Sœ@%P„@aT@aU@aV@aW@aX@TË@aY@Qn@aZ@a\@a[@a]@a^@a_@aa@a`@%ab@LN@Uï@FŒ@O‚@L™@Uy@U¥@ac@Z¥@ad@af@Mú@ae@ag@ah@JÑ@%ai@E}@aj@am@al@ak@an@ao@G±@U–@E˜@aq@ap@ar@at@au@as@%G@Oû@ax@ay@az@Mœ@Ji@Tù@a{@Oi@a|@a}@a~@U‹@T¶@a@a€@%Qö@Mµ@R @I…@G`@a@Fp@SÜ@a‚@Qæ@IŽ@aƒ@Iš@Oì@Tä@a„@a…@%a†@a‡@L«@N™@a‰@U¸@aˆ@a‹@aŠ@aŒ@Kµ@a@Ty@H»@aŽ@K‰@a@%a@SÊ@a“@a’@a‘@M¨@a”@H×@a•@a–@Sä@a—@a˜@a™@S¶@KA@JB@%U@NP@aš@Rg@Rj@a›@R’@LŒ@LÅ@S‚@I{@Ky@Lû@až@aœ@Pë@RÕ@%H¬@TQ@PN@Mö@a£@N›@J²@Rc@Rˆ@a¡@a¤@aŸ@a¢@P¶@Mc@Né@a @%a¦@a§@N«@Kã@a°@GO@Ht@PQ@Uì@Gã@Py@a¥@S^@M\@a¨@a©@L–@%aª@J´@L³@Ué@a­@a°@a¬@a«@RÄ@Mb@a¯@a®@RG@L¯@a´@a³@aµ@%QÎ@a²@K¤@a±@a¶@M¶@L @Ro@Rš@aº@a»@a·@a¸@a¹@QØ@a¿@a½@%Q‘@MŠ@P`@a¼@a¾@aÁ@Nö@aÂ@aÄ@Pv@aÀ@aÃ@aÊ@aÇ@aÆ@S_@aÈ@%aÉ@Tt@aÅ@aË@aÌ@aÍ@M½@aÎ@aÏ@aÐ@aÑ@aÒ@JG@SŠ@Qs@LÐ@EÃ@%M³@JH@Lj@aÓ@aÔ@J‰@aÕ@aÖ@a×@aØ@SX@Fj@Wx@bº@P”@aÙ@LX@%aÚ@aÛ@aÜ@N[@Lª@OÁ@O¸@Jc@K¸@aÝ@HŸ@aÞ@IV@aß@aá@TÛ@K‡@%S¬@aà@F{@aâ@Mü@T®@aã@aä@aå@aæ@aè@aç@LJ@aé@aê@aë@U´@%EÄ@aì@GÃ@MT@aí@SÅ@aî@Qš@aï@að@N½@Ir@aò@O{@JÝ@añ@aô@%TB@Oå@FÙ@Fƒ@IS@MÐ@aó@Nº@N]@PK@aù@UY@R×@J¸@bF@Sw@bC@%bA@a÷@aõ@aö@FÖ@J_@T°@MZ@Eî@aû@aú@aþ@bD@aý@aø@FF@aü@%Tz@KÓ@bB@bE@NÉ@bJ@Sö@bR@Pâ@bX@GL@bQ@bP@bK@T{@bI@bG@%Iw@M÷@bM@bL@bO@S³@HB@S³@Q_@bN@FÜ@Kb@bH@b_@bZ@K¡@Ià@%b]@b[@bb@T†@bc@b\@bY@b`@bW@bS@Qî@bU@ba@bV@bd@bT@T³@%RÉ@b^@bu@bn@GS@bg@F×@Ls@bh@LQ@Q€@bl@K¨@SÔ@bp@Qj@Té@%Kl@Qm@HÌ@bq@be@bt@bi@bv@bj@bk@T÷@bo@RÉ@bm@PÛ@br@T‚@%bf@bs@TØ@IJ@bw@Ku@O|@b…@b„@by@Gò@b‚@b~@Eù@UŸ@JY@Hß@%UG@bx@Pq@Nr@b@b|@Oy@Ql@b@bƒ@TN@PÙ@b{@b}@Pà@b€@bz@%Sø@O“@Oã@P•@RY@b‰@b“@b@I²@bŠ@Jº@b‡@bŒ@P¹@bˆ@b@L”@%b‘@Pƒ@b†@Om@b‹@bŽ@Oš@b’@b”@b@R{@Pˆ@Kô@b–@Q‹@b•@R½@%b@Ul@U{@bœ@b›@b—@b˜@Tš@bš@T¨@Sø@O¡@b™@N‹@F^@TÑ@b @%b¥@R÷@b¤@S¨@b¦@b§@Ue@bž@b©@T‘@b£@b¡@bŸ@b¢@PÞ@Tð@QÓ@%b¨@b°@b¶@b·@bª@J’@b´@b¬@b®@b¸@b­@b±@Lì@Q­@b²@bµ@b«@%O¿@b¯@Lñ@TZ@I˜@Fá@b³@Sù@b»@b¿@b½@O»@b¼@Ní@b¾@bÀ@bÁ@%bÄ@bÂ@Eh@bÃ@Oö@L•@Uâ@bÅ@Sí@P_@bÉ@T–@NÚ@L¿@bÆ@bÈ@bÇ@%\½@\¾@bË@bÊ@L¦@_‚@bÌ@bÍ@bÏ@J«@R`@Rû@bÑ@Or@RP@Uˆ@bÒ@%bÓ@KË@bÔ@Q¶@QD@Oª@bØ@bÚ@bÕ@O]@bÖ@U¢@b×@bÙ@bã@bÜ@bß@%bÛ@bÝ@bÞ@Oê@bà@SØ@Mù@bá@bä@U»@bé@bå@bè@UÂ@bæ@bç@Nf@%S¥@Ot@RN@bó@bï@U™@bí@NÍ@bî@bë@bì@bñ@bô@bò@bð@bê@TÜ@%bú@S¡@bø@bù@bõ@Rm@b÷@bö@Sè@R¡@bý@bþ@cI@SG@cB@cH@bû@%cF@cJ@QÃ@cC@cE@cG@cA@Nn@bü@cK@cD@HÂ@cN@cL@cU@cO@cW@%QÖ@cY@cQ@cR@cV@cM@Tô@cP@cS@cX@c\@Sè@cZ@c[@cc@cd@P@%QÆ@cb@U½@c^@ca@c]@c_@ce@cf@c`@R¡@ch@cg@SQ@ci@cj@ck@%cl@cm@KC@cn@co@Kˆ@E¤@cp@cq@Hl@K¥@cr@G€@M¥@cs@Kí@ct@%Jê@FÀ@cu@OT@cz@cx@Ré@cy@cw@J§@cv@c{@Oj@JT@c‚@c~@JW@%c}@c€@c|@c@cƒ@K@c@TÅ@c†@OZ@c…@TH@c„@I½@O`@c‡@cˆ@%H˜@I¤@c‰@Fø@cŠ@c‹@Ij@cŒ@OŠ@TM@c‘@c’@O¨@SI@c@OC@c@%c@E{@L@cŽ@c“@KQ@c—@c”@T^@Qº@c˜@QÚ@c–@c™@cš@c•@c›@%cž@c @c@cœ@cŸ@Pk@c¢@c¡@Tl@c¤@T¯@c£@c§@c¥@c¦@c¨@c©@%Mß@cª@c«@c¬@EX@FU@c­@Mò@Kú@c®@c¯@E»@Fû@c°@JP@Së@c±@%JL@c²@c´@NÐ@c³@H…@cµ@c¶@c·@H~@c¸@cº@c¹@c»@G}@c¼@S`@%c½@G·@LÑ@c¾@c¿@cÀ@Gš@OÄ@cÁ@EÉ@Pò@cÄ@IÒ@cÃ@cÅ@KÈ@cÂ@%J¶@G”@cÆ@cÇ@Pï@TÌ@cÈ@Jq@Eâ@Jš@K­@Lß@cÉ@cË@Mh@Of@Iº@%cÊ@cÎ@cÏ@Qv@Uã@cÍ@Oˆ@Iý@cÌ@N@QÁ@cÓ@Tû@IH@L°@PÓ@cÒ@%cÑ@QŽ@K_@GP@M@Mç@cÔ@cÐ@cÖ@c×@cÕ@N´@MŒ@Kv@J~@cÚ@O @%O¢@JË@cÝ@Hç@Fý@cÙ@cÞ@M‘@cÛ@cÜ@cß@cØ@IR@JO@Kƒ@IÖ@Uò@%Re@cá@F‰@cã@P²@Ic@Jè@cà@câ@KÁ@Q@Hó@cä@cò@Up@cñ@cí@%cê@cì@cë@cç@RF@cæ@N–@Nœ@Oœ@cè@cå@cï@cð@Gâ@U«@Oá@OM@%Tå@Us@Oâ@cô@có@Rù@c÷@cé@cö@cø@I|@cõ@Jn@M»@cù@M}@cý@%S@cþ@U¡@cú@M‡@dA@cû@dF@dB@dD@dC@dE@dG@Ju@dI@dH@NO@%dL@J×@dK@dM@dN@G@av@K{@dJ@IÛ@dO@dP@dQ@Qk@[ˆ@dR@dS@%Sþ@dU@dV@dW@dT@dX@E@dY@d[@dZ@J™@d\@FH@d]@d^@d_@d`@%LÏ@I”@da@Lh@SU@db@dc@U“@dd@de@df@dh@dg@di@Pd@dj@dk@%dm@dl@Iê@F¶@IÈ@I¯@Jñ@M£@Jë@J]@dp@I¡@KÒ@do@dq@Lb@Mï@%ds@dt@H@dv@It@Jô@FÐ@P{@dr@Hr@FA@du@Uø@KM@Pg@FP@dw@%Oý@dy@dx@Sž@P×@d{@Mî@O”@J­@OO@Gå@dz@Uf@O§@Fì@RÁ@d|@%d}@d@d€@N@d~@SZ@Ut@d@L|@d‚@U„@d„@dƒ@d†@d…@d‡@dˆ@%d‰@Fù@QQ@dŠ@SÌ@d‹@Jª@dŒ@QÉ@Pî@d@HÐ@d@Jx@Fß@QÞ@Lí@%Ua@Fú@d’@d‘@d@d˜@d–@d“@d•@d”@d—@MÂ@d›@LÍ@dœ@UË@d™@%dš@G„@P´@PÑ@d@dŸ@dž@d @L¨@M|@d£@d¡@d¢@d¤@Pü@d§@d¨@%d¦@d¥@U§@dª@d®@d«@d©@d¬@d­@d²@d¯@Sh@d±@d³@d°@dµ@Rö@%d´@d·@d¸@dº@d¹@d¶@d¼@d»@L¡@d¾@d½@d¿@dÀ@dÁ@dÂ@Gœ@PD@%SS@Sz@dÃ@dÄ@SS@dÆ@dÅ@dÇ@FS@dÈ@Mª@H—@dÉ@NU@dÊ@L±@GR@%dË@dÎ@K¦@dÍ@dÌ@H¦@dÏ@JZ@dÒ@Mn@dÐ@dÑ@dÔ@dÕ@Jh@dÓ@d×@%Q[@dÖ@G‡@dØ@dÙ@Nô@H·@U¦@dÚ@F“@dÜ@dÛ@dß@Pl@dÞ@Pþ@dÝ@%dá@dà@dâ@Tî@dã@dä@då@P©@Rá@dæ@dç@dè@M^@dé@Mt@dê@dë@%dí@dì@dî@aI@dï@Gß@Rå@HE@dð@EÕ@Gõ@HA@T~@Uß@IÍ@Ph@K©@%Fs@HÖ@dò@dô@dó@S]@dö@Nž@Iï@Sß@dõ@Jœ@d÷@NX@dú@dù@T©@%IÑ@KI@GD@Lr@dø@Kü@eD@eA@dý@KÚ@P»@dû@Q^@Hð@dü@eC@O³@%OÊ@Eã@S±@eB@HÍ@E¸@dþ@MÎ@GT@eE@Ow@JÓ@Fi@T…@eF@JÖ@eG@%U¬@eN@Tø@L÷@Lm@Iì@eM@J‹@F«@P]@H@eH@eJ@eK@eL@EP@F¤@%I¼@eO@eP@Ró@TU@eQ@Fã@TL@NÂ@h‚@eS@eR@IÌ@QC@TX@eT@eW@%Rn@eU@S[@H]@LÚ@Rk@eY@LÄ@e[@S{@eX@`E@M©@Q†@eZ@Pê@e\@%L’@HF@FÅ@Q¨@N¸@e^@e_@e`@M@I³@PR@En@ec@ed@Iž@ea@eb@%E•@Qb@L·@I•@EO@ee@eh@eg@ei@ek@QT@el@ej@Os@em@UH@R»@%Gó@U‘@GX@N|@en@eo@K®@ep@eq@er@P½@QI@et@es@M†@Që@H™@%ew@Q©@ev@eu@Qo@Qp@Sx@Qú@So@ex@P@e{@ey@P@ez@Qú@e}@%e|@PÂ@e~@e@e€@SF@S¿@My@RR@e@Gl@E£@Ei@Gµ@e‚@E†@e‡@%e…@Oô@eƒ@e„@JÌ@Iˆ@e†@eˆ@e‰@Lã@e@e@SJ@Kð@eŠ@eŒ@e‹@%eŽ@QÐ@e’@e@e•@Nc@S@e“@Ri@e”@e—@e‘@e˜@e–@E®@U¿@e¦@%e›@eŸ@e¤@ež@E×@eš@e @eœ@e§@e¡@e¢@e¥@e™@e£@e©@IÔ@S“@%N¨@e@O´@e¨@Hc@e¬@e­@Qƒ@GŒ@Lâ@HÀ@RK@L­@e¯@e±@e®@MÜ@%N€@e°@eª@e«@MH@e»@eº@e³@e·@TI@e½@e¹@eµ@e¶@e¼@RÀ@e´@%e²@Sc@Mo@U¾@HÁ@Qç@S”@eÂ@eÅ@F¡@eÉ@eÎ@UÒ@eÀ@S@Tï@eÇ@%eË@eÌ@eÈ@NW@eÃ@eÊ@eÍ@eÁ@KŽ@Sð@RW@Oæ@Rƒ@P±@H†@e¿@e¾@%eÏ@eÄ@Q÷@KH@UÓ@Tª@eÔ@eÕ@HÇ@R­@eÑ@Op@eÓ@eÐ@NE@eÒ@S½@%Ib@eÚ@Mp@Q—@Tþ@eØ@Tm@Sn@eÙ@L‰@e×@eÖ@eâ@eÝ@eÛ@eå@PA@%eÜ@eÞ@eá@eã@eä@J@eæ@eà@eß@eè@eì@eí@QÍ@eê@eé@LÈ@RÏ@%eç@eë@eï@eð@QV@eî@Sˆ@eñ@eò@eõ@eô@eö@NN@eó@RA@eø@e÷@%eû@eù@eú@eü@eþ@eý@fA@fD@fC@fE@fB@fF@Eƒ@Fª@fG@Qœ@fH@%K}@fI@FÍ@T_@MÙ@fJ@EÁ@fK@fL@fM@fN@fO@EÅ@Jé@T›@Qr@fQ@%fP@fR@Qw@fU@fT@fS@fV@fY@Sd@fW@f[@fZ@f]@f\@f^@KÌ@f_@%f`@fb@fa@G†@fc@fd@E‘@fe@ff@G¼@Oï@F®@Oè@fg@KŒ@fj@fi@%Iå@fh@H­@QW@fk@fl@Rr@fm@IØ@L„@Im@Oþ@fn@UÃ@fq@LÒ@fp@%Na@PÇ@J·@fo@Ia@Jl@G¿@K¹@F]@Lå@J“@fs@fr@I©@Nv@PZ@fv@%fw@fu@SÃ@G—@Kù@fy@N®@Là@fz@eV@f{@f@f~@f|@f}@f€@f@%UE@f‚@fƒ@OÚ@NÕ@Od@Q¤@Ep@GE@G @LM@Tw@f…@R·@R[@f„@JŠ@%f†@cT@fˆ@Qû@f‡@I—@IZ@IÝ@I»@R¥@O@J¼@Pi@KÖ@f‰@E‚@Gû@%fŠ@f‹@MÞ@fŒ@OK@fŽ@f@f’@f‘@f@f“@f@Mè@Nä@f”@NH@f•@%f–@KÆ@f—@[Ï@f˜@f™@fš@f›@f @fž@f@fœ@fŸ@f¡@f¢@f£@f¤@%FL@f¥@HÃ@FD@f¦@Há@f§@hR@F‘@f¨@f©@fª@J£@Sµ@f«@RÎ@Mñ@%f¬@f°@f®@f¯@TE@f­@Rw@f±@PL@f²@f³@Rç@f´@Qí@f·@f¶@fµ@%cü@T‹@f¸@f¹@fº@f»@f¼@f½@Nu@f¾@f¿@Oß@fÀ@HM@fÂ@Rü@Uw@%J\@LÙ@M[@IF@J—@G²@F°@TV@fÃ@MJ@S@UW@Qz@Uä@JÍ@fÄ@fÆ@%fÅ@N³@Gë@N³@Uv@fÇ@Pû@fÈ@S«@Jz@fÈ@QÜ@fÊ@Gþ@Gñ@TŽ@fÉ@%H¸@Jå@fË@LW@UÁ@UÁ@Fº@fÌ@Nî@fÍ@fÎ@fÏ@fÐ@fÒ@fÑ@Gç@fÓ@%fÔ@fÕ@fÖ@fØ@f×@fÙ@HŠ@fÚ@F¸@SÎ@fÜ@fÞ@fÛ@\Ê@Fµ@K£@RE@%J@MI@IW@fà@P¿@T¼@Iy@P§@U³@fâ@UK@fã@fä@fá@fè@fê@fç@%fé@få@Hb@fë@fì@fí@fî@fï@fñ@fð@fó@fõ@fò@fô@Rè@fö@QÕ@%I¾@f÷@fø@F½@fù@fú@K…@Fd@fû@fü@Rß@P¡@fý@Uå@Må@I¬@Lþ@%O…@Mõ@gD@Iü@S¾@gC@gA@gB@fþ@gG@gE@gF@gH@gI@gK@gJ@LÀ@%gL@gN@PX@gM@MÒ@H´@gO@SÚ@gP@N^@gQ@gV@gR@gT@gU@gS@gX@%gY@SÚ@gW@g[@LÕ@gZ@g\@g]@g`@g_@g^@ga@gb@J¥@gc@gd@Uœ@%ge@gf@RÅ@gg@gj@gh@gi@Eq@gk@gl@gm@gn@go@gp@gq@Lö@gs@%P@gt@gr@gv@gu@gw@gx@gy@gz@g{@g|@g}@g~@g@g€@g@g‚@%gƒ@g„@g…@g†@g‡@gˆ@JÈ@RË@P¨@gŠ@g‰@M´@g‹@gŒ@S‰@g@Mâ@%gŽ@Hî@Qô@g‘@g@g@g”@OŽ@g“@g•@R@g’@g–@g—@g˜@g™@gš@%UÎ@N·@S‘@Lé@g›@gœ@g @gŸ@g@g¡@OÆ@gž@g¢@g£@g¤@g¨@Oä@%PØ@g©@g¦@g¥@g§@Mx@UQ@g«@g¬@gª@g±@g­@gµ@g¶@g²@g¸@g´@%Uq@R“@g·@g³@g°@g¯@g®@g¼@g»@gº@Tn@g¹@UÈ@g½@g¿@SÕ@Qð@%T«@gÁ@gÀ@g¾@U`@SÆ@UL@gÂ@gÃ@gÄ@gÅ@gÆ@Gy@gÈ@M•@gÇ@gÉ@%gÊ@N¦@Kp@TÄ@gÌ@gÍ@Q¡@Tü@gË@Td@gÔ@gÓ@RÃ@gÒ@gÑ@gÏ@LT@%gÎ@Pº@gÐ@MÖ@gØ@gÖ@gÕ@g×@gÙ@gÚ@gß@gÞ@gÝ@Kç@gÛ@gÜ@Pý@%U~@gà@gä@QŠ@gå@gâ@gá@gæ@gã@SB@MŽ@gç@gè@gé@gê@På@gë@%Gz@gï@gð@gî@gí@gó@gì@gñ@gò@gö@Td@gõ@gø@gù@gú@Kñ@g÷@%Kz@P¯@gû@gþ@gü@gý@hA@hB@L}@hC@L}@hD@F—@hE@hF@hG@hH@%hJ@Qù@Qž@hI@Ló@hK@Q›@hL@Jà@S´@hN@hO@Ra@U_@hM@Ra@U_@%H§@hP@hQ@Nê@JÆ@hS@U®@Q§@hT@hU@hV@Fy@hW@^@M¼@QÝ@hX@%hZ@hY@h[@h\@h]@h^@h_@h`@ha@hb@hc@hd@he@hf@hg@Qª@O¯@%hi@PË@hj@hk@Lý@hl@hm@Qõ@hn@ho@hp@hq@hs@ht@hu@L€@hr@%hv@hw@hy@hx@h{@h|@hz@HÊ@h}@h~@_÷@h@iA@iB@iC@iD@iE@%iF@iG@iH@iI@iJ@iK@iL@iM@iN@iO@iP@iQ@iR@iS@iT@iU@iV@%iW@iX@iY@iZ@i[@i\@i]@i^@i_@i`@ia@ib@ic@id@ie@if@ig@%ih@ii@ij@ik@il@im@in@io@ip@iq@ir@is@it@iu@iv@iw@ix@%iy@iz@i{@i|@i}@i~@i@i€@i@i‚@iƒ@i„@i…@i†@i‡@iˆ@i‰@%iŠ@i‹@iŒ@i@iŽ@i@i@i‘@i’@i“@i”@i•@i–@i—@i˜@i™@iš@%i›@iœ@i@iž@iŸ@i @i¡@i¢@i£@i¤@i¥@i¦@i§@i¨@i©@iª@i«@%i¬@i­@i®@i¯@i°@i±@i²@i³@i´@iµ@i¶@i·@i¸@i¹@iº@i»@i¼@%i½@i¾@i¿@iÀ@iÁ@iÂ@iÃ@iÄ@iÅ@iÆ@iÇ@iÈ@iÉ@iÊ@iË@iÌ@iÍ@%iÎ@iÏ@iÐ@iÑ@iÒ@iÓ@iÔ@iÕ@iÖ@i×@iØ@iÙ@iÚ@iÛ@iÜ@iÝ@iÞ@%iß@ià@iá@iâ@iã@iä@iå@iæ@iç@iè@ié@iê@ië@iì@ií@iî@iï@%ið@iñ@iò@ió@iô@iõ@iö@i÷@iø@iù@iú@iû@iü@iý@iþ@jA@jB@%jC@jD@jE@jF@jG@jH@jI@jJ@jK@jL@jM@jN@jO@jP@jQ@jR@jS@%jT@jU@jV@jW@jX@jY@jZ@j[@j\@j]@j^@j_@j`@ja@jb@jc@jd@%je@jf@jg@jh@ji@jj@jk@jl@jm@jn@jo@jp@jq@jr@js@jt@ju@%jv@jw@jx@jy@jz@j{@j|@j}@j~@j@j€@j@j‚@jƒ@j„@j…@j†@%j‡@jˆ@j‰@jŠ@j‹@jŒ@j@jŽ@j@j@j‘@j’@j“@j”@j•@j–@j—@%j˜@j™@jš@j›@jœ@j@jž@jŸ@j @j¡@j¢@j£@j¤@j¥@j¦@j§@j¨@%j©@jª@j«@j¬@j­@j®@j¯@j°@j±@j²@j³@j´@jµ@j¶@j·@j¸@j¹@%jº@j»@j¼@j½@j¾@j¿@jÀ@jÁ@jÂ@jÃ@jÄ@jÅ@jÆ@jÇ@jÈ@jÉ@jÊ@%jË@jÌ@jÍ@jÎ@jÏ@jÐ@jÑ@jÒ@jÓ@jÔ@jÕ@jÖ@j×@jØ@jÙ@jÚ@jÛ@%jÜ@jÝ@jÞ@jß@jà@já@jâ@jã@jä@jå@jæ@jç@jè@jé@jê@jë@jì@%jí@jî@jï@jð@jñ@jò@jó@jô@jõ@jö@j÷@jø@jù@jú@jû@jü@jý@%jþ@kA@kB@kC@kD@kE@kF@kG@kH@kI@kJ@kK@kL@kM@kN@kO@kP@%kQ@kR@kS@kT@kU@kV@kW@kX@kY@kZ@k[@k\@k]@k^@k_@k`@ka@%kb@kc@kd@ke@kf@kg@kh@ki@kj@kk@kl@km@kn@ko@kp@kq@kr@%ks@kt@ku@kv@kw@kx@ky@kz@k{@k|@k}@k~@k@k€@k@k‚@kƒ@%k„@k…@k†@k‡@kˆ@k‰@kŠ@k‹@kŒ@k@kŽ@k@k@k‘@k’@k“@k”@%k•@k–@k—@k˜@k™@kš@k›@kœ@k@kž@kŸ@k @k¡@k¢@k£@k¤@k¥@%k¦@k§@k¨@k©@kª@k«@k¬@k­@k®@k¯@k°@k±@k²@k³@k´@kµ@k¶@%k·@k¸@k¹@kº@k»@k¼@k½@k¾@k¿@kÀ@kÁ@kÂ@kÃ@kÄ@kÅ@kÆ@kÇ@%kÈ@kÉ@kÊ@kË@kÌ@kÍ@kÎ@kÏ@kÐ@kÑ@kÒ@kÓ@kÔ@kÕ@kÖ@k×@kØ@%kÙ@kÚ@kÛ@kÜ@kÝ@kÞ@kß@kà@ká@kâ@kã@kä@kå@kæ@kç@kè@ké@%kê@kë@kì@kí@kî@kï@kð@kñ@kò@kó@kô@kõ@kö@k÷@kø@kù@kú@%kû@kü@ký@kþ@lA@lB@lC@lD@lE@lF@lG@lH@lI@lJ@lK@lL@lM@%lN@lO@lP@lQ@lR@lS@lT@lU@lV@lW@lX@lY@lZ@l[@l\@l]@l^@%l_@l`@la@lb@lc@ld@le@lf@lg@lh@li@lj@lk@ll@lm@ln@lo@%lp@lq@lr@ls@lt@lu@lv@lw@lx@ly@lz@l{@l|@l}@l~@l@l€@%l@l‚@lƒ@l„@l…@l†@l‡@lˆ@l‰@lŠ@l‹@lŒ@l@lŽ@l@l@l‘@%l’@l“@l”@l•@l–@l—@l˜@l™@lš@l›@lœ@l@lž@lŸ@l @l¡@l¢@%l£@l¤@l¥@l¦@l§@l¨@l©@lª@l«@l¬@l­@l®@l¯@l°@l±@l²@l³@%l´@lµ@l¶@l·@l¸@l¹@lº@l»@l¼@l½@l¾@l¿@lÀ@lÁ@lÂ@lÃ@lÄ@%lÅ@lÆ@lÇ@lÈ@lÉ@lÊ@lË@lÌ@lÍ@lÎ@lÏ@lÐ@lÑ@lÒ@lÓ@lÔ@lÕ@%lÖ@l×@lØ@lÙ@lÚ@lÛ@lÜ@lÝ@lÞ@lß@là@lá@lâ@lã@lä@lå@læ@%lç@lè@lé@lê@lë@lì@lí@lî@lï@lð@lñ@lò@ló@lô@lõ@lö@l÷@%lø@lù@lú@lû@lü@lý@lþ@mA@mB@mC@mD@mE@mF@mG@mH@mI@mJ@%mK@mL@mM@mN@mO@mP@mQ@mR@mS@mT@mU@mV@mW@mX@mY@mZ@m[@%m\@m]@m^@m_@m`@ma@mb@mc@md@me@mf@mg@mh@mi@mj@mk@ml@%mm@mn@mo@mp@mq@mr@ms@mt@mu@mv@mw@mx@my@mz@m{@m|@m}@%m~@m@m€@m@m‚@mƒ@m„@m…@m†@m‡@mˆ@m‰@mŠ@m‹@mŒ@m@mŽ@%m@m@m‘@m’@m“@m”@m•@m–@m—@m˜@m™@mš@m›@mœ@m@mž@mŸ@%m @m¡@m¢@m£@m¤@m¥@m¦@m§@m¨@m©@mª@m«@m¬@m­@m®@m¯@m°@%m±@m²@m³@m´@mµ@m¶@m·@m¸@m¹@mº@m»@m¼@m½@m¾@m¿@mÀ@mÁ@%mÂ@mÃ@mÄ@mÅ@mÆ@mÇ@mÈ@mÉ@mÊ@mË@mÌ@mÍ@mÎ@mÏ@mÐ@mÑ@mÒ@%mÓ@mÔ@mÕ@mÖ@m×@mØ@mÙ@mÚ@mÛ@mÜ@mÝ@mÞ@mß@mà@má@mâ@mã@%mä@må@mæ@mç@mè@mé@mê@më@mì@mí@mî@mï@mð@mñ@mò@mó@mô@%mõ@mö@m÷@mø@mù@mú@mû@mü@mý@mþ@nA@nB@nC@nD@nE@nF@nG@%nH@nI@nJ@nK@nL@nM@nN@nO@nP@nQ@nR@nS@nT@nU@nV@nW@nX@%nY@nZ@n[@n\@n]@n^@n_@n`@na@nb@nc@nd@ne@nf@ng@nh@ni@%nj@nk@nl@nm@nn@no@np@nq@nr@ns@nt@nu@nv@nw@nx@ny@nz@%n{@n|@n}@n~@n@n€@n@n‚@nƒ@n„@n…@n†@n‡@nˆ@n‰@nŠ@n‹@%nŒ@n@nŽ@n@n@n‘@n’@n“@n”@n•@n–@n—@n˜@n™@nš@n›@nœ@%n@nž@nŸ@n @n¡@n¢@n£@n¤@n¥@n¦@n§@n¨@n©@nª@n«@n¬@n­@%n®@n¯@n°@n±@n²@n³@n´@nµ@n¶@n·@n¸@n¹@nº@n»@n¼@n½@n¾@%n¿@nÀ@nÁ@nÂ@nÃ@nÄ@nÅ@nÆ@nÇ@nÈ@nÉ@nÊ@nË@nÌ@nÍ@nÎ@nÏ@%nÐ@nÑ@nÒ@nÓ@nÔ@nÕ@nÖ@n×@nØ@nÙ@nÚ@nÛ@nÜ@nÝ@nÞ@nß@nà@%ná@nâ@nã@nä@nå@næ@nç@nè@né@nê@në@nì@ní@nî@nï@nð@nñ@%nò@nó@nô@nõ@nö@n÷@nø@nù@nú@nû@nü@ný@nþ@oA@oB@oC@oD@%oE@oF@oG@oH@oI@oJ@oK@oL@oM@oN@oO@oP@oQ@oR@oS@oT@oU@%oV@oW@oX@oY@oZ@o[@o\@o]@o^@o_@o`@oa@ob@oc@od@oe@of@%og@oh@oi@oj@ok@ol@om@on@oo@op@oq@or@os@ot@ou@ov@ow@%ox@oy@oz@o{@o|@o}@o~@o@o€@o@o‚@oƒ@o„@o…@o†@o‡@oˆ@%o‰@oŠ@o‹@oŒ@o@oŽ@o@o@o‘@o’@o“@o”@o•@o–@o—@o˜@o™@%oš@o›@oœ@o@ož@oŸ@o @o¡@o¢@o£@o¤@o¥@o¦@o§@o¨@o©@oª@%o«@o¬@o­@o®@o¯@o°@o±@o²@o³@o´@oµ@o¶@o·@o¸@o¹@oº@o»@%o¼@o½@o¾@o¿@oÀ@oÁ@oÂ@oÃ@oÄ@oÅ@oÆ@oÇ@oÈ@oÉ@oÊ@oË@oÌ@%oÍ@oÎ@oÏ@oÐ@oÑ@oÒ@oÓ@oÔ@oÕ@oÖ@o×@oØ@oÙ@oÚ@oÛ@oÜ@oÝ@%oÞ@oß@oà@oá@oâ@oã@oä@oå@oæ@oç@oè@oé@oê@oë@oì@oí@oî@%oï@oð@oñ@oò@oó@oô@oõ@oö@o÷@oø@où@oú@oû@oü@oý@oþ@pA@%pB@pC@pD@pE@pF@pG@pH@pI@pJ@pK@pL@pM@pN@pO@pP@pQ@pR@%pS@pT@pU@pV@pW@pX@pY@pZ@p[@p\@p]@p^@p_@p`@pa@pb@pc@%pd@pe@pf@pg@ph@pi@pj@pk@pl@pm@pn@po@pp@pq@pr@ps@pt@%pu@pv@pw@px@py@pz@p{@p|@p}@p~@p@p€@p@p‚@pƒ@p„@p…@%p†@p‡@pˆ@p‰@pŠ@p‹@pŒ@p@pŽ@p@p@p‘@p’@p“@p”@p•@p–@%p—@p˜@p™@pš@p›@pœ@p@pž@pŸ@p @p¡@p¢@p£@p¤@p¥@p¦@p§@%p¨@p©@pª@p«@p¬@p­@p®@p¯@p°@p±@p²@p³@p´@pµ@p¶@p·@p¸@%p¹@pº@p»@p¼@p½@p¾@p¿@pÀ@pÁ@pÂ@pÃ@pÄ@pÅ@pÆ@pÇ@pÈ@pÉ@%pÊ@pË@pÌ@pÍ@pÎ@pÏ@pÐ@pÑ@pÒ@pÓ@pÔ@pÕ@pÖ@p×@pØ@pÙ@pÚ@%pÛ@pÜ@pÝ@pÞ@pß@pà@pá@pâ@pã@pä@på@pæ@pç@pè@pé@pê@pë@%pì@pí@pî@pï@pð@pñ@pò@pó@pô@põ@pö@p÷@pø@pù@pú@pû@pü@%pý@pþ@qA@qB@qC@qD@qE@qF@qG@qH@qI@qJ@qK@qL@qM@qN@qO@%qP@qQ@qR@qS@qT@qU@qV@qW@qX@qY@qZ@q[@q\@q]@q^@q_@q`@%qa@qb@qc@qd@qe@qf@qg@qh@qi@qj@qk@ql@qm@qn@qo@qp@qq@%qr@qs@qt@qu@qv@qw@qx@qy@qz@q{@q|@q}@q~@q@q€@q@q‚@%qƒ@q„@q…@q†@q‡@qˆ@q‰@qŠ@q‹@qŒ@q@qŽ@q@q@q‘@q’@q“@%q”@q•@q–@q—@q˜@q™@qš@q›@qœ@q@qž@qŸ@q @q¡@q¢@q£@q¤@%q¥@q¦@q§@q¨@q©@qª@q«@q¬@q­@q®@q¯@q°@q±@q²@q³@q´@qµ@%q¶@q·@q¸@q¹@qº@q»@q¼@q½@q¾@q¿@qÀ@qÁ@qÂ@qÃ@qÄ@qÅ@qÆ@%qÇ@qÈ@qÉ@qÊ@qË@qÌ@qÍ@qÎ@qÏ@qÐ@qÑ@qÒ@qÓ@qÔ@qÕ@qÖ@q×@%qØ@qÙ@qÚ@qÛ@qÜ@qÝ@qÞ@qß@qà@qá@qâ@qã@qä@qå@qæ@qç@qè@%qé@qê@që@qì@qí@qî@qï@qð@qñ@qò@qó@qô@qõ@qö@q÷@qø@qù@%qú@qû@qü@qý@qþ@rA@rB@rC@rD@rE@rF@rG@rH@rI@rJ@rK@rL@%rM@rN@rO@rP@rQ@rR@rS@rT@rU@rV@rW@rX@rY@rZ@r[@r\@r]@%r^@r_@r`@ra@rb@rc@rd@re@rf@rg@rh@ri@rj@rk@rl@rm@rn@%ro@rp@rq@rr@rs@rt@ru@rv@rw@rx@ry@rz@r{@r|@r}@r~@r@%r€@r@r‚@rƒ@r„@r…@r†@r‡@rˆ@r‰@rŠ@r‹@rŒ@r@rŽ@r@r@%r‘@r’@r“@r”@r•@r–@r—@r˜@r™@rš@r›@rœ@r@rž@rŸ@r @r¡@%r¢@r£@r¤@r¥@r¦@r§@r¨@r©@rª@r«@r¬@r­@r®@r¯@r°@r±@r²@%r³@r´@rµ@r¶@r·@r¸@r¹@rº@r»@r¼@r½@r¾@r¿@rÀ@rÁ@rÂ@rÃ@%rÄ@rÅ@rÆ@rÇ@rÈ@rÉ@rÊ@rË@rÌ@rÍ@rÎ@rÏ@rÐ@rÑ@rÒ@rÓ@rÔ@%rÕ@rÖ@r×@rØ@rÙ@rÚ@rÛ@rÜ@rÝ@rÞ@rß@rà@rá@râ@rã@rä@rå@%ræ@rç@rè@ré@rê@rë@rì@rí@rî@rï@rð@rñ@rò@ró@rô@rõ@rö@%r÷@rø@rù@rú@rû@rü@rý@rþ@sA@sB@sC@sD@sE@sF@sG@sH@sI@%sJ@sK@sL@sM@sN@sO@sP@sQ@sR@sS@sT@sU@sV@sW@sX@sY@sZ@%s[@s\@s]@s^@s_@s`@sa@sb@sc@sd@se@sf@sg@sh@si@sj@sk@%sl@sm@sn@so@sp@sq@sr@ss@st@su@sv@sw@sx@sy@sz@s{@s|@%s}@s~@s@s€@s@s‚@sƒ@s„@s…@s†@s‡@sˆ@s‰@sŠ@s‹@sŒ@s@%sŽ@s@s@s‘@s’@s“@s”@s•@s–@s—@s˜@s™@sš@s›@sœ@s@sž@%sŸ@s @s¡@s¢@s£@s¤@s¥@s¦@s§@s¨@s©@sª@s«@s¬@s­@s®@s¯@%s°@s±@s²@s³@s´@sµ@s¶@s·@s¸@s¹@sº@s»@s¼@s½@s¾@s¿@sÀ@%sÁ@sÂ@sÃ@sÄ@sÅ@sÆ@sÇ@sÈ@sÉ@sÊ@sË@sÌ@sÍ@sÎ@sÏ@sÐ@sÑ@%sÒ@sÓ@sÔ@sÕ@sÖ@s×@sØ@sÙ@sÚ@sÛ@sÜ@sÝ@sÞ@sß@sà@sá@sâ@%sã@sä@så@sæ@sç@sè@sé@sê@së@sì@sí@sî@sï@sð@sñ@sò@só@%sô@sõ@sö@s÷@sø@sù@sú@sû@sü@sý@sþ@tA@tB@tC@tD@tE@tF@%tG@tH@tI@tJ@tK@tL@tM@tN@tO@tP@tQ@tR@tS@tT@tU@tV@tW@%tX@tY@tZ@t[@t\@t]@t^@t_@t`@ta@tb@tc@td@te@tf@tg@th@%ti@tj@tk@tl@tm@tn@to@tp@tq@tr@ts@tt@tu@tv@tw@tx@ty@%tz@t{@t|@t}@t~@t@t€@t@t‚@tƒ@t„@t…@t†@t‡@tˆ@t‰@tŠ@%t‹@tŒ@t@tŽ@t@t@t‘@t’@t“@t”@t•@t–@t—@t˜@t™@tš@t›@%tœ@t@tž@tŸ@t @t¡@t¢@t£@t¤@t¥@t¦@t§@t¨@t©@tª@t«@t¬@%t­@t®@t¯@t°@t±@t²@t³@t´@tµ@t¶@t·@t¸@t¹@tº@t»@t¼@t½@%t¾@t¿@tÀ@tÁ@tÂ@tÃ@tÄ@tÅ@tÆ@tÇ@tÈ@tÉ@tÊ@tË@tÌ@tÍ@tÎ@%tÏ@tÐ@tÑ@tÒ@tÓ@tÔ@tÕ@tÖ@t×@tØ@tÙ@tÚ@tÛ@tÜ@tÝ@tÞ@tß@%tà@tá@tâ@tã@tä@tå@tæ@tç@tè@té@tê@të@tì@tí@tî@tï@tð@%tñ@tò@tó@tô@tõ@tö@t÷@tø@tù@tú@tû@tü@tý@tþ@uA@uB@uC@%uD@uE@uF@uG@uH@uI@uJ@uK@uL@uM@uN@uO@uP@uQ@uR@uS@uT@%uU@uV@uW@uX@uY@uZ@u[@u\@u]@u^@u_@u`@ua@ub@uc@ud@ue@%uf@ug@uh@ui@uj@uk@ul@um@un@uo@up@uq@ur@us@ut@uu@uv@%uw@ux@uy@uz@u{@u|@u}@u~@u@u€@u@u‚@uƒ@u„@u…@u†@u‡@%uˆ@u‰@uŠ@u‹@uŒ@u@uŽ@u@u@u‘@u’@u“@u”@u•@u–@u—@u˜@%u™@uš@u›@uœ@u@už@uŸ@u @u¡@u¢@u£@u¤@u¥@u¦@u§@u¨@u©@%uª@u«@u¬@u­@u®@u¯@u°@u±@u²@u³@u´@uµ@u¶@u·@u¸@u¹@uº@%u»@u¼@u½@u¾@u¿@uÀ@uÁ@uÂ@uÃ@uÄ@uÅ@uÆ@uÇ@uÈ@uÉ@uÊ@uË@%uÌ@uÍ@uÎ@uÏ@uÐ@uÑ@uÒ@uÓ@uÔ@uÕ@uÖ@u×@uØ@uÙ@uÚ@uÛ@uÜ@%uÝ@uÞ@uß@uà@uá@uâ@uã@uä@uå@uæ@uç@uè@ué@uê@uë@uì@uí@%uî@uï@uð@uñ@uò@uó@uô@uõ@uö@u÷@uø@uù@uú@uû@uü@uý@uþ@%vA@vB@vC@vD@vE@vF@vG@vH@vI@vJ@vK@vL@vM@vN@vO@vP@vQ@%vR@vS@vT@vU@vV@vW@vX@vY@vZ@v[@v\@v]@v^@v_@v`@va@vb@%vc@vd@ve@vf@vg@vh@vi@vj@vk@vl@vm@vn@vo@vp@vq@vr@vs@%vt@vu@vv@vw@vx@vy@vz@v{@v|@v}@v~@v@v€@v@v‚@vƒ@v„@%v…@v†@v‡@vˆ@v‰@vŠ@v‹@vŒ@v@vŽ@v@v@v‘@v’@v“@v”@v•@%v–@v—@v˜@v™@vš@v›@vœ@v@vž@vŸ@v @v¡@v¢@v£@v¤@v¥@v¦@%v§@v¨@v©@vª@v«@v¬@v­@v®@v¯@v°@v±@v²@v³@v´@vµ@v¶@v·@%v¸@v¹@vº@v»@v¼@v½@v¾@v¿@vÀ@vÁ@vÂ@vÃ@vÄ@vÅ@vÆ@vÇ@vÈ@%vÉ@vÊ@vË@vÌ@vÍ@vÎ@vÏ@vÐ@vÑ@vÒ@vÓ@vÔ@vÕ@vÖ@v×@vØ@vÙ@%vÚ@vÛ@vÜ@vÝ@vÞ@vß@và@vá@vâ@vã@vä@vå@væ@vç@vè@vé@vê@%vë@vì@ví@vî@vï@vð@vñ@vò@vó@vô@võ@vö@v÷@vø@vù@vú@vû@%vü@vý@vþ@wA@wB@wC@wD@wE@wF@wG@wH@wI@wJ@wK@wL@wM@wN@%wO@wP@wQ@wR@wS@wT@wU@wV@wW@wX@wY@wZ@w[@w\@w]@w^@w_@%w`@wa@wb@wc@wd@we@wf@wg@wh@wi@wj@wk@wl@wm@wn@wo@wp@%wq@wr@ws@wt@wu@wv@ww@wx@wy@wz@w{@w|@w}@w~@w@w€@w@%w‚@wƒ@w„@w…@w†@w‡@wˆ@w‰@wŠ@w‹@wŒ@w@wŽ@w@w@w‘@w’@%w“@w”@w•@w–@w—@w˜@w™@wš@w›@wœ@w@wž@wŸ@w @w¡@w¢@w£@%w¤@w¥@w¦@w§@w¨@w©@wª@w«@w¬@w­@w®@w¯@w°@w±@w²@w³@w´@%wµ@w¶@w·@w¸@w¹@wº@w»@w¼@w½@w¾@w¿@wÀ@wÁ@wÂ@wÃ@wÄ@wÅ@%wÆ@wÇ@wÈ@wÉ@wÊ@wË@wÌ@wÍ@wÎ@wÏ@wÐ@wÑ@wÒ@wÓ@wÔ@wÕ@wÖ@%w×@wØ@wÙ@wÚ@wÛ@wÜ@wÝ@wÞ@wß@wà@wá@wâ@wã@wä@wå@wæ@wç@%wè@wé@wê@wë@wì@wí@wî@wï@wð@wñ@wò@wó@wô@wõ@wö@w÷@wø@%wù@wú@wû@wü@wý@wþ@xA@xB@xC@xD@xE@xF@xG@xH@xI@xJ@xK@%xL@xM@xN@xO@xP@xQ@xR@xS@xT@xU@xV@xW@xX@xY@xZ@x[@x\@%x]@x^@x_@x`@xa@xb@xc@xd@xe@xf@xg@xh@xi@xj@xk@xl@xm@%xn@xo@xp@xq@xr@xs@xt@xu@xv@xw@xx@xy@xz@x{@x|@x}@x~@%x@x€@x@x‚@xƒ@x„@x…@x†@x‡@xˆ@x‰@xŠ@x‹@xŒ@x@xŽ@x@%x@x‘@x’@x“@x”@x•@x–@x—@x˜@x™@xš@x›@xœ@x@xž@xŸ@x @%x¡@x¢@x£@x¤@x¥@x¦@x§@x¨@x©@xª@x«@x¬@x­@x®@x¯@x°@x±@%x²@x³@x´@xµ@x¶@x·@x¸@x¹@xº@x»@x¼@x½@x¾@x¿@xÀ@xÁ@xÂ@%xÃ@xÄ@xÅ@xÆ@xÇ@xÈ@xÉ@xÊ@xË@xÌ@xÍ@xÎ@xÏ@xÐ@xÑ@xÒ@xÓ@%xÔ@xÕ@xÖ@x×@xØ@xÙ@xÚ@xÛ@xÜ@xÝ@xÞ@xß@xà@xá@xâ@xã@xä@%xå@xæ@xç@xè@xé@xê@xë@xì@xí@xî@xï@xð@xñ@xò@xó@xô@xõ@%xö@x÷@xø@xù@xú@xû@xü@xý@xþ@yA@yB@yC@yD@yE@yF@yG@yH@%yI@yJ@yK@yL@yM@yN@yO@yP@yQ@yR@yS@yT@yU@yV@yW@yX@yY@%yZ@y[@y\@y]@y^@y_@y`@ya@yb@yc@yd@ye@yf@yg@yh@yi@yj@%yk@yl@ym@yn@yo@yp@yq@yr@ys@yt@yu@yv@yw@yx@yy@yz@y{@%y|@y}@y~@y@y€@y@y‚@yƒ@y„@y…@y†@y‡@yˆ@y‰@yŠ@y‹@yŒ@%y@yŽ@y@y@y‘@y’@y“@y”@y•@y–@y—@y˜@y™@yš@y›@yœ@y@%yž@yŸ@y @y¡@y¢@y£@y¤@y¥@y¦@y§@y¨@y©@yª@y«@y¬@y­@y®@%y¯@y°@y±@y²@y³@y´@yµ@y¶@y·@y¸@y¹@yº@y»@y¼@y½@y¾@y¿@%yÀ@yÁ@yÂ@yÃ@yÄ@yÅ@yÆ@yÇ@yÈ@yÉ@yÊ@yË@yÌ@yÍ@yÎ@yÏ@yÐ@%yÑ@yÒ@yÓ@yÔ@yÕ@yÖ@y×@yØ@yÙ@yÚ@yÛ@yÜ@yÝ@yÞ@yß@yà@yá@%yâ@yã@yä@yå@yæ@yç@yè@yé@yê@yë@yì@yí@yî@yï@yð@yñ@yò@%yó@yô@yõ@yö@y÷@yø@yù@yú@yû@yü@yý@yþ@zA@zB@zC@zD@zE@%zF@zG@zH@zI@zJ@zK@zL@zM@zN@zO@zP@zQ@zR@zS@zT@zU@zV@%zW@zX@zY@zZ@z[@z\@z]@z^@z_@z`@za@zb@zc@zd@ze@zf@zg@%zh@zi@zj@zk@zl@zm@zn@zo@zp@zq@zr@zs@zt@zu@zv@zw@zx@%zy@zz@z{@z|@z}@z~@z@z€@z@z‚@zƒ@z„@z…@z†@z‡@zˆ@z‰@%zŠ@z‹@zŒ@z@zŽ@z@z@z‘@z’@z“@z”@z•@z–@z—@z˜@z™@zš@%z›@zœ@z@zž@zŸ@z @z¡@z¢@z£@z¤@z¥@z¦@z§@z¨@z©@zª@z«@%z¬@z­@z®@z¯@z°@z±@z²@z³@z´@zµ@z¶@z·@z¸@z¹@zº@z»@z¼@%z½@z¾@z¿@zÀ@zÁ@zÂ@zÃ@zÄ@zÅ@zÆ@zÇ@zÈ@zÉ@zÊ@zË@zÌ@zÍ@%zÎ@zÏ@zÐ@zÑ@zÒ@zÓ@zÔ@zÕ@zÖ@z×@zØ@zÙ@zÚ@zÛ@zÜ@zÝ@zÞ@%zß@zà@zá@zâ@zã@zä@zå@zæ@zç@zè@zé@zê@zë@zì@zí@zî@zï@%zð@zñ@zò@zó@zô@zõ@zö@z÷@zø@zù@zú@zû@zü@zý@zþ@{A@{B@%{C@{D@{E@{F@{G@{H@{I@{J@{K@{L@{M@{N@{O@{P@{Q@{R@{S@%{T@{U@{V@{W@{X@{Y@{Z@{[@{\@{]@{^@{_@{`@{a@{b@{c@{d@%{e@{f@{g@{h@{i@{j@{k@{l@{m@{n@{o@{p@{q@{r@{s@{t@{u@%{v@{w@{x@{y@{z@{{@{|@{}@{~@{@{€@{@{‚@{ƒ@{„@{…@{†@%{‡@{ˆ@{‰@{Š@{‹@{Œ@{@{Ž@{@{@{‘@{’@{“@{”@{•@{–@{—@%{˜@{™@{š@{›@{œ@{@{ž@{Ÿ@{ @{¡@{¢@{£@{¤@{¥@{¦@{§@{¨@%{©@{ª@{«@{¬@{­@{®@{¯@{°@{±@{²@{³@{´@{µ@{¶@{·@{¸@{¹@%{º@{»@{¼@{½@{¾@{¿@{À@{Á@{Â@{Ã@{Ä@{Å@{Æ@{Ç@{È@{É@{Ê@%{Ë@{Ì@{Í@{Î@{Ï@{Ð@{Ñ@{Ò@{Ó@{Ô@{Õ@{Ö@{×@{Ø@{Ù@{Ú@{Û@%{Ü@{Ý@{Þ@{ß@{à@{á@{â@{ã@{ä@{å@{æ@{ç@{è@{é@{ê@{ë@{ì@%{í@{î@{ï@{ð@{ñ@{ò@{ó@{ô@{õ@{ö@{÷@{ø@{ù@{ú@{û@{ü@{ý@%{þ@|A@|B@|C@|D@|E@|F@|G@|H@|I@|J@|K@|L@|M@|N@|O@|P@%|Q@|R@|S@|T@|U@|V@|W@|X@|Y@|Z@|[@|\@|]@|^@|_@|`@|a@%|b@|c@|d@|e@|f@|g@|h@|i@|j@|k@|l@|m@|n@|o@|p@|q@|r@%|s@|t@|u@|v@|w@|x@|y@|z@|{@||@|}@|~@|@|€@|@|‚@|ƒ@%|„@|…@|†@|‡@|ˆ@|‰@|Š@|‹@|Œ@|@|Ž@|@|@|‘@|’@|“@|”@%|•@|–@|—@|˜@|™@|š@|›@|œ@|@|ž@|Ÿ@| @|¡@|¢@|£@|¤@|¥@%|¦@|§@|¨@|©@|ª@|«@|¬@|­@|®@|¯@|°@|±@|²@|³@|´@|µ@|¶@%|·@|¸@|¹@|º@|»@|¼@|½@|¾@|¿@|À@|Á@|Â@|Ã@|Ä@|Å@|Æ@|Ç@%|È@|É@|Ê@|Ë@|Ì@|Í@|Î@|Ï@|Ð@|Ñ@|Ò@|Ó@|Ô@|Õ@|Ö@|×@|Ø@%|Ù@|Ú@|Û@|Ü@|Ý@|Þ@|ß@|à@|á@|â@|ã@|ä@|å@|æ@|ç@|è@|é@%|ê@|ë@|ì@|í@|î@|ï@|ð@|ñ@|ò@|ó@|ô@|õ@|ö@|÷@|ø@|ù@|ú@%|û@|ü@|ý@|þ@}A@}B@}C@}D@}E@}F@}G@}H@}I@}J@}K@}L@}M@%}N@}O@}P@}Q@}R@}S@}T@}U@}V@}W@}X@}Y@}Z@}[@}\@}]@}^@%}_@}`@}a@}b@}c@}d@}e@}f@}g@}h@}i@}j@}k@}l@}m@}n@}o@%}p@}q@}r@}s@}t@}u@}v@}w@}x@}y@}z@}{@}|@}}@}~@}@}€@%}@}‚@}ƒ@}„@}…@}†@}‡@}ˆ@}‰@}Š@}‹@}Œ@}@}Ž@}@}@}‘@%}’@}“@}”@}•@}–@}—@}˜@}™@}š@}›@}œ@}@}ž@}Ÿ@} @}¡@}¢@%}£@}¤@}¥@}¦@}§@}¨@}©@}ª@}«@}¬@}­@}®@}¯@}°@}±@}²@}³@%}´@}µ@}¶@}·@}¸@}¹@}º@}»@}¼@}½@}¾@}¿@}À@}Á@}Â@}Ã@}Ä@%}Å@}Æ@}Ç@}È@}É@}Ê@}Ë@}Ì@}Í@}Î@}Ï@}Ð@}Ñ@}Ò@}Ó@}Ô@}Õ@%}Ö@}×@}Ø@}Ù@}Ú@}Û@}Ü@}Ý@}Þ@}ß@}à@}á@}â@}ã@}ä@}å@}æ@%}ç@}è@}é@}ê@}ë@}ì@}í@}î@}ï@}ð@}ñ@}ò@}ó@}ô@}õ@}ö@}÷@%}ø@}ù@}ú@}û@}ü@}ý@}þ@~A@~B@~C@~D@~E@~F@~G@~H@~I@~J@%~K@~L@~M@~N@~O@~P@~Q@~R@~S@~T@~U@~V@~W@~X@~Y@~Z@~[@%~\@~]@~^@~_@~`@~a@~b@~c@~d@~e@~f@~g@~h@~i@~j@~k@~l@%~m@~n@~o@~p@~q@~r@~s@~t@~u@~v@~w@~x@~y@~z@~{@~|@~}@%~~@~@~€@~@~‚@~ƒ@~„@~…@~†@~‡@~ˆ@~‰@~Š@~‹@~Œ@~@~Ž@%~@~@~‘@~’@~“@~”@~•@~–@~—@~˜@~™@~š@~›@~œ@~@~ž@~Ÿ@%~ @~¡@~¢@~£@~¤@~¥@~¦@~§@~¨@~©@~ª@~«@~¬@~­@~®@~¯@~°@%~±@~²@~³@~´@~µ@~¶@~·@~¸@~¹@~º@~»@~¼@~½@~¾@~¿@~À@~Á@%~Â@~Ã@~Ä@~Å@~Æ@~Ç@~È@~É@~Ê@~Ë@~Ì@~Í@~Î@~Ï@~Ð@~Ñ@~Ò@%~Ó@~Ô@~Õ@~Ö@~×@~Ø@~Ù@~Ú@~Û@~Ü@~Ý@~Þ@~ß@~à@~á@~â@~ã@%~ä@~å@~æ@~ç@~è@~é@~ê@~ë@~ì@~í@~î@~ï@~ð@~ñ@~ò@~ó@~ô@%~õ@~ö@~÷@~ø@~ù@~ú@~û@~ü@~ý@~þ@A@B@C@D@E@F@G@%H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@%Y@Z@[@\@]@^@_@`@a@b@c@d@e@f@g@h@i@%j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@%{@|@}@~@@€@@‚@ƒ@„@…@†@‡@ˆ@‰@Š@‹@%Œ@@Ž@@@‘@’@“@”@•@–@—@˜@™@š@›@œ@%@ž@Ÿ@ @¡@¢@£@¤@¥@¦@§@¨@©@ª@«@¬@­@%®@¯@°@±@²@³@´@µ@¶@·@¸@¹@º@»@¼@½@¾@%¿@À@Á@Â@Ã@Ä@Å@Æ@Ç@È@É@Ê@Ë@Ì@Í@Î@Ï@%Ð@Ñ@Ò@Ó@Ô@Õ@Ö@×@Ø@Ù@Ú@Û@Ü@Ý@Þ@ß@à@%á@â@ã@ä@å@æ@ç@è@é@ê@ë@ì@í@î@ï@ð@ñ@%ò@ó@ô@õ@ö@÷@ø@ù@ú@û@ü@ý@þ@Dn@[É@ft@WŽ@%Xw@X‚@Y€@[®@\f@\x@^I@^Š@_z@_Ò@_Õ@_Ù@_Ý@`Y@`­@aw@b¹@%bÎ@bâ@cî@dŽ@dñ@eI@ef@e¸@eÆ@fx@fÝ@fß@fæ@gô@BZ@B@B{@%Bà@Bl@BP@B}@BM@B]@B\@BN@Bk@B`@BK@Ba@Bð@Bñ@Bò@Bó@Bô@%Bõ@Bö@B÷@Bø@Bù@Bz@B^@BL@B~@Bn@Bo@B|@BÁ@BÂ@BÃ@BÄ@BÅ@%BÆ@BÇ@BÈ@BÉ@BÑ@BÒ@BÓ@BÔ@BÕ@BÖ@B×@BØ@BÙ@Bâ@Bã@Bä@Bå@%Bæ@Bç@Bè@Bé@DD@Cà@DE@Dp@Bm@By@B@B‚@Bƒ@B„@B…@B†@B‡@%Bˆ@B‰@B‘@B’@B“@B”@B•@B–@B—@B˜@B™@B¢@B£@B¤@B¥@B¦@B§@%B¨@B©@BÀ@BO@BÐ@C¡@CJ@BJ@B_@B¡@Bj@B[@% \ No newline at end of file +@@0@1@@3@4@5@6@@8@%9@;@@@>@ÿ@?@?@±@J@?@[@?@?@?@_@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@¡@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@A@B@C@D@E@F@G@H@%I@Q@R@S@T@U@V@X@@‚@ƒ@„@…@†@‡@ˆ@‰@%Š@Œ@@Ž@@@‘@’@“@”@•@–@—@˜@™@š@@%ž@Ÿ@¢@£@¤@¥@¦@§@¨@©@ª@¬@­@®@¯@º@»@%¼@½@¾@¿@?@?@?@?@?@?@?@%Bj@Dj@D`@Dí@DK@DP@%Cy@Dz@D{@Aa@Ab@Ac@Ad@Ae@Af@Ag@Ah@Ai@Aj@Ak@Al@Am@An@%Ao@Ap@Aq@Ar@As@At@Au@Av@Aw@Ax@AA@AB@AC@AD@AE@AF@AG@%AH@AI@AJ@AK@AL@AM@AN@AO@AP@AQ@AR@AS@AT@AU@AV@AW@AX@%AÆ@AÀ@AÁ@AÂ@AÃ@AÄ@AÅ@AÇ@AÈ@AÉ@AÊ@AË@AÌ@AÍ@AÎ@AÏ@AÐ@%AÑ@AÒ@AÓ@AÔ@AÕ@AÖ@A×@AØ@AÙ@AÚ@AÛ@AÜ@AÝ@AÞ@Aß@Aà@A€@%A@A‚@Aƒ@A„@A…@A‡@Aˆ@A‰@AŠ@A‹@AŒ@A@AŽ@A@A@A‘@A’@%A“@A”@A•@A–@A—@A˜@A™@Aš@A›@Aœ@A@Až@AŸ@A @A†@DZ@DJ@%DJ@D|@Da@Dq@Db@Dr@Cw@Cx@D~@D@Cs@Dî@Dï@Dk@DN@Dn@Do@%Cr@Añ@Aò@Aó@Aô@Aõ@Aö@A÷@Aø@Aù@Aú@A±@A²@A³@A´@Aµ@A¶@%A·@A¸@A¹@Aº@Dñ@Dò@Dð@Dó@Cn@Co@Cp@CN@Cq@CO@Cd@Ce@B`@%C_@Ca@DM@CK@D|@Cl@Cm@Ck@Cj@Cb@Cc@Dh@Dx@C`@C\@DL@C[@%Dg@Dw@C]@C^@Ch@Ci@Cf@Cg@CL@CM@C|@C·@C}@C¸@C~@C¹@C@%Cá@C±@Cã@C°@Câ@C²@Cî@Cé@Cä@C´@Cð@Cë@Cæ@C³@Cê@Cï@Cå@%Cµ@Cì@Cñ@Cç@C¶@Cí@Cò@Cè@Dê@Dé@Dã@Dâ@Dì@Dë@Dè@Dç@Dà@%Dä@Dá@Cz@Dæ@Då@Dy@Di@Cv@Cu@Ct@@@@CD@CA@D[@D]@D^@D_@%Dd@Dt@De@Du@CB@CC@DB@DC@Df@Dv@Dl@D}@Dc@Ds@C¡@DG@D@%DH@D‚@DI@Dƒ@DQ@D„@DR@D…@D†@DÀ@D‡@DÁ@Dˆ@DÂ@D‰@DÃ@DŠ@%DÄ@DŒ@DÅ@D@DÆ@DŽ@DÇ@D@DÈ@D@DÉ@D‘@DÊ@D’@DË@DV@D“@%DÌ@D”@DÍ@D•@DÎ@D–@D—@D˜@D™@Dš@D@DÏ@DÕ@Dž@DÐ@DÖ@DŸ@%DÑ@D×@D¢@DÒ@DØ@D£@DÓ@DÙ@D¤@D¥@D¦@D§@D¨@DS@D©@DT@Dª@%DU@D¬@D­@D®@D¯@Dº@D»@DW@D¼@DÚ@DÛ@DF@D½@C¾@C¿@DÜ@DÝ@%CG@C@CH@C‚@CI@Cƒ@CQ@C„@CR@C…@C†@CÀ@C‡@CÁ@Cˆ@CÂ@C‰@%CÃ@CŠ@CÄ@CŒ@CÅ@C@CÆ@CŽ@CÇ@C@CÈ@C@CÉ@C‘@CÊ@C’@CË@%CV@C“@CÌ@C”@CÍ@C•@CÎ@C–@C—@C˜@C™@Cš@C@CÏ@CÕ@Cž@CÐ@%CÖ@CŸ@CÑ@C×@C¢@CÒ@CØ@C£@CÓ@CÙ@C¤@C¥@C¦@C§@C¨@CS@C©@%CT@Cª@CU@C¬@C­@C®@C¯@Cº@C»@CW@C¼@CÚ@CÛ@CF@C½@CÔ@CY@%CZ@CE@CX@CÜ@CÝ@Dm@EA@KÎ@EG@EM@IÓ@EC@E^@E_@F¯@G‰@VB@%Mì@O—@VC@F›@Wu@MV@PÅ@Ob@Hƒ@H|@VD@VE@E\@VF@L¸@VG@Fz@%H«@Gb@TÈ@VH@VI@KŸ@EŠ@EØ@U©@T¥@Ol@bÐ@VJ@IG@VK@K½@EI@%Nµ@GI@VL@K¿@J˜@Ip@GÀ@VM@VN@K±@GÂ@H–@VO@EÎ@EB@VP@I@%Kt@EE@Em@Kä@Pè@UÜ@Hg@VR@Qg@VS@LÎ@VT@GŽ@O@Oú@K¬@Ks@%Eu@NR@Iœ@VU@VV@VW@E“@SÙ@Gv@V\@VZ@V[@P…@Eà@HK@VY@VX@%Kå@Te@Hµ@GU@V^@G]@H¢@D\@V_@Va@V]@Eš@IÃ@Fö@V`@Mq@Mí@%Hi@H²@SA@JU@Vb@Ve@GÒ@Vf@Vc@E²@M™@NŸ@Jƒ@Pö@J@E½@Vd@%HÙ@I¦@Vh@IÉ@TJ@Fô@Vj@PŠ@K¼@Ta@Nß@Nþ@Vl@GÈ@H¤@Fà@Ev@%Læ@F–@Gp@Vn@Vk@IÁ@Vg@Vo@E”@Vi@Vm@Vy@V|@Vz@Hv@K”@Qâ@%Vw@Tb@H¶@O˜@V}@Vr@Vq@JF@OÂ@Vs@O@Vp@V{@V~@Vv@Vt@H¼@%Jž@Rì@GZ@Vx@Vu@S¹@Sã@OŒ@U|@KL@HQ@Jj@TÇ@R”@F`@V†@V€@%V…@Vƒ@V@N—@V@V„@V‚@Eª@SÄ@Rì@E¥@KJ@V‡@Vˆ@FÞ@V–@Lá@%M±@Qø@Pù@Ng@V•@V”@V@V™@EÖ@Iú@JÄ@V¡@V—@Kj@VŒ@SC@L®@%V‰@V˜@JÐ@V@V‘@Ui@H}@VŽ@Rñ@V‹@V’@V@MQ@V“@Où@Oc@Rú@%VŠ@V¤@Vš@V¢@V›@Vž@Mû@PI@V@Vœ@V @VŸ@Np@F@V¥@V£@TÒ@%IC@O•@PÃ@V¦@PY@V§@Vª@Nç@OÃ@V¨@Pœ@F¬@V©@LC@TÚ@V­@V°@%V«@KX@L[@JC@V±@OÉ@V®@V¯@Hì@Kº@U­@J»@RÔ@Vµ@M‚@V³@V·@%V´@N„@V¶@V¸@V²@Vº@V¹@Ux@IÊ@V¼@V½@EN@V»@To@VÀ@V¿@VÁ@%R@V¾@J¢@VÂ@GÚ@T½@VÄ@VÃ@VÆ@VÅ@VÇ@VÈ@L‘@F•@Kè@HÉ@Mó@%UZ@G¢@Ež@VÉ@Gž@VÊ@KV@PP@FŸ@VË@VÌ@IK@Q¾@VÍ@VÎ@Fe@F±@%VÏ@VÐ@EH@F»@EF@VÑ@G³@FI@Og@G¯@GÉ@Hô@VÒ@VÓ@EŽ@FE@VÖ@%N¡@VÕ@Hë@V×@a@VØ@O@VÙ@VÚ@VÛ@R~@HÄ@VÜ@N{@Vß@VÝ@Tg@%VÞ@Hx@Và@Vá@Vâ@KÞ@Væ@Vä@Vå@Vã@PÉ@Vç@QF@Hü@Vé@Vè@RÜ@%Vê@O€@Vë@Uù@SD@Kæ@Ww@Vì@h„@NÙ@Ví@Má@Hæ@UŠ@Vî@Tž@Vï@%Vð@Vñ@Q¬@Vò@Qì@PÏ@Pæ@E›@K¶@Vó@LP@OD@Vô@E´@Ge@K›@L×@%Võ@Tã@LR@Vö@V÷@K´@GK@I\@FÝ@Vø@E¼@Vù@Vú@LÝ@Vû@FÄ@HÏ@%Kk@Vü@KÀ@Kõ@Sy@Vý@GM@J@Vþ@Q®@E¯@WA@WC@Q™@IÇ@T@WB@%LÓ@Gf@T@WH@WE@KN@M…@WD@GÖ@WF@WG@Ká@WJ@WI@UÖ@Ið@WL@%Q…@WK@WN@WM@U€@E÷@WO@Hp@EŸ@Nh@WP@Fq@Jd@TÆ@WQ@WR@_ª@%M’@H©@WT@Ix@WS@Uj@WV@WU@T±@Nï@Fœ@HÎ@WW@SÖ@Eä@S’@Kš@%Fí@WX@Eµ@WY@Já@W\@Gî@WZ@IŸ@W[@L~@Iz@W]@W^@W_@W`@Tp@%Qé@R—@Wa@O[@NË@J¨@Wb@Wc@Wd@Wf@Wh@Wg@Wi@E@EZ@TW@Wj@%Q·@Nk@MM@Wl@Wk@Uí@Wm@Wn@Wo@Wp@OÑ@ET@J‡@Pñ@Wq@EJ@EL@%Wr@Ws@NG@Eß@Wt@G@Wv@S­@Jò@I–@G×@EY@Hã@Eö@QÀ@Wy@Iî@%SÛ@Wz@W{@L‚@G™@K‘@W|@Km@J¤@Lõ@W}@Ny@W~@Sâ@W@SR@W€@%W@OU@IB@Et@W‚@W„@Wƒ@Qx@Sg@S·@W…@W†@W‡@LŽ@Wˆ@JÊ@HÒ@%W‰@Hõ@P¥@H\@FÔ@Kq@Gù@G‘@O¥@F¦@HL@Põ@U²@W‹@WŒ@Q”@Sõ@%Eˆ@EÔ@L‹@W‘@Oq@NA@MÕ@O†@W’@W@GÆ@Gx@PB@GÙ@HZ@OY@Hâ@%Eð@W“@W”@Uê@Gº@E @E~@SÓ@U¼@Fm@Eó@Q¯@PÆ@N²@F¥@GÏ@W@%Pz@Sá@LO@Wœ@IË@W—@W˜@Wš@W›@K˜@IÄ@Så@W™@W•@Gö@W–@KP@%Ps@OV@Jî@IT@Wž@P°@W¢@H¡@T@W¥@W£@G@W @Wª@W¤@W§@Jö@%I°@W¨@W«@W­@W®@OP@Ez@W¡@WŸ@W¬@W¦@W©@W²@W¼@W´@W¹@W½@%Wº@Wµ@W±@LÞ@Sé@W³@W°@R±@W¾@Nù@EÐ@W»@W¶@W¯@W¸@Jk@W·@%FË@WÇ@W¿@WÁ@Uh@Uð@WÆ@WÅ@GG@T|@WÄ@WÀ@LÛ@Q¸@Ov@WÂ@K«@%WÃ@TÔ@WÌ@Kà@MC@WÒ@WÑ@WÈ@Tx@WÉ@Sƒ@WÎ@F¾@WË@Fä@Gä@WÏ@%WÐ@WÍ@WÓ@TÔ@WÊ@WØ@WÝ@WÙ@WÕ@Wß@F³@WÞ@Wá@RS@WÖ@UX@WÚ@%WÔ@Rµ@EÑ@Tu@WÛ@W×@OÓ@Wâ@Wà@Qh@Mm@L_@WÜ@N¹@HÓ@Wå@Wã@%XX@Wè@R¢@Wæ@Wä@K^@Wç@Wë@Wé@Wî@Wí@Pc@G~@Wê@Wì@Tì@Pó@%Wï@RÊ@Wø@PÊ@Wó@T@Wò@Wô@R›@Pb@Wð@Wñ@T}@Wö@Eü@Wú@Wõ@%Wù@Nm@Uñ@U‚@Wþ@W÷@UØ@XA@Wý@Wü@T}@XB@Q@XC@XD@XF@XE@%XI@XL@XJ@XH@XK@XG@Q@XM@XO@XN@XP@VÔ@Pe@ED@F©@JI@Gð@%XQ@KD@Jú@GÁ@XR@J”@E@XS@Rf@SÏ@XT@XV@XU@Q½@XW@OI@Gá@%Tç@XZ@XY@X[@F„@X\@G‚@GÍ@Iæ@EÂ@QÑ@X]@X_@Xa@Eì@I®@LU@%X^@Xb@N@Nó@X`@Xe@S¦@Xc@QÄ@S˜@II@Xf@KÉ@Xd@Xg@Fæ@Xh@%Xi@Tf@GÎ@Xj@Xm@Xl@SÍ@Xk@Xq@Xn@Xo@Xs@Xp@N¬@EÛ@Xt@Xu@%Xr@Xv@Mô@Hé@Q~@Xy@OH@MW@M¬@Fñ@F£@F@I@Jç@Sq@Xx@Xz@%S°@X{@S§@X|@Ka@O¬@NS@P¤@I¸@EÙ@Tö@J|@X€@SŸ@Kë@PS@X}@%NÆ@X@LË@Hj@Rø@Oo@FW@SÁ@O^@X~@GC@O^@Xƒ@X†@M‰@X„@Ry@%J•@X…@N¾@FM@QP@XŠ@X‡@Jü@Xˆ@X‹@XŒ@R‰@X‰@X@XŽ@UR@Tˆ@%K•@X@NŽ@NÈ@Q–@X‘@X@U¹@X’@X”@X“@X–@X•@X—@X˜@X™@F}@%QO@LŸ@Xš@Il@N°@Gu@X›@Xœ@Pw@X@Xž@Ru@XŸ@Go@X @X¡@I~@%X¢@JÃ@F”@RÈ@TÝ@Eþ@X£@HÈ@K‹@X¥@E[@FŠ@E«@Es@X¦@X§@G’@%IA@X¨@QG@X©@Xª@Rò@Mi@Eæ@M²@Q@LS@X¬@Ld@X­@R„@X«@Uƒ@%X¯@X®@X°@X±@X´@X³@X²@Få@Xµ@NÊ@X·@N»@X¶@NÝ@F™@M@X¸@%Fž@X¹@Kø@Q¢@UM@PC@Xº@S•@SÑ@Jf@X»@X¼@X½@X¾@Mž@Pì@S@%X¿@KÜ@XÀ@I£@S¯@XÁ@LÁ@I@Tœ@Sò@Oñ@HO@XÃ@XÄ@Q„@RU@UÞ@%XÂ@UŒ@J³@Qy@R¹@KB@Le@Uz@XÊ@XÇ@KT@XÉ@XÈ@XÆ@RL@XÅ@TŸ@%Pµ@XÎ@XÏ@T˜@XË@Pø@NÌ@XÍ@Jw@XÐ@Io@XÑ@XÌ@TT@M€@XÒ@HU@%XÓ@XØ@XÔ@N‰@X×@Sà@XÖ@NÃ@XÕ@XÝ@XÚ@Ug@XÙ@XÛ@XÜ@XÞ@Xß@%O‹@Xá@Xà@Xâ@Mä@Xä@Rê@Uè@Xã@Xå@Xæ@Xé@Xç@Xè@Ed@Xê@KÙ@%Xë@Xì@Hò@JA@RX@Xî@Oò@Eô@Oƒ@Jì@N¯@Xï@E¾@Xð@L^@Xñ@Y[@%Xò@Xó@Xô@Xõ@Xö@X÷@Ho@FÕ@Fð@E¨@RM@HÅ@Lu@FÈ@Q\@GÝ@I¢@%Md@Eç@P«@M‹@IM@Eí@JÞ@I@G¸@Oz@Xø@E’@NÔ@Ih@Px@Rï@F†@%Xù@H‰@H‚@Xü@Oé@Xú@Iß@J„@JV@Xû@Xý@E¬@YA@K@Uô@RD@YB@%Gø@KY@YC@K“@R¸@YF@YE@YG@Qü@O©@\~@I‡@YH@YD@Lz@YI@YJ@%UV@YK@K`@F @FV@F²@Mv@Iû@IŠ@YL@IY@YM@YN@Q‰@Lï@M_@YO@%H®@E]@HJ@YP@SÀ@Hq@YQ@YR@YS@S®@YT@h€@Kî@YU@Q]@Lk@IÎ@%J†@O¹@EÈ@LÆ@H‹@YV@H^@YW@M”@M§@Eé@Uº@YX@TC@YZ@T²@YY@%HÝ@TC@Gm@Sû@UÀ@UÀ@JŽ@L¢@Y\@Y]@OÝ@Ee@Y^@Y_@Y`@GJ@RZ@%Ya@Er@Yg@T¹@E¿@Yc@PÕ@Rb@MF@Ye@Yf@GH@Yh@Yd@Yj@Yb@Yi@%Yk@Yl@O–@Q³@O@Ym@Yr@Yq@J¬@Hþ@Yp@Eo@Yo@Pr@Yn@L@Ys@%E@Yw@QM@Yt@Pt@Tñ@Y|@Y{@Yz@Yv@Yu@Yy@Yx@O_@Y„@Yƒ@Y}@%Y‚@IŒ@Y~@Y@Y@Pž@Y…@Y‡@NÓ@Y†@Yˆ@Y‹@YŠ@Y‰@GÑ@YŒ@Y@%YŽ@Y@Y@Y‘@Y’@Y“@Y•@Lè@Y”@O„@Y–@IÏ@R@Y—@Y™@Y˜@Qß@%Yš@Eg@GA@MG@Lg@Ej@H[@L£@JR@Y›@I‹@G­@JK@Jæ@N}@Yœ@SË@%H“@NF@J}@ES@Gk@Ou@Y@Jµ@Y @QÇ@YŸ@Yž@Y¡@Hœ@R¯@JD@KS@%I`@I‚@MÅ@Y¢@T¾@Fï@L…@Y¥@Y¤@Y£@J^@Y¦@Ik@Y§@Y©@LÊ@Y¨@%Tƒ@HÞ@Yª@N@Y«@Jo@E@E`@Y¬@Y­@E©@HÚ@Y®@P¢@M¯@R_@KW@%Y¯@K’@E·@HP@U@Jí@MO@Kd@UO@HT@QZ@EQ@Y°@EÞ@H±@Eø@Hà@%Në@PÁ@Fš@L]@Y±@Y²@KÇ@Y³@NÛ@N§@Yµ@Y´@T­@Sl@Y·@Y¸@Y¶@%U¯@Ub@Yº@Y¹@Pé@Y»@Y¼@Y½@Y¾@Y¿@YÀ@YÁ@GÐ@P[@RÖ@Ff@K¯@%Ud@TK@QÙ@KG@YÂ@T¿@YÃ@PÍ@YÄ@VA@VQ@F@Pá@YÅ@Kc@Qå@FÚ@%YÆ@T¬@EÓ@U—@L›@YÇ@Gæ@NB@Sk@YÈ@YÉ@YÊ@Kn@YË@Hº@FÒ@YÌ@%Rà@JÔ@YÍ@SÇ@YÎ@S…@YÏ@YÐ@YÑ@F_@YÒ@YÓ@YÔ@YÕ@YÖ@Y×@F@%Eá@YØ@MÍ@QY@N†@Nˆ@Rœ@Id@I^@YÙ@YÚ@I]@Gr@YÝ@Lê@Ja@YÜ@%YÛ@N`@H£@Yà@Yß@YÞ@I‘@Eå@P³@Yá@Ll@Hû@Gè@Yä@Yâ@Yã@Yå@%F˜@Yæ@Jp@Nõ@Yç@K]@FT@Lt@Yè@Hø@Yé@Uà@Fç@GÊ@P—@K×@Yê@%Fa@LE@N£@H•@Yð@Yñ@FO@Yì@L`@Yï@Yî@J®@Yí@Yë@PV@Yò@Y÷@%Yý@Yõ@LÖ@Yú@Nð@Yô@Yù@PŸ@F­@P@Yó@GÌ@Yü@Fn@TÞ@Yö@Nq@%Yû@UB@Yø@Yþ@ZB@RV@ZL@ZI@ZH@KÊ@ZJ@KÕ@GÇ@R˜@ZP@ZA@ZD@%ZG@ZC@U”@ZK@ZM@NÎ@S¸@L@ZE@ZO@ZN@IN@K°@S„@FC@ZF@ZR@%ZS@ZU@ZQ@Ti@ZW@Z\@Mã@UD@ZZ@P‘@ZX@ZY@ZT@ZV@J±@MØ@Më@%Hs@Z[@KÍ@Ie@L@Rv@S£@Zd@UT@Z^@QE@Zb@H_@Zc@Ne@Nx@Za@%Ze@Zf@T@N×@Z_@Oà@Z`@Z]@Kh@UJ@Pn@T¸@Zs@Zh@H³@Zn@Zk@%Zl@Tr@Zo@Zr@Zm@R‚@Zp@Zj@SÈ@P˜@Zt@Zu@Gc@Zv@Zi@R²@EÆ@%G÷@Zg@Zq@Z{@Zz@Z€@Z~@Z@Zy@Z@Z„@Z|@Qã@Z…@Z†@Zw@L¾@%Z}@Hý@SŽ@Zx@Jv@Z’@Rã@ZŠ@Z‹@ZŒ@Zƒ@Z‘@MÛ@MÓ@Z‚@N¶@RŠ@%Z@LI@Z@O­@Z@Z‡@ZŽ@Z“@H¨@Z‰@Sô@P|@Zˆ@Z™@OJ@U[@Zš@%Z˜@Z–@Z”@Z•@UÏ@Oü@SÂ@Qu@Z›@Z—@Zœ@G¾@Nl@Z£@Q¥@Z¡@Z¢@%N¤@Z @ZŸ@Zž@Z¤@Z@Z¦@Nò@Z¨@Z§@QS@Z©@Z«@Zª@MÆ@Z­@Z¯@%Z¬@Z°@Z®@Z±@Z²@Z³@Qa@T`@Z´@Q@Eº@IÞ@M @Zµ@Z¶@M@U•@%Z·@dn@Z¸@TÙ@Z¹@Gd@Zº@Z»@O’@Z¼@Z½@Z¾@P’@EÏ@LD@GÜ@EŒ@%Z¿@MÊ@e]@P­@EË@Iñ@ZÀ@Gê@I@UÕ@ZÃ@ZÁ@ZÄ@ZÂ@ZÅ@T·@Li@%Mz@Lv@ZÆ@ZÊ@LH@H÷@ZÇ@ZÍ@NÀ@ZÈ@Nã@Mf@ZÉ@ZË@ZÎ@GQ@ZÌ@%Jg@I@ZÜ@J…@N~@ZÚ@O¦@ZÓ@L†@K@Qà@ZÑ@Iá@MS@ZÙ@J¡@ZÔ@%ZÛ@ZÕ@ZÝ@ZØ@SE@Oº@ZÒ@S¢@ZÐ@Oa@KÛ@Z×@ZÏ@PE@R\@Ký@ZÖ@%Nâ@Mw@Hå@OÅ@Nå@Zß@Zä@Zà@P@Zå@Ož@Uµ@M×@Zæ@FØ@Zâ@G¶@%Zã@T‰@ZÞ@OÛ@K‚@U±@Zá@O@T@Hö@S‡@R¨@Zé@UU@S @U}@Zè@%Zê@Zç@LA@UF@MÝ@R…@K³@Zõ@Zô@NÖ@T“@Zï@M@OÀ@TÀ@Zí@MÃ@%La@Zò@Nì@Zì@Zñ@Lú@Zë@MD@Jã@Zó@Uæ@KO@K@Zð@G¨@L¬@HÕ@%UÐ@J`@Zî@UA@MÁ@TÍ@Zö@T£@Z÷@Zù@Ný@[B@Zú@Zý@KÏ@I¹@Zþ@%Lò@LF@Iª@M`@Zü@Zø@Kò@JÕ@Zû@[A@O~@[D@KØ@[K@[E@T£@[L@%[I@[H@[F@[J@MÈ@R@[C@[G@NI@P£@NŒ@[M@TÍ@MË@[P@[N@HÑ@%[O@[Q@Uõ@Qï@Jt@[Z@SÞ@[W@[U@SH@[S@UÛ@Nz@[X@[Y@Qá@Nb@%Lw@Sr@NÇ@[R@[V@[[@QN@[b@[^@[_@I›@[T@[]@[`@[a@[\@[e@%[f@UC@[g@OÖ@[d@OÍ@[h@[c@[k@[i@[j@[l@[n@Uö@[m@[r@[o@%[p@[q@[r@[t@[s@R@[u@[v@G{@[w@[x@[z@[y@[{@H@KÅ@H¯@%EÇ@J÷@[}@[€@[~@FG@L\@[‚@[@KŠ@[@G¥@[ƒ@Q±@OÏ@JÉ@Iò@%G°@FÌ@[„@G|@Kó@IQ@[…@[†@[‡@EÊ@Xí@FŽ@Q@GÛ@K€@Rä@Nƒ@%FN@[‰@KÑ@[Š@U@TÏ@QA@QÂ@[‹@Nü@I‰@N¥@E‡@[Œ@EÍ@M¤@Hˆ@%[@[@[@JÏ@[Ž@M{@[‘@JÜ@[’@M«@[“@Qe@[•@[”@Kw@Eb@M@%L{@Mj@Fé@Mg@Gì@[–@O£@[œ@[—@[™@[›@Oç@Fþ@[@RŽ@FÑ@E¦@%Tè@Gé@LY@[˜@[£@[¡@G©@G¬@[¤@Fb@U@Hè@E³@[ @K»@Rë@[¢@%[Ÿ@Q“@OŸ@L˜@[ž@RQ@FQ@H°@[¥@[¦@K²@Qê@TÃ@[¨@[«@[­@[©@%OÎ@[¬@[ª@[§@Um@P @Q²@L¶@Iø@I“@[°@[¯@G•@Jø@F¨@Lƒ@[±@%[³@OF@[²@NÑ@O«@O¾@Ml@Kâ@[µ@[´@[·@[¶@LÇ@PÌ@P“@Jþ@[¸@%L²@[¿@RC@[¾@[½@[»@[º@[¹@LV@[¼@[À@QR@[Á@Kþ@R¦@QÌ@[Â@%[Ã@[Ä@I¶@N¼@Jm@[Å@[Æ@G@NÒ@[Ç@S—@W@I_@Qf@KÃ@Fõ@V¬@%Ea@F…@KÄ@GÔ@[È@Tý@O¤@Uó@[Ê@Hn@G»@G\@[Ë@F‹@[Í@[Î@El@%IÆ@GF@Ef@Hù@[Ð@MB@N¢@[Ò@[Ó@[Ô@M–@Pð@[Ñ@SO@[Õ@Fh@NQ@%PÐ@F¼@EV@TÁ@Pô@[×@R]@[Ö@KK@T€@G^@Q¦@R‘@[Ù@Fv@[Ø@[Þ@%P‹@Lc@[Ü@EW@[š@[à@J¦@R€@Tß@Ex@F´@[Û@R^@[Ú@[ß@Tò@Jâ@%Ox@E¢@IÙ@G¹@Fr@OÒ@[â@RÐ@[á@[Ý@Pa@TÉ@[æ@Nè@[ä@[é@[ò@%[ã@[ð@UÍ@J@[ô@RÙ@[ñ@I€@PJ@NÁ@H›@Mê@OØ@Ná@[í@Tó@[î@%[ë@[ê@[è@[ç@[ï@[å@Kê@Fê@G§@Qñ@Gs@PT@JÁ@[ó@RÑ@GÓ@Eú@%Qñ@Pã@MÌ@G›@[õ@H¿@RB@RÞ@HV@Râ@[ú@UÚ@Kž@Fg@GÞ@Mà@[ø@%PÖ@I«@JÚ@[ù@[ö@Hñ@[÷@[û@IÀ@Hy@[ì@Sm@SK@[ý@Gq@Mˆ@Qó@%[ü@PF@\K@Nw@\A@\D@\B@ND@\H@G˜@[þ@[þ@\E@PÚ@\G@RÌ@S¼@%N’@\C@RÆ@P¬@X¤@RÓ@HX@\F@Qä@F‚@SY@Sa@\L@I­@\J@\M@\I@%N±@\`@S†@UÊ@\P@Nñ@\V@\_@KZ@\W@\Y@TÂ@\R@Kï@N©@\^@\T@%\]@\X@E@\[@Su@T”@U¶@Th@\O@\\@O÷@\Q@Mý@\U@GÅ@K @\N@%\Z@Oí@Sp@Qc@Hm@\c@\a@\d@Sú@\S@\e@\b@\q@T§@\i@Rí@\o@%Lº@Q×@R•@\k@UÅ@\p@SL@Tâ@\s@\r@Jß@R|@M“@\n@\l@T¢@Ek@%Sï@O®@R³@\m@I·@\h@\j@\g@Rº@Ga@\t@\u@LB@KR@Ië@Tv@UÇ@%\†@\y@M~@\…@\„@S@QJ@\€@\v@S²@\‚@\|@\w@\z@\ƒ@M¹@\@%G–@Nú@RÛ@\}@TŒ@\{@HH@h@\@\‡@\@\@\‰@\”@\’@\Ž@\@%K\@M·@\Œ@\Š@S»@\•@IO@\@\—@\™@\“@S‹@If@\‹@\‘@S›@Hd@%\–@\˜@HÜ@Eò@Ko@\ˆ@\š@U…@\Ÿ@\§@FÏ@Ni@K¾@\œ@\¦@\¡@\¥@%E‰@KÂ@\£@Ey@UÔ@\¢@\¤@\›@\¨@\©@\ @\¯@O²@Oõ@\¬@\«@Uî@%\ª@\°@MU@\ž@\­@\®@\²@\±@T]@\¶@\µ@\³@\·@\´@R‹@\º@U†@%\»@M¦@\¸@Sb@\¹@\¼@QÅ@\¿@\Â@Rî@NÞ@\À@\Á@\Ã@\Ä@U÷@\Å@%Lµ@E—@K@J @Kö@\Ç@\Æ@\È@Q}@Lø@Nû@\Ì@\Ë@\Í@F÷@T‡@\Î@%MN@\Ð@\Ï@\Ñ@\Ò@\Ó@HØ@Ew@ML@E±@GØ@UŽ@JŸ@Hä@IU@\Ô@\Õ@%I™@\Ö@\×@\Ù@\Ø@OB@S¤@He@I’@\Ú@\Ü@Ns@\Û@\Ý@\Þ@\ß@\à@%\á@\â@\ã@\ä@TY@Gí@\å@Ié@PÀ@\æ@HI@X@J[@\ç@\è@Ii@Iõ@%L—@\é@GN@\ê@S×@Fâ@\ë@\í@\ì@\ï@\î@\ð@HŽ@GV@\ñ@\ò@E¹@%\ó@\õ@\ô@Eœ@L¤@Eû@Un@\ö@SM@M„@I @P^@Pj@\ø@NÄ@N‚@\ù@%U^@\÷@E­@Eè@\ú@]E@R´@\þ@PÒ@PÈ@]F@G¤@IL@]D@]B@\û@UÙ@%\ý@L@U˜@\ü@]H@]G@Oø@Gý@N­@]A@]C@Pu@E…@Sì@]M@]P@FZ@%Nª@F\@]R@E„@FÆ@]K@]Q@No@JX@]I@]L@Fî@M¸@Qý@T×@FJ@UÆ@%]U@]N@]S@]O@N‡@FÊ@MK@NV@ID@]V@]T@Fó@]J@OW@]X@EÚ@]^@%]]@JN@R¶@TP@M˜@]W@EÜ@P·@OÔ@]Z@Kr@]\@R¬@]Y@P¼@G´@][@%Jr@Fü@LÉ@F@]f@]d@Eê@]_@]c@Fk@Fë@J@UÌ@JŒ@]b@K~@E§@%MA@]e@]j@]`@Hk@O}@]g@]a@]h@]k@MÚ@]i@UP@]r@O‘@JE@]o@%]s@Nt@Jˆ@]|@]u@]q@RÇ@]x@]t@J¿@]{@]‚@Uá@]~@]w@L¥@]@%]p@]y@]ƒ@UN@]v@]„@Gw@]@H”@Hê@KF@]z@]l@]}@J‘@]€@E–@%TA@Gi@JÀ@]m@H’@Q˜@Qd@]‡@Pä@GŠ@]™@]’@Rz@EÒ@]Œ@]˜@NC@%Q @]“@IP@]@IE@]…@]n@HÆ@]š@]Š@]–@]•@]‹@]”@Lˆ@]‘@]—@%MR@QU@Só@]Ž@]‰@O½@]@]†@H½@]ˆ@]@Mk@L@G[@]›@Tú@]¥@%Gü@FÎ@]@MÄ@JM@]¨@Rq@Sv@]œ@] @]¢@H¾@]ž@T—@]Ÿ@]¦@]§@%]¡@Næ@R©@HW@]³@K¢@RJ@]£@]¤@G£@M¡@]«@]±@]¯@O·@]·@]¬@%]­@]´@Kx@O¼@M®@TÐ@PÄ@Uu@]¶@Ií@T¡@PŽ@OX@Tà@On@NŠ@]°@%]²@Ms@]µ@]®@]©@]ª@Tú@JÂ@]Ã@]½@MÀ@FÂ@JÒ@]Ç@]¾@L“@]¼@%TF@]¿@]º@]¹@]Â@]»@U @]À@H‡@]¸@]Á@]Å@]Æ@Tº@]Ë@]É@NK@%]Î@U‰@]È@]Ê@]Ì@KÐ@P¾@]Ï@JÎ@]Ä@]Ô@]Ñ@]Ó@]Í@]Ð@S€@P~@%QÒ@U£@]Ò@]Ö@MÔ@PU@]â@]Õ@fX@]Û@Q‡@]Ý@]×@UP@]Ø@]Ù@]Ú@%]Þ@]Ü@UÑ@]ä@]à@]ß@R°@S\@]á@OÞ@R®@]ã@F[@]å@]ç@]æ@Sê@%]è@K–@]é@G…@Ke@Jõ@Ts@Tj@L¼@]ê@I}@OË@M­@Oî@]ë@]í@]î@%Ha@]ð@]ì@RÍ@]ï@Gˆ@I×@Rž@MÑ@]ò@P™@]ó@SŒ@]ñ@]÷@U‡@]ø@%]ö@]ô@]õ@Sî@]ú@TO@]ù@G_@Mæ@Sî@Gï@Iƒ@]ü@]ý@Lo@^B@T@%h…@^C@KÝ@]û@^A@Tê@SW@]þ@GB@T @^D@LL@U@^G@^E@F@^F@%R@^H@Oh@N¿@T»@^J@GÕ@^L@^M@^K@IÕ@Nø@^P@^S@Jy@^N@^Q@%PG@^R@Wû@^U@Lf@TÎ@^O@^V@Tæ@W@^T@^Y@^W@^X@^Z@^[@JÙ@%^\@^]@S|@^^@L‡@^`@^_@^a@^b@S©@EÌ@P–@^c@^d@RÝ@Ly@^e@%^f@^g@Gg@J½@^h@Uo@UÝ@^i@Sü@Is@U·@J¯@Pš@UÄ@H{@FR@QX@%^j@F¢@TŠ@^k@ST@^l@^n@^m@^o@^p@OÜ@^q@^r@JÅ@L§@^s@^t@%HR@^y@^u@NZ@^v@^x@^w@^z@QÛ@^{@Rt@NÏ@PÜ@^}@^~@^|@J{@%JÛ@Lž@^€@Rþ@^@Po@TÖ@^‚@^„@^@JQ@^ƒ@^…@N@^†@^‹@^ˆ@%IÅ@OÐ@OE@^‰@^‡@PO@SÝ@^Œ@LZ@N•@QŸ@^Ž@^@^@Oe@^’@^‘@%^“@Ma@^–@^”@^•@QË@^—@Ln@Gƒ@Eý@I±@Mé@NL@Jù@^š@^œ@^™@%^@Lš@^˜@^ž@S™@M]@^›@^¢@^Ÿ@^¥@K™@^¡@^ @L¹@Pf@^£@^¤@%^¨@^¦@F·@HÛ@^©@Eë@^§@P÷@N\@^¬@^ª@^­@^«@^®@^¯@TS@LØ@%R£@RŸ@^°@^²@^µ@^±@^´@Sñ@OR@^¶@K[@^³@PŒ@^¼@^¹@^»@^·@%^º@^¾@^¸@Qˆ@hƒ@^¿@RŒ@^½@PM@^Á@^À@^Â@^Ã@J¹@RI@^Ä@^Å@%^Æ@Nd@^Ç@TR@^È@IÂ@^É@^Ê@^Ë@^Ì@^Î@^Í@LÔ@^Ï@^Ð@^Ñ@^Ó@%^Ò@^Ô@^Ö@^Õ@^×@T•@^Ø@Sæ@KU@Kf@R§@^Ù@E™@EÀ@U×@^Ú@E¶@%MX@^Û@Xþ@Ec@F|@H @Ig@E|@We@EU@Fw@^Ü@^Ý@^á@^à@^ß@[|@%G®@^Þ@U@G‹@NÜ@G«@^ã@^â@Mr@P†@Iþ@Uš@^ä@Lð@Q´@^å@Rý@%H¹@^æ@^é@^ç@J©@NT@^è@^ë@PÝ@^ê@PÔ@^ì@^í@^î@^ð@^ï@N @%Qq@U°@L´@^ñ@^ò@^ó@^õ@^ô@PÎ@^ý@M—@^÷@^ù@^û@Tá@^ü@^ú@%QB@^ö@^ø@I¿@NJ@_A@^þ@_B@Q‚@Sý@UI@_C@LG@_E@Qt@_D@T¤@%_J@_L@_M@P‰@_K@_H@_F@_G@_I@_O@_N@RO@_P@_R@_S@_T@_U@%T¤@_Q@_W@_V@_X@K·@_\@_Y@_Z@TG@Sª@S~@_[@_]@_^@__@_b@%_`@_a@_c@_d@_e@_f@_g@Sš@FK@Fè@_h@FY@EK@_j@_i@_k@Eï@%J°@L»@_l@_m@R™@R¤@N@S–@_n@_o@_r@_p@_q@_s@IÚ@_t@_u@%hh@_v@_w@_x@MÇ@_y@Sº@PW@Qµ@Gt@_{@_}@_|@Me@HD@\É@_~@%K„@_@Iã@H@_€@S÷@_@Fu@P€@Ft@Fx@_ƒ@P‚@HG@_†@_…@_„@%R¼@M¢@ER@_‹@QÊ@FB@Nj@_‡@_‰@_Š@_ˆ@_Œ@_@N_@I¥@Gª@_Ž@%_@_@_“@Rl@Js@_”@J–@_‘@_’@_—@_–@_•@_™@_˜@_š@_œ@_›@%Ur@M°@R}@_@O›@_ž@_Ÿ@_£@_¡@_¢@_ @_¤@_¥@SP@_¦@Pí@_§@%FÁ@_¨@E°@UÉ@NM@J‚@_©@Q»@E€@_«@I[@_¬@_­@FÓ@LÃ@_°@_®@%ME@T´@RH@LÂ@J¾@Pß@_¯@_±@_²@Iv@_³@I„@Jï@Si@R¿@_´@_¶@%_¹@ON@_·@Q•@_º@SV@_µ@Q{@O±@RÒ@T[@_¸@_»@Mø@P}@_½@_¾@%_¼@Hz@_Ä@_Ã@Jb@_Å@_À@_Æ@_Á@Kœ@_¿@_Â@_É@_È@I´@_Ç@Hª@%_Ë@_Ê@Q°@_Ì@Lœ@_Í@Mð@_Î@Q¹@QL@_Ð@_Ï@_Ñ@HS@IX@Fc@_Ó@%SÒ@Q’@NØ@Oë@HŒ@U\@_Ø@LÜ@Se@_×@Lë@E¡@_Ö@_Ô@O‰@Iù@M¿@%Lq@US@RØ@_Ú@Pç@Mu@P®@O‡@_Û@R†@K§@E‹@_Ü@_ß@_Þ@Uª@O×@%_à@Tõ@Pú@US@_á@Sj@_â@U]@Tc@SÐ@Eñ@FÃ@_ã@FX@Hí@Mº@_ä@%Lp@Mƒ@Tµ@_ç@P@LŠ@_å@MŸ@_æ@Kß@Iu@Rd@_è@Gô@_é@GÄ@Gú@%P‡@_ê@_ë@MÏ@R–@_ì@Sf@F’@_í@Gj@_ï@_ð@M¾@OÇ@_î@OÕ@N”@%HÔ@_ñ@R¾@_ó@H‘@RT@P¸@P›@_ò@_õ@_ô@N˜@_ö@O\@_ø@K†@I†@%_ù@G@_ú@N‘@Jý@Qi@T™@_û@O°@Ké@_ü@_þ@`A@_ý@P¦@`B@Je@%Pª@I§@`C@`D@Už@`G@`F@`I@`H@`J@Rð@`K@EÝ@`L@`M@`O@`N@%`Q@`P@`R@`S@Iç@`T@fÁ@Gn@`U@`V@Tk@MP@`W@`X@QÈ@`Z@`[@%Hï@`\@Iq@`]@Eõ@T\@R‡@`^@TÕ@`b@QÏ@`a@``@`_@Iµ@Sç@`e@%OA@`f@Gà@Rô@OÙ@`h@F~@`c@`g@`d@In@`l@JÇ@M›@F§@K@`k@%`j@Rõ@`i@KE@K|@IÐ@FÉ@`m@T„@PH@SN@`s@`q@`r@`p@`n@`o@%U›@OQ@U¤@`w@`{@`z@Nà@LÌ@HC@`u@`|@`y@`x@`t@`‚@`v@Fò@%TÊ@Q@Jû@`€@P\@G¡@Qè@Iè@`@O¶@I¨@`~@`@`}@`ƒ@Hu@JØ@%`‡@`…@`„@TD@`Œ@`Ž@`†@`‰@`‹@`@OS@WŠ@`Š@`ˆ@Q|@TÊ@`’@%Kì@`@`@`‘@`”@`“@Q«@`•@Rp@OL@`–@`˜@`—@Mþ@Qò@`š@O™@%`™@`›@`œ@Lî@Rª@`@`ž@Fo@`Ÿ@Oð@Uç@N…@` @Hž@OÌ@SÉ@`¡@%L©@LK@MY@K÷@OÈ@Kû@`¥@`£@`¢@R«@KÔ@`§@`¤@`¦@`«@`ª@`©@%`¨@`¬@`®@Fl@Q¼@`°@`¯@Tq@Q`@`±@H„@`³@`´@T’@QŒ@QK@`²@%NÅ@`µ@`¶@`·@`¸@FÇ@RÂ@Hú@Qþ@FÛ@`º@G½@Kg@`¹@`½@Lù@Iâ@%Oµ@G¦@`¼@OG@Lx@F€@Ió@Oó@`»@GŸ@Hw@Lô@Jð@U’@`À@QH@Gh@%`Á@NY@`Ã@Lä@L½@`Â@Iô@Uc@F¹@`¾@`Å@`Ä@`¿@Fˆ@`É@`Ì@F¿@%`È@`Ð@`Æ@Pm@Lç@N÷@`Í@GW@`Ê@`Ë@H@Rh@`Ç@Jä@Jó@Iö@Tí@%`Ï@St@`Î@JJ@GË@Të@Pp@`Ü@`Ú@`Ø@`Ò@`×@Q£@H€@`Ñ@`Ù@`Ý@%HË@JS@MÉ@`Ó@`Ô@`Û@TÓ@T¦@`Ö@IÜ@H@`Õ@K—@S}@G“@H¥@J›@%`Þ@`á@`ß@F‡@`è@`à@`ã@J€@`ç@`â@HN@Lü@Uk@Nš@`æ@H`@`ä@%Kª@HY@`é@`î@`ê@`å@`ì@Ræ@Ok@`í@`ë@[Ì@U¨@N“@Iä@I÷@`ò@%`ù@`ô@`ø@`ö@`ï@`õ@`ó@Hf@GY@`÷@`ð@`ñ@Hh@Ss@RÚ@`ý@Hš@%QÔ@`û@`þ@aA@`ú@`ü@RÚ@`ñ@aB@aE@aD@Ss@Mš@Ki@aC@aG@aF@%aH@aJ@Uë@aK@Rx@aL@Q¿@aN@aM@Uú@Rs@aO@aP@aQ@aR@aS@Sœ@%P„@aT@aU@aV@aW@aX@TË@aY@Qn@aZ@a\@a[@a]@a^@a_@aa@a`@%ab@LN@Uï@FŒ@O‚@L™@Uy@U¥@ac@Z¥@ad@af@Mú@ae@ag@ah@JÑ@%ai@E}@aj@am@al@ak@an@ao@G±@U–@E˜@aq@ap@ar@at@au@as@%G@Oû@ax@ay@az@Mœ@Ji@Tù@a{@Oi@a|@a}@a~@U‹@T¶@a@a€@%Qö@Mµ@R @I…@G`@a@Fp@SÜ@a‚@Qæ@IŽ@aƒ@Iš@Oì@Tä@a„@a…@%a†@a‡@L«@N™@a‰@U¸@aˆ@a‹@aŠ@aŒ@Kµ@a@Ty@H»@aŽ@K‰@a@%a@SÊ@a“@a’@a‘@M¨@a”@H×@a•@a–@Sä@a—@a˜@a™@S¶@KA@JB@%U@NP@aš@Rg@Rj@a›@R’@LŒ@LÅ@S‚@I{@Ky@Lû@až@aœ@Pë@RÕ@%H¬@TQ@PN@Mö@a£@N›@J²@Rc@Rˆ@a¡@a¤@aŸ@a¢@P¶@Mc@Né@a @%a¦@a§@N«@Kã@a°@GO@Ht@PQ@Uì@Gã@Py@a¥@S^@M\@a¨@a©@L–@%aª@J´@L³@Ué@a­@a°@a¬@a«@RÄ@Mb@a¯@a®@RG@L¯@a´@a³@aµ@%QÎ@a²@K¤@a±@a¶@M¶@L @Ro@Rš@aº@a»@a·@a¸@a¹@QØ@a¿@a½@%Q‘@MŠ@P`@a¼@a¾@aÁ@Nö@aÂ@aÄ@Pv@aÀ@aÃ@aÊ@aÇ@aÆ@S_@aÈ@%aÉ@Tt@aÅ@aË@aÌ@aÍ@M½@aÎ@aÏ@aÐ@aÑ@aÒ@JG@SŠ@Qs@LÐ@EÃ@%M³@JH@Lj@aÓ@aÔ@J‰@aÕ@aÖ@a×@aØ@SX@Fj@Wx@bº@P”@aÙ@LX@%aÚ@aÛ@aÜ@N[@Lª@OÁ@O¸@Jc@K¸@aÝ@HŸ@aÞ@IV@aß@aá@TÛ@K‡@%S¬@aà@F{@aâ@Mü@T®@aã@aä@aå@aæ@aè@aç@LJ@aé@aê@aë@U´@%EÄ@aì@GÃ@MT@aí@SÅ@aî@Qš@aï@að@N½@Ir@aò@O{@JÝ@añ@aô@%TB@Oå@FÙ@Fƒ@IS@MÐ@aó@Nº@N]@PK@aù@UY@R×@J¸@bF@Sw@bC@%bA@a÷@aõ@aö@FÖ@J_@T°@MZ@Eî@aû@aú@aþ@bD@aý@aø@FF@aü@%Tz@KÓ@bB@bE@NÉ@bJ@Sö@bR@Pâ@bX@GL@bQ@bP@bK@T{@bI@bG@%Iw@M÷@bM@bL@bO@S³@HB@S³@Q_@bN@FÜ@Kb@bH@b_@bZ@K¡@Ià@%b]@b[@bb@T†@bc@b\@bY@b`@bW@bS@Qî@bU@ba@bV@bd@bT@T³@%RÉ@b^@bu@bn@GS@bg@F×@Ls@bh@LQ@Q€@bl@K¨@SÔ@bp@Qj@Té@%Kl@Qm@HÌ@bq@be@bt@bi@bv@bj@bk@T÷@bo@RÉ@bm@PÛ@br@T‚@%bf@bs@TØ@IJ@bw@Ku@O|@b…@b„@by@Gò@b‚@b~@Eù@UŸ@JY@Hß@%UG@bx@Pq@Nr@b@b|@Oy@Ql@b@bƒ@TN@PÙ@b{@b}@Pà@b€@bz@%Sø@O“@Oã@P•@RY@b‰@b“@b@I²@bŠ@Jº@b‡@bŒ@P¹@bˆ@b@L”@%b‘@Pƒ@b†@Om@b‹@bŽ@Oš@b’@b”@b@R{@Pˆ@Kô@b–@Q‹@b•@R½@%b@Ul@U{@bœ@b›@b—@b˜@Tš@bš@T¨@Sø@O¡@b™@N‹@F^@TÑ@b @%b¥@R÷@b¤@S¨@b¦@b§@Ue@bž@b©@T‘@b£@b¡@bŸ@b¢@PÞ@Tð@QÓ@%b¨@b°@b¶@b·@bª@J’@b´@b¬@b®@b¸@b­@b±@Lì@Q­@b²@bµ@b«@%O¿@b¯@Lñ@TZ@I˜@Fá@b³@Sù@b»@b¿@b½@O»@b¼@Ní@b¾@bÀ@bÁ@%bÄ@bÂ@Eh@bÃ@Oö@L•@Uâ@bÅ@Sí@P_@bÉ@T–@NÚ@L¿@bÆ@bÈ@bÇ@%\½@\¾@bË@bÊ@L¦@_‚@bÌ@bÍ@bÏ@J«@R`@Rû@bÑ@Or@RP@Uˆ@bÒ@%bÓ@KË@bÔ@Q¶@QD@Oª@bØ@bÚ@bÕ@O]@bÖ@U¢@b×@bÙ@bã@bÜ@bß@%bÛ@bÝ@bÞ@Oê@bà@SØ@Mù@bá@bä@U»@bé@bå@bè@UÂ@bæ@bç@Nf@%S¥@Ot@RN@bó@bï@U™@bí@NÍ@bî@bë@bì@bñ@bô@bò@bð@bê@TÜ@%bú@S¡@bø@bù@bõ@Rm@b÷@bö@Sè@R¡@bý@bþ@cI@SG@cB@cH@bû@%cF@cJ@QÃ@cC@cE@cG@cA@Nn@bü@cK@cD@HÂ@cN@cL@cU@cO@cW@%QÖ@cY@cQ@cR@cV@cM@Tô@cP@cS@cX@c\@Sè@cZ@c[@cc@cd@P@%QÆ@cb@U½@c^@ca@c]@c_@ce@cf@c`@R¡@ch@cg@SQ@ci@cj@ck@%cl@cm@KC@cn@co@Kˆ@E¤@cp@cq@Hl@K¥@cr@G€@M¥@cs@Kí@ct@%Jê@FÀ@cu@OT@cz@cx@Ré@cy@cw@J§@cv@c{@Oj@JT@c‚@c~@JW@%c}@c€@c|@c@cƒ@K@c@TÅ@c†@OZ@c…@TH@c„@I½@O`@c‡@cˆ@%H˜@I¤@c‰@Fø@cŠ@c‹@Ij@cŒ@OŠ@TM@c‘@c’@O¨@SI@c@OC@c@%c@E{@L@cŽ@c“@KQ@c—@c”@T^@Qº@c˜@QÚ@c–@c™@cš@c•@c›@%cž@c @c@cœ@cŸ@Pk@c¢@c¡@Tl@c¤@T¯@c£@c§@c¥@c¦@c¨@c©@%Mß@cª@c«@c¬@EX@FU@c­@Mò@Kú@c®@c¯@E»@Fû@c°@JP@Së@c±@%JL@c²@c´@NÐ@c³@H…@cµ@c¶@c·@H~@c¸@cº@c¹@c»@G}@c¼@S`@%c½@G·@LÑ@c¾@c¿@cÀ@Gš@OÄ@cÁ@EÉ@Pò@cÄ@IÒ@cÃ@cÅ@KÈ@cÂ@%J¶@G”@cÆ@cÇ@Pï@TÌ@cÈ@Jq@Eâ@Jš@K­@Lß@cÉ@cË@Mh@Of@Iº@%cÊ@cÎ@cÏ@Qv@Uã@cÍ@Oˆ@Iý@cÌ@N@QÁ@cÓ@Tû@IH@L°@PÓ@cÒ@%cÑ@QŽ@K_@GP@M@Mç@cÔ@cÐ@cÖ@c×@cÕ@N´@MŒ@Kv@J~@cÚ@O @%O¢@JË@cÝ@Hç@Fý@cÙ@cÞ@M‘@cÛ@cÜ@cß@cØ@IR@JO@Kƒ@IÖ@Uò@%Re@cá@F‰@cã@P²@Ic@Jè@cà@câ@KÁ@Q@Hó@cä@cò@Up@cñ@cí@%cê@cì@cë@cç@RF@cæ@N–@Nœ@Oœ@cè@cå@cï@cð@Gâ@U«@Oá@OM@%Tå@Us@Oâ@cô@có@Rù@c÷@cé@cö@cø@I|@cõ@Jn@M»@cù@M}@cý@%S@cþ@U¡@cú@M‡@dA@cû@dF@dB@dD@dC@dE@dG@Ju@dI@dH@NO@%dL@J×@dK@dM@dN@G@av@K{@dJ@IÛ@dO@dP@dQ@Qk@[ˆ@dR@dS@%Sþ@dU@dV@dW@dT@dX@E@dY@d[@dZ@J™@d\@FH@d]@d^@d_@d`@%LÏ@I”@da@Lh@SU@db@dc@U“@dd@de@df@dh@dg@di@Pd@dj@dk@%dm@dl@Iê@F¶@IÈ@I¯@Jñ@M£@Jë@J]@dp@I¡@KÒ@do@dq@Lb@Mï@%ds@dt@H@dv@It@Jô@FÐ@P{@dr@Hr@FA@du@Uø@KM@Pg@FP@dw@%Oý@dy@dx@Sž@P×@d{@Mî@O”@J­@OO@Gå@dz@Uf@O§@Fì@RÁ@d|@%d}@d@d€@N@d~@SZ@Ut@d@L|@d‚@U„@d„@dƒ@d†@d…@d‡@dˆ@%d‰@Fù@QQ@dŠ@SÌ@d‹@Jª@dŒ@QÉ@Pî@d@HÐ@d@Jx@Fß@QÞ@Lí@%Ua@Fú@d’@d‘@d@d˜@d–@d“@d•@d”@d—@MÂ@d›@LÍ@dœ@UË@d™@%dš@G„@P´@PÑ@d@dŸ@dž@d @L¨@M|@d£@d¡@d¢@d¤@Pü@d§@d¨@%d¦@d¥@U§@dª@d®@d«@d©@d¬@d­@d²@d¯@Sh@d±@d³@d°@dµ@Rö@%d´@d·@d¸@dº@d¹@d¶@d¼@d»@L¡@d¾@d½@d¿@dÀ@dÁ@dÂ@Gœ@PD@%SS@Sz@dÃ@dÄ@SS@dÆ@dÅ@dÇ@FS@dÈ@Mª@H—@dÉ@NU@dÊ@L±@GR@%dË@dÎ@K¦@dÍ@dÌ@H¦@dÏ@JZ@dÒ@Mn@dÐ@dÑ@dÔ@dÕ@Jh@dÓ@d×@%Q[@dÖ@G‡@dØ@dÙ@Nô@H·@U¦@dÚ@F“@dÜ@dÛ@dß@Pl@dÞ@Pþ@dÝ@%dá@dà@dâ@Tî@dã@dä@då@P©@Rá@dæ@dç@dè@M^@dé@Mt@dê@dë@%dí@dì@dî@aI@dï@Gß@Rå@HE@dð@EÕ@Gõ@HA@T~@Uß@IÍ@Ph@K©@%Fs@HÖ@dò@dô@dó@S]@dö@Nž@Iï@Sß@dõ@Jœ@d÷@NX@dú@dù@T©@%IÑ@KI@GD@Lr@dø@Kü@eD@eA@dý@KÚ@P»@dû@Q^@Hð@dü@eC@O³@%OÊ@Eã@S±@eB@HÍ@E¸@dþ@MÎ@GT@eE@Ow@JÓ@Fi@T…@eF@JÖ@eG@%U¬@eN@Tø@L÷@Lm@Iì@eM@J‹@F«@P]@H@eH@eJ@eK@eL@EP@F¤@%I¼@eO@eP@Ró@TU@eQ@Fã@TL@NÂ@h‚@eS@eR@IÌ@QC@TX@eT@eW@%Rn@eU@S[@H]@LÚ@Rk@eY@LÄ@e[@S{@eX@`E@M©@Q†@eZ@Pê@e\@%L’@HF@FÅ@Q¨@N¸@e^@e_@e`@M@I³@PR@En@ec@ed@Iž@ea@eb@%E•@Qb@L·@I•@EO@ee@eh@eg@ei@ek@QT@el@ej@Os@em@UH@R»@%Gó@U‘@GX@N|@en@eo@K®@ep@eq@er@P½@QI@et@es@M†@Që@H™@%ew@Q©@ev@eu@Qo@Qp@Sx@Qú@So@ex@P@e{@ey@P@ez@Qú@e}@%e|@PÂ@e~@e@e€@SF@S¿@My@RR@e@Gl@E£@Ei@Gµ@e‚@E†@e‡@%e…@Oô@eƒ@e„@JÌ@Iˆ@e†@eˆ@e‰@Lã@e@e@SJ@Kð@eŠ@eŒ@e‹@%eŽ@QÐ@e’@e@e•@Nc@S@e“@Ri@e”@e—@e‘@e˜@e–@E®@U¿@e¦@%e›@eŸ@e¤@ež@E×@eš@e @eœ@e§@e¡@e¢@e¥@e™@e£@e©@IÔ@S“@%N¨@e@O´@e¨@Hc@e¬@e­@Qƒ@GŒ@Lâ@HÀ@RK@L­@e¯@e±@e®@MÜ@%N€@e°@eª@e«@MH@e»@eº@e³@e·@TI@e½@e¹@eµ@e¶@e¼@RÀ@e´@%e²@Sc@Mo@U¾@HÁ@Qç@S”@eÂ@eÅ@F¡@eÉ@eÎ@UÒ@eÀ@S@Tï@eÇ@%eË@eÌ@eÈ@NW@eÃ@eÊ@eÍ@eÁ@KŽ@Sð@RW@Oæ@Rƒ@P±@H†@e¿@e¾@%eÏ@eÄ@Q÷@KH@UÓ@Tª@eÔ@eÕ@HÇ@R­@eÑ@Op@eÓ@eÐ@NE@eÒ@S½@%Ib@eÚ@Mp@Q—@Tþ@eØ@Tm@Sn@eÙ@L‰@e×@eÖ@eâ@eÝ@eÛ@eå@PA@%eÜ@eÞ@eá@eã@eä@J@eæ@eà@eß@eè@eì@eí@QÍ@eê@eé@LÈ@RÏ@%eç@eë@eï@eð@QV@eî@Sˆ@eñ@eò@eõ@eô@eö@NN@eó@RA@eø@e÷@%eû@eù@eú@eü@eþ@eý@fA@fD@fC@fE@fB@fF@Eƒ@Fª@fG@Qœ@fH@%K}@fI@FÍ@T_@MÙ@fJ@EÁ@fK@fL@fM@fN@fO@EÅ@Jé@T›@Qr@fQ@%fP@fR@Qw@fU@fT@fS@fV@fY@Sd@fW@f[@fZ@f]@f\@f^@KÌ@f_@%f`@fb@fa@G†@fc@fd@E‘@fe@ff@G¼@Oï@F®@Oè@fg@KŒ@fj@fi@%Iå@fh@H­@QW@fk@fl@Rr@fm@IØ@L„@Im@Oþ@fn@UÃ@fq@LÒ@fp@%Na@PÇ@J·@fo@Ia@Jl@G¿@K¹@F]@Lå@J“@fs@fr@I©@Nv@PZ@fv@%fw@fu@SÃ@G—@Kù@fy@N®@Là@fz@eV@f{@f@f~@f|@f}@f€@f@%UE@f‚@fƒ@OÚ@NÕ@Od@Q¤@Ep@GE@G @LM@Tw@f…@R·@R[@f„@JŠ@%f†@cT@fˆ@Qû@f‡@I—@IZ@IÝ@I»@R¥@O@J¼@Pi@KÖ@f‰@E‚@Gû@%fŠ@f‹@MÞ@fŒ@OK@fŽ@f@f’@f‘@f@f“@f@Mè@Nä@f”@NH@f•@%f–@KÆ@f—@[Ï@f˜@f™@fš@f›@f @fž@f@fœ@fŸ@f¡@f¢@f£@f¤@%FL@f¥@HÃ@FD@f¦@Há@f§@hR@F‘@f¨@f©@fª@J£@Sµ@f«@RÎ@Mñ@%f¬@f°@f®@f¯@TE@f­@Rw@f±@PL@f²@f³@Rç@f´@Qí@f·@f¶@fµ@%cü@T‹@f¸@f¹@fº@f»@f¼@f½@Nu@f¾@f¿@Oß@fÀ@HM@fÂ@Rü@Uw@%J\@LÙ@M[@IF@J—@G²@F°@TV@fÃ@MJ@S@UW@Qz@Uä@JÍ@fÄ@fÆ@%fÅ@N³@Gë@N³@Uv@fÇ@Pû@fÈ@S«@Jz@fÈ@QÜ@fÊ@Gþ@Gñ@TŽ@fÉ@%H¸@Jå@fË@LW@UÁ@UÁ@Fº@fÌ@Nî@fÍ@fÎ@fÏ@fÐ@fÒ@fÑ@Gç@fÓ@%fÔ@fÕ@fÖ@fØ@f×@fÙ@HŠ@fÚ@F¸@SÎ@fÜ@fÞ@fÛ@\Ê@Fµ@K£@RE@%J@MI@IW@fà@P¿@T¼@Iy@P§@U³@fâ@UK@fã@fä@fá@fè@fê@fç@%fé@få@Hb@fë@fì@fí@fî@fï@fñ@fð@fó@fõ@fò@fô@Rè@fö@QÕ@%I¾@f÷@fø@F½@fù@fú@K…@Fd@fû@fü@Rß@P¡@fý@Uå@Må@I¬@Lþ@%O…@Mõ@gD@Iü@S¾@gC@gA@gB@fþ@gG@gE@gF@gH@gI@gK@gJ@LÀ@%gL@gN@PX@gM@MÒ@H´@gO@SÚ@gP@N^@gQ@gV@gR@gT@gU@gS@gX@%gY@SÚ@gW@g[@LÕ@gZ@g\@g]@g`@g_@g^@ga@gb@J¥@gc@gd@Uœ@%ge@gf@RÅ@gg@gj@gh@gi@Eq@gk@gl@gm@gn@go@gp@gq@Lö@gs@%P@gt@gr@gv@gu@gw@gx@gy@gz@g{@g|@g}@g~@g@g€@g@g‚@%gƒ@g„@g…@g†@g‡@gˆ@JÈ@RË@P¨@gŠ@g‰@M´@g‹@gŒ@S‰@g@Mâ@%gŽ@Hî@Qô@g‘@g@g@g”@OŽ@g“@g•@R@g’@g–@g—@g˜@g™@gš@%UÎ@N·@S‘@Lé@g›@gœ@g @gŸ@g@g¡@OÆ@gž@g¢@g£@g¤@g¨@Oä@%PØ@g©@g¦@g¥@g§@Mx@UQ@g«@g¬@gª@g±@g­@gµ@g¶@g²@g¸@g´@%Uq@R“@g·@g³@g°@g¯@g®@g¼@g»@gº@Tn@g¹@UÈ@g½@g¿@SÕ@Qð@%T«@gÁ@gÀ@g¾@U`@SÆ@UL@gÂ@gÃ@gÄ@gÅ@gÆ@Gy@gÈ@M•@gÇ@gÉ@%gÊ@N¦@Kp@TÄ@gÌ@gÍ@Q¡@Tü@gË@Td@gÔ@gÓ@RÃ@gÒ@gÑ@gÏ@LT@%gÎ@Pº@gÐ@MÖ@gØ@gÖ@gÕ@g×@gÙ@gÚ@gß@gÞ@gÝ@Kç@gÛ@gÜ@Pý@%U~@gà@gä@QŠ@gå@gâ@gá@gæ@gã@SB@MŽ@gç@gè@gé@gê@På@gë@%Gz@gï@gð@gî@gí@gó@gì@gñ@gò@gö@Td@gõ@gø@gù@gú@Kñ@g÷@%Kz@P¯@gû@gþ@gü@gý@hA@hB@L}@hC@L}@hD@F—@hE@hF@hG@hH@%hJ@Qù@Qž@hI@Ló@hK@Q›@hL@Jà@S´@hN@hO@Ra@U_@hM@Ra@U_@%H§@hP@hQ@Nê@JÆ@hS@U®@Q§@hT@hU@hV@Fy@hW@^@M¼@QÝ@hX@%hZ@hY@h[@h\@h]@h^@h_@h`@ha@hb@hc@hd@he@hf@hg@Qª@O¯@%hi@PË@hj@hk@Lý@hl@hm@Qõ@hn@ho@hp@hq@hs@ht@hu@L€@hr@%hv@hw@hy@hx@h{@h|@hz@HÊ@h}@h~@_÷@h@iA@iB@iC@iD@iE@%iF@iG@iH@iI@iJ@iK@iL@iM@iN@iO@iP@iQ@iR@iS@iT@iU@iV@%iW@iX@iY@iZ@i[@i\@i]@i^@i_@i`@ia@ib@ic@id@ie@if@ig@%ih@ii@ij@ik@il@im@in@io@ip@iq@ir@is@it@iu@iv@iw@ix@%iy@iz@i{@i|@i}@i~@i@i€@i@i‚@iƒ@i„@i…@i†@i‡@iˆ@i‰@%iŠ@i‹@iŒ@i@iŽ@i@i@i‘@i’@i“@i”@i•@i–@i—@i˜@i™@iš@%i›@iœ@i@iž@iŸ@i @i¡@i¢@i£@i¤@i¥@i¦@i§@i¨@i©@iª@i«@%i¬@i­@i®@i¯@i°@i±@i²@i³@i´@iµ@i¶@i·@i¸@i¹@iº@i»@i¼@%i½@i¾@i¿@iÀ@iÁ@iÂ@iÃ@iÄ@iÅ@iÆ@iÇ@iÈ@iÉ@iÊ@iË@iÌ@iÍ@%iÎ@iÏ@iÐ@iÑ@iÒ@iÓ@iÔ@iÕ@iÖ@i×@iØ@iÙ@iÚ@iÛ@iÜ@iÝ@iÞ@%iß@ià@iá@iâ@iã@iä@iå@iæ@iç@iè@ié@iê@ië@iì@ií@iî@iï@%ið@iñ@iò@ió@iô@iõ@iö@i÷@iø@iù@iú@iû@iü@iý@iþ@jA@jB@%jC@jD@jE@jF@jG@jH@jI@jJ@jK@jL@jM@jN@jO@jP@jQ@jR@jS@%jT@jU@jV@jW@jX@jY@jZ@j[@j\@j]@j^@j_@j`@ja@jb@jc@jd@%je@jf@jg@jh@ji@jj@jk@jl@jm@jn@jo@jp@jq@jr@js@jt@ju@%jv@jw@jx@jy@jz@j{@j|@j}@j~@j@j€@j@j‚@jƒ@j„@j…@j†@%j‡@jˆ@j‰@jŠ@j‹@jŒ@j@jŽ@j@j@j‘@j’@j“@j”@j•@j–@j—@%j˜@j™@jš@j›@jœ@j@jž@jŸ@j @j¡@j¢@j£@j¤@j¥@j¦@j§@j¨@%j©@jª@j«@j¬@j­@j®@j¯@j°@j±@j²@j³@j´@jµ@j¶@j·@j¸@j¹@%jº@j»@j¼@j½@j¾@j¿@jÀ@jÁ@jÂ@jÃ@jÄ@jÅ@jÆ@jÇ@jÈ@jÉ@jÊ@%jË@jÌ@jÍ@jÎ@jÏ@jÐ@jÑ@jÒ@jÓ@jÔ@jÕ@jÖ@j×@jØ@jÙ@jÚ@jÛ@%jÜ@jÝ@jÞ@jß@jà@já@jâ@jã@jä@jå@jæ@jç@jè@jé@jê@jë@jì@%jí@jî@jï@jð@jñ@jò@jó@jô@jõ@jö@j÷@jø@jù@jú@jû@jü@jý@%jþ@kA@kB@kC@kD@kE@kF@kG@kH@kI@kJ@kK@kL@kM@kN@kO@kP@%kQ@kR@kS@kT@kU@kV@kW@kX@kY@kZ@k[@k\@k]@k^@k_@k`@ka@%kb@kc@kd@ke@kf@kg@kh@ki@kj@kk@kl@km@kn@ko@kp@kq@kr@%ks@kt@ku@kv@kw@kx@ky@kz@k{@k|@k}@k~@k@k€@k@k‚@kƒ@%k„@k…@k†@k‡@kˆ@k‰@kŠ@k‹@kŒ@k@kŽ@k@k@k‘@k’@k“@k”@%k•@k–@k—@k˜@k™@kš@k›@kœ@k@kž@kŸ@k @k¡@k¢@k£@k¤@k¥@%k¦@k§@k¨@k©@kª@k«@k¬@k­@k®@k¯@k°@k±@k²@k³@k´@kµ@k¶@%k·@k¸@k¹@kº@k»@k¼@k½@k¾@k¿@kÀ@kÁ@kÂ@kÃ@kÄ@kÅ@kÆ@kÇ@%kÈ@kÉ@kÊ@kË@kÌ@kÍ@kÎ@kÏ@kÐ@kÑ@kÒ@kÓ@kÔ@kÕ@kÖ@k×@kØ@%kÙ@kÚ@kÛ@kÜ@kÝ@kÞ@kß@kà@ká@kâ@kã@kä@kå@kæ@kç@kè@ké@%kê@kë@kì@kí@kî@kï@kð@kñ@kò@kó@kô@kõ@kö@k÷@kø@kù@kú@%kû@kü@ký@kþ@lA@lB@lC@lD@lE@lF@lG@lH@lI@lJ@lK@lL@lM@%lN@lO@lP@lQ@lR@lS@lT@lU@lV@lW@lX@lY@lZ@l[@l\@l]@l^@%l_@l`@la@lb@lc@ld@le@lf@lg@lh@li@lj@lk@ll@lm@ln@lo@%lp@lq@lr@ls@lt@lu@lv@lw@lx@ly@lz@l{@l|@l}@l~@l@l€@%l@l‚@lƒ@l„@l…@l†@l‡@lˆ@l‰@lŠ@l‹@lŒ@l@lŽ@l@l@l‘@%l’@l“@l”@l•@l–@l—@l˜@l™@lš@l›@lœ@l@lž@lŸ@l @l¡@l¢@%l£@l¤@l¥@l¦@l§@l¨@l©@lª@l«@l¬@l­@l®@l¯@l°@l±@l²@l³@%l´@lµ@l¶@l·@l¸@l¹@lº@l»@l¼@l½@l¾@l¿@lÀ@lÁ@lÂ@lÃ@lÄ@%lÅ@lÆ@lÇ@lÈ@lÉ@lÊ@lË@lÌ@lÍ@lÎ@lÏ@lÐ@lÑ@lÒ@lÓ@lÔ@lÕ@%lÖ@l×@lØ@lÙ@lÚ@lÛ@lÜ@lÝ@lÞ@lß@là@lá@lâ@lã@lä@lå@læ@%lç@lè@lé@lê@lë@lì@lí@lî@lï@lð@lñ@lò@ló@lô@lõ@lö@l÷@%lø@lù@lú@lû@lü@lý@lþ@mA@mB@mC@mD@mE@mF@mG@mH@mI@mJ@%mK@mL@mM@mN@mO@mP@mQ@mR@mS@mT@mU@mV@mW@mX@mY@mZ@m[@%m\@m]@m^@m_@m`@ma@mb@mc@md@me@mf@mg@mh@mi@mj@mk@ml@%mm@mn@mo@mp@mq@mr@ms@mt@mu@mv@mw@mx@my@mz@m{@m|@m}@%m~@m@m€@m@m‚@mƒ@m„@m…@m†@m‡@mˆ@m‰@mŠ@m‹@mŒ@m@mŽ@%m@m@m‘@m’@m“@m”@m•@m–@m—@m˜@m™@mš@m›@mœ@m@mž@mŸ@%m @m¡@m¢@m£@m¤@m¥@m¦@m§@m¨@m©@mª@m«@m¬@m­@m®@m¯@m°@%m±@m²@m³@m´@mµ@m¶@m·@m¸@m¹@mº@m»@m¼@m½@m¾@m¿@mÀ@mÁ@%mÂ@mÃ@mÄ@mÅ@mÆ@mÇ@mÈ@mÉ@mÊ@mË@mÌ@mÍ@mÎ@mÏ@mÐ@mÑ@mÒ@%mÓ@mÔ@mÕ@mÖ@m×@mØ@mÙ@mÚ@mÛ@mÜ@mÝ@mÞ@mß@mà@má@mâ@mã@%mä@må@mæ@mç@mè@mé@mê@më@mì@mí@mî@mï@mð@mñ@mò@mó@mô@%mõ@mö@m÷@mø@mù@mú@mû@mü@mý@mþ@nA@nB@nC@nD@nE@nF@nG@%nH@nI@nJ@nK@nL@nM@nN@nO@nP@nQ@nR@nS@nT@nU@nV@nW@nX@%nY@nZ@n[@n\@n]@n^@n_@n`@na@nb@nc@nd@ne@nf@ng@nh@ni@%nj@nk@nl@nm@nn@no@np@nq@nr@ns@nt@nu@nv@nw@nx@ny@nz@%n{@n|@n}@n~@n@n€@n@n‚@nƒ@n„@n…@n†@n‡@nˆ@n‰@nŠ@n‹@%nŒ@n@nŽ@n@n@n‘@n’@n“@n”@n•@n–@n—@n˜@n™@nš@n›@nœ@%n@nž@nŸ@n @n¡@n¢@n£@n¤@n¥@n¦@n§@n¨@n©@nª@n«@n¬@n­@%n®@n¯@n°@n±@n²@n³@n´@nµ@n¶@n·@n¸@n¹@nº@n»@n¼@n½@n¾@%n¿@nÀ@nÁ@nÂ@nÃ@nÄ@nÅ@nÆ@nÇ@nÈ@nÉ@nÊ@nË@nÌ@nÍ@nÎ@nÏ@%nÐ@nÑ@nÒ@nÓ@nÔ@nÕ@nÖ@n×@nØ@nÙ@nÚ@nÛ@nÜ@nÝ@nÞ@nß@nà@%ná@nâ@nã@nä@nå@næ@nç@nè@né@nê@në@nì@ní@nî@nï@nð@nñ@%nò@nó@nô@nõ@nö@n÷@nø@nù@nú@nû@nü@ný@nþ@oA@oB@oC@oD@%oE@oF@oG@oH@oI@oJ@oK@oL@oM@oN@oO@oP@oQ@oR@oS@oT@oU@%oV@oW@oX@oY@oZ@o[@o\@o]@o^@o_@o`@oa@ob@oc@od@oe@of@%og@oh@oi@oj@ok@ol@om@on@oo@op@oq@or@os@ot@ou@ov@ow@%ox@oy@oz@o{@o|@o}@o~@o@o€@o@o‚@oƒ@o„@o…@o†@o‡@oˆ@%o‰@oŠ@o‹@oŒ@o@oŽ@o@o@o‘@o’@o“@o”@o•@o–@o—@o˜@o™@%oš@o›@oœ@o@ož@oŸ@o @o¡@o¢@o£@o¤@o¥@o¦@o§@o¨@o©@oª@%o«@o¬@o­@o®@o¯@o°@o±@o²@o³@o´@oµ@o¶@o·@o¸@o¹@oº@o»@%o¼@o½@o¾@o¿@oÀ@oÁ@oÂ@oÃ@oÄ@oÅ@oÆ@oÇ@oÈ@oÉ@oÊ@oË@oÌ@%oÍ@oÎ@oÏ@oÐ@oÑ@oÒ@oÓ@oÔ@oÕ@oÖ@o×@oØ@oÙ@oÚ@oÛ@oÜ@oÝ@%oÞ@oß@oà@oá@oâ@oã@oä@oå@oæ@oç@oè@oé@oê@oë@oì@oí@oî@%oï@oð@oñ@oò@oó@oô@oõ@oö@o÷@oø@où@oú@oû@oü@oý@oþ@pA@%pB@pC@pD@pE@pF@pG@pH@pI@pJ@pK@pL@pM@pN@pO@pP@pQ@pR@%pS@pT@pU@pV@pW@pX@pY@pZ@p[@p\@p]@p^@p_@p`@pa@pb@pc@%pd@pe@pf@pg@ph@pi@pj@pk@pl@pm@pn@po@pp@pq@pr@ps@pt@%pu@pv@pw@px@py@pz@p{@p|@p}@p~@p@p€@p@p‚@pƒ@p„@p…@%p†@p‡@pˆ@p‰@pŠ@p‹@pŒ@p@pŽ@p@p@p‘@p’@p“@p”@p•@p–@%p—@p˜@p™@pš@p›@pœ@p@pž@pŸ@p @p¡@p¢@p£@p¤@p¥@p¦@p§@%p¨@p©@pª@p«@p¬@p­@p®@p¯@p°@p±@p²@p³@p´@pµ@p¶@p·@p¸@%p¹@pº@p»@p¼@p½@p¾@p¿@pÀ@pÁ@pÂ@pÃ@pÄ@pÅ@pÆ@pÇ@pÈ@pÉ@%pÊ@pË@pÌ@pÍ@pÎ@pÏ@pÐ@pÑ@pÒ@pÓ@pÔ@pÕ@pÖ@p×@pØ@pÙ@pÚ@%pÛ@pÜ@pÝ@pÞ@pß@pà@pá@pâ@pã@pä@på@pæ@pç@pè@pé@pê@pë@%pì@pí@pî@pï@pð@pñ@pò@pó@pô@põ@pö@p÷@pø@pù@pú@pû@pü@%pý@pþ@qA@qB@qC@qD@qE@qF@qG@qH@qI@qJ@qK@qL@qM@qN@qO@%qP@qQ@qR@qS@qT@qU@qV@qW@qX@qY@qZ@q[@q\@q]@q^@q_@q`@%qa@qb@qc@qd@qe@qf@qg@qh@qi@qj@qk@ql@qm@qn@qo@qp@qq@%qr@qs@qt@qu@qv@qw@qx@qy@qz@q{@q|@q}@q~@q@q€@q@q‚@%qƒ@q„@q…@q†@q‡@qˆ@q‰@qŠ@q‹@qŒ@q@qŽ@q@q@q‘@q’@q“@%q”@q•@q–@q—@q˜@q™@qš@q›@qœ@q@qž@qŸ@q @q¡@q¢@q£@q¤@%q¥@q¦@q§@q¨@q©@qª@q«@q¬@q­@q®@q¯@q°@q±@q²@q³@q´@qµ@%q¶@q·@q¸@q¹@qº@q»@q¼@q½@q¾@q¿@qÀ@qÁ@qÂ@qÃ@qÄ@qÅ@qÆ@%qÇ@qÈ@qÉ@qÊ@qË@qÌ@qÍ@qÎ@qÏ@qÐ@qÑ@qÒ@qÓ@qÔ@qÕ@qÖ@q×@%qØ@qÙ@qÚ@qÛ@qÜ@qÝ@qÞ@qß@qà@qá@qâ@qã@qä@qå@qæ@qç@qè@%qé@qê@që@qì@qí@qî@qï@qð@qñ@qò@qó@qô@qõ@qö@q÷@qø@qù@%qú@qû@qü@qý@qþ@rA@rB@rC@rD@rE@rF@rG@rH@rI@rJ@rK@rL@%rM@rN@rO@rP@rQ@rR@rS@rT@rU@rV@rW@rX@rY@rZ@r[@r\@r]@%r^@r_@r`@ra@rb@rc@rd@re@rf@rg@rh@ri@rj@rk@rl@rm@rn@%ro@rp@rq@rr@rs@rt@ru@rv@rw@rx@ry@rz@r{@r|@r}@r~@r@%r€@r@r‚@rƒ@r„@r…@r†@r‡@rˆ@r‰@rŠ@r‹@rŒ@r@rŽ@r@r@%r‘@r’@r“@r”@r•@r–@r—@r˜@r™@rš@r›@rœ@r@rž@rŸ@r @r¡@%r¢@r£@r¤@r¥@r¦@r§@r¨@r©@rª@r«@r¬@r­@r®@r¯@r°@r±@r²@%r³@r´@rµ@r¶@r·@r¸@r¹@rº@r»@r¼@r½@r¾@r¿@rÀ@rÁ@rÂ@rÃ@%rÄ@rÅ@rÆ@rÇ@rÈ@rÉ@rÊ@rË@rÌ@rÍ@rÎ@rÏ@rÐ@rÑ@rÒ@rÓ@rÔ@%rÕ@rÖ@r×@rØ@rÙ@rÚ@rÛ@rÜ@rÝ@rÞ@rß@rà@rá@râ@rã@rä@rå@%ræ@rç@rè@ré@rê@rë@rì@rí@rî@rï@rð@rñ@rò@ró@rô@rõ@rö@%r÷@rø@rù@rú@rû@rü@rý@rþ@sA@sB@sC@sD@sE@sF@sG@sH@sI@%sJ@sK@sL@sM@sN@sO@sP@sQ@sR@sS@sT@sU@sV@sW@sX@sY@sZ@%s[@s\@s]@s^@s_@s`@sa@sb@sc@sd@se@sf@sg@sh@si@sj@sk@%sl@sm@sn@so@sp@sq@sr@ss@st@su@sv@sw@sx@sy@sz@s{@s|@%s}@s~@s@s€@s@s‚@sƒ@s„@s…@s†@s‡@sˆ@s‰@sŠ@s‹@sŒ@s@%sŽ@s@s@s‘@s’@s“@s”@s•@s–@s—@s˜@s™@sš@s›@sœ@s@sž@%sŸ@s @s¡@s¢@s£@s¤@s¥@s¦@s§@s¨@s©@sª@s«@s¬@s­@s®@s¯@%s°@s±@s²@s³@s´@sµ@s¶@s·@s¸@s¹@sº@s»@s¼@s½@s¾@s¿@sÀ@%sÁ@sÂ@sÃ@sÄ@sÅ@sÆ@sÇ@sÈ@sÉ@sÊ@sË@sÌ@sÍ@sÎ@sÏ@sÐ@sÑ@%sÒ@sÓ@sÔ@sÕ@sÖ@s×@sØ@sÙ@sÚ@sÛ@sÜ@sÝ@sÞ@sß@sà@sá@sâ@%sã@sä@så@sæ@sç@sè@sé@sê@së@sì@sí@sî@sï@sð@sñ@sò@só@%sô@sõ@sö@s÷@sø@sù@sú@sû@sü@sý@sþ@tA@tB@tC@tD@tE@tF@%tG@tH@tI@tJ@tK@tL@tM@tN@tO@tP@tQ@tR@tS@tT@tU@tV@tW@%tX@tY@tZ@t[@t\@t]@t^@t_@t`@ta@tb@tc@td@te@tf@tg@th@%ti@tj@tk@tl@tm@tn@to@tp@tq@tr@ts@tt@tu@tv@tw@tx@ty@%tz@t{@t|@t}@t~@t@t€@t@t‚@tƒ@t„@t…@t†@t‡@tˆ@t‰@tŠ@%t‹@tŒ@t@tŽ@t@t@t‘@t’@t“@t”@t•@t–@t—@t˜@t™@tš@t›@%tœ@t@tž@tŸ@t @t¡@t¢@t£@t¤@t¥@t¦@t§@t¨@t©@tª@t«@t¬@%t­@t®@t¯@t°@t±@t²@t³@t´@tµ@t¶@t·@t¸@t¹@tº@t»@t¼@t½@%t¾@t¿@tÀ@tÁ@tÂ@tÃ@tÄ@tÅ@tÆ@tÇ@tÈ@tÉ@tÊ@tË@tÌ@tÍ@tÎ@%tÏ@tÐ@tÑ@tÒ@tÓ@tÔ@tÕ@tÖ@t×@tØ@tÙ@tÚ@tÛ@tÜ@tÝ@tÞ@tß@%tà@tá@tâ@tã@tä@tå@tæ@tç@tè@té@tê@të@tì@tí@tî@tï@tð@%tñ@tò@tó@tô@tõ@tö@t÷@tø@tù@tú@tû@tü@tý@tþ@uA@uB@uC@%uD@uE@uF@uG@uH@uI@uJ@uK@uL@uM@uN@uO@uP@uQ@uR@uS@uT@%uU@uV@uW@uX@uY@uZ@u[@u\@u]@u^@u_@u`@ua@ub@uc@ud@ue@%uf@ug@uh@ui@uj@uk@ul@um@un@uo@up@uq@ur@us@ut@uu@uv@%uw@ux@uy@uz@u{@u|@u}@u~@u@u€@u@u‚@uƒ@u„@u…@u†@u‡@%uˆ@u‰@uŠ@u‹@uŒ@u@uŽ@u@u@u‘@u’@u“@u”@u•@u–@u—@u˜@%u™@uš@u›@uœ@u@už@uŸ@u @u¡@u¢@u£@u¤@u¥@u¦@u§@u¨@u©@%uª@u«@u¬@u­@u®@u¯@u°@u±@u²@u³@u´@uµ@u¶@u·@u¸@u¹@uº@%u»@u¼@u½@u¾@u¿@uÀ@uÁ@uÂ@uÃ@uÄ@uÅ@uÆ@uÇ@uÈ@uÉ@uÊ@uË@%uÌ@uÍ@uÎ@uÏ@uÐ@uÑ@uÒ@uÓ@uÔ@uÕ@uÖ@u×@uØ@uÙ@uÚ@uÛ@uÜ@%uÝ@uÞ@uß@uà@uá@uâ@uã@uä@uå@uæ@uç@uè@ué@uê@uë@uì@uí@%uî@uï@uð@uñ@uò@uó@uô@uõ@uö@u÷@uø@uù@uú@uû@uü@uý@uþ@%vA@vB@vC@vD@vE@vF@vG@vH@vI@vJ@vK@vL@vM@vN@vO@vP@vQ@%vR@vS@vT@vU@vV@vW@vX@vY@vZ@v[@v\@v]@v^@v_@v`@va@vb@%vc@vd@ve@vf@vg@vh@vi@vj@vk@vl@vm@vn@vo@vp@vq@vr@vs@%vt@vu@vv@vw@vx@vy@vz@v{@v|@v}@v~@v@v€@v@v‚@vƒ@v„@%v…@v†@v‡@vˆ@v‰@vŠ@v‹@vŒ@v@vŽ@v@v@v‘@v’@v“@v”@v•@%v–@v—@v˜@v™@vš@v›@vœ@v@vž@vŸ@v @v¡@v¢@v£@v¤@v¥@v¦@%v§@v¨@v©@vª@v«@v¬@v­@v®@v¯@v°@v±@v²@v³@v´@vµ@v¶@v·@%v¸@v¹@vº@v»@v¼@v½@v¾@v¿@vÀ@vÁ@vÂ@vÃ@vÄ@vÅ@vÆ@vÇ@vÈ@%vÉ@vÊ@vË@vÌ@vÍ@vÎ@vÏ@vÐ@vÑ@vÒ@vÓ@vÔ@vÕ@vÖ@v×@vØ@vÙ@%vÚ@vÛ@vÜ@vÝ@vÞ@vß@và@vá@vâ@vã@vä@vå@væ@vç@vè@vé@vê@%vë@vì@ví@vî@vï@vð@vñ@vò@vó@vô@võ@vö@v÷@vø@vù@vú@vû@%vü@vý@vþ@wA@wB@wC@wD@wE@wF@wG@wH@wI@wJ@wK@wL@wM@wN@%wO@wP@wQ@wR@wS@wT@wU@wV@wW@wX@wY@wZ@w[@w\@w]@w^@w_@%w`@wa@wb@wc@wd@we@wf@wg@wh@wi@wj@wk@wl@wm@wn@wo@wp@%wq@wr@ws@wt@wu@wv@ww@wx@wy@wz@w{@w|@w}@w~@w@w€@w@%w‚@wƒ@w„@w…@w†@w‡@wˆ@w‰@wŠ@w‹@wŒ@w@wŽ@w@w@w‘@w’@%w“@w”@w•@w–@w—@w˜@w™@wš@w›@wœ@w@wž@wŸ@w @w¡@w¢@w£@%w¤@w¥@w¦@w§@w¨@w©@wª@w«@w¬@w­@w®@w¯@w°@w±@w²@w³@w´@%wµ@w¶@w·@w¸@w¹@wº@w»@w¼@w½@w¾@w¿@wÀ@wÁ@wÂ@wÃ@wÄ@wÅ@%wÆ@wÇ@wÈ@wÉ@wÊ@wË@wÌ@wÍ@wÎ@wÏ@wÐ@wÑ@wÒ@wÓ@wÔ@wÕ@wÖ@%w×@wØ@wÙ@wÚ@wÛ@wÜ@wÝ@wÞ@wß@wà@wá@wâ@wã@wä@wå@wæ@wç@%wè@wé@wê@wë@wì@wí@wî@wï@wð@wñ@wò@wó@wô@wõ@wö@w÷@wø@%wù@wú@wû@wü@wý@wþ@xA@xB@xC@xD@xE@xF@xG@xH@xI@xJ@xK@%xL@xM@xN@xO@xP@xQ@xR@xS@xT@xU@xV@xW@xX@xY@xZ@x[@x\@%x]@x^@x_@x`@xa@xb@xc@xd@xe@xf@xg@xh@xi@xj@xk@xl@xm@%xn@xo@xp@xq@xr@xs@xt@xu@xv@xw@xx@xy@xz@x{@x|@x}@x~@%x@x€@x@x‚@xƒ@x„@x…@x†@x‡@xˆ@x‰@xŠ@x‹@xŒ@x@xŽ@x@%x@x‘@x’@x“@x”@x•@x–@x—@x˜@x™@xš@x›@xœ@x@xž@xŸ@x @%x¡@x¢@x£@x¤@x¥@x¦@x§@x¨@x©@xª@x«@x¬@x­@x®@x¯@x°@x±@%x²@x³@x´@xµ@x¶@x·@x¸@x¹@xº@x»@x¼@x½@x¾@x¿@xÀ@xÁ@xÂ@%xÃ@xÄ@xÅ@xÆ@xÇ@xÈ@xÉ@xÊ@xË@xÌ@xÍ@xÎ@xÏ@xÐ@xÑ@xÒ@xÓ@%xÔ@xÕ@xÖ@x×@xØ@xÙ@xÚ@xÛ@xÜ@xÝ@xÞ@xß@xà@xá@xâ@xã@xä@%xå@xæ@xç@xè@xé@xê@xë@xì@xí@xî@xï@xð@xñ@xò@xó@xô@xõ@%xö@x÷@xø@xù@xú@xû@xü@xý@xþ@yA@yB@yC@yD@yE@yF@yG@yH@%yI@yJ@yK@yL@yM@yN@yO@yP@yQ@yR@yS@yT@yU@yV@yW@yX@yY@%yZ@y[@y\@y]@y^@y_@y`@ya@yb@yc@yd@ye@yf@yg@yh@yi@yj@%yk@yl@ym@yn@yo@yp@yq@yr@ys@yt@yu@yv@yw@yx@yy@yz@y{@%y|@y}@y~@y@y€@y@y‚@yƒ@y„@y…@y†@y‡@yˆ@y‰@yŠ@y‹@yŒ@%y@yŽ@y@y@y‘@y’@y“@y”@y•@y–@y—@y˜@y™@yš@y›@yœ@y@%yž@yŸ@y @y¡@y¢@y£@y¤@y¥@y¦@y§@y¨@y©@yª@y«@y¬@y­@y®@%y¯@y°@y±@y²@y³@y´@yµ@y¶@y·@y¸@y¹@yº@y»@y¼@y½@y¾@y¿@%yÀ@yÁ@yÂ@yÃ@yÄ@yÅ@yÆ@yÇ@yÈ@yÉ@yÊ@yË@yÌ@yÍ@yÎ@yÏ@yÐ@%yÑ@yÒ@yÓ@yÔ@yÕ@yÖ@y×@yØ@yÙ@yÚ@yÛ@yÜ@yÝ@yÞ@yß@yà@yá@%yâ@yã@yä@yå@yæ@yç@yè@yé@yê@yë@yì@yí@yî@yï@yð@yñ@yò@%yó@yô@yõ@yö@y÷@yø@yù@yú@yû@yü@yý@yþ@zA@zB@zC@zD@zE@%zF@zG@zH@zI@zJ@zK@zL@zM@zN@zO@zP@zQ@zR@zS@zT@zU@zV@%zW@zX@zY@zZ@z[@z\@z]@z^@z_@z`@za@zb@zc@zd@ze@zf@zg@%zh@zi@zj@zk@zl@zm@zn@zo@zp@zq@zr@zs@zt@zu@zv@zw@zx@%zy@zz@z{@z|@z}@z~@z@z€@z@z‚@zƒ@z„@z…@z†@z‡@zˆ@z‰@%zŠ@z‹@zŒ@z@zŽ@z@z@z‘@z’@z“@z”@z•@z–@z—@z˜@z™@zš@%z›@zœ@z@zž@zŸ@z @z¡@z¢@z£@z¤@z¥@z¦@z§@z¨@z©@zª@z«@%z¬@z­@z®@z¯@z°@z±@z²@z³@z´@zµ@z¶@z·@z¸@z¹@zº@z»@z¼@%z½@z¾@z¿@zÀ@zÁ@zÂ@zÃ@zÄ@zÅ@zÆ@zÇ@zÈ@zÉ@zÊ@zË@zÌ@zÍ@%zÎ@zÏ@zÐ@zÑ@zÒ@zÓ@zÔ@zÕ@zÖ@z×@zØ@zÙ@zÚ@zÛ@zÜ@zÝ@zÞ@%zß@zà@zá@zâ@zã@zä@zå@zæ@zç@zè@zé@zê@zë@zì@zí@zî@zï@%zð@zñ@zò@zó@zô@zõ@zö@z÷@zø@zù@zú@zû@zü@zý@zþ@{A@{B@%{C@{D@{E@{F@{G@{H@{I@{J@{K@{L@{M@{N@{O@{P@{Q@{R@{S@%{T@{U@{V@{W@{X@{Y@{Z@{[@{\@{]@{^@{_@{`@{a@{b@{c@{d@%{e@{f@{g@{h@{i@{j@{k@{l@{m@{n@{o@{p@{q@{r@{s@{t@{u@%{v@{w@{x@{y@{z@{{@{|@{}@{~@{@{€@{@{‚@{ƒ@{„@{…@{†@%{‡@{ˆ@{‰@{Š@{‹@{Œ@{@{Ž@{@{@{‘@{’@{“@{”@{•@{–@{—@%{˜@{™@{š@{›@{œ@{@{ž@{Ÿ@{ @{¡@{¢@{£@{¤@{¥@{¦@{§@{¨@%{©@{ª@{«@{¬@{­@{®@{¯@{°@{±@{²@{³@{´@{µ@{¶@{·@{¸@{¹@%{º@{»@{¼@{½@{¾@{¿@{À@{Á@{Â@{Ã@{Ä@{Å@{Æ@{Ç@{È@{É@{Ê@%{Ë@{Ì@{Í@{Î@{Ï@{Ð@{Ñ@{Ò@{Ó@{Ô@{Õ@{Ö@{×@{Ø@{Ù@{Ú@{Û@%{Ü@{Ý@{Þ@{ß@{à@{á@{â@{ã@{ä@{å@{æ@{ç@{è@{é@{ê@{ë@{ì@%{í@{î@{ï@{ð@{ñ@{ò@{ó@{ô@{õ@{ö@{÷@{ø@{ù@{ú@{û@{ü@{ý@%{þ@|A@|B@|C@|D@|E@|F@|G@|H@|I@|J@|K@|L@|M@|N@|O@|P@%|Q@|R@|S@|T@|U@|V@|W@|X@|Y@|Z@|[@|\@|]@|^@|_@|`@|a@%|b@|c@|d@|e@|f@|g@|h@|i@|j@|k@|l@|m@|n@|o@|p@|q@|r@%|s@|t@|u@|v@|w@|x@|y@|z@|{@||@|}@|~@|@|€@|@|‚@|ƒ@%|„@|…@|†@|‡@|ˆ@|‰@|Š@|‹@|Œ@|@|Ž@|@|@|‘@|’@|“@|”@%|•@|–@|—@|˜@|™@|š@|›@|œ@|@|ž@|Ÿ@| @|¡@|¢@|£@|¤@|¥@%|¦@|§@|¨@|©@|ª@|«@|¬@|­@|®@|¯@|°@|±@|²@|³@|´@|µ@|¶@%|·@|¸@|¹@|º@|»@|¼@|½@|¾@|¿@|À@|Á@|Â@|Ã@|Ä@|Å@|Æ@|Ç@%|È@|É@|Ê@|Ë@|Ì@|Í@|Î@|Ï@|Ð@|Ñ@|Ò@|Ó@|Ô@|Õ@|Ö@|×@|Ø@%|Ù@|Ú@|Û@|Ü@|Ý@|Þ@|ß@|à@|á@|â@|ã@|ä@|å@|æ@|ç@|è@|é@%|ê@|ë@|ì@|í@|î@|ï@|ð@|ñ@|ò@|ó@|ô@|õ@|ö@|÷@|ø@|ù@|ú@%|û@|ü@|ý@|þ@}A@}B@}C@}D@}E@}F@}G@}H@}I@}J@}K@}L@}M@%}N@}O@}P@}Q@}R@}S@}T@}U@}V@}W@}X@}Y@}Z@}[@}\@}]@}^@%}_@}`@}a@}b@}c@}d@}e@}f@}g@}h@}i@}j@}k@}l@}m@}n@}o@%}p@}q@}r@}s@}t@}u@}v@}w@}x@}y@}z@}{@}|@}}@}~@}@}€@%}@}‚@}ƒ@}„@}…@}†@}‡@}ˆ@}‰@}Š@}‹@}Œ@}@}Ž@}@}@}‘@%}’@}“@}”@}•@}–@}—@}˜@}™@}š@}›@}œ@}@}ž@}Ÿ@} @}¡@}¢@%}£@}¤@}¥@}¦@}§@}¨@}©@}ª@}«@}¬@}­@}®@}¯@}°@}±@}²@}³@%}´@}µ@}¶@}·@}¸@}¹@}º@}»@}¼@}½@}¾@}¿@}À@}Á@}Â@}Ã@}Ä@%}Å@}Æ@}Ç@}È@}É@}Ê@}Ë@}Ì@}Í@}Î@}Ï@}Ð@}Ñ@}Ò@}Ó@}Ô@}Õ@%}Ö@}×@}Ø@}Ù@}Ú@}Û@}Ü@}Ý@}Þ@}ß@}à@}á@}â@}ã@}ä@}å@}æ@%}ç@}è@}é@}ê@}ë@}ì@}í@}î@}ï@}ð@}ñ@}ò@}ó@}ô@}õ@}ö@}÷@%}ø@}ù@}ú@}û@}ü@}ý@}þ@~A@~B@~C@~D@~E@~F@~G@~H@~I@~J@%~K@~L@~M@~N@~O@~P@~Q@~R@~S@~T@~U@~V@~W@~X@~Y@~Z@~[@%~\@~]@~^@~_@~`@~a@~b@~c@~d@~e@~f@~g@~h@~i@~j@~k@~l@%~m@~n@~o@~p@~q@~r@~s@~t@~u@~v@~w@~x@~y@~z@~{@~|@~}@%~~@~@~€@~@~‚@~ƒ@~„@~…@~†@~‡@~ˆ@~‰@~Š@~‹@~Œ@~@~Ž@%~@~@~‘@~’@~“@~”@~•@~–@~—@~˜@~™@~š@~›@~œ@~@~ž@~Ÿ@%~ @~¡@~¢@~£@~¤@~¥@~¦@~§@~¨@~©@~ª@~«@~¬@~­@~®@~¯@~°@%~±@~²@~³@~´@~µ@~¶@~·@~¸@~¹@~º@~»@~¼@~½@~¾@~¿@~À@~Á@%~Â@~Ã@~Ä@~Å@~Æ@~Ç@~È@~É@~Ê@~Ë@~Ì@~Í@~Î@~Ï@~Ð@~Ñ@~Ò@%~Ó@~Ô@~Õ@~Ö@~×@~Ø@~Ù@~Ú@~Û@~Ü@~Ý@~Þ@~ß@~à@~á@~â@~ã@%~ä@~å@~æ@~ç@~è@~é@~ê@~ë@~ì@~í@~î@~ï@~ð@~ñ@~ò@~ó@~ô@%~õ@~ö@~÷@~ø@~ù@~ú@~û@~ü@~ý@~þ@A@B@C@D@E@F@G@%H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@%Y@Z@[@\@]@^@_@`@a@b@c@d@e@f@g@h@i@%j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@%{@|@}@~@@€@@‚@ƒ@„@…@†@‡@ˆ@‰@Š@‹@%Œ@@Ž@@@‘@’@“@”@•@–@—@˜@™@š@›@œ@%@ž@Ÿ@ @¡@¢@£@¤@¥@¦@§@¨@©@ª@«@¬@­@%®@¯@°@±@²@³@´@µ@¶@·@¸@¹@º@»@¼@½@¾@%¿@À@Á@Â@Ã@Ä@Å@Æ@Ç@È@É@Ê@Ë@Ì@Í@Î@Ï@%Ð@Ñ@Ò@Ó@Ô@Õ@Ö@×@Ø@Ù@Ú@Û@Ü@Ý@Þ@ß@à@%á@â@ã@ä@å@æ@ç@è@é@ê@ë@ì@í@î@ï@ð@ñ@%ò@ó@ô@õ@ö@÷@ø@ù@ú@û@ü@ý@þ@Dn@[É@ft@WŽ@%Xw@X‚@Y€@[®@\f@\x@^I@^Š@_z@_Ò@_Õ@_Ù@_Ý@`Y@`­@aw@b¹@%bÎ@bâ@cî@dŽ@dñ@eI@ef@e¸@eÆ@fx@fÝ@fß@fæ@gô@BZ@B@B{@%Bà@Bl@BP@B}@BM@B]@B\@BN@Bk@B`@BK@Ba@Bð@Bñ@Bò@Bó@Bô@%Bõ@Bö@B÷@Bø@Bù@Bz@B^@BL@B~@Bn@Bo@B|@BÁ@BÂ@BÃ@BÄ@BÅ@%BÆ@BÇ@BÈ@BÉ@BÑ@BÒ@BÓ@BÔ@BÕ@BÖ@B×@BØ@BÙ@Bâ@Bã@Bä@Bå@%Bæ@Bç@Bè@Bé@DD@Cà@DE@Dp@Bm@By@B@B‚@Bƒ@B„@B…@B†@B‡@%Bˆ@B‰@B‘@B’@B“@B”@B•@B–@B—@B˜@B™@B¢@B£@B¤@B¥@B¦@B§@%B¨@B©@BÀ@BO@BÐ@C¡@CJ@BJ@B_@B¡@Bj@B[@% \ No newline at end of file diff -adurpN glibc-2.2/iconvdata/testdata/IBM933 glibc-2.2.1/iconvdata/testdata/IBM933 --- glibc-2.2/iconvdata/testdata/IBM933 Wed Nov 1 23:48:25 2000 +++ glibc-2.2.1/iconvdata/testdata/IBM933 Sat Jan 6 20:35:16 2001 @@ -1,2 +1,2 @@ @@@@7@-@.@/@@@%@ @ @ @?@?@@%@@@<@=@2@&@@@?@'@@@@@@@Z@%@{@[@l@P@}@M@]@\@N@k@`@K@a@ð@ñ@ò@%ó@ô@õ@ö@÷@ø@ù@z@^@L@~@n@o@|@Á@Â@Ã@%Ä@Å@Æ@Ç@È@É@Ñ@Ò@Ó@Ô@Õ@Ö@×@Ø@Ù@â@ã@%ä@å@æ@ç@è@é@p@²@€@°@m@y@@‚@ƒ@„@…@%†@‡@ˆ@‰@‘@’@“@”@•@–@—@˜@™@¢@£@¤@¥@%¦@§@¨@©@À@O@Ð@¡@@ @!@"@#@$@@@@%(@)@*@+@,@ @ -@@0@1@@3@4@5@6@@8@%9@;@@@>@ÿ@?@J@?@?@j@?@?@_@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@ @à@B@C@D@E@F@G@H@I@R@S@T@U@%V@W@X@Y@b@c@d@e@f@g@h@i@r@s@t@u@v@%w@x@Š@‹@Œ@@Ž@@š@›@œ@@ž@Ÿ@ª@«@¬@%­@®@¯@º@»@¼@%I\@Ib@Av@AF@KC@AH@Ae@A]@Kö@K÷@IS@%I€@AC@IZ@Kõ@KL@K™@K–@Kš@I]@KA@KB@A^@KJ@KM@K«@K @K¢@%A_@K©@K¬@K¡@KD@K£@K¤@KF@K¥@K¦@KH@K§@KI@K¨@K¯@KO@K®@%KK@Kª@KN@K­@A`@I”@IU@I^@IV@IY@IX@I[@IT@IW@Fa@Fb@Fc@%Fd@Fe@Ff@Fg@Fh@Fi@Fj@Fk@Fl@Fm@Fn@Fo@Fp@Fq@Fr@Fs@Ft@%Fu@Fv@Fw@Fx@F@F‚@Fƒ@F„@F…@F†@F‡@Fˆ@F‰@FŠ@F‹@FŒ@F@%FŽ@F@F@F‘@F’@F“@F”@F•@F–@F—@F˜@JG@JA@JB@JC@JD@JE@%JF@JH@JI@JJ@JK@JL@JM@JN@JO@JP@JQ@JR@JS@JT@JU@JV@JW@%JX@JY@JZ@J[@J\@J]@J^@J_@J`@Ja@Jb@Jc@Jd@Je@Jf@Jg@Ji@%Jj@Jk@Jl@Jm@Jn@Jo@Jp@Jq@Jr@Js@Jt@Ju@Jv@Jw@Jx@Jy@Jz@%J{@J|@J}@J~@J@J€@J@J‚@Jh@AH@AI@AI@AM@AN@AO@AP@I@%I‚@AD@AE@Id@Af@Ag@Aw@Kø@Kù@Kú@Kû@Kü@Ký@Ah@Ic@Ao@IŽ@%I“@I@Hp@Ai@A@K—@K˜@K›@Kœ@K@Kž@FP@FQ@FR@FS@FT@FU@%FV@FW@FX@FY@FA@FB@FC@FD@FE@FF@FG@FH@FI@FJ@A†@A‡@A…@%Aˆ@A‰@Iƒ@I†@I„@I‡@I…@IO@IP@IQ@A–@IR@A—@IE@IF@Ia@I`@%Aœ@IA@Ac@A“@AJ@IM@IN@IL@IK@IC@ID@I_@Ad@IB@B¡@A@A™@%A@A˜@AŽ@A@Aa@Ab@Aš@A›@II@IJ@IG@IH@Io@A”@A•@K‡@Kˆ@%K‰@KŠ@K‹@KŒ@K@KŽ@K@K@K‘@K’@K“@K”@K•@Kæ@Kç@Kè@Ké@%Kê@Kë@Kì@Kí@Kî@Kï@Kð@Kñ@Kò@Kó@Kô@KÌ@KÍ@KÎ@KÏ@KÐ@KÑ@%KÒ@KÓ@KÔ@KÕ@KÖ@K×@KØ@KÙ@KÚ@KÛ@KÜ@KÝ@KÞ@Kß@Kà@Ká@Kâ@%Kã@Kä@Kå@Km@Kn@Ko@Kp@Kq@Kr@Ks@Kt@Ku@Kv@Kw@Kx@Ky@Kz@%K{@K|@K}@K~@K@K€@K@K‚@Kƒ@K„@K…@K†@GA@GL@GB@GM@GC@%Gh@Gg@GN@GD@Gb@Ga@GO@GF@Gf@Ge@GQ@GE@Gd@Gc@GP@GG@G\@%Gi@Gj@GW@Gk@Gl@GR@GI@G^@Gm@Gn@GY@Go@Gp@GT@GH@Gq@Gr@%GX@G]@Gs@Gt@GS@GJ@Gu@Gv@GZ@G_@Gw@Gx@GU@GK@Gy@Gz@G[@%G{@G|@G`@G}@G~@G@G€@G@G‚@Gƒ@G„@GV@It@A€@A@Iq@Iu@%Iv@Iy@Ix@Iw@Iz@A‚@A@Ih@Ig@A„@Aƒ@If@Ie@A~@A}@Ip@Io@%Az@A|@A{@Ir@Is@Ay@Ax@I}@I|@I~@I@A’@A‘@Ij@Ik@In@Ii@%Il@Im@I{@I‰@IŠ@I‹@Iˆ@@@@AA@AB@AG@AS@AT@AU@AV@AW@AX@%AY@AZ@A[@A\@AŠ@AQ@AR@B¡@DA@DB@DC@DD@DE@DF@DG@DH@DI@%DJ@DK@DL@DM@DN@DO@DP@DQ@DR@DS@DT@DU@DV@DW@DX@DY@DZ@%D[@D\@D]@D^@D_@D`@Da@Db@Dc@Dd@De@Df@Dg@Dh@Di@Dj@Dk@%Dl@Dm@Dn@Do@Dp@Dq@Dr@Ds@Dt@Du@Dv@Dw@Dx@Dy@Dz@D{@D|@%D}@D~@D@D€@D@D‚@Dƒ@D„@D…@D†@D‡@Dˆ@D‰@DŠ@D‹@DŒ@D@%DŽ@D@D@D‘@D’@D“@EA@EB@EC@ED@EE@EF@EG@EH@EI@EJ@EK@%EL@EM@EN@EO@EP@EQ@ER@ES@ET@EU@EV@EW@EX@EY@EZ@E[@E\@%E]@E^@E_@E`@Ea@Eb@Ec@Ed@Ee@Ef@Eg@Eh@Ei@Ej@Ek@El@Em@%En@Eo@Ep@Eq@Er@Es@Et@Eu@Ev@Ew@Ex@Ey@Ez@E{@E|@E}@E~@%E@E€@E@E‚@Eƒ@E„@E…@E†@E‡@Eˆ@E‰@EŠ@E‹@EŒ@E@EŽ@E@%E@E‘@E’@E“@E”@E•@E–@AC@ˆA@ŒA@„D@A@„F@„G@”A@˜A@œA@%„J@„K@„L@„M@„N@„O@„P@ A@¤A@¨A@„T@¬A@°A@´A@¸A@¼A@ÀA@%ÄA@ÈA@ÌA@ÐA@„a@„@„¡@„Á@„á@…A@…a@…@…¡@…Á@…á@†A@†a@%†@†¡@†Á@†á@‡A@‡a@‡@‡¡@„A@CA@CB@CC@CD@CE@CF@CG@CH@%CI@CJ@CK@CL@CM@CN@CO@CP@CQ@CR@CS@CT@CU@CV@CW@CX@CY@%CZ@C[@C\@C]@C^@C_@C`@Ca@Cb@Cc@Cd@Ce@Cf@Cg@Ch@Ci@Cj@%K°@K±@K²@K³@K´@Kµ@K¶@K·@K¸@K¹@Kº@K»@K¼@K½@K¾@K¿@KÀ@%KÁ@KÂ@KÃ@KÄ@KÅ@KÆ@KÇ@KÈ@KÉ@KÊ@KË@I@KQ@KR@KS@KT@KU@%KV@KW@KX@KY@KZ@K[@K\@K]@K^@K_@K`@Ka@Kb@Kc@Kd@Ke@Kf@%Kg@Kh@Ki@Kj@Kk@Kl@IŒ@H`@Ha@Hb@Hc@Hd@HQ@HR@Hs@Ht@Hu@%HO@At@Au@Hk@Hl@Hm@Hn@Ho@HA@Am@An@HB@HG@HH@HI@Aq@Ar@%As@HJ@HK@HL@HM@HC@HD@HE@HF@HT@HU@H|@H}@H~@H@Hx@Hy@%Hz@HV@HW@HX@HY@HZ@H[@H\@H]@H^@H_@He@Hf@Hg@Hh@Hi@Hj@%Hq@Hr@I‘@Hƒ@Ap@Hw@H†@I@HS@H„@HN@HP@H@H‚@Hv@I’@H{@%H…@H€@_¨@`Ü@dp@in@_ô@Y×@Yå@e©@iš@cá@b¡@YB@ZÉ@Ro@Xq@%[¾@aõ@X¤@hy@fç@SÖ@aº@j…@S¯@Rp@bL@Y„@f—@e§@RH@[¿@_]@%Rq@PÝ@\¸@P{@T˜@^Ó@X£@YÕ@PÓ@TÚ@UÈ@]C@Y…@_}@^|@j¿@^“@%f˜@]¯@`Ý@ST@Y†@\^@V™@eÝ@RU@eí@]J@f‚@fG@QI@`Þ@UC@hò@%_™@\Y@_š@dN@Xµ@Rr@SA@P®@_¸@_»@Y‡@d€@_õ@X¶@Zƒ@Tš@_›@%cN@TM@U‡@_~@\—@aö@PÔ@P¯@_°@SX@eÞ@_@h“@]°@SY@X‘@XH@%g”@Wô@W¥@Uˆ@[ò@Y‰@Yˆ@PA@k^@S×@`r@eb@^»@`q@a»@a´@^r@%eª@]D@kG@Xô@_Ù@Rs@S¼@d÷@\Ì@Wõ@PB@S•@k_@_©@Y‹@ià@hE@%kˆ@Tü@dS@h}@U™@[È@a¼@^Õ@ic@k@QÂ@_l@VÝ@gq@ds@UR@eI@%Qt@c­@\_@jŒ@aã@af@j«@he@kÑ@Z÷@VF@VÃ@X@i¬@ft@[ó@[R@%i›@Rt@Wá@e„@X¥@iü@Xr@UE@bÔ@P°@Wâ@i@T`@fC@gr@_m@k•@%hf@b¢@bÓ@WÆ@dT@R¾@a£@hX@]›@Uï@d‹@]ö@\¹@\ò@PC@Pç@^¼@%eJ@eî@a½@`ß@PÕ@Z¢@dO@`à@^s@dÕ@RI@X·@WÇ@PÞ@YÈ@YC@cÃ@%^_@]±@`¢@Ru@bê@Yæ@QJ@UÕ@Rî@cj@Z„@Yç@RV@X’@g±@UÉ@^½@%]ý@[À@bÉ@PD@XW@YŒ@_n@aä@\í@hg@Pà@^Ö@Yè@U¿@^t@`s@iN@%Sœ@\ù@]Ò@_H@^¡@f†@cò@ah@gž@Z‚@Qø@Rç@d°@VÄ@dÅ@\`@TB@%T¬@SU@_·@S°@`£@UD@^×@dô@QÃ@Uì@f@QÄ@Xs@SZ@Rv@`¤@QC@%S[@iý@bô@`]@Vä@VÆ@^c@Qã@VÑ@VÁ@T›@có@\º@Tþ@Uz@bù@aå@%UF@ag@Uþ@Tœ@Uü@id@_h@g¼@XL@fþ@P±@gœ@ca@]þ@cð@eÍ@Ta@%_œ@Xá@`È@]œ@Pg@Wc@fƒ@U|@c‘@dí@Xl@VG@YÉ@Qô@Tb@bÕ@aL@%[J@R¿@bÅ@_¼@P[@c†@dl@YÂ@Rè@Tã@`¥@bþ@X¸@P@W@i¿@_º@%`¦@X¹@eË@bÖ@e…@kœ@gd@Ré@XX@Uà@Pá@aM@h_@Ug@QÅ@PE@U{@%h@ai@S¿@På@fA@QK@W¼@dm@^`@VÅ@QL@Uû@T@j¸@P…@WN@kú@%[Ä@U@VÞ@ZÊ@`Œ@Rï@g}@US@RÀ@_Ú@h@Rw@Wm@ec@g@ed@ee@%X“@YD@fÓ@Xà@[É@_ö@Qù@P–@YE@kï@eŸ@SÒ@Rx@\Z@cO@kL@[Á@%]²@g‰@W¦@io@YF@a @dŒ@fu@S¨@W‘@X”@Xb@`Ð@RE@Z£@WC@_@%^¾@P\@TÛ@RÁ@aú@QM@\®@\Ÿ@VH@gs@^¢@kª@RÆ@kÇ@]y@PÅ@bÊ@%^u@b¤@SL@^v@W§@[@cü@[S@W¨@[T@]@c¹@Ry@Q@Rz@QŒ@bM@%RÔ@ZÒ@dõ@PF@d±@b‹@Y@^w@YŽ@^x@g¦@P]@e×@S–@kZ@Tž@VÒ@%gt@VI@dÆ@fH@R³@V_@_^@eX@Xº@i @eÎ@]³@g­@cý@Wd@gu@]Ä@%UT@`á@QŽ@dš@aÀ@a¿@Q@Wo@PG@[ô@fš@VÐ@`t@T—@ef@fÚ@R{@%iœ@k®@_½@bN@RW@eï@eÏ@_ž@\ª@e‘@fË@eØ@`^@^£@PH@c’@Q°@%gg@cc@eg@QN@dø@Y@k~@ie@TF@ip@^Ù@b×@iê@d@d@Yé@Wk@%Qu@Sð@iã@eÐ@[Ê@aN@hW@S©@Z†@cd@TÉ@gv@eÑ@cP@gŠ@fè@g²@%P|@g‡@^Ú@Yê@S›@RX@SØ@gw@i³@bs@]´@S\@b¥@Y‘@dU@[V@aÁ@%d›@PI@R|@Yë@ZÓ@ak@cþ@[Ë@fP@S]@al@g³@ZS@Xâ@gh@]T@i©@%fI@\ú@_Û@`§@gi@S¬@lB@c®@[U@Y@gR@_Ÿ@Q·@U‰@Q@^Û@eh@%\ã@RÂ@Rª@^¿@^¤@^¥@Tc@SÙ@fé@dÇ@`_@RÕ@bO@S^@bP@dì@Rá@%WÈ@hõ@P†@aµ@PÀ@dÞ@Q¸@dœ@eT@hý@hh@h@k±@[W@TN@f„@TŸ@%eñ@_S@R}@^§@\ @j¬@aæ@V¥@Z¹@Tä@]K@X»@bë@[å@bš@Wä@S_@%h”@Rµ@TC@Pñ@dÐ@hN@jÖ@\n@k›@X‚@aO@]U@P‡@^A@\ó@Xƒ@_÷@%Td@hl@RJ@]‡@hT@ZÔ@d©@Te@TD@cº@ZF@`¨@j@g~@]z@bt@bË@%k`@[‘@QO@ZU@j­@WD@cÇ@bA@fQ@Wa@T@d‚@Xä@]µ@_ø@Ph@XY@%]Ó@SÚ@g@e¶@\“@fœ@UÖ@Qú@RK@U¸@\Í@Y’@_±@`G@_ª@f›@ZT@%[X@e«@S`@Zr@]ù@[’@SÔ@\»@Vü@TO@cQ@d²@X¼@^B@\˜@\K@_€@%fv@\û@Sa@S±@X¦@RÖ@aÂ@kå@Qv@Xå@fZ@dÖ@eð@`©@Y“@]¶@d¤@%_I@_ù@Zs@Xæ@Sµ@SÀ@Pi@f@]E@YG@Vš@_²@Sb@^C@h@WE@YH@%dƒ@WÉ@d×@V¦@bú@cs@`â@Và@_¾@[Ì@`u@Q‘@Y”@Zº@^À@_³@^D@%Pž@ku@Pj@_@b@g´@eß@]V@_ @_¿@^Ä@jœ@Y•@S­@]·@hœ@]W@%[õ@\a@V€@dA@bØ@i]@dÝ@]â@fÀ@YI@X½@ZV@V§@gA@Wp@^¨@[Í@%]Ê@Vr@R~@PJ@[Y@jÀ@bŽ@fr@R@`@kÌ@SÌ@fÔ@gµ@i¶@RY@eY@%Yp@]ˆ@Yí@\Î@_À@fn@QÆ@_¹@_Â@až@i@_Á@gj@V»@Qw@Q’@SÁ@%eò@Zý@[“@kR@X¾@e·@^Ü@\ø@T]@^y@[Z@\y@[D@]ã@RQ@X•@d¬@%kñ@a¤@Qä@aÃ@`æ@]ä@_q@P¿@Z‡@\L@^Ý@fê@iÁ@R¹@``@eó@]X@%Z×@PK@[ö@^a@[”@k“@`Ž@^©@Sc@_¡@WŒ@R€@X¿@V¨@e¼@^z@[æ@%hÄ@V{@bÆ@QÒ@dt@]¸@j @\M@S½@k”@\P@Y–@Qå@UË@kx@c»@X„@%c¶@Y—@X§@Y½@`H@`ª@^Á@aŸ@\Q@TP@Tf@ZÕ@ZÖ@ck@Yî@Zˆ@^{@%WÊ@dB@[Ï@_J@cA@hn@SÐ@Wq@SÊ@R«@PÆ@Qx@R¶@]Å@[Ð@iÜ@Z¦@%`«@Xt@Tg@U×@dR@VJ@Zø@T¸@YÊ@g§@SM@Sd@_ë@Pœ@Vm@ië@[\@%P—@TQ@\o@kÞ@i†@\z@iQ@`Ñ@iÍ@dV@i²@\b@c“@X©@X¨@f^@Th@%aç@fw@[²@iL@Sf@Q¹@cÄ@\¡@PŸ@Uð@[³@Xú@Wr@Pˆ@Tæ@\Š@[´@%j@b§@_ú@R@hþ@iH@RZ@^E@\þ@jt@UŠ@ZX@\p@]ú@V@`¬@\‹@%cR@aÄ@[©@ZØ@QÇ@a¶@R[@PÇ@WO@b¦@Sh@_‚@Y˜@dß@dW@eà@Rð@%iÈ@PÖ@[Ñ@ej@XM@g¶@d­@ct@b@Wö@aP@[]@Y™@Zu@_û@TR@^Þ@%Yò@Vß@k÷@`ã@^Â@iå@e€@WË@kç@V|@dX@i@TE@eZ@TÜ@Pk@eU@%S¶@Xu@fD@Pl@fë@^Ø@^ß@Sg@_ü@YJ@Yï@ZY@`v@ei@`Ò@QP@XÀ@%Yð@Ti@a·@Q“@`ç@\Œ@ZZ@P @^b@^à@Yñ@e¬@U€@Tó@R‚@QÝ@UÌ@%a¾@`­@WF@bÙ@e[@Qû@eô@Uý@UU@c|@]Y@`ä@P×@gS@Xc@U¹@e\@%[ç@[Ò@Rº@am@_¢@Xö@fÊ@_„@aQ@f_@fž@SÂ@\Ä@_ý@P¡@e @Xm@%d@P¢@Wt@V‚@hó@f‘@gŒ@_…@f…@\ô@j¹@bì@e†@an@Yr@eD@bÚ@%]‰@WÌ@]M@e˜@i£@]ñ@`å@TS@iÕ@gT@Uô@gx@Z[@QQ@Tj@T½@Wå@%Y›@a¥@iM@\ä@gB@X–@[™@Wu@dY@bž@T^@cb@g@\R@e¡@Si@_£@%c·@bQ@V›@Vœ@cô@d@du@S¸@g¢@fÆ@Xç@\™@SÃ@ek@Sé@U‹@Yœ@%d³@_†@SN@Z»@^ª@RL@Pæ@c¼@gC@kH@[š@[Ó@gD@QÊ@eá@Z\@\Ï@%]B@Qõ@gU@_Ã@g™@df@e½@_T@P_@S¹@QÉ@[è@g®@]t@\N@aR@e¾@%gV@dù@iË@`®@]¹@^á@fì@k @VK@ks@YK@T_@cù@bÛ@W€@Qy@Tk@%bû@`è@T@f½@fÇ@Zv@^â@f’@\r@d„@SÈ@Yó@gF@\Â@Z¼@dP@[_@%Z‰@PØ@^ä@^ã@W@eH@_r@\q@^}@\¢@P‰@RM@kè@k‘@P²@[÷@P³@%^«@j®@Uõ@_U@_Ä@QD@d´@gE@e‡@Vá@bÌ@bÍ@bÎ@dÛ@dÉ@Vƒ@Qæ@%hD@f“@P´@a¦@U^@^Ã@QR@P£@cB@^[@k¡@^~@YL@bB@Uo@Y€@c”@%lC@g¸@dž@Xè@T @Pè@W‚@hi@i|@fT@\î@hö@PŠ@Rñ@Pm@eõ@_i@%jŽ@WP@S@bŸ@TÊ@gW@f`@bÏ@Rƒ@fí@_s@Up@hû@QÓ@WQ@[¯@[^@%_P@Z½@\c@Qz@f¾@cC@\„@Rê@hJ@`É@Uí@`¯@g¹@TT@f @UV@WÍ@%ZÛ@eK@QT@ZŠ@f¸@YM@[`@`a@d…@d@Xé@SO@XÂ@YN@iì@[Â@Sj@%c•@hc@dà@\ï@Z]@dØ@eâ@`Ê@em@e™@el@`w@V”@\”@cÈ@X÷@d@%WR@Sº@Tð@W©@W’@Sž@RN@PÈ@cD@W½@k¯@^F@R„@a¡@c–@Wæ@Qö@%[é@S—@bC@QË@RÃ@Q”@[¹@SŸ@bR@bS@Z§@\{@Tl@a¸@bu@_d@`é@%jX@V„@fx@b¯@dö@S§@]Z@en@Xª@Y@PÉ@h…@cu@S¦@S»@i´@ZÙ@%[a@iA@_þ@Wç@\¯@R·@RF@UA@bí@d¦@`Ø@QÌ@cÉ@\ü@ao@R¬@Pn@%^å@R×@WG@aS@_e@\Ð@fî@\s@Pé@gŽ@^¬@\½@Yà@Zþ@W“@ZÚ@^G@%Tm@[b@k@Wª@dª@g•@b°@`@c½@cÅ@Vs@bT@Vâ@iw@`Ù@Už@dÃ@%YÓ@j£@hÃ@TG@ce@W¿@WS@dá@cÂ@b¶@W”@Sê@]Ö@iV@cS@dÀ@Pê@%ap@QU@SB@Sñ@XZ@PÊ@TU@d’@Tç@bÇ@PÍ@_t@Ys@P`@cE@fá@k¸@%^H@W«@dÄ@\Ñ@Z¶@Uq@R]@fâ@Tè@bU@[c@Q•@^Ô@Pµ@QÍ@WÎ@`ê@%Q–@gk@Z^@R\@Wƒ@R…@\å@j@eB@bÜ@P‹@YË@T‘@QV@\Ò@Q—@`ë@%`@XÃ@[d@i·@U@e]@kó@We@Yt@YO@W¬@T­@UÐ@Q±@Y @b˜@\…@%Rò@cF@XÄ@_Ü@bÐ@YŸ@[ø@SÛ@WÏ@\æ@[Ô@WÐ@UW@Z‹@`ì@aš@ia@%Sk@WT@Sl@_«@SÜ@bV@aq@[›@^@e¿@j²@]ò@W…@W„@iD@]»@Qº@%[Ã@WÑ@fŸ@bÝ@VÔ@fÁ@i¡@h‘@]N@Zw@g£@Xv@Z¾@]Š@UŒ@cî@V©@%_Ý@ZÜ@[Õ@e­@^Ž@WH@bÞ@Xw@\š@ar@[Ö@gG@ké@bv@k€@\|@aè@%kÕ@aÅ@lD@Z¿@aT@]¼@kæ@gX@kß@[ù@V…@k²@[e@X…@QW@Zx@c}@%`í@hŠ@`î@bW@kû@PL@g€@g@]‹@jÅ@Z_@S£@\@\Ó@VÕ@ho@bß@%_ì@Vã@`A@kÜ@e@Z³@QS@T’@]„@Ui@Sò@gl@\¦@Z`@^I@k¿@Qü@%g·@S®@]ð@Q²@]ž@QX@P}@Za@at@as@V†@bE@c‡@cÆ@gY@^¸@^æ@%Xû@X˜@YÅ@b™@Tô@V@au@Sˆ@Sm@Vý@Uº@Vô@Wv@V•@X¢@bÈ@k¨@%aÆ@W•@d†@RÉ@gy@Po@YÙ@VM@fE@`b@c¸@eˆ@`B@T®@Sn@Zù@eã@%Wè@Pß@T¡@Q™@WI@`x@dâ@hé@[E@dî@i¤@]ó@iŒ@h²@Zy@T¯@dv@%Vg@Vª@QÔ@bX@Q˜@k»@bY@PN@hA@R‡@[×@Xx@W÷@Vå@PŒ@dq@]{@%^ç@^è@d“@_Þ@`y@Rˆ@hF@PM@S²@aÇ@Uá@[Ø@bõ@i­@Y¡@kg@iÖ@%`°@Zb@Uö@R^@Wø@aÈ@_ˆ@jº@QÎ@fB@Ró@Pë@`c@h^@eä@Q{@Tn@%\}@b@T¢@Yõ@fï@S˜@k@dÊ@hG@UG@`ï@V«@Q³@`d@dZ@QY@av@%gm@j˜@c—@]½@VN@Y¢@aU@Q|@Q»@ZÝ@XN@i‚@Sp@i”@VÇ@So@Q¼@%X¬@a§@aw@Rì@Xü@T£@TH@_ç@hm@YÚ@Zc@To@Qç@j™@`Ú@jå@[ê@%cÊ@c˜@it@\¾@]\@cï@Y£@\Ô@e”@Z¨@d‡@h\@i}@c™@VA@h³@^é@%jË@iƒ@`ð@aü@]A@`z@[œ@Rë@eö@cË@]Œ@Tõ@^d@bw@WÒ@kê@YQ@%]@Uâ@d«@hp@W­@YÄ@R‰@k¶@bà@Y¤@RO@QÏ@QÞ@P¶@h‹@ax@Rô@%\t@a¨@Wü@UI@UØ@`{@e‰@cÍ@`C@Væ@\Õ@cš@W–@[f@fÕ@aé@P@%dC@^L@R_@d”@j»@i×@Ræ@T¾@Sq@Yö@gf@SÝ@Pì@kh@\ð@SC@i’@%gZ@QZ@Pâ@`D@Yu@eÒ@_V@iB@RÊ@UŸ@UX@aû@Uj@kÐ@\´@W—@TÝ@%RÄ@`E@TÞ@Té@gª@b¨@g¤@^\@\£@Sr@g¬@Qé@Yß@g«@fW@PO@dŸ@%RŠ@]F@fð@bZ@`ñ@b©@X†@WU@]÷@ZË@Uh@RÐ@Y®@Vú@\›@k‚@dµ@%[@[g@[ë@_è@^•@Y÷@U‚@Yv@Z¯@SÞ@_W@YÔ@Pa@`±@g‹@_u@R‹@%WV@Vç@V¬@T…@_D@YU@i¥@i¦@YV@Vè@f¡@RŒ@bá@`²@\]@W†@V¼@%Ss@[i@Y@]Ž@XO@`ò@aý@R@XP@Zz@YÌ@eÀ@]¾@]G@fÌ@P¤@b[@%Q¿@]ô@j‡@d¶@SP@Xd@Wf@Pý@St@Xê@\T@Su@]Æ@jÁ@eå@jY@dw@%T“@Võ@Vû@Sü@is@i@cõ@YR@Y¥@k|@dú@V–@`|@e®@YT@^ê@d[@%ZÞ@Qš@cl@]]@gH@kÖ@i¼@cT@W˜@e¢@fÍ@XU@Y¦@XQ@U@eo@dã@%_f@SÑ@aÊ@kÓ@W¯@W‡@d·@]@\Ö@U}@Xˆ@ZÌ@[j@TÒ@T¤@bx@jÌ@%Z©@fÎ@aË@[ž@gŸ@Qý@jÂ@fù@g¯@dä@Uã@`Ë@aê@iª@]å@ep@f¢@%Tö@if@XÅ@^]@e÷@dx@fy@dû@]u@Q[@Zß@Z·@j¯@kô@]_@iÅ@]^@%cˆ@\¤@\°@eÓ@UH@ki@h†@d\@Z{@kõ@Sv@Vh@f£@[•@Tp@a©@UÙ@%iÌ@Só@`ó@Uñ@__@g[@\U@[Ÿ@]`@fÂ@c~@\ý@cU@cm@YÛ@fñ@`}@%PŽ@`ô@PË@Tq@Y§@i‹@\u@]Û@Zª@dQ@^Å@eæ@i¸@P~@jv@^ë@WJ@%Ww@kT@fÃ@Wé@i„@kv@Sß@f¤@Yø@h÷@[ì@kj@kë@^e@cÎ@_¤@d®@%jÃ@h´@X‡@^­@aë@Uä@RŽ@VÖ@_¬@XÆ@Q}@]Ë@Zà@by@[k@^f@SÓ@%i@bâ@VÎ@gI@_Å@cG@k×@fú@`e@Tr@T¿@c‰@`‘@f¥@Q½@V‡@\ç@%eŠ@dr@U¯@Rõ@UÚ@P·@VO@]a@ay@V}@eÁ@Ur@Vˆ@b\@[l@bã@`Ó@%`F@]@W¾@Pü@k‹@W®@iÒ@_í@_î@iW@Z|@kì@_K@U @Sô@az@RË@%_é@T¥@X‰@ik@Yá@b @cf@kw@eE@j¼@f¦@Pp@eÂ@dÁ@iT@g\@b·@%`³@j@Sõ@hô@Pí@d•@Uƒ@SÅ@]Ÿ@[º@jw@Vþ@aV@f¨@^ì@Ts@f§@%Tê@aì@d–@Yw@cV@UY@\×@f‡@T†@Y¨@\V@ib@e‚@Yx@U¢@kÈ@]‘@%jã@Uk@kk@Zá@kÎ@U»@iZ@jx@Wx@_”@Tß@Qê@kØ@[L@d @f©@V‰@%fÖ@TÀ@g]@R@_ß@`f@Q\@dD@]|@c›@eç@ký@_Æ@h~@kl@Zâ@fa@%PÌ@d¡@eq@fˆ@Xy@aÉ@_à@`Ô@U~@g–@]¿@kã@TÓ@bD@]b@hj@eF@%X­@g@\õ@ky@i@Xë@iE@WW@cœ@]}@]c@g@Us@kü@gJ@`´@jy@%S¤@]d@^@i°@V­@fò@kø@a{@Wþ@\Ø@_Ç@Z@[í@j½@^Ÿ@g‚@kÙ@%^g@g»@[–@i™@^œ@j‘@]v@Q]@g½@lE@d]@]…@]e@TÁ@T”@UÍ@V`@%Zã@i‘@]f@]’@a|@b¸@[h@c°@Zµ@ZŽ@gƒ@[ú@Tt@j¦@f[@eƒ@U¡@%Tà@a}@då@`m@^¦@^Æ@_á@XÇ@\¿@gn@Yì@_‰@Yú@`I@eL@dï@dü@%cv@W™@T‡@\d@^@Yy@Vé@Vê@UÀ@Vö@Wn@ZN@dÜ@Pó@ZW@VP@TÔ@%Tˆ@gº@Pô@XR@Yù@Qþ@`’@\•@fª@R@`~@R`@[m@VQ@fz@T÷@dý@%] @k’@V½@[Ù@a¢@]û@ZÀ@`@WK@gz@^í@jÏ@fû@^®@]Ç@Yª@`K@%]À@h‡@T‰@g^@jz@ge@U…@[n@Së@fV@fc@_È@[B@]È@]õ@km@k—@%R‘@j³@h•@Wˆ@_L@]æ@i«@UŽ@TV@kÔ@Wš@hB@W‰@YÍ@kÄ@bz@Pb@%RA@hv@kù@TÕ@aÍ@_X@[ @i–@_Š@fK@f‰@RØ@W°@i~@iÂ@kn@fb@%i¹@R’@Tø@VR@iÎ@Uå@jš@k­@ka@iÓ@d—@kà@Sw@ht@Sx@X«@]ç@%aª@h|@jm@Vi@SD@YW@dæ@k³@XV@fÄ@j´@ix@k§@Z@aW@^Ç@e¯@%^¯@SÄ@f«@]“@^î@Zd@[µ@Uæ@^h@[M@^M@]Ì@b{@kÚ@Vt@Tù@Rö@%h–@VS@Z‘@iO@`L@Va@kí@W›@Q^@b|@Sy@hk@X[@b¹@kq@fó@iÏ@%jF@iÔ@ZG@Z’@k‰@Q_@U¼@]•@Qè@bº@QÕ@f¬@e‹@dò@]Ü@]Ô@_É@%Xz@cÏ@Põ@R“@bF@]×@P@\W@cn@ZO@YÎ@ZP@Zä@^i@XŠ@j°@`µ@%^ï@P˜@[û@Sª@`¶@`õ@hŽ@Q`@Q~@]ü@kb@hú@W±@Uç@kƒ@cä@WX@%e£@UB@g—@XA@aí@_‹@fØ@TI@Sz@hO@S{@P¥@aÎ@cw@e¤@Zå@Zæ@%_o@YÏ@P¸@]O@er@eš@P@_Ê@Sì@b}@T§@`€@b‘@hC@X{@bG@_Œ@%\Ú@d^@g¥@T°@Qa@dÌ@VT@b]@Sö@Vu@Vj@d_@YX@Q›@iú@\Û@iÃ@%]Í@cH@bä@iˆ@Uè@[p@e¸@`M@i^@UÎ@\Ž@Pq@^ð@X\@UZ@d`@ke@%TË@Z“@]Õ@`·@Q@TÂ@WÀ@Wù@Wú@a~@`“@P¹@gK@Ra@Qœ@f­@\¥@%f®@e›@cÐ@V×@^€@Wê@Xì@]–@_–@eÙ@Pº@ZÁ@Tu@_ê@V¾@b~@P‘@%W²@Që@U£@V÷@V¿@bm@Yô@i‰@[¡@ZÂ@VÈ@k´@Wy@Pr@V®@b@VÉ@%_Ë@fd@RÅ@Vë@a@\~@b±@kÒ@`ö@[q@TŠ@YY@Vø@]¡@cx@Tv@Q @%]¢@b€@iu@VŠ@Xn@[¢@UÏ@hK@T¨@co@Pã@Qž@R”@WA@c±@Vì@SV@%[Ú@_p@b^@[ü@R•@Sà@]ø@Rb@Z}@Y¯@cŠ@YZ@b_@bî@dy@Vn@es@%dç@RÙ@]g@c@Ué@Qb@]h@Xý@S|@`÷@U°@\§@[N@Y[@TW@]è@P@%X]@Z~@fã@fä@il@_Ì@iŽ@UÁ@bª@Q€@iŠ@`¸@Vv@Qc@S}@hH@W³@%cž@cŸ@jG@\¨@U[@Ul@W´@[Û@Y¬@Y«@h—@S~@S@ba@^@a€@b`@%a@hY@f¯@cã@[ý@[o@Y­@Yû@eŒ@aY@S€@iX@SE@f×@`ø@X—@^‚@%\è@g¾@Z@Uš@Tw@iõ@^ƒ@VU@SF@fÙ@T‹@[s@Y°@X}@S·@cÑ@QÖ@%c @i§@Y\@a‚@d}@b@\œ@b’@_@g¿@ZÍ@Ps@`ù@c¡@_´@dþ@bn@%db@VB@e’@aƒ@a«@d~@^@bo@Tx@PP@Q‚@QŸ@Q´@Vù@k«@`”@j|@%[t@ZK@jˆ@]Î@få@\Ù@fo@R–@R»@QÐ@`ú@cW@T™@`Ì@b²@^N@bŒ@%bå@a„@R°@R¸@]Ý@j—@R¼@^O@RÚ@Uø@b»@hŒ@T±@a…@`Í@Vo@i{@%bÑ@X|@Qd@`N@aî@T¦@[u@P€@Sá@Qe@aá@cå@Pt@SQ@a†@fÈ@Zç@%ZR@`•@d¸@Vp@Y±@XÊ@aZ@iR@ZÎ@e¥@TÃ@R÷@kc@[£@XI@RB@cæ@%dÍ@Sý@bö@Râ@ZÃ@iµ@]i@j’@P»@`¹@`n@cÒ@Wœ@S@YÐ@b£@QÑ@%QE@Qì@`º@Yü@_ï@`@`Î@gL@XS@`»@eM@cç@f{@g|@iÞ@\Å@iÄ@%TŒ@Y]@Y²@b÷@a›@kŽ@Sâ@Pu@kî@_ð@Zè@cp@k™@U„@XÈ@Të@aÐ@%`–@UÂ@U½@cq@\Æ@VW@Wz@i¨@Xí@Vq@Wž@a‡@`Ö@Zú@_Í@aâ@`O@%UJ@UK@b½@PÂ@[v@`ü@f°@TJ@W{@Xî@aˆ@P¨@UL@S @`—@a‰@Qƒ@%RÜ@S‚@aÑ@\Ç@fÐ@jµ@g¨@fô@Wh@Wg@S«@SÎ@[¤@Y´@RR@bb@SR@%Xï@Zé@WÓ@ZL@_Î@aÒ@k@UÛ@ZÏ@[þ@kV@Zê@P’@a¬@fe@aŠ@Qf@%Wµ@Pþ@a‹@Rc@TÖ@ff@SS@_Q@jþ@Ze@dÎ@Yµ@hP@`Ï@Pö@R—@c¢@%ko@[w@Qg@a­@U²@aÓ@[x@^ñ@P¦@Vž@cg@bï@Uò@Sƒ@d¢@_â@VC@%VÊ@dc@S”@Y^@Zf@eÔ@Z”@bœ@Sã@c‹@i‡@]j@[Ý@eN@]é@VË@^È@%Ut@dd@b‚@ií@j•@W@k„@f±@jª@kU@fg@X®@cè@j_@a®@UÜ@c¾@%`˜@XC@Xþ@WY@^P@k{@bp@Z•@^Q@[y@[Å@g_@Q„@P÷@aŒ@]P@Q…@%b¼@Zû@`¼@]—@`g@Z°@b¾@T@Tì@XÉ@eè@QA@\µ@Qí@VŸ@eÃ@XË@%a¹@RG@de@XJ@Zg@V¯@dè@VV@TÌ@h˜@\Ü@hQ@W|@hq@\Ý@U@[z@%R±@Z–@_v@P‚@gÀ@ih@PÃ@^„@]Ø@[Þ@_—@_˜@U@[»@Yý@lA@k\@%dE@Y_@`½@eO@]ê@eÄ@]£@Rd@XD@_•@^R@U¤@Q¡@Ví@_Ï@S…@h€@%_Ž@S³@_Ð@Qh@Vî@^–@S†@_@\À@d§@Qi@S÷@iS@UÑ@ZÄ@Y‚@dF@%Wl@Uu@c¿@ZÅ@^j@bq@c@U¾@_O@jð@[—@Y¿@a@_E@Uú@S‡@c£@%aÔ@T³@eé@Px@Q¢@bc@Y`@Pò@WÔ@SW@RS@_F@go@e^@^É@aÕ@Wì@%d¹@W¶@Wë@P™@et@f²@_M@Zh@RC@Tª@g @SÏ@bd@f}@dG@f|@Vµ@%V¶@cI@j›@Pc@Qj@[¥@[{@d¥@eu@bæ@Yb@\±@\A@XÍ@XÌ@Ya@P©@%]ë@ZÆ@SÉ@a¯@^J@h]@`P@X™@Z—@dÑ@WÕ@U\@hb@WŸ@Q£@XÎ@V~@%[¶@Re@b“@eG@Z˜@cú@_j@Sø@g`@SÆ@T¹@Yc@\ñ@aX@Tñ@]l@`Q@%\B@]á@kS@Vk@_Ñ@dH@be@dg@TX@k…@R™@^ò@^k@Rš@]H@g°@R›@%Z¤@YŠ@Zi@ev@cX@[¦@WZ@aÖ@hR@eê@WÖ@W¸@cé@dˆ@W @fh@Z™@%iž@jI@`ý@Zë@bç@_w@eÕ@U¥@Pv@UM@Pw@ZM@]€@k@\©@^…@_ã@%h„@V @XÏ@iG@bf@YÝ@P¼@ká@h’@Xð@dé@]¤@\X@fÛ@W×@k}@^—@%Rø@cÓ@iy@\e@kP@^°@]@U‘@dº@kž@WL@PQ@k½@Rœ@jñ@\È@Q¤@%`‚@]˜@V°@XÐ@hr@kÅ@aô@W[@XT@PR@Vï@iq@VØ@kQ@V¡@Xš@[|@%kð@kA@SÕ@^l@jJ@[§@kÏ@c¤@fŠ@_µ@_@gM@T²@e±@`™@ii@`R@%Y¶@Qk@\C@]ì@f~@iŸ@iä@V@V¢@c€@Qî@iY@R­@Rã@Q×@bè@bð@%Tz@i—@Rù@fÜ@hs@VD@Yd@\@kW@[˜@cû@Ty@Tý@VÀ@eV@^Ê@cÔ@%V‹@gˆ@^ó@\v@T×@]†@X¯@`ƒ@Pƒ@ew@T©@^Ë@f³@`S@\É@cÀ@RÛ@%aþ@[}@[ß@WB@YÑ@WØ@ex@bH@QF@ið@bé@kâ@iÉ@iv@cê@Z@^m@%P½@[à@Y³@eœ@[~@X°@Uv@iØ@UÒ@VÏ@VŒ@X›@_Ò@YÞ@^@i_@aÏ@%bñ@`T@k¢@Zì@_`@k†@e_@jÆ@hø@XE@c¥@]¥@Rf@j¾@^S@f”@Xñ@%iÙ@^ô@hˆ@d¯@W\@Zí@UÃ@]Ï@W¡@W}@jæ@Pª@`U@Z«@cY@g†@YÖ@%\D@Zj@g„@a[@Q¥@_Ó@Tí@iá@`V@j¶@U]@]¦@TÄ@\Ê@XF@[@`„@%Vb@aŽ@Qß@]§@U¦@Zî@]Ð@Yz@iû@i“@Zš@Tá@TÍ@f´@e¹@PÙ@bü@%fR@U§@^†@fµ@g˜@[·@fÑ@Wi@WÙ@kC@_ñ@hw@a@k¬@T´@`…@Y·@%U’@Sä@ga@]Þ@a×@Rg@eÚ@b”@^n@\f@c²@X±@\E@]Á@XÑ@bg@Ye@%W@cJ@c@^±@QØ@hI@iß@gN@eP@^Ì@X@e°@[¸@f¶@`Û@]ß@Tú@%_R@VÙ@f‹@VX@hü@TÎ@[C@d|@Vw@W·@Z›@^T@cö@TK@eø@_x@Z±@%[Æ@]m@Tò@U`@aï@U_@Q@_ò@V@fp@a÷@fF@]n@fi@[°@PS@\g@%^Í@c÷@^Î@fŒ@R@_y@e@YÜ@[P@h»@cø@SH@SG@^²@VÜ@PT@TY@%ey@Så@[€@k‡@Q¾@e@Q¦@`h@U@`W@VY@]¨@^õ@hƒ@X‹@`X@Y¸@%ij@Yf@Yþ@Wî@Wí@TÏ@a\@Xž@P@ez@XŒ@jÇ@Wï@^^@dÒ@[¼@UÝ@%i½@P§@\Þ@SI@Tî@V—@[½@Zk@^U@Sù@Xœ@eC@Pø@RÝ@VÂ@[Ü@Pî@%iC@do@Rž@Rú@Pd@Tï@Qï@Pe@_Ô@eù@ZA@c³@\ö@`þ@XÒ@Q†@\F@%fÒ@dÈ@g…@kþ@d˜@S‰@]à@\h@[F@QB@SÍ@WÚ@Z¬@fS@Zï@PU@bƒ@%aØ@bI@Q§@Y¹@a@eW@`†@Yº@]™@[¨@]©@[â@[á@RÌ@`¾@gÁ@fÝ@%eú@ZD@Zœ@kš@UÄ@aÙ@QÙ@bh@_¥@Zl@d£@^ö@\é@ZÇ@Q‡@W]@]Â@%Q¨@[G@gb@Z­@[@QÚ@Yg@_z@_Z@a‘@cr@iÚ@Sú@c‚@`o@k£@UN@%U·@^÷@cy@[ã@cŒ@eû@aA@Py@^ø@_Õ@g‘@\@iâ@e•@a]@\÷@S¢@%Vð@\†@^Ï@TÅ@W~@WŽ@eº@iÆ@WÛ@QG@jú@P«@Y»@^V@Vñ@`š@Uê@%RŸ@Rû@VŽ@kä@bJ@gš@SŠ@[î@Sû@X@Ql@Yh@]Q@_{@Pù@f·@]ª@%TŽ@Xf@]o@iÐ@bÒ@\ß@k@b¿@Qµ@Q‰@fü@T¶@Se@e–@]í@iÝ@T•@%ZB@f™@]«@`‡@eŽ@[ä@c¦@V·@Vò@eA@aB@XÓ@`i@QÈ@Y{@fß@dð@%d¨@Qð@bø@`ˆ@ZÑ@_ƒ@RÑ@eS@V±@TZ@Yi@cz@jô@W^@e²@i¢@UÆ@%_¶@gc@_Ö@PV@`›@b„@Yq@i[@Y¼@ZC@Wð@fk@V²@cZ@XÔ@b•@T{@%UÅ@XÕ@R˜@ZH@bj@k©@jÜ@bK@bÀ@\€@Z²@`Y@iÇ@`œ@Yž@f\@_×@%aÚ@RÞ@XÖ@S‹@c§@^¹@a’@dJ@cÕ@aœ@X×@bk@d»@WÁ@b–@PW@dê@%PÎ@`@Z@hz@RÍ@U¨@T|@^o@Sþ@c[@hZ@kt@^ú@a°@a^@^ù@a_@%PÚ@T}@b¬@kÝ@e¦@k¦@`ž@k–@a±@cë@RÇ@a“@c´@`‰@aÛ@\Ë@cK@%Vc@\G@R½@R @b®@\‡@RÎ@R²@fU@]p@b…@cì@PX@[ï@Rh@U©@`j@%c{@V@XŽ@Qm@UO@dh@g’@ir@k˜@Uw@X~@Wñ@Uó@b@aÜ@[‚@i˜@%XŸ@`¿@jK@eÌ@^³@U³@`À@ch@Ri@jL@RT@Yj@Um@Uª@\H@Qª@X^@%Tå@dñ@Xg@Y¾@Xe@Xh@br@^Z@SÇ@^‡@g©@\J@]š@Rü@W¹@PY@`Ÿ@%W¢@b—@[±@ha@W@X@` @S´@cÖ@dÓ@[H@Q÷@T~@g{@]R@kÛ@k¾@%Zð@dÙ@cí@R¡@T@Qn@iF@`Š@dÏ@Zn@U“@Zü@a”@að@X²@Ux@c@%aÞ@b†@Rß@_­@e¨@^ü@Tº@[ƒ@^ˆ@^û@^˜@eQ@QÛ@\ˆ@e³@gO@T€@%Sí@^Ð@^W@[A@TA@cŽ@^´@Zñ@Pú@]Ã@`¡@a•@b­@T»@bl@añ@c\@%Zž@^ý@UÓ@PÏ@ež@^X@V³@eü@[„@fõ@jõ@im@Xj@TÐ@_g@]Ù@V£@%f@S¡@WÜ@kŸ@Y©@hL@d¼@R¢@Zò@`‹@^‘@Rj@Tû@R´@XØ@Qà@^‰@%T@iæ@c×@fJ@Yk@TÆ@aC@Sæ@^þ@aD@cØ@_ä@Wò@aÝ@aÌ@c¨@P“@%VÚ@TØ@[…@gp@f¿@YÒ@[ª@dK@c©@a`@f¹@ZÈ@cÙ@_|@`Z@cª@f•@%WÂ@U›@PÄ@\à@bò@_A@Z€@VZ@aø@\Ã@UP@V[@S™@[Q@aE@XÙ@dz@%a–@c]@j·@bó@T¼@h`@k¹@i±@c«@jÞ@Rä@U–@]É@`Á@Pš@h[@fl@%e{@hd@]q@^º@WÃ@R£@iÛ@aF@Rk@Vó@_Y@cÁ@T«@ZŸ@`Â@[†@VÛ@%kÉ@]¬@h@Zó@[‡@kp@f€@X³@Zm@e|@PÒ@P¬@U´@cÛ@cÚ@`p@[«@%hù@aG@SŒ@`Ã@h™@SK@WM@Z@Q«@b³@j€@Uy@h{@T‚@iç@Sç@Yã@%_B@PÛ@d{@a²@QH@^p@[O@k¤@fŽ@hV@fº@b‡@_®@a@k]@V@^q@%Qo@i`@kŒ@kò@a³@TÇ@iº@kd@ci@d™@aß@fæ@P”@hM@RD@YÇ@Ua@%bÁ@b´@`[@Wj@Z´@e`@P¾@_N@eÇ@eÆ@Pz@WŠ@P›@Pf@eÛ@XK@Rà@%W‹@Ub@]x@]@\‰@\‘@fý@kË@RÈ@k·@Qñ@c^@X_@Sî@XÚ@c_@\²@%dó@]î@WÝ@a—@\i@d‰@kÃ@XÛ@UÞ@V¸@P­@eÈ@ea@eÜ@iÀ@[Ç@cL@%^µ@bˆ@aa@Wó@_a@b‰@VE@Tƒ@eÖ@Uî@\á@^Š@Uù@T[@[ˆ@gP@Qˆ@%Pï@^™@\«@Rí@ab@`\@Vd@iÑ@[‰@fX@_[@Uœ@cM@aò@_å@\@^ @%\j@b›@Q¬@da@kz@_Ø@]Ú@kX@kr@[Š@\\@cÜ@_ó@QŠ@V\@S¥@^‹@%^Œ@Z®@i€@Xò@^š@U”@UÇ@W£@`Ä@[‹@Zô@aH@bŠ@Qá@Yä@`×@]­@%Vl@j‚@ZE@e´@W_@i¯@U«@X`@ac@Un@\¬@c@U•@\­@cƒ@`û@aI@%Yl@Ws@VÌ@f]@_¦@fÞ@_§@V˜@Sè@e}@\@f–@\@hx@c¬@R®@cÝ@%P„@h‚@eR@Sï@c`@^Ñ@eÉ@T„@_c@Zõ@^›@fL@f»@fq@aJ@Qp@eì@%[¬@[Œ@^’@[I@]®@]ï@Wº@T–@dë@U—@gÂ@_“@XÜ@T·@f@Qq@dÔ@%Y}@QÜ@ad@\³@\w@\‚@^¶@`Å@Uë@f¼@Q­@`Æ@fm@Y~@e—@Yâ@d½@%R¤@e@kÁ@Ym@XG@[ð@iÊ@S@dn@_b@W»@_‘@YÀ@e~@[ñ@Rl@fM@%\â@_’@bÃ@\k@]I@`Ç@X€@Qò@V‘@Rý@RÏ@bÄ@i»@SŽ@^Y@j–@fN@%]‚@[@fO@kÆ@X @f@Vx@\ê@e“@k°@di@[­@_¯@W¤@d¾@aà@hÏ@%R¥@PZ@XÝ@dŠ@YÁ@Xk@eý@TÙ@aó@Yƒ@i•@S@S@kº@PÜ@TÈ@k¥@%Zö@V¹@kÂ@R¦@kö@Rm@fY@Qr@]S@dL@Uc@S‘@fö@Ud@QÁ@eþ@Pð@%Yn@Uß@cµ@[Ž@c@Q®@WÞ@]ƒ@WÄ@Xø@V’@[@fø@Y@U†@i\@dÚ@%^ž@_G@RÒ@RP@fÅ@WÅ@Wû@V´@V¤@UQ@^Ò@V]@Vy@\ë@U¬@Wß@kf@%e@XÞ@ié@Rn@Z¡@V^@c„@a˜@hu@Qs@cÞ@iè@X¡@ZI@eµ@f÷@S’@%]Ñ@j“@V“@hS@Xo@Ve@a™@Xß@R§@X´@VÓ@]r@X@\ƒ@\l@^·@\ž@%\–@fÏ@dj@Pû@\m@Q¶@W`@YA@_æ@[®@iz@\¶@e»@fÉ@Q‹@R¨@dM@%eÊ@g›@_k@U­@\·@Qó@Tâ@U®@kÊ@]~@U¶@cß@S“@Uµ@Ue@i®@Vf@%cà@Vº@R¯@VÍ@Vz@g“@gQ@Zo@Uf@g¡@Pä@Wb@T\@cñ@_C@`Õ@TL@%\’@i…@Xù@X@j”@Xp@aK@Q¯@Zq@Yo@ae@`k@`l@dk@kY@U˜@_\@%i¾@bµ@\ì@\x@UÔ@Wà@P•@R©@ˆa@ˆb@ˆc@ˆe@ˆh@ˆi@ˆj@ˆk@ˆl@%ˆq@ˆs@ˆt@ˆu@ˆv@ˆw@ˆx@ˆy@ˆ{@ˆ|@ˆ}@ˆ@ˆ‚@ˆ…@ˆ‰@ˆ‘@ˆ“@%ˆ•@ˆ–@ˆ—@ˆ¡@ˆ¢@ˆ¥@ˆ©@ˆµ@ˆ·@ˆÁ@ˆÅ@ˆÉ@ˆá@ˆâ@ˆå@ˆè@ˆé@%ˆê@ˆë@ˆñ@ˆó@ˆõ@ˆö@ˆ÷@ˆø@ˆù@ˆû@ˆü@ˆý@‰A@‰E@‰H@‰I@‰Q@%‰S@‰U@‰V@‰W@‰a@‰b@‰c@‰e@‰h@‰i@‰q@‰s@‰u@‰v@‰w@‰{@‰@%‰…@‰‰@‰“@‰•@‰¡@‰¢@‰¥@‰¨@‰©@‰ª@‰«@‰­@‰°@‰±@‰³@‰µ@‰·@%‰¸@‰¼@‰Á@‰Â@‰Å@‰É@‰Ë@‰Ñ@‰Ó@‰Õ@‰×@‰á@‰â@‰å@‰é@‰ñ@‰ó@%‰õ@‰ö@‰÷@ŠA@ŠB@ŠE@ŠI@ŠQ@ŠS@ŠU@ŠW@Ša@Še@Ši@Šs@Šu@Š@%Š‚@Š…@Šˆ@Š‰@ŠŠ@Š‹@Š@Š‘@Š“@Š•@Š—@Š˜@Š¡@Š¢@Š¥@Š©@Šµ@%Š¶@Š·@ŠÁ@ŠÕ@Šá@Šâ@Šå@Šé@Šñ@Šó@Šõ@Š÷@‹A@‹E@‹I@‹Q@‹a@%‹b@‹e@‹h@‹i@‹j@‹k@‹q@‹s@‹u@‹w@‹y@‹{@‹@‹•@‹¡@‹¢@‹¥@%‹¨@‹©@‹«@‹­@‹±@‹³@‹µ@‹¶@‹·@‹¸@‹»@‹¼@Œa@Œb@Œc@Œe@Œi@%Œk@Œq@Œs@Œu@Œv@Œw@Œx@Œ{@Œ@Œ‚@Œ…@Œ‰@Œ‘@Œ“@Œ•@Œ–@Œ—@%Œ¡@Œ¢@Œ©@ŒÁ@Œá@Œâ@Œã@Œå@Œé@Œñ@Œó@Œõ@Œö@Œ÷@A@B@E@%Q@U@W@a@e@i@q@u@v@{@@¡@¢@¥@§@¨@©@%±@³@µ@·@¸@¹@Á@Â@Å@É@Ñ@Õ@Ö@×@á@â@å@%÷@ŽA@ŽE@ŽI@ŽQ@ŽS@ŽU@ŽW@Ža@Žx@Ž@Ž‚@Ž…@Žˆ@Ž‰@Ž@Ž‘@%Ž“@Ž•@Ž—@Ž˜@Ž¡@Ž¥@Ž©@Žµ@Ž¶@Ž·@ŽÁ@ŽÂ@ŽÅ@ŽÉ@ŽÑ@ŽÓ@ŽÖ@%Žá@Žâ@Žå@Žé@Žñ@Žó@Ž÷@A@a@b@e@g@i@k@p@q@s@%u@w@{@@¡@¢@¥@©@±@³@µ@¶@·@a@b@c@e@%h@i@j@k@q@s@u@v@w@x@y@{@}@@‚@…@ˆ@%‰@‘@“@•@–@—@¡@¢@¥@©@±@·@Á@á@â@ä@å@%è@é@ë@ì@ñ@ó@õ@ö@÷@ø@ý@‘A@‘B@‘E@‘I@‘Q@‘S@%‘U@‘V@‘W@‘a@‘b@‘e@‘h@‘i@‘q@‘s@‘u@‘v@‘w@‘z@‘{@‘@‘…@%‘•@‘¡@‘¢@‘£@‘¥@‘©@‘«@‘±@‘³@‘µ@‘·@‘¼@‘½@‘Á@‘Å@‘É@‘Õ@%‘Ö@‘á@’A@’E@’I@’Q@’S@’U@’a@’b@’e@’i@’s@’u@’w@’@’‚@%’…@’ˆ@’‰@’‘@’“@’•@’—@’¡@’µ@’¶@’Á@’á@’å@’é@’ñ@’ó@“A@%“B@“I@“Q@“S@“W@“a@“b@“e@“i@“j@“k@“q@“s@“u@“w@“x@“y@%“|@“@“…@“‰@“—@“¡@“¢@“¥@“©@“ª@“«@“±@“³@“µ@“·@“º@“¼@%”a@”b@”c@”e@”h@”i@”j@”k@”l@”p@”q@”s@”u@”v@”w@”x@”y@%”}@”@”‚@”…@”‰@”‘@”“@”•@”–@”—@”¡@”·@”Á@”á@”â@”ã@”å@%”è@”é@”ë@”ì@”ñ@”ó@”õ@”ö@”÷@”ø@”ù@”ü@•A@•B@•E@•I@•Q@%•S@•U@•V@•W@•a@•e@•i@•q@•v@•w@•@•…@•¡@•¢@•¥@•¨@•©@%•«@•­@•°@•±@•³@•µ@•·@•¹@•»@•Á@•Å@•É@•á@•å@•õ@•ö@–A@%–E@–I@–Q@–S@–U@–V@–a@–@–‚@–…@–ˆ@–‰@–‘@–“@–•@–—@–¡@%–µ@–¶@–Á@–×@–á@–å@–é@–ñ@–ó@–õ@–÷@—A@—B@—E@—I@—Q@—W@%—a@—b@—e@—h@—i@—k@—l@—q@—s@—u@—w@—@—¡@—¢@—¥@—¨@—©@%—±@—³@—µ@—¶@—·@—¸@—¼@˜a@˜b@˜c@˜e@˜h@˜i@˜p@˜q@˜s@˜u@%˜v@˜w@˜}@˜@˜‚@˜…@˜‰@˜‘@˜“@˜•@˜–@˜—@˜¡@˜Á@˜á@˜â@˜å@%˜é@˜ë@˜ì@˜ñ@˜ó@˜õ@˜ö@˜÷@˜ý@™A@™B@™E@™I@™Q@™S@™U@™V@%™W@™a@™v@™@™¡@™¢@™¥@™©@™·@™Á@™É@™á@šA@šE@ša@š@š‚@%š…@š‰@š@š‘@š—@š¡@šÁ@šá@šå@šé@šñ@šó@š÷@›A@›a@›b@›e@%›h@›i@›q@›s@›u@›@›…@›‰@›‘@›“@›¡@›¥@›©@›±@›³@›µ@›·@%œa@œb@œe@œi@œq@œs@œu@œv@œw@œx@œ|@œ}@œ@œ‚@œ…@œ‰@œ‘@%œ“@œ•@œ–@œ—@œ¡@œ¢@œ¥@œµ@œ·@œÁ@œá@œâ@œå@œé@œñ@œó@œõ@%œö@œ÷@œý@A@B@E@H@I@Q@S@U@W@a@b@e@i@q@%s@u@v@w@@…@“@•@¡@¢@¥@©@±@³@µ@·@Á@%Å@×@á@ö@žA@žE@žI@žQ@žS@žU@žW@ža@že@ži@žq@žs@žu@%žw@ž@ž‚@ž…@ž‰@ž‘@ž“@ž•@ž—@ž¡@žµ@ž¶@žÁ@žá@žâ@žå@žé@%žñ@žõ@ž÷@ŸA@ŸB@ŸE@ŸI@ŸQ@ŸS@ŸU@ŸW@Ÿa@Ÿb@Ÿe@Ÿi@Ÿq@Ÿs@%Ÿu@Ÿw@Ÿx@Ÿ{@Ÿ|@Ÿ@Ÿ¡@Ÿ¢@Ÿ¥@Ÿ©@Ÿ±@Ÿ³@Ÿµ@Ÿ·@ a@ b@ e@% g@ h@ i@ j@ k@ q@ s@ u@ w@ x@ y@ {@ }@ @ ‚@ …@ ‰@% ‘@ “@ •@ –@ —@ ˜@ ™@ ¡@ ¢@ ©@ ·@ Á@ á@ â@ å@ é@ ë@% ñ@ ó@ õ@ ÷@ ø@ ý@¡A@¡B@¡E@¡I@¡Q@¡S@¡U@¡V@¡W@¡Y@¡[@%¡a@¡b@¡e@¡i@¡q@¡u@¡v@¡w@¡y@¡@¡¡@¡¢@¡¤@¡¥@¡¨@¡©@¡«@%¡±@¡³@¡µ@¡·@¡½@¡Á@¡Å@¡Ö@¡×@¡á@¢A@¢E@¢I@¢S@¢U@¢W@¢a@%¢e@¢i@¢s@¢u@¢@¢‚@¢ƒ@¢…@¢ˆ@¢‰@¢Š@¢‹@¢‘@¢“@¢•@¢—@¢›@%¢@¢¡@¢¥@¢©@¢³@¢µ@¢Á@¢á@¢å@¢é@£A@£E@£I@£Q@£U@£a@£b@%£e@£i@£q@£u@£w@£@£…@£¡@£¢@£¥@£¨@£©@£«@£±@£³@£µ@£¶@%£·@£¸@£¹@£»@¤a@¤b@¤c@¤d@¤e@¤h@¤i@¤j@¤k@¤l@¤q@¤s@¤u@%¤v@¤w@¤{@¤@¤‚@¤…@¤ˆ@¤‰@¤‘@¤“@¤•@¤–@¤—@¤›@¤¡@¤¢@¤¥@%¤±@¤³@¤Á@¤á@¤â@¤å@¤è@¤é@¤ë@¤ñ@¤ó@¤õ@¤ö@¤÷@¤ø@¤ú@¥A@%¥B@¥E@¥H@¥I@¥Q@¥S@¥U@¥V@¥W@¥[@¥a@¥b@¥e@¥i@¥q@¥s@¥u@%¥v@¥w@¥x@¥y@¥z@¥{@¥@¥…@¥¡@¥¢@¥£@¥¥@¥©@¥±@¥³@¥µ@¥·@%¥Á@¥Å@¥Õ@¥Ö@¥á@¥ö@¦A@¦B@¦E@¦I@¦Q@¦S@¦a@¦e@¦@¦‚@¦…@%¦ˆ@¦‰@¦Š@¦‹@¦‘@¦“@¦•@¦—@¦™@¦›@¦œ@¦¡@¦©@¦¶@¦º@¦Á@¦á@%¦â@¦å@¦é@¦÷@§A@§E@§I@§Q@§U@§W@§a@§b@§e@§i@§m@§q@§s@%§u@§w@§@§¡@§¢@§¥@§¨@§©@§«@§±@§³@§µ@§·@§¸@§¹@¨a@¨b@%¨e@¨i@¨k@¨q@¨s@¨u@¨v@¨w@¨}@¨@¨‚@¨…@¨‰@¨‘@¨“@¨•@¨–@%¨—@¨¡@¨¢@¨¥@¨±@¨Á@¨á@¨â@¨å@¨è@¨é@¨ñ@¨õ@¨ö@¨÷@©A@©B@%©E@©I@©U@©W@©a@©b@©q@©s@©u@©v@©w@©@©¡@©¢@©¥@©©@©±@%©³@©·@©Á@©á@ªA@ªa@ªq@ªw@ª@ª‚@ª…@ª‰@ªŠ@ª‘@ª“@ª•@ª—@%ª¡@ªÁ@ªá@«A@«W@«a@«b@«e@«i@«q@«s@«@«¡@«¢@«¥@«©@«±@%«³@«µ@«·@¬a@¬b@¬c@¬d@¬e@¬h@¬i@¬j@¬k@¬l@¬p@¬q@¬s@¬u@%¬v@¬w@¬y@¬{@¬}@¬@¬‚@¬…@¬ˆ@¬‰@¬‘@¬“@¬•@¬–@¬—@¬¡@¬¢@%¬¥@¬©@¬±@¬³@¬µ@¬·@¬Á@¬Å@¬É@¬Ñ@¬×@¬á@¬â@¬ã@¬ä@¬å@¬è@%¬é@¬ê@¬ë@¬ì@¬ñ@¬ó@¬õ@¬ö@¬÷@¬ü@­A@­B@­E@­H@­I@­Q@­S@%­U@­V@­W@­[@­a@­b@­d@­e@­i@­q@­s@­u@­v@­w@­@­…@­‰@%­—@­¡@­¢@­£@­¥@­¨@­©@­«@­±@­³@­µ@­·@­»@­Á@­Â@­Å@­É@%­Õ@­×@­á@­å@­é@­ñ@­õ@­ö@®A@®E@®I@®Q@®S@®U@®a@®b@®e@%®i@®q@®s@®u@®w@®@®‚@®…@®ˆ@®‰@®‘@®“@®•@®—@®™@®›@®œ@%®¡@®¶@®Á@®Â@®Å@®É@®Ñ@®×@®á@®â@®å@®é@®ñ@®ó@®õ@®÷@¯A@%¯B@¯E@¯I@¯Q@¯U@¯W@¯a@¯b@¯e@¯i@¯j@¯p@¯q@¯s@¯u@¯w@¯@%¯¡@¯¢@¯¥@¯¨@¯©@¯«@¯°@¯±@¯³@¯µ@¯·@¯¼@°a@°b@°d@°e@°i@%°k@°q@°s@°u@°v@°w@°}@°@°‚@°…@°‰@°‘@°“@°•@°–@°—@°¡@%°µ@°·@°Á@°á@°â@°å@°é@°ë@°ñ@°ó@°õ@°ö@°÷@±A@±B@±E@±I@%±W@±a@±@±…@±¡@±¢@±¥@±¨@±©@±«@±±@±³@±·@±Á@±Â@±Å@±É@%±Ö@±á@±ö@²A@²E@²I@²Q@²S@²U@²a@²@²‚@²…@²‰@²‘@²“@²•@%²—@²¡@²µ@²¶@²Á@²á@²å@²ý@³A@³W@³a@³b@³e@³i@³k@³p@³q@%³s@³@³…@³‰@³‘@³¡@³¢@³¥@³©@³±@³³@³µ@³¶@³·@³¹@´a@´b@%´e@´f@´g@´i@´j@´k@´l@´p@´q@´s@´u@´v@´w@´{@´|@´}@´@%´‚@´…@´‰@´‘@´“@´•@´–@´—@´¡@´¢@´¥@´©@´¬@´±@´³@´µ@´¶@%´·@´»@´½@´Á@´Å@´É@´Ó@´Õ@´á@´â@´ã@´å@´æ@´è@´é@´ê@´ë@%´ñ@´ó@´ô@´õ@´ö@´÷@´ø@´ú@´ü@µA@µB@µE@µI@µQ@µS@µU@µW@%µa@µb@µc@µe@µf@µh@µi@µk@µl@µq@µs@µt@µu@µv@µw@µ{@µ|@%µ}@µ@µ…@µ‰@µ‘@µ“@µ•@µ–@µ—@µ¡@µ¢@µ¥@µ¨@µ©@µª@µ«@µ­@%µ°@µ±@µ³@µµ@µ·@µ¸@µ¹@µÁ@µÂ@µÅ@µÉ@µÑ@µÓ@µÕ@µÖ@µ×@µá@%µâ@µå@µñ@µõ@µ÷@¶A@¶B@¶E@¶I@¶Q@¶S@¶U@¶W@¶a@¶b@¶e@¶i@%¶q@¶s@¶u@¶w@¶@¶‚@¶…@¶ˆ@¶‰@¶Š@¶‹@¶‘@¶“@¶•@¶—@¶¡@¶¢@%¶¥@¶©@¶±@¶³@¶µ@¶¶@¶·@¶Á@¶Â@¶Å@¶É@¶Ñ@¶Ó@¶×@¶á@¶â@¶å@%¶è@¶é@¶ñ@¶ó@¶õ@¶÷@·A@·B@·E@·I@·Q@·S@·U@·W@·X@·Y@·a@%·b@·e@·i@·o@·q@·s@·u@·w@·x@·y@·z@·{@·|@·}@·@·…@·‰@%·‘@·•@·¡@·¢@·¥@·¨@·©@·ª@·«@·°@·±@·³@·µ@·¶@··@·¸@·¼@%¸a@¸b@¸e@¸g@¸h@¸i@¸k@¸q@¸s@¸u@¸v@¸w@¸x@¸y@¸|@¸@¸‚@%¸…@¸‰@¸‘@¸“@¸•@¸–@¸—@¸¡@¸¢@¸¥@¸§@¸©@¸±@¸·@¸Á@¸Å@¸É@%¸á@¸â@¸å@¸è@¸é@¸ë@¸ñ@¸ó@¸õ@¸ö@¸÷@¸ø@¸ý@¹A@¹B@¹E@¹I@%¹Q@¹S@¹U@¹W@¹a@¹b@¹e@¹i@¹q@¹s@¹u@¹v@¹w@¹@¹¡@¹¢@¹¥@%¹©@¹«@¹±@¹³@¹µ@¹·@¹¸@¹¹@¹½@¹Á@¹Â@¹Å@¹É@¹Ñ@¹Ó@¹Õ@¹Ö@%¹×@¹á@¹å@¹é@¹ñ@¹ö@¹÷@ºA@ºE@ºI@ºQ@ºS@ºU@ºW@ºa@ºb@ºe@%ºi@ºq@ºs@ºw@º@º‚@º…@º‰@ºŠ@º‹@º‘@º“@º•@º—@º¡@ºµ@º¶@%ºÁ@ºá@ºâ@ºå@ºé@ºñ@ºó@ºõ@»A@»B@»E@»I@»Q@»a@»b@»e@»i@%»q@»s@»u@»w@»@»¡@»¢@»¥@»¨@»©@»«@»±@»³@»µ@»¶@»·@»¸@%»»@»¼@¼a@¼b@¼e@¼g@¼i@¼l@¼q@¼s@¼u@¼v@¼w@¼@¼‚@¼…@¼‰@%¼‘@¼“@¼•@¼–@¼—@¼¡@¼¥@¼·@¼Á@¼á@¼â@¼å@¼é@¼ì@¼ñ@¼ó@¼õ@%¼ö@¼÷@½A@½I@½W@½a@½u@½v@½@½¡@½¢@½¥@½©@½±@½³@½µ@½·@%½¸@½¹@½Á@½Â@½É@½Ö@½á@½ö@¾A@¾E@¾I@¾Q@¾S@¾a@¾w@¾@¾‚@%¾…@¾‰@¾‘@¾“@¾—@¾¡@¾¶@¾·@¾Á@¾á@¿A@¿a@¿q@¿s@¿u@¿w@¿@%¿¡@¿¢@¿¥@¿©@¿±@¿³@¿µ@¿·@¿¸@¿¼@¿½@Àa@Àb@Àe@Àg@Àh@Ài@%Àq@Às@Àu@Àv@Àw@Àx@Ày@À|@À@À‚@À…@À‰@À‘@À“@À•@À–@À—@%À¡@À¥@À§@À©@À±@À³@À·@ÀÁ@Àá@Àâ@Àå@Àé@Àñ@Àó@Àõ@Àö@À÷@%ÁA@ÁB@ÁE@ÁI@ÁQ@ÁS@ÁU@ÁW@Áa@Áe@Áu@Áv@Áw@Á@Á…@Á—@Á¡@%Á¢@Á¥@Á©@Á±@Á³@Áµ@Á·@ÁÁ@ÁÅ@ÁÉ@Á×@Áá@ÂA@ÂE@ÂI@ÂQ@ÂS@%ÂU@ÂW@Âa@Âq@Â@‚@Â…@‰@‘@“@•@—@¡@µ@¶@ÂÁ@ÂÅ@%Âá@Âå@Âé@Âñ@Âó@Âõ@Â÷@ÃA@ÃE@ÃI@ÃQ@ÃW@Ãa@Ãb@Ãe@Ãi@Ãq@%Ãs@Ãu@Ãw@Ã@á@â@Ã¥@è@é@ê@ñ@ó@õ@÷@Äa@Äb@Äe@%Äh@Äi@Äq@Äs@Äu@Äw@Ä@Ä‚@Ä…@Ĉ@ĉ@Ä‘@Ä“@Ä•@Ä–@Ä—@Ä›@%Ä¡@Ä¢@Ä·@ÄÁ@Äá@Äâ@Äå@Äè@Äé@Äñ@Äó@Äõ@Äö@Ä÷@Äû@ÅA@ÅB@%ÅE@ÅI@ÅQ@ÅS@ÅU@ÅW@Å[@Åa@Åe@Åi@Åq@Ås@Åu@Åv@Åw@Å@Å¡@%Å¢@Å¥@Å©@ű@ų@ŵ@Å·@ÅÁ@ÅÂ@ÅÅ@ÅÉ@ÅÑ@Å×@Åá@Åâ@Åå@Åõ@%Å÷@ÆA@ÆE@ÆI@ÆW@Æa@Æ@Æ‚@Æ…@Ɖ@Æ‘@Æ“@Æ•@Æ—@Æ¡@Æ¥@Æ©@%Æ·@ÆÁ@Æ×@Æá@Æâ@Æå@Æé@Æñ@Æó@Æõ@Æ÷@ÇA@ÇE@ÇI@ÇQ@Ça@Çb@%Çe@Çi@Çq@Çs@Çw@Ç@Ç¡@Ç¢@Ç¥@Ç©@DZ@dz@ǵ@Ç·@Èa@Èb@Èe@%Èi@Èj@Èq@Ès@Èu@Èv@Èw@È@È‚@È…@ȉ@È‘@È“@È•@È–@È—@È¡@%È·@ÈÁ@Èá@Èâ@Èå@Èé@Èë@Èñ@Èó@Èõ@Èö@È÷@ÉA@ÉB@ÉE@ÉI@ÉQ@%ÉS@ÉU@ÉV@ÉW@Éa@Éb@Ée@Év@É@É…@É¡@É¢@É¥@É©@ɱ@ɳ@ɵ@%É·@ɼ@ÉÁ@ÉÅ@Éá@ÊA@ÊE@ÊU@ÊW@Êa@Ê@Ê‚@Ê…@ʉ@Ê‘@Ê“@Ê•@%Ê—@Ê¡@ʶ@ÊÁ@ÊÕ@Êá@Êâ@Êå@Êé@Êñ@Êó@Êõ@Ê÷@ËA@ËE@ËI@ËQ@%ËW@Ëa@Ëb@Ëe@Ëh@Ëi@Ëk@Ëq@Ës@Ëu@Ëw@Ë@Ë…@ˉ@Ë‘@Ë“@Ë•@%Ë¡@Ë¢@Ë¥@Ë©@˱@˳@˵@Ë·@˼@Ìa@Ìb@Ìc@Ìe@Ìi@Ìk@Ìq@Ìs@%Ìu@Ìv@Ìw@Ì{@Ì|@Ì@Ì‚@Ì…@̉@Ì‘@Ì“@Ì•@Ì–@Ì—@Ì¡@Ì¢@Ì·@%ÌÁ@Ìá@Ìâ@Ìå@Ìé@Ìñ@Ìó@Ìõ@Ìö@Ì÷@ÍA@ÍB@ÍE@ÍI@ÍQ@ÍS@ÍU@%ÍW@Í\@Ía@Íb@Íe@Íi@Íq@Ís@Íu@Ív@Íw@Í@͉@Í“@Í•@Í¡@Í¢@%Í¥@Í©@ͱ@ͳ@͵@Í·@ÍÁ@Í×@Íá@ÎA@ÎE@Îa@Îe@Îi@Îs@Îu@Î@%΂@Î…@Έ@Ή@΋@Α@Γ@Ε@Η@Ρ@η@ÎÁ@Îá@Îå@Îé@Îñ@Îõ@%ÏA@ÏB@ÏE@ÏI@ÏQ@ÏU@ÏW@Ïa@Ïb@Ïe@Ïi@Ïm@Ïq@Ïs@Ïu@Ïw@Ï@%Ï…@Ï¡@Ï¢@Ï¥@Ï©@ϱ@ϳ@ϵ@Ï·@Ða@Ðb@Ðe@Ðh@Ði@Ðj@Ðn@Ðq@%Ðs@Ðu@Ðv@Ðw@Ð{@Ð@Ђ@Ð…@Љ@Б@Г@Е@Ж@З@С@з@ÐÁ@%Ðá@Ðâ@Ðå@Ðè@Ðé@Ðë@Ðñ@Ðó@Ðõ@Ð÷@ÑA@ÑB@ÑE@ÑI@ÑQ@ÑS@ÑU@%ÑW@Ña@Ñb@Ñe@Ñi@Ñq@Ñs@Ñu@Ñv@Ñw@Ñ@Ñ…@щ@Ñ‘@Ñ“@Ñ¡@Ñ¢@%Ñ¥@Ñ©@Ñ®@ѱ@ѳ@ѵ@Ñ·@Ñ»@ÑÁ@ÑÂ@ÑÅ@ÑÉ@ÑÕ@Ñ×@Ñá@Ñâ@Ñå@%Ñõ@Ñ÷@ÒA@ÒB@ÒE@ÒI@ÒS@ÒU@ÒW@Òa@Òb@Òe@Òi@Òq@Òs@Òu@Ò@%Ò‚@Ò…@Ò‰@ÒŽ@Ò‘@Ò“@Ò•@Ò—@Ò¡@Ò¥@Ò©@Ò±@Ò·@ÒÁ@ÒÂ@ÒÅ@ÒÉ@%ÒÑ@Ò×@Òá@Òâ@Òå@Òé@Òñ@Òó@Òõ@Ò÷@ÓA@ÓB@ÓE@ÓI@ÓQ@ÓU@ÓW@%Óa@Ób@Óe@Óg@Óh@Ói@Ój@Óq@Ós@Óu@Ów@Ó{@Ó@Ó‚@Ó…@Ó‰@Ó‘@%Ó“@Ó—@Ó¡@Ó¢@Ó¥@Ó©@Ó±@Ó³@Óµ@Ó·@ÔA@ÔB@ÔC@ÔD@ÔE@ÔF@ÔG@%ÔH@ÔI@ÔJ@ÔK@ÔL@ÔM@ÔN@ÔO@ÔP@ÔQ@ÔR@ÔS@ÔT@ÔU@ÔV@ÔW@ÔX@%ÔY@ÔZ@Ô[@Ô\@Ô]@Ô^@Ô_@Ô`@Ôa@Ôb@Ôc@Ôd@Ôe@Ôf@Ôg@Ôh@Ôi@%Ôj@Ôk@Ôl@Ôm@Ôn@Ôo@Ôp@Ôq@Ôr@Ôs@Ôt@Ôu@Ôv@Ôw@Ôx@Ôy@Ôz@%Ô{@Ô|@Ô}@Ô~@Ô@Ô@Ô‚@Ôƒ@Ô„@Ô…@Ô†@Ô‡@Ôˆ@Ô‰@ÔŠ@Ô‹@ÔŒ@%Ô@ÔŽ@Ô@Ô@Ô‘@Ô’@Ô“@Ô”@Ô•@Ô–@Ô—@Ô˜@Ô™@Ôš@Ô›@Ôœ@Ô@%Ôž@ÔŸ@Ô @Ô¡@Ô¢@Ô£@Ô¤@Ô¥@Ô¦@Ô§@Ô¨@Ô©@Ôª@Ô«@Ô¬@Ô­@Ô®@%Ô¯@Ô°@Ô±@Ô²@Ô³@Ô´@Ôµ@Ô¶@Ô·@Ô¸@Ô¹@Ôº@Ô»@Ô¼@Ô½@Ô¾@Ô¿@%ÔÀ@ÔÁ@ÔÂ@ÔÃ@ÔÄ@ÔÅ@ÔÆ@ÔÇ@ÔÈ@ÔÉ@ÔÊ@ÔË@ÔÌ@ÔÍ@ÔÎ@ÔÏ@ÔÐ@%ÔÑ@ÔÒ@ÔÓ@ÔÔ@ÔÕ@ÔÖ@Ô×@ÔØ@ÔÙ@ÔÚ@ÔÛ@ÔÜ@ÔÝ@ÔÞ@Ôß@Ôà@Ôá@%Ôâ@Ôã@Ôä@Ôå@Ôæ@Ôç@Ôè@Ôé@Ôê@Ôë@Ôì@Ôí@Ôî@Ôï@Ôð@Ôñ@Ôò@%Ôó@Ôô@Ôõ@Ôö@Ô÷@Ôø@Ôù@Ôú@Ôû@Ôü@Ôý@ÕA@ÕB@ÕC@ÕD@ÕE@ÕF@%ÕG@ÕH@ÕI@ÕJ@ÕK@ÕL@ÕM@ÕN@ÕO@ÕP@ÕQ@ÕR@ÕS@ÕT@ÕU@ÕV@ÕW@%ÕX@ÕY@ÕZ@Õ[@Õ\@Õ]@Õ^@Õ_@Õ`@Õa@Õb@Õc@Õd@Õe@Õf@Õg@Õh@%Õi@Õj@Õk@Õl@Õm@Õn@Õo@Õp@Õq@Õr@Õs@Õt@Õu@Õv@Õw@Õx@Õy@%Õz@Õ{@Õ|@Õ}@Õ~@Õ@Õ@Õ‚@Õƒ@Õ„@Õ…@Õ†@Õ‡@Õˆ@Õ‰@ÕŠ@Õ‹@%ÕŒ@Õ@ÕŽ@Õ@Õ@Õ‘@Õ’@Õ“@Õ”@Õ•@Õ–@Õ—@Õ˜@Õ™@Õš@Õ›@Õœ@%Õ@Õž@ÕŸ@Õ @Õ¡@Õ¢@Õ£@Õ¤@Õ¥@Õ¦@Õ§@Õ¨@Õ©@Õª@Õ«@Õ¬@Õ­@%Õ®@Õ¯@Õ°@Õ±@Õ²@Õ³@Õ´@Õµ@Õ¶@Õ·@Õ¸@Õ¹@Õº@Õ»@Õ¼@Õ½@Õ¾@%Õ¿@ÕÀ@ÕÁ@ÕÂ@ÕÃ@ÕÄ@ÕÅ@ÕÆ@ÕÇ@ÕÈ@ÕÉ@ÕÊ@ÕË@ÕÌ@ÕÍ@ÕÎ@ÕÏ@%ÕÐ@ÕÑ@ÕÒ@ÕÓ@ÕÔ@ÕÕ@ÕÖ@Õ×@ÕØ@ÕÙ@ÕÚ@ÕÛ@ÕÜ@ÕÝ@ÕÞ@Õß@Õà@%Õá@Õâ@Õã@Õä@Õå@Õæ@Õç@Õè@Õé@Õê@Õë@Õì@Õí@Õî@Õï@Õð@Õñ@%Õò@Õó@Õô@Õõ@Õö@Õ÷@Õø@Õù@Õú@Õû@Õü@Õý@ÖA@ÖB@ÖC@ÖD@ÖE@%ÖF@ÖG@ÖH@ÖI@ÖJ@ÖK@ÖL@ÖM@ÖN@ÖO@ÖP@ÖQ@ÖR@ÖS@ÖT@ÖU@ÖV@%ÖW@ÖX@ÖY@ÖZ@Ö[@Ö\@Ö]@Ö^@Ö_@Ö`@Öa@Öb@Öc@Öd@Öe@Öf@Ög@%Öh@Öi@Öj@Ök@Öl@Öm@Ön@Öo@Öp@Öq@Ör@Ös@Öt@Öu@Öv@Öw@Öx@%Öy@Öz@Ö{@Ö|@Ö}@Ö~@Ö@Ö@Ö‚@Öƒ@Ö„@Ö…@Ö†@Ö‡@Öˆ@Ö‰@ÖŠ@%Ö‹@ÖŒ@Ö@ÖŽ@Ö@Ö@Ö‘@Ö’@Ö“@Ö”@Ö•@Ö–@Ö—@Ö˜@Ö™@Öš@Ö›@%Öœ@Ö@Öž@ÖŸ@Ö @Ö¡@Ö¢@Ö£@Ö¤@Ö¥@Ö¦@Ö§@Ö¨@Ö©@Öª@Ö«@Ö¬@%Ö­@Ö®@Ö¯@Ö°@Ö±@Ö²@Ö³@Ö´@Öµ@Ö¶@Ö·@Ö¸@Ö¹@Öº@Ö»@Ö¼@Ö½@%Ö¾@Ö¿@ÖÀ@ÖÁ@ÖÂ@ÖÃ@ÖÄ@ÖÅ@ÖÆ@ÖÇ@ÖÈ@ÖÉ@ÖÊ@ÖË@ÖÌ@ÖÍ@ÖÎ@%ÖÏ@ÖÐ@ÖÑ@ÖÒ@ÖÓ@ÖÔ@ÖÕ@ÖÖ@Ö×@ÖØ@ÖÙ@ÖÚ@ÖÛ@ÖÜ@ÖÝ@ÖÞ@Öß@%Öà@Öá@Öâ@Öã@Öä@Öå@Öæ@Öç@Öè@Öé@Öê@Öë@Öì@Öí@Öî@Öï@Öð@%Öñ@Öò@Öó@Öô@Öõ@Öö@Ö÷@Öø@Öù@Öú@Öû@Öü@Öý@×A@×B@×C@×D@%×E@×F@×G@×H@×I@×J@×K@×L@×M@×N@×O@×P@×Q@×R@×S@×T@×U@%×V@×W@×X@×Y@×Z@×[@×\@×]@×^@×_@×`@×a@×b@×c@×d@×e@×f@%×g@×h@×i@×j@×k@×l@×m@×n@×o@×p@×q@×r@×s@×t@×u@×v@×w@%×x@×y@×z@×{@×|@×}@×~@×@×@ׂ@׃@ׄ@×…@׆@ׇ@׈@׉@%׊@׋@׌@×@׎@×@×@ב@×’@ד@×”@ו@×–@×—@ט@×™@ך@%×›@ל@×@מ@ן@× @ס@×¢@×£@פ@×¥@צ@ק@ר@ש@ת@׫@%׬@×­@×®@ׯ@×°@×±@ײ@׳@×´@×µ@׶@×·@׸@×¹@׺@×»@×¼@%×½@×¾@׿@×À@×Á@×Â@×Ã@×Ä@×Å@×Æ@×Ç@×È@×É@×Ê@×Ë@×Ì@×Í@%×Î@×Ï@×Ð@×Ñ@×Ò@×Ó@×Ô@×Õ@×Ö@××@×Ø@×Ù@×Ú@×Û@×Ü@×Ý@×Þ@%×ß@×à@×á@×â@×ã@×ä@×å@×æ@×ç@×è@×é@×ê@×ë@×ì@×í@×î@×ï@%×ð@×ñ@×ò@×ó@×ô@×õ@×ö@×÷@×ø@×ù@×ú@×û@×ü@×ý@ØA@ØB@ØC@%ØD@ØE@ØF@ØG@ØH@ØI@ØJ@ØK@ØL@ØM@ØN@ØO@ØP@ØQ@ØR@ØS@ØT@%ØU@ØV@ØW@ØX@ØY@ØZ@Ø[@Ø\@Ø]@Ø^@Ø_@Ø`@Øa@Øb@Øc@Ød@Øe@%Øf@Øg@Øh@Øi@Øj@Øk@Øl@Øm@Øn@Øo@Øp@Øq@Ør@Øs@Øt@Øu@Øv@%Øw@Øx@Øy@Øz@Ø{@Ø|@Ø}@Ø~@Ø@Ø@Ø‚@؃@Ø„@Ø…@؆@؇@؈@%؉@ØŠ@Ø‹@ØŒ@Ø@ØŽ@Ø@Ø@Ø‘@Ø’@Ø“@Ø”@Ø•@Ø–@Ø—@ؘ@Ø™@%Øš@Ø›@Øœ@Ø@Øž@ØŸ@Ø @Ø¡@Ø¢@Ø£@ؤ@Ø¥@ئ@ا@ب@Ø©@ت@%Ø«@ج@Ø­@Ø®@د@Ø°@ر@ز@س@Ø´@ص@ض@Ø·@ظ@ع@غ@Ø»@%ؼ@ؽ@ؾ@Ø¿@ØÀ@ØÁ@ØÂ@ØÃ@ØÄ@ØÅ@ØÆ@ØÇ@ØÈ@ØÉ@ØÊ@ØË@ØÌ@%ØÍ@ØÎ@ØÏ@ØÐ@ØÑ@ØÒ@ØÓ@ØÔ@ØÕ@ØÖ@Ø×@ØØ@ØÙ@ØÚ@ØÛ@ØÜ@ØÝ@%ØÞ@Øß@Øà@Øá@Øâ@Øã@Øä@Øå@Øæ@Øç@Øè@Øé@Øê@Øë@Øì@Øí@Øî@%Øï@Øð@Øñ@Øò@Øó@Øô@Øõ@Øö@Ø÷@Øø@Øù@Øú@Øû@Øü@Øý@ÙA@ÙB@%ÙC@ÙD@ÙE@ÙF@ÙG@ÙH@ÙI@ÙJ@ÙK@ÙL@ÙM@ÙN@ÙO@ÙP@ÙQ@ÙR@ÙS@%ÙT@ÙU@ÙV@ÙW@ÙX@ÙY@ÙZ@Ù[@Ù\@Ù]@Ù^@Ù_@Ù`@Ùa@Ùb@Ùc@Ùd@%Ùe@Ùf@Ùg@Ùh@Ùi@Ùj@Ùk@Ùl@Ùm@Ùn@Ùo@Ùp@Ùq@Ùr@Ùs@Ùt@Ùu@%Ùv@Ùw@Ùx@Ùy@Ùz@Ù{@Ù|@Ù}@Ù~@Ù@Ù@Ù‚@Ùƒ@Ù„@Ù…@Ù†@Ù‡@%Ùˆ@Ù‰@ÙŠ@Ù‹@ÙŒ@Ù@ÙŽ@Ù@Ù@Ù‘@Ù’@Ù“@Ù”@Ù•@Ù–@Ù—@Ù˜@%Ù™@Ùš@Ù›@Ùœ@Ù@Ùž@ÙŸ@Ù @Ù¡@Ù¢@Ù£@Ù¤@Ù¥@Ù¦@Ù§@Ù¨@Ù©@%Ùª@Ù«@Ù¬@Ù­@Ù®@Ù¯@Ù°@Ù±@Ù²@Ù³@Ù´@Ùµ@Ù¶@Ù·@Ù¸@Ù¹@Ùº@%Ù»@Ù¼@Ù½@Ù¾@Ù¿@ÙÀ@ÙÁ@ÙÂ@ÙÃ@ÙÄ@ÙÅ@ÙÆ@ÙÇ@ÙÈ@ÙÉ@ÙÊ@ÙË@%ÙÌ@ÙÍ@ÙÎ@ÙÏ@ÙÐ@ÙÑ@ÙÒ@ÙÓ@ÙÔ@ÙÕ@ÙÖ@Ù×@ÙØ@ÙÙ@ÙÚ@ÙÛ@ÙÜ@%ÙÝ@ÙÞ@Ùß@Ùà@Ùá@Ùâ@Ùã@Ùä@Ùå@Ùæ@Ùç@Ùè@Ùé@Ùê@Ùë@Ùì@Ùí@%Ùî@Ùï@Ùð@Ùñ@Ùò@Ùó@Ùô@Ùõ@Ùö@Ù÷@Ùø@Ùù@Ùú@Ùû@Ùü@Ùý@ÚA@%ÚB@ÚC@ÚD@ÚE@ÚF@ÚG@ÚH@ÚI@ÚJ@ÚK@ÚL@ÚM@ÚN@ÚO@ÚP@ÚQ@ÚR@%ÚS@ÚT@ÚU@ÚV@ÚW@ÚX@ÚY@ÚZ@Ú[@Ú\@Ú]@Ú^@Ú_@Ú`@Úa@Úb@Úc@%Úd@Úe@Úf@Úg@Úh@Úi@Új@Úk@Úl@Úm@Ún@Úo@Úp@Úq@Úr@Ús@Út@%Úu@Úv@Úw@Úx@Úy@Úz@Ú{@Ú|@Ú}@Ú~@Ú@Ú@Ú‚@Úƒ@Ú„@Ú…@Ú†@%Ú‡@Úˆ@Ú‰@ÚŠ@Ú‹@ÚŒ@Ú@ÚŽ@Ú@Ú@Ú‘@Ú’@Ú“@Ú”@Ú•@Ú–@Ú—@%Ú˜@Ú™@Úš@Ú›@Úœ@Ú@Úž@ÚŸ@Ú @Ú¡@Ú¢@Ú£@Ú¤@Ú¥@Ú¦@Ú§@Ú¨@%Ú©@Úª@Ú«@Ú¬@Ú­@Ú®@Ú¯@Ú°@Ú±@Ú²@Ú³@Ú´@Úµ@Ú¶@Ú·@Ú¸@Ú¹@%Úº@Ú»@Ú¼@Ú½@Ú¾@Ú¿@ÚÀ@ÚÁ@ÚÂ@ÚÃ@ÚÄ@ÚÅ@ÚÆ@ÚÇ@ÚÈ@ÚÉ@ÚÊ@%ÚË@ÚÌ@ÚÍ@ÚÎ@ÚÏ@ÚÐ@ÚÑ@ÚÒ@ÚÓ@ÚÔ@ÚÕ@ÚÖ@Ú×@ÚØ@ÚÙ@ÚÚ@ÚÛ@%ÚÜ@ÚÝ@ÚÞ@Úß@Úà@Úá@Úâ@Úã@Úä@Úå@Úæ@Úç@Úè@Úé@Úê@Úë@Úì@%Úí@Úî@Úï@Úð@Úñ@Úò@Úó@Úô@Úõ@Úö@Ú÷@Úø@Úù@Úú@Úû@Úü@Úý@%ÛA@ÛB@ÛC@ÛD@ÛE@ÛF@ÛG@ÛH@ÛI@ÛJ@ÛK@ÛL@ÛM@ÛN@ÛO@ÛP@ÛQ@%ÛR@ÛS@ÛT@ÛU@ÛV@ÛW@ÛX@ÛY@ÛZ@Û[@Û\@Û]@Û^@Û_@Û`@Ûa@Ûb@%Ûc@Ûd@Ûe@Ûf@Ûg@Ûh@Ûi@Ûj@Ûk@Ûl@Ûm@Ûn@Ûo@Ûp@Ûq@Ûr@Ûs@%Ût@Ûu@Ûv@Ûw@Ûx@Ûy@Ûz@Û{@Û|@Û}@Û~@Û@Û@Û‚@Ûƒ@Û„@Û…@%Û†@Û‡@Ûˆ@Û‰@ÛŠ@Û‹@ÛŒ@Û@ÛŽ@Û@Û@Û‘@Û’@Û“@Û”@Û•@Û–@%Û—@Û˜@Û™@Ûš@Û›@Ûœ@Û@Ûž@ÛŸ@Û @Û¡@Û¢@Û£@Û¤@Û¥@Û¦@Û§@%Û¨@Û©@Ûª@Û«@Û¬@Û­@Û®@Û¯@Û°@Û±@Û²@Û³@Û´@Ûµ@Û¶@Û·@Û¸@%Û¹@Ûº@Û»@Û¼@Û½@Û¾@Û¿@ÛÀ@ÛÁ@ÛÂ@ÛÃ@ÛÄ@ÛÅ@ÛÆ@ÛÇ@ÛÈ@ÛÉ@%ÛÊ@ÛË@ÛÌ@ÛÍ@ÛÎ@ÛÏ@ÛÐ@ÛÑ@ÛÒ@ÛÓ@ÛÔ@ÛÕ@ÛÖ@Û×@ÛØ@ÛÙ@ÛÚ@%ÛÛ@ÛÜ@ÛÝ@ÛÞ@Ûß@Ûà@Ûá@Ûâ@Ûã@Ûä@Ûå@Ûæ@Ûç@Ûè@Ûé@Ûê@Ûë@%Ûì@Ûí@Ûî@Ûï@Ûð@Ûñ@Ûò@Ûó@Ûô@Ûõ@Ûö@Û÷@Ûø@Ûù@Ûú@Ûû@Ûü@%Ûý@ÜA@ÜB@ÜC@ÜD@ÜE@ÜF@ÜG@ÜH@ÜI@ÜJ@ÜK@ÜL@ÜM@ÜN@ÜO@ÜP@%ÜQ@ÜR@ÜS@ÜT@ÜU@ÜV@ÜW@ÜX@ÜY@ÜZ@Ü[@Ü\@Ü]@Ü^@Ü_@Ü`@Üa@%Üb@Üc@Üd@Üe@Üf@Üg@Üh@Üi@Üj@Ük@Ül@Üm@Ün@Üo@Üp@Üq@Ür@%Üs@Üt@Üu@Üv@Üw@Üx@Üy@Üz@Ü{@Ü|@Ü}@Ü~@Ü@Ü@Ü‚@܃@Ü„@%Ü…@܆@܇@܈@܉@ÜŠ@Ü‹@ÜŒ@Ü@ÜŽ@Ü@Ü@Ü‘@Ü’@Ü“@Ü”@Ü•@%Ü–@Ü—@ܘ@Ü™@Üš@Ü›@Üœ@Ü@Üž@ÜŸ@Ü @Ü¡@Ü¢@Ü£@ܤ@Ü¥@ܦ@%ܧ@ܨ@Ü©@ܪ@Ü«@ܬ@Ü­@Ü®@ܯ@Ü°@ܱ@ܲ@ܳ@Ü´@ܵ@ܶ@Ü·@%ܸ@ܹ@ܺ@Ü»@ܼ@ܽ@ܾ@Ü¿@ÜÀ@ÜÁ@ÜÂ@ÜÃ@ÜÄ@ÜÅ@ÜÆ@ÜÇ@ÜÈ@%ÜÉ@ÜÊ@ÜË@ÜÌ@ÜÍ@ÜÎ@ÜÏ@ÜÐ@ÜÑ@ÜÒ@ÜÓ@ÜÔ@ÜÕ@ÜÖ@Ü×@ÜØ@ÜÙ@%ÜÚ@ÜÛ@ÜÜ@ÜÝ@ÜÞ@Üß@Üà@Üá@Üâ@Üã@Üä@Üå@Üæ@Üç@Üè@Üé@Üê@%Üë@Üì@Üí@Üî@Üï@Üð@Üñ@Üò@Üó@Üô@Üõ@Üö@Ü÷@Üø@Üù@Üú@Üû@%Üü@Üý@ÝA@ÝB@ÝC@ÝD@ÝE@ÝF@ÝG@ÝH@ÝI@ÝJ@ÝK@ÝL@ÝM@ÝN@ÝO@%ÝP@ÝQ@ÝR@ÝS@ÝT@ÝU@ÝV@ÝW@ÝX@ÝY@ÝZ@Ý[@Ý\@Ý]@Ý^@Ý_@Ý`@%Ýa@Ýb@Ýc@Ýd@Ýe@Ýf@Ýg@Ýh@Ýi@Ýj@Ýk@Ýl@Ým@Ýn@Ýo@Ýp@Ýq@%Ýr@Ýs@Ýt@Ýu@Ýv@Ýw@Ýx@Ýy@Ýz@Ý{@Ý|@Ý}@Ý~@Ý@Ý@Ý‚@݃@%Ý„@Ý…@݆@݇@݈@݉@ÝŠ@Ý‹@ÝŒ@Ý@ÝŽ@Ý@Ý@Ý‘@Ý’@Ý“@Ý”@%Ý•@Ý–@Ý—@ݘ@Ý™@Ýš@Ý›@Ýœ@Ý@Ýž@ÝŸ@Ý @Ý¡@Ý¢@Ý£@ݤ@Ý¥@%ݦ@ݧ@ݨ@Ý©@ݪ@Ý«@ݬ@Ý­@Ý®@ݯ@Ý°@ݱ@ݲ@ݳ@Ý´@ݵ@ݶ@%Ý·@ݸ@ݹ@ݺ@Ý»@ݼ@ݽ@ݾ@Ý¿@ÝÀ@ÝÁ@ÝÂ@ÝÃ@ÝÄ@ÝÅ@ÝÆ@ÝÇ@%ÝÈ@ÝÉ@ÝÊ@ÝË@ÝÌ@ÝÍ@ÝÎ@ÝÏ@ÝÐ@ÝÑ@ÝÒ@ÝÓ@ÝÔ@ÝÕ@ÝÖ@Ý×@ÝØ@%ÝÙ@ÝÚ@ÝÛ@ÝÜ@ÝÝ@ÝÞ@Ýß@Ýà@Ýá@Ýâ@Ýã@Ýä@Ýå@Ýæ@Ýç@Ýè@Ýé@%Ýê@Ýë@Ýì@Ýí@Ýî@Ýï@Ýð@Ýñ@Ýò@Ýó@Ýô@Ýõ@Ýö@Ý÷@Ýø@Ýù@Ýú@%Ýû@Ýü@Ýý@P^@PÑ@Q@R†@S„@Sš@S¾@SË@U±@UÊ@VL@W@Wý@Xi@%Xã@Xõ@YP@Y|@Yš@Zp@Zt@Z…@ZŒ@Z @Z¥@[[@[r@[Î@\O@\¼@]L@%]k@aj@aù@bÂ@c¯@cÌ@câ@dI@dÂ@e@eÅ@fs@f@hU@PÁ@PÐ@Q©@%QÀ@Qâ@h‰@RÓ@Rå@Rþ@SJ@hš@h›@h@hž@hŸ@h @h¡@h¢@h£@h¤@%h¥@h¦@h§@h¨@h©@hª@h«@h¬@h­@h®@h¯@h°@h±@hµ@h¶@h·@h¸@%h¹@hº@h¼@h½@h¾@h¿@hÀ@hÁ@hÂ@hÅ@hÆ@hÇ@hÈ@hÉ@hÊ@hË@hÌ@%hÍ@hÎ@hÐ@hÑ@hÒ@hÓ@hÔ@hÕ@hÖ@h×@hØ@hÙ@hÚ@hÛ@hÜ@hÝ@hÞ@%hß@hà@há@hâ@hã@hä@hå@hæ@hç@hè@hê@hë@hì@hí@hî@hï@hð@%hñ@Tµ@iI@TÑ@iJ@iK@iP@iU@U÷@ig@Wã@XB@Xa@XÁ@Xó@YS@YÃ@%YÆ@YØ@ZJ@ZQ@Z¸@ZÐ@[K@\I@\S@\[@\Á@iî@iï@iñ@iò@ió@iô@%iö@i÷@iø@iù@iþ@jA@jB@jC@jD@jE@jH@jM@jN@jO@jP@jQ@jR@%jS@jT@jU@jV@jW@][@jZ@j[@j\@j]@j^@j`@ja@jb@jc@jd@je@%jf@]s@jg@jh@]w@ji@jj@jk@jl@jn@jo@jp@jq@jr@js@ju@j{@%]”@j}@j~@j@j@jƒ@j„@j†@j‰@jŠ@j‹@]º@jž@jŸ@j¡@j¢@j¤@%^K@j¥@j§@j¨@j©@j±@^”@jÄ@jÈ@jÉ@jÊ@jÍ@jÎ@jÐ@jÑ@jÒ@jÓ@%jÔ@jÕ@j×@jØ@jÙ@jÚ@jÛ@jÝ@jß@jà@já@jâ@jä@jç@jè@jé@_‡@%jê@jë@jì@jí@jî@jï@jò@jó@jö@j÷@jø@jù@jû@jü@jý@kB@kD@%kE@kF@kI@kJ@kK@kM@kN@kO@`J@k[@bi@kŠ@b«@bý@c…@dŽ@d‘@%kµ@d¿@dË@k¼@kÀ@kÍ@eë@fj@fà@BZ@B@B{@B[@Bl@BP@B}@BM@%B]@B\@BN@Bk@B`@BK@Ba@Bð@Bñ@Bò@Bó@Bô@Bõ@Bö@B÷@Bø@Bù@%Bz@B^@BL@B~@Bn@Bo@B|@BÁ@BÂ@BÃ@BÄ@BÅ@BÆ@BÇ@BÈ@BÉ@BÑ@%BÒ@BÓ@BÔ@BÕ@BÖ@B×@BØ@BÙ@Bâ@Bã@Bä@Bå@Bæ@Bç@Bè@Bé@A‹@%AK@AŒ@Aj@Bm@By@B@B‚@Bƒ@B„@B…@B†@B‡@Bˆ@B‰@B‘@B’@B“@%B”@B•@B–@B—@B˜@B™@B¢@B£@B¤@B¥@B¦@B§@B¨@B©@BÀ@BO@BÐ@%IT@BJ@Ak@B_@AL@Bj@Al@Bà@% \ No newline at end of file +@@0@1@@3@4@5@6@@8@%9@;@@@>@ÿ@?@J@?@?@j@?@?@_@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@ @à@B@C@D@E@F@G@H@I@R@S@T@U@%V@W@X@Y@b@c@d@e@f@g@h@i@r@s@t@u@v@%w@x@Š@‹@Œ@@Ž@@š@›@œ@@ž@Ÿ@ª@«@¬@%­@®@¯@º@»@¼@%I\@Ib@Av@AF@KC@AH@Ae@A]@Kö@K÷@IS@%I€@AC@IZ@Kõ@KL@K™@K–@Kš@I]@KA@KB@A^@KJ@KM@K«@K @K¢@%A_@K©@K¬@K¡@KD@K£@K¤@KF@K¥@K¦@KH@K§@KI@K¨@K¯@KO@K®@%KK@Kª@KN@K­@A`@I”@IU@I^@IV@IY@IX@I[@IT@IW@Fa@Fb@Fc@%Fd@Fe@Ff@Fg@Fh@Fi@Fj@Fk@Fl@Fm@Fn@Fo@Fp@Fq@Fr@Fs@Ft@%Fu@Fv@Fw@Fx@F@F‚@Fƒ@F„@F…@F†@F‡@Fˆ@F‰@FŠ@F‹@FŒ@F@%FŽ@F@F@F‘@F’@F“@F”@F•@F–@F—@F˜@JG@JA@JB@JC@JD@JE@%JF@JH@JI@JJ@JK@JL@JM@JN@JO@JP@JQ@JR@JS@JT@JU@JV@JW@%JX@JY@JZ@J[@J\@J]@J^@J_@J`@Ja@Jb@Jc@Jd@Je@Jf@Jg@Ji@%Jj@Jk@Jl@Jm@Jn@Jo@Jp@Jq@Jr@Js@Jt@Ju@Jv@Jw@Jx@Jy@Jz@%J{@J|@J}@J~@J@J€@J@J‚@Jh@AH@AI@AI@AM@AN@AO@AP@I@%I‚@AD@AE@Id@Af@Ag@Aw@Kø@Kù@Kú@Kû@Kü@Ký@Ah@Ic@Ao@IŽ@%I“@I@Hp@Ai@A@K—@K˜@K›@Kœ@K@Kž@FP@FQ@FR@FS@FT@FU@%FV@FW@FX@FY@FA@FB@FC@FD@FE@FF@FG@FH@FI@FJ@A†@A‡@A…@%Aˆ@A‰@Iƒ@I†@I„@I‡@I…@IO@IP@IQ@A–@IR@A—@IE@IF@Ia@I`@%Aœ@IA@Ac@A“@AJ@IM@IN@IL@IK@IC@ID@I_@Ad@IB@B¡@A@A™@%A@A˜@AŽ@A@Aa@Ab@Aš@A›@II@IJ@IG@IH@Io@A”@A•@K‡@Kˆ@%K‰@KŠ@K‹@KŒ@K@KŽ@K@K@K‘@K’@K“@K”@K•@Kæ@Kç@Kè@Ké@%Kê@Kë@Kì@Kí@Kî@Kï@Kð@Kñ@Kò@Kó@Kô@KÌ@KÍ@KÎ@KÏ@KÐ@KÑ@%KÒ@KÓ@KÔ@KÕ@KÖ@K×@KØ@KÙ@KÚ@KÛ@KÜ@KÝ@KÞ@Kß@Kà@Ká@Kâ@%Kã@Kä@Kå@Km@Kn@Ko@Kp@Kq@Kr@Ks@Kt@Ku@Kv@Kw@Kx@Ky@Kz@%K{@K|@K}@K~@K@K€@K@K‚@Kƒ@K„@K…@K†@GA@GL@GB@GM@GC@%Gh@Gg@GN@GD@Gb@Ga@GO@GF@Gf@Ge@GQ@GE@Gd@Gc@GP@GG@G\@%Gi@Gj@GW@Gk@Gl@GR@GI@G^@Gm@Gn@GY@Go@Gp@GT@GH@Gq@Gr@%GX@G]@Gs@Gt@GS@GJ@Gu@Gv@GZ@G_@Gw@Gx@GU@GK@Gy@Gz@G[@%G{@G|@G`@G}@G~@G@G€@G@G‚@Gƒ@G„@GV@It@A€@A@Iq@Iu@%Iv@Iy@Ix@Iw@Iz@A‚@A@Ih@Ig@A„@Aƒ@If@Ie@A~@A}@Ip@Io@%Az@A|@A{@Ir@Is@Ay@Ax@I}@I|@I~@I@A’@A‘@Ij@Ik@In@Ii@%Il@Im@I{@I‰@IŠ@I‹@Iˆ@@@@AA@AB@AG@AS@AT@AU@AV@AW@AX@%AY@AZ@A[@A\@AŠ@AQ@AR@B¡@DA@DB@DC@DD@DE@DF@DG@DH@DI@%DJ@DK@DL@DM@DN@DO@DP@DQ@DR@DS@DT@DU@DV@DW@DX@DY@DZ@%D[@D\@D]@D^@D_@D`@Da@Db@Dc@Dd@De@Df@Dg@Dh@Di@Dj@Dk@%Dl@Dm@Dn@Do@Dp@Dq@Dr@Ds@Dt@Du@Dv@Dw@Dx@Dy@Dz@D{@D|@%D}@D~@D@D€@D@D‚@Dƒ@D„@D…@D†@D‡@Dˆ@D‰@DŠ@D‹@DŒ@D@%DŽ@D@D@D‘@D’@D“@EA@EB@EC@ED@EE@EF@EG@EH@EI@EJ@EK@%EL@EM@EN@EO@EP@EQ@ER@ES@ET@EU@EV@EW@EX@EY@EZ@E[@E\@%E]@E^@E_@E`@Ea@Eb@Ec@Ed@Ee@Ef@Eg@Eh@Ei@Ej@Ek@El@Em@%En@Eo@Ep@Eq@Er@Es@Et@Eu@Ev@Ew@Ex@Ey@Ez@E{@E|@E}@E~@%E@E€@E@E‚@Eƒ@E„@E…@E†@E‡@Eˆ@E‰@EŠ@E‹@EŒ@E@EŽ@E@%E@E‘@E’@E“@E”@E•@E–@AC@ˆA@ŒA@„D@A@„F@„G@”A@˜A@œA@%„J@„K@„L@„M@„N@„O@„P@ A@¤A@¨A@„T@¬A@°A@´A@¸A@¼A@ÀA@%ÄA@ÈA@ÌA@ÐA@„a@„@„¡@„Á@„á@…A@…a@…@…¡@…Á@…á@†A@†a@%†@†¡@†Á@†á@‡A@‡a@‡@‡¡@„A@CA@CB@CC@CD@CE@CF@CG@CH@%CI@CJ@CK@CL@CM@CN@CO@CP@CQ@CR@CS@CT@CU@CV@CW@CX@CY@%CZ@C[@C\@C]@C^@C_@C`@Ca@Cb@Cc@Cd@Ce@Cf@Cg@Ch@Ci@Cj@%K°@K±@K²@K³@K´@Kµ@K¶@K·@K¸@K¹@Kº@K»@K¼@K½@K¾@K¿@KÀ@%KÁ@KÂ@KÃ@KÄ@KÅ@KÆ@KÇ@KÈ@KÉ@KÊ@KË@I@KQ@KR@KS@KT@KU@%KV@KW@KX@KY@KZ@K[@K\@K]@K^@K_@K`@Ka@Kb@Kc@Kd@Ke@Kf@%Kg@Kh@Ki@Kj@Kk@Kl@IŒ@H`@Ha@Hb@Hc@Hd@HQ@HR@Hs@Ht@Hu@%HO@At@Au@Hk@Hl@Hm@Hn@Ho@HA@Am@An@HB@HG@HH@HI@Aq@Ar@%As@HJ@HK@HL@HM@HC@HD@HE@HF@HT@HU@H|@H}@H~@H@Hx@Hy@%Hz@HV@HW@HX@HY@HZ@H[@H\@H]@H^@H_@He@Hf@Hg@Hh@Hi@Hj@%Hq@Hr@I‘@Hƒ@Ap@Hw@H†@I@HS@H„@HN@HP@H@H‚@Hv@I’@H{@%H…@H€@_¨@`Ü@dp@in@_ô@Y×@Yå@e©@iš@cá@b¡@YB@ZÉ@Ro@Xq@%[¾@aõ@X¤@hy@fç@SÖ@aº@j…@S¯@Rp@bL@Y„@f—@e§@RH@[¿@_]@%Rq@PÝ@\¸@P{@T˜@^Ó@X£@YÕ@PÓ@TÚ@UÈ@]C@Y…@_}@^|@j¿@^“@%f˜@]¯@`Ý@ST@Y†@\^@V™@eÝ@RU@eí@]J@f‚@fG@QI@`Þ@UC@hò@%_™@\Y@_š@dN@Xµ@Rr@SA@P®@_¸@_»@Y‡@d€@_õ@X¶@Zƒ@Tš@_›@%cN@TM@U‡@_~@\—@aö@PÔ@P¯@_°@SX@eÞ@_@h“@]°@SY@X‘@XH@%g”@Wô@W¥@Uˆ@[ò@Y‰@Yˆ@PA@k^@S×@`r@eb@^»@`q@a»@a´@^r@%eª@]D@kG@Xô@_Ù@Rs@S¼@d÷@\Ì@Wõ@PB@S•@k_@_©@Y‹@ià@hE@%kˆ@Tü@dS@h}@U™@[È@a¼@^Õ@ic@k@QÂ@_l@VÝ@gq@ds@UR@eI@%Qt@c­@\_@jŒ@aã@af@j«@he@kÑ@Z÷@VF@VÃ@X@i¬@ft@[ó@[R@%i›@Rt@Wá@e„@X¥@iü@Xr@UE@bÔ@P°@Wâ@i@T`@fC@gr@_m@k•@%hf@b¢@bÓ@WÆ@dT@R¾@a£@hX@]›@Uï@d‹@]ö@\¹@\ò@PC@Pç@^¼@%eJ@eî@a½@`ß@PÕ@Z¢@dO@`à@^s@dÕ@RI@X·@WÇ@PÞ@YÈ@YC@cÃ@%^_@]±@`¢@Ru@bê@Yæ@QJ@UÕ@Rî@cj@Z„@Yç@RV@X’@g±@UÉ@^½@%]ý@[À@bÉ@PD@XW@YŒ@_n@aä@\í@hg@Pà@^Ö@Yè@U¿@^t@`s@iN@%Sœ@\ù@]Ò@_H@^¡@f†@cò@ah@gž@Z‚@Qø@Rç@d°@VÄ@dÅ@\`@TB@%T¬@SU@_·@S°@`£@UD@^×@dô@QÃ@Uì@f@QÄ@Xs@SZ@Rv@`¤@QC@%S[@iý@bô@`]@Vä@VÆ@^c@Qã@VÑ@VÁ@T›@có@\º@Tþ@Uz@bù@aå@%UF@ag@Uþ@Tœ@Uü@id@_h@g¼@XL@fþ@P±@gœ@ca@]þ@cð@eÍ@Ta@%_œ@Xá@`È@]œ@Pg@Wc@fƒ@U|@c‘@dí@Xl@VG@YÉ@Qô@Tb@bÕ@aL@%[J@R¿@bÅ@_¼@P[@c†@dl@YÂ@Rè@Tã@`¥@bþ@X¸@P@W@i¿@_º@%`¦@X¹@eË@bÖ@e…@kœ@gd@Ré@XX@Uà@Pá@aM@h_@Ug@QÅ@PE@U{@%h@ai@S¿@På@fA@QK@W¼@dm@^`@VÅ@QL@Uû@T@j¸@P…@WN@kú@%[Ä@U@VÞ@ZÊ@`Œ@Rï@g}@US@RÀ@_Ú@h@Rw@Wm@ec@g@ed@ee@%X“@YD@fÓ@Xà@[É@_ö@Qù@P–@YE@kï@eŸ@SÒ@Rx@\Z@cO@kL@[Á@%]²@g‰@W¦@io@YF@a @dŒ@fu@S¨@W‘@X”@Xb@`Ð@RE@Z£@WC@_@%^¾@P\@TÛ@RÁ@aú@QM@\®@\Ÿ@VH@gs@^¢@kª@RÆ@kÇ@]y@PÅ@bÊ@%^u@b¤@SL@^v@W§@[@cü@[S@W¨@[T@]@c¹@Ry@Q@Rz@QŒ@bM@%RÔ@ZÒ@dõ@PF@d±@b‹@Y@^w@YŽ@^x@g¦@P]@e×@S–@kZ@Tž@VÒ@%gt@VI@dÆ@fH@R³@V_@_^@eX@Xº@i @eÎ@]³@g­@cý@Wd@gu@]Ä@%UT@`á@QŽ@dš@aÀ@a¿@Q@Wo@PG@[ô@fš@VÐ@`t@T—@ef@fÚ@R{@%iœ@k®@_½@bN@RW@eï@eÏ@_ž@\ª@e‘@fË@eØ@`^@^£@PH@c’@Q°@%gg@cc@eg@QN@dø@Y@k~@ie@TF@ip@^Ù@b×@iê@d@d@Yé@Wk@%Qu@Sð@iã@eÐ@[Ê@aN@hW@S©@Z†@cd@TÉ@gv@eÑ@cP@gŠ@fè@g²@%P|@g‡@^Ú@Yê@S›@RX@SØ@gw@i³@bs@]´@S\@b¥@Y‘@dU@[V@aÁ@%d›@PI@R|@Yë@ZÓ@ak@cþ@[Ë@fP@S]@al@g³@ZS@Xâ@gh@]T@i©@%fI@\ú@_Û@`§@gi@S¬@lB@c®@[U@Y@gR@_Ÿ@Q·@U‰@Q@^Û@eh@%\ã@RÂ@Rª@^¿@^¤@^¥@Tc@SÙ@fé@dÇ@`_@RÕ@bO@S^@bP@dì@Rá@%WÈ@hõ@P†@aµ@PÀ@dÞ@Q¸@dœ@eT@hý@hh@h@k±@[W@TN@f„@TŸ@%eñ@_S@R}@^§@\ @j¬@aæ@V¥@Z¹@Tä@]K@X»@bë@[å@bš@Wä@S_@%h”@Rµ@TC@Pñ@dÐ@hN@jÖ@\n@k›@X‚@aO@]U@P‡@^A@\ó@Xƒ@_÷@%Td@hl@RJ@]‡@hT@ZÔ@d©@Te@TD@cº@ZF@`¨@j@g~@]z@bt@bË@%k`@[‘@QO@ZU@j­@WD@cÇ@bA@fQ@Wa@T@d‚@Xä@]µ@_ø@Ph@XY@%]Ó@SÚ@g@e¶@\“@fœ@UÖ@Qú@RK@U¸@\Í@Y’@_±@`G@_ª@f›@ZT@%[X@e«@S`@Zr@]ù@[’@SÔ@\»@Vü@TO@cQ@d²@X¼@^B@\˜@\K@_€@%fv@\û@Sa@S±@X¦@RÖ@aÂ@kå@Qv@Xå@fZ@dÖ@eð@`©@Y“@]¶@d¤@%_I@_ù@Zs@Xæ@Sµ@SÀ@Pi@f@]E@YG@Vš@_²@Sb@^C@h@WE@YH@%dƒ@WÉ@d×@V¦@bú@cs@`â@Và@_¾@[Ì@`u@Q‘@Y”@Zº@^À@_³@^D@%Pž@ku@Pj@_@b@g´@eß@]V@_ @_¿@^Ä@jœ@Y•@S­@]·@hœ@]W@%[õ@\a@V€@dA@bØ@i]@dÝ@]â@fÀ@YI@X½@ZV@V§@gA@Wp@^¨@[Í@%]Ê@Vr@R~@PJ@[Y@jÀ@bŽ@fr@R@`@kÌ@SÌ@fÔ@gµ@i¶@RY@eY@%Yp@]ˆ@Yí@\Î@_À@fn@QÆ@_¹@_Â@až@i@_Á@gj@V»@Qw@Q’@SÁ@%eò@Zý@[“@kR@X¾@e·@^Ü@\ø@T]@^y@[Z@\y@[D@]ã@RQ@X•@d¬@%kñ@a¤@Qä@aÃ@`æ@]ä@_q@P¿@Z‡@\L@^Ý@fê@iÁ@R¹@``@eó@]X@%Z×@PK@[ö@^a@[”@k“@`Ž@^©@Sc@_¡@WŒ@R€@X¿@V¨@e¼@^z@[æ@%hÄ@V{@bÆ@QÒ@dt@]¸@j @\M@S½@k”@\P@Y–@Qå@UË@kx@c»@X„@%c¶@Y—@X§@Y½@`H@`ª@^Á@aŸ@\Q@TP@Tf@ZÕ@ZÖ@ck@Yî@Zˆ@^{@%WÊ@dB@[Ï@_J@cA@hn@SÐ@Wq@SÊ@R«@PÆ@Qx@R¶@]Å@[Ð@iÜ@Z¦@%`«@Xt@Tg@U×@dR@VJ@Zø@T¸@YÊ@g§@SM@Sd@_ë@Pœ@Vm@ië@[\@%P—@TQ@\o@kÞ@i†@\z@iQ@`Ñ@iÍ@dV@i²@\b@c“@X©@X¨@f^@Th@%aç@fw@[²@iL@Sf@Q¹@cÄ@\¡@PŸ@Uð@[³@Xú@Wr@Pˆ@Tæ@\Š@[´@%j@b§@_ú@R@hþ@iH@RZ@^E@\þ@jt@UŠ@ZX@\p@]ú@V@`¬@\‹@%cR@aÄ@[©@ZØ@QÇ@a¶@R[@PÇ@WO@b¦@Sh@_‚@Y˜@dß@dW@eà@Rð@%iÈ@PÖ@[Ñ@ej@XM@g¶@d­@ct@b@Wö@aP@[]@Y™@Zu@_û@TR@^Þ@%Yò@Vß@k÷@`ã@^Â@iå@e€@WË@kç@V|@dX@i@TE@eZ@TÜ@Pk@eU@%S¶@Xu@fD@Pl@fë@^Ø@^ß@Sg@_ü@YJ@Yï@ZY@`v@ei@`Ò@QP@XÀ@%Yð@Ti@a·@Q“@`ç@\Œ@ZZ@P @^b@^à@Yñ@e¬@U€@Tó@R‚@QÝ@UÌ@%a¾@`­@WF@bÙ@e[@Qû@eô@Uý@UU@c|@]Y@`ä@P×@gS@Xc@U¹@e\@%[ç@[Ò@Rº@am@_¢@Xö@fÊ@_„@aQ@f_@fž@SÂ@\Ä@_ý@P¡@e @Xm@%d@P¢@Wt@V‚@hó@f‘@gŒ@_…@f…@\ô@j¹@bì@e†@an@Yr@eD@bÚ@%]‰@WÌ@]M@e˜@i£@]ñ@`å@TS@iÕ@gT@Uô@gx@Z[@QQ@Tj@T½@Wå@%Y›@a¥@iM@\ä@gB@X–@[™@Wu@dY@bž@T^@cb@g@\R@e¡@Si@_£@%c·@bQ@V›@Vœ@cô@d@du@S¸@g¢@fÆ@Xç@\™@SÃ@ek@Sé@U‹@Yœ@%d³@_†@SN@Z»@^ª@RL@Pæ@c¼@gC@kH@[š@[Ó@gD@QÊ@eá@Z\@\Ï@%]B@Qõ@gU@_Ã@g™@df@e½@_T@P_@S¹@QÉ@[è@g®@]t@\N@aR@e¾@%gV@dù@iË@`®@]¹@^á@fì@k @VK@ks@YK@T_@cù@bÛ@W€@Qy@Tk@%bû@`è@T@f½@fÇ@Zv@^â@f’@\r@d„@SÈ@Yó@gF@\Â@Z¼@dP@[_@%Z‰@PØ@^ä@^ã@W@eH@_r@\q@^}@\¢@P‰@RM@kè@k‘@P²@[÷@P³@%^«@j®@Uõ@_U@_Ä@QD@d´@gE@e‡@Vá@bÌ@bÍ@bÎ@dÛ@dÉ@Vƒ@Qæ@%hD@f“@P´@a¦@U^@^Ã@QR@P£@cB@^[@k¡@^~@YL@bB@Uo@Y€@c”@%lC@g¸@dž@Xè@T @Pè@W‚@hi@i|@fT@\î@hö@PŠ@Rñ@Pm@eõ@_i@%jŽ@WP@S@bŸ@TÊ@gW@f`@bÏ@Rƒ@fí@_s@Up@hû@QÓ@WQ@[¯@[^@%_P@Z½@\c@Qz@f¾@cC@\„@Rê@hJ@`É@Uí@`¯@g¹@TT@f @UV@WÍ@%ZÛ@eK@QT@ZŠ@f¸@YM@[`@`a@d…@d@Xé@SO@XÂ@YN@iì@[Â@Sj@%c•@hc@dà@\ï@Z]@dØ@eâ@`Ê@em@e™@el@`w@V”@\”@cÈ@X÷@d@%WR@Sº@Tð@W©@W’@Sž@RN@PÈ@cD@W½@k¯@^F@R„@a¡@c–@Wæ@Qö@%[é@S—@bC@QË@RÃ@Q”@[¹@SŸ@bR@bS@Z§@\{@Tl@a¸@bu@_d@`é@%jX@V„@fx@b¯@dö@S§@]Z@en@Xª@Y@PÉ@h…@cu@S¦@S»@i´@ZÙ@%[a@iA@_þ@Wç@\¯@R·@RF@UA@bí@d¦@`Ø@QÌ@cÉ@\ü@ao@R¬@Pn@%^å@R×@WG@aS@_e@\Ð@fî@\s@Pé@gŽ@^¬@\½@Yà@Zþ@W“@ZÚ@^G@%Tm@[b@k@Wª@dª@g•@b°@`@c½@cÅ@Vs@bT@Vâ@iw@`Ù@Už@dÃ@%YÓ@j£@hÃ@TG@ce@W¿@WS@dá@cÂ@b¶@W”@Sê@]Ö@iV@cS@dÀ@Pê@%ap@QU@SB@Sñ@XZ@PÊ@TU@d’@Tç@bÇ@PÍ@_t@Ys@P`@cE@fá@k¸@%^H@W«@dÄ@\Ñ@Z¶@Uq@R]@fâ@Tè@bU@[c@Q•@^Ô@Pµ@QÍ@WÎ@`ê@%Q–@gk@Z^@R\@Wƒ@R…@\å@j@eB@bÜ@P‹@YË@T‘@QV@\Ò@Q—@`ë@%`@XÃ@[d@i·@U@e]@kó@We@Yt@YO@W¬@T­@UÐ@Q±@Y @b˜@\…@%Rò@cF@XÄ@_Ü@bÐ@YŸ@[ø@SÛ@WÏ@\æ@[Ô@WÐ@UW@Z‹@`ì@aš@ia@%Sk@WT@Sl@_«@SÜ@bV@aq@[›@^@e¿@j²@]ò@W…@W„@iD@]»@Qº@%[Ã@WÑ@fŸ@bÝ@VÔ@fÁ@i¡@h‘@]N@Zw@g£@Xv@Z¾@]Š@UŒ@cî@V©@%_Ý@ZÜ@[Õ@e­@^Ž@WH@bÞ@Xw@\š@ar@[Ö@gG@ké@bv@k€@\|@aè@%kÕ@aÅ@lD@Z¿@aT@]¼@kæ@gX@kß@[ù@V…@k²@[e@X…@QW@Zx@c}@%`í@hŠ@`î@bW@kû@PL@g€@g@]‹@jÅ@Z_@S£@\@\Ó@VÕ@ho@bß@%_ì@Vã@`A@kÜ@e@Z³@QS@T’@]„@Ui@Sò@gl@\¦@Z`@^I@k¿@Qü@%g·@S®@]ð@Q²@]ž@QX@P}@Za@at@as@V†@bE@c‡@cÆ@gY@^¸@^æ@%Xû@X˜@YÅ@b™@Tô@V@au@Sˆ@Sm@Vý@Uº@Vô@Wv@V•@X¢@bÈ@k¨@%aÆ@W•@d†@RÉ@gy@Po@YÙ@VM@fE@`b@c¸@eˆ@`B@T®@Sn@Zù@eã@%Wè@Pß@T¡@Q™@WI@`x@dâ@hé@[E@dî@i¤@]ó@iŒ@h²@Zy@T¯@dv@%Vg@Vª@QÔ@bX@Q˜@k»@bY@PN@hA@R‡@[×@Xx@W÷@Vå@PŒ@dq@]{@%^ç@^è@d“@_Þ@`y@Rˆ@hF@PM@S²@aÇ@Uá@[Ø@bõ@i­@Y¡@kg@iÖ@%`°@Zb@Uö@R^@Wø@aÈ@_ˆ@jº@QÎ@fB@Ró@Pë@`c@h^@eä@Q{@Tn@%\}@b@T¢@Yõ@fï@S˜@k@dÊ@hG@UG@`ï@V«@Q³@`d@dZ@QY@av@%gm@j˜@c—@]½@VN@Y¢@aU@Q|@Q»@ZÝ@XN@i‚@Sp@i”@VÇ@So@Q¼@%X¬@a§@aw@Rì@Xü@T£@TH@_ç@hm@YÚ@Zc@To@Qç@j™@`Ú@jå@[ê@%cÊ@c˜@it@\¾@]\@cï@Y£@\Ô@e”@Z¨@d‡@h\@i}@c™@VA@h³@^é@%jË@iƒ@`ð@aü@]A@`z@[œ@Rë@eö@cË@]Œ@Tõ@^d@bw@WÒ@kê@YQ@%]@Uâ@d«@hp@W­@YÄ@R‰@k¶@bà@Y¤@RO@QÏ@QÞ@P¶@h‹@ax@Rô@%\t@a¨@Wü@UI@UØ@`{@e‰@cÍ@`C@Væ@\Õ@cš@W–@[f@fÕ@aé@P@%dC@^L@R_@d”@j»@i×@Ræ@T¾@Sq@Yö@gf@SÝ@Pì@kh@\ð@SC@i’@%gZ@QZ@Pâ@`D@Yu@eÒ@_V@iB@RÊ@UŸ@UX@aû@Uj@kÐ@\´@W—@TÝ@%RÄ@`E@TÞ@Té@gª@b¨@g¤@^\@\£@Sr@g¬@Qé@Yß@g«@fW@PO@dŸ@%RŠ@]F@fð@bZ@`ñ@b©@X†@WU@]÷@ZË@Uh@RÐ@Y®@Vú@\›@k‚@dµ@%[@[g@[ë@_è@^•@Y÷@U‚@Yv@Z¯@SÞ@_W@YÔ@Pa@`±@g‹@_u@R‹@%WV@Vç@V¬@T…@_D@YU@i¥@i¦@YV@Vè@f¡@RŒ@bá@`²@\]@W†@V¼@%Ss@[i@Y@]Ž@XO@`ò@aý@R@XP@Zz@YÌ@eÀ@]¾@]G@fÌ@P¤@b[@%Q¿@]ô@j‡@d¶@SP@Xd@Wf@Pý@St@Xê@\T@Su@]Æ@jÁ@eå@jY@dw@%T“@Võ@Vû@Sü@is@i@cõ@YR@Y¥@k|@dú@V–@`|@e®@YT@^ê@d[@%ZÞ@Qš@cl@]]@gH@kÖ@i¼@cT@W˜@e¢@fÍ@XU@Y¦@XQ@U@eo@dã@%_f@SÑ@aÊ@kÓ@W¯@W‡@d·@]@\Ö@U}@Xˆ@ZÌ@[j@TÒ@T¤@bx@jÌ@%Z©@fÎ@aË@[ž@gŸ@Qý@jÂ@fù@g¯@dä@Uã@`Ë@aê@iª@]å@ep@f¢@%Tö@if@XÅ@^]@e÷@dx@fy@dû@]u@Q[@Zß@Z·@j¯@kô@]_@iÅ@]^@%cˆ@\¤@\°@eÓ@UH@ki@h†@d\@Z{@kõ@Sv@Vh@f£@[•@Tp@a©@UÙ@%iÌ@Só@`ó@Uñ@__@g[@\U@[Ÿ@]`@fÂ@c~@\ý@cU@cm@YÛ@fñ@`}@%PŽ@`ô@PË@Tq@Y§@i‹@\u@]Û@Zª@dQ@^Å@eæ@i¸@P~@jv@^ë@WJ@%Ww@kT@fÃ@Wé@i„@kv@Sß@f¤@Yø@h÷@[ì@kj@kë@^e@cÎ@_¤@d®@%jÃ@h´@X‡@^­@aë@Uä@RŽ@VÖ@_¬@XÆ@Q}@]Ë@Zà@by@[k@^f@SÓ@%i@bâ@VÎ@gI@_Å@cG@k×@fú@`e@Tr@T¿@c‰@`‘@f¥@Q½@V‡@\ç@%eŠ@dr@U¯@Rõ@UÚ@P·@VO@]a@ay@V}@eÁ@Ur@Vˆ@b\@[l@bã@`Ó@%`F@]@W¾@Pü@k‹@W®@iÒ@_í@_î@iW@Z|@kì@_K@U @Sô@az@RË@%_é@T¥@X‰@ik@Yá@b @cf@kw@eE@j¼@f¦@Pp@eÂ@dÁ@iT@g\@b·@%`³@j@Sõ@hô@Pí@d•@Uƒ@SÅ@]Ÿ@[º@jw@Vþ@aV@f¨@^ì@Ts@f§@%Tê@aì@d–@Yw@cV@UY@\×@f‡@T†@Y¨@\V@ib@e‚@Yx@U¢@kÈ@]‘@%jã@Uk@kk@Zá@kÎ@U»@iZ@jx@Wx@_”@Tß@Qê@kØ@[L@d @f©@V‰@%fÖ@TÀ@g]@R@_ß@`f@Q\@dD@]|@c›@eç@ký@_Æ@h~@kl@Zâ@fa@%PÌ@d¡@eq@fˆ@Xy@aÉ@_à@`Ô@U~@g–@]¿@kã@TÓ@bD@]b@hj@eF@%X­@g@\õ@ky@i@Xë@iE@WW@cœ@]}@]c@g@Us@kü@gJ@`´@jy@%S¤@]d@^@i°@V­@fò@kø@a{@Wþ@\Ø@_Ç@Z@[í@j½@^Ÿ@g‚@kÙ@%^g@g»@[–@i™@^œ@j‘@]v@Q]@g½@lE@d]@]…@]e@TÁ@T”@UÍ@V`@%Zã@i‘@]f@]’@a|@b¸@[h@c°@Zµ@ZŽ@gƒ@[ú@Tt@j¦@f[@eƒ@U¡@%Tà@a}@då@`m@^¦@^Æ@_á@XÇ@\¿@gn@Yì@_‰@Yú@`I@eL@dï@dü@%cv@W™@T‡@\d@^@Yy@Vé@Vê@UÀ@Vö@Wn@ZN@dÜ@Pó@ZW@VP@TÔ@%Tˆ@gº@Pô@XR@Yù@Qþ@`’@\•@fª@R@`~@R`@[m@VQ@fz@T÷@dý@%] @k’@V½@[Ù@a¢@]û@ZÀ@`@WK@gz@^í@jÏ@fû@^®@]Ç@Yª@`K@%]À@h‡@T‰@g^@jz@ge@U…@[n@Së@fV@fc@_È@[B@]È@]õ@km@k—@%R‘@j³@h•@Wˆ@_L@]æ@i«@UŽ@TV@kÔ@Wš@hB@W‰@YÍ@kÄ@bz@Pb@%RA@hv@kù@TÕ@aÍ@_X@[ @i–@_Š@fK@f‰@RØ@W°@i~@iÂ@kn@fb@%i¹@R’@Tø@VR@iÎ@Uå@jš@k­@ka@iÓ@d—@kà@Sw@ht@Sx@X«@]ç@%aª@h|@jm@Vi@SD@YW@dæ@k³@XV@fÄ@j´@ix@k§@Z@aW@^Ç@e¯@%^¯@SÄ@f«@]“@^î@Zd@[µ@Uæ@^h@[M@^M@]Ì@b{@kÚ@Vt@Tù@Rö@%h–@VS@Z‘@iO@`L@Va@kí@W›@Q^@b|@Sy@hk@X[@b¹@kq@fó@iÏ@%jF@iÔ@ZG@Z’@k‰@Q_@U¼@]•@Qè@bº@QÕ@f¬@e‹@dò@]Ü@]Ô@_É@%Xz@cÏ@Põ@R“@bF@]×@P@\W@cn@ZO@YÎ@ZP@Zä@^i@XŠ@j°@`µ@%^ï@P˜@[û@Sª@`¶@`õ@hŽ@Q`@Q~@]ü@kb@hú@W±@Uç@kƒ@cä@WX@%e£@UB@g—@XA@aí@_‹@fØ@TI@Sz@hO@S{@P¥@aÎ@cw@e¤@Zå@Zæ@%_o@YÏ@P¸@]O@er@eš@P@_Ê@Sì@b}@T§@`€@b‘@hC@X{@bG@_Œ@%\Ú@d^@g¥@T°@Qa@dÌ@VT@b]@Sö@Vu@Vj@d_@YX@Q›@iú@\Û@iÃ@%]Í@cH@bä@iˆ@Uè@[p@e¸@`M@i^@UÎ@\Ž@Pq@^ð@X\@UZ@d`@ke@%TË@Z“@]Õ@`·@Q@TÂ@WÀ@Wù@Wú@a~@`“@P¹@gK@Ra@Qœ@f­@\¥@%f®@e›@cÐ@V×@^€@Wê@Xì@]–@_–@eÙ@Pº@ZÁ@Tu@_ê@V¾@b~@P‘@%W²@Që@U£@V÷@V¿@bm@Yô@i‰@[¡@ZÂ@VÈ@k´@Wy@Pr@V®@b@VÉ@%_Ë@fd@RÅ@Vë@a@\~@b±@kÒ@`ö@[q@TŠ@YY@Vø@]¡@cx@Tv@Q @%]¢@b€@iu@VŠ@Xn@[¢@UÏ@hK@T¨@co@Pã@Qž@R”@WA@c±@Vì@SV@%[Ú@_p@b^@[ü@R•@Sà@]ø@Rb@Z}@Y¯@cŠ@YZ@b_@bî@dy@Vn@es@%dç@RÙ@]g@c@Ué@Qb@]h@Xý@S|@`÷@U°@\§@[N@Y[@TW@]è@P@%X]@Z~@fã@fä@il@_Ì@iŽ@UÁ@bª@Q€@iŠ@`¸@Vv@Qc@S}@hH@W³@%cž@cŸ@jG@\¨@U[@Ul@W´@[Û@Y¬@Y«@h—@S~@S@ba@^@a€@b`@%a@hY@f¯@cã@[ý@[o@Y­@Yû@eŒ@aY@S€@iX@SE@f×@`ø@X—@^‚@%\è@g¾@Z@Uš@Tw@iõ@^ƒ@VU@SF@fÙ@T‹@[s@Y°@X}@S·@cÑ@QÖ@%c @i§@Y\@a‚@d}@b@\œ@b’@_@g¿@ZÍ@Ps@`ù@c¡@_´@dþ@bn@%db@VB@e’@aƒ@a«@d~@^@bo@Tx@PP@Q‚@QŸ@Q´@Vù@k«@`”@j|@%[t@ZK@jˆ@]Î@få@\Ù@fo@R–@R»@QÐ@`ú@cW@T™@`Ì@b²@^N@bŒ@%bå@a„@R°@R¸@]Ý@j—@R¼@^O@RÚ@Uø@b»@hŒ@T±@a…@`Í@Vo@i{@%bÑ@X|@Qd@`N@aî@T¦@[u@P€@Sá@Qe@aá@cå@Pt@SQ@a†@fÈ@Zç@%ZR@`•@d¸@Vp@Y±@XÊ@aZ@iR@ZÎ@e¥@TÃ@R÷@kc@[£@XI@RB@cæ@%dÍ@Sý@bö@Râ@ZÃ@iµ@]i@j’@P»@`¹@`n@cÒ@Wœ@S@YÐ@b£@QÑ@%QE@Qì@`º@Yü@_ï@`@`Î@gL@XS@`»@eM@cç@f{@g|@iÞ@\Å@iÄ@%TŒ@Y]@Y²@b÷@a›@kŽ@Sâ@Pu@kî@_ð@Zè@cp@k™@U„@XÈ@Të@aÐ@%`–@UÂ@U½@cq@\Æ@VW@Wz@i¨@Xí@Vq@Wž@a‡@`Ö@Zú@_Í@aâ@`O@%UJ@UK@b½@PÂ@[v@`ü@f°@TJ@W{@Xî@aˆ@P¨@UL@S @`—@a‰@Qƒ@%RÜ@S‚@aÑ@\Ç@fÐ@jµ@g¨@fô@Wh@Wg@S«@SÎ@[¤@Y´@RR@bb@SR@%Xï@Zé@WÓ@ZL@_Î@aÒ@k@UÛ@ZÏ@[þ@kV@Zê@P’@a¬@fe@aŠ@Qf@%Wµ@Pþ@a‹@Rc@TÖ@ff@SS@_Q@jþ@Ze@dÎ@Yµ@hP@`Ï@Pö@R—@c¢@%ko@[w@Qg@a­@U²@aÓ@[x@^ñ@P¦@Vž@cg@bï@Uò@Sƒ@d¢@_â@VC@%VÊ@dc@S”@Y^@Zf@eÔ@Z”@bœ@Sã@c‹@i‡@]j@[Ý@eN@]é@VË@^È@%Ut@dd@b‚@ií@j•@W@k„@f±@jª@kU@fg@X®@cè@j_@a®@UÜ@c¾@%`˜@XC@Xþ@WY@^P@k{@bp@Z•@^Q@[y@[Å@g_@Q„@P÷@aŒ@]P@Q…@%b¼@Zû@`¼@]—@`g@Z°@b¾@T@Tì@XÉ@eè@QA@\µ@Qí@VŸ@eÃ@XË@%a¹@RG@de@XJ@Zg@V¯@dè@VV@TÌ@h˜@\Ü@hQ@W|@hq@\Ý@U@[z@%R±@Z–@_v@P‚@gÀ@ih@PÃ@^„@]Ø@[Þ@_—@_˜@U@[»@Yý@lA@k\@%dE@Y_@`½@eO@]ê@eÄ@]£@Rd@XD@_•@^R@U¤@Q¡@Ví@_Ï@S…@h€@%_Ž@S³@_Ð@Qh@Vî@^–@S†@_@\À@d§@Qi@S÷@iS@UÑ@ZÄ@Y‚@dF@%Wl@Uu@c¿@ZÅ@^j@bq@c@U¾@_O@jð@[—@Y¿@a@_E@Uú@S‡@c£@%aÔ@T³@eé@Px@Q¢@bc@Y`@Pò@WÔ@SW@RS@_F@go@e^@^É@aÕ@Wì@%d¹@W¶@Wë@P™@et@f²@_M@Zh@RC@Tª@g @SÏ@bd@f}@dG@f|@Vµ@%V¶@cI@j›@Pc@Qj@[¥@[{@d¥@eu@bæ@Yb@\±@\A@XÍ@XÌ@Ya@P©@%]ë@ZÆ@SÉ@a¯@^J@h]@`P@X™@Z—@dÑ@WÕ@U\@hb@WŸ@Q£@XÎ@V~@%[¶@Re@b“@eG@Z˜@cú@_j@Sø@g`@SÆ@T¹@Yc@\ñ@aX@Tñ@]l@`Q@%\B@]á@kS@Vk@_Ñ@dH@be@dg@TX@k…@R™@^ò@^k@Rš@]H@g°@R›@%Z¤@YŠ@Zi@ev@cX@[¦@WZ@aÖ@hR@eê@WÖ@W¸@cé@dˆ@W @fh@Z™@%iž@jI@`ý@Zë@bç@_w@eÕ@U¥@Pv@UM@Pw@ZM@]€@k@\©@^…@_ã@%h„@V @XÏ@iG@bf@YÝ@P¼@ká@h’@Xð@dé@]¤@\X@fÛ@W×@k}@^—@%Rø@cÓ@iy@\e@kP@^°@]@U‘@dº@kž@WL@PQ@k½@Rœ@jñ@\È@Q¤@%`‚@]˜@V°@XÐ@hr@kÅ@aô@W[@XT@PR@Vï@iq@VØ@kQ@V¡@Xš@[|@%kð@kA@SÕ@^l@jJ@[§@kÏ@c¤@fŠ@_µ@_@gM@T²@e±@`™@ii@`R@%Y¶@Qk@\C@]ì@f~@iŸ@iä@V@V¢@c€@Qî@iY@R­@Rã@Q×@bè@bð@%Tz@i—@Rù@fÜ@hs@VD@Yd@\@kW@[˜@cû@Ty@Tý@VÀ@eV@^Ê@cÔ@%V‹@gˆ@^ó@\v@T×@]†@X¯@`ƒ@Pƒ@ew@T©@^Ë@f³@`S@\É@cÀ@RÛ@%aþ@[}@[ß@WB@YÑ@WØ@ex@bH@QF@ið@bé@kâ@iÉ@iv@cê@Z@^m@%P½@[à@Y³@eœ@[~@X°@Uv@iØ@UÒ@VÏ@VŒ@X›@_Ò@YÞ@^@i_@aÏ@%bñ@`T@k¢@Zì@_`@k†@e_@jÆ@hø@XE@c¥@]¥@Rf@j¾@^S@f”@Xñ@%iÙ@^ô@hˆ@d¯@W\@Zí@UÃ@]Ï@W¡@W}@jæ@Pª@`U@Z«@cY@g†@YÖ@%\D@Zj@g„@a[@Q¥@_Ó@Tí@iá@`V@j¶@U]@]¦@TÄ@\Ê@XF@[@`„@%Vb@aŽ@Qß@]§@U¦@Zî@]Ð@Yz@iû@i“@Zš@Tá@TÍ@f´@e¹@PÙ@bü@%fR@U§@^†@fµ@g˜@[·@fÑ@Wi@WÙ@kC@_ñ@hw@a@k¬@T´@`…@Y·@%U’@Sä@ga@]Þ@a×@Rg@eÚ@b”@^n@\f@c²@X±@\E@]Á@XÑ@bg@Ye@%W@cJ@c@^±@QØ@hI@iß@gN@eP@^Ì@X@e°@[¸@f¶@`Û@]ß@Tú@%_R@VÙ@f‹@VX@hü@TÎ@[C@d|@Vw@W·@Z›@^T@cö@TK@eø@_x@Z±@%[Æ@]m@Tò@U`@aï@U_@Q@_ò@V@fp@a÷@fF@]n@fi@[°@PS@\g@%^Í@c÷@^Î@fŒ@R@_y@e@YÜ@[P@h»@cø@SH@SG@^²@VÜ@PT@TY@%ey@Så@[€@k‡@Q¾@e@Q¦@`h@U@`W@VY@]¨@^õ@hƒ@X‹@`X@Y¸@%ij@Yf@Yþ@Wî@Wí@TÏ@a\@Xž@P@ez@XŒ@jÇ@Wï@^^@dÒ@[¼@UÝ@%i½@P§@\Þ@SI@Tî@V—@[½@Zk@^U@Sù@Xœ@eC@Pø@RÝ@VÂ@[Ü@Pî@%iC@do@Rž@Rú@Pd@Tï@Qï@Pe@_Ô@eù@ZA@c³@\ö@`þ@XÒ@Q†@\F@%fÒ@dÈ@g…@kþ@d˜@S‰@]à@\h@[F@QB@SÍ@WÚ@Z¬@fS@Zï@PU@bƒ@%aØ@bI@Q§@Y¹@a@eW@`†@Yº@]™@[¨@]©@[â@[á@RÌ@`¾@gÁ@fÝ@%eú@ZD@Zœ@kš@UÄ@aÙ@QÙ@bh@_¥@Zl@d£@^ö@\é@ZÇ@Q‡@W]@]Â@%Q¨@[G@gb@Z­@[@QÚ@Yg@_z@_Z@a‘@cr@iÚ@Sú@c‚@`o@k£@UN@%U·@^÷@cy@[ã@cŒ@eû@aA@Py@^ø@_Õ@g‘@\@iâ@e•@a]@\÷@S¢@%Vð@\†@^Ï@TÅ@W~@WŽ@eº@iÆ@WÛ@QG@jú@P«@Y»@^V@Vñ@`š@Uê@%RŸ@Rû@VŽ@kä@bJ@gš@SŠ@[î@Sû@X@Ql@Yh@]Q@_{@Pù@f·@]ª@%TŽ@Xf@]o@iÐ@bÒ@\ß@k@b¿@Qµ@Q‰@fü@T¶@Se@e–@]í@iÝ@T•@%ZB@f™@]«@`‡@eŽ@[ä@c¦@V·@Vò@eA@aB@XÓ@`i@QÈ@Y{@fß@dð@%d¨@Qð@bø@`ˆ@ZÑ@_ƒ@RÑ@eS@V±@TZ@Yi@cz@jô@W^@e²@i¢@UÆ@%_¶@gc@_Ö@PV@`›@b„@Yq@i[@Y¼@ZC@Wð@fk@V²@cZ@XÔ@b•@T{@%UÅ@XÕ@R˜@ZH@bj@k©@jÜ@bK@bÀ@\€@Z²@`Y@iÇ@`œ@Yž@f\@_×@%aÚ@RÞ@XÖ@S‹@c§@^¹@a’@dJ@cÕ@aœ@X×@bk@d»@WÁ@b–@PW@dê@%PÎ@`@Z@hz@RÍ@U¨@T|@^o@Sþ@c[@hZ@kt@^ú@a°@a^@^ù@a_@%PÚ@T}@b¬@kÝ@e¦@k¦@`ž@k–@a±@cë@RÇ@a“@c´@`‰@aÛ@\Ë@cK@%Vc@\G@R½@R @b®@\‡@RÎ@R²@fU@]p@b…@cì@PX@[ï@Rh@U©@`j@%c{@V@XŽ@Qm@UO@dh@g’@ir@k˜@Uw@X~@Wñ@Uó@b@aÜ@[‚@i˜@%XŸ@`¿@jK@eÌ@^³@U³@`À@ch@Ri@jL@RT@Yj@Um@Uª@\H@Qª@X^@%Tå@dñ@Xg@Y¾@Xe@Xh@br@^Z@SÇ@^‡@g©@\J@]š@Rü@W¹@PY@`Ÿ@%W¢@b—@[±@ha@W@X@` @S´@cÖ@dÓ@[H@Q÷@T~@g{@]R@kÛ@k¾@%Zð@dÙ@cí@R¡@T@Qn@iF@`Š@dÏ@Zn@U“@Zü@a”@að@X²@Ux@c@%aÞ@b†@Rß@_­@e¨@^ü@Tº@[ƒ@^ˆ@^û@^˜@eQ@QÛ@\ˆ@e³@gO@T€@%Sí@^Ð@^W@[A@TA@cŽ@^´@Zñ@Pú@]Ã@`¡@a•@b­@T»@bl@añ@c\@%Zž@^ý@UÓ@PÏ@ež@^X@V³@eü@[„@fõ@jõ@im@Xj@TÐ@_g@]Ù@V£@%f@S¡@WÜ@kŸ@Y©@hL@d¼@R¢@Zò@`‹@^‘@Rj@Tû@R´@XØ@Qà@^‰@%T@iæ@c×@fJ@Yk@TÆ@aC@Sæ@^þ@aD@cØ@_ä@Wò@aÝ@aÌ@c¨@P“@%VÚ@TØ@[…@gp@f¿@YÒ@[ª@dK@c©@a`@f¹@ZÈ@cÙ@_|@`Z@cª@f•@%WÂ@U›@PÄ@\à@bò@_A@Z€@VZ@aø@\Ã@UP@V[@S™@[Q@aE@XÙ@dz@%a–@c]@j·@bó@T¼@h`@k¹@i±@c«@jÞ@Rä@U–@]É@`Á@Pš@h[@fl@%e{@hd@]q@^º@WÃ@R£@iÛ@aF@Rk@Vó@_Y@cÁ@T«@ZŸ@`Â@[†@VÛ@%kÉ@]¬@h@Zó@[‡@kp@f€@X³@Zm@e|@PÒ@P¬@U´@cÛ@cÚ@`p@[«@%hù@aG@SŒ@`Ã@h™@SK@WM@Z@Q«@b³@j€@Uy@h{@T‚@iç@Sç@Yã@%_B@PÛ@d{@a²@QH@^p@[O@k¤@fŽ@hV@fº@b‡@_®@a@k]@V@^q@%Qo@i`@kŒ@kò@a³@TÇ@iº@kd@ci@d™@aß@fæ@P”@hM@RD@YÇ@Ua@%bÁ@b´@`[@Wj@Z´@e`@P¾@_N@eÇ@eÆ@Pz@WŠ@P›@Pf@eÛ@XK@Rà@%W‹@Ub@]x@]@\‰@\‘@fý@kË@RÈ@k·@Qñ@c^@X_@Sî@XÚ@c_@\²@%dó@]î@WÝ@a—@\i@d‰@kÃ@XÛ@UÞ@V¸@P­@eÈ@ea@eÜ@iÀ@[Ç@cL@%^µ@bˆ@aa@Wó@_a@b‰@VE@Tƒ@eÖ@Uî@\á@^Š@Uù@T[@[ˆ@gP@Qˆ@%Pï@^™@\«@Rí@ab@`\@Vd@iÑ@[‰@fX@_[@Uœ@cM@aò@_å@\@^ @%\j@b›@Q¬@da@kz@_Ø@]Ú@kX@kr@[Š@\\@cÜ@_ó@QŠ@V\@S¥@^‹@%^Œ@Z®@i€@Xò@^š@U”@UÇ@W£@`Ä@[‹@Zô@aH@bŠ@Qá@Yä@`×@]­@%Vl@j‚@ZE@e´@W_@i¯@U«@X`@ac@Un@\¬@c@U•@\­@cƒ@`û@aI@%Yl@Ws@VÌ@f]@_¦@fÞ@_§@V˜@Sè@e}@\@f–@\@hx@c¬@R®@cÝ@%P„@h‚@eR@Sï@c`@^Ñ@eÉ@T„@_c@Zõ@^›@fL@f»@fq@aJ@Qp@eì@%[¬@[Œ@^’@[I@]®@]ï@Wº@T–@dë@U—@gÂ@_“@XÜ@T·@f@Qq@dÔ@%Y}@QÜ@ad@\³@\w@\‚@^¶@`Å@Uë@f¼@Q­@`Æ@fm@Y~@e—@Yâ@d½@%R¤@e@kÁ@Ym@XG@[ð@iÊ@S@dn@_b@W»@_‘@YÀ@e~@[ñ@Rl@fM@%\â@_’@bÃ@\k@]I@`Ç@X€@Qò@V‘@Rý@RÏ@bÄ@i»@SŽ@^Y@j–@fN@%]‚@[@fO@kÆ@X @f@Vx@\ê@e“@k°@di@[­@_¯@W¤@d¾@aà@hÏ@%R¥@PZ@XÝ@dŠ@YÁ@Xk@eý@TÙ@aó@Yƒ@i•@S@S@kº@PÜ@TÈ@k¥@%Zö@V¹@kÂ@R¦@kö@Rm@fY@Qr@]S@dL@Uc@S‘@fö@Ud@QÁ@eþ@Pð@%Yn@Uß@cµ@[Ž@c@Q®@WÞ@]ƒ@WÄ@Xø@V’@[@fø@Y@U†@i\@dÚ@%^ž@_G@RÒ@RP@fÅ@WÅ@Wû@V´@V¤@UQ@^Ò@V]@Vy@\ë@U¬@Wß@kf@%e@XÞ@ié@Rn@Z¡@V^@c„@a˜@hu@Qs@cÞ@iè@X¡@ZI@eµ@f÷@S’@%]Ñ@j“@V“@hS@Xo@Ve@a™@Xß@R§@X´@VÓ@]r@X@\ƒ@\l@^·@\ž@%\–@fÏ@dj@Pû@\m@Q¶@W`@YA@_æ@[®@iz@\¶@e»@fÉ@Q‹@R¨@dM@%eÊ@g›@_k@U­@\·@Qó@Tâ@U®@kÊ@]~@U¶@cß@S“@Uµ@Ue@i®@Vf@%cà@Vº@R¯@VÍ@Vz@g“@gQ@Zo@Uf@g¡@Pä@Wb@T\@cñ@_C@`Õ@TL@%\’@i…@Xù@X@j”@Xp@aK@Q¯@Zq@Yo@ae@`k@`l@dk@kY@U˜@_\@%i¾@bµ@\ì@\x@UÔ@Wà@P•@R©@ˆa@ˆb@ˆc@ˆe@ˆh@ˆi@ˆj@ˆk@ˆl@%ˆq@ˆs@ˆt@ˆu@ˆv@ˆw@ˆx@ˆy@ˆ{@ˆ|@ˆ}@ˆ@ˆ‚@ˆ…@ˆ‰@ˆ‘@ˆ“@%ˆ•@ˆ–@ˆ—@ˆ¡@ˆ¢@ˆ¥@ˆ©@ˆµ@ˆ·@ˆÁ@ˆÅ@ˆÉ@ˆá@ˆâ@ˆå@ˆè@ˆé@%ˆê@ˆë@ˆñ@ˆó@ˆõ@ˆö@ˆ÷@ˆø@ˆù@ˆû@ˆü@ˆý@‰A@‰E@‰H@‰I@‰Q@%‰S@‰U@‰V@‰W@‰a@‰b@‰c@‰e@‰h@‰i@‰q@‰s@‰u@‰v@‰w@‰{@‰@%‰…@‰‰@‰“@‰•@‰¡@‰¢@‰¥@‰¨@‰©@‰ª@‰«@‰­@‰°@‰±@‰³@‰µ@‰·@%‰¸@‰¼@‰Á@‰Â@‰Å@‰É@‰Ë@‰Ñ@‰Ó@‰Õ@‰×@‰á@‰â@‰å@‰é@‰ñ@‰ó@%‰õ@‰ö@‰÷@ŠA@ŠB@ŠE@ŠI@ŠQ@ŠS@ŠU@ŠW@Ša@Še@Ši@Šs@Šu@Š@%Š‚@Š…@Šˆ@Š‰@ŠŠ@Š‹@Š@Š‘@Š“@Š•@Š—@Š˜@Š¡@Š¢@Š¥@Š©@Šµ@%Š¶@Š·@ŠÁ@ŠÕ@Šá@Šâ@Šå@Šé@Šñ@Šó@Šõ@Š÷@‹A@‹E@‹I@‹Q@‹a@%‹b@‹e@‹h@‹i@‹j@‹k@‹q@‹s@‹u@‹w@‹y@‹{@‹@‹•@‹¡@‹¢@‹¥@%‹¨@‹©@‹«@‹­@‹±@‹³@‹µ@‹¶@‹·@‹¸@‹»@‹¼@Œa@Œb@Œc@Œe@Œi@%Œk@Œq@Œs@Œu@Œv@Œw@Œx@Œ{@Œ@Œ‚@Œ…@Œ‰@Œ‘@Œ“@Œ•@Œ–@Œ—@%Œ¡@Œ¢@Œ©@ŒÁ@Œá@Œâ@Œã@Œå@Œé@Œñ@Œó@Œõ@Œö@Œ÷@A@B@E@%Q@U@W@a@e@i@q@u@v@{@@¡@¢@¥@§@¨@©@%±@³@µ@·@¸@¹@Á@Â@Å@É@Ñ@Õ@Ö@×@á@â@å@%÷@ŽA@ŽE@ŽI@ŽQ@ŽS@ŽU@ŽW@Ža@Žx@Ž@Ž‚@Ž…@Žˆ@Ž‰@Ž@Ž‘@%Ž“@Ž•@Ž—@Ž˜@Ž¡@Ž¥@Ž©@Žµ@Ž¶@Ž·@ŽÁ@ŽÂ@ŽÅ@ŽÉ@ŽÑ@ŽÓ@ŽÖ@%Žá@Žâ@Žå@Žé@Žñ@Žó@Ž÷@A@a@b@e@g@i@k@p@q@s@%u@w@{@@¡@¢@¥@©@±@³@µ@¶@·@a@b@c@e@%h@i@j@k@q@s@u@v@w@x@y@{@}@@‚@…@ˆ@%‰@‘@“@•@–@—@¡@¢@¥@©@±@·@Á@á@â@ä@å@%è@é@ë@ì@ñ@ó@õ@ö@÷@ø@ý@‘A@‘B@‘E@‘I@‘Q@‘S@%‘U@‘V@‘W@‘a@‘b@‘e@‘h@‘i@‘q@‘s@‘u@‘v@‘w@‘z@‘{@‘@‘…@%‘•@‘¡@‘¢@‘£@‘¥@‘©@‘«@‘±@‘³@‘µ@‘·@‘¼@‘½@‘Á@‘Å@‘É@‘Õ@%‘Ö@‘á@’A@’E@’I@’Q@’S@’U@’a@’b@’e@’i@’s@’u@’w@’@’‚@%’…@’ˆ@’‰@’‘@’“@’•@’—@’¡@’µ@’¶@’Á@’á@’å@’é@’ñ@’ó@“A@%“B@“I@“Q@“S@“W@“a@“b@“e@“i@“j@“k@“q@“s@“u@“w@“x@“y@%“|@“@“…@“‰@“—@“¡@“¢@“¥@“©@“ª@“«@“±@“³@“µ@“·@“º@“¼@%”a@”b@”c@”e@”h@”i@”j@”k@”l@”p@”q@”s@”u@”v@”w@”x@”y@%”}@”@”‚@”…@”‰@”‘@”“@”•@”–@”—@”¡@”·@”Á@”á@”â@”ã@”å@%”è@”é@”ë@”ì@”ñ@”ó@”õ@”ö@”÷@”ø@”ù@”ü@•A@•B@•E@•I@•Q@%•S@•U@•V@•W@•a@•e@•i@•q@•v@•w@•@•…@•¡@•¢@•¥@•¨@•©@%•«@•­@•°@•±@•³@•µ@•·@•¹@•»@•Á@•Å@•É@•á@•å@•õ@•ö@–A@%–E@–I@–Q@–S@–U@–V@–a@–@–‚@–…@–ˆ@–‰@–‘@–“@–•@–—@–¡@%–µ@–¶@–Á@–×@–á@–å@–é@–ñ@–ó@–õ@–÷@—A@—B@—E@—I@—Q@—W@%—a@—b@—e@—h@—i@—k@—l@—q@—s@—u@—w@—@—¡@—¢@—¥@—¨@—©@%—±@—³@—µ@—¶@—·@—¸@—¼@˜a@˜b@˜c@˜e@˜h@˜i@˜p@˜q@˜s@˜u@%˜v@˜w@˜}@˜@˜‚@˜…@˜‰@˜‘@˜“@˜•@˜–@˜—@˜¡@˜Á@˜á@˜â@˜å@%˜é@˜ë@˜ì@˜ñ@˜ó@˜õ@˜ö@˜÷@˜ý@™A@™B@™E@™I@™Q@™S@™U@™V@%™W@™a@™v@™@™¡@™¢@™¥@™©@™·@™Á@™É@™á@šA@šE@ša@š@š‚@%š…@š‰@š@š‘@š—@š¡@šÁ@šá@šå@šé@šñ@šó@š÷@›A@›a@›b@›e@%›h@›i@›q@›s@›u@›@›…@›‰@›‘@›“@›¡@›¥@›©@›±@›³@›µ@›·@%œa@œb@œe@œi@œq@œs@œu@œv@œw@œx@œ|@œ}@œ@œ‚@œ…@œ‰@œ‘@%œ“@œ•@œ–@œ—@œ¡@œ¢@œ¥@œµ@œ·@œÁ@œá@œâ@œå@œé@œñ@œó@œõ@%œö@œ÷@œý@A@B@E@H@I@Q@S@U@W@a@b@e@i@q@%s@u@v@w@@…@“@•@¡@¢@¥@©@±@³@µ@·@Á@%Å@×@á@ö@žA@žE@žI@žQ@žS@žU@žW@ža@že@ži@žq@žs@žu@%žw@ž@ž‚@ž…@ž‰@ž‘@ž“@ž•@ž—@ž¡@žµ@ž¶@žÁ@žá@žâ@žå@žé@%žñ@žõ@ž÷@ŸA@ŸB@ŸE@ŸI@ŸQ@ŸS@ŸU@ŸW@Ÿa@Ÿb@Ÿe@Ÿi@Ÿq@Ÿs@%Ÿu@Ÿw@Ÿx@Ÿ{@Ÿ|@Ÿ@Ÿ¡@Ÿ¢@Ÿ¥@Ÿ©@Ÿ±@Ÿ³@Ÿµ@Ÿ·@ a@ b@ e@% g@ h@ i@ j@ k@ q@ s@ u@ w@ x@ y@ {@ }@ @ ‚@ …@ ‰@% ‘@ “@ •@ –@ —@ ˜@ ™@ ¡@ ¢@ ©@ ·@ Á@ á@ â@ å@ é@ ë@% ñ@ ó@ õ@ ÷@ ø@ ý@¡A@¡B@¡E@¡I@¡Q@¡S@¡U@¡V@¡W@¡Y@¡[@%¡a@¡b@¡e@¡i@¡q@¡u@¡v@¡w@¡y@¡@¡¡@¡¢@¡¤@¡¥@¡¨@¡©@¡«@%¡±@¡³@¡µ@¡·@¡½@¡Á@¡Å@¡Ö@¡×@¡á@¢A@¢E@¢I@¢S@¢U@¢W@¢a@%¢e@¢i@¢s@¢u@¢@¢‚@¢ƒ@¢…@¢ˆ@¢‰@¢Š@¢‹@¢‘@¢“@¢•@¢—@¢›@%¢@¢¡@¢¥@¢©@¢³@¢µ@¢Á@¢á@¢å@¢é@£A@£E@£I@£Q@£U@£a@£b@%£e@£i@£q@£u@£w@£@£…@£¡@£¢@£¥@£¨@£©@£«@£±@£³@£µ@£¶@%£·@£¸@£¹@£»@¤a@¤b@¤c@¤d@¤e@¤h@¤i@¤j@¤k@¤l@¤q@¤s@¤u@%¤v@¤w@¤{@¤@¤‚@¤…@¤ˆ@¤‰@¤‘@¤“@¤•@¤–@¤—@¤›@¤¡@¤¢@¤¥@%¤±@¤³@¤Á@¤á@¤â@¤å@¤è@¤é@¤ë@¤ñ@¤ó@¤õ@¤ö@¤÷@¤ø@¤ú@¥A@%¥B@¥E@¥H@¥I@¥Q@¥S@¥U@¥V@¥W@¥[@¥a@¥b@¥e@¥i@¥q@¥s@¥u@%¥v@¥w@¥x@¥y@¥z@¥{@¥@¥…@¥¡@¥¢@¥£@¥¥@¥©@¥±@¥³@¥µ@¥·@%¥Á@¥Å@¥Õ@¥Ö@¥á@¥ö@¦A@¦B@¦E@¦I@¦Q@¦S@¦a@¦e@¦@¦‚@¦…@%¦ˆ@¦‰@¦Š@¦‹@¦‘@¦“@¦•@¦—@¦™@¦›@¦œ@¦¡@¦©@¦¶@¦º@¦Á@¦á@%¦â@¦å@¦é@¦÷@§A@§E@§I@§Q@§U@§W@§a@§b@§e@§i@§m@§q@§s@%§u@§w@§@§¡@§¢@§¥@§¨@§©@§«@§±@§³@§µ@§·@§¸@§¹@¨a@¨b@%¨e@¨i@¨k@¨q@¨s@¨u@¨v@¨w@¨}@¨@¨‚@¨…@¨‰@¨‘@¨“@¨•@¨–@%¨—@¨¡@¨¢@¨¥@¨±@¨Á@¨á@¨â@¨å@¨è@¨é@¨ñ@¨õ@¨ö@¨÷@©A@©B@%©E@©I@©U@©W@©a@©b@©q@©s@©u@©v@©w@©@©¡@©¢@©¥@©©@©±@%©³@©·@©Á@©á@ªA@ªa@ªq@ªw@ª@ª‚@ª…@ª‰@ªŠ@ª‘@ª“@ª•@ª—@%ª¡@ªÁ@ªá@«A@«W@«a@«b@«e@«i@«q@«s@«@«¡@«¢@«¥@«©@«±@%«³@«µ@«·@¬a@¬b@¬c@¬d@¬e@¬h@¬i@¬j@¬k@¬l@¬p@¬q@¬s@¬u@%¬v@¬w@¬y@¬{@¬}@¬@¬‚@¬…@¬ˆ@¬‰@¬‘@¬“@¬•@¬–@¬—@¬¡@¬¢@%¬¥@¬©@¬±@¬³@¬µ@¬·@¬Á@¬Å@¬É@¬Ñ@¬×@¬á@¬â@¬ã@¬ä@¬å@¬è@%¬é@¬ê@¬ë@¬ì@¬ñ@¬ó@¬õ@¬ö@¬÷@¬ü@­A@­B@­E@­H@­I@­Q@­S@%­U@­V@­W@­[@­a@­b@­d@­e@­i@­q@­s@­u@­v@­w@­@­…@­‰@%­—@­¡@­¢@­£@­¥@­¨@­©@­«@­±@­³@­µ@­·@­»@­Á@­Â@­Å@­É@%­Õ@­×@­á@­å@­é@­ñ@­õ@­ö@®A@®E@®I@®Q@®S@®U@®a@®b@®e@%®i@®q@®s@®u@®w@®@®‚@®…@®ˆ@®‰@®‘@®“@®•@®—@®™@®›@®œ@%®¡@®¶@®Á@®Â@®Å@®É@®Ñ@®×@®á@®â@®å@®é@®ñ@®ó@®õ@®÷@¯A@%¯B@¯E@¯I@¯Q@¯U@¯W@¯a@¯b@¯e@¯i@¯j@¯p@¯q@¯s@¯u@¯w@¯@%¯¡@¯¢@¯¥@¯¨@¯©@¯«@¯°@¯±@¯³@¯µ@¯·@¯¼@°a@°b@°d@°e@°i@%°k@°q@°s@°u@°v@°w@°}@°@°‚@°…@°‰@°‘@°“@°•@°–@°—@°¡@%°µ@°·@°Á@°á@°â@°å@°é@°ë@°ñ@°ó@°õ@°ö@°÷@±A@±B@±E@±I@%±W@±a@±@±…@±¡@±¢@±¥@±¨@±©@±«@±±@±³@±·@±Á@±Â@±Å@±É@%±Ö@±á@±ö@²A@²E@²I@²Q@²S@²U@²a@²@²‚@²…@²‰@²‘@²“@²•@%²—@²¡@²µ@²¶@²Á@²á@²å@²ý@³A@³W@³a@³b@³e@³i@³k@³p@³q@%³s@³@³…@³‰@³‘@³¡@³¢@³¥@³©@³±@³³@³µ@³¶@³·@³¹@´a@´b@%´e@´f@´g@´i@´j@´k@´l@´p@´q@´s@´u@´v@´w@´{@´|@´}@´@%´‚@´…@´‰@´‘@´“@´•@´–@´—@´¡@´¢@´¥@´©@´¬@´±@´³@´µ@´¶@%´·@´»@´½@´Á@´Å@´É@´Ó@´Õ@´á@´â@´ã@´å@´æ@´è@´é@´ê@´ë@%´ñ@´ó@´ô@´õ@´ö@´÷@´ø@´ú@´ü@µA@µB@µE@µI@µQ@µS@µU@µW@%µa@µb@µc@µe@µf@µh@µi@µk@µl@µq@µs@µt@µu@µv@µw@µ{@µ|@%µ}@µ@µ…@µ‰@µ‘@µ“@µ•@µ–@µ—@µ¡@µ¢@µ¥@µ¨@µ©@µª@µ«@µ­@%µ°@µ±@µ³@µµ@µ·@µ¸@µ¹@µÁ@µÂ@µÅ@µÉ@µÑ@µÓ@µÕ@µÖ@µ×@µá@%µâ@µå@µñ@µõ@µ÷@¶A@¶B@¶E@¶I@¶Q@¶S@¶U@¶W@¶a@¶b@¶e@¶i@%¶q@¶s@¶u@¶w@¶@¶‚@¶…@¶ˆ@¶‰@¶Š@¶‹@¶‘@¶“@¶•@¶—@¶¡@¶¢@%¶¥@¶©@¶±@¶³@¶µ@¶¶@¶·@¶Á@¶Â@¶Å@¶É@¶Ñ@¶Ó@¶×@¶á@¶â@¶å@%¶è@¶é@¶ñ@¶ó@¶õ@¶÷@·A@·B@·E@·I@·Q@·S@·U@·W@·X@·Y@·a@%·b@·e@·i@·o@·q@·s@·u@·w@·x@·y@·z@·{@·|@·}@·@·…@·‰@%·‘@·•@·¡@·¢@·¥@·¨@·©@·ª@·«@·°@·±@·³@·µ@·¶@··@·¸@·¼@%¸a@¸b@¸e@¸g@¸h@¸i@¸k@¸q@¸s@¸u@¸v@¸w@¸x@¸y@¸|@¸@¸‚@%¸…@¸‰@¸‘@¸“@¸•@¸–@¸—@¸¡@¸¢@¸¥@¸§@¸©@¸±@¸·@¸Á@¸Å@¸É@%¸á@¸â@¸å@¸è@¸é@¸ë@¸ñ@¸ó@¸õ@¸ö@¸÷@¸ø@¸ý@¹A@¹B@¹E@¹I@%¹Q@¹S@¹U@¹W@¹a@¹b@¹e@¹i@¹q@¹s@¹u@¹v@¹w@¹@¹¡@¹¢@¹¥@%¹©@¹«@¹±@¹³@¹µ@¹·@¹¸@¹¹@¹½@¹Á@¹Â@¹Å@¹É@¹Ñ@¹Ó@¹Õ@¹Ö@%¹×@¹á@¹å@¹é@¹ñ@¹ö@¹÷@ºA@ºE@ºI@ºQ@ºS@ºU@ºW@ºa@ºb@ºe@%ºi@ºq@ºs@ºw@º@º‚@º…@º‰@ºŠ@º‹@º‘@º“@º•@º—@º¡@ºµ@º¶@%ºÁ@ºá@ºâ@ºå@ºé@ºñ@ºó@ºõ@»A@»B@»E@»I@»Q@»a@»b@»e@»i@%»q@»s@»u@»w@»@»¡@»¢@»¥@»¨@»©@»«@»±@»³@»µ@»¶@»·@»¸@%»»@»¼@¼a@¼b@¼e@¼g@¼i@¼l@¼q@¼s@¼u@¼v@¼w@¼@¼‚@¼…@¼‰@%¼‘@¼“@¼•@¼–@¼—@¼¡@¼¥@¼·@¼Á@¼á@¼â@¼å@¼é@¼ì@¼ñ@¼ó@¼õ@%¼ö@¼÷@½A@½I@½W@½a@½u@½v@½@½¡@½¢@½¥@½©@½±@½³@½µ@½·@%½¸@½¹@½Á@½Â@½É@½Ö@½á@½ö@¾A@¾E@¾I@¾Q@¾S@¾a@¾w@¾@¾‚@%¾…@¾‰@¾‘@¾“@¾—@¾¡@¾¶@¾·@¾Á@¾á@¿A@¿a@¿q@¿s@¿u@¿w@¿@%¿¡@¿¢@¿¥@¿©@¿±@¿³@¿µ@¿·@¿¸@¿¼@¿½@Àa@Àb@Àe@Àg@Àh@Ài@%Àq@Às@Àu@Àv@Àw@Àx@Ày@À|@À@À‚@À…@À‰@À‘@À“@À•@À–@À—@%À¡@À¥@À§@À©@À±@À³@À·@ÀÁ@Àá@Àâ@Àå@Àé@Àñ@Àó@Àõ@Àö@À÷@%ÁA@ÁB@ÁE@ÁI@ÁQ@ÁS@ÁU@ÁW@Áa@Áe@Áu@Áv@Áw@Á@Á…@Á—@Á¡@%Á¢@Á¥@Á©@Á±@Á³@Áµ@Á·@ÁÁ@ÁÅ@ÁÉ@Á×@Áá@ÂA@ÂE@ÂI@ÂQ@ÂS@%ÂU@ÂW@Âa@Âq@Â@‚@Â…@‰@‘@“@•@—@¡@µ@¶@ÂÁ@ÂÅ@%Âá@Âå@Âé@Âñ@Âó@Âõ@Â÷@ÃA@ÃE@ÃI@ÃQ@ÃW@Ãa@Ãb@Ãe@Ãi@Ãq@%Ãs@Ãu@Ãw@Ã@á@â@Ã¥@è@é@ê@ñ@ó@õ@÷@Äa@Äb@Äe@%Äh@Äi@Äq@Äs@Äu@Äw@Ä@Ä‚@Ä…@Ĉ@ĉ@Ä‘@Ä“@Ä•@Ä–@Ä—@Ä›@%Ä¡@Ä¢@Ä·@ÄÁ@Äá@Äâ@Äå@Äè@Äé@Äñ@Äó@Äõ@Äö@Ä÷@Äû@ÅA@ÅB@%ÅE@ÅI@ÅQ@ÅS@ÅU@ÅW@Å[@Åa@Åe@Åi@Åq@Ås@Åu@Åv@Åw@Å@Å¡@%Å¢@Å¥@Å©@ű@ų@ŵ@Å·@ÅÁ@ÅÂ@ÅÅ@ÅÉ@ÅÑ@Å×@Åá@Åâ@Åå@Åõ@%Å÷@ÆA@ÆE@ÆI@ÆW@Æa@Æ@Æ‚@Æ…@Ɖ@Æ‘@Æ“@Æ•@Æ—@Æ¡@Æ¥@Æ©@%Æ·@ÆÁ@Æ×@Æá@Æâ@Æå@Æé@Æñ@Æó@Æõ@Æ÷@ÇA@ÇE@ÇI@ÇQ@Ça@Çb@%Çe@Çi@Çq@Çs@Çw@Ç@Ç¡@Ç¢@Ç¥@Ç©@DZ@dz@ǵ@Ç·@Èa@Èb@Èe@%Èi@Èj@Èq@Ès@Èu@Èv@Èw@È@È‚@È…@ȉ@È‘@È“@È•@È–@È—@È¡@%È·@ÈÁ@Èá@Èâ@Èå@Èé@Èë@Èñ@Èó@Èõ@Èö@È÷@ÉA@ÉB@ÉE@ÉI@ÉQ@%ÉS@ÉU@ÉV@ÉW@Éa@Éb@Ée@Év@É@É…@É¡@É¢@É¥@É©@ɱ@ɳ@ɵ@%É·@ɼ@ÉÁ@ÉÅ@Éá@ÊA@ÊE@ÊU@ÊW@Êa@Ê@Ê‚@Ê…@ʉ@Ê‘@Ê“@Ê•@%Ê—@Ê¡@ʶ@ÊÁ@ÊÕ@Êá@Êâ@Êå@Êé@Êñ@Êó@Êõ@Ê÷@ËA@ËE@ËI@ËQ@%ËW@Ëa@Ëb@Ëe@Ëh@Ëi@Ëk@Ëq@Ës@Ëu@Ëw@Ë@Ë…@ˉ@Ë‘@Ë“@Ë•@%Ë¡@Ë¢@Ë¥@Ë©@˱@˳@˵@Ë·@˼@Ìa@Ìb@Ìc@Ìe@Ìi@Ìk@Ìq@Ìs@%Ìu@Ìv@Ìw@Ì{@Ì|@Ì@Ì‚@Ì…@̉@Ì‘@Ì“@Ì•@Ì–@Ì—@Ì¡@Ì¢@Ì·@%ÌÁ@Ìá@Ìâ@Ìå@Ìé@Ìñ@Ìó@Ìõ@Ìö@Ì÷@ÍA@ÍB@ÍE@ÍI@ÍQ@ÍS@ÍU@%ÍW@Í\@Ía@Íb@Íe@Íi@Íq@Ís@Íu@Ív@Íw@Í@͉@Í“@Í•@Í¡@Í¢@%Í¥@Í©@ͱ@ͳ@͵@Í·@ÍÁ@Í×@Íá@ÎA@ÎE@Îa@Îe@Îi@Îs@Îu@Î@%΂@Î…@Έ@Ή@΋@Α@Γ@Ε@Η@Ρ@η@ÎÁ@Îá@Îå@Îé@Îñ@Îõ@%ÏA@ÏB@ÏE@ÏI@ÏQ@ÏU@ÏW@Ïa@Ïb@Ïe@Ïi@Ïm@Ïq@Ïs@Ïu@Ïw@Ï@%Ï…@Ï¡@Ï¢@Ï¥@Ï©@ϱ@ϳ@ϵ@Ï·@Ða@Ðb@Ðe@Ðh@Ði@Ðj@Ðn@Ðq@%Ðs@Ðu@Ðv@Ðw@Ð{@Ð@Ђ@Ð…@Љ@Б@Г@Е@Ж@З@С@з@ÐÁ@%Ðá@Ðâ@Ðå@Ðè@Ðé@Ðë@Ðñ@Ðó@Ðõ@Ð÷@ÑA@ÑB@ÑE@ÑI@ÑQ@ÑS@ÑU@%ÑW@Ña@Ñb@Ñe@Ñi@Ñq@Ñs@Ñu@Ñv@Ñw@Ñ@Ñ…@щ@Ñ‘@Ñ“@Ñ¡@Ñ¢@%Ñ¥@Ñ©@Ñ®@ѱ@ѳ@ѵ@Ñ·@Ñ»@ÑÁ@ÑÂ@ÑÅ@ÑÉ@ÑÕ@Ñ×@Ñá@Ñâ@Ñå@%Ñõ@Ñ÷@ÒA@ÒB@ÒE@ÒI@ÒS@ÒU@ÒW@Òa@Òb@Òe@Òi@Òq@Òs@Òu@Ò@%Ò‚@Ò…@Ò‰@ÒŽ@Ò‘@Ò“@Ò•@Ò—@Ò¡@Ò¥@Ò©@Ò±@Ò·@ÒÁ@ÒÂ@ÒÅ@ÒÉ@%ÒÑ@Ò×@Òá@Òâ@Òå@Òé@Òñ@Òó@Òõ@Ò÷@ÓA@ÓB@ÓE@ÓI@ÓQ@ÓU@ÓW@%Óa@Ób@Óe@Óg@Óh@Ói@Ój@Óq@Ós@Óu@Ów@Ó{@Ó@Ó‚@Ó…@Ó‰@Ó‘@%Ó“@Ó—@Ó¡@Ó¢@Ó¥@Ó©@Ó±@Ó³@Óµ@Ó·@ÔA@ÔB@ÔC@ÔD@ÔE@ÔF@ÔG@%ÔH@ÔI@ÔJ@ÔK@ÔL@ÔM@ÔN@ÔO@ÔP@ÔQ@ÔR@ÔS@ÔT@ÔU@ÔV@ÔW@ÔX@%ÔY@ÔZ@Ô[@Ô\@Ô]@Ô^@Ô_@Ô`@Ôa@Ôb@Ôc@Ôd@Ôe@Ôf@Ôg@Ôh@Ôi@%Ôj@Ôk@Ôl@Ôm@Ôn@Ôo@Ôp@Ôq@Ôr@Ôs@Ôt@Ôu@Ôv@Ôw@Ôx@Ôy@Ôz@%Ô{@Ô|@Ô}@Ô~@Ô@Ô@Ô‚@Ôƒ@Ô„@Ô…@Ô†@Ô‡@Ôˆ@Ô‰@ÔŠ@Ô‹@ÔŒ@%Ô@ÔŽ@Ô@Ô@Ô‘@Ô’@Ô“@Ô”@Ô•@Ô–@Ô—@Ô˜@Ô™@Ôš@Ô›@Ôœ@Ô@%Ôž@ÔŸ@Ô @Ô¡@Ô¢@Ô£@Ô¤@Ô¥@Ô¦@Ô§@Ô¨@Ô©@Ôª@Ô«@Ô¬@Ô­@Ô®@%Ô¯@Ô°@Ô±@Ô²@Ô³@Ô´@Ôµ@Ô¶@Ô·@Ô¸@Ô¹@Ôº@Ô»@Ô¼@Ô½@Ô¾@Ô¿@%ÔÀ@ÔÁ@ÔÂ@ÔÃ@ÔÄ@ÔÅ@ÔÆ@ÔÇ@ÔÈ@ÔÉ@ÔÊ@ÔË@ÔÌ@ÔÍ@ÔÎ@ÔÏ@ÔÐ@%ÔÑ@ÔÒ@ÔÓ@ÔÔ@ÔÕ@ÔÖ@Ô×@ÔØ@ÔÙ@ÔÚ@ÔÛ@ÔÜ@ÔÝ@ÔÞ@Ôß@Ôà@Ôá@%Ôâ@Ôã@Ôä@Ôå@Ôæ@Ôç@Ôè@Ôé@Ôê@Ôë@Ôì@Ôí@Ôî@Ôï@Ôð@Ôñ@Ôò@%Ôó@Ôô@Ôõ@Ôö@Ô÷@Ôø@Ôù@Ôú@Ôû@Ôü@Ôý@ÕA@ÕB@ÕC@ÕD@ÕE@ÕF@%ÕG@ÕH@ÕI@ÕJ@ÕK@ÕL@ÕM@ÕN@ÕO@ÕP@ÕQ@ÕR@ÕS@ÕT@ÕU@ÕV@ÕW@%ÕX@ÕY@ÕZ@Õ[@Õ\@Õ]@Õ^@Õ_@Õ`@Õa@Õb@Õc@Õd@Õe@Õf@Õg@Õh@%Õi@Õj@Õk@Õl@Õm@Õn@Õo@Õp@Õq@Õr@Õs@Õt@Õu@Õv@Õw@Õx@Õy@%Õz@Õ{@Õ|@Õ}@Õ~@Õ@Õ@Õ‚@Õƒ@Õ„@Õ…@Õ†@Õ‡@Õˆ@Õ‰@ÕŠ@Õ‹@%ÕŒ@Õ@ÕŽ@Õ@Õ@Õ‘@Õ’@Õ“@Õ”@Õ•@Õ–@Õ—@Õ˜@Õ™@Õš@Õ›@Õœ@%Õ@Õž@ÕŸ@Õ @Õ¡@Õ¢@Õ£@Õ¤@Õ¥@Õ¦@Õ§@Õ¨@Õ©@Õª@Õ«@Õ¬@Õ­@%Õ®@Õ¯@Õ°@Õ±@Õ²@Õ³@Õ´@Õµ@Õ¶@Õ·@Õ¸@Õ¹@Õº@Õ»@Õ¼@Õ½@Õ¾@%Õ¿@ÕÀ@ÕÁ@ÕÂ@ÕÃ@ÕÄ@ÕÅ@ÕÆ@ÕÇ@ÕÈ@ÕÉ@ÕÊ@ÕË@ÕÌ@ÕÍ@ÕÎ@ÕÏ@%ÕÐ@ÕÑ@ÕÒ@ÕÓ@ÕÔ@ÕÕ@ÕÖ@Õ×@ÕØ@ÕÙ@ÕÚ@ÕÛ@ÕÜ@ÕÝ@ÕÞ@Õß@Õà@%Õá@Õâ@Õã@Õä@Õå@Õæ@Õç@Õè@Õé@Õê@Õë@Õì@Õí@Õî@Õï@Õð@Õñ@%Õò@Õó@Õô@Õõ@Õö@Õ÷@Õø@Õù@Õú@Õû@Õü@Õý@ÖA@ÖB@ÖC@ÖD@ÖE@%ÖF@ÖG@ÖH@ÖI@ÖJ@ÖK@ÖL@ÖM@ÖN@ÖO@ÖP@ÖQ@ÖR@ÖS@ÖT@ÖU@ÖV@%ÖW@ÖX@ÖY@ÖZ@Ö[@Ö\@Ö]@Ö^@Ö_@Ö`@Öa@Öb@Öc@Öd@Öe@Öf@Ög@%Öh@Öi@Öj@Ök@Öl@Öm@Ön@Öo@Öp@Öq@Ör@Ös@Öt@Öu@Öv@Öw@Öx@%Öy@Öz@Ö{@Ö|@Ö}@Ö~@Ö@Ö@Ö‚@Öƒ@Ö„@Ö…@Ö†@Ö‡@Öˆ@Ö‰@ÖŠ@%Ö‹@ÖŒ@Ö@ÖŽ@Ö@Ö@Ö‘@Ö’@Ö“@Ö”@Ö•@Ö–@Ö—@Ö˜@Ö™@Öš@Ö›@%Öœ@Ö@Öž@ÖŸ@Ö @Ö¡@Ö¢@Ö£@Ö¤@Ö¥@Ö¦@Ö§@Ö¨@Ö©@Öª@Ö«@Ö¬@%Ö­@Ö®@Ö¯@Ö°@Ö±@Ö²@Ö³@Ö´@Öµ@Ö¶@Ö·@Ö¸@Ö¹@Öº@Ö»@Ö¼@Ö½@%Ö¾@Ö¿@ÖÀ@ÖÁ@ÖÂ@ÖÃ@ÖÄ@ÖÅ@ÖÆ@ÖÇ@ÖÈ@ÖÉ@ÖÊ@ÖË@ÖÌ@ÖÍ@ÖÎ@%ÖÏ@ÖÐ@ÖÑ@ÖÒ@ÖÓ@ÖÔ@ÖÕ@ÖÖ@Ö×@ÖØ@ÖÙ@ÖÚ@ÖÛ@ÖÜ@ÖÝ@ÖÞ@Öß@%Öà@Öá@Öâ@Öã@Öä@Öå@Öæ@Öç@Öè@Öé@Öê@Öë@Öì@Öí@Öî@Öï@Öð@%Öñ@Öò@Öó@Öô@Öõ@Öö@Ö÷@Öø@Öù@Öú@Öû@Öü@Öý@×A@×B@×C@×D@%×E@×F@×G@×H@×I@×J@×K@×L@×M@×N@×O@×P@×Q@×R@×S@×T@×U@%×V@×W@×X@×Y@×Z@×[@×\@×]@×^@×_@×`@×a@×b@×c@×d@×e@×f@%×g@×h@×i@×j@×k@×l@×m@×n@×o@×p@×q@×r@×s@×t@×u@×v@×w@%×x@×y@×z@×{@×|@×}@×~@×@×@ׂ@׃@ׄ@×…@׆@ׇ@׈@׉@%׊@׋@׌@×@׎@×@×@ב@×’@ד@×”@ו@×–@×—@ט@×™@ך@%×›@ל@×@מ@ן@× @ס@×¢@×£@פ@×¥@צ@ק@ר@ש@ת@׫@%׬@×­@×®@ׯ@×°@×±@ײ@׳@×´@×µ@׶@×·@׸@×¹@׺@×»@×¼@%×½@×¾@׿@×À@×Á@×Â@×Ã@×Ä@×Å@×Æ@×Ç@×È@×É@×Ê@×Ë@×Ì@×Í@%×Î@×Ï@×Ð@×Ñ@×Ò@×Ó@×Ô@×Õ@×Ö@××@×Ø@×Ù@×Ú@×Û@×Ü@×Ý@×Þ@%×ß@×à@×á@×â@×ã@×ä@×å@×æ@×ç@×è@×é@×ê@×ë@×ì@×í@×î@×ï@%×ð@×ñ@×ò@×ó@×ô@×õ@×ö@×÷@×ø@×ù@×ú@×û@×ü@×ý@ØA@ØB@ØC@%ØD@ØE@ØF@ØG@ØH@ØI@ØJ@ØK@ØL@ØM@ØN@ØO@ØP@ØQ@ØR@ØS@ØT@%ØU@ØV@ØW@ØX@ØY@ØZ@Ø[@Ø\@Ø]@Ø^@Ø_@Ø`@Øa@Øb@Øc@Ød@Øe@%Øf@Øg@Øh@Øi@Øj@Øk@Øl@Øm@Øn@Øo@Øp@Øq@Ør@Øs@Øt@Øu@Øv@%Øw@Øx@Øy@Øz@Ø{@Ø|@Ø}@Ø~@Ø@Ø@Ø‚@؃@Ø„@Ø…@؆@؇@؈@%؉@ØŠ@Ø‹@ØŒ@Ø@ØŽ@Ø@Ø@Ø‘@Ø’@Ø“@Ø”@Ø•@Ø–@Ø—@ؘ@Ø™@%Øš@Ø›@Øœ@Ø@Øž@ØŸ@Ø @Ø¡@Ø¢@Ø£@ؤ@Ø¥@ئ@ا@ب@Ø©@ت@%Ø«@ج@Ø­@Ø®@د@Ø°@ر@ز@س@Ø´@ص@ض@Ø·@ظ@ع@غ@Ø»@%ؼ@ؽ@ؾ@Ø¿@ØÀ@ØÁ@ØÂ@ØÃ@ØÄ@ØÅ@ØÆ@ØÇ@ØÈ@ØÉ@ØÊ@ØË@ØÌ@%ØÍ@ØÎ@ØÏ@ØÐ@ØÑ@ØÒ@ØÓ@ØÔ@ØÕ@ØÖ@Ø×@ØØ@ØÙ@ØÚ@ØÛ@ØÜ@ØÝ@%ØÞ@Øß@Øà@Øá@Øâ@Øã@Øä@Øå@Øæ@Øç@Øè@Øé@Øê@Øë@Øì@Øí@Øî@%Øï@Øð@Øñ@Øò@Øó@Øô@Øõ@Øö@Ø÷@Øø@Øù@Øú@Øû@Øü@Øý@ÙA@ÙB@%ÙC@ÙD@ÙE@ÙF@ÙG@ÙH@ÙI@ÙJ@ÙK@ÙL@ÙM@ÙN@ÙO@ÙP@ÙQ@ÙR@ÙS@%ÙT@ÙU@ÙV@ÙW@ÙX@ÙY@ÙZ@Ù[@Ù\@Ù]@Ù^@Ù_@Ù`@Ùa@Ùb@Ùc@Ùd@%Ùe@Ùf@Ùg@Ùh@Ùi@Ùj@Ùk@Ùl@Ùm@Ùn@Ùo@Ùp@Ùq@Ùr@Ùs@Ùt@Ùu@%Ùv@Ùw@Ùx@Ùy@Ùz@Ù{@Ù|@Ù}@Ù~@Ù@Ù@Ù‚@Ùƒ@Ù„@Ù…@Ù†@Ù‡@%Ùˆ@Ù‰@ÙŠ@Ù‹@ÙŒ@Ù@ÙŽ@Ù@Ù@Ù‘@Ù’@Ù“@Ù”@Ù•@Ù–@Ù—@Ù˜@%Ù™@Ùš@Ù›@Ùœ@Ù@Ùž@ÙŸ@Ù @Ù¡@Ù¢@Ù£@Ù¤@Ù¥@Ù¦@Ù§@Ù¨@Ù©@%Ùª@Ù«@Ù¬@Ù­@Ù®@Ù¯@Ù°@Ù±@Ù²@Ù³@Ù´@Ùµ@Ù¶@Ù·@Ù¸@Ù¹@Ùº@%Ù»@Ù¼@Ù½@Ù¾@Ù¿@ÙÀ@ÙÁ@ÙÂ@ÙÃ@ÙÄ@ÙÅ@ÙÆ@ÙÇ@ÙÈ@ÙÉ@ÙÊ@ÙË@%ÙÌ@ÙÍ@ÙÎ@ÙÏ@ÙÐ@ÙÑ@ÙÒ@ÙÓ@ÙÔ@ÙÕ@ÙÖ@Ù×@ÙØ@ÙÙ@ÙÚ@ÙÛ@ÙÜ@%ÙÝ@ÙÞ@Ùß@Ùà@Ùá@Ùâ@Ùã@Ùä@Ùå@Ùæ@Ùç@Ùè@Ùé@Ùê@Ùë@Ùì@Ùí@%Ùî@Ùï@Ùð@Ùñ@Ùò@Ùó@Ùô@Ùõ@Ùö@Ù÷@Ùø@Ùù@Ùú@Ùû@Ùü@Ùý@ÚA@%ÚB@ÚC@ÚD@ÚE@ÚF@ÚG@ÚH@ÚI@ÚJ@ÚK@ÚL@ÚM@ÚN@ÚO@ÚP@ÚQ@ÚR@%ÚS@ÚT@ÚU@ÚV@ÚW@ÚX@ÚY@ÚZ@Ú[@Ú\@Ú]@Ú^@Ú_@Ú`@Úa@Úb@Úc@%Úd@Úe@Úf@Úg@Úh@Úi@Új@Úk@Úl@Úm@Ún@Úo@Úp@Úq@Úr@Ús@Út@%Úu@Úv@Úw@Úx@Úy@Úz@Ú{@Ú|@Ú}@Ú~@Ú@Ú@Ú‚@Úƒ@Ú„@Ú…@Ú†@%Ú‡@Úˆ@Ú‰@ÚŠ@Ú‹@ÚŒ@Ú@ÚŽ@Ú@Ú@Ú‘@Ú’@Ú“@Ú”@Ú•@Ú–@Ú—@%Ú˜@Ú™@Úš@Ú›@Úœ@Ú@Úž@ÚŸ@Ú @Ú¡@Ú¢@Ú£@Ú¤@Ú¥@Ú¦@Ú§@Ú¨@%Ú©@Úª@Ú«@Ú¬@Ú­@Ú®@Ú¯@Ú°@Ú±@Ú²@Ú³@Ú´@Úµ@Ú¶@Ú·@Ú¸@Ú¹@%Úº@Ú»@Ú¼@Ú½@Ú¾@Ú¿@ÚÀ@ÚÁ@ÚÂ@ÚÃ@ÚÄ@ÚÅ@ÚÆ@ÚÇ@ÚÈ@ÚÉ@ÚÊ@%ÚË@ÚÌ@ÚÍ@ÚÎ@ÚÏ@ÚÐ@ÚÑ@ÚÒ@ÚÓ@ÚÔ@ÚÕ@ÚÖ@Ú×@ÚØ@ÚÙ@ÚÚ@ÚÛ@%ÚÜ@ÚÝ@ÚÞ@Úß@Úà@Úá@Úâ@Úã@Úä@Úå@Úæ@Úç@Úè@Úé@Úê@Úë@Úì@%Úí@Úî@Úï@Úð@Úñ@Úò@Úó@Úô@Úõ@Úö@Ú÷@Úø@Úù@Úú@Úû@Úü@Úý@%ÛA@ÛB@ÛC@ÛD@ÛE@ÛF@ÛG@ÛH@ÛI@ÛJ@ÛK@ÛL@ÛM@ÛN@ÛO@ÛP@ÛQ@%ÛR@ÛS@ÛT@ÛU@ÛV@ÛW@ÛX@ÛY@ÛZ@Û[@Û\@Û]@Û^@Û_@Û`@Ûa@Ûb@%Ûc@Ûd@Ûe@Ûf@Ûg@Ûh@Ûi@Ûj@Ûk@Ûl@Ûm@Ûn@Ûo@Ûp@Ûq@Ûr@Ûs@%Ût@Ûu@Ûv@Ûw@Ûx@Ûy@Ûz@Û{@Û|@Û}@Û~@Û@Û@Û‚@Ûƒ@Û„@Û…@%Û†@Û‡@Ûˆ@Û‰@ÛŠ@Û‹@ÛŒ@Û@ÛŽ@Û@Û@Û‘@Û’@Û“@Û”@Û•@Û–@%Û—@Û˜@Û™@Ûš@Û›@Ûœ@Û@Ûž@ÛŸ@Û @Û¡@Û¢@Û£@Û¤@Û¥@Û¦@Û§@%Û¨@Û©@Ûª@Û«@Û¬@Û­@Û®@Û¯@Û°@Û±@Û²@Û³@Û´@Ûµ@Û¶@Û·@Û¸@%Û¹@Ûº@Û»@Û¼@Û½@Û¾@Û¿@ÛÀ@ÛÁ@ÛÂ@ÛÃ@ÛÄ@ÛÅ@ÛÆ@ÛÇ@ÛÈ@ÛÉ@%ÛÊ@ÛË@ÛÌ@ÛÍ@ÛÎ@ÛÏ@ÛÐ@ÛÑ@ÛÒ@ÛÓ@ÛÔ@ÛÕ@ÛÖ@Û×@ÛØ@ÛÙ@ÛÚ@%ÛÛ@ÛÜ@ÛÝ@ÛÞ@Ûß@Ûà@Ûá@Ûâ@Ûã@Ûä@Ûå@Ûæ@Ûç@Ûè@Ûé@Ûê@Ûë@%Ûì@Ûí@Ûî@Ûï@Ûð@Ûñ@Ûò@Ûó@Ûô@Ûõ@Ûö@Û÷@Ûø@Ûù@Ûú@Ûû@Ûü@%Ûý@ÜA@ÜB@ÜC@ÜD@ÜE@ÜF@ÜG@ÜH@ÜI@ÜJ@ÜK@ÜL@ÜM@ÜN@ÜO@ÜP@%ÜQ@ÜR@ÜS@ÜT@ÜU@ÜV@ÜW@ÜX@ÜY@ÜZ@Ü[@Ü\@Ü]@Ü^@Ü_@Ü`@Üa@%Üb@Üc@Üd@Üe@Üf@Üg@Üh@Üi@Üj@Ük@Ül@Üm@Ün@Üo@Üp@Üq@Ür@%Üs@Üt@Üu@Üv@Üw@Üx@Üy@Üz@Ü{@Ü|@Ü}@Ü~@Ü@Ü@Ü‚@܃@Ü„@%Ü…@܆@܇@܈@܉@ÜŠ@Ü‹@ÜŒ@Ü@ÜŽ@Ü@Ü@Ü‘@Ü’@Ü“@Ü”@Ü•@%Ü–@Ü—@ܘ@Ü™@Üš@Ü›@Üœ@Ü@Üž@ÜŸ@Ü @Ü¡@Ü¢@Ü£@ܤ@Ü¥@ܦ@%ܧ@ܨ@Ü©@ܪ@Ü«@ܬ@Ü­@Ü®@ܯ@Ü°@ܱ@ܲ@ܳ@Ü´@ܵ@ܶ@Ü·@%ܸ@ܹ@ܺ@Ü»@ܼ@ܽ@ܾ@Ü¿@ÜÀ@ÜÁ@ÜÂ@ÜÃ@ÜÄ@ÜÅ@ÜÆ@ÜÇ@ÜÈ@%ÜÉ@ÜÊ@ÜË@ÜÌ@ÜÍ@ÜÎ@ÜÏ@ÜÐ@ÜÑ@ÜÒ@ÜÓ@ÜÔ@ÜÕ@ÜÖ@Ü×@ÜØ@ÜÙ@%ÜÚ@ÜÛ@ÜÜ@ÜÝ@ÜÞ@Üß@Üà@Üá@Üâ@Üã@Üä@Üå@Üæ@Üç@Üè@Üé@Üê@%Üë@Üì@Üí@Üî@Üï@Üð@Üñ@Üò@Üó@Üô@Üõ@Üö@Ü÷@Üø@Üù@Üú@Üû@%Üü@Üý@ÝA@ÝB@ÝC@ÝD@ÝE@ÝF@ÝG@ÝH@ÝI@ÝJ@ÝK@ÝL@ÝM@ÝN@ÝO@%ÝP@ÝQ@ÝR@ÝS@ÝT@ÝU@ÝV@ÝW@ÝX@ÝY@ÝZ@Ý[@Ý\@Ý]@Ý^@Ý_@Ý`@%Ýa@Ýb@Ýc@Ýd@Ýe@Ýf@Ýg@Ýh@Ýi@Ýj@Ýk@Ýl@Ým@Ýn@Ýo@Ýp@Ýq@%Ýr@Ýs@Ýt@Ýu@Ýv@Ýw@Ýx@Ýy@Ýz@Ý{@Ý|@Ý}@Ý~@Ý@Ý@Ý‚@݃@%Ý„@Ý…@݆@݇@݈@݉@ÝŠ@Ý‹@ÝŒ@Ý@ÝŽ@Ý@Ý@Ý‘@Ý’@Ý“@Ý”@%Ý•@Ý–@Ý—@ݘ@Ý™@Ýš@Ý›@Ýœ@Ý@Ýž@ÝŸ@Ý @Ý¡@Ý¢@Ý£@ݤ@Ý¥@%ݦ@ݧ@ݨ@Ý©@ݪ@Ý«@ݬ@Ý­@Ý®@ݯ@Ý°@ݱ@ݲ@ݳ@Ý´@ݵ@ݶ@%Ý·@ݸ@ݹ@ݺ@Ý»@ݼ@ݽ@ݾ@Ý¿@ÝÀ@ÝÁ@ÝÂ@ÝÃ@ÝÄ@ÝÅ@ÝÆ@ÝÇ@%ÝÈ@ÝÉ@ÝÊ@ÝË@ÝÌ@ÝÍ@ÝÎ@ÝÏ@ÝÐ@ÝÑ@ÝÒ@ÝÓ@ÝÔ@ÝÕ@ÝÖ@Ý×@ÝØ@%ÝÙ@ÝÚ@ÝÛ@ÝÜ@ÝÝ@ÝÞ@Ýß@Ýà@Ýá@Ýâ@Ýã@Ýä@Ýå@Ýæ@Ýç@Ýè@Ýé@%Ýê@Ýë@Ýì@Ýí@Ýî@Ýï@Ýð@Ýñ@Ýò@Ýó@Ýô@Ýõ@Ýö@Ý÷@Ýø@Ýù@Ýú@%Ýû@Ýü@Ýý@P^@PÑ@Q@R†@S„@Sš@S¾@SË@U±@UÊ@VL@W@Wý@Xi@%Xã@Xõ@YP@Y|@Yš@Zp@Zt@Z…@ZŒ@Z @Z¥@[[@[r@[Î@\O@\¼@]L@%]k@aj@aù@bÂ@c¯@cÌ@câ@dI@dÂ@e@eÅ@fs@f@hU@PÁ@PÐ@Q©@%QÀ@Qâ@h‰@RÓ@Rå@Rþ@SJ@hš@h›@h@hž@hŸ@h @h¡@h¢@h£@h¤@%h¥@h¦@h§@h¨@h©@hª@h«@h¬@h­@h®@h¯@h°@h±@hµ@h¶@h·@h¸@%h¹@hº@h¼@h½@h¾@h¿@hÀ@hÁ@hÂ@hÅ@hÆ@hÇ@hÈ@hÉ@hÊ@hË@hÌ@%hÍ@hÎ@hÐ@hÑ@hÒ@hÓ@hÔ@hÕ@hÖ@h×@hØ@hÙ@hÚ@hÛ@hÜ@hÝ@hÞ@%hß@hà@há@hâ@hã@hä@hå@hæ@hç@hè@hê@hë@hì@hí@hî@hï@hð@%hñ@Tµ@iI@TÑ@iJ@iK@iP@iU@U÷@ig@Wã@XB@Xa@XÁ@Xó@YS@YÃ@%YÆ@YØ@ZJ@ZQ@Z¸@ZÐ@[K@\I@\S@\[@\Á@iî@iï@iñ@iò@ió@iô@%iö@i÷@iø@iù@iþ@jA@jB@jC@jD@jE@jH@jM@jN@jO@jP@jQ@jR@%jS@jT@jU@jV@jW@][@jZ@j[@j\@j]@j^@j`@ja@jb@jc@jd@je@%jf@]s@jg@jh@]w@ji@jj@jk@jl@jn@jo@jp@jq@jr@js@ju@j{@%]”@j}@j~@j@j@jƒ@j„@j†@j‰@jŠ@j‹@]º@jž@jŸ@j¡@j¢@j¤@%^K@j¥@j§@j¨@j©@j±@^”@jÄ@jÈ@jÉ@jÊ@jÍ@jÎ@jÐ@jÑ@jÒ@jÓ@%jÔ@jÕ@j×@jØ@jÙ@jÚ@jÛ@jÝ@jß@jà@já@jâ@jä@jç@jè@jé@_‡@%jê@jë@jì@jí@jî@jï@jò@jó@jö@j÷@jø@jù@jû@jü@jý@kB@kD@%kE@kF@kI@kJ@kK@kM@kN@kO@`J@k[@bi@kŠ@b«@bý@c…@dŽ@d‘@%kµ@d¿@dË@k¼@kÀ@kÍ@eë@fj@fà@BZ@B@B{@B[@Bl@BP@B}@BM@%B]@B\@BN@Bk@B`@BK@Ba@Bð@Bñ@Bò@Bó@Bô@Bõ@Bö@B÷@Bø@Bù@%Bz@B^@BL@B~@Bn@Bo@B|@BÁ@BÂ@BÃ@BÄ@BÅ@BÆ@BÇ@BÈ@BÉ@BÑ@%BÒ@BÓ@BÔ@BÕ@BÖ@B×@BØ@BÙ@Bâ@Bã@Bä@Bå@Bæ@Bç@Bè@Bé@A‹@%AK@AŒ@Aj@Bm@By@B@B‚@Bƒ@B„@B…@B†@B‡@Bˆ@B‰@B‘@B’@B“@%B”@B•@B–@B—@B˜@B™@B¢@B£@B¤@B¥@B¦@B§@B¨@B©@BÀ@BO@BÐ@%IT@BJ@Ak@B_@AL@Bj@Al@Bà@% \ No newline at end of file diff -adurpN glibc-2.2/iconvdata/testdata/IBM935 glibc-2.2.1/iconvdata/testdata/IBM935 --- glibc-2.2/iconvdata/testdata/IBM935 Wed Nov 1 23:48:36 2000 +++ glibc-2.2.1/iconvdata/testdata/IBM935 Sat Jan 6 20:35:16 2001 @@ -1,2 +1,2 @@ @@@@7@-@.@/@@@%@ @ @ @?@?@@%@@@<@=@2@&@@@?@'@@@@@@@Z@%@{@à@l@P@}@M@]@\@N@k@`@K@a@ð@ñ@ò@%ó@ô@õ@ö@÷@ø@ù@z@^@L@~@n@o@|@Á@Â@Ã@%Ä@Å@Æ@Ç@È@É@Ñ@Ò@Ó@Ô@Õ@Ö@×@Ø@Ù@â@ã@%ä@å@æ@ç@è@é@º@²@»@°@m@y@@‚@ƒ@„@…@%†@‡@ˆ@‰@‘@’@“@”@•@–@—@˜@™@¢@£@¤@¥@%¦@§@¨@©@À@O@Ð@ @@ @!@"@#@$@@@@%(@)@*@+@,@ @ -@@0@1@@3@4@5@6@@8@%9@;@@@>@ÿ@?@?@?@J@[@j@?@?@?@_@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@¡@%Eˆ@Dj@D`@%Dí@DK@DP@CE@Dz@FD@FB@FH@FF@FZ@FL@FJ@FP@FN@D{@FT@FR@%FY@FA@FE@FG@FI@FM@FQ@FC@FK@FO@FS@FU@FV@FW@FX@EF@EE@%Aa@Ab@Ac@Ad@Ae@Af@Ag@Ah@Ai@Aj@Ak@Al@Am@An@Ao@Ap@Aq@%Ar@As@At@Au@Av@Aw@Ax@AA@AB@AC@AD@AE@AF@AG@AH@AI@AJ@%AK@AL@AM@AN@AO@AP@AQ@AR@AS@AT@AU@AV@AW@AX@AÆ@AÀ@AÁ@%AÂ@AÃ@AÄ@AÅ@AÇ@AÈ@AÉ@AÊ@AË@AÌ@AÍ@AÎ@AÏ@AÐ@AÑ@AÒ@AÓ@%AÔ@AÕ@AÖ@A×@AØ@AÙ@AÚ@AÛ@AÜ@AÝ@AÞ@Aß@Aà@A€@A@A‚@Aƒ@%A„@A…@A‡@Aˆ@A‰@AŠ@A‹@AŒ@A@AŽ@A@A@A‘@A’@A“@A”@A•@%A–@A—@A˜@A™@Aš@A›@Aœ@A@Až@AŸ@A @A†@DZ@DJ@DJ@D|@Da@%Dq@Db@Dr@D~@D@E‹@Dî@Dï@Dk@DN@Dn@Do@Añ@Aò@Aó@Aô@Aõ@%Aö@A÷@Aø@Aù@Aú@Aû@Aü@A±@A²@A³@A´@Aµ@A¶@A·@A¸@A¹@Aº@%Dñ@Dò@Dð@Dó@Ei@Ef@Ee@Ek@Ew@DM@En@Em@Ec@Ed@Eh@Eg@Eq@%Er@Dh@Dx@Eb@Ej@Ev@Eu@Et@DL@Es@Dg@Dw@Ey@Ez@Ep@El@Eo@%Eá@Eâ@Eã@Eä@Eå@Eæ@Eç@Eè@Eé@Eê@EÅ@EÆ@EÇ@EÈ@EÉ@EÊ@EË@%EÌ@EÍ@EÎ@EÏ@EÐ@EÑ@EÒ@EÓ@EÔ@EÕ@EÖ@E×@EØ@E±@E²@E³@E´@%Eµ@E¶@E·@E¸@E¹@Eº@E»@E¼@E½@E¾@E¿@EÀ@EÁ@EÂ@EÃ@EÄ@F¤@%F¥@F¦@F§@F¨@F©@Fª@F«@F¬@F­@F®@F¯@F°@F±@F²@F³@F´@Fµ@%F¶@F·@F¸@F¹@Fº@F»@F¼@F½@F¾@F¿@FÀ@FÁ@FÂ@FÃ@FÄ@FÅ@FÆ@%FÇ@FÈ@FÉ@FÊ@FË@FÌ@FÍ@FÎ@FÏ@FÐ@FÑ@FÒ@FÓ@FÔ@FÕ@FÖ@F×@%FØ@FÙ@FÚ@FÛ@FÜ@FÝ@FÞ@Fß@Fà@Fá@Fâ@Fã@Fä@Få@Fæ@Fç@Fè@%Fé@Fê@Fë@Fì@Fí@Fî@Fï@Dê@Dé@Dã@Dâ@Dì@Dë@Dè@Dç@Dà@Dä@%Dá@Dæ@Då@Dy@Di@@@@CD@CA@D[@D]@D^@D_@Dd@Dt@De@Du@CB@%CC@DB@DC@Df@Dv@Dl@D}@Dc@Ds@E[@E\@DG@D@DH@D‚@DI@Dƒ@%DQ@D„@DR@D…@D†@DÀ@D‡@DÁ@Dˆ@DÂ@D‰@DÃ@DŠ@DÄ@DŒ@DÅ@D@%DÆ@DŽ@DÇ@D@DÈ@D@DÉ@D‘@DÊ@D’@DË@DV@D“@DÌ@D”@DÍ@D•@%DÎ@D–@D—@D˜@D™@Dš@D@DÏ@DÕ@Dž@DÐ@DÖ@DŸ@DÑ@D×@D¢@DÒ@%DØ@D£@DÓ@DÙ@D¤@D¥@D¦@D§@D¨@DS@D©@DT@Dª@DU@D¬@D­@D®@%D¯@Dº@D»@DW@D¼@DÚ@DÛ@DF@D½@C¾@C¿@DÜ@DÝ@CG@C@CH@C‚@%CI@Cƒ@CQ@C„@CR@C…@C†@CÀ@C‡@CÁ@Cˆ@CÂ@C‰@CÃ@CŠ@CÄ@CŒ@%CÅ@C@CÆ@CŽ@CÇ@C@CÈ@C@CÉ@C‘@CÊ@C’@CË@CV@C“@CÌ@C”@%CÍ@C•@CÎ@C–@C—@C˜@C™@Cš@C@CÏ@CÕ@Cž@CÐ@CÖ@CŸ@CÑ@C×@%C¢@CÒ@CØ@C£@CÓ@CÙ@C¤@C¥@C¦@C§@C¨@CS@C©@CT@Cª@CU@C¬@%C­@C®@C¯@Cº@C»@CW@C¼@CÚ@CÛ@CF@C½@CÔ@CY@CZ@CE@CX@CÜ@%CÝ@Fe@Ff@Fg@Fh@Fi@Fj@Fk@Fl@Fm@Fn@Fo@Fp@Fq@Fr@Fs@Ft@%Fu@Fv@Fw@Fx@Fy@Fz@F{@F|@F}@F~@F@F€@F@F‚@Fƒ@F„@F…@%F†@F‡@Fˆ@F‰@Eñ@Eò@Eó@Eô@Eõ@Eö@E÷@Eø@Eù@Eú@Dm@Yº@K @%SÞ@W“@[i@Tü@Uo@Xb@\¡@Iº@ZŒ@\£@J”@\H@Tr@\¦@U¿@T‘@Iœ@%Y´@JÓ@Kª@V_@\¨@K©@Q]@Yo@UE@\¬@Lõ@Y^@b|@[Ï@L‚@J­@Qy@%\»@W‰@KD@W©@[ö@Põ@OØ@\®@RÊ@OÂ@\°@RT@Yä@[­@WÙ@[G@Mô@%LF@PÕ@S¸@Sr@Tg@Mt@Jk@YÑ@\¾@OÄ@Sñ@Y±@XP@Xˆ@Uè@\¿@Qñ@%QÑ@Tè@TL@Qk@Z‰@[š@UÁ@Ký@\ @Zz@P˜@ZÅ@NE@\À@Wä@O­@\§@%Yg@X¨@\¼@]@W—@PZ@O[@M¤@Yß@Iù@Mß@Rµ@XŽ@O¨@WD@Qa@Tw@%]’@]•@TÊ@\è@YÙ@U±@TÉ@\ë@\é@\Å@O—@SÌ@J‘@\ê@O’@OŠ@TÓ@%JÒ@Q×@IÕ@\p@UÊ@Vœ@[l@Lµ@Xi@]z@\ï@TJ@\í@Jù@Q@YÓ@\ì@%YÆ@\î@Rg@Y—@[Ø@\ñ@\ô@Ný@NÚ@TÍ@L}@Lb@Sò@\÷@YÀ@Wè@N¾@%L@LE@XÜ@[Ù@Ze@N@N‚@\ð@UA@W¯@Jª@\ò@Uk@\õ@QÖ@\ö@W°@%\ø@I­@M`@]C@Hè@Q‡@U@Ve@Vf@]D@K‰@KK@Wº@Km@\A@\•@Zs@%Vä@MÍ@]B@]|@Z@\ü@L‘@\˜@\ý@\ù@]A@Râ@ZV@\ó@]}@\ú@S†@%PÏ@Y‘@HÚ@NÐ@]F@]E@]L@]N@]K@U¸@]I@[µ@J~@]H@Pü@UË@]J@%]G@]P@K°@MI@Y¿@X`@QÁ@Od@[@Iß@Th@PŒ@]M@]O@Wé@Mí@Tv@%I„@JØ@Kì@]T@PA@]~@Tn@Pý@]X@Vw@Lž@]U@]W@IC@Z‚@]Y@XÄ@%]V@]Q@]R@QI@]S@Nò@XÝ@L¨@Oâ@]]@]Z@H²@]b@]d@IV@]_@KY@%Oò@VÇ@Mñ@YÏ@]c@O‰@JK@]e@Oê@]f@][@RÞ@]^@]a@]`@[N@[´@%T„@]h@NØ@]j@]\@]k@Sª@]i@\—@WC@OA@]l@S\@WU@]m@]g@JE@%PŸ@L´@Pû@H÷@Jõ@]n@]o@J¡@]p@JÞ@HÀ@]q@UU@X’@]r@Qe@]v@%UN@]u@]t@]w@V{@OI@S¦@]s@]x@]y@Tä@PÛ@Kø@\¢@ZÉ@Z©@XÕ@%J…@[w@Xh@Mƒ@Pk@Rƒ@KÑ@Wc@]@]‘@KS@K´@O£@Tê@Tª@HÊ@MK@%Qš@]ƒ@P»@MR@Mx@XÊ@I™@Sã@OÞ@K…@\h@Y™@Nå@UÝ@N¼@]‡@\æ@%RÙ@LÓ@T¼@Ià@ZØ@RP@R‚@]¡@TÞ@X³@Oû@SI@Mz@]¢@Z¨@]£@]œ@%K«@LŒ@Iš@]@J†@Oõ@P—@Y°@Pã@K²@]Ÿ@]ž@Oº@Sß@\\@] @QY@%K“@Q‰@Nô@JÔ@Q}@Rü@N·@LR@L@]@S½@PM@Nk@Kj@^i@XÖ@WY@%H»@J—@N˜@^j@M®@Zã@KV@K”@\Õ@TÏ@Lv@Tp@\Ö@PO@^[@\×@XË@%NN@f^@Qp@Q–@Zñ@LÔ@J³@J–@U^@Sp@Sy@Pú@I‘@\Ø@Mn@K]@\Ù@%[Å@VB@T®@UR@JË@Pl@M•@\Ú@\Û@Kæ@NÀ@Vé@X˜@\Ü@TP@Mp@OC@%VÝ@SÉ@\ß@\Ý@\Þ@Hý@Oæ@U¢@Nó@L°@Lí@\á@Ok@\ã@\â@S@\ä@%\å@QF@T¯@Hë@MF@NÒ@Wð@^]@Qs@K®@[ù@SL@Oy@^^@^_@P÷@O¡@%PÌ@^`@UÅ@I©@Zb@R„@YK@^b@PÔ@^c@PQ@R»@Tz@^d@]‰@Uw@MT@%Wï@ZÇ@Hû@JÑ@XØ@]Š@_Ê@]Œ@\¯@NO@IQ@Jw@\Í@ZÐ@OS@P@X[@%\Ï@Lk@\Ð@S¤@T™@Y¼@\Ñ@Rã@U­@TG@\¥@Už@Wæ@N|@Hê@NJ@X¬@%IP@\…@\_@KE@Qó@RÎ@I¨@I¶@I†@`R@[\@PH@Q«@\Ô@Q°@\Ó@WÓ@%]ß@W¿@\³@RN@ZA@W¢@N³@T³@QÐ@Oì@Xµ@]à@T…@JG@Kñ@Vû@Pù@%Pö@YY@Y‚@\Æ@IÝ@Pä@Mð@\Ç@Z¬@X‚@\È@\É@Xc@J™@OÆ@\Ê@^l@%T¤@Xx@Tý@IÍ@Zv@Iå@N¯@Zq@VK@LT@LB@Uä@T @UÛ@I…@Xï@Sq@%^e@KŸ@Pz@Me@Oã@QŽ@`V@`U@[º@Op@[y@HÇ@K¢@Pi@V§@`S@U¶@%Zr@\Î@Yµ@MÄ@V^@V½@`W@K‘@`T@Z–@Jt@Lö@`Z@MÎ@N©@K–@WL@%Rœ@Mò@Pó@Wb@X“@`X@Xe@Q¿@`Y@Qï@Oü@Q@Wl@Yö@Lm@`a@`d@%L’@HÈ@KÕ@Lt@M«@Vü@Pt@VQ@Só@[§@`e@Wá@JS@Wû@J´@WÆ@Mï@%Wà@Y]@``@Jó@Jj@Lå@`[@RÄ@`\@`]@`^@S[@`_@`b@Z°@`c@TZ@%W×@R×@`j@`o@[Û@`i@`z@Wµ@MÆ@`n@`h@S~@UŒ@Mó@R@OÖ@`f@%`m@Sx@[F@MÌ@OË@Z]@L¿@[ã@`g@M^@PG@Q@`k@`l@`p@`{@`†@%`w@`v@\i@`„@`…@cŒ@Y¦@`r@PI@ZÚ@Ph@`t@Xl@`}@Yj@`~@H¦@%S¶@`s@Mä@KÞ@W{@MŸ@ZÔ@`@X@H¤@`ˆ@`q@Yf@`u@`x@`y@`|@%NI@`@`‚@`ƒ@`‡@`‰@ZT@Læ@SV@`‹@Uz@QH@RÃ@P~@X™@[|@`@%I·@MÞ@`@^a@Y…@V•@J¼@H¥@`’@VÅ@`“@`Ž@`Š@`Œ@`@`‘@N]@%`”@`•@NC@UÚ@W§@`¦@JJ@`¥@` @`Ÿ@Wy@`@`›@Pp@\d@Ul@`™@%H @`ž@`œ@`¡@`§@Lh@S @UV@P±@`–@S^@\Ã@`š@Rõ@`¢@`£@`¤@%X¤@`³@Vã@`°@PF@`®@W¸@`ª@Uf@P­@`­@Mì@M¯@`¨@`—@`²@`·@%J¬@`¸@XR@MÇ@`¯@Xù@`«@Zú@`˜@Sˆ@`¬@Z˜@`µ@`¶@`Ã@Xà@`»@%`È@`É@`½@`©@UD@`À@`±@UÇ@`Â@`´@WÊ@Vc@`Ì@`Å@`Á@`Ê@`¹@%`¾@`¿@`Ä@`Æ@`Ç@`Ë@`º@Vt@`Ô@`Õ@`Ñ@`Ï@NÍ@`Ð@LÁ@\Ä@Xé@%Qî@`Î@`¼@`Ó@`Ò@`Ö@`Û@`×@[õ@JP@\@V[@`Ù@Wú@MØ@`à@`Ü@%Y¬@`á@`Ú@`Ø@`Þ@`ß@`Ý@`ã@Sö@\«@Zê@`å@UÈ@`ä@LÀ@`æ@`ç@%`è@`â@M¾@Væ@`é@Xš@`ê@TÁ@O`@RÑ@`ë@`ì@T•@Vd@`í@Nx@\µ@%Yñ@`î@We@KÙ@`ð@Z¯@P¦@JÐ@W¦@`ï@`ñ@Ml@M›@W\@`ò@SÓ@`ó@%Z±@T¥@`õ@`ô@`ö@Wa@U¤@ZÙ@^w@^y@^x@Mˆ@^|@^}@Kx@^z@^{@%JA@^@N™@[¶@^@Oø@L[@^p@V­@PR@NU@\™@Ps@PŠ@Nà@V²@^~@%HÒ@Wê@Lx@\Y@SÁ@P£@V¸@^ˆ@^‚@S¹@^„@^‰@S˜@^‹@^Š@P`@^‡@%^†@J¸@P«@Q¡@^ƒ@^…@XÌ@^Ž@PÜ@^“@Ká@^”@^r@MX@Zª@^@Pq@%^‘@^q@K‡@^Œ@P†@^@^’@^š@MA@H¢@Qð@Jg@^@^™@SÑ@^•@^–@%^˜@^—@^Ÿ@Z“@I¹@^ž@^£@^œ@^›@^@S@Nš@^¢@^¤@VÂ@KÐ@_`@%^ @^¡@TU@Kè@^¦@^¥@^¨@ID@Kl@PP@Y@KÁ@^§@V›@f”@V|@VŸ@%VÀ@Tú@^©@Ví@^ª@^s@^®@^«@O²@Uú@^¬@Uj@R¸@T]@^­@Zõ@Xå@%Rª@KÔ@^t@Iz@^u@^v@M½@T¿@U¾@TÈ@\S@Uš@Pg@M÷@Y»@a¹@J¥@%IX@L³@Xd@]ˆ@XF@Wƒ@]Ž@Kß@Y¸@M[@a¸@a¶@Jò@Vë@Vª@L“@\±@%YŒ@Mº@U¦@WW@YÃ@P…@NÏ@Kà@_Ä@_Å@^\@Yy@Så@RÍ@L@L|@P@%\@Sô@I\@_Ç@OQ@VÖ@_É@_È@K@U}@HÁ@SN@SK@RË@Nè@Vž@MÂ@%cš@Tæ@c›@Wž@\Q@L½@Qç@TÐ@cœ@KÉ@NÊ@Yž@c @R@c£@cŸ@c¤@%Ww@La@c@cž@c¢@RÜ@c§@c¦@Rc@SÝ@c©@R¶@c¡@U»@O„@Mc@c¥@%XÔ@W®@c¨@c¯@Y¥@OJ@c¬@c®@PÐ@YË@N¦@c°@Yõ@\k@WŸ@W~@Q¥@%cª@c«@O_@c­@c²@c±@cµ@c·@Rî@RÇ@Oé@U@c¶@Kï@R…@ZŠ@c³@%c´@T¡@c¼@c¸@SÄ@W’@cº@c»@NŠ@c½@c¹@P¶@ZD@c¾@U•@cÂ@cÃ@%Xõ@R]@Rd@cÁ@cÀ@cÆ@XQ@f•@cÉ@cÄ@NÝ@UI@N´@Xs@cÇ@cÈ@cÍ@%cÏ@cÐ@cÊ@Ku@cË@cÎ@RÚ@cÅ@cÌ@cÑ@cÓ@cÒ@cÔ@]™@cÕ@cÖ@\s@%cÜ@cÝ@Pw@ZÏ@\v@Jå@V@cÙ@\Â@\n@X¡@Ro@cÞ@N½@Mb@cÚ@YG@%M¡@QÎ@\ª@Uê@c@cÛ@L–@Tå@Rô@cR@Rý@V@cS@[L@Z@U×@H±@%Vn@W‹@Mé@cU@cT@\z@My@[å@K§@W‘@YÊ@IF@U´@J‰@U”@Pm@Xú@%UÑ@cV@Nb@X|@ML@ZÖ@M¥@Yˆ@X@NÑ@cW@TÜ@PŽ@I—@V~@NÄ@NÃ@%Yù@R|@P|@Lº@Rb@M­@Z¡@T~@R®@Ië@Mq@c[@Qh@[O@c\@c^@Jæ@%KÓ@Vb@YP@K\@UØ@Lƒ@U…@OK@W½@\‘@X @Uy@Kú@c×@Ná@J^@Up@%cØ@JB@_Ë@Zh@_Ì@Y¡@_Í@OÌ@_Î@U«@Yû@J@c‹@Rà@O @W±@Rñ@%OÕ@S§@Iâ@OÒ@T@Vê@O@WÜ@U¹@SÀ@c@X»@[Y@cŽ@Uó@W`@QÄ@%c@QÃ@c‘@c™@Wm@U]@YØ@aH@Z@V‹@Sð@aL@aG@aI@aJ@aO@Iì@%aK@LÙ@aM@aN@aP@KZ@aQ@aS@aX@Yr@aV@aU@QŒ@aW@Z¿@aR@aZ@%Hµ@aT@Pš@aY@a[@a^@a\@[Ä@X_@a]@a_@QÌ@Kê@Z™@Tm@L†@Oý@%a`@aa@ag@Jˆ@Sè@JÝ@Yb@ah@af@ae@ac@ab@I`@[X@ad@ak@al@%aj@h›@as@ar@TV@ai@an@ap@at@aq@am@ao@au@av@aw@ax@az@%a{@W @d}@J§@[Ü@YR@JR@MD@\”@Ti@OÝ@MN@WÖ@Ií@^o@N¹@YÐ@%Vh@HÌ@X@]„@OŽ@Ir@UÏ@I»@VG@LK@U¥@XC@`÷@[j@`ú@`ù@Sa@%Vú@QQ@`ø@[â@I®@[Ã@K{@J÷@[ @XO@Hî@`û@aA@JC@`ü@`ý@RQ@%R}@aB@Lš@No@aC@Rº@aD@aE@aF@J°@LÈ@S¼@Ré@I¡@XÑ@d{@Nc@%Zw@Zd@M„@aÎ@\O@T@Is@J±@aÐ@Xñ@Q­@aÏ@Pƒ@ZF@Kw@aÑ@K‹@%RŽ@Lü@L­@Ss@Lo@aÓ@aÒ@KÇ@\š@WE@a×@aÕ@Uû@PU@ZY@aÔ@aÖ@%QN@PÇ@aÚ@aÙ@P©@Qn@aÛ@aÜ@aÝ@^h@Ys@WB@OH@_Â@\¤@PJ@^m@%Yë@Sù@SJ@_Ã@Iw@`N@U¼@`Q@MM@Yü@L¤@Mê@Jz@K|@[e@Rv@Xr@%NA@c”@c“@c•@W…@Tô@KO@T_@c—@f¯@c‡@MŠ@KQ@Q»@c‰@cˆ@cŠ@%YÌ@a‹@XÍ@WN@Y†@IÉ@IŒ@I“@SŽ@[c@ZP@a|@a}@YÚ@JY@Ik@Wš@%[˜@a~@Oµ@Jü@a@MÛ@a@NR@QÈ@a‚@Xë@W]@aƒ@Kc@Sg@a„@a…@%Zš@a†@YM@a‡@W¡@aˆ@Kb@a‰@Nu@XÃ@aß@Ix@Yã@aà@NÈ@TË@aâ@%fý@fü@`O@aá@[½@W@RF@bc@[Ñ@aæ@aç@Zg@aë@P@aì@aä@J`@%Rí@aí@XÂ@Mõ@aè@L~@NS@V«@Vk@aã@aå@aé@aê@aö@aó@Zô@aò@%SM@[›@Sb@I¿@aî@añ@QO@V\@KA@aø@N°@að@XÓ@Z¸@aô@Mv@aõ@%Ts@aï@\|@gA@a÷@gE@aý@UÐ@QU@Np@Pv@Mâ@VA@gF@gC@gB@Nv@%gG@Xó@gD@MÝ@Kö@bA@K±@Vð@MG@XB@TA@Pr@Kð@aù@aú@aü@aû@%RÔ@bB@Za@bG@Td@XD@bI@M¶@bH@Nz@bC@bD@bJ@bF@Wñ@Zf@N\@%ZÂ@Rù@gH@Xû@bE@R–@bM@IO@bR@NÁ@bL@K_@TŠ@bP@O©@W@N”@%Vç@bO@bQ@XG@bN@W¨@N}@KŒ@Oä@IÑ@Jm@IY@bK@IÐ@KL@M@Kç@%XŒ@bW@Nl@TÆ@XÉ@bX@J@gI@Z›@Z…@gJ@bY@Yá@bU@Z~@LÏ@bS@%bV@L@bT@P¡@bZ@Z·@JÇ@b[@Ne@U˜@U†@R¼@gK@Qü@N{@PN@W¾@%b\@PV@I@Zö@b^@gM@b_@M¨@gL@b]@b`@Mµ@K­@X·@HÂ@gN@gO@%PÀ@ba@SS@bb@^±@gP@Lé@Wë@e¦@Xæ@Uø@TÕ@XW@Ji@WÑ@O…@b~@%N“@e§@[]@SÜ@e¨@e©@e«@eª@e­@e¬@Ox@e®@Q½@JÀ@Jö@NG@få@%fä@L_@Vš@Iƒ@fæ@Uh@fç@fè@UÕ@_Ï@IÄ@Zù@SÊ@HÆ@Jñ@TÒ@Wp@%PX@P{@TD@[³@P¨@_Ð@UH@Y@SD@Hæ@JV@TÄ@Há@L—@S›@Kò@[r@%Jp@N»@JM@Oð@HÐ@YÕ@Uâ@\E@WV@Kµ@PY@[{@L¦@Sw@_Ñ@Py@QÔ@%T`@ND@IH@S‹@Sœ@V¦@IG@Kv@R§@_Ò@YZ@JŠ@R“@L˜@[ó@KC@Iï@%R³@Rè@P¬@_Ó@Hç@Sd@Q@Mu@OÛ@Wx@HÍ@Wo@_Õ@OÏ@\^@_Ô@[p@%HÜ@Rá@Q¢@Nï@ZU@P¸@SA@I¥@Zð@P§@UÂ@_Ö@[@MP@T¬@VI@_Ø@%P]@S³@\G@U¯@RÂ@Jv@Mr@[·@eû@H³@P‡@Vó@Wz@[¾@QÍ@WÍ@V¡@%X­@RÒ@KR@_×@[–@N¶@Ns@H£@SR@Jë@[’@eü@_Ù@WF@W@Wå@_Û@%WQ@P¥@\]@_Ú@HÅ@M³@Us@Rò@Oç@Iµ@PË@V‘@Nð@N[@KW@S–@_å@%_â@OÜ@_Þ@J¶@O}@_ß@Rì@Xf@K@KÝ@UÙ@K•@_ä@[f@_à@VÌ@Sý@%Se@Y³@Oñ@QÒ@V¼@JX@Os@Px@Wf@Yz@Jê@_ã@_Ü@_æ@eý@Q¯@_á@%[¿@KG@Ió@_ç@_ñ@_ì@_ð@Tß@\‚@_î@R‰@Và@Iä@Y½@_í@_ê@WÔ@%J¦@PK@O½@Or@_è@Z­@_Ý@_é@P¾@_ë@Iò@Lè@Q¦@Oa@_ô@_÷@Iª@%J£@Jé@UF@_õ@Vq@Lâ@_ö@_ù@_ø@VÁ@Hà@Jí@cZ@X®@Iê@fA@_ó@%U„@_ò@HÙ@Y @I˜@V®@_ï@VD@[J@_ú@JÜ@R¥@_ü@RŸ@R @`A@Ql@%_û@Oî@S±@Je@Tõ@VZ@_ý@`D@\R@JW@Qc@Tk@I¤@Jè@\K@Rë@`B@%`C@`E@M²@`F@PÝ@Uc@IØ@T‡@`G@T|@`H@fB@Vs@`J@`I@IÀ@Sj@%`K@ZÛ@TÀ@`L@Oï@`M@[¦@e¶@fV@UÔ@\û@LÃ@ME@Le@[Ÿ@Mj@X¦@%jÌ@Kp@R•@OÇ@fW@H¼@Ol@QR@Iv@JH@LÑ@UB@K×@fX@O³@Uü@Tc@%[œ@L”@WÃ@[K@I”@f²@HÞ@f´@K¶@Qo@k›@X°@[†@WÒ@O@Jƒ@Lª@%[V@g]@KÎ@VY@XÁ@L]@fµ@U¨@St@f¸@f·@QÂ@f¶@Xü@f¹@fº@\†@%f»@f¼@Së@WÝ@NÇ@TÔ@KI@OÈ@[»@Zæ@YN@Xð@e·@e¸@e¹@M´@U°@%P–@W›@e¿@H¹@e½@P¤@eº@Iü@R˜@N‰@YÖ@Wó@e¾@e»@eÂ@XÆ@ZS@%J¹@Ra@\“@[q@UÆ@eÄ@eÃ@eÆ@eÅ@[æ@Xt@eÊ@Nn@O›@Un@eË@UY@%XŸ@eÉ@ZÍ@eÌ@eÎ@WŽ@eÈ@eÍ@Wí@N~@J_@SÔ@O¯@Wù@Tˆ@O¦@eÏ@%[Æ@Q`@ZÜ@eÐ@X^@eÑ@Uí@SO@H´@eÓ@eÒ@jÞ@R¹@II@c@eÔ@Uî@%eÕ@eÖ@S×@e×@eØ@Zº@T›@Y¶@Lû@eÁ@IÛ@Qû@Z÷@Vå@\@ZÁ@Zp@%fc@S”@LŸ@ft@VW@f~@PÉ@Wœ@JO@SÙ@f@R½@W³@R¨@I^@Zü@Uô@%[ë@SÒ@Kã@N›@Xß@UQ@ZÒ@T§@LÊ@d½@U\@dº@Pí@XÒ@IÃ@Jä@d»@%[h@KÄ@d¼@U÷@LÛ@Vô@P³@Y@d¾@dÁ@M»@IM@O|@e¼@dÂ@dÅ@dÊ@%dË@Vi@Hä@Nª@MY@dÀ@W˜@dÉ@Wõ@[Ž@Qv@dÃ@RV@Mœ@[¥@dÇ@Uß@%Zå@d¿@dÄ@dÆ@TY@L„@dÈ@P}@dÑ@dÖ@dÔ@NÛ@NÎ@dÚ@dÝ@dÙ@I›@%H×@R²@LË@Sá@T½@Tà@dÎ@dÓ@dÕ@M’@d×@\–@Rú@dÛ@Iè@dÐ@Nì@%Pb@dÌ@[ø@Q™@Ið@dÞ@UÀ@dØ@[D@I‹@[[@dÍ@dÏ@K¯@dÒ@dÜ@P·@%Uö@VH@SÛ@Pô@dè@X¢@dñ@[é@dß@dà@Yš@MÊ@Lø@Lð@ZÓ@dî@dí@%dë@M‘@VÑ@då@W¥@P“@H·@dð@dï@\`@dã@WI@UC@NX@O{@dé@dá@%dâ@dä@KU@dæ@Te@dê@dì@OP@\N@d÷@dô@WP@dõ@QZ@dç@RW@Hï@%dó@dö@MC@Ur@Rn@Wß@På@V”@VÜ@X´@Uà@dò@Në@dø@R~@Sä@M˜@%Hó@\x@N«@S@VÃ@eF@UM@eB@Pá@Pc@dý@Mw@dú@eD@YÍ@eC@[±@%\U@eG@OW@dû@dü@eA@Wv@Y«@eR@eI@J©@Jº@eK@X§@eE@JŸ@eL@%Pâ@eJ@eY@eX@eN@dù@eH@PL@eQ@eZ@Q¤@eO@LÄ@eM@Z|@eT@eU@%eW@eg@PÅ@ee@eP@e[@Hð@e\@[E@e^@e_@ea@Q’@Tµ@e]@eb@ec@%eS@eV@NQ@e`@Nö@ed@ef@ej@en@IÚ@eh@LN@ek@el@[a@R¢@ex@%Mà@ei@ZC@et@ew@ep@eo@Ta@er@ey@Jh@es@X‘@em@J˜@ev@ez@%V³@XM@eu@e|@e{@e~@eq@e}@e@Rj@TW@JÍ@NV@X¿@f¢@SW@Zœ@%f£@f¤@SÚ@P@f¥@f¦@X©@TX@Lç@f§@[¸@[ž@JÊ@I¼@Wã@Sæ@W‚@%Jô@V`@NÞ@eƒ@e„@Y‹@e†@Jø@e…@YS@Uá@IÏ@e‰@e‡@eˆ@[²@eŠ@%e‹@eŒ@e@f®@SY@KÍ@Yò@K@Ny@f°@Yâ@Wâ@R·@R_@K½@\¸@Ih@%Io@Iq@SŸ@Ip@RK@[Q@fD@MÀ@V¹@fE@fG@fH@fF@fI@fK@fJ@fL@%UÎ@\´@R’@RE@S÷@fM@RÉ@fN@fO@fP@Lu@L›@fQ@Tƒ@fS@M£@Y–@%H°@fR@fT@KJ@QÇ@T‰@fU@VN@b@Z`@]{@WA@[¬@T”@]@N„@M¹@%bƒ@XK@b@Ug@M¸@YT@b‚@Té@MO@OM@Jx@WÚ@V¿@b‰@bŠ@W•@V¬@%N²@b‹@bŒ@XÙ@Sú@Lz@T@YÉ@WÕ@b…@b@U“@Ja@bˆ@Sâ@b†@gS@%b‡@US@S‡@MU@R[@b„@S]@QD@QØ@IÖ@bŽ@NF@R¬@b‘@OÙ@bœ@b–@%MÒ@Lp@Zm@[Í@[s@Ma@[T@Yx@X¸@T—@T©@I³@Rz@b@b@b@LH@%b˜@b•@LZ@SB@b—@S}@I§@Sû@Rß@\B@Pà@bš@b›@bž@V¨@b”@Z^@%Ic@gT@b’@b“@b™@X¹@SÂ@Zò@bŸ@O@b¦@b¥@Y”@b¢@b¨@Tö@XT@%b§@b­@Qä@K³@O“@b¡@Mè@b©@b«@Kü@[Ý@b±@b¬@b @N@W}@TB@%Si@Q˜@b£@TS@OL@O]@b¤@\g@Iá@bª@NÂ@b®@NŒ@b¯@SH@b°@[„@%PC@b¹@b¶@bº@b¼@SÕ@MÅ@PÊ@L @b³@Z @M¢@OŸ@b»@W_@Rø@Xœ@%U‡@Z_@Xq@b²@b·@b¸@Vè@VÍ@PÓ@b´@QP@bµ@WÏ@Na@Ks@Tò@OG@%[g@UL@L¡@bÉ@bË@Yd@Y¹@M¬@MÓ@bÂ@KŽ@\m@b¿@Xž@b¾@Q|@VÉ@%Uæ@RÖ@VÓ@bÇ@bÆ@bÀ@bÃ@KM@Zy@bÅ@Yø@Jâ@NT@U@J½@N@Ym@%Vì@gU@T†@Z§@bÊ@\u@bÁ@OE@bÄ@Z‡@bÈ@U™@b½@Z†@TŸ@KÈ@Zû@%I²@bÖ@WÁ@bÌ@W»@LÚ@bÕ@Pj@Zn@R@Sh@b×@Wd@bÎ@bÓ@bÔ@Mý@%X‡@[_@bÑ@bÏ@bÍ@W†@U©@P¢@OF@bÒ@LÇ@bæ@Z³@bÚ@Q@bè@Yæ@%bÞ@bß@XJ@V}@bÙ@bÐ@bä@TÛ@bâ@Ræ@bá@bà@J@bç@K‚@\l@bå@%NL@\r@VÎ@f™@bã@M—@[Ì@bØ@bÛ@Qù@bÝ@QÊ@PÃ@QÏ@I–@V±@Kn@%bî@S®@Sà@bô@Q¨@Pë@Y}@bí@R­@bì@bõ@bó@Qý@bÜ@bï@Uý@[d@%bð@Y›@bê@bë@bñ@Wª@Sk@TQ@Q¹@bé@Qj@Vµ@JQ@bú@bò@bù@bü@%bû@Jn@JZ@bö@bø@b÷@S@P¼@Zç@cB@HÃ@cD@cC@N£@cE@cA@bý@%I•@cH@cI@cF@cG@cJ@SØ@cK@cM@cL@cO@cN@M@cP@cQ@N‘@fà@%R‘@Kf@Nr@QŠ@Zí@OÃ@\f@ZÕ@IÒ@f½@eÀ@Q®@Jµ@Yw@JT@T±@P[@%f¿@[Ê@f¾@fÀ@fÄ@Oå@V¾@Sz@O»@fÅ@IŸ@fÃ@[H@K„@fÁ@QV@J„@%fÂ@VX@PÂ@Vý@Qr@fÇ@Må@PÒ@[ñ@Yl@P^@LS@Uu@fÆ@Nƒ@VË@Ož@%TÇ@XI@WŠ@SŒ@LŠ@Yi@M·@fÈ@fÉ@N`@fÊ@fá@IZ@Ly@OY@fË@Y‡@%fÌ@Tº@fÐ@fÒ@Nm@Nä@fÎ@UW@RZ@fâ@[u@fÏ@[ò@fÑ@fÍ@fÓ@fÔ@%U_@XH@XÛ@YL@TÚ@fÕ@Wô@Uë@fÙ@fØ@H½@fÖ@f×@fã@T»@Qg@fÛ@%Y@fÚ@Zî@fÜ@^f@fÝ@IL@fÞ@fß@\F@S`@f\@H­@Oó@L·@Y®@HÕ@%Kš@\²@VL@b}@S«@Hå@Sf@fY@fZ@f[@Y`@SC@eñ@R±@R´@PÍ@eò@%RÀ@Wî@eï@eó@U@TC@V×@Wý@eô@eõ@XL@Pæ@eö@K¾@e÷@eø@eù@%eú@eð@T­@aŒ@LX@a@aŽ@\T@a@a@Zl@a’@P’@a‘@Kr@IW@a”@%a“@Mû@a•@MW@OÐ@Rû@MÜ@Of@a–@a˜@K¿@Xa@U§@a—@[™@Z@a™@%a@aš@a›@Pé@aŸ@a @PÆ@aœ@až@a¤@Qt@a¢@a§@Iý@a¡@Rm@IÁ@%a¦@a¥@a£@a¨@aª@XÈ@[ì@RH@a«@Xw@a­@Mî@e@a¬@a©@NK@Z²@%a¯@a®@e‚@a°@a±@a²@V @a³@a´@Xý@QÉ@Z’@W–@d@d‚@OÀ@Qé@%d…@d„@W‡@RU@dƒ@NW@Xv@Q‚@dŠ@d‰@d•@I¢@d‹@d‡@d@dŒ@UZ@%[…@d†@LI@dˆ@d@d”@[è@dŽ@d“@d’@Hß@d–@T“@PÄ@Pì@Q‘@d‘@%d—@V—@d¡@d @\a@d›@dš@dœ@d˜@dŸ@dž@d@Qu@Ty@Sž@Sc@TŽ@%d¢@d¥@d¤@d¦@Mö@d™@d£@Tï@UJ@d¨@M†@YŸ@d§@d©@d¬@d­@QG@%d®@d¯@d«@d³@dª@d°@d´@d±@d²@d¶@dµ@Mo@h«@h¬@S¯@Hé@T¾@%W@WÌ@e°@e±@S¾@JÈ@e²@[ˆ@_š@e³@e´@eµ@LÉ@`P@U–@Vï@U›@%Uœ@Zc@VF@L¥@h­@Ib@cX@Vî@Zi@NÖ@U‹@Kˆ@RÏ@KŠ@g­@NM@d~@%g®@JI@g±@g°@Oˆ@g¯@W¶@So@Q•@^n@g²@Xò@QÓ@Sç@LL@g³@JŒ@%Nœ@g´@d|@gµ@ON@iƒ@Uç@YÈ@hÙ@hÚ@hÛ@Qf@Lì@OÍ@hÝ@SQ@hÜ@%Y’@hß@HË@O‹@YÞ@hÞ@J®@L‰@hå@hä@S¢@hà@há@JÂ@hâ@[@VÚ@%OÑ@N±@hç@hæ@hã@I @[¡@ZX@O¶@T«@hé@Y˜@[Ë@MÚ@hè@Kº@WT@%S¥@QA@hê@hí@hì@hï@hë@N^@hî@V´@hñ@Ju@It@hò@hó@hõ@Jà@%hð@hö@hù@h÷@hô@hü@hø@hû@hý@iA@WÀ@iD@iC@Q—@hú@UÜ@Jð@%I’@V°@iF@iG@iL@[n@iI@T²@iB@iK@iH@iE@iJ@H¨@iM@iO@iQ@%iP@iN@YB@iR@iS@M@Kg@HÖ@HØ@Zì@Kd@Ot@Nj@h¦@LÝ@h§@H§@%h¨@W@h©@hª@S£@[ä@i…@i†@R”@Z{@[Ð@S‰@ZO@Yå@gÀ@Hº@[U@%Yn@Nß@MÏ@P™@LÆ@Ka@Sl@U¡@Rk@gÁ@R¾@K¡@g@RD@[°@X@g@%Sn@KÛ@U @gŽ@g‘@g’@R\@PT@g@g•@g“@[‡@R@g”@g—@[C@YC@%g–@Rp@g˜@P•@Oë@g™@Vö@Y{@\e@[—@g@gœ@gš@g›@gž@O¥@VO@%g @K¼@g¡@R¿@gŸ@O~@IÆ@KÂ@g¤@\¹@g¢@g¥@RŠ@J“@g¦@g£@XY@%g§@Qö@g¨@g©@_ª@S²@Tf@[ô@Ki@VR@gª@WK@g«@[P@g¬@kÃ@^g@%J¢@RL@i‡@U·@YÒ@[©@h“@O×@Oc@h”@KË@Hª@U®@gV@gW@Wø@LO@%P”@gX@Qê@UP@gY@Sõ@PS@g\@S™@Yp@\I@gZ@g[@Yƒ@g_@g`@gd@%gh@gf@gn@[‰@gi@gg@g^@SŠ@SÅ@UŠ@ZÑ@ga@gb@gc@ge@Pø@J @%M‰@gp@gq@gj@go@W÷@VV@gl@gm@X–@gr@Q“@ZR@gk@T¶@Nî@S‘@%gv@K@Q´@H¬@VŠ@IN@gt@WŒ@Kƒ@gu@gs@gw@K›@gx@gy@g|@Il@%S—@Ní@gz@V»@Ié@g{@Rê@JÄ@Hô@g@PÙ@Jç@Sm@g}@Pd@g~@R¤@%g@g‚@g„@Qw@Ng@OX@gƒ@g…@g‡@g†@gˆ@U½@fé@Pð@Uˆ@fê@Sí@%fë@Sì@fì@fï@\‡@fò@fð@fí@fî@\C@U’@V@fó@fñ@XŠ@fõ@S°@%N¿@fô@K[@N—@fö@]˜@Oœ@Qº@f÷@fø@L¢@fù@fú@fû@ZŽ@\­@Pê@%T}@MË@Xâ@V]@WZ@LÐ@I@T@[Õ@Pf@RŒ@h–@Rx@\ƒ@h˜@Js@Tx@%YŽ@[Ç@h™@h—@Nž@Jf@Ou@YÅ@N@XA@h@hœ@hš@Jl@Ut@VP@hŸ@%HÝ@[È@hž@JŽ@kÔ@WÇ@h¡@h @K^@NÙ@N@Lä@RÁ@h¢@VŒ@h¥@YH@%O¾@T@iV@iW@Pu@J¨@iX@W[@Tt@[M@iY@iZ@To@Y£@[Î@i[@Oq@%J¯@O¼@JÛ@WÐ@P@i]@P›@i\@i_@i^@i`@ia@QŸ@QB@Uù@[^@O¹@%O¸@[b@PB@WO@iU@O@KÊ@[ð@jc@jd@LÌ@jf@jg@HÉ@je@ji@V’@%jk@X¥@Ij@jh@jo@Kq@jw@jr@jt@js@Lœ@I_@jn@jj@Kz@jp@jq@%ju@jm@Nâ@Qž@jv@jz@jl@Kh@O@j|@LD@P‘@[ý@WR@Jï@IÞ@jx@%jy@UX@j}@j~@j‚@j@j„@jƒ@j{@P‹@J@j@TI@Nñ@jŒ@M_@j…@%I¬@NŸ@V„@jŽ@jŠ@M|@j@j†@j‡@j‹@Qà@j@j@j‰@Nü@X…@j‘@%jˆ@j“@\M@S©@j”@j’@Q§@LÜ@j–@j•@JÚ@j—@j˜@j™@P¹@Pè@S’@%jœ@j›@J×@jŸ@jš@j@jž@j @j¢@Ni@j¡@j£@I½@j¥@j¤@N­@Rw@%]‚@Pß@jË@\q@L{@jÍ@QC@SÈ@JÕ@[S@jÏ@jÎ@jÐ@Vz@jÑ@ZÀ@[ß@%L@QX@Q[@jÒ@O«@Já@jÓ@jÔ@Oª@jÕ@jÚ@jÖ@jÙ@Mü@j×@jØ@Lá@%VÆ@jÛ@IÙ@Rs@Zâ@PW@jÜ@ST@jè@XU@WÈ@Vx@V˜@O•@\o@PÚ@Xô@%jé@jê@jë@l„@LQ@jì@\Œ@jí@cø@O¿@cù@Më@cú@Xk@cû@Z»@Nµ@%cü@cý@NÌ@TÑ@W²@dA@J¾@dB@UT@LØ@RÈ@\}@QÙ@Lw@[¼@WÅ@Ld@%SF@dC@X@dD@dE@dF@QW@\Š@U‘@XX@[®@[Ô@dG@Hì@dH@dI@U|@%Yî@O¬@dJ@Hò@TÝ@O‚@dK@TÅ@dL@N‡@L÷@YD@dM@Qæ@O÷@Oj@WS@%dN@dO@Oí@Xä@Vˆ@VÏ@NË@dP@N§@Xö@dQ@X÷@dR@dS@JÁ@dT@dU@%UŸ@W«@R@dW@Ia@J’@dX@dY@\{@[`@dZ@QË@\Z@d[@d\@d]@Né@%R†@PÁ@d^@d_@N¨@d`@da@dV@KÏ@db@dc@dd@NZ@K~@QÅ@I@de@%Z´@df@L¾@dh@dg@L@di@I÷@dj@dk@dl@dm@dn@do@dp@ZG@V–@%dq@dr@ds@dt@Ui@du@dv@dw@dx@dy@Oi@dz@j^@LÖ@T°@j_@j`@%ja@M~@W™@\ç@M°@QÝ@g¶@LC@g¸@g·@HÔ@gº@[v@\@[Â@g¼@Uï@%g»@g½@g¿@g¾@Y“@T\@R`@Là@Qˆ@jÅ@XÞ@jÆ@X{@T¹@jÇ@jÈ@jÉ@%jÊ@]›@Lý@c’@Z‘@jß@WË@J‚@iT@Yí@jà@X‰@já@Tl@Kt@Jã@jã@%jâ@jä@jå@jæ@M±@H¾@jç@LM@Yì@Yª@PÎ@P\@fC@[@eÇ@i”@K÷@%VC@RÌ@iˆ@i‰@Lú@iŠ@MÃ@ZÄ@HÑ@i‹@iŒ@i@iŽ@i@i@i’@i‘@%Su@i“@Kù@i•@Y­@_Æ@Vj@J|@KB@MB@Ró@i–@i—@Qd@Qœ@[¯@i˜@%i™@QJ@S·@OÚ@iš@JÎ@i›@gR@gQ@V@YÝ@Va@[x@Tá@PÞ@N @fa@%X£@[á@KÆ@L×@f`@LÍ@f_@JF@Mi@[ª@L•@Lj@Næ@L^@ff@fg@H¸@%Po@fe@Zž@fh@fi@Ln@fb@fd@U—@[Ö@[m@X±@fo@W·@fp@KH@IS@%fr@V¤@Sv@fs@fq@S@fn@U£@fu@Hú@Mù@\¶@i„@fj@fk@fl@fm@%fv@c¿@fy@P‰@YÇ@fw@f|@Lë@fx@OZ@X×@H¶@f}@RÛ@[«@Jß@Qõ@%N¸@fz@f{@Zß@Sé@RÓ@f@SG@]–@I°@f…@Oe@fƒ@f„@L«@Wq@f†@%f‚@QS@S¡@Vò@f‡@P¯@Y·@fˆ@L®@L¬@f‰@T[@W”@f‹@fŒ@fŽ@XÇ@%f“@f@f’@Tø@Y@f@fŠ@L¸@Xy@Rä@f@f‘@VÙ@Wh@Hñ@f—@f–@%I±@Lß@f˜@I@VÄ@R£@XE@fš@f¡@S“@f›@Ue@aÞ@fŸ@Wn@f @I{@%ZW@YÛ@fž@fœ@J\@e¯@\t@jª@J•@[À@[Á@[Š@OÉ@j¦@Y§@j§@j¨@%j©@OÊ@Z@U@U‚@jb@Uå@Vñ@aµ@VT@Wç@[Ú@j¬@j­@j®@j±@M¼@%j²@Hâ@j¯@j°@OB@IÔ@jµ@j¶@Kå@I¯@Xo@j³@J«@j´@j·@j¸@WG@%j¹@jº@j»@Vr@j¼@j½@j¾@jÝ@Q\@Nç@UK@Y~@c–@^²@YÔ@^³@H«@%^´@Oz@^¸@\Á@^¶@Z”@Uv@^¹@^µ@^º@RB@^»@^Ä@^¼@WÞ@[¤@^Î@%^Ì@^Ñ@O‡@Qª@^·@^Ê@^Í@^½@Lr@HÄ@^Æ@X½@^À@NH@L\@^Ë@^Å@%^¾@T{@Y_@^¿@^É@^Ï@W¬@^Á@^Â@^Ç@^È@IÓ@^Ð@Vu@Z¶@^Ú@^Þ@%V¥@^å@Rˆ@^Û@Pa@^Ø@Hù@MV@^ä@^Ò@^Ã@^Õ@Tó@P@U[@I]@ZB@%^Ù@^Ô@Sº@^Ý@\b@RO@LV@Tq@RI@^á@^×@^ê@^Ó@^Ü@O¤@^Ö@^ß@%^â@^ã@^÷@^à@_B@^æ@Nê@JÃ@RC@Iæ@^ù@^ñ@^î@^û@^í@Yï@Iç@%TÖ@Tâ@^ú@^ì@^ö@^ô@O¢@^ó@IÜ@^ò@Nõ@^ç@Nd@Pò@NÓ@^è@^é@%^ð@^õ@^ø@KT@TØ@Nˆ@^ý@^ü@ZK@_A@_C@_E@Yð@_D@_F@_G@Y¨@%MÈ@_I@_V@_Q@_T@_P@SÍ@Pñ@UO@^ë@_N@_W@^ï@_O@_X@_L@_Y@%_S@_M@R©@_H@P²@QK@_J@_K@_R@N’@_U@ZH@_Z@_[@RG@_r@_\@%_q@M]@OÔ@Où@MÉ@_j@_e@__@IÊ@_c@_k@I£@_u@_^@SÏ@_p@_t@%Qƒ@Lf@_n@_o@_d@_]@_m@VÐ@_i@_b@Rh@S»@W­@_l@_h@_a@_f@%QÛ@ZI@ZJ@_s@X•@T÷@_‡@_g@_@Qã@_‚@_w@[÷@_y@_x@Lï@_v@%SÎ@K¬@_ƒ@Mø@Zà@_ˆ@JÏ@_z@Pœ@_„@_@_}@Ky@_{@_|@_~@OO@%_…@_†@_–@Ri@Vƒ@_“@\à@SÐ@_•@[•@_”@_‘@_@_@_‰@Xí@T×@%_@_Š@_‹@V“@_Ž@Im@Pµ@Nº@_’@_˜@_—@_Œ@S@_œ@_£@_¢@_™@%R@Qú@[‚@W´@_ž@IË@Rç@UÞ@T^@_›@_@_Ÿ@_¡@H©@In@_«@_¥@%OV@Tî@_ @_¤@_¨@_§@_¦@_¬@ZË@_²@_©@_­@PØ@IA@_µ@_°@_±@%YF@_´@_®@_¯@X¼@_³@Uì@_¸@_·@_¶@_º@O†@I×@R‹@_¹@SZ@_»@%VØ@LJ@Zä@_¼@_¾@R¡@_À@_½@_¿@[Z@_Á@i­@NB@Q±@SP@QÆ@i®@%Xè@Z}@f]@J‡@i¯@i°@U¬@Mæ@i²@i´@i³@V…@XZ@i±@U³@YÎ@Që@%WÂ@i·@Hõ@i¶@i½@IÎ@Ya@i¹@i»@Zè@iº@iµ@i¾@i¼@i¸@iÆ@iÃ@%iÅ@iÉ@iÁ@i¿@iÄ@[ú@iÀ@Tš@U@iÇ@Mf@KP@iÂ@iÈ@iÏ@iÕ@Nw@%iÔ@W|@[ê@iÑ@iÓ@Lñ@iÊ@iÍ@Qø@[}@iË@iÌ@iÎ@iÒ@iØ@Z\@Ké@%Uð@L…@iÖ@i×@iÙ@iÜ@iÚ@iÛ@Yq@iÐ@Wi@WÎ@[¨@iâ@R{@iß@P®@%ië@iÝ@ià@iç@iá@iæ@iå@iè@iÞ@iã@ié@ZL@iä@Iô@iñ@Xª@iô@%Nh@iø@iï@iõ@i÷@iù@iò@ið@Mú@Kœ@iî@iö@iì@ií@iê@jF@jC@%jB@ió@TÙ@iú@jE@R™@iü@jG@jI@jD@iû@jK@jJ@QÜ@jN@jP@jA@%jQ@jL@jO@iý@jM@jR@jT@jH@jS@jU@X¶@jX@]š@jY@jW@Tã@jV@%jZ@j[@J¿@gÂ@j\@j]@YJ@j«@XÅ@XÏ@Y|@Xn@Ov@Yc@Má@aŠ@YÁ@%ib@I¸@IŽ@ic@U`@Jd@]“@VE@id@[Ó@ie@j¿@if@Z«@ig@H¿@jÀ@%jÁ@Jû@S{@Vº@Xã@W@ih@]”@I[@XN@L£@ij@ik@IÂ@Qq@\P@ii@%il@in@]—@Yà@Z¢@jÂ@T¸@jÃ@im@io@P„@ip@it@iv@iq@Uq@S‚@%Qâ@M@is@iu@Ms@i{@MÕ@Hü@iy@ix@ir@iz@iw@Të@Wj@i}@c]@%i|@i~@i@X†@jÄ@O”@i@i‚@Wö@Y©@iœ@L±@Nú@M{@M‡@Ry@UÒ@%eç@P¿@Oô@eè@eé@eê@eë@eì@eí@eî@Og@kœ@kž@kŸ@k@Oƒ@k @%J¤@k¡@k¢@f±@Yt@]‹@k£@g¹@[R@ZŸ@VÛ@UÃ@c`@k¤@O®@S¨@]¤@%NÅ@K¨@L»@TÎ@N¤@]¥@]¦@VÕ@TÂ@]§@Sü@YU@Yè@YV@NÆ@OR@N…@%]¨@]©@Yh@]ª@Xì@Kî@QÚ@Vo@LŽ@U‰@Lc@Oö@[£@]«@]¬@S¿@\ˆ@%Uµ@[I@V@[@]­@[Þ@JÉ@]¯@]®@Yê@]°@]±@]²@UÓ@]³@Uª@]´@%]µ@Jo@[î@]¶@NP@KN@]·@]¸@M@YO@Yç@]¹@LÂ@X‹@Iî@]º@]»@%OŒ@WÛ@Z@]¼@Wò@]½@Zu@N†@]¾@VU@Vp@]¿@TŒ@[í@]À@SU@KÀ@%]Á@Ll@Pn@]Â@]Ã@VM@]Ä@K˜@]Å@Qb@\[@]Æ@V·@Yé@R°@]Ç@Kž@%Nq@]È@X²@]É@]Ê@W¼@]Ë@]Ì@]Í@Iö@]Ð@]Î@Y‰@]Ï@Ru@]Ñ@]Ò@%]Ó@]Ô@Xº@Y¤@Hø@]Õ@TK@]Ö@O˜@RA@]×@]Ø@Rž@V¶@]Ù@]Ú@P½@%SÖ@]Û@]Ü@TT@]Ý@]Þ@Mh@NŽ@K¸@j÷@jø@W„@kY@f@X”@N_@M¿@%Z¤@ay@k•@IJ@Iñ@k–@k˜@MÐ@k—@RR@kš@k™@IT@[‹@L¹@MQ@IÅ@%Zï@Xm@HÛ@[k@N–@[É@LW@V¯@Sµ@I‚@MZ@[û@M‚@LA@Nù@eÙ@eÚ@%Vø@M”@eÛ@Jú@RS@Lq@M×@eÜ@Zó@eÝ@NÕ@N@eÞ@Q~@Q·@ZÞ@\j@%eß@eà@eã@eá@eâ@U~@L²@KÃ@eä@Ué@Um@JÌ@aØ@Sƒ@eå@P´@\X@%eæ@\L@Tû@\Ò@\Ì@ZÝ@Zø@Ud@ZN@LÒ@J@Uƒ@jõ@MÔ@jö@\@jð@%L¯@[t@LÎ@Sï@Jc@jñ@JL@Z¼@T˜@jó@jò@VÊ@T£@jô@\„@S_@k`@%k[@kc@kb@[¹@ka@Z½@kd@kl@HÎ@K™@ki@kj@S|@ke@kf@kg@kk@%Oß@kh@Lù@kp@ks@Pˆ@M“@k\@km@Q¶@V÷@Nø@kn@ko@kq@Kä@kr@%ku@k]@kt@Z[@J@V£@kv@kw@Oà@kx@VÞ@k{@IÇ@\y@ky@kz@k|@%kƒ@k@k@k}@k‚@k~@k…@k†@Vâ@c_@KX@k„@k‰@V¢@k‡@kˆ@k^@%Id@k_@Ke@Iã@k@kŠ@KÖ@kŽ@k‹@kŒ@JÙ@Zé@k@Jš@k@k’@k‘@%k“@k”@UŽ@MJ@Tœ@Kâ@VÈ@e¥@JU@Zý@M@Xø@eŽ@\J@e@QÕ@Tì@%Mã@e@e‘@e’@[à@e“@e”@e–@e•@e—@e˜@T‚@e™@Z×@eš@On@e›@%eœ@Oo@e@L§@Q^@ež@IR@Nt@M–@eŸ@e @e¡@e¢@L™@N¬@Uã@`Í@%Z®@X]@[W@e£@[~@e¤@XÀ@M\@JÆ@Iy@P°@I‡@Iˆ@I‰@J]@Tç@ca@%I@Qi@Jî@TH@Zx@Sø@YX@Mž@Qô@ZM@ZÊ@O@cb@LU@cc@NY@[ƒ@%O™@Zµ@W¤@QL@Jy@Võ@cf@cd@ch@cj@cg@Ko@SÇ@K@ce@Uõ@ci@%Rt@Ie@N¢@\W@Wk@Vm@UÉ@VÒ@cl@ck@Rå@YA@YW@cm@cp@WX@[ï@%co@K}@W^@cq@K¹@WH@M…@UÄ@Jq@Vy@Zë@cr@L‹@cn@cu@Jý@cv@%cs@ct@YÜ@QÞ@If@Zƒ@KÜ@V@cw@Z—@IŠ@Kó@cz@cx@cy@K`@YÄ@%c|@c~@c}@TR@Y¢@c{@Zá@[z@c@\’@c‚@I|@Yœ@cƒ@c…@c„@c†@%Y×@Kk@d@]ô@]÷@]õ@]ö@]ù@XÎ@RÆ@Hí@X¯@]ø@Zj@M©@^B@T’@%]û@]ú@U{@]ü@^A@\~@]ý@Qz@^E@Z•@^G@^D@^H@O\@PÈ@^C@^F@%[¢@^I@^M@^N@^L@MÁ@PD@^K@^J@ZÆ@I¾@^O@Mš@^P@J[@KF@K»@%^Q@Kô@^R@Ii@^T@^S@^U@^W@^V@^X@^Y@^Z@Zo@jù@T–@\c@S…@%jû@jü@jú@OÅ@Xî@Ls@ZÌ@V©@kB@kA@M§@jý@Vv@kD@PÑ@J‹@WJ@%kE@kC@OT@kH@kI@Om@RX@P‚@V‚@kJ@kF@kG@Rï@kL@J»@\Ž@JÖ@%kK@kN@kM@kO@XÐ@Rq@T¨@kP@kQ@kR@kS@kT@kU@kW@kV@kX@IÈ@%Zt@UÌ@Pî@[×@Y¯@Q_@O‘@L©@N÷@kÅ@kÆ@kÇ@kÈ@kÉ@kË@kÊ@lŠ@%kÌ@kÍ@gÃ@gÄ@gÅ@[Œ@K£@gÇ@gÆ@gÈ@gÉ@TE@gÊ@gË@LP@K—@gÌ@%gÎ@gÍ@LÅ@gÏ@gÐ@gÑ@KÚ@JN@[Ò@RÅ@IU@LÕ@gÒ@gÓ@Z¾@Tu@Oú@%WØ@MS@gÕ@gÔ@g×@gÖ@SE@gØ@gÙ@TN@gÚ@TO@gÛ@I¦@gÜ@gÝ@gÞ@%gß@gà@\‹@gá@gâ@N×@gã@Zk@Vù@I«@Q†@gä@TF@RM@gå@gæ@gç@%gè@gé@gê@gë@gì@gí@gî@gï@gð@gñ@gó@gò@gô@WM@QÀ@gõ@gö@%g÷@[A@gø@XS@gù@gú@gû@gü@hA@gý@hB@Lô@R›@hC@hD@Ob@Y¾@%Iø@hE@hF@hG@Y÷@hH@[ü@hI@SË@hJ@hK@QT@hL@X›@V™@hN@hM@%J›@M™@hO@hP@Xá@hQ@hR@L‡@X¾@hS@hT@hU@Tð@Vß@hV@hW@hX@%hY@hZ@[@h[@Jì@RJ@h\@h]@h^@h_@Wü@h`@Qß@J·@\V@O–@Xg@%hc@ha@hb@hd@K¦@Nû@Oá@Rl@he@hf@hg@ho@hh@hi@hj@Tb@h’@%KÌ@hk@hl@hm@KÅ@R^@hn@hp@hq@hr@[“@hs@Rö@ht@R÷@hu@hv@%Lã@Hö@hw@hx@hy@hz@h{@h|@h}@h~@O´@h‚@h@h@hƒ@h„@Qm@%h…@h†@h‡@hˆ@h‰@hŠ@h‹@hŒ@h@P×@hŽ@QM@h@h@h‘@Xƒ@JD@%Re@be@Ua@bf@Iu@WÉ@J²@Tñ@bg@Xp@bh@Nã@bi@bj@Rf@[B@RÕ@%MŒ@WÄ@bk@R—@bl@LG@Lò@MÑ@bm@bn@ZÃ@bo@bp@Yk@bq@br@bs@%bt@Yv@bu@Iú@Pº@bv@Pª@bw@bx@by@bz@b{@L¶@]á@KÒ@]ã@]â@%]å@Tí@]ä@L`@Y•@Yô@[”@Ow@\‰@]ç@]æ@H¡@Ws@]è@L¼@NÉ@Q¼@%Q£@Jb@]é@Q©@R¯@OU@X~@]ê@Ub@I}@]ë@K·@Z¹@Jž@]ì@ZÈ@Xu@%S„@]í@]î@]ï@Q‹@VÔ@X}@Zˆ@Q @]ð@V†@]ñ@V‡@Yý@Ló@]ò@H®@%XV@[o@VŽ@]ó@bd@QE@k¾@k¿@kÀ@RÐ@T·@Y„@XÚ@Ye@N®@Mm@h•@%JÅ@ZZ@kÁ@Jœ@kÂ@K’@kÄ@Z‹@k¦@YI@k¨@k§@Q„@PÖ@IB@Wì@Xç@%kª@X—@k©@[‘@k«@RY@N•@k­@k¬@RÝ@Qx@VJ@X\@k®@k¯@k°@Qµ@%HÓ@Sš@k±@T@k¥@O·@O±@K†@Lg@P_@Rr@R‡@\Ë@Lî@Oš@YE@HÏ@%lP@lQ@X«@H¯@lR@lS@lT@Tj@OÎ@lW@lV@I~@lU@lX@lY@W£@TÌ@%Mª@d·@d¸@d¹@OÁ@Yó@ZÎ@Ux@Y²@K¤@T‹@i@X@VS@Xê@d@Wˆ@%Mk@KØ@iž@Hã@Vl@iŸ@Z£@Q¬@Q@SÃ@O°@i @NÔ@i¡@i¢@i£@YÂ@%S´@Wg@i¤@ZQ@Pe@Vá@i¥@i¦@Yu@Kí@i§@i¨@K@i©@iª@Iû@i«@%i¬@T¦@Lˆ@f¨@f©@fª@f«@S­@f¬@f­@Li@U²@a·@lo@lp@IÌ@lq@%ls@lr@aº@N¡@a»@a¼@a½@a¾@a¿@aÀ@LY@Yú@OD@UÍ@IE@Vg@aÁ@%Kû@TÃ@aÂ@Oh@Iž@aÃ@Kõ@aÄ@RØ@aÅ@Xz@M}@aÆ@P @aÇ@Iõ@aÈ@%Q”@aÉ@aÊ@Q÷@aË@aÌ@aÍ@UÖ@\·@]†@X„@h¤@^¯@Qì@Z¥@Wt@YQ@%J{@Tž@I´@Q¾@cß@Uº@cà@cá@OÓ@câ@\D@Wu@cä@NÜ@cã@cå@cæ@%Qí@O^@cç@Qå@M¦@cè@cé@Jr@YŠ@PE@cê@Sî@cë@cì@cí@S¬@cî@%UG@cï@cð@cñ@cY@cò@có@Qá@cô@cõ@[ç@cö@c÷@Mg@l[@lZ@l^@%l\@M @l_@l`@lb@la@ld@lc@le@lf@lg@V‰@LÞ@lt@lu@lv@lx@%lz@lw@l{@ly@\w@l|@l}@l~@l@l@^k@\©@c˜@MŽ@Pž@N‹@li@%SÆ@lh@lj@ll@lk@lm@W¹@ln@R¦@Z„@kÎ@Q²@kÏ@kÐ@kÑ@kÒ@kÓ@%kÕ@IK@kÖ@k×@kØ@kÙ@kÚ@kÛ@kÜ@kÝ@Xj@kÞ@kß@kà@ká@kâ@kã@%Pï@kä@kå@kæ@kç@kè@ké@kê@kë@kì@kí@kî@kï@kð@kñ@kò@kó@%O§@kô@kõ@kö@k÷@Tù@kø@kù@kú@kû@kü@ký@lA@lB@lC@lD@lE@%lF@lG@lH@I@lI@lJ@lK@lL@lM@Q{@lN@lO@Rð@h®@N¥@h¯@Rš@%SX@Y[@h°@h±@h²@h³@h´@Y\@Y@h¶@hµ@Z¦@Wr@h·@h¹@h¸@hº@%h»@Lê@h¼@Mç@h½@h¾@Oè@h¿@Kë@hÀ@hÁ@hÂ@hÃ@T´@hÄ@hÅ@hÆ@%S•@hÇ@hÈ@hÉ@l]@hÊ@hË@hÌ@hÍ@hÎ@MÖ@hÏ@hÐ@hÑ@hÒ@hÓ@hÔ@%hÕ@h×@ZE@hÖ@hØ@kZ@Q¸@l…@l†@l‡@lˆ@l‰@Q³@l‹@lŒ@Qò@jï@%jî@Qè@l‚@lƒ@Nf@]…@Uñ@Pç@h£@MÙ@TM@R«@l@lŽ@l@l‘@l@%l’@l•@l”@l“@l–@l—@gŠ@g‹@gŒ@k»@k¼@k½@K¥@\½@Md@\º@^°@%Uò@l˜@l™@lš@lœ@l›@Ig@l@lž@lŸ@Sê@f³@J}@k²@k³@Q…@k´@%kµ@k¶@k·@k¸@k¹@T¢@kº@Q›@MH@g‰@M‹@]@vA@vB@vC@vD@vE@%vF@vG@vH@vI@vJ@vK@vL@vM@vN@vO@vP@vQ@vR@vS@vT@vU@vV@%vW@vX@vY@vZ@v[@v\@v]@v^@v_@v`@va@vb@vc@vd@ve@vf@vg@%vh@vi@vj@vk@vl@vm@vn@vo@vp@vq@vr@vs@vt@vu@vv@vw@vx@%vy@vz@v{@v|@v}@v~@v@v@v‚@vƒ@v„@v…@v†@v‡@vˆ@v‰@vŠ@%v‹@vŒ@v@vŽ@v@v@v‘@v’@v“@v”@v•@v–@v—@v˜@v™@vš@v›@%vœ@v@vž@vŸ@v @v¡@v¢@v£@v¤@v¥@v¦@v§@v¨@v©@vª@v«@v¬@%v­@v®@v¯@v°@v±@v²@v³@v´@vµ@v¶@v·@v¸@v¹@vº@v»@v¼@v½@%v¾@v¿@vÀ@vÁ@vÂ@vÃ@vÄ@vÅ@vÆ@vÇ@vÈ@vÉ@vÊ@vË@vÌ@vÍ@vÎ@%vÏ@vÐ@vÑ@vÒ@vÓ@vÔ@vÕ@vÖ@v×@vØ@vÙ@vÚ@vÛ@vÜ@vÝ@vÞ@vß@%và@vá@vâ@vã@vä@vå@væ@vç@vè@vé@vê@vë@vì@ví@vî@vï@vð@%vñ@vò@vó@vô@võ@vö@v÷@vø@vù@vú@vû@vü@vý@wA@wB@wC@wD@%wE@wF@wG@wH@wI@wJ@wK@wL@wM@wN@wO@wP@wQ@wR@wS@wT@wU@%wV@wW@wX@wY@wZ@w[@w\@w]@w^@w_@w`@wa@wb@wc@wd@we@wf@%wg@wh@wi@wj@wk@wl@wm@wn@wo@wp@wq@wr@ws@wt@wu@wv@ww@%wx@wy@wz@w{@w|@w}@w~@w@w@w‚@wƒ@w„@w…@w†@w‡@wˆ@w‰@%wŠ@w‹@wŒ@w@wŽ@w@w@w‘@w’@w“@w”@w•@w–@w—@w˜@w™@wš@%w›@wœ@w@wž@wŸ@w @w¡@w¢@w£@w¤@w¥@w¦@w§@w¨@w©@wª@w«@%w¬@w­@w®@w¯@w°@w±@w²@w³@w´@wµ@w¶@w·@w¸@w¹@wº@w»@w¼@%w½@w¾@w¿@wÀ@wÁ@wÂ@wÃ@wÄ@wÅ@wÆ@wÇ@wÈ@wÉ@wÊ@wË@wÌ@wÍ@%wÎ@wÏ@wÐ@wÑ@wÒ@wÓ@wÔ@wÕ@wÖ@w×@wØ@wÙ@wÚ@wÛ@wÜ@wÝ@wÞ@%wß@wà@wá@wâ@wã@wä@wå@wæ@wç@wè@wé@wê@wë@wì@wí@wî@wï@%wð@wñ@wò@wó@wô@wõ@wö@w÷@wø@wù@wú@wû@wü@wý@xA@xB@xC@%xD@xE@xF@xG@xH@xI@xJ@xK@xL@xM@xN@xO@xP@xQ@xR@xS@xT@%xU@xV@xW@xX@xY@xZ@x[@x\@x]@x^@x_@x`@xa@xb@xc@xd@xe@%xf@xg@xh@xi@xj@xk@xl@xm@xn@xo@xp@xq@xr@xs@xt@xu@xv@%xw@xx@xy@xz@x{@x|@x}@x~@x@x@x‚@xƒ@x„@x…@x†@x‡@xˆ@%x‰@xŠ@x‹@xŒ@x@xŽ@x@x@x‘@x’@x“@x”@x•@x–@x—@x˜@x™@%xš@x›@xœ@x@xž@xŸ@x @x¡@x¢@x£@x¤@x¥@x¦@x§@x¨@x©@xª@%x«@x¬@x­@x®@x¯@x°@x±@x²@x³@x´@xµ@x¶@x·@x¸@x¹@xº@x»@%x¼@x½@x¾@x¿@xÀ@xÁ@xÂ@xÃ@xÄ@xÅ@xÆ@xÇ@xÈ@xÉ@xÊ@xË@xÌ@%xÍ@xÎ@xÏ@xÐ@xÑ@xÒ@xÓ@xÔ@xÕ@xÖ@x×@xØ@xÙ@xÚ@xÛ@xÜ@xÝ@%xÞ@xß@xà@xá@xâ@xã@xä@xå@xæ@xç@xè@xé@xê@xë@xì@xí@xî@%xï@xð@xñ@xò@xó@xô@xõ@xö@x÷@xø@xù@xú@xû@xü@xý@yA@yB@%yC@yD@yE@yF@yG@yH@yI@yJ@yK@yL@yM@yN@yO@yP@yQ@yR@yS@%yT@yU@yV@yW@yX@yY@yZ@y[@y\@y]@y^@y_@y`@ya@yb@yc@yd@%ye@yf@yg@yh@yi@yj@yk@yl@ym@yn@yo@yp@yq@yr@ys@yt@yu@%yv@yw@yx@yy@yz@y{@y|@y}@y~@y@y@y‚@yƒ@y„@y…@y†@y‡@%yˆ@y‰@yŠ@y‹@yŒ@y@yŽ@y@y@y‘@y’@y“@y”@y•@y–@y—@y˜@%y™@yš@y›@yœ@y@yž@yŸ@y @y¡@y¢@y£@y¤@y¥@y¦@y§@y¨@y©@%yª@y«@y¬@y­@y®@y¯@y°@y±@y²@y³@y´@yµ@y¶@y·@y¸@y¹@yº@%y»@y¼@y½@y¾@y¿@yÀ@yÁ@yÂ@yÃ@yÄ@yÅ@yÆ@yÇ@yÈ@yÉ@yÊ@yË@%yÌ@yÍ@yÎ@yÏ@yÐ@yÑ@yÒ@yÓ@yÔ@yÕ@yÖ@y×@yØ@yÙ@yÚ@yÛ@yÜ@%yÝ@yÞ@yß@yà@yá@yâ@yã@yä@yå@yæ@yç@yè@yé@yê@yë@yì@yí@%yî@yï@yð@yñ@yò@yó@yô@yõ@yö@y÷@yø@yù@yú@yû@yü@yý@zA@%zB@zC@zD@zE@zF@zG@zH@zI@zJ@zK@zL@zM@zN@zO@zP@zQ@zR@%zS@zT@zU@zV@zW@zX@zY@zZ@z[@z\@z]@z^@z_@z`@za@zb@zc@%zd@ze@zf@zg@zh@zi@zj@zk@zl@zm@zn@zo@zp@zq@zr@zs@zt@%zu@zv@zw@zx@zy@zz@z{@z|@z}@z~@z@z@z‚@zƒ@z„@z…@z†@%z‡@zˆ@z‰@zŠ@z‹@zŒ@z@zŽ@z@z@z‘@z’@z“@z”@z•@z–@z—@%z˜@z™@zš@z›@zœ@z@zž@zŸ@z @z¡@z¢@z£@z¤@z¥@z¦@z§@z¨@%z©@zª@z«@z¬@z­@z®@z¯@z°@z±@z²@z³@z´@zµ@z¶@z·@z¸@z¹@%zº@z»@z¼@z½@z¾@z¿@zÀ@zÁ@zÂ@zÃ@zÄ@zÅ@zÆ@zÇ@zÈ@zÉ@zÊ@%zË@zÌ@zÍ@zÎ@zÏ@zÐ@zÑ@zÒ@zÓ@zÔ@zÕ@zÖ@z×@zØ@zÙ@zÚ@zÛ@%zÜ@zÝ@zÞ@zß@zà@zá@zâ@zã@zä@zå@zæ@zç@zè@zé@zê@zë@zì@%zí@zî@zï@zð@zñ@zò@zó@zô@zõ@zö@z÷@zø@zù@zú@zû@zü@zý@%{A@{B@{C@{D@{E@{F@{G@{H@{I@{J@{K@{L@{M@{N@{O@{P@{Q@%{R@{S@{T@{U@{V@{W@{X@{Y@{Z@{[@{\@{]@{^@{_@{`@{a@{b@%{c@{d@{e@{f@{g@{h@{i@{j@{k@{l@{m@{n@{o@{p@{q@{r@{s@%{t@{u@{v@{w@{x@{y@{z@{{@{|@{}@{~@{@{@{‚@{ƒ@{„@{…@%{†@{‡@{ˆ@{‰@{Š@{‹@{Œ@{@{Ž@{@{@{‘@{’@{“@{”@{•@{–@%{—@{˜@{™@{š@{›@{œ@{@{ž@{Ÿ@{ @{¡@{¢@{£@{¤@{¥@{¦@{§@%{¨@{©@{ª@{«@{¬@{­@{®@{¯@{°@{±@{²@{³@{´@{µ@{¶@{·@{¸@%{¹@{º@{»@{¼@{½@{¾@{¿@{À@{Á@{Â@{Ã@{Ä@{Å@{Æ@{Ç@{È@{É@%{Ê@{Ë@{Ì@{Í@{Î@{Ï@{Ð@{Ñ@{Ò@{Ó@{Ô@{Õ@{Ö@{×@{Ø@{Ù@{Ú@%{Û@{Ü@{Ý@{Þ@{ß@{à@{á@{â@{ã@{ä@{å@{æ@{ç@{è@{é@{ê@{ë@%{ì@{í@{î@{ï@{ð@{ñ@{ò@{ó@{ô@{õ@{ö@{÷@{ø@{ù@{ú@{û@{ü@%{ý@|A@|B@|C@|D@|E@|F@|G@|H@|I@|J@|K@|L@|M@|N@|O@|P@%|Q@|R@|S@|T@|U@|V@|W@|X@|Y@|Z@|[@|\@|]@|^@|_@|`@|a@%|b@|c@|d@|e@|f@|g@|h@|i@|j@|k@|l@|m@|n@|o@|p@|q@|r@%|s@|t@|u@|v@|w@|x@|y@|z@|{@||@|}@|~@|@|@|‚@|ƒ@|„@%|…@|†@|‡@|ˆ@|‰@|Š@|‹@|Œ@|@|Ž@|@|@|‘@|’@|“@|”@|•@%|–@|—@|˜@|™@|š@|›@|œ@|@|ž@|Ÿ@| @|¡@|¢@|£@|¤@|¥@|¦@%|§@|¨@|©@|ª@|«@|¬@|­@|®@|¯@|°@|±@|²@|³@|´@|µ@|¶@|·@%|¸@|¹@|º@|»@|¼@|½@|¾@|¿@|À@|Á@|Â@|Ã@|Ä@|Å@|Æ@|Ç@|È@%|É@|Ê@|Ë@|Ì@|Í@|Î@|Ï@|Ð@|Ñ@|Ò@|Ó@|Ô@|Õ@|Ö@|×@|Ø@|Ù@%|Ú@|Û@|Ü@|Ý@|Þ@|ß@|à@|á@|â@|ã@|ä@|å@|æ@|ç@|è@|é@|ê@%|ë@|ì@|í@|î@|ï@|ð@|ñ@|ò@|ó@|ô@|õ@|ö@|÷@|ø@|ù@|ú@|û@%|ü@|ý@}A@}B@}C@}D@}E@}F@}G@}H@}I@}J@}K@}L@}M@}N@}O@%}P@}Q@}R@}S@}T@}U@}V@}W@}X@}Y@}Z@}[@}\@}]@}^@}_@}`@%}a@}b@}c@}d@}e@}f@}g@}h@}i@}j@}k@}l@}m@}n@}o@}p@}q@%}r@}s@}t@}u@}v@}w@}x@}y@}z@}{@}|@}}@}~@}@}@}‚@}ƒ@%}„@}…@}†@}‡@}ˆ@}‰@}Š@}‹@}Œ@}@}Ž@}@}@}‘@}’@}“@}”@%}•@}–@}—@}˜@}™@}š@}›@}œ@}@}ž@}Ÿ@} @}¡@}¢@}£@}¤@}¥@%}¦@}§@}¨@}©@}ª@}«@}¬@}­@}®@}¯@}°@}±@}²@}³@}´@}µ@}¶@%}·@}¸@}¹@}º@}»@}¼@}½@}¾@}¿@}À@}Á@}Â@}Ã@}Ä@}Å@}Æ@}Ç@%}È@}É@}Ê@}Ë@}Ì@}Í@}Î@}Ï@}Ð@}Ñ@}Ò@}Ó@}Ô@}Õ@}Ö@}×@}Ø@%}Ù@}Ú@}Û@}Ü@}Ý@}Þ@}ß@}à@}á@}â@}ã@}ä@}å@}æ@}ç@}è@}é@%}ê@}ë@}ì@}í@}î@}ï@}ð@}ñ@}ò@}ó@}ô@}õ@}ö@}÷@}ø@}ù@}ú@%}û@}ü@}ý@~A@~B@~C@~D@~E@~F@~G@~H@~I@~J@~K@~L@~M@~N@%~O@~P@~Q@~R@~S@~T@~U@~V@~W@~X@~Y@~Z@~[@~\@~]@~^@~_@%~`@~a@~b@~c@~d@~e@~f@~g@~h@~i@~j@~k@~l@~m@~n@~o@~p@%~q@~r@~s@~t@~u@~v@~w@~x@~y@~z@~{@~|@~}@~~@~@~@~‚@%~ƒ@~„@~…@~†@~‡@~ˆ@~‰@~Š@~‹@~Œ@~@~Ž@~@~@~‘@~’@~“@%~”@~•@~–@~—@~˜@~™@~š@~›@~œ@~@~ž@~Ÿ@~ @~¡@~¢@~£@~¤@%~¥@~¦@~§@~¨@~©@~ª@~«@~¬@~­@~®@~¯@~°@~±@~²@~³@~´@~µ@%~¶@~·@~¸@~¹@~º@~»@~¼@~½@~¾@~¿@~À@~Á@~Â@~Ã@~Ä@~Å@~Æ@%~Ç@~È@~É@~Ê@~Ë@~Ì@~Í@~Î@~Ï@~Ð@~Ñ@~Ò@~Ó@~Ô@~Õ@~Ö@~×@%~Ø@~Ù@~Ú@~Û@~Ü@~Ý@~Þ@~ß@~à@~á@~â@~ã@~ä@~å@~æ@~ç@~è@%~é@~ê@~ë@~ì@~í@~î@~ï@~ð@~ñ@~ò@~ó@~ô@~õ@~ö@~÷@~ø@~ù@%~ú@~û@~ü@~ý@A@B@C@D@E@F@G@H@I@J@K@L@M@%N@O@P@Q@R@S@T@U@V@W@X@Y@Z@[@\@]@^@%_@`@a@b@c@d@e@f@g@h@i@j@k@l@m@n@o@%p@q@r@s@t@u@v@w@x@y@z@{@|@}@~@@@%‚@ƒ@„@…@†@‡@ˆ@‰@Š@‹@Œ@@Ž@@@‘@’@%“@”@•@–@—@˜@™@š@›@œ@@ž@Ÿ@ @¡@¢@£@%¤@¥@¦@§@¨@©@ª@«@¬@­@®@¯@°@±@²@³@´@%µ@¶@·@¸@¹@º@»@¼@½@¾@¿@À@Á@Â@Ã@Ä@Å@%Æ@Ç@È@É@Ê@Ë@Ì@Í@Î@Ï@Ð@Ñ@Ò@Ó@Ô@Õ@Ö@%×@Ø@Ù@Ú@Û@Ü@Ý@Þ@ß@à@á@â@ã@ä@å@æ@ç@%è@é@ê@ë@ì@í@î@ï@ð@ñ@ò@ó@ô@õ@ö@÷@ø@%ù@ú@û@ü@ý@C[@D\@BZ@B@B{@Bà@Bl@BP@B}@BM@B]@B\@%BN@Bk@B`@BK@Ba@Bð@Bñ@Bò@Bó@Bô@Bõ@Bö@B÷@Bø@Bù@Bz@B^@%BL@B~@Bn@Bo@B|@BÁ@BÂ@BÃ@BÄ@BÅ@BÆ@BÇ@BÈ@BÉ@BÑ@BÒ@BÓ@%BÔ@BÕ@BÖ@B×@BØ@BÙ@Bâ@Bã@Bä@Bå@Bæ@Bç@Bè@Bé@DD@Cà@DE@%Dp@Bm@By@B@B‚@Bƒ@B„@B…@B†@B‡@Bˆ@B‰@B‘@B’@B“@B”@B•@%B–@B—@B˜@B™@B¢@B£@B¤@B¥@B¦@B§@B¨@B©@BÀ@BO@BÐ@C¡@CJ@%BJ@B_@B¡@Bj@B[@% \ No newline at end of file +@@0@1@@3@4@5@6@@8@%9@;@@@>@ÿ@?@?@?@J@[@j@?@?@?@_@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@¡@%Eˆ@Dj@D`@%Dí@DK@DP@CE@Dz@FD@FB@FH@FF@FZ@FL@FJ@FP@FN@D{@FT@FR@%FY@FA@FE@FG@FI@FM@FQ@FC@FK@FO@FS@FU@FV@FW@FX@EF@EE@%Aa@Ab@Ac@Ad@Ae@Af@Ag@Ah@Ai@Aj@Ak@Al@Am@An@Ao@Ap@Aq@%Ar@As@At@Au@Av@Aw@Ax@AA@AB@AC@AD@AE@AF@AG@AH@AI@AJ@%AK@AL@AM@AN@AO@AP@AQ@AR@AS@AT@AU@AV@AW@AX@AÆ@AÀ@AÁ@%AÂ@AÃ@AÄ@AÅ@AÇ@AÈ@AÉ@AÊ@AË@AÌ@AÍ@AÎ@AÏ@AÐ@AÑ@AÒ@AÓ@%AÔ@AÕ@AÖ@A×@AØ@AÙ@AÚ@AÛ@AÜ@AÝ@AÞ@Aß@Aà@A€@A@A‚@Aƒ@%A„@A…@A‡@Aˆ@A‰@AŠ@A‹@AŒ@A@AŽ@A@A@A‘@A’@A“@A”@A•@%A–@A—@A˜@A™@Aš@A›@Aœ@A@Až@AŸ@A @A†@DZ@DJ@DJ@D|@Da@%Dq@Db@Dr@D~@D@E‹@Dî@Dï@Dk@DN@Dn@Do@Añ@Aò@Aó@Aô@Aõ@%Aö@A÷@Aø@Aù@Aú@Aû@Aü@A±@A²@A³@A´@Aµ@A¶@A·@A¸@A¹@Aº@%Dñ@Dò@Dð@Dó@Ei@Ef@Ee@Ek@Ew@DM@En@Em@Ec@Ed@Eh@Eg@Eq@%Er@Dh@Dx@Eb@Ej@Ev@Eu@Et@DL@Es@Dg@Dw@Ey@Ez@Ep@El@Eo@%Eá@Eâ@Eã@Eä@Eå@Eæ@Eç@Eè@Eé@Eê@EÅ@EÆ@EÇ@EÈ@EÉ@EÊ@EË@%EÌ@EÍ@EÎ@EÏ@EÐ@EÑ@EÒ@EÓ@EÔ@EÕ@EÖ@E×@EØ@E±@E²@E³@E´@%Eµ@E¶@E·@E¸@E¹@Eº@E»@E¼@E½@E¾@E¿@EÀ@EÁ@EÂ@EÃ@EÄ@F¤@%F¥@F¦@F§@F¨@F©@Fª@F«@F¬@F­@F®@F¯@F°@F±@F²@F³@F´@Fµ@%F¶@F·@F¸@F¹@Fº@F»@F¼@F½@F¾@F¿@FÀ@FÁ@FÂ@FÃ@FÄ@FÅ@FÆ@%FÇ@FÈ@FÉ@FÊ@FË@FÌ@FÍ@FÎ@FÏ@FÐ@FÑ@FÒ@FÓ@FÔ@FÕ@FÖ@F×@%FØ@FÙ@FÚ@FÛ@FÜ@FÝ@FÞ@Fß@Fà@Fá@Fâ@Fã@Fä@Få@Fæ@Fç@Fè@%Fé@Fê@Fë@Fì@Fí@Fî@Fï@Dê@Dé@Dã@Dâ@Dì@Dë@Dè@Dç@Dà@Dä@%Dá@Dæ@Då@Dy@Di@@@@CD@CA@D[@D]@D^@D_@Dd@Dt@De@Du@CB@%CC@DB@DC@Df@Dv@Dl@D}@Dc@Ds@E[@E\@DG@D@DH@D‚@DI@Dƒ@%DQ@D„@DR@D…@D†@DÀ@D‡@DÁ@Dˆ@DÂ@D‰@DÃ@DŠ@DÄ@DŒ@DÅ@D@%DÆ@DŽ@DÇ@D@DÈ@D@DÉ@D‘@DÊ@D’@DË@DV@D“@DÌ@D”@DÍ@D•@%DÎ@D–@D—@D˜@D™@Dš@D@DÏ@DÕ@Dž@DÐ@DÖ@DŸ@DÑ@D×@D¢@DÒ@%DØ@D£@DÓ@DÙ@D¤@D¥@D¦@D§@D¨@DS@D©@DT@Dª@DU@D¬@D­@D®@%D¯@Dº@D»@DW@D¼@DÚ@DÛ@DF@D½@C¾@C¿@DÜ@DÝ@CG@C@CH@C‚@%CI@Cƒ@CQ@C„@CR@C…@C†@CÀ@C‡@CÁ@Cˆ@CÂ@C‰@CÃ@CŠ@CÄ@CŒ@%CÅ@C@CÆ@CŽ@CÇ@C@CÈ@C@CÉ@C‘@CÊ@C’@CË@CV@C“@CÌ@C”@%CÍ@C•@CÎ@C–@C—@C˜@C™@Cš@C@CÏ@CÕ@Cž@CÐ@CÖ@CŸ@CÑ@C×@%C¢@CÒ@CØ@C£@CÓ@CÙ@C¤@C¥@C¦@C§@C¨@CS@C©@CT@Cª@CU@C¬@%C­@C®@C¯@Cº@C»@CW@C¼@CÚ@CÛ@CF@C½@CÔ@CY@CZ@CE@CX@CÜ@%CÝ@Fe@Ff@Fg@Fh@Fi@Fj@Fk@Fl@Fm@Fn@Fo@Fp@Fq@Fr@Fs@Ft@%Fu@Fv@Fw@Fx@Fy@Fz@F{@F|@F}@F~@F@F€@F@F‚@Fƒ@F„@F…@%F†@F‡@Fˆ@F‰@Eñ@Eò@Eó@Eô@Eõ@Eö@E÷@Eø@Eù@Eú@Dm@Yº@K @%SÞ@W“@[i@Tü@Uo@Xb@\¡@Iº@ZŒ@\£@J”@\H@Tr@\¦@U¿@T‘@Iœ@%Y´@JÓ@Kª@V_@\¨@K©@Q]@Yo@UE@\¬@Lõ@Y^@b|@[Ï@L‚@J­@Qy@%\»@W‰@KD@W©@[ö@Põ@OØ@\®@RÊ@OÂ@\°@RT@Yä@[­@WÙ@[G@Mô@%LF@PÕ@S¸@Sr@Tg@Mt@Jk@YÑ@\¾@OÄ@Sñ@Y±@XP@Xˆ@Uè@\¿@Qñ@%QÑ@Tè@TL@Qk@Z‰@[š@UÁ@Ký@\ @Zz@P˜@ZÅ@NE@\À@Wä@O­@\§@%Yg@X¨@\¼@]@W—@PZ@O[@M¤@Yß@Iù@Mß@Rµ@XŽ@O¨@WD@Qa@Tw@%]’@]•@TÊ@\è@YÙ@U±@TÉ@\ë@\é@\Å@O—@SÌ@J‘@\ê@O’@OŠ@TÓ@%JÒ@Q×@IÕ@\p@UÊ@Vœ@[l@Lµ@Xi@]z@\ï@TJ@\í@Jù@Q@YÓ@\ì@%YÆ@\î@Rg@Y—@[Ø@\ñ@\ô@Ný@NÚ@TÍ@L}@Lb@Sò@\÷@YÀ@Wè@N¾@%L@LE@XÜ@[Ù@Ze@N@N‚@\ð@UA@W¯@Jª@\ò@Uk@\õ@QÖ@\ö@W°@%\ø@I­@M`@]C@Hè@Q‡@U@Ve@Vf@]D@K‰@KK@Wº@Km@\A@\•@Zs@%Vä@MÍ@]B@]|@Z@\ü@L‘@\˜@\ý@\ù@]A@Râ@ZV@\ó@]}@\ú@S†@%PÏ@Y‘@HÚ@NÐ@]F@]E@]L@]N@]K@U¸@]I@[µ@J~@]H@Pü@UË@]J@%]G@]P@K°@MI@Y¿@X`@QÁ@Od@[@Iß@Th@PŒ@]M@]O@Wé@Mí@Tv@%I„@JØ@Kì@]T@PA@]~@Tn@Pý@]X@Vw@Lž@]U@]W@IC@Z‚@]Y@XÄ@%]V@]Q@]R@QI@]S@Nò@XÝ@L¨@Oâ@]]@]Z@H²@]b@]d@IV@]_@KY@%Oò@VÇ@Mñ@YÏ@]c@O‰@JK@]e@Oê@]f@][@RÞ@]^@]a@]`@[N@[´@%T„@]h@NØ@]j@]\@]k@Sª@]i@\—@WC@OA@]l@S\@WU@]m@]g@JE@%PŸ@L´@Pû@H÷@Jõ@]n@]o@J¡@]p@JÞ@HÀ@]q@UU@X’@]r@Qe@]v@%UN@]u@]t@]w@V{@OI@S¦@]s@]x@]y@Tä@PÛ@Kø@\¢@ZÉ@Z©@XÕ@%J…@[w@Xh@Mƒ@Pk@Rƒ@KÑ@Wc@]@]‘@KS@K´@O£@Tê@Tª@HÊ@MK@%Qš@]ƒ@P»@MR@Mx@XÊ@I™@Sã@OÞ@K…@\h@Y™@Nå@UÝ@N¼@]‡@\æ@%RÙ@LÓ@T¼@Ià@ZØ@RP@R‚@]¡@TÞ@X³@Oû@SI@Mz@]¢@Z¨@]£@]œ@%K«@LŒ@Iš@]@J†@Oõ@P—@Y°@Pã@K²@]Ÿ@]ž@Oº@Sß@\\@] @QY@%K“@Q‰@Nô@JÔ@Q}@Rü@N·@LR@L@]@S½@PM@Nk@Kj@^i@XÖ@WY@%H»@J—@N˜@^j@M®@Zã@KV@K”@\Õ@TÏ@Lv@Tp@\Ö@PO@^[@\×@XË@%NN@f^@Qp@Q–@Zñ@LÔ@J³@J–@U^@Sp@Sy@Pú@I‘@\Ø@Mn@K]@\Ù@%[Å@VB@T®@UR@JË@Pl@M•@\Ú@\Û@Kæ@NÀ@Vé@X˜@\Ü@TP@Mp@OC@%VÝ@SÉ@\ß@\Ý@\Þ@Hý@Oæ@U¢@Nó@L°@Lí@\á@Ok@\ã@\â@S@\ä@%\å@QF@T¯@Hë@MF@NÒ@Wð@^]@Qs@K®@[ù@SL@Oy@^^@^_@P÷@O¡@%PÌ@^`@UÅ@I©@Zb@R„@YK@^b@PÔ@^c@PQ@R»@Tz@^d@]‰@Uw@MT@%Wï@ZÇ@Hû@JÑ@XØ@]Š@_Ê@]Œ@\¯@NO@IQ@Jw@\Í@ZÐ@OS@P@X[@%\Ï@Lk@\Ð@S¤@T™@Y¼@\Ñ@Rã@U­@TG@\¥@Už@Wæ@N|@Hê@NJ@X¬@%IP@\…@\_@KE@Qó@RÎ@I¨@I¶@I†@`R@[\@PH@Q«@\Ô@Q°@\Ó@WÓ@%]ß@W¿@\³@RN@ZA@W¢@N³@T³@QÐ@Oì@Xµ@]à@T…@JG@Kñ@Vû@Pù@%Pö@YY@Y‚@\Æ@IÝ@Pä@Mð@\Ç@Z¬@X‚@\È@\É@Xc@J™@OÆ@\Ê@^l@%T¤@Xx@Tý@IÍ@Zv@Iå@N¯@Zq@VK@LT@LB@Uä@T @UÛ@I…@Xï@Sq@%^e@KŸ@Pz@Me@Oã@QŽ@`V@`U@[º@Op@[y@HÇ@K¢@Pi@V§@`S@U¶@%Zr@\Î@Yµ@MÄ@V^@V½@`W@K‘@`T@Z–@Jt@Lö@`Z@MÎ@N©@K–@WL@%Rœ@Mò@Pó@Wb@X“@`X@Xe@Q¿@`Y@Qï@Oü@Q@Wl@Yö@Lm@`a@`d@%L’@HÈ@KÕ@Lt@M«@Vü@Pt@VQ@Só@[§@`e@Wá@JS@Wû@J´@WÆ@Mï@%Wà@Y]@``@Jó@Jj@Lå@`[@RÄ@`\@`]@`^@S[@`_@`b@Z°@`c@TZ@%W×@R×@`j@`o@[Û@`i@`z@Wµ@MÆ@`n@`h@S~@UŒ@Mó@R@OÖ@`f@%`m@Sx@[F@MÌ@OË@Z]@L¿@[ã@`g@M^@PG@Q@`k@`l@`p@`{@`†@%`w@`v@\i@`„@`…@cŒ@Y¦@`r@PI@ZÚ@Ph@`t@Xl@`}@Yj@`~@H¦@%S¶@`s@Mä@KÞ@W{@MŸ@ZÔ@`@X@H¤@`ˆ@`q@Yf@`u@`x@`y@`|@%NI@`@`‚@`ƒ@`‡@`‰@ZT@Læ@SV@`‹@Uz@QH@RÃ@P~@X™@[|@`@%I·@MÞ@`@^a@Y…@V•@J¼@H¥@`’@VÅ@`“@`Ž@`Š@`Œ@`@`‘@N]@%`”@`•@NC@UÚ@W§@`¦@JJ@`¥@` @`Ÿ@Wy@`@`›@Pp@\d@Ul@`™@%H @`ž@`œ@`¡@`§@Lh@S @UV@P±@`–@S^@\Ã@`š@Rõ@`¢@`£@`¤@%X¤@`³@Vã@`°@PF@`®@W¸@`ª@Uf@P­@`­@Mì@M¯@`¨@`—@`²@`·@%J¬@`¸@XR@MÇ@`¯@Xù@`«@Zú@`˜@Sˆ@`¬@Z˜@`µ@`¶@`Ã@Xà@`»@%`È@`É@`½@`©@UD@`À@`±@UÇ@`Â@`´@WÊ@Vc@`Ì@`Å@`Á@`Ê@`¹@%`¾@`¿@`Ä@`Æ@`Ç@`Ë@`º@Vt@`Ô@`Õ@`Ñ@`Ï@NÍ@`Ð@LÁ@\Ä@Xé@%Qî@`Î@`¼@`Ó@`Ò@`Ö@`Û@`×@[õ@JP@\@V[@`Ù@Wú@MØ@`à@`Ü@%Y¬@`á@`Ú@`Ø@`Þ@`ß@`Ý@`ã@Sö@\«@Zê@`å@UÈ@`ä@LÀ@`æ@`ç@%`è@`â@M¾@Væ@`é@Xš@`ê@TÁ@O`@RÑ@`ë@`ì@T•@Vd@`í@Nx@\µ@%Yñ@`î@We@KÙ@`ð@Z¯@P¦@JÐ@W¦@`ï@`ñ@Ml@M›@W\@`ò@SÓ@`ó@%Z±@T¥@`õ@`ô@`ö@Wa@U¤@ZÙ@^w@^y@^x@Mˆ@^|@^}@Kx@^z@^{@%JA@^@N™@[¶@^@Oø@L[@^p@V­@PR@NU@\™@Ps@PŠ@Nà@V²@^~@%HÒ@Wê@Lx@\Y@SÁ@P£@V¸@^ˆ@^‚@S¹@^„@^‰@S˜@^‹@^Š@P`@^‡@%^†@J¸@P«@Q¡@^ƒ@^…@XÌ@^Ž@PÜ@^“@Ká@^”@^r@MX@Zª@^@Pq@%^‘@^q@K‡@^Œ@P†@^@^’@^š@MA@H¢@Qð@Jg@^@^™@SÑ@^•@^–@%^˜@^—@^Ÿ@Z“@I¹@^ž@^£@^œ@^›@^@S@Nš@^¢@^¤@VÂ@KÐ@_`@%^ @^¡@TU@Kè@^¦@^¥@^¨@ID@Kl@PP@Y@KÁ@^§@V›@f”@V|@VŸ@%VÀ@Tú@^©@Ví@^ª@^s@^®@^«@O²@Uú@^¬@Uj@R¸@T]@^­@Zõ@Xå@%Rª@KÔ@^t@Iz@^u@^v@M½@T¿@U¾@TÈ@\S@Uš@Pg@M÷@Y»@a¹@J¥@%IX@L³@Xd@]ˆ@XF@Wƒ@]Ž@Kß@Y¸@M[@a¸@a¶@Jò@Vë@Vª@L“@\±@%YŒ@Mº@U¦@WW@YÃ@P…@NÏ@Kà@_Ä@_Å@^\@Yy@Så@RÍ@L@L|@P@%\@Sô@I\@_Ç@OQ@VÖ@_É@_È@K@U}@HÁ@SN@SK@RË@Nè@Vž@MÂ@%cš@Tæ@c›@Wž@\Q@L½@Qç@TÐ@cœ@KÉ@NÊ@Yž@c @R@c£@cŸ@c¤@%Ww@La@c@cž@c¢@RÜ@c§@c¦@Rc@SÝ@c©@R¶@c¡@U»@O„@Mc@c¥@%XÔ@W®@c¨@c¯@Y¥@OJ@c¬@c®@PÐ@YË@N¦@c°@Yõ@\k@WŸ@W~@Q¥@%cª@c«@O_@c­@c²@c±@cµ@c·@Rî@RÇ@Oé@U@c¶@Kï@R…@ZŠ@c³@%c´@T¡@c¼@c¸@SÄ@W’@cº@c»@NŠ@c½@c¹@P¶@ZD@c¾@U•@cÂ@cÃ@%Xõ@R]@Rd@cÁ@cÀ@cÆ@XQ@f•@cÉ@cÄ@NÝ@UI@N´@Xs@cÇ@cÈ@cÍ@%cÏ@cÐ@cÊ@Ku@cË@cÎ@RÚ@cÅ@cÌ@cÑ@cÓ@cÒ@cÔ@]™@cÕ@cÖ@\s@%cÜ@cÝ@Pw@ZÏ@\v@Jå@V@cÙ@\Â@\n@X¡@Ro@cÞ@N½@Mb@cÚ@YG@%M¡@QÎ@\ª@Uê@c@cÛ@L–@Tå@Rô@cR@Rý@V@cS@[L@Z@U×@H±@%Vn@W‹@Mé@cU@cT@\z@My@[å@K§@W‘@YÊ@IF@U´@J‰@U”@Pm@Xú@%UÑ@cV@Nb@X|@ML@ZÖ@M¥@Yˆ@X@NÑ@cW@TÜ@PŽ@I—@V~@NÄ@NÃ@%Yù@R|@P|@Lº@Rb@M­@Z¡@T~@R®@Ië@Mq@c[@Qh@[O@c\@c^@Jæ@%KÓ@Vb@YP@K\@UØ@Lƒ@U…@OK@W½@\‘@X @Uy@Kú@c×@Ná@J^@Up@%cØ@JB@_Ë@Zh@_Ì@Y¡@_Í@OÌ@_Î@U«@Yû@J@c‹@Rà@O @W±@Rñ@%OÕ@S§@Iâ@OÒ@T@Vê@O@WÜ@U¹@SÀ@c@X»@[Y@cŽ@Uó@W`@QÄ@%c@QÃ@c‘@c™@Wm@U]@YØ@aH@Z@V‹@Sð@aL@aG@aI@aJ@aO@Iì@%aK@LÙ@aM@aN@aP@KZ@aQ@aS@aX@Yr@aV@aU@QŒ@aW@Z¿@aR@aZ@%Hµ@aT@Pš@aY@a[@a^@a\@[Ä@X_@a]@a_@QÌ@Kê@Z™@Tm@L†@Oý@%a`@aa@ag@Jˆ@Sè@JÝ@Yb@ah@af@ae@ac@ab@I`@[X@ad@ak@al@%aj@h›@as@ar@TV@ai@an@ap@at@aq@am@ao@au@av@aw@ax@az@%a{@W @d}@J§@[Ü@YR@JR@MD@\”@Ti@OÝ@MN@WÖ@Ií@^o@N¹@YÐ@%Vh@HÌ@X@]„@OŽ@Ir@UÏ@I»@VG@LK@U¥@XC@`÷@[j@`ú@`ù@Sa@%Vú@QQ@`ø@[â@I®@[Ã@K{@J÷@[ @XO@Hî@`û@aA@JC@`ü@`ý@RQ@%R}@aB@Lš@No@aC@Rº@aD@aE@aF@J°@LÈ@S¼@Ré@I¡@XÑ@d{@Nc@%Zw@Zd@M„@aÎ@\O@T@Is@J±@aÐ@Xñ@Q­@aÏ@Pƒ@ZF@Kw@aÑ@K‹@%RŽ@Lü@L­@Ss@Lo@aÓ@aÒ@KÇ@\š@WE@a×@aÕ@Uû@PU@ZY@aÔ@aÖ@%QN@PÇ@aÚ@aÙ@P©@Qn@aÛ@aÜ@aÝ@^h@Ys@WB@OH@_Â@\¤@PJ@^m@%Yë@Sù@SJ@_Ã@Iw@`N@U¼@`Q@MM@Yü@L¤@Mê@Jz@K|@[e@Rv@Xr@%NA@c”@c“@c•@W…@Tô@KO@T_@c—@f¯@c‡@MŠ@KQ@Q»@c‰@cˆ@cŠ@%YÌ@a‹@XÍ@WN@Y†@IÉ@IŒ@I“@SŽ@[c@ZP@a|@a}@YÚ@JY@Ik@Wš@%[˜@a~@Oµ@Jü@a@MÛ@a@NR@QÈ@a‚@Xë@W]@aƒ@Kc@Sg@a„@a…@%Zš@a†@YM@a‡@W¡@aˆ@Kb@a‰@Nu@XÃ@aß@Ix@Yã@aà@NÈ@TË@aâ@%fý@fü@`O@aá@[½@W@RF@bc@[Ñ@aæ@aç@Zg@aë@P@aì@aä@J`@%Rí@aí@XÂ@Mõ@aè@L~@NS@V«@Vk@aã@aå@aé@aê@aö@aó@Zô@aò@%SM@[›@Sb@I¿@aî@añ@QO@V\@KA@aø@N°@að@XÓ@Z¸@aô@Mv@aõ@%Ts@aï@\|@gA@a÷@gE@aý@UÐ@QU@Np@Pv@Mâ@VA@gF@gC@gB@Nv@%gG@Xó@gD@MÝ@Kö@bA@K±@Vð@MG@XB@TA@Pr@Kð@aù@aú@aü@aû@%RÔ@bB@Za@bG@Td@XD@bI@M¶@bH@Nz@bC@bD@bJ@bF@Wñ@Zf@N\@%ZÂ@Rù@gH@Xû@bE@R–@bM@IO@bR@NÁ@bL@K_@TŠ@bP@O©@W@N”@%Vç@bO@bQ@XG@bN@W¨@N}@KŒ@Oä@IÑ@Jm@IY@bK@IÐ@KL@M@Kç@%XŒ@bW@Nl@TÆ@XÉ@bX@J@gI@Z›@Z…@gJ@bY@Yá@bU@Z~@LÏ@bS@%bV@L@bT@P¡@bZ@Z·@JÇ@b[@Ne@U˜@U†@R¼@gK@Qü@N{@PN@W¾@%b\@PV@I@Zö@b^@gM@b_@M¨@gL@b]@b`@Mµ@K­@X·@HÂ@gN@gO@%PÀ@ba@SS@bb@^±@gP@Lé@Wë@e¦@Xæ@Uø@TÕ@XW@Ji@WÑ@O…@b~@%N“@e§@[]@SÜ@e¨@e©@e«@eª@e­@e¬@Ox@e®@Q½@JÀ@Jö@NG@få@%fä@L_@Vš@Iƒ@fæ@Uh@fç@fè@UÕ@_Ï@IÄ@Zù@SÊ@HÆ@Jñ@TÒ@Wp@%PX@P{@TD@[³@P¨@_Ð@UH@Y@SD@Hæ@JV@TÄ@Há@L—@S›@Kò@[r@%Jp@N»@JM@Oð@HÐ@YÕ@Uâ@\E@WV@Kµ@PY@[{@L¦@Sw@_Ñ@Py@QÔ@%T`@ND@IH@S‹@Sœ@V¦@IG@Kv@R§@_Ò@YZ@JŠ@R“@L˜@[ó@KC@Iï@%R³@Rè@P¬@_Ó@Hç@Sd@Q@Mu@OÛ@Wx@HÍ@Wo@_Õ@OÏ@\^@_Ô@[p@%HÜ@Rá@Q¢@Nï@ZU@P¸@SA@I¥@Zð@P§@UÂ@_Ö@[@MP@T¬@VI@_Ø@%P]@S³@\G@U¯@RÂ@Jv@Mr@[·@eû@H³@P‡@Vó@Wz@[¾@QÍ@WÍ@V¡@%X­@RÒ@KR@_×@[–@N¶@Ns@H£@SR@Jë@[’@eü@_Ù@WF@W@Wå@_Û@%WQ@P¥@\]@_Ú@HÅ@M³@Us@Rò@Oç@Iµ@PË@V‘@Nð@N[@KW@S–@_å@%_â@OÜ@_Þ@J¶@O}@_ß@Rì@Xf@K@KÝ@UÙ@K•@_ä@[f@_à@VÌ@Sý@%Se@Y³@Oñ@QÒ@V¼@JX@Os@Px@Wf@Yz@Jê@_ã@_Ü@_æ@eý@Q¯@_á@%[¿@KG@Ió@_ç@_ñ@_ì@_ð@Tß@\‚@_î@R‰@Và@Iä@Y½@_í@_ê@WÔ@%J¦@PK@O½@Or@_è@Z­@_Ý@_é@P¾@_ë@Iò@Lè@Q¦@Oa@_ô@_÷@Iª@%J£@Jé@UF@_õ@Vq@Lâ@_ö@_ù@_ø@VÁ@Hà@Jí@cZ@X®@Iê@fA@_ó@%U„@_ò@HÙ@Y @I˜@V®@_ï@VD@[J@_ú@JÜ@R¥@_ü@RŸ@R @`A@Ql@%_û@Oî@S±@Je@Tõ@VZ@_ý@`D@\R@JW@Qc@Tk@I¤@Jè@\K@Rë@`B@%`C@`E@M²@`F@PÝ@Uc@IØ@T‡@`G@T|@`H@fB@Vs@`J@`I@IÀ@Sj@%`K@ZÛ@TÀ@`L@Oï@`M@[¦@e¶@fV@UÔ@\û@LÃ@ME@Le@[Ÿ@Mj@X¦@%jÌ@Kp@R•@OÇ@fW@H¼@Ol@QR@Iv@JH@LÑ@UB@K×@fX@O³@Uü@Tc@%[œ@L”@WÃ@[K@I”@f²@HÞ@f´@K¶@Qo@k›@X°@[†@WÒ@O@Jƒ@Lª@%[V@g]@KÎ@VY@XÁ@L]@fµ@U¨@St@f¸@f·@QÂ@f¶@Xü@f¹@fº@\†@%f»@f¼@Së@WÝ@NÇ@TÔ@KI@OÈ@[»@Zæ@YN@Xð@e·@e¸@e¹@M´@U°@%P–@W›@e¿@H¹@e½@P¤@eº@Iü@R˜@N‰@YÖ@Wó@e¾@e»@eÂ@XÆ@ZS@%J¹@Ra@\“@[q@UÆ@eÄ@eÃ@eÆ@eÅ@[æ@Xt@eÊ@Nn@O›@Un@eË@UY@%XŸ@eÉ@ZÍ@eÌ@eÎ@WŽ@eÈ@eÍ@Wí@N~@J_@SÔ@O¯@Wù@Tˆ@O¦@eÏ@%[Æ@Q`@ZÜ@eÐ@X^@eÑ@Uí@SO@H´@eÓ@eÒ@jÞ@R¹@II@c@eÔ@Uî@%eÕ@eÖ@S×@e×@eØ@Zº@T›@Y¶@Lû@eÁ@IÛ@Qû@Z÷@Vå@\@ZÁ@Zp@%fc@S”@LŸ@ft@VW@f~@PÉ@Wœ@JO@SÙ@f@R½@W³@R¨@I^@Zü@Uô@%[ë@SÒ@Kã@N›@Xß@UQ@ZÒ@T§@LÊ@d½@U\@dº@Pí@XÒ@IÃ@Jä@d»@%[h@KÄ@d¼@U÷@LÛ@Vô@P³@Y@d¾@dÁ@M»@IM@O|@e¼@dÂ@dÅ@dÊ@%dË@Vi@Hä@Nª@MY@dÀ@W˜@dÉ@Wõ@[Ž@Qv@dÃ@RV@Mœ@[¥@dÇ@Uß@%Zå@d¿@dÄ@dÆ@TY@L„@dÈ@P}@dÑ@dÖ@dÔ@NÛ@NÎ@dÚ@dÝ@dÙ@I›@%H×@R²@LË@Sá@T½@Tà@dÎ@dÓ@dÕ@M’@d×@\–@Rú@dÛ@Iè@dÐ@Nì@%Pb@dÌ@[ø@Q™@Ið@dÞ@UÀ@dØ@[D@I‹@[[@dÍ@dÏ@K¯@dÒ@dÜ@P·@%Uö@VH@SÛ@Pô@dè@X¢@dñ@[é@dß@dà@Yš@MÊ@Lø@Lð@ZÓ@dî@dí@%dë@M‘@VÑ@då@W¥@P“@H·@dð@dï@\`@dã@WI@UC@NX@O{@dé@dá@%dâ@dä@KU@dæ@Te@dê@dì@OP@\N@d÷@dô@WP@dõ@QZ@dç@RW@Hï@%dó@dö@MC@Ur@Rn@Wß@På@V”@VÜ@X´@Uà@dò@Në@dø@R~@Sä@M˜@%Hó@\x@N«@S@VÃ@eF@UM@eB@Pá@Pc@dý@Mw@dú@eD@YÍ@eC@[±@%\U@eG@OW@dû@dü@eA@Wv@Y«@eR@eI@J©@Jº@eK@X§@eE@JŸ@eL@%Pâ@eJ@eY@eX@eN@dù@eH@PL@eQ@eZ@Q¤@eO@LÄ@eM@Z|@eT@eU@%eW@eg@PÅ@ee@eP@e[@Hð@e\@[E@e^@e_@ea@Q’@Tµ@e]@eb@ec@%eS@eV@NQ@e`@Nö@ed@ef@ej@en@IÚ@eh@LN@ek@el@[a@R¢@ex@%Mà@ei@ZC@et@ew@ep@eo@Ta@er@ey@Jh@es@X‘@em@J˜@ev@ez@%V³@XM@eu@e|@e{@e~@eq@e}@e@Rj@TW@JÍ@NV@X¿@f¢@SW@Zœ@%f£@f¤@SÚ@P@f¥@f¦@X©@TX@Lç@f§@[¸@[ž@JÊ@I¼@Wã@Sæ@W‚@%Jô@V`@NÞ@eƒ@e„@Y‹@e†@Jø@e…@YS@Uá@IÏ@e‰@e‡@eˆ@[²@eŠ@%e‹@eŒ@e@f®@SY@KÍ@Yò@K@Ny@f°@Yâ@Wâ@R·@R_@K½@\¸@Ih@%Io@Iq@SŸ@Ip@RK@[Q@fD@MÀ@V¹@fE@fG@fH@fF@fI@fK@fJ@fL@%UÎ@\´@R’@RE@S÷@fM@RÉ@fN@fO@fP@Lu@L›@fQ@Tƒ@fS@M£@Y–@%H°@fR@fT@KJ@QÇ@T‰@fU@VN@b@Z`@]{@WA@[¬@T”@]@N„@M¹@%bƒ@XK@b@Ug@M¸@YT@b‚@Té@MO@OM@Jx@WÚ@V¿@b‰@bŠ@W•@V¬@%N²@b‹@bŒ@XÙ@Sú@Lz@T@YÉ@WÕ@b…@b@U“@Ja@bˆ@Sâ@b†@gS@%b‡@US@S‡@MU@R[@b„@S]@QD@QØ@IÖ@bŽ@NF@R¬@b‘@OÙ@bœ@b–@%MÒ@Lp@Zm@[Í@[s@Ma@[T@Yx@X¸@T—@T©@I³@Rz@b@b@b@LH@%b˜@b•@LZ@SB@b—@S}@I§@Sû@Rß@\B@Pà@bš@b›@bž@V¨@b”@Z^@%Ic@gT@b’@b“@b™@X¹@SÂ@Zò@bŸ@O@b¦@b¥@Y”@b¢@b¨@Tö@XT@%b§@b­@Qä@K³@O“@b¡@Mè@b©@b«@Kü@[Ý@b±@b¬@b @N@W}@TB@%Si@Q˜@b£@TS@OL@O]@b¤@\g@Iá@bª@NÂ@b®@NŒ@b¯@SH@b°@[„@%PC@b¹@b¶@bº@b¼@SÕ@MÅ@PÊ@L @b³@Z @M¢@OŸ@b»@W_@Rø@Xœ@%U‡@Z_@Xq@b²@b·@b¸@Vè@VÍ@PÓ@b´@QP@bµ@WÏ@Na@Ks@Tò@OG@%[g@UL@L¡@bÉ@bË@Yd@Y¹@M¬@MÓ@bÂ@KŽ@\m@b¿@Xž@b¾@Q|@VÉ@%Uæ@RÖ@VÓ@bÇ@bÆ@bÀ@bÃ@KM@Zy@bÅ@Yø@Jâ@NT@U@J½@N@Ym@%Vì@gU@T†@Z§@bÊ@\u@bÁ@OE@bÄ@Z‡@bÈ@U™@b½@Z†@TŸ@KÈ@Zû@%I²@bÖ@WÁ@bÌ@W»@LÚ@bÕ@Pj@Zn@R@Sh@b×@Wd@bÎ@bÓ@bÔ@Mý@%X‡@[_@bÑ@bÏ@bÍ@W†@U©@P¢@OF@bÒ@LÇ@bæ@Z³@bÚ@Q@bè@Yæ@%bÞ@bß@XJ@V}@bÙ@bÐ@bä@TÛ@bâ@Ræ@bá@bà@J@bç@K‚@\l@bå@%NL@\r@VÎ@f™@bã@M—@[Ì@bØ@bÛ@Qù@bÝ@QÊ@PÃ@QÏ@I–@V±@Kn@%bî@S®@Sà@bô@Q¨@Pë@Y}@bí@R­@bì@bõ@bó@Qý@bÜ@bï@Uý@[d@%bð@Y›@bê@bë@bñ@Wª@Sk@TQ@Q¹@bé@Qj@Vµ@JQ@bú@bò@bù@bü@%bû@Jn@JZ@bö@bø@b÷@S@P¼@Zç@cB@HÃ@cD@cC@N£@cE@cA@bý@%I•@cH@cI@cF@cG@cJ@SØ@cK@cM@cL@cO@cN@M@cP@cQ@N‘@fà@%R‘@Kf@Nr@QŠ@Zí@OÃ@\f@ZÕ@IÒ@f½@eÀ@Q®@Jµ@Yw@JT@T±@P[@%f¿@[Ê@f¾@fÀ@fÄ@Oå@V¾@Sz@O»@fÅ@IŸ@fÃ@[H@K„@fÁ@QV@J„@%fÂ@VX@PÂ@Vý@Qr@fÇ@Må@PÒ@[ñ@Yl@P^@LS@Uu@fÆ@Nƒ@VË@Ož@%TÇ@XI@WŠ@SŒ@LŠ@Yi@M·@fÈ@fÉ@N`@fÊ@fá@IZ@Ly@OY@fË@Y‡@%fÌ@Tº@fÐ@fÒ@Nm@Nä@fÎ@UW@RZ@fâ@[u@fÏ@[ò@fÑ@fÍ@fÓ@fÔ@%U_@XH@XÛ@YL@TÚ@fÕ@Wô@Uë@fÙ@fØ@H½@fÖ@f×@fã@T»@Qg@fÛ@%Y@fÚ@Zî@fÜ@^f@fÝ@IL@fÞ@fß@\F@S`@f\@H­@Oó@L·@Y®@HÕ@%Kš@\²@VL@b}@S«@Hå@Sf@fY@fZ@f[@Y`@SC@eñ@R±@R´@PÍ@eò@%RÀ@Wî@eï@eó@U@TC@V×@Wý@eô@eõ@XL@Pæ@eö@K¾@e÷@eø@eù@%eú@eð@T­@aŒ@LX@a@aŽ@\T@a@a@Zl@a’@P’@a‘@Kr@IW@a”@%a“@Mû@a•@MW@OÐ@Rû@MÜ@Of@a–@a˜@K¿@Xa@U§@a—@[™@Z@a™@%a@aš@a›@Pé@aŸ@a @PÆ@aœ@až@a¤@Qt@a¢@a§@Iý@a¡@Rm@IÁ@%a¦@a¥@a£@a¨@aª@XÈ@[ì@RH@a«@Xw@a­@Mî@e@a¬@a©@NK@Z²@%a¯@a®@e‚@a°@a±@a²@V @a³@a´@Xý@QÉ@Z’@W–@d@d‚@OÀ@Qé@%d…@d„@W‡@RU@dƒ@NW@Xv@Q‚@dŠ@d‰@d•@I¢@d‹@d‡@d@dŒ@UZ@%[…@d†@LI@dˆ@d@d”@[è@dŽ@d“@d’@Hß@d–@T“@PÄ@Pì@Q‘@d‘@%d—@V—@d¡@d @\a@d›@dš@dœ@d˜@dŸ@dž@d@Qu@Ty@Sž@Sc@TŽ@%d¢@d¥@d¤@d¦@Mö@d™@d£@Tï@UJ@d¨@M†@YŸ@d§@d©@d¬@d­@QG@%d®@d¯@d«@d³@dª@d°@d´@d±@d²@d¶@dµ@Mo@h«@h¬@S¯@Hé@T¾@%W@WÌ@e°@e±@S¾@JÈ@e²@[ˆ@_š@e³@e´@eµ@LÉ@`P@U–@Vï@U›@%Uœ@Zc@VF@L¥@h­@Ib@cX@Vî@Zi@NÖ@U‹@Kˆ@RÏ@KŠ@g­@NM@d~@%g®@JI@g±@g°@Oˆ@g¯@W¶@So@Q•@^n@g²@Xò@QÓ@Sç@LL@g³@JŒ@%Nœ@g´@d|@gµ@ON@iƒ@Uç@YÈ@hÙ@hÚ@hÛ@Qf@Lì@OÍ@hÝ@SQ@hÜ@%Y’@hß@HË@O‹@YÞ@hÞ@J®@L‰@hå@hä@S¢@hà@há@JÂ@hâ@[@VÚ@%OÑ@N±@hç@hæ@hã@I @[¡@ZX@O¶@T«@hé@Y˜@[Ë@MÚ@hè@Kº@WT@%S¥@QA@hê@hí@hì@hï@hë@N^@hî@V´@hñ@Ju@It@hò@hó@hõ@Jà@%hð@hö@hù@h÷@hô@hü@hø@hû@hý@iA@WÀ@iD@iC@Q—@hú@UÜ@Jð@%I’@V°@iF@iG@iL@[n@iI@T²@iB@iK@iH@iE@iJ@H¨@iM@iO@iQ@%iP@iN@YB@iR@iS@M@Kg@HÖ@HØ@Zì@Kd@Ot@Nj@h¦@LÝ@h§@H§@%h¨@W@h©@hª@S£@[ä@i…@i†@R”@Z{@[Ð@S‰@ZO@Yå@gÀ@Hº@[U@%Yn@Nß@MÏ@P™@LÆ@Ka@Sl@U¡@Rk@gÁ@R¾@K¡@g@RD@[°@X@g@%Sn@KÛ@U @gŽ@g‘@g’@R\@PT@g@g•@g“@[‡@R@g”@g—@[C@YC@%g–@Rp@g˜@P•@Oë@g™@Vö@Y{@\e@[—@g@gœ@gš@g›@gž@O¥@VO@%g @K¼@g¡@R¿@gŸ@O~@IÆ@KÂ@g¤@\¹@g¢@g¥@RŠ@J“@g¦@g£@XY@%g§@Qö@g¨@g©@_ª@S²@Tf@[ô@Ki@VR@gª@WK@g«@[P@g¬@kÃ@^g@%J¢@RL@i‡@U·@YÒ@[©@h“@O×@Oc@h”@KË@Hª@U®@gV@gW@Wø@LO@%P”@gX@Qê@UP@gY@Sõ@PS@g\@S™@Yp@\I@gZ@g[@Yƒ@g_@g`@gd@%gh@gf@gn@[‰@gi@gg@g^@SŠ@SÅ@UŠ@ZÑ@ga@gb@gc@ge@Pø@J @%M‰@gp@gq@gj@go@W÷@VV@gl@gm@X–@gr@Q“@ZR@gk@T¶@Nî@S‘@%gv@K@Q´@H¬@VŠ@IN@gt@WŒ@Kƒ@gu@gs@gw@K›@gx@gy@g|@Il@%S—@Ní@gz@V»@Ié@g{@Rê@JÄ@Hô@g@PÙ@Jç@Sm@g}@Pd@g~@R¤@%g@g‚@g„@Qw@Ng@OX@gƒ@g…@g‡@g†@gˆ@U½@fé@Pð@Uˆ@fê@Sí@%fë@Sì@fì@fï@\‡@fò@fð@fí@fî@\C@U’@V@fó@fñ@XŠ@fõ@S°@%N¿@fô@K[@N—@fö@]˜@Oœ@Qº@f÷@fø@L¢@fù@fú@fû@ZŽ@\­@Pê@%T}@MË@Xâ@V]@WZ@LÐ@I@T@[Õ@Pf@RŒ@h–@Rx@\ƒ@h˜@Js@Tx@%YŽ@[Ç@h™@h—@Nž@Jf@Ou@YÅ@N@XA@h@hœ@hš@Jl@Ut@VP@hŸ@%HÝ@[È@hž@JŽ@kÔ@WÇ@h¡@h @K^@NÙ@N@Lä@RÁ@h¢@VŒ@h¥@YH@%O¾@T@iV@iW@Pu@J¨@iX@W[@Tt@[M@iY@iZ@To@Y£@[Î@i[@Oq@%J¯@O¼@JÛ@WÐ@P@i]@P›@i\@i_@i^@i`@ia@QŸ@QB@Uù@[^@O¹@%O¸@[b@PB@WO@iU@O@KÊ@[ð@jc@jd@LÌ@jf@jg@HÉ@je@ji@V’@%jk@X¥@Ij@jh@jo@Kq@jw@jr@jt@js@Lœ@I_@jn@jj@Kz@jp@jq@%ju@jm@Nâ@Qž@jv@jz@jl@Kh@O@j|@LD@P‘@[ý@WR@Jï@IÞ@jx@%jy@UX@j}@j~@j‚@j@j„@jƒ@j{@P‹@J@j@TI@Nñ@jŒ@M_@j…@%I¬@NŸ@V„@jŽ@jŠ@M|@j@j†@j‡@j‹@Qà@j@j@j‰@Nü@X…@j‘@%jˆ@j“@\M@S©@j”@j’@Q§@LÜ@j–@j•@JÚ@j—@j˜@j™@P¹@Pè@S’@%jœ@j›@J×@jŸ@jš@j@jž@j @j¢@Ni@j¡@j£@I½@j¥@j¤@N­@Rw@%]‚@Pß@jË@\q@L{@jÍ@QC@SÈ@JÕ@[S@jÏ@jÎ@jÐ@Vz@jÑ@ZÀ@[ß@%L@QX@Q[@jÒ@O«@Já@jÓ@jÔ@Oª@jÕ@jÚ@jÖ@jÙ@Mü@j×@jØ@Lá@%VÆ@jÛ@IÙ@Rs@Zâ@PW@jÜ@ST@jè@XU@WÈ@Vx@V˜@O•@\o@PÚ@Xô@%jé@jê@jë@l„@LQ@jì@\Œ@jí@cø@O¿@cù@Më@cú@Xk@cû@Z»@Nµ@%cü@cý@NÌ@TÑ@W²@dA@J¾@dB@UT@LØ@RÈ@\}@QÙ@Lw@[¼@WÅ@Ld@%SF@dC@X@dD@dE@dF@QW@\Š@U‘@XX@[®@[Ô@dG@Hì@dH@dI@U|@%Yî@O¬@dJ@Hò@TÝ@O‚@dK@TÅ@dL@N‡@L÷@YD@dM@Qæ@O÷@Oj@WS@%dN@dO@Oí@Xä@Vˆ@VÏ@NË@dP@N§@Xö@dQ@X÷@dR@dS@JÁ@dT@dU@%UŸ@W«@R@dW@Ia@J’@dX@dY@\{@[`@dZ@QË@\Z@d[@d\@d]@Né@%R†@PÁ@d^@d_@N¨@d`@da@dV@KÏ@db@dc@dd@NZ@K~@QÅ@I@de@%Z´@df@L¾@dh@dg@L@di@I÷@dj@dk@dl@dm@dn@do@dp@ZG@V–@%dq@dr@ds@dt@Ui@du@dv@dw@dx@dy@Oi@dz@j^@LÖ@T°@j_@j`@%ja@M~@W™@\ç@M°@QÝ@g¶@LC@g¸@g·@HÔ@gº@[v@\@[Â@g¼@Uï@%g»@g½@g¿@g¾@Y“@T\@R`@Là@Qˆ@jÅ@XÞ@jÆ@X{@T¹@jÇ@jÈ@jÉ@%jÊ@]›@Lý@c’@Z‘@jß@WË@J‚@iT@Yí@jà@X‰@já@Tl@Kt@Jã@jã@%jâ@jä@jå@jæ@M±@H¾@jç@LM@Yì@Yª@PÎ@P\@fC@[@eÇ@i”@K÷@%VC@RÌ@iˆ@i‰@Lú@iŠ@MÃ@ZÄ@HÑ@i‹@iŒ@i@iŽ@i@i@i’@i‘@%Su@i“@Kù@i•@Y­@_Æ@Vj@J|@KB@MB@Ró@i–@i—@Qd@Qœ@[¯@i˜@%i™@QJ@S·@OÚ@iš@JÎ@i›@gR@gQ@V@YÝ@Va@[x@Tá@PÞ@N @fa@%X£@[á@KÆ@L×@f`@LÍ@f_@JF@Mi@[ª@L•@Lj@Næ@L^@ff@fg@H¸@%Po@fe@Zž@fh@fi@Ln@fb@fd@U—@[Ö@[m@X±@fo@W·@fp@KH@IS@%fr@V¤@Sv@fs@fq@S@fn@U£@fu@Hú@Mù@\¶@i„@fj@fk@fl@fm@%fv@c¿@fy@P‰@YÇ@fw@f|@Lë@fx@OZ@X×@H¶@f}@RÛ@[«@Jß@Qõ@%N¸@fz@f{@Zß@Sé@RÓ@f@SG@]–@I°@f…@Oe@fƒ@f„@L«@Wq@f†@%f‚@QS@S¡@Vò@f‡@P¯@Y·@fˆ@L®@L¬@f‰@T[@W”@f‹@fŒ@fŽ@XÇ@%f“@f@f’@Tø@Y@f@fŠ@L¸@Xy@Rä@f@f‘@VÙ@Wh@Hñ@f—@f–@%I±@Lß@f˜@I@VÄ@R£@XE@fš@f¡@S“@f›@Ue@aÞ@fŸ@Wn@f @I{@%ZW@YÛ@fž@fœ@J\@e¯@\t@jª@J•@[À@[Á@[Š@OÉ@j¦@Y§@j§@j¨@%j©@OÊ@Z@U@U‚@jb@Uå@Vñ@aµ@VT@Wç@[Ú@j¬@j­@j®@j±@M¼@%j²@Hâ@j¯@j°@OB@IÔ@jµ@j¶@Kå@I¯@Xo@j³@J«@j´@j·@j¸@WG@%j¹@jº@j»@Vr@j¼@j½@j¾@jÝ@Q\@Nç@UK@Y~@c–@^²@YÔ@^³@H«@%^´@Oz@^¸@\Á@^¶@Z”@Uv@^¹@^µ@^º@RB@^»@^Ä@^¼@WÞ@[¤@^Î@%^Ì@^Ñ@O‡@Qª@^·@^Ê@^Í@^½@Lr@HÄ@^Æ@X½@^À@NH@L\@^Ë@^Å@%^¾@T{@Y_@^¿@^É@^Ï@W¬@^Á@^Â@^Ç@^È@IÓ@^Ð@Vu@Z¶@^Ú@^Þ@%V¥@^å@Rˆ@^Û@Pa@^Ø@Hù@MV@^ä@^Ò@^Ã@^Õ@Tó@P@U[@I]@ZB@%^Ù@^Ô@Sº@^Ý@\b@RO@LV@Tq@RI@^á@^×@^ê@^Ó@^Ü@O¤@^Ö@^ß@%^â@^ã@^÷@^à@_B@^æ@Nê@JÃ@RC@Iæ@^ù@^ñ@^î@^û@^í@Yï@Iç@%TÖ@Tâ@^ú@^ì@^ö@^ô@O¢@^ó@IÜ@^ò@Nõ@^ç@Nd@Pò@NÓ@^è@^é@%^ð@^õ@^ø@KT@TØ@Nˆ@^ý@^ü@ZK@_A@_C@_E@Yð@_D@_F@_G@Y¨@%MÈ@_I@_V@_Q@_T@_P@SÍ@Pñ@UO@^ë@_N@_W@^ï@_O@_X@_L@_Y@%_S@_M@R©@_H@P²@QK@_J@_K@_R@N’@_U@ZH@_Z@_[@RG@_r@_\@%_q@M]@OÔ@Où@MÉ@_j@_e@__@IÊ@_c@_k@I£@_u@_^@SÏ@_p@_t@%Qƒ@Lf@_n@_o@_d@_]@_m@VÐ@_i@_b@Rh@S»@W­@_l@_h@_a@_f@%QÛ@ZI@ZJ@_s@X•@T÷@_‡@_g@_@Qã@_‚@_w@[÷@_y@_x@Lï@_v@%SÎ@K¬@_ƒ@Mø@Zà@_ˆ@JÏ@_z@Pœ@_„@_@_}@Ky@_{@_|@_~@OO@%_…@_†@_–@Ri@Vƒ@_“@\à@SÐ@_•@[•@_”@_‘@_@_@_‰@Xí@T×@%_@_Š@_‹@V“@_Ž@Im@Pµ@Nº@_’@_˜@_—@_Œ@S@_œ@_£@_¢@_™@%R@Qú@[‚@W´@_ž@IË@Rç@UÞ@T^@_›@_@_Ÿ@_¡@H©@In@_«@_¥@%OV@Tî@_ @_¤@_¨@_§@_¦@_¬@ZË@_²@_©@_­@PØ@IA@_µ@_°@_±@%YF@_´@_®@_¯@X¼@_³@Uì@_¸@_·@_¶@_º@O†@I×@R‹@_¹@SZ@_»@%VØ@LJ@Zä@_¼@_¾@R¡@_À@_½@_¿@[Z@_Á@i­@NB@Q±@SP@QÆ@i®@%Xè@Z}@f]@J‡@i¯@i°@U¬@Mæ@i²@i´@i³@V…@XZ@i±@U³@YÎ@Që@%WÂ@i·@Hõ@i¶@i½@IÎ@Ya@i¹@i»@Zè@iº@iµ@i¾@i¼@i¸@iÆ@iÃ@%iÅ@iÉ@iÁ@i¿@iÄ@[ú@iÀ@Tš@U@iÇ@Mf@KP@iÂ@iÈ@iÏ@iÕ@Nw@%iÔ@W|@[ê@iÑ@iÓ@Lñ@iÊ@iÍ@Qø@[}@iË@iÌ@iÎ@iÒ@iØ@Z\@Ké@%Uð@L…@iÖ@i×@iÙ@iÜ@iÚ@iÛ@Yq@iÐ@Wi@WÎ@[¨@iâ@R{@iß@P®@%ië@iÝ@ià@iç@iá@iæ@iå@iè@iÞ@iã@ié@ZL@iä@Iô@iñ@Xª@iô@%Nh@iø@iï@iõ@i÷@iù@iò@ið@Mú@Kœ@iî@iö@iì@ií@iê@jF@jC@%jB@ió@TÙ@iú@jE@R™@iü@jG@jI@jD@iû@jK@jJ@QÜ@jN@jP@jA@%jQ@jL@jO@iý@jM@jR@jT@jH@jS@jU@X¶@jX@]š@jY@jW@Tã@jV@%jZ@j[@J¿@gÂ@j\@j]@YJ@j«@XÅ@XÏ@Y|@Xn@Ov@Yc@Má@aŠ@YÁ@%ib@I¸@IŽ@ic@U`@Jd@]“@VE@id@[Ó@ie@j¿@if@Z«@ig@H¿@jÀ@%jÁ@Jû@S{@Vº@Xã@W@ih@]”@I[@XN@L£@ij@ik@IÂ@Qq@\P@ii@%il@in@]—@Yà@Z¢@jÂ@T¸@jÃ@im@io@P„@ip@it@iv@iq@Uq@S‚@%Qâ@M@is@iu@Ms@i{@MÕ@Hü@iy@ix@ir@iz@iw@Të@Wj@i}@c]@%i|@i~@i@X†@jÄ@O”@i@i‚@Wö@Y©@iœ@L±@Nú@M{@M‡@Ry@UÒ@%eç@P¿@Oô@eè@eé@eê@eë@eì@eí@eî@Og@kœ@kž@kŸ@k@Oƒ@k @%J¤@k¡@k¢@f±@Yt@]‹@k£@g¹@[R@ZŸ@VÛ@UÃ@c`@k¤@O®@S¨@]¤@%NÅ@K¨@L»@TÎ@N¤@]¥@]¦@VÕ@TÂ@]§@Sü@YU@Yè@YV@NÆ@OR@N…@%]¨@]©@Yh@]ª@Xì@Kî@QÚ@Vo@LŽ@U‰@Lc@Oö@[£@]«@]¬@S¿@\ˆ@%Uµ@[I@V@[@]­@[Þ@JÉ@]¯@]®@Yê@]°@]±@]²@UÓ@]³@Uª@]´@%]µ@Jo@[î@]¶@NP@KN@]·@]¸@M@YO@Yç@]¹@LÂ@X‹@Iî@]º@]»@%OŒ@WÛ@Z@]¼@Wò@]½@Zu@N†@]¾@VU@Vp@]¿@TŒ@[í@]À@SU@KÀ@%]Á@Ll@Pn@]Â@]Ã@VM@]Ä@K˜@]Å@Qb@\[@]Æ@V·@Yé@R°@]Ç@Kž@%Nq@]È@X²@]É@]Ê@W¼@]Ë@]Ì@]Í@Iö@]Ð@]Î@Y‰@]Ï@Ru@]Ñ@]Ò@%]Ó@]Ô@Xº@Y¤@Hø@]Õ@TK@]Ö@O˜@RA@]×@]Ø@Rž@V¶@]Ù@]Ú@P½@%SÖ@]Û@]Ü@TT@]Ý@]Þ@Mh@NŽ@K¸@j÷@jø@W„@kY@f@X”@N_@M¿@%Z¤@ay@k•@IJ@Iñ@k–@k˜@MÐ@k—@RR@kš@k™@IT@[‹@L¹@MQ@IÅ@%Zï@Xm@HÛ@[k@N–@[É@LW@V¯@Sµ@I‚@MZ@[û@M‚@LA@Nù@eÙ@eÚ@%Vø@M”@eÛ@Jú@RS@Lq@M×@eÜ@Zó@eÝ@NÕ@N@eÞ@Q~@Q·@ZÞ@\j@%eß@eà@eã@eá@eâ@U~@L²@KÃ@eä@Ué@Um@JÌ@aØ@Sƒ@eå@P´@\X@%eæ@\L@Tû@\Ò@\Ì@ZÝ@Zø@Ud@ZN@LÒ@J@Uƒ@jõ@MÔ@jö@\@jð@%L¯@[t@LÎ@Sï@Jc@jñ@JL@Z¼@T˜@jó@jò@VÊ@T£@jô@\„@S_@k`@%k[@kc@kb@[¹@ka@Z½@kd@kl@HÎ@K™@ki@kj@S|@ke@kf@kg@kk@%Oß@kh@Lù@kp@ks@Pˆ@M“@k\@km@Q¶@V÷@Nø@kn@ko@kq@Kä@kr@%ku@k]@kt@Z[@J@V£@kv@kw@Oà@kx@VÞ@k{@IÇ@\y@ky@kz@k|@%kƒ@k@k@k}@k‚@k~@k…@k†@Vâ@c_@KX@k„@k‰@V¢@k‡@kˆ@k^@%Id@k_@Ke@Iã@k@kŠ@KÖ@kŽ@k‹@kŒ@JÙ@Zé@k@Jš@k@k’@k‘@%k“@k”@UŽ@MJ@Tœ@Kâ@VÈ@e¥@JU@Zý@M@Xø@eŽ@\J@e@QÕ@Tì@%Mã@e@e‘@e’@[à@e“@e”@e–@e•@e—@e˜@T‚@e™@Z×@eš@On@e›@%eœ@Oo@e@L§@Q^@ež@IR@Nt@M–@eŸ@e @e¡@e¢@L™@N¬@Uã@`Í@%Z®@X]@[W@e£@[~@e¤@XÀ@M\@JÆ@Iy@P°@I‡@Iˆ@I‰@J]@Tç@ca@%I@Qi@Jî@TH@Zx@Sø@YX@Mž@Qô@ZM@ZÊ@O@cb@LU@cc@NY@[ƒ@%O™@Zµ@W¤@QL@Jy@Võ@cf@cd@ch@cj@cg@Ko@SÇ@K@ce@Uõ@ci@%Rt@Ie@N¢@\W@Wk@Vm@UÉ@VÒ@cl@ck@Rå@YA@YW@cm@cp@WX@[ï@%co@K}@W^@cq@K¹@WH@M…@UÄ@Jq@Vy@Zë@cr@L‹@cn@cu@Jý@cv@%cs@ct@YÜ@QÞ@If@Zƒ@KÜ@V@cw@Z—@IŠ@Kó@cz@cx@cy@K`@YÄ@%c|@c~@c}@TR@Y¢@c{@Zá@[z@c@\’@c‚@I|@Yœ@cƒ@c…@c„@c†@%Y×@Kk@d@]ô@]÷@]õ@]ö@]ù@XÎ@RÆ@Hí@X¯@]ø@Zj@M©@^B@T’@%]û@]ú@U{@]ü@^A@\~@]ý@Qz@^E@Z•@^G@^D@^H@O\@PÈ@^C@^F@%[¢@^I@^M@^N@^L@MÁ@PD@^K@^J@ZÆ@I¾@^O@Mš@^P@J[@KF@K»@%^Q@Kô@^R@Ii@^T@^S@^U@^W@^V@^X@^Y@^Z@Zo@jù@T–@\c@S…@%jû@jü@jú@OÅ@Xî@Ls@ZÌ@V©@kB@kA@M§@jý@Vv@kD@PÑ@J‹@WJ@%kE@kC@OT@kH@kI@Om@RX@P‚@V‚@kJ@kF@kG@Rï@kL@J»@\Ž@JÖ@%kK@kN@kM@kO@XÐ@Rq@T¨@kP@kQ@kR@kS@kT@kU@kW@kV@kX@IÈ@%Zt@UÌ@Pî@[×@Y¯@Q_@O‘@L©@N÷@kÅ@kÆ@kÇ@kÈ@kÉ@kË@kÊ@lŠ@%kÌ@kÍ@gÃ@gÄ@gÅ@[Œ@K£@gÇ@gÆ@gÈ@gÉ@TE@gÊ@gË@LP@K—@gÌ@%gÎ@gÍ@LÅ@gÏ@gÐ@gÑ@KÚ@JN@[Ò@RÅ@IU@LÕ@gÒ@gÓ@Z¾@Tu@Oú@%WØ@MS@gÕ@gÔ@g×@gÖ@SE@gØ@gÙ@TN@gÚ@TO@gÛ@I¦@gÜ@gÝ@gÞ@%gß@gà@\‹@gá@gâ@N×@gã@Zk@Vù@I«@Q†@gä@TF@RM@gå@gæ@gç@%gè@gé@gê@gë@gì@gí@gî@gï@gð@gñ@gó@gò@gô@WM@QÀ@gõ@gö@%g÷@[A@gø@XS@gù@gú@gû@gü@hA@gý@hB@Lô@R›@hC@hD@Ob@Y¾@%Iø@hE@hF@hG@Y÷@hH@[ü@hI@SË@hJ@hK@QT@hL@X›@V™@hN@hM@%J›@M™@hO@hP@Xá@hQ@hR@L‡@X¾@hS@hT@hU@Tð@Vß@hV@hW@hX@%hY@hZ@[@h[@Jì@RJ@h\@h]@h^@h_@Wü@h`@Qß@J·@\V@O–@Xg@%hc@ha@hb@hd@K¦@Nû@Oá@Rl@he@hf@hg@ho@hh@hi@hj@Tb@h’@%KÌ@hk@hl@hm@KÅ@R^@hn@hp@hq@hr@[“@hs@Rö@ht@R÷@hu@hv@%Lã@Hö@hw@hx@hy@hz@h{@h|@h}@h~@O´@h‚@h@h@hƒ@h„@Qm@%h…@h†@h‡@hˆ@h‰@hŠ@h‹@hŒ@h@P×@hŽ@QM@h@h@h‘@Xƒ@JD@%Re@be@Ua@bf@Iu@WÉ@J²@Tñ@bg@Xp@bh@Nã@bi@bj@Rf@[B@RÕ@%MŒ@WÄ@bk@R—@bl@LG@Lò@MÑ@bm@bn@ZÃ@bo@bp@Yk@bq@br@bs@%bt@Yv@bu@Iú@Pº@bv@Pª@bw@bx@by@bz@b{@L¶@]á@KÒ@]ã@]â@%]å@Tí@]ä@L`@Y•@Yô@[”@Ow@\‰@]ç@]æ@H¡@Ws@]è@L¼@NÉ@Q¼@%Q£@Jb@]é@Q©@R¯@OU@X~@]ê@Ub@I}@]ë@K·@Z¹@Jž@]ì@ZÈ@Xu@%S„@]í@]î@]ï@Q‹@VÔ@X}@Zˆ@Q @]ð@V†@]ñ@V‡@Yý@Ló@]ò@H®@%XV@[o@VŽ@]ó@bd@QE@k¾@k¿@kÀ@RÐ@T·@Y„@XÚ@Ye@N®@Mm@h•@%JÅ@ZZ@kÁ@Jœ@kÂ@K’@kÄ@Z‹@k¦@YI@k¨@k§@Q„@PÖ@IB@Wì@Xç@%kª@X—@k©@[‘@k«@RY@N•@k­@k¬@RÝ@Qx@VJ@X\@k®@k¯@k°@Qµ@%HÓ@Sš@k±@T@k¥@O·@O±@K†@Lg@P_@Rr@R‡@\Ë@Lî@Oš@YE@HÏ@%lP@lQ@X«@H¯@lR@lS@lT@Tj@OÎ@lW@lV@I~@lU@lX@lY@W£@TÌ@%Mª@d·@d¸@d¹@OÁ@Yó@ZÎ@Ux@Y²@K¤@T‹@i@X@VS@Xê@d@Wˆ@%Mk@KØ@iž@Hã@Vl@iŸ@Z£@Q¬@Q@SÃ@O°@i @NÔ@i¡@i¢@i£@YÂ@%S´@Wg@i¤@ZQ@Pe@Vá@i¥@i¦@Yu@Kí@i§@i¨@K@i©@iª@Iû@i«@%i¬@T¦@Lˆ@f¨@f©@fª@f«@S­@f¬@f­@Li@U²@a·@lo@lp@IÌ@lq@%ls@lr@aº@N¡@a»@a¼@a½@a¾@a¿@aÀ@LY@Yú@OD@UÍ@IE@Vg@aÁ@%Kû@TÃ@aÂ@Oh@Iž@aÃ@Kõ@aÄ@RØ@aÅ@Xz@M}@aÆ@P @aÇ@Iõ@aÈ@%Q”@aÉ@aÊ@Q÷@aË@aÌ@aÍ@UÖ@\·@]†@X„@h¤@^¯@Qì@Z¥@Wt@YQ@%J{@Tž@I´@Q¾@cß@Uº@cà@cá@OÓ@câ@\D@Wu@cä@NÜ@cã@cå@cæ@%Qí@O^@cç@Qå@M¦@cè@cé@Jr@YŠ@PE@cê@Sî@cë@cì@cí@S¬@cî@%UG@cï@cð@cñ@cY@cò@có@Qá@cô@cõ@[ç@cö@c÷@Mg@l[@lZ@l^@%l\@M @l_@l`@lb@la@ld@lc@le@lf@lg@V‰@LÞ@lt@lu@lv@lx@%lz@lw@l{@ly@\w@l|@l}@l~@l@l@^k@\©@c˜@MŽ@Pž@N‹@li@%SÆ@lh@lj@ll@lk@lm@W¹@ln@R¦@Z„@kÎ@Q²@kÏ@kÐ@kÑ@kÒ@kÓ@%kÕ@IK@kÖ@k×@kØ@kÙ@kÚ@kÛ@kÜ@kÝ@Xj@kÞ@kß@kà@ká@kâ@kã@%Pï@kä@kå@kæ@kç@kè@ké@kê@kë@kì@kí@kî@kï@kð@kñ@kò@kó@%O§@kô@kõ@kö@k÷@Tù@kø@kù@kú@kû@kü@ký@lA@lB@lC@lD@lE@%lF@lG@lH@I@lI@lJ@lK@lL@lM@Q{@lN@lO@Rð@h®@N¥@h¯@Rš@%SX@Y[@h°@h±@h²@h³@h´@Y\@Y@h¶@hµ@Z¦@Wr@h·@h¹@h¸@hº@%h»@Lê@h¼@Mç@h½@h¾@Oè@h¿@Kë@hÀ@hÁ@hÂ@hÃ@T´@hÄ@hÅ@hÆ@%S•@hÇ@hÈ@hÉ@l]@hÊ@hË@hÌ@hÍ@hÎ@MÖ@hÏ@hÐ@hÑ@hÒ@hÓ@hÔ@%hÕ@h×@ZE@hÖ@hØ@kZ@Q¸@l…@l†@l‡@lˆ@l‰@Q³@l‹@lŒ@Qò@jï@%jî@Qè@l‚@lƒ@Nf@]…@Uñ@Pç@h£@MÙ@TM@R«@l@lŽ@l@l‘@l@%l’@l•@l”@l“@l–@l—@gŠ@g‹@gŒ@k»@k¼@k½@K¥@\½@Md@\º@^°@%Uò@l˜@l™@lš@lœ@l›@Ig@l@lž@lŸ@Sê@f³@J}@k²@k³@Q…@k´@%kµ@k¶@k·@k¸@k¹@T¢@kº@Q›@MH@g‰@M‹@]@vA@vB@vC@vD@vE@%vF@vG@vH@vI@vJ@vK@vL@vM@vN@vO@vP@vQ@vR@vS@vT@vU@vV@%vW@vX@vY@vZ@v[@v\@v]@v^@v_@v`@va@vb@vc@vd@ve@vf@vg@%vh@vi@vj@vk@vl@vm@vn@vo@vp@vq@vr@vs@vt@vu@vv@vw@vx@%vy@vz@v{@v|@v}@v~@v@v@v‚@vƒ@v„@v…@v†@v‡@vˆ@v‰@vŠ@%v‹@vŒ@v@vŽ@v@v@v‘@v’@v“@v”@v•@v–@v—@v˜@v™@vš@v›@%vœ@v@vž@vŸ@v @v¡@v¢@v£@v¤@v¥@v¦@v§@v¨@v©@vª@v«@v¬@%v­@v®@v¯@v°@v±@v²@v³@v´@vµ@v¶@v·@v¸@v¹@vº@v»@v¼@v½@%v¾@v¿@vÀ@vÁ@vÂ@vÃ@vÄ@vÅ@vÆ@vÇ@vÈ@vÉ@vÊ@vË@vÌ@vÍ@vÎ@%vÏ@vÐ@vÑ@vÒ@vÓ@vÔ@vÕ@vÖ@v×@vØ@vÙ@vÚ@vÛ@vÜ@vÝ@vÞ@vß@%và@vá@vâ@vã@vä@vå@væ@vç@vè@vé@vê@vë@vì@ví@vî@vï@vð@%vñ@vò@vó@vô@võ@vö@v÷@vø@vù@vú@vû@vü@vý@wA@wB@wC@wD@%wE@wF@wG@wH@wI@wJ@wK@wL@wM@wN@wO@wP@wQ@wR@wS@wT@wU@%wV@wW@wX@wY@wZ@w[@w\@w]@w^@w_@w`@wa@wb@wc@wd@we@wf@%wg@wh@wi@wj@wk@wl@wm@wn@wo@wp@wq@wr@ws@wt@wu@wv@ww@%wx@wy@wz@w{@w|@w}@w~@w@w@w‚@wƒ@w„@w…@w†@w‡@wˆ@w‰@%wŠ@w‹@wŒ@w@wŽ@w@w@w‘@w’@w“@w”@w•@w–@w—@w˜@w™@wš@%w›@wœ@w@wž@wŸ@w @w¡@w¢@w£@w¤@w¥@w¦@w§@w¨@w©@wª@w«@%w¬@w­@w®@w¯@w°@w±@w²@w³@w´@wµ@w¶@w·@w¸@w¹@wº@w»@w¼@%w½@w¾@w¿@wÀ@wÁ@wÂ@wÃ@wÄ@wÅ@wÆ@wÇ@wÈ@wÉ@wÊ@wË@wÌ@wÍ@%wÎ@wÏ@wÐ@wÑ@wÒ@wÓ@wÔ@wÕ@wÖ@w×@wØ@wÙ@wÚ@wÛ@wÜ@wÝ@wÞ@%wß@wà@wá@wâ@wã@wä@wå@wæ@wç@wè@wé@wê@wë@wì@wí@wî@wï@%wð@wñ@wò@wó@wô@wõ@wö@w÷@wø@wù@wú@wû@wü@wý@xA@xB@xC@%xD@xE@xF@xG@xH@xI@xJ@xK@xL@xM@xN@xO@xP@xQ@xR@xS@xT@%xU@xV@xW@xX@xY@xZ@x[@x\@x]@x^@x_@x`@xa@xb@xc@xd@xe@%xf@xg@xh@xi@xj@xk@xl@xm@xn@xo@xp@xq@xr@xs@xt@xu@xv@%xw@xx@xy@xz@x{@x|@x}@x~@x@x@x‚@xƒ@x„@x…@x†@x‡@xˆ@%x‰@xŠ@x‹@xŒ@x@xŽ@x@x@x‘@x’@x“@x”@x•@x–@x—@x˜@x™@%xš@x›@xœ@x@xž@xŸ@x @x¡@x¢@x£@x¤@x¥@x¦@x§@x¨@x©@xª@%x«@x¬@x­@x®@x¯@x°@x±@x²@x³@x´@xµ@x¶@x·@x¸@x¹@xº@x»@%x¼@x½@x¾@x¿@xÀ@xÁ@xÂ@xÃ@xÄ@xÅ@xÆ@xÇ@xÈ@xÉ@xÊ@xË@xÌ@%xÍ@xÎ@xÏ@xÐ@xÑ@xÒ@xÓ@xÔ@xÕ@xÖ@x×@xØ@xÙ@xÚ@xÛ@xÜ@xÝ@%xÞ@xß@xà@xá@xâ@xã@xä@xå@xæ@xç@xè@xé@xê@xë@xì@xí@xî@%xï@xð@xñ@xò@xó@xô@xõ@xö@x÷@xø@xù@xú@xû@xü@xý@yA@yB@%yC@yD@yE@yF@yG@yH@yI@yJ@yK@yL@yM@yN@yO@yP@yQ@yR@yS@%yT@yU@yV@yW@yX@yY@yZ@y[@y\@y]@y^@y_@y`@ya@yb@yc@yd@%ye@yf@yg@yh@yi@yj@yk@yl@ym@yn@yo@yp@yq@yr@ys@yt@yu@%yv@yw@yx@yy@yz@y{@y|@y}@y~@y@y@y‚@yƒ@y„@y…@y†@y‡@%yˆ@y‰@yŠ@y‹@yŒ@y@yŽ@y@y@y‘@y’@y“@y”@y•@y–@y—@y˜@%y™@yš@y›@yœ@y@yž@yŸ@y @y¡@y¢@y£@y¤@y¥@y¦@y§@y¨@y©@%yª@y«@y¬@y­@y®@y¯@y°@y±@y²@y³@y´@yµ@y¶@y·@y¸@y¹@yº@%y»@y¼@y½@y¾@y¿@yÀ@yÁ@yÂ@yÃ@yÄ@yÅ@yÆ@yÇ@yÈ@yÉ@yÊ@yË@%yÌ@yÍ@yÎ@yÏ@yÐ@yÑ@yÒ@yÓ@yÔ@yÕ@yÖ@y×@yØ@yÙ@yÚ@yÛ@yÜ@%yÝ@yÞ@yß@yà@yá@yâ@yã@yä@yå@yæ@yç@yè@yé@yê@yë@yì@yí@%yî@yï@yð@yñ@yò@yó@yô@yõ@yö@y÷@yø@yù@yú@yû@yü@yý@zA@%zB@zC@zD@zE@zF@zG@zH@zI@zJ@zK@zL@zM@zN@zO@zP@zQ@zR@%zS@zT@zU@zV@zW@zX@zY@zZ@z[@z\@z]@z^@z_@z`@za@zb@zc@%zd@ze@zf@zg@zh@zi@zj@zk@zl@zm@zn@zo@zp@zq@zr@zs@zt@%zu@zv@zw@zx@zy@zz@z{@z|@z}@z~@z@z@z‚@zƒ@z„@z…@z†@%z‡@zˆ@z‰@zŠ@z‹@zŒ@z@zŽ@z@z@z‘@z’@z“@z”@z•@z–@z—@%z˜@z™@zš@z›@zœ@z@zž@zŸ@z @z¡@z¢@z£@z¤@z¥@z¦@z§@z¨@%z©@zª@z«@z¬@z­@z®@z¯@z°@z±@z²@z³@z´@zµ@z¶@z·@z¸@z¹@%zº@z»@z¼@z½@z¾@z¿@zÀ@zÁ@zÂ@zÃ@zÄ@zÅ@zÆ@zÇ@zÈ@zÉ@zÊ@%zË@zÌ@zÍ@zÎ@zÏ@zÐ@zÑ@zÒ@zÓ@zÔ@zÕ@zÖ@z×@zØ@zÙ@zÚ@zÛ@%zÜ@zÝ@zÞ@zß@zà@zá@zâ@zã@zä@zå@zæ@zç@zè@zé@zê@zë@zì@%zí@zî@zï@zð@zñ@zò@zó@zô@zõ@zö@z÷@zø@zù@zú@zû@zü@zý@%{A@{B@{C@{D@{E@{F@{G@{H@{I@{J@{K@{L@{M@{N@{O@{P@{Q@%{R@{S@{T@{U@{V@{W@{X@{Y@{Z@{[@{\@{]@{^@{_@{`@{a@{b@%{c@{d@{e@{f@{g@{h@{i@{j@{k@{l@{m@{n@{o@{p@{q@{r@{s@%{t@{u@{v@{w@{x@{y@{z@{{@{|@{}@{~@{@{@{‚@{ƒ@{„@{…@%{†@{‡@{ˆ@{‰@{Š@{‹@{Œ@{@{Ž@{@{@{‘@{’@{“@{”@{•@{–@%{—@{˜@{™@{š@{›@{œ@{@{ž@{Ÿ@{ @{¡@{¢@{£@{¤@{¥@{¦@{§@%{¨@{©@{ª@{«@{¬@{­@{®@{¯@{°@{±@{²@{³@{´@{µ@{¶@{·@{¸@%{¹@{º@{»@{¼@{½@{¾@{¿@{À@{Á@{Â@{Ã@{Ä@{Å@{Æ@{Ç@{È@{É@%{Ê@{Ë@{Ì@{Í@{Î@{Ï@{Ð@{Ñ@{Ò@{Ó@{Ô@{Õ@{Ö@{×@{Ø@{Ù@{Ú@%{Û@{Ü@{Ý@{Þ@{ß@{à@{á@{â@{ã@{ä@{å@{æ@{ç@{è@{é@{ê@{ë@%{ì@{í@{î@{ï@{ð@{ñ@{ò@{ó@{ô@{õ@{ö@{÷@{ø@{ù@{ú@{û@{ü@%{ý@|A@|B@|C@|D@|E@|F@|G@|H@|I@|J@|K@|L@|M@|N@|O@|P@%|Q@|R@|S@|T@|U@|V@|W@|X@|Y@|Z@|[@|\@|]@|^@|_@|`@|a@%|b@|c@|d@|e@|f@|g@|h@|i@|j@|k@|l@|m@|n@|o@|p@|q@|r@%|s@|t@|u@|v@|w@|x@|y@|z@|{@||@|}@|~@|@|@|‚@|ƒ@|„@%|…@|†@|‡@|ˆ@|‰@|Š@|‹@|Œ@|@|Ž@|@|@|‘@|’@|“@|”@|•@%|–@|—@|˜@|™@|š@|›@|œ@|@|ž@|Ÿ@| @|¡@|¢@|£@|¤@|¥@|¦@%|§@|¨@|©@|ª@|«@|¬@|­@|®@|¯@|°@|±@|²@|³@|´@|µ@|¶@|·@%|¸@|¹@|º@|»@|¼@|½@|¾@|¿@|À@|Á@|Â@|Ã@|Ä@|Å@|Æ@|Ç@|È@%|É@|Ê@|Ë@|Ì@|Í@|Î@|Ï@|Ð@|Ñ@|Ò@|Ó@|Ô@|Õ@|Ö@|×@|Ø@|Ù@%|Ú@|Û@|Ü@|Ý@|Þ@|ß@|à@|á@|â@|ã@|ä@|å@|æ@|ç@|è@|é@|ê@%|ë@|ì@|í@|î@|ï@|ð@|ñ@|ò@|ó@|ô@|õ@|ö@|÷@|ø@|ù@|ú@|û@%|ü@|ý@}A@}B@}C@}D@}E@}F@}G@}H@}I@}J@}K@}L@}M@}N@}O@%}P@}Q@}R@}S@}T@}U@}V@}W@}X@}Y@}Z@}[@}\@}]@}^@}_@}`@%}a@}b@}c@}d@}e@}f@}g@}h@}i@}j@}k@}l@}m@}n@}o@}p@}q@%}r@}s@}t@}u@}v@}w@}x@}y@}z@}{@}|@}}@}~@}@}@}‚@}ƒ@%}„@}…@}†@}‡@}ˆ@}‰@}Š@}‹@}Œ@}@}Ž@}@}@}‘@}’@}“@}”@%}•@}–@}—@}˜@}™@}š@}›@}œ@}@}ž@}Ÿ@} @}¡@}¢@}£@}¤@}¥@%}¦@}§@}¨@}©@}ª@}«@}¬@}­@}®@}¯@}°@}±@}²@}³@}´@}µ@}¶@%}·@}¸@}¹@}º@}»@}¼@}½@}¾@}¿@}À@}Á@}Â@}Ã@}Ä@}Å@}Æ@}Ç@%}È@}É@}Ê@}Ë@}Ì@}Í@}Î@}Ï@}Ð@}Ñ@}Ò@}Ó@}Ô@}Õ@}Ö@}×@}Ø@%}Ù@}Ú@}Û@}Ü@}Ý@}Þ@}ß@}à@}á@}â@}ã@}ä@}å@}æ@}ç@}è@}é@%}ê@}ë@}ì@}í@}î@}ï@}ð@}ñ@}ò@}ó@}ô@}õ@}ö@}÷@}ø@}ù@}ú@%}û@}ü@}ý@~A@~B@~C@~D@~E@~F@~G@~H@~I@~J@~K@~L@~M@~N@%~O@~P@~Q@~R@~S@~T@~U@~V@~W@~X@~Y@~Z@~[@~\@~]@~^@~_@%~`@~a@~b@~c@~d@~e@~f@~g@~h@~i@~j@~k@~l@~m@~n@~o@~p@%~q@~r@~s@~t@~u@~v@~w@~x@~y@~z@~{@~|@~}@~~@~@~@~‚@%~ƒ@~„@~…@~†@~‡@~ˆ@~‰@~Š@~‹@~Œ@~@~Ž@~@~@~‘@~’@~“@%~”@~•@~–@~—@~˜@~™@~š@~›@~œ@~@~ž@~Ÿ@~ @~¡@~¢@~£@~¤@%~¥@~¦@~§@~¨@~©@~ª@~«@~¬@~­@~®@~¯@~°@~±@~²@~³@~´@~µ@%~¶@~·@~¸@~¹@~º@~»@~¼@~½@~¾@~¿@~À@~Á@~Â@~Ã@~Ä@~Å@~Æ@%~Ç@~È@~É@~Ê@~Ë@~Ì@~Í@~Î@~Ï@~Ð@~Ñ@~Ò@~Ó@~Ô@~Õ@~Ö@~×@%~Ø@~Ù@~Ú@~Û@~Ü@~Ý@~Þ@~ß@~à@~á@~â@~ã@~ä@~å@~æ@~ç@~è@%~é@~ê@~ë@~ì@~í@~î@~ï@~ð@~ñ@~ò@~ó@~ô@~õ@~ö@~÷@~ø@~ù@%~ú@~û@~ü@~ý@A@B@C@D@E@F@G@H@I@J@K@L@M@%N@O@P@Q@R@S@T@U@V@W@X@Y@Z@[@\@]@^@%_@`@a@b@c@d@e@f@g@h@i@j@k@l@m@n@o@%p@q@r@s@t@u@v@w@x@y@z@{@|@}@~@@@%‚@ƒ@„@…@†@‡@ˆ@‰@Š@‹@Œ@@Ž@@@‘@’@%“@”@•@–@—@˜@™@š@›@œ@@ž@Ÿ@ @¡@¢@£@%¤@¥@¦@§@¨@©@ª@«@¬@­@®@¯@°@±@²@³@´@%µ@¶@·@¸@¹@º@»@¼@½@¾@¿@À@Á@Â@Ã@Ä@Å@%Æ@Ç@È@É@Ê@Ë@Ì@Í@Î@Ï@Ð@Ñ@Ò@Ó@Ô@Õ@Ö@%×@Ø@Ù@Ú@Û@Ü@Ý@Þ@ß@à@á@â@ã@ä@å@æ@ç@%è@é@ê@ë@ì@í@î@ï@ð@ñ@ò@ó@ô@õ@ö@÷@ø@%ù@ú@û@ü@ý@C[@D\@BZ@B@B{@Bà@Bl@BP@B}@BM@B]@B\@%BN@Bk@B`@BK@Ba@Bð@Bñ@Bò@Bó@Bô@Bõ@Bö@B÷@Bø@Bù@Bz@B^@%BL@B~@Bn@Bo@B|@BÁ@BÂ@BÃ@BÄ@BÅ@BÆ@BÇ@BÈ@BÉ@BÑ@BÒ@BÓ@%BÔ@BÕ@BÖ@B×@BØ@BÙ@Bâ@Bã@Bä@Bå@Bæ@Bç@Bè@Bé@DD@Cà@DE@%Dp@Bm@By@B@B‚@Bƒ@B„@B…@B†@B‡@Bˆ@B‰@B‘@B’@B“@B”@B•@%B–@B—@B˜@B™@B¢@B£@B¤@B¥@B¦@B§@B¨@B©@BÀ@BO@BÐ@C¡@CJ@%BJ@B_@B¡@Bj@B[@% \ No newline at end of file diff -adurpN glibc-2.2/iconvdata/testdata/IBM937 glibc-2.2.1/iconvdata/testdata/IBM937 --- glibc-2.2/iconvdata/testdata/IBM937 Wed Nov 1 23:48:54 2000 +++ glibc-2.2.1/iconvdata/testdata/IBM937 Sat Jan 6 20:35:16 2001 @@ -1,2 +1,2 @@ @@@@7@-@.@/@@@%@ @ @ @?@?@@%@@@<@=@2@&@@@?@'@@@@@@@Z@%@{@[@l@P@}@M@]@\@N@k@`@K@a@ð@ñ@ò@%ó@ô@õ@ö@÷@ø@ù@z@^@L@~@n@o@|@Á@Â@Ã@%Ä@Å@Æ@Ç@È@É@Ñ@Ò@Ó@Ô@Õ@Ö@×@Ø@Ù@â@ã@%ä@å@æ@ç@è@é@º@à@»@°@m@y@@‚@ƒ@„@…@%†@‡@ˆ@‰@‘@’@“@”@•@–@—@˜@™@¢@£@¤@¥@%¦@§@¨@©@À@O@Ð@¡@@ @!@"@#@$@@@@%(@)@*@+@,@ @ -@@0@1@@3@4@5@6@@8@%9@;@@@>@ÿ@?@?@J@?@?@?@j@?@?@?@_@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@%Dj@D`@B¡@Dí@DK@Dî@Cy@Få@Dz@D{@%D[@ES@EQ@ER@ET@GR@EU@Aa@Ab@Ac@Ad@Ae@Af@Ag@Ah@Ai@Aj@%Ak@Al@Am@An@Ao@Ap@Aq@Ar@As@At@Au@Av@Aw@Ax@AA@AB@AC@%AD@AE@AF@AG@AH@AI@AJ@AK@AL@AM@AN@AO@AP@AQ@AR@AS@AT@%AU@AV@AW@AX@AÆ@AÀ@AÁ@AÂ@AÃ@AÄ@AÅ@AÇ@AÈ@AÉ@AÊ@AË@AÌ@%AÍ@AÎ@AÏ@AÐ@AÑ@AÒ@AÓ@AÔ@AÕ@AÖ@A×@AØ@AÙ@AÚ@AÛ@AÜ@AÝ@%AÞ@Aß@Aà@A€@A@A‚@Aƒ@A„@A…@A‡@Aˆ@A‰@AŠ@A‹@AŒ@A@AŽ@%A@A@A‘@A’@A“@A”@A•@A–@A—@A˜@A™@Aš@A›@Aœ@A@Až@AŸ@%A @A†@DZ@DJ@DJ@Da@Dq@Db@Dr@Cw@Cx@D~@D@CE@Cs@DP@Dï@%By@Dk@B¡@DN@F»@FÛ@Dn@Do@Cr@Añ@Aò@Aó@Aô@Aõ@Aö@A÷@Aø@%Aù@Aú@A±@A²@A³@A´@Aµ@A¶@A·@A¸@A¹@Aº@Dñ@Dò@Dð@Dó@FÔ@%FÕ@F×@FÖ@Fï@Fð@Cn@Co@Fî@Cp@CN@Cq@CO@Cd@Ce@FÚ@FÅ@Ca@%DM@FÌ@FË@BO@D|@Cl@Cm@FÈ@FÉ@FÐ@Cc@FÑ@Dh@Dx@C¡@C`@FÆ@%DL@FÇ@Dg@Dw@C]@C^@Ch@Ci@Cf@Cg@FÒ@FÓ@FÊ@FÍ@CM@G@G‚@%Gƒ@G„@G…@G†@G‡@Gˆ@G‰@GŠ@G‹@GŒ@G@GŽ@G@G@G‘@G’@G“@%G”@G•@G–@G—@G˜@G™@Gš@G›@Gœ@G@Gž@GŸ@G @G¡@FA@FB@FC@%FD@FE@FF@FG@FH@FI@FJ@FQ@FR@FS@FT@FU@FV@FW@FX@FY@FZ@%Fu@C·@Fv@C¸@Fx@C¹@Fy@Cá@Fz@Cã@F{@Câ@Fs@Cî@Cé@Cä@Fr@%Cð@Cë@Cæ@Fq@Cê@Cï@Cå@Fp@Cì@Cñ@Cç@Fo@Cí@Cò@Cè@F@F‚@%F„@Fƒ@F|@F}@F@F~@F‰@FŠ@F‹@F·@F`@Fa@Fb@Fc@Fd@Fe@Ff@%Fg@Fn@Fm@Fl@Fk@Fj@Fi@Fh@Ft@Fw@Dê@Dé@Dã@Dâ@Dì@Dë@Dè@%Dç@Dà@Dä@Dá@F…@F†@Fˆ@F‡@Cz@Dæ@Då@Dy@Di@Cv@Cu@Ct@B\@%@@@CD@CA@F¹@D]@D^@D_@Dd@Dt@De@Du@CB@CC@DB@DC@Df@Dv@%Dl@D}@Dc@Ds@Fé@Fê@EA@EB@EC@ED@EE@EF@EG@EH@EI@DG@D@%DH@D‚@DI@Dƒ@DQ@D„@DR@D…@D†@DÀ@D‡@DÁ@Dˆ@DÂ@D‰@DÃ@DŠ@%DÄ@DŒ@DÅ@D@DÆ@DŽ@DÇ@D@DÈ@D@DÉ@D‘@DÊ@D’@DË@DV@D“@%DÌ@D”@DÍ@D•@DÎ@D–@D—@D˜@D™@Dš@D@DÏ@DÕ@Dž@DÐ@DÖ@DŸ@%DÑ@D×@D¢@DÒ@DØ@D£@DÓ@DÙ@D¤@D¥@D¦@D§@D¨@DS@D©@DT@Dª@%DU@D¬@D­@D®@D¯@Dº@D»@DW@D¼@DÚ@DÛ@DF@D½@C¾@C¿@DÜ@DÝ@%CG@C@CH@C‚@CI@Cƒ@CQ@C„@CR@C…@C†@CÀ@C‡@CÁ@Cˆ@CÂ@C‰@%CÃ@CŠ@CÄ@CŒ@CÅ@C@CÆ@CŽ@CÇ@C@CÈ@C@CÉ@C‘@CÊ@C’@CË@%CV@C“@CÌ@C”@CÍ@C•@CÎ@C–@C—@C˜@C™@Cš@C@CÏ@CÕ@Cž@CÐ@%CÖ@CŸ@CÑ@C×@C¢@CÒ@CØ@C£@CÓ@CÙ@C¤@C¥@C¦@C§@C¨@CS@C©@%CT@Cª@CU@C¬@C­@C®@C¯@Cº@C»@CW@C¼@CÚ@CÛ@CF@C½@CÔ@CY@%CZ@CX@CÜ@CÝ@EV@EW@EX@EY@EZ@E[@E\@E]@E^@E_@E`@Ea@Eb@%Ec@Ed@Ee@Ef@Eg@Eh@Ei@Ej@Ek@El@Em@En@Eo@Ep@Eq@Er@Es@%Et@Eu@Ev@Ew@Ex@Ey@Ez@Dm@Fº@Fâ@Fã@FÝ@FÞ@Fß@Fá@Fä@Fà@%FÏ@FÎ@FÜ@LA@LC@LD@iF@LW@LU@LX@LV@iG@Lƒ@iP@iN@L‚@L@%Lá@Là@Lß@Lâ@LÞ@M¡@M¢@Oã@HB@LY@L„@iQ@L…@id@NŒ@kR@HC@%LZ@L†@Lã@ie@HD@iA@LE@L\@iH@L]@L‡@Lä@Læ@Lå@M£@M¤@Oä@%Sý@LB@iB@LF@L_@L^@M¥@Oå@V’@ro@[©@yw@yx@HF@LG@L‰@Oæ@%LH@iI@L`@LŠ@LŒ@iR@L@L‹@M¦@Oç@Oè@Qæ@HH@La@LŽ@M§@M©@%M¨@N@Oé@Oê@Qç@Qè@TA@yy@f@LI@L@L@iS@L‘@L—@L’@L“@%iU@iT@L•@L–@L”@Lé@Lê@Lë@Lì@Lè@Lï@ik@ig@ij@Lð@MC@ii@%Lí@Lî@Lç@if@ih@M¶@i@M³@M·@iš@iŽ@M´@i’@Mµ@M¸@Mª@i‘@%M¹@i•@i™@i–@i“@M«@M­@Mº@M¯@i‹@M²@M°@M±@i›@i˜@i@M®@%iŒ@M¬@i”@i—@i@jH@N£@N–@jI@N“@N¥@N›@Nš@iú@Nž@N™@jB@%jJ@jF@Nœ@NŸ@N@N¨@iü@k^@NŽ@N¤@N@N—@N˜@jD@iý@N@N•@%iù@N‘@jG@N¦@N©@N”@N¡@N§@N’@jE@N¢@jK@iû@N @jA@jC@Oø@%k`@kl@Oð@km@Oë@Oõ@Oî@kZ@Oö@kY@k]@kd@kb@PA@Où@kT@kV@%Oû@Oï@kW@kc@kj@Oô@k\@kU@Oó@kX@O÷@k[@Oò@Oí@Oü@ke@Oý@%ki@kg@kk@Oú@k_@kS@ka@Oñ@kf@Oì@kh@Q÷@Që@mC@mK@Qê@Qò@%RA@mQ@mO@mJ@Qì@mP@mF@Qú@Qñ@Qù@mA@mM@mD@Qõ@mE@lý@Qü@%Qï@Qø@Qî@mB@mG@mN@Qö@Qó@mI@Qû@mL@mH@Qð@Qý@Qô@Qí@Qé@%mR@T[@TE@TU@TZ@o“@o’@o—@o˜@TH@TQ@T^@TR@oŒ@TK@o@T`@%TW@TB@TC@o @V£@TP@TO@oŽ@TS@r@TJ@o™@TY@TX@TN@o‘@oš@%o‹@TM@o›@TV@o@TD@TG@TF@oœ@TT@TI@T]@T_@o–@T\@ož@o@%oŸ@o”@o@o•@TL@rˆ@r{@V—@r@r‡@V–@ry@Vš@r}@rv@V˜@rz@%V@V¢@rŒ@ru@Vž@r‹@V™@r|@V•@rw@rs@r‚@rt@rr@r~@r…@r†@%V›@uÀ@rƒ@rq@r„@V¥@r‰@V¤@rp@rx@rŠ@V @VŸ@Vœ@V¡@V“@V”@%YN@uÃ@u¼@YK@uÄ@uº@u½@YJ@u¾@YM@uÂ@u¸@u·@YO@YP@YL@YQ@%u¶@uÁ@u¿@u¹@YI@u»@[°@[ª@y}@[³@y„@y‡@[¬@[­@y@[«@yŠ@%[±@y‹@y†@[²@yz@[¯@y{@y…@yƒ@y~@[®@y|@[´@y‚@y‰@y@yˆ@%]û@]ø@]ù@}C@|ø@]÷@]ô@|ù@]ö@|ü@}A@}H@}G@}B@]ó@|÷@]ñ@%|ú@]ü@|ý@}D@]õ@]ò@}F@}E@]ú@|û@`B@€v@€s@`C@`A@€z@€w@%€p@_ý@`D@€q@_ü@`G@€t@€u@`E@`F@€{@€x@€y@bS@ƒÃ@bP@ƒÀ@%bR@bT@ƒÁ@bQ@ƒÂ@ƒ¿@cÀ@†È@cÁ@†Æ@†Ç@†Å@†Ä@†É@c¿@‰e@‰f@%€r@‰d@cÂ@fK@‹Z@‹[@gƒ@g„@Žp@Žo@g×@gÖ@A@LJ@Lb@L™@L˜@%Lò@Lñ@M½@M¼@M¾@M»@N«@Nª@N¬@PC@PB@PD@RB@Fñ@o¡@Fò@V¦@%Fô@Fó@uÅ@Fõ@]ý@Fö@LK@Lš@M¿@PE@LL@L@L›@Lœ@MÀ@N­@PG@%PF@PH@Ta@bU@HM@iO@Ló@Lô@MÁ@jL@RD@RC@o£@o¢@V§@HN@Lž@%iV@kn@RE@Td@Tb@Tc@bV@HO@Lõ@MÂ@iœ@N®@N¯@jM@ko@PI@kp@%o¥@o¦@Tg@o§@o¤@Th@Tf@Te@o¨@r@uÆ@yŒ@}I@`H@bW@ƒÄ@LM@%L[@V¨@YS@^A@iC@LŸ@Lø@Lö@L÷@PJ@LN@LO@Lc@L @L¡@L¢@iž@%Lù@il@MÆ@iŸ@MÄ@MÅ@i@MÇ@MÃ@jN@QÎ@jO@jP@N±@N°@N´@N²@%N³@PP@PO@ku@kr@ks@kq@PQ@PM@PL@PN@PK@PR@RG@mS@kt@RL@%mT@RH@RK@RJ@RI@RF@o«@Tk@o®@Ti@oª@Tl@Tj@Tm@o¬@o­@o©@%o¯@YW@V©@rŽ@r@r@r‘@Vª@YT@YU@YV@[¶@yŽ@y@y@y@[·@%[µ@}J@}K@^C@^B@~â@`I@`J@`K@`M@€|@€}@`L@bX@bY@‹\@Žr@%Žq@B@LP@Lû@Lú@MÈ@i @N¶@N·@Nµ@N¸@jQ@jR@PT@kv@PS@mU@%RP@mV@RO@RM@RN@o°@V«@r“@V®@r’@Wª@V­@V¬@YZ@YY@YX@[¸@%[»@[¼@[º@[¹@}L@}M@€@`N@€~@bZ@†Ê@cÃ@‹]@fß@HT@Ld@L£@%iW@L¤@L¥@Lü@Lý@MÉ@jS@kw@kx@RQ@o±@V°@V¯@uÈ@uÇ@LQ@L¦@%MA@V±@iD@im@MB@i¢@MË@MÊ@i¡@N¹@Tn@r”@[½@}N@^D@ƒÅ@Œë@%HW@L§@ky@mW@V´@V²@V³@LR@Le@EK@Lª@L©@L¨@ME@MD@in@i£@%PX@PU@PW@PV@RR@Y[@LS@L«@MG@MF@jT@PY@HZ@iX@MI@MH@MÌ@%MÍ@jU@Nº@N»@PZ@P[@P\@RS@mX@To@iE@L¬@i¤@jV@jW@kz@k{@%mZ@mY@m\@m[@RT@r•@Tq@o²@Tp@uÉ@Y\@uÊ@}O@^E@`O@‹^@H\@%iY@MJ@Vµ@LT@Lf@L®@L­@L¯@P^@P]@P_@RU@Tr@ƒÆ@eZ@Lg@ML@%M[@MV@MQ@MP@MW@MU@MN@M\@MO@MK@MZ@MY@MX@MM@MT@MS@M]@%MR@MÓ@MÙ@MÕ@MÛ@i¥@MØ@MÎ@MÑ@MÔ@MÐ@M×@MÚ@MÏ@MÒ@MÖ@MÜ@%j`@j]@NÈ@j^@N¼@N¾@NÖ@NÑ@je@j_@NÀ@NÂ@jd@NÉ@jZ@NÕ@N×@%N½@NÎ@jX@NÔ@NÅ@NÏ@NÐ@jY@NÍ@NË@NÌ@NÒ@ja@N¿@NÓ@jc@NÇ@%NÄ@j\@NÃ@jf@NÆ@NÊ@NÁ@jb@j[@k@kŒ@Pq@k@k‘@k†@k‰@k@%Pr@kƒ@k‡@k‹@mk@Pm@mo@P`@kˆ@Pa@Pn@Pg@Pc@k„@Pf@Pk@Pt@%k…@k}@Pe@k~@k@Ph@Pj@k|@k‚@Ps@Po@kŠ@Pu@Pl@k@Pi@Pd@%Pb@kŽ@Pp@mj@m^@mm@m`@R\@Rj@RX@Ri@Ra@Rf@RV@m_@me@Re@%mq@Rg@R]@mg@md@R[@m]@Rh@ml@R`@mn@Rk@RW@Rb@R_@mb@Rc@%mh@mi@R^@Rd@RZ@RY@ma@mf@mp@oÆ@T@o´@o¹@Tx@T„@o·@Ts@%T}@Tƒ@o¾@T~@T‚@oÁ@Ty@o¸@oÄ@oÅ@T{@oÃ@Tw@T‡@o»@Tu@oÈ@%o¼@oÀ@Tz@T†@o½@T@oÂ@oÉ@r¤@oÇ@Tˆ@Tt@o¿@o¶@T|@oµ@oº@%o³@T…@rœ@VÈ@rª@VÆ@VÃ@r¡@V¿@r¥@VÊ@r›@r @rŸ@Tv@VÅ@r¨@%r«@r˜@Yn@r¬@VË@V½@Vº@r£@V·@r©@V¾@r­@r™@r§@VÁ@rš@r@%r¢@VÂ@VÀ@VÌ@VÇ@V»@W—@V¼@rž@VÉ@VÄ@r¦@V¹@V¸@r–@r—@uÏ@%Y]@Y`@uÚ@Yt@uÝ@Y^@uÖ@Yd@Yj@ZÂ@Yh@uÓ@Yu@Ya@Yi@uÛ@yž@%uà@uÔ@uË@uØ@uÒ@Yg@uÞ@Yc@Yw@Yp@Ye@Yb@Ym@uß@uÑ@u×@uÙ@%uÍ@uÜ@Y_@uÌ@Yf@Yv@Yr@uÎ@Yl@Ys@Yo@Yk@uÕ@Yq@yœ@y˜@y§@%y‘@yš@[Ë@[Ì@[Ä@y£@[Î@y–@y•@y“@y¥@[Â@yŸ@y”@[Å@y@[À@%y™@y @y¢@y¦@[É@y’@[Ã@y—@[¾@[Ê@y¡@[Æ@[Ç@[Í@[Á@F÷@[¿@%y›@[È@y¤@^U@^P@}^@}Z@}T@^J@^F@}]@^G@}W@}Y@}\@^L@^S@%^M@}R@^N@^O@}U@^T@}S@}X@^K@}Q@^Q@^I@^H@}V@}[@^R@}P@%`V@€‘@€Ž@`P@`\@`]@`S@€Œ@`U@€„@`[@€@`R@€’@`Q@€@€@%`T@€‹@€…@€‚@uÐ@€ˆ@€@€‡@€†@€ƒ@`X@`W@`Y@€‰@b[@€Š@ƒÏ@%ƒÈ@bg@ƒÌ@b_@bc@ƒË@bb@b^@ba@b\@bf@ƒÍ@ƒÉ@be@ƒÇ@bd@ƒÎ@%ƒÊ@`Z@bh@ƒÐ@b`@b]@†Ñ@†Ó@cÅ@†Ô@†Ò@†Ð@†Ï@cÇ@†Î@cÈ@†Ì@%†Í@cÄ@cÉ@cÆ@†Ë@e[@‰i@‰g@‰l@‰j@‰h@‰k@fL@‹a@‹b@fà@‹c@%‹_@‹d@‹`@e\@Œì@Œî@fã@Œí@fâ@fá@fä@Žt@Žu@g†@g…@g‡@Žs@%h@g@gØ@gÚ@gÙ@i@hT@µ@h}@´@ý@iJ@M_@M^@Mß@MÞ@i§@%MÝ@i¦@NÚ@ji@jh@NØ@NÛ@jg@NÙ@k’@k“@Pv@Rl@oÊ@oË@T‰@TŠ@%r¯@VÍ@VÏ@r®@VÎ@uá@Yx@[Ï@[Ð@y¨@^W@^V@€“@ƒÒ@ƒÑ@‘|@Lh@%iZ@io@ip@Mâ@Mæ@i©@Mä@Mã@i¨@Må@Má@Mà@iª@Nå@Nâ@NÞ@jj@%jk@Nà@jm@NÜ@jn@jl@Nß@Ná@Nä@Nã@NÝ@jo@P{@k @P}@P|@k¡@%Pz@Py@k—@k–@k”@k™@k˜@k•@kž@kŸ@kœ@kš@Px@k@P~@k¢@k›@%Rm@Pw@Rn@mv@m|@Rt@mz@m@mw@m{@m}@m@my@mx@ms@mt@Ro@%Rq@Rp@mu@m~@Rs@mr@oÕ@oÔ@oÙ@oÐ@oÓ@oÒ@oÖ@oÚ@T‹@TŽ@oÑ@%o×@T@oÌ@Rr@r½@oØ@oÏ@TŒ@oÎ@r´@VÐ@VÔ@rÄ@r²@rÀ@VÕ@rÂ@%rÈ@rÌ@rÃ@r·@r¿@rÍ@rË@rÁ@r¼@rµ@ué@r³@VÙ@rº@VÚ@VÖ@r°@%rÆ@r¸@r¶@rÉ@V×@rÏ@VÑ@VÓ@r¾@r¹@T@VÒ@r»@rÊ@rÎ@rÅ@rÇ@%r±@uä@uí@uì@Y@uå@Y‚@Y@uç@Y|@uë@uæ@uè@uâ@Yz@uõ@uô@%uñ@Yy@Y}@Y~@oÍ@uî@Y{@VØ@uð@uã@uó@uò@uö@y¶@uï@uê@y®@%[Ú@[Ý@[Ø@y­@y±@y¬@[Ò@[Ü@y©@[Ö@y°@[Ô@[Ó@y³@[Õ@yµ@y²@%[Ñ@[Û@y·@y«@y´@yª@[×@[Ù@y¯@y¸@}f@^X@}l@^]@}h@}o@}`@%^_@^Y@}e@`^@}d@}m@^Z@^^@}c@}i@}n@}_@^\@}g@}k@}q@}a@%}j@^[@}p@}b@`b@€•@``@`_@€—@€œ@€˜@€›@`e@bN@`d@€”@€š@%`c@€™@€–@`a@ƒ×@ƒÙ@ƒÔ@bj@ƒÖ@bi@ƒØ@bl@ƒÚ@bk@ƒÓ@ƒÕ@cÍ@%†×@cÌ@†Ø@cË@†Ö@cÊ@†Õ@e^@e]@‹e@‹g@‹f@fM@fN@fO@Œï@få@%D@C@h~@Li@L°@Næ@m‚@Yƒ@Y„@y¹@^`@}r@€@i[@jp@Hb@k£@%mƒ@oÛ@T@‹h@gˆ@Lj@M`@iq@Mç@Mè@P@VÛ@^b@^c@^a@Lk@L±@%L³@L²@i\@L´@Ma@ir@Mb@Mé@Mê@i«@Nç@jq@P„@k¤@P‚@Pƒ@P@%oÜ@Rx@Rw@Ry@Rv@m„@P…@Ru@T‘@T’@T“@rÐ@Y…@u÷@VÜ@[Þ@^e@%^d@}s@`f@bm@‰m@j@E@Ll@Mc@Md@i±@Mì@Mï@i¯@i­@Mî@i°@%i²@i¬@Mñ@Mð@Mí@Më@i®@Nò@Nï@jv@jy@jx@Né@Nñ@Nî@ju@js@%Ní@Nè@Në@jt@j{@jw@Nì@Nð@Nó@jr@jz@Nê@PŠ@P’@k°@k©@P“@%k´@k¥@k¬@P‰@k¦@P‡@k­@k±@P†@k²@k«@k®@P•@PŒ@kµ@k³@P‘@%P@kª@PŽ@k¨@k§@P@P‹@P”@P@Pˆ@k¯@R{@Rƒ@m’@Rz@mŠ@m†@%m–@m…@R}@m@R@R„@R~@m“@R‚@Tš@m™@m‡@m‰@m@m”@m˜@m•@%mŽ@m‘@m‹@R†@m@mŒ@m—@R|@mˆ@R…@R@T @oä@TŸ@oâ@T”@T™@%oá@oÞ@oã@T•@oÝ@T˜@T–@oå@T—@T›@Tœ@Tž@T@oß@oà@oæ@r×@%VÝ@vH@rÖ@ré@Vã@rç@Vâ@VÞ@rð@rà@rã@Væ@rí@rå@Vß@Vç@rê@%rè@rÙ@rî@râ@rÝ@rÓ@rï@rß@rÒ@Vå@rä@rñ@rá@rÕ@rÚ@rÑ@Vä@%rÞ@rÛ@Và@rÔ@rì@Vá@rÜ@rØ@rë@Y†@vA@uû@vO@vC@vP@Yˆ@vL@%vI@vJ@vM@vQ@ræ@vS@yÍ@Y‰@vT@uù@vF@vK@Y‡@YŠ@vR@vU@uý@%uú@uü@vD@vB@Y‹@vN@vE@vG@uø@yÁ@y¿@[ç@[å@yÉ@yÀ@yÊ@yÆ@%y¾@yÌ@y½@yÄ@[ä@[ã@[â@yÂ@yÇ@[ß@[æ@y»@yÅ@yº@yÃ@[à@yÈ@%y¼@[á@yË@}w@^j@^i@^k@}„@}y@}@}t@}ƒ@}‚@}†@}~@^f@}}@%^l@}v@^g@}…@^h@}x@}{@}@}z@}u@}|@€Ÿ@`j@€¢@€¡@€¤@€¦@%`h@€ @€ž@€§@€¥@€£@€©@€¨@`l@`g@`i@`k@€ª@ƒá@ƒà@ƒß@ƒâ@%ƒÛ@ƒÜ@ƒä@ƒÝ@bn@ƒæ@ƒå@ƒÞ@†Ü@cÐ@†Ú@†ß@†Þ@ƒã@cÏ@†Ý@†Ù@%†á@†à@cÎ@†Û@bo@e_@‰n@‹i@‹j@‹k@fæ@fç@Œð@Žw@Žv@k@l@%F@¶@Lm@Ln@Lo@Lµ@Me@i³@Mò@Mó@Nö@N÷@Nõ@Nô@P–@k¶@P˜@%P—@k·@R‡@T¡@oç@ró@Vè@Y@rò@YŒ@^m@}‡@bp@cÑ@†â@fè@gÛ@%Hg@is@Mf@it@Mö@Mô@Mõ@M÷@Nù@Nø@j|@Nú@j}@k¸@k¹@P™@P›@%P@Pš@Pž@Pœ@R‹@Rˆ@RŠ@RŒ@R‰@oè@mš@oê@oé@T§@T£@T¤@T¦@%T¨@T¥@Tª@T©@Ví@rõ@rô@Vì@Vë@Vê@Vî@Vé@v[@vX@Y@vW@v\@%Y‘@vZ@YŽ@Y@vY@yÎ@yÏ@yÐ@^n@^v@}ˆ@^p@^t@}‰@^u@^q@^r@%^o@^s@`o@vV@`p@`n@`m@ƒç@bq@†ã@†ä@fP@fé@Lp@Mø@R@oë@%T«@Vñ@Vð@Vï@Y’@Y“@v]@^w@br@Lq@i]@L¶@iu@i´@Mù@PŸ@yÑ@%Lr@L·@iµ@j~@j@Nû@v^@Y”@yÒ@cÒ@Ls@Lˆ@L¸@iv@Mg@OB@OA@%Nü@Ný@kº@P¡@P¢@k»@P @R‘@m›@R@RŽ@R@T®@T¬@oí@T­@oì@%T¢@rö@Vó@Vô@Vò@^x@}Š@`q@`r@€«@cÓ@‰o@‰p@g‰@·@iL@L¹@%Lt@ix@iw@Mú@i·@i¸@i¶@i¹@jˆ@jƒ@j…@j‡@j„@OF@j@j‚@OC@%OD@j†@j‰@OE@jŠ@kÉ@kÃ@k¾@P¤@kÆ@kÄ@k½@kÊ@kÍ@kÈ@kÁ@P¦@%kÇ@P§@kÂ@kÅ@k¼@kÀ@kÌ@P¨@P©@k¿@kË@P£@P¥@m¬@m¥@m«@m¤@%m¦@m @mž@m­@mª@mœ@R“@m¨@m©@m§@mŸ@m@R’@m£@m¡@m¢@m®@%T³@T²@oî@T¯@oð@T´@oñ@T·@Tµ@oò@m¯@oô@T±@T°@oï@oó@T¶@%Vö@Võ@rø@rü@sA@V÷@sD@Vû@sF@Vý@Vù@WD@WA@rú@Vø@rù@r÷@%sH@rû@Vú@sG@WB@sC@sB@WC@rý@Vü@sI@sE@vm@vt@vi@Y—@ve@%vu@v_@vr@vp@vj@vs@vl@vd@vv@vb@vo@v`@vw@Y˜@vq@yÕ@vc@%Y•@vg@Y–@vf@vk@vh@vn@yÙ@yÜ@yÔ@yÖ@yÛ@yÚ@[è@va@yØ@[é@%yÓ@y×@}‘@}˜@}@}–@}@}•@}™@}Œ@}@}‹@^y@}Ž@^z@}”@}“@%}’@}—@€¯@€±@`t@€²@€­@€¬@€¶@€´@`s@€·@€®@€³@€µ@€°@ƒë@%ƒð@ƒê@ƒï@ƒè@ƒò@ƒî@ƒó@ƒí@ƒé@ƒñ@ƒô@ƒì@†å@c×@cÕ@cÔ@cÖ@%‰q@ŠÀ@‹l@Œñ@Œò@fê@Žx@gŠ@Žy@n@gÝ@gÜ@m@hU@G@Hn@Lu@%Mû@iº@j‹@OÕ@WE@Lv@Mj@Mi@Mh@OG@T¸@yÝ@Lw@Lx@Ly@Lº@R”@%m°@Y™@Lz@i^@Mk@Ml@iy@Mü@jŒ@OH@j@P¯@kÏ@P­@P¬@kÎ@Pª@%kÐ@P«@P®@R•@R—@m´@m±@m²@m³@mµ@R–@oö@oõ@Tº@T¹@WH@sK@%WG@WI@WF@Y›@sJ@Yœ@vy@Y@vx@Yš@yà@yâ@[ê@yá@yß@yÞ@}œ@%^@^}@^~@}š@}›@^{@€»@€¹@`v@€º@`w@`u@^|@ƒ÷@ƒõ@ƒö@€¸@%†ç@cØ@†æ@‰r@‰s@ƒø@‹m@L{@Mm@NA@i»@Mý@P°@[ë@Hs@L»@Mn@%R˜@Yž@Ht@iz@i{@i¼@OJ@j‘@j@OK@jŽ@j@j’@OI@P´@Pµ@P²@%P±@m¹@P³@R™@m¸@mº@m·@m»@Rš@T½@o÷@où@T»@oú@T¼@oø@m¶@%sL@sO@sP@sM@WM@WL@WJ@WK@sN@WN@Y @Y¡@Y¢@yã@yå@yç@[í@%[ì@YŸ@yæ@yä@} @}ž@}¤@^@}¥@}¢@^‚@}Ÿ@}@}£@`y@€½@}¡@%`{@€¾@`z@`}@€¿@`x@`|@ƒý@ƒû@ƒú@ƒü@ƒù@fR@Œó@Œô@Žz@o@%h¡@Hu@P¶@OL@R›@L|@L¼@Mo@i½@OM@j“@m¼@Rœ@^ƒ@L}@NB@[î@%L~@L½@L¾@Mq@Mp@i¾@NC@j”@ON@kÒ@kÓ@kÔ@P·@P¸@kÑ@P¹@R@%m½@oü@T¾@oû@WO@sQ@WP@sR@Y£@yè@}§@}¦@^„@`~@€À@bs@„A@%cÙ@gÞ@I@Hy@kÕ@m¾@WQ@vz@[ï@e`@e`@Hz@OP@OO@Rž@oý@WS@%X¨@WT@WR@Y¤@}¨@^…@`@iM@i¿@j–@OQ@j•@OR@P½@kØ@k×@P¼@%Pº@P»@kÖ@R @m¿@R£@RŸ@R¥@R¡@R¢@R¤@TÁ@TÀ@T¿@sT@WU@WX@%WV@sS@W[@WW@sU@WZ@WY@v|@v{@Y§@Y¥@Y¦@v}@[ð@yê@[ñ@yé@%€Á@`‚@}©@`@^†@†é@„B@cÚ@†è@‹n@Œõ@Œö@L¿@Mr@i|@OT@OV@%iÂ@j™@j˜@j—@iÁ@iÀ@NE@OU@OS@ND@P¾@kÙ@P¿@jž@j @jŸ@kÚ@%j›@OZ@OX@jš@jœ@j¢@OW@j@j¦@PÁ@j£@OY@j¡@j¤@PÀ@PÂ@j¥@%kî@ká@kß@kí@kè@Rª@PÃ@ké@kì@R¦@kë@PÄ@PÉ@PÇ@kâ@kÝ@kä@%PÎ@kï@R§@kå@R¨@PÊ@kç@mÎ@R©@kÜ@PË@R«@PÌ@PÈ@PÍ@kæ@kÛ@%kê@PÅ@kÞ@kã@kà@PÆ@mÀ@mÁ@mË@pD@mÌ@R±@mÏ@mÅ@R°@mÇ@mÈ@%mÊ@R¬@TÅ@mÆ@mÂ@TÆ@mÐ@TÂ@pB@mÉ@pA@mÄ@mÍ@R¯@TÃ@Rµ@TÄ@%mÑ@pC@R®@TÈ@R´@R³@R²@TÇ@mÒ@TÉ@R­@mÃ@W\@pG@pI@pK@TÊ@%TÐ@sX@pO@pF@W^@sV@TÏ@TÍ@pQ@sW@pH@TÎ@pL@TÑ@pN@TÌ@pM@%pP@pJ@TË@W_@pE@W]@W`@sZ@sc@Yª@Wb@Wg@Y«@se@Wn@v@s[@%Wf@Wi@Wd@sY@sg@sj@v@sh@v„@We@Wl@Wp@sb@v~@sf@Wa@v@%si@vƒ@s^@Y¨@s\@s]@Wk@Wj@s`@Wo@sd@Wh@sa@Wm@Y¬@Y©@v‚@%s_@Wc@Y±@Yµ@v†@[ö@Y³@vŠ@Y·@yë@vŒ@[ø@Y¯@Y²@v@vŽ@v”@%Y¹@[ù@v@v•@v‰@\F@[ú@Y¸@v‡@v–@\E@Y¶@[ó@v“@Yº@v‹@v…@%Y°@vˆ@v‘@[ò@[÷@Y­@v’@[õ@Y®@\D@}«@yö@yî@}ª@yò@yô@yñ@%\C@yð@\G@}º@\B@^ˆ@y÷@}¬@[ý@yï@yó@^‡@[ô@yì@yí@^‰@[ü@%\A@[û@yõ@}°@}±@}¶@`‡@}½@^@^Ž@}¸@`†@}­@^@}¼@^‹@^Œ@%}¹@€Ò@`„@Y´@}»@`‹@}³@`…@`Š@}®@}²@}¯@}µ@^@`ƒ@^Š@€Ä@%}·@`‰@`Œ@}´@`ˆ@€Ã@€È@bw@€Â@„N@€Ñ@`@`Ž@bu@€Î@€Ê@`”@%„E@`’@€É@„C@€Í@€Ð@€Ç@`“@`@„D@bv@€Ï@`@`‘@€Ì@`•@€Ë@%€Æ@€Å@bt@€Ó@„G@†ë@by@„M@„K@†ì@bz@„L@„I@cÜ@†ê@„F@„H@%cÝ@b|@cÛ@b{@cß@„J@bx@‰|@‰t@†ò@‰u@†î@ea@†ð@†ï@cÞ@†í@%†ñ@‰}@‰y@‰{@‰v@‰w@‰z@‰x@fS@fV@fU@fT@fë@Œ÷@fì@‹o@g‹@%Ž{@gŒ@gß@hV@J@K@L@‘ª@LÀ@i}@Ms@NG@NH@NF@NI@O\@O[@%kð@PÐ@PÏ@pR@Wq@Wr@Y»@yø@\H@\I@yú@yü@yû@}¿@}¾@^‘@}À@%€Ô@`–@b}@cà@eb@cá@LÁ@j§@kñ@PÒ@PÑ@PÓ@R¶@mÓ@mÔ@pS@TÒ@%Ws@Y¼@v—@LÂ@L@LÃ@i~@Mw@Mv@Mt@Mu@NL@iÊ@iÌ@NK@iÄ@iÅ@%iË@iÇ@iÉ@NJ@iÆ@iÃ@iÈ@Oc@Ol@Oj@j±@j®@j¶@Oh@j·@Oa@j´@%Og@j°@j¯@Oe@jµ@Of@PÔ@O`@j²@j¨@O]@Op@j­@j³@Ob@Od@j©@%jª@j«@Oo@Oi@On@j¬@Om@O_@O^@Ok@Pâ@ký@kö@PÝ@Pð@kò@kù@%kû@lA@Pë@kú@kó@Pé@k÷@lB@PÚ@kü@Pä@Pã@kõ@PØ@PÙ@P×@Pï@%Pç@Pá@PÕ@kø@Pà@PÖ@Pè@Pñ@mÕ@På@kô@PÛ@PÞ@Pß@Pí@Pî@Pì@%Pæ@Pê@PÜ@R·@mÛ@RÃ@R»@R½@RÂ@mç@RÀ@pT@TÓ@RÅ@mØ@mà@RÁ@%mß@mÜ@mä@mæ@Rº@R¾@RÄ@TÕ@má@R¼@RÇ@mÚ@R¿@TÔ@R¹@m×@mÞ@%mÖ@mÙ@mÝ@pU@RÆ@mâ@mã@må@R¸@Tã@pa@Tá@Tâ@pW@pg@TØ@sk@%pi@pc@pZ@pl@p]@TÞ@sƒ@p`@Tà@T×@pn@pb@TÚ@p[@pX@pY@TÛ@%ph@po@TÝ@p_@p^@Tå@Tä@TÖ@TÜ@Tß@pk@pe@TÙ@pV@pm@pd@pf@%pj@sl@W{@W@W@W„@s~@sz@sw@sŠ@W~@Wv@s|@YÌ@Wz@s…@W‘@%WŽ@s@so@W@s‡@sn@W‚@W†@s†@sx@W‡@W@sm@Y¾@s‰@sv@WŒ@%sy@sˆ@W‹@v˜@Ww@st@W|@Wˆ@Wƒ@s}@ss@sq@s„@Wt@W‰@Wx@Y½@%s‚@Wy@Wu@W…@W@W}@su@WŠ@sr@s@s{@vš@v™@sp@vª@YÀ@v°@%vŸ@v­@yý@YÃ@v±@v´@YÂ@v¢@v³@v²@YÄ@v›@Y¿@YÇ@YÅ@v¯@v¥@%YÉ@v¶@v®@v·@YÑ@YÏ@v¬@v«@v©@v£@YÈ@YÆ@p\@vœ@z^@v@YÁ@%YÎ@zB@YÊ@YË@vž@vµ@zA@v¦@v¡@YÍ@v§@v¤@YÒ@\X@zE@zX@z]@%zQ@\T@zb@\Q@zC@zD@\J@\S@zK@\V@\W@zL@zY@z_@\R@\L@zJ@%zF@za@zO@zP@zG@z[@zR@z\@zT@\M@}Á@\P@\N@z`@zW@zS@zH@%^›@zV@\U@zN@zM@\O@\K@}Ö@zZ@zU@zI@}Ñ@}Â@}Í@}Ô@^™@YÐ@%}Ò@^”@^“@}Ù@}Ã@}Ð@}Ä@}Ï@^—@}Ó@v¨@}Ú@}Ë@^š@€â@`—@}Ø@%}×@^œ@€Õ@`˜@€Ö@}Ç@}È@}Å@}Ê@}Æ@}Û@^–@`™@^˜@^@}É@}Õ@%}Î@€Ù@^’@`œ@„U@€Þ@€Ý@€ß@€Ü@`@hË@`£@` @`¡@€×@€Ú@€ä@%`©@`§@€Û@v @`š@€á@€Ø@`ª@€à@^•@`Ÿ@}Ì@`¢@`¦@`¨@`¥@`¤@%`ž@€ã@`›@`«@b‚@bƒ@„T@bŒ@b‰@b@b‡@„V@b…@b~@b†@„S@cã@%b@bˆ@câ@„R@„Q@bŠ@b‹@„P@„O@cä@„Y@b„@„W@cå@cê@†õ@†÷@%cç@†ø@†ô@†ö@cè@cë@†ó@cæ@cé@ed@„X@ec@ei@‰‚@eg@eh@‰…@%‰@ee@‰~@fW@‰ƒ@‰„@‰@ef@‹p@‹s@‹t@‹r@‹u@fX@‹q@Œû@fî@%Œú@Œù@Œø@fí@fï@Ž|@gŽ@g@q@p@s@hW@gà@N@r@M@hY@%hX@h@¸@‘A@LÄ@v¸@„Z@H‚@NM@j¸@Os@Oq@Or@lC@Pò@RÈ@mè@%mé@RÉ@pq@Tæ@Tç@pp@W˜@W”@s‹@W›@Wš@W“@W–@W™@W•@v¼@W’@%YÓ@YÕ@YÖ@v»@v¾@YÔ@v¹@v½@vº@\Y@zc@^ž@}Ü@b@`¬@€å@`­@%`®@€ç@€æ@€è@„\@„[@†ú@†ù@cì@cí@‹v@LÅ@v¿@YØ@Y×@zd@‰†@%g@O@LÆ@Tè@W@Wœ@vÀ@vÁ@\Z@}Ý@^Ÿ@„]@LÇ@Mx@Pó@lD@mê@%RÊ@Wž@vÂ@YÙ@\[@€é@€ê@†û@ej@‘B@LÈ@lE@Pô@RË@më@Té@pu@%ps@pt@Tê@pr@W @W¡@sŒ@W¢@WŸ@vÃ@vÄ@ze@^¡@^ @†ü@‰‡@‹x@%‹w@Œü@H‡@i_@RÌ@LÉ@My@NO@NN@NP@NQ@iÎ@iÍ@j¹@Ot@j¼@j»@%jº@j½@Põ@lK@lG@lP@Pü@Pú@lL@lH@lO@Pù@QC@lJ@lF@QB@lM@%Pø@lN@Pû@Pý@lR@lQ@lI@P÷@Pö@QA@mð@mö@RÒ@RÏ@mí@mò@RÕ@%RÍ@mñ@RÐ@RÓ@mô@RÎ@mù@RÑ@RÔ@mî@mó@m÷@mï@mì@mø@mõ@Tò@%Të@Tî@Tñ@px@Tì@pv@Tð@Tí@py@Tï@s@W¤@s@s‘@W£@W¨@pw@%sŽ@s’@W¥@s@W§@W¦@vË@vÆ@YÚ@YÞ@YÛ@vÉ@vÌ@YÜ@YÝ@Yâ@zn@%vÊ@Yà@vÇ@vÅ@Yá@vÈ@\a@zf@\^@\_@\]@zk@zj@zg@\c@zi@Yß@%zm@zh@\`@\\@\b@zl@^¤@}à@}ß@}Þ@^¢@^£@€í@€ð@`°@`¯@€ñ@%€ì@`²@€î@`±@€ë@€ï@b“@b@„f@„e@„d@„_@„`@b‘@bŽ@b’@„^@%b@„a@„b@„g@„c@†ý@cï@‰Š@cî@‰ˆ@‰‰@ek@fZ@‹y@fY@A@B@%fð@Œý@g@P@hZ@¹@º@LÊ@NR@NS@Ou@lS@RÖ@Tó@W©@V¶@Yã@%Yä@YR@vÍ@\d@}â@}á@LË@NT@lT@QE@QD@mú@mû@pz@p{@Tô@Tõ@%Tö@s“@W«@Yæ@Yå@zo@{Â@}ã@„h@el@fñ@LÌ@M|@M}@M{@M~@Mz@%NW@iÖ@NV@NX@iÑ@iÐ@iÓ@iÒ@iÕ@NU@iÏ@iÔ@j¾@O@j¿@jÃ@O~@%jÇ@jÂ@jÅ@Ow@Ox@Oy@Oz@O‚@jÁ@O|@Oƒ@jÀ@jÆ@O{@jÄ@O}@Ov@%O@QZ@lV@QF@QP@QQ@QI@Q[@QK@l^@QV@lY@QL@lh@li@la@lZ@%QY@lf@QT@QR@lg@le@l]@lU@l\@QM@QS@QG@l`@l_@lW@QU@lc@%lX@QX@lj@QH@QO@l[@ld@QW@QJ@QN@lb@n^@RÞ@Rë@nY@nO@Rä@%nM@RÝ@nH@Rç@nU@nB@nD@nG@mü@nT@nd@Râ@nI@n[@nA@nb@nc@%nf@n]@nN@nV@Rè@RÛ@Rã@Rï@RØ@RÚ@nF@Rì@Rå@n`@nC@Rî@Ré@%nL@Rí@nS@nK@Ræ@n_@nW@Rà@ne@nJ@RÜ@n\@nR@Rá@nX@RÙ@mý@%Rê@UH@Rß@nQ@nP@nE@na@nZ@R×@p@UO@p‘@p…@UD@UP@p}@p‡@%p@p|@p˜@T÷@p—@p’@p“@UB@UM@p‰@pŠ@p”@p‹@p†@p@p@pŽ@%pˆ@Tø@Tü@p–@p‚@UK@UG@UJ@UQ@Tý@UL@p@UN@Tú@Tù@p~@pƒ@%UE@p•@pŒ@p„@UI@UF@Tû@UA@s¨@s˜@s™@s@s¬@s©@s¢@s¡@W²@%s¥@s´@s”@sµ@s§@s¹@s­@W±@s«@W¬@WÁ@W·@W»@Wº@s•@s²@s¸@%s°@s·@s¤@s–@s¶@s¦@W¯@W¼@s¯@Wµ@s®@s—@W½@W¿@s±@WÀ@W®@%sž@s³@W´@W¾@s @sª@s›@sŸ@W¹@sš@W­@W¶@W³@s£@UC@vä@W°@%W¸@vç@vý@vò@Yú@Yõ@vá@Yö@vñ@vê@v÷@Yò@vÏ@vù@Yè@v×@Yë@%Yê@Yû@vÑ@vó@vô@Yí@Yé@vß@Yô@vÚ@võ@Yð@ví@vú@vÔ@vÙ@vÓ@%Yï@væ@z†@vÕ@Yó@vÞ@vö@Yî@vÛ@vØ@vé@Yñ@Yç@Yý@vì@vë@vÐ@%Yì@vø@và@vâ@vï@vî@vÎ@Y÷@Yù@vÖ@vÝ@vå@Yø@vÜ@vè@vû@vð@%‘Æ@vü@vÒ@zš@\l@z˜@zƒ@zˆ@z@z”@zr@zy@z’@zœ@z„@zv@zŠ@%z@zz@zŒ@zw@z~@z@\n@z“@z‘@zs@z–@z—@z™@\r@\j@sœ@z{@%zŽ@z|@\g@\w@z•@\u@\q@zq@\i@zt@\v@z…@zp@\o@z‰@zx@\p@%z‚@\f@Yü@z‹@vã@zu@z@\k@z@\h@z‡@\s@z}@z›@\m@{N@\t@%}ñ@}ï@~H@}í@~B@\e@^§@}é@~G@}î@}ü@^¬@^¥@~E@}ç@~D@^·@%}ø@~K@^µ@}ð@^¦@}ò@~C@^¯@}ë@^³@^©@}ô@}ê@}ä@~A@^°@~J@%}å@^­@}ú@^®@}ì@}÷@}ó@}õ@^¨@~I@^¶@}ö@~L@}æ@}û@^«@^´@%^²@}è@}ý@^±@^ª@}ù@~F@€ý@€ù@€õ@L@I@`µ@P@€ü@`À@F@%€ø@E@`½@Y@V@H@€ö@M@O@`¹@C@€û@€ò@`¶@`¾@R@`¿@%€ó@X@K@Q@`¼@N@U@`Á@`»@G@€÷@Z@€ô@S@`¸@A@B@%`·@`´@€ú@`º@`³@T@W@D@„u@„m@„i@b @b•@bš@b–@„w@„ƒ@%b”@„o@„x@J@„y@b›@„‰@bŸ@b¢@„k@bž@„‡@„ˆ@„}@„|@„t@„~@%„†@„…@b™@b—@„v@„s@„p@„„@b¡@„‚@b@bœ@„{@„j@„l@„n@„@%„z@b˜@„q@„@„r@c÷@‡R@cð@‡C@‡N@cò@‡U@‡J@‡E@‡V@‡A@‡L@%cù@‡Q@‡W@‡K@cñ@‡M@‡B@cø@‡T@‡G@cô@‡I@‡F@cú@‡H@có@cö@%‡P@‡D@‡S@‡O@en@‰•@es@et@em@‰”@‰‘@‰’@eq@‰Œ@‰@ep@‰@%er@eo@‰‹@‰@‰“@‹@‹|@‹†@‹…@‹ƒ@‹}@f^@‹~@f]@cõ@‹‚@f\@%‹‡@‹@‹{@‰Ž@f[@‹z@F@E@‹„@fò@I@J@D@H@C@Ž@G@%g“@g‘@Ž~@Ž‚@Ž}@Ž@g’@u@v@gá@t@S@h[@Q@R@»@h¢@%‘E@‘C@‘D@‘F@‘«@LÍ@NY@Q\@lk@ng@p™@p›@pš@pœ@WÂ@s»@p@%sº@s¼@s½@wA@ZB@wB@wD@ZC@ZA@wC@z¢@z @zŸ@zž@z@\x@z¡@%^¸@~M@~O@^¹@~N@`Ã@`Â@[@„‹@„Š@„Œ@b£@‡X@cû@‰–@eu@‹ˆ@%gâ@LÎ@M@NZ@O„@Q]@Q^@Rð@pž@\y@Ú@b¤@ev@LÏ@N[@lm@Q_@%ll@nh@Rñ@ni@Rò@p @US@UR@sÂ@sÀ@sÁ@s¿@s¾@wE@wH@ZE@wF@%ZD@wG@z£@~P@~Q@~R@^@]@`Ä@\@_@„@„Ž@„@‡Y@cü@ew@%‹‰@g”@i`@Ró@nj@UT@WÃ@ZF@wI@\{@\z@~S@~T@`Å@`Æ@„‘@„@%‰—@T@LÐ@ia@M@O…@jÈ@Rô@\|@LÑ@nk@Rõ@nl@cý@LÒ@ln@nm@%p¥@p¤@p¢@p¡@p¦@p£@WÄ@WÅ@ZG@wJ@wK@wL@z¨@z©@z§@z¥@z¦@%\}@~U@b@a@`@c@„“@„’@b¥@„”@dA@‡Z@‰˜@‹Š@w@LÓ@Mƒ@%M‚@Q`@ib@i@N\@i×@jÉ@jÊ@Qa@lo@Rö@nn@no@UU@UY@p§@UX@%UV@UW@sÃ@WÆ@ZJ@ZH@ZI@wM@^º@LÔ@i@M„@i„@M‡@iƒ@M†@M…@%O†@i‚@iØ@iÜ@iÞ@iß@Nf@Ng@iÛ@Nb@iÙ@iÝ@Nc@N^@N_@Ne@iÚ@%N]@O‡@N`@Na@Nd@jÛ@jÙ@jÌ@O“@jÓ@OŽ@jÍ@jÕ@jÒ@O‘@jÑ@O˜@%jÚ@Oš@Oœ@jË@O@jÜ@O–@O™@l‡@O‰@O @O—@jÎ@OŒ@O›@jÖ@OŠ@%O‹@l…@jÏ@O’@O@jÝ@jÐ@O@O•@lp@Ož@j×@O”@OŸ@Oˆ@jÔ@O@%jØ@l†@Qm@Q}@lw@Qt@l@Qe@Qh@l„@lu@ly@Qp@Qr@l|@Qy@Qk@%Qi@Qj@Qx@l‰@Qs@l{@l}@Qq@Qv@l~@lŒ@R÷@Q|@Qf@l‹@l@lz@%l‘@l‚@Qo@lv@Qn@Q@Qu@lt@nx@Q{@Q@lƒ@lˆ@Q‚@Qz@Ql@Qb@%Qg@lx@Qc@l@lr@lq@l@ls@Q~@UZ@Qw@l@Qd@SI@lŽ@n@nƒ@%n†@nz@n‰@nŒ@nŽ@nw@Rø@Rý@p¬@SP@n‡@n@n~@nv@pÇ@SC@n„@%n{@n}@SH@n@SB@ns@nŠ@n@Rü@SK@np@SM@Rú@SQ@n‹@nr@SN@%pÁ@lŠ@SA@Rù@ny@nq@SO@SG@n…@SL@SJ@n|@SD@nt@SE@SF@nu@%nˆ@Rû@n‚@p¯@Ub@Ug@p¸@p¾@pº@p­@p°@p©@pª@Un@U_@p¹@pÂ@%Ui@U[@Ud@p±@Uf@p²@p¼@Uh@pË@p«@Ua@U`@Ul@p¨@pÉ@p½@pÊ@%pÄ@p¶@pÅ@p¿@pÈ@pÆ@Um@p·@U^@U]@Ue@Uk@pÃ@Uj@p´@WÇ@pÌ@%p³@p®@Uc@Uo@U\@p»@pÀ@Wé@sÅ@sÉ@WÖ@WÔ@WË@sÇ@sÆ@Wß@sÌ@%WÙ@sÞ@sê@WÈ@sÛ@sÔ@Wë@sÄ@sà@Wè@WÜ@Wç@WÒ@sÐ@sâ@sÚ@WÓ@%WÍ@sè@sá@sã@WÕ@WÝ@så@sÎ@sß@sÓ@sç@Wâ@WÊ@Wà@sØ@sÖ@s×@%W×@sÒ@sÑ@WÌ@sË@sé@WÎ@sÕ@Wì@Wæ@sÊ@Wã@Wá@Wê@sÜ@Wå@pµ@%sÝ@Wä@sä@WÉ@sÙ@WÛ@sÍ@WÚ@WØ@WÐ@WÏ@wN@sæ@sÏ@wc@WÑ@Zg@%WÞ@ZU@w]@Zc@wQ@ZR@ZN@wo@ZT@ZX@ZS@Z\@ws@wj@wX@Za@Z[@%wd@ZK@wp@wi@ZO@w^@Z^@w{@w|@ZL@wn@Z`@wb@wT@wU@Zd@wY@%w`@wZ@Zb@Zj@wV@wO@wP@wR@ZQ@w_@Z_@Zh@wa@wy@wq@ZM@ww@%ZY@ZW@w}@ZV@wg@w[@we@Zm@wk@wh@wW@Zi@wu@wr@wz@ZP@wf@%Zl@wm@ZZ@Z]@wl@Zk@w\@sÈ@wv@wt@wx@wS@Zf@zÈ@zÇ@z­@\„@%zÆ@z°@z±@\Ž@zÏ@\‰@zÅ@zª@\@\…@z¹@z¯@z²@zÊ@\~@zÑ@zÉ@%\ˆ@z¾@\“@\’@\Œ@zÐ@\@z¼@z³@zÀ@zÌ@\”@\‚@z»@‘Ç@z´@\‹@%\Š@z·@zÁ@zË@z®@z¸@\ƒ@zÂ@\@\‡@zµ@\†@z¬@zº@zÎ@Ze@^Ö@%z½@~V@z¿@zÍ@\@z¶@\@\‘@`Ø@z«@zÄ@zÃ@~r@^Ó@~g@~l@^È@%~X@^Õ@^¿@~W@~x@^×@~[@~k@~]@~{@~w@^½@^Ç@}@^Ô@^Å@~Y@%~v@^É@~s@~@~_@~h@~~@~t@^Ä@~f@^¾@^¼@^Î@~d@~a@~b@~z@%~@~}@^Â@~‚@^Æ@^Í@~Z@e@~c@^À@^Ò@^Ï@^Ã@~m@~^@^Ð@~o@%^Ê@^Ì@^»@~q@~i@~\@^Ë@~y@~|@~e@~p@^Á@`Ç@~n@d@~u@~`@%n@x@`Ê@w@„@`Ì@u@y@`×@p@`Ï@|@„œ@`Û@`Ú@~@m@%‰@`Õ@`Ë@‚@†@‹@@s@`Î@`Ñ@`Ù@`Ô@v@~j@r@Š@`Ð@%`Ó@Œ@`È@@f@‡@dJ@t@`É@o@`Í@g@^Ñ@k@…@l@j@%`Ò@ƒ@i@{@z@ˆ@q@`Ö@„Ÿ@b²@b¨@„«@„—@bª@„£@b±@b¬@%„¡@‡\@„§@„­@„¦@„•@„¤@„¯@„±@b§@„°@b­@b³@b°@„ª@b¯@„¥@%„™@„ž@„©@b®@b«@b¦@b©@„@h@„˜@„›@„¬@„ @„–@‡[@„®@„š@%„¨@‡^@dN@dB@dF@‡`@‡f@‡d@dD@dE@dL@‡g@‡_@dG@‡c@‡b@‡h@%dM@dH@dK@‡a@dO@dI@dP@dC@‡e@‡]@‰¥@e|@‰¢@‰¤@ez@‰ @‰¡@%‰œ@„¢@‰@e{@‰™@ex@‰¦@ey@‰š@‰›@‰Ÿ@e~@e}@‰ž@fd@‹Ž@‹”@%fe@‹‹@fb@f_@‹–@fc@f`@‹@‹@‹‘@‹’@‹•@‰£@‹Œ@fa@‹“@‹—@%‹@M@fô@P@fõ@X@O@L@N@R@U@T@W@K@fó@S@V@%Y@Q@Žƒ@Ž„@Žˆ@Ž‰@Ž†@Ž‡@Ž…@g•@gã@{@x@y@z@gä@V@%U@¾@h@¼@¿@½@‘G@h£@h±@‘“@‘}@‘’@‘À@‘Á@LÕ@Nh@ià@%jÞ@O¡@O¤@jß@O¢@O£@lš@lœ@l—@l”@l–@Q†@Q„@l˜@Q…@l•@l’@%Qƒ@l™@l“@Q‡@l›@n‘@n•@SZ@n˜@SR@SU@SW@SY@SV@n”@n“@ST@%n–@n—@n@SX@SS@n’@pÚ@pÛ@pÜ@Ut@Up@pÑ@pÙ@pÞ@Uu@pÏ@pÕ@%pÎ@pØ@pÔ@Uq@Us@pÝ@pÍ@pÐ@pÖ@p×@pß@pÓ@Ur@Wñ@sñ@só@sï@%sû@sí@sú@Wí@së@w‚@sõ@Wð@sö@sù@sý@sò@s÷@Wî@Wï@sü@sð@%sì@tA@sô@sø@sî@Zn@Zo@wŒ@Zu@w@w‰@w~@Zr@w‡@w…@w†@Zp@%wŠ@wƒ@w@Zq@w„@wˆ@Zs@w‹@z×@zÞ@zà@zæ@\¡@zÒ@\™@zá@\ž@%zç@\•@zä@zÔ@zå@zÓ@\£@zß@\–@zè@\›@zØ@\ @zã@zÖ@zÝ@zÙ@%zÕ@\˜@\Ÿ@\@\š@\¢@\—@zÜ@\œ@Zt@zâ@zÚ@zÛ@~Š@^Ú@~†@~Œ@%~ˆ@^Ü@~‡@~‹@~ƒ@~…@^Û@~‰@~„@^Ý@^Ø@~@^Ù@’@@›@•@%—@`Ü@‘@™@˜@–@œ@`ß@“@š@`Ý@Ž@@`Þ@@@”@%„µ@bº@„À@„¾@b´@„´@„·@„¸@„³@b¾@b¿@„²@„Á@„¼@b¸@bµ@„»@%„¹@b»@„½@b¶@b·@„º@b¹@„¶@„¿@b¼@„Â@„Ã@b½@dR@dY@‡i@‡o@%‡m@dU@dT@dQ@‡k@dW@dV@dS@‡n@‡j@‡l@dX@eƒ@‰©@e@e@‰«@%e‚@‰¨@‰§@‹›@‰ª@‹œ@ff@‹š@‹™@‹˜@fg@fö@Z@[@ŽŒ@Ž‹@g–@%ŽŠ@|@}@W@À@‘H@‘¬@hÅ@‘¶@LÖ@Qˆ@Q‰@S[@dZ@L×@QŠ@Uv@%\¤@LØ@Wò@^Þ@ic@n™@pà@~Ž@d[@LÙ@Q‹@nš@n›@w@Zv@zé@\¥@%~@`à@fh@LÚ@wŽ@LÛ@Nj@iá@Ni@O§@O¦@O¥@jà@QŒ@Q@l@nœ@%nŸ@S]@n@S\@nž@S^@pã@pâ@pá@Uw@tC@tD@Wó@tB@tE@Zx@Wô@%Zw@w’@w‘@w@w@w“@zë@zê@zî@zí@zì@^ß@~’@~‘@^à@~@ž@%Ÿ@`á@„Ä@„Å@‹¡@fi@‹ @‹Ÿ@‹@‹ž@g—@\@~@‘I@LÜ@i…@Mˆ@%i†@iâ@iã@jæ@jâ@já@QŽ@jå@O©@jã@O¨@jç@jä@l¡@n @lŸ@l¦@%Q@Q’@l§@l£@l¤@lž@Q‘@l @Q@l¥@l¢@n¤@S`@Sa@n§@n¡@n¦@%n¢@S_@n¥@n£@pé@pæ@pè@U|@U{@Uy@på@pê@Ux@Uz@pç@tM@pä@%pë@tH@tL@tK@w•@w @tN@tI@w”@Wø@W÷@tG@tJ@Wù@Wö@Wõ@tF@%tO@w—@wž@Zz@w@wš@Z|@wœ@w–@w˜@w›@w™@Z{@wŸ@Zy@\¦@zò@%zñ@zï@\©@\¨@zó@zð@~“@^á@\§@zõ@zô@~–@~”@`â@^â@~•@¡@%`ã@ @©@¨@¦@¥@¢@£@¤@§@ª@„Ê@„Ç@„È@bÀ@„Æ@„Ì@%„Ë@„É@‡q@‡r@d\@d]@‡p@e…@‰¬@e„@fj@fk@f÷@^@]@Ž@@%gå@Y@X@Z@M‰@n¨@U}@Wú@tP@MŠ@i‡@LÝ@iä@jì@jê@jë@jè@%Oª@jé@l¯@Q•@l­@l©@l¬@l¨@Q—@l«@Q”@Q“@Q–@l®@lª@Se@Sh@%n°@n¯@n®@Sb@n·@n­@Sd@pð@n´@n²@Sg@nª@nµ@n¬@n¶@n³@n«@%Sc@n¸@n©@Sf@põ@pì@p÷@pï@pú@pû@pí@pù@pö@pô@pø@U„@U‚@%pò@pî@pñ@pü@pó@Uƒ@n±@U~@U@t^@tS@tQ@tR@tY@tZ@tV@XB@%t[@tX@tU@Wý@tT@Wû@XA@tW@t_@U@Wü@t]@t\@XC@w¥@w¦@Z‡@%w¬@w®@w§@Z@w«@wª@Z‚@Zˆ@Z‰@w­@Z~@w¤@w¢@w¨@w¡@Z†@w£@%w©@w¯@Z@Z…@Zƒ@Z„@Z}@\°@zü@\¯@{C@zö@{D@z÷@zø@{E@{B@%zý@{A@zú@zù@{F@\¬@zû@\±@\«@\²@\³@\®@\­@~—@^ä@^ã@~œ@%`ä@^å@^ç@~@\ª@^æ@~™@~›@~˜@~š@´@³@°@`ç@„Í@`è@¯@%`æ@±@®@«@²@¬@­@`å@‡v@„Ñ@„Ð@„Ò@‡s@bÃ@„Î@bÁ@bÅ@%bÄ@„Ï@„Ó@bÂ@‡z@d`@e†@da@d^@‡w@‡u@‡x@‡{@d_@‡y@‡t@‰¯@%‰²@‹¤@‰­@_@‰³@fl@‰±@e‡@‰®@‰°@‰´@‹¥@‹£@fm@‹¢@fø@g™@%‚@g˜@„@@ƒ@h\@Á@M‹@l°@pý@qA@XD@{G@bÆ@fn@gæ@Â@%MŒ@l±@Fø@n¹@nº@qB@qC@XE@XF@w°@{J@{I@{H@~ž@~Ÿ@~ @^è@%¶@µ@„Ô@bÇ@bÈ@‡@‡|@‡}@‡~@‰¶@‰µ@eˆ@‹¦@ŽŽ@M@Si@XG@%{K@MŽ@qD@XH@ZŠ@Z‹@M@M@iå@O¬@O«@Sj@n»@w±@M‘@M’@M“@%M”@O­@O®@jî@jí@Q˜@l´@l²@l³@n¼@n½@Sn@Sl@Sm@Sk@U…@U‰@%Uˆ@qE@U‡@U†@qF@XK@ta@t`@XI@XJ@Z@ZŒ@w³@w²@XL@\´@{M@%\µ@{L@~¡@·@`é@„Õ@‡@fp@fo@gç@M•@lµ@XM@~¢@^é@H¨@jï@%jð@l¶@Qš@Q›@Q™@Sr@Ss@Sp@Sq@n¾@n¿@So@qG@U@UŽ@XP@qM@%U“@U‘@qN@qI@U@U@UŠ@qL@qK@qH@U’@qJ@U‹@UŒ@XQ@te@tf@%XR@tb@td@th@tg@tc@XN@XO@w»@Z’@Z‘@wµ@Z@w¸@Z“@w¹@Z”@%w¶@ZŽ@Z@wº@w·@w´@{Z@{O@\·@\º@\¹@\¾@\½@{[@{Y@{R@{V@%{U@\»@{X@{T@{\@{S@\¼@\¶@\¸@{Q@~¤@^í@~¨@^ì@~¥@^ë@{P@%{W@~§@^î@~©@~¦@~£@º@¾@À@¼@»@¹@`ì@`ê@`ï@`ð@½@%`í@¸@`î@^ê@¿@`ë@„×@„Ö@„Þ@„Ø@„Ý@„Ú@bÉ@„Ü@bÊ@bË@„Û@%„Ù@dc@‡‚@db@‡…@‡ƒ@‡„@dd@‰º@e‹@‰»@e‰@‰¼@eŠ@‰¹@‰½@‰·@%fq@‹§@fr@fù@‰¸@fú@gš@Ž@gé@…@gè@[@h‚@hƒ@‘¼@H©@St@%nÀ@Z•@Z–@M–@Nk@iæ@jñ@O¯@Qœ@Su@Sv@Sw@tj@qO@U”@XS@ti@%w½@Z˜@w¼@Z—@{]@`ñ@Ä@Á@Â@Ã@‡†@‰¾@a@`@†@M—@l·@%U•@Z™@{^@~ª@`ò@„ß@‰¿@b@M˜@Q@Sz@nÁ@S{@Sy@Sx@qP@U–@%U—@U˜@XU@tk@XT@w¾@XV@Zš@{_@\¿@\À@^ï@^ð@`ó@bÍ@„à@bÌ@%‡‡@de@‰À@c@M™@O°@lº@l¹@Qž@l¸@QŸ@l»@nÇ@S~@S}@nÉ@nÈ@%Sƒ@S‚@S|@nÃ@nÄ@nÅ@S„@nÂ@S@nÆ@S@qS@qW@qU@qT@qX@qY@%qZ@qR@qQ@Uš@U›@q[@qV@tt@q\@Uœ@U™@tn@tm@to@tp@tr@tq@%tv@XZ@XW@X[@tl@X\@tu@XY@ts@XX@wÁ@wÃ@w¿@wÀ@wÄ@wÆ@wÇ@%wÂ@wÅ@Z›@{c@{h@{`@{d@{i@{e@\Á@\É@\Ä@{a@{b@^ô@\Ì@\Å@%\Ê@\Ã@{g@\Ë@{f@\Ç@\Â@\È@{j@~¯@~±@\Æ@~¬@^ò@~²@^ó@~°@%~«@~®@~³@^ñ@~­@`õ@È@Ç@`ø@`ö@Å@`ô@Æ@`÷@„è@„ê@„é@%„á@„å@„ä@„â@bÏ@bÐ@bÎ@„ã@„æ@„ç@bÑ@dj@‡@dg@‡‰@di@dk@%dh@‡Ž@‡Š@df@‡@‡ˆ@‡Œ@‡‹@‰Â@eŽ@e@eŒ@e@‰Á@‹ª@fs@‹¨@%‹©@d@g@e@f@Ž@g›@\@Ã@h„@‘J@‘K@h²@Mš@S…@wÈ@{k@%M›@O±@Q @nÊ@nË@U@wÉ@Zœ@\Í@dl@‡@‹«@h@Mœ@lÁ@l¼@l¾@%lÀ@l¿@l½@Q¡@S†@nÔ@nÏ@nÌ@nÓ@Sˆ@S‰@nÒ@nÑ@nÐ@nÍ@nÎ@nÕ@%S‡@U¡@U§@U¦@qe@q_@q]@U¤@t}@UŸ@qb@qf@qh@qd@q^@U¥@qc@%qa@Už@qi@U¨@qg@U¢@q`@U£@U @X^@t~@tw@ty@t{@t|@tz@X_@%t@tx@wÍ@Z@wÕ@wÊ@wÖ@wË@wÌ@wÔ@wÓ@wÐ@X]@Zž@wÎ@wÑ@ZŸ@%wÒ@wÏ@{v@{z@\Ô@~¹@\×@{x@{u@{p@{r@{s@{l@\Ó@\Ò@\Î@{o@%\Õ@\Ö@{n@{q@{y@\Ð@\Ñ@{w@{m@~»@^ö@~½@{t@~¿@^ú@~À@~¼@%^÷@~¸@^ù@~µ@~º@~¾@~·@\Ï@~´@^ø@~¶@`û@Ê@aB@`ý@^õ@Ñ@%Ò@`ú@Ð@Ó@`ü@`ù@Ì@É@Î@Ë@aC@Í@Ï@aA@bÓ@„ñ@„ë@%„ï@„õ@„ö@„ò@„ó@„ð@„í@bÕ@bÒ@„ì@„î@bÔ@„ô@dp@‡–@‡‘@do@%dm@‡˜@dn@‡”@‡•@‡’@‡™@‰Ã@dq@‡“@‡š@‡—@‰Ç@‰Ä@e@‰È@‰Ê@%‰É@‰Å@‰Æ@‹°@ft@‹­@‹¯@‹¬@‹±@‹®@j@m@i@fû@k@l@n@%fü@gA@fý@Ž‘@Ž“@Ž’@‡@Ä@‘L@M@jò@Q¢@lÃ@Q£@Q¤@lÂ@nÚ@%nÙ@SŠ@S@SŒ@S‹@nÖ@nØ@n×@ql@Uª@qp@qo@qn@qj@U©@U­@U°@%U±@qk@qm@U¯@U®@U¬@U«@t‡@t…@t@X`@t‚@Xa@tƒ@t„@t†@Xb@%wÚ@wÙ@wØ@w×@{~@\Ø@{{@{}@\Ù@\Ú@{|@~É@~Â@~Ã@^ý@^û@^ü@%~Ë@~Ê@~Ç@~Æ@~Å@~Ä@~È@~Á@Ô@Ù@×@Ö@Õ@Ø@„÷@bÖ@dr@%‡œ@ds@‡›@‰Ì@‰Ë@e‘@‹²@fu@o@gê@ˆ@Æ@Å@iˆ@SŽ@S@tˆ@%\Ü@Mž@O´@O³@O²@lÄ@Q¦@Q¥@S’@nÜ@nß@nÝ@S@S‘@nÛ@nÞ@U¸@%qw@qy@qx@Uµ@qs@U³@U²@U¶@U´@U·@qv@qq@qr@qu@qt@t‹@tŒ@%tŠ@t‰@Xc@Z¤@wÛ@wÝ@wß@Z£@Z¡@wÜ@Z¢@wÞ@Z @{‰@{@{ƒ@{‡@%\à@{…@{„@{@{‚@\Þ@{ˆ@\Ý@\â@\á@\ß@{†@~Ñ@~Ð@~Ì@_A@~Ï@%~Î@_B@aH@Û@aI@aE@aG@aD@aF@„ø@bÙ@„ú@„ù@~Í@bÛ@bÚ@b×@%bØ@‡¡@‡Ÿ@dt@‡ @‡¢@‡ž@‡@‰Í@e”@e’@e“@‹³@‹´@fw@fv@q@%r@p@‰@Š@MŸ@iç@Oµ@lÅ@Q¨@Q§@lÆ@ná@S“@nà@S”@U¹@q|@%qz@q@Uº@q{@q@q}@q~@t@t@Xd@tŽ@Xe@Z§@Z¦@Z¥@wà@{Œ@%\ã@\ä@{‹@{Š@~Ò@_D@_C@~Ó@~Ô@aK@aJ@…A@Ü@Þ@Ý@„ý@„û@%…B@„ü@bÜ@‡£@du@‡¤@‡¥@e•@e–@gB@h]@M @nâ@q‚@U»@Xý@Xü@%Z©@wâ@Z¨@wá@{@_E@~Õ@_F@gC@s@Nl@Q©@lÇ@S–@S•@nã@nä@%q„@q†@U¼@qˆ@q‹@q‰@qŠ@q‡@qƒ@U½@qŒ@q…@t˜@Xk@t¡@Xh@tš@%Xl@Xf@t•@t¢@t–@t“@Xj@Xg@t™@tœ@Xi@t@Xm@tž@t”@t›@tŸ@%t—@t’@t@t @wä@wé@wå@wë@Z¬@t‘@wæ@Zª@wã@Z±@wç@Z°@wè@%Z²@Z­@Z³@Z®@Z¯@Z«@wê@\ç@{˜@{›@{@{”@{Ž@\é@{’@{@\è@%{—@{–@{“@{•@{‘@_J@{š@\å@{™@~å@_Q@~à@_P@~Ö@~Ø@_I@~Ý@%~Ü@~ß@_N@~Ú@~Ù@_M@_H@~Û@_K@~á@~ã@~Þ@~×@_L@aS@_G@~ä@%â@aL@ä@aM@aO@ç@ß@_O@å@á@\æ@aR@aN@aP@aQ@bß@æ@%à@aT@ã@…L@…G@…Q@bÝ@…I@bá@…O@…F@…C@…R@d{@bâ@…N@…D@%bà@…H@bä@…E@…J@bã@…M@…P@‡·@‡¸@‡¨@‡¯@‡­@dy@‡´@…K@‡«@%‡µ@dx@‡ª@‡©@‡³@‡°@‡²@‡¦@‡¶@dv@‡±@‡º@‡®@dz@dw@‡¬@‡§@%‡¹@bÞ@‰Ð@‰Î@‰Ô@eš@‰Ò@‰Ñ@eœ@‰×@e›@‰Ø@‰Õ@e˜@‰Ö@‰Ï@e™@%e—@‹¸@‰Ó@‰Ù@‹µ@f|@fz@‹·@‹¹@‹¶@f{@fx@fy@f}@gE@x@w@%u@t@v@gD@gF@gœ@Ž•@Ž”@‹@@@Ž@Œ@gì@gë@h_@h^@%h`@^@]@‘M@Ç@‘N@h¤@h¥@‘~@hÊ@Nm@lÈ@næ@nç@nå@S—@nè@%né@nê@q@q“@q‘@U¾@q@q@q’@qŽ@Xn@t£@Xp@t¥@Xo@t¤@wí@%Z´@wï@wì@t¦@Zµ@wî@{ž@\ê@{œ@\ë@{@\ì@_R@~é@~æ@~è@_S@%_T@~ç@è@é@aU@ë@ê@Fù@…V@…W@…S@…T@bå@bæ@…U@d‚@d}@%dƒ@d~@d@d|@d@e@‡»@‹»@‹º@y@gG@gH@‘@Ž–@@‘O@‘”@%Nn@O¶@lÉ@Qª@Sš@ní@S˜@në@S@S™@Sž@Sœ@nì@S›@UÂ@UÁ@qž@%UÊ@q—@q@UÆ@q–@qœ@qš@UÅ@UÇ@q™@UÀ@q˜@UË@UÈ@UÌ@UÉ@q•@%q”@q›@UÃ@U¿@UÄ@tµ@t®@Zº@t­@Xt@X{@Xx@X~@X}@Xy@t§@tª@%t©@Xu@t«@t´@Xv@t¨@t±@t²@Xw@t¯@X|@Xr@Xz@t¬@Xq@t°@t³@%xC@w÷@Z·@xA@wû@wó@wü@Z¹@wô@wð@\ò@wù@Z¶@xB@Z½@Z¿@wò@%Z¾@wõ@Z¸@wý@wö@wú@wø@Z»@wñ@ZÀ@Xs@Z¼@ZÁ@\î@{¥@{§@{©@%{­@{£@{¡@\ð@{¨@{¬@{¤@{ @{Ÿ@{ª@{¢@{¦@\ñ@\ï@{®@\í@{«@%~ú@_W@~ò@ab@~ü@_Z@C@_`@~í@~ý@~ê@B@~î@_g@_d@A@~ø@%_V@_^@_]@_\@_b@~ë@_c@~ù@__@_U@~û@_X@_Y@_a@~ð@~ï@~ì@%~ô@~ñ@~õ@_f@D@_[@~ö@~÷@~ó@_e@ð@aZ@ac@a_@í@a\@a`@%ù@aV@ñ@a^@ô@ï@a]@aa@î@a[@ø@aX@÷@ö@ad@€¼@aW@%õ@ì@ae@ó@aY@ò@bé@bî@bç@…d@…[@…g@…_@…e@bï@bè@…X@%…^@…h@…a@…f@…Z@…b@bê@…`@bí@bì@…\@…]@…Y@…c@bë@…j@…i@%‡Æ@‡Â@dŠ@‡¼@d„@d”@‡È@dŒ@dˆ@‡¿@d@d’@‡Ê@d‡@‡Á@d@‡Ì@%‡É@‡½@d‹@d…@d“@‡Ä@dŽ@‡¾@d‰@‡Ë@d@d†@‡Å@d‘@‡Ã@‡Ç@‰Û@%‰á@e£@‰ä@ež@eŸ@‰Ü@‰ã@‰Þ@e¤@e¡@‰Ú@e @‰à@‰â@e¢@‰ß@‰Ý@%‹Å@f‚@fƒ@f~@f@‹Á@‹¿@‹Ã@f…@‹Ä@‹½@‹¼@‹À@‹¾@f@‹Â@z@%gK@gJ@{@}@|@gL@Ž›@Ž˜@Ž™@Ž—@Žš@gž@Žœ@g@’@ha@hc@%_@hb@È@‘Q@‘S@‘P@‘R@h¸@No@SŸ@pÒ@UÍ@X@xD@xE@…k@d•@%‡Í@e¥@‹Ç@‹Æ@gM@Ž@“@h…@iè@Q«@O·@nî@q¤@qŸ@q£@q¡@UÎ@%q¢@q @t¶@xF@xG@{±@{²@\ô@\õ@{°@{³@{¯@\ó@_h@\ö@E@af@%ú@ag@bð@…n@…l@…m@‡Ð@‡Ï@‡Î@‹È@f„@‹É@”@h†@É@Np@Q­@%Q¬@nð@S @nï@q¦@UÏ@t·@q¥@X‚@tº@t¸@t¹@X@xI@xJ@xH@\ù@%{µ@{´@{¶@\ø@\÷@û@ý@ah@ü@…o@bñ@‰æ@‰å@f†@‹Ê@fˆ@f‡@%~@Žž@gŸ@Nq@nñ@S¡@q©@UÑ@q¨@q§@UÐ@tÀ@tÂ@t»@t¼@Xƒ@t½@%X„@tÁ@t¾@t¿@X…@ZÃ@ZÄ@xK@{·@{¸@I@_k@_i@_j@F@G@H@%‚E@‚F@ai@‚C@‚B@‚D@‚A@bô@…p@bò@bó@‡Ò@d–@‡Ñ@‰U@‰ç@‰è@%e¦@e§@d—@‹Ë@‹Ì@@gN@Nr@Ns@S¢@Q®@UÒ@nò@ZÅ@Nt@S¤@nó@%nô@S£@S¥@Nu@nõ@UÔ@qª@UÖ@UÓ@UÕ@tÅ@X†@tÄ@tÃ@{¹@J@aj@%bõ@…r@…q@‡Ó@ŽŸ@Nv@jó@lÊ@S¦@nö@q¬@U×@q«@UØ@tÇ@Xˆ@tÆ@%tÈ@X‡@xM@xN@xL@ZÆ@\ú@\û@_m@L@K@_l@‚G@‚H@…s@d›@dš@%d˜@d™@dœ@‰é@e©@e¨@‹Í@@gî@gí@Nw@pŸ@\ý@ZÇ@\ü@_n@Nx@%i‰@Ny@Nz@lË@jö@j÷@O¹@jô@O¸@O»@jõ@O½@O¼@jø@Oº@Q³@Q±@%lÍ@Q°@Qµ@Q·@Q´@lÐ@lÌ@Q¸@Q²@O¾@Q¶@lÏ@lÎ@Q¯@nü@Sª@S«@%oA@nø@nû@oG@oE@S¬@oK@S¯@oH@ný@nú@xP@oF@S§@oI@n÷@oC@%S©@S®@oD@S²@S°@nù@S­@oB@S±@S¨@oJ@UÝ@Uæ@UÛ@UÙ@q®@Uá@%UÞ@q°@Uà@q¯@q­@q²@Uå@Uã@xO@q³@q±@UÚ@UÜ@Uß@Uâ@Uä@tÒ@%XŠ@tÉ@tË@tÌ@tÔ@tÐ@tÎ@tÑ@tÕ@X‹@X@tÊ@tÓ@X@XŒ@tÏ@tÍ@%X‰@XŽ@ZÍ@xX@xV@ZÏ@xQ@{Ç@ZÎ@xU@xR@ZÊ@ZÐ@xW@ZÌ@xT@_o@%ZË@xS@ZÑ@ZÉ@ZÈ@{¿@{½@{Ã@{»@{È@{À@{º@]D@]J@{Å@{¾@]G@%]E@{Æ@]B@]A@{Á@]F@ZÒ@{Ä@{¼@]C@]H@]I@_t@_p@_u@O@N@%P@_r@M@_s@S@R@Q@_q@‚L@‚O@ap@‚N@ao@ak@al@am@‚K@%‚J@an@‚M@‚I@…u@…@bø@b÷@…y@…{@…v@…z@…t@…}@bö@…|@…x@%…~@…w@dŸ@‡Ô@‡Ú@d£@d¥@d¢@d¡@d @dž@‡Õ@‡Ø@d@‡Ù@d¤@‡×@%‡Ö@eª@e«@‰ì@‰ê@‰ë@‹Ï@‹Î@f‰@ƒ@gO@‚@Ž @•@gï@‘T@‘U@%hd@N{@Q¹@xY@_v@d¦@‡Û@N|@Uè@Uç@xZ@…@N}@S³@x[@x\@x]@%_w@bù@N~@Qº@oL@Ué@q´@X@x^@]K@_x@bú@d§@e¬@„@N@Q»@%Uê@tÖ@ZÓ@_y@T@‚P@N@ZÔ@{É@_z@N‚@lÑ@oM@S´@q¶@Uí@Uë@%Uì@Uî@qµ@tÛ@tØ@tÚ@X‘@X“@X’@t×@X”@tÙ@x_@x`@xa@{Ì@{Í@%{Ë@{Î@]L@{Ê@_{@‚U@‚Q@‚T@‚V@‚S@‚R@…‚@…ƒ@…„@bû@bü@‡Ý@%‡Ü@‡Þ@‰î@‰í@‹Ñ@‹Ò@‹Ð@gP@…@†@–@`@Ê@Nƒ@O¿@d¨@N„@%tÜ@xb@h@ié@iê@iì@N…@ií@ië@kC@kD@jû@kB@OÁ@OÂ@jü@jú@%jù@jý@OÀ@kA@oN@lÖ@Q¾@lÕ@l×@Q½@lÜ@QÁ@lÒ@là@læ@QÈ@lã@%QÅ@lÙ@lß@lá@lÔ@QÄ@Q¿@lÚ@QÆ@QÉ@QÃ@Q¼@lÞ@lØ@lå@QË@QÇ@%QÂ@lÝ@Uï@lÛ@QÀ@QÊ@lÓ@lâ@lä@SÅ@S¿@SÇ@SÄ@oU@oX@SÀ@oO@%S¹@SÃ@SÆ@SÈ@od@o[@S¸@oc@S¼@Sº@Sµ@oS@ob@oW@oZ@og@SÉ@%oa@SÁ@o\@of@oY@o]@o`@oQ@oe@o_@oP@oT@SÂ@S½@S¶@S»@S·@%SÊ@oR@qÇ@S¾@o^@mc@qÊ@Uý@qº@qÅ@qÁ@qÔ@qÌ@qÂ@qË@q¼@qÀ@%q×@VC@qÏ@qÆ@Uð@qÕ@q¸@qÎ@VB@Uú@q·@Uø@U÷@Uü@qÍ@Uô@Uû@%oV@xc@qÈ@q¾@VA@q¿@qÃ@VD@q¹@qÑ@qÐ@qØ@Uö@Uó@qÖ@qÒ@qÉ@%qÄ@Uù@Uõ@q»@Uñ@qÓ@Uò@q½@tâ@tä@té@tý@X¢@X˜@tá@X£@X¤@%tì@tó@tù@tæ@tí@X¥@tû@tö@X @Xž@tò@tî@tà@X•@tå@tÝ@X@%XŸ@tê@tç@Xš@t÷@X—@tè@uA@tð@tï@X–@X¡@X™@tÞ@tã@tô@tú@%X¦@tß@të@tñ@Xœ@tü@tõ@tø@X›@xs@xg@ZÜ@x…@x@x@ZÚ@xo@%x‰@xp@x~@Zç@xz@Zä@x{@xd@xŠ@Zí@x‡@x|@x’@xw@{î@x•@Zë@%xu@x‚@Zî@ZÙ@xy@x“@xr@xk@xv@xj@xh@ZÕ@x‹@xq@xŽ@x@ZÝ@%Zâ@ZÞ@Zæ@x†@Zß@x}@xm@Z×@xe@xˆ@x‘@xl@Zå@x–@xx@xt@ZÖ@%Zê@x„@Zì@x@Zá@ZÛ@Zã@ZØ@Zé@x@xn@xƒ@xi@xŒ@x”@xf@{í@%|F@\Û@{ò@{ð@{Û@]P@{ë@|B@{ç@]X@|A@{å@Zè@{õ@{æ@{ü@]W@%]O@{Ð@{Ø@{ñ@{é@|E@{ì@]]@{ý@]T@{ï@{÷@{Ü@{ö@|J@{×@{ø@%|H@{Ñ@Zà@{ß@{Þ@]V@{â@{ä@{ó@|G@]Y@]Z@{Ö@]R@{Ú@|C@][@%]S@]U@]\@|I@{ù@{ô@{á@{à@]Q@{Ò@]N@{ê@{Ó@{è@{Ý@|D@]M@%{Ù@{Õ@{û@{Ô@_‰@|@k@U@s@_@d@n@_„@g@_‚@X@v@%W@j@V@h@q@o@c@^@\@]@p@{@e@_ƒ@`@t@_†@%_@Y@i@_Š@_}@_‡@a@[@_@{ú@_~@l@_|@_Œ@_…@m@b@%Z@u@f@_‹@y@_ˆ@x@r@w@z@‚~@‚@‚r@‚q@‚m@a|@at@%‚‚@‚@{Ï@‚j@‚n@‚h@‚{@‚l@‚ƒ@‚e@‚c@‚o@‚y@‚t@a~@‚Z@‚x@%a@{ã@‚f@‚]@‚`@‚‡@‚g@‚^@‚\@‚Y@ax@‚p@aw@a{@‚k@‚s@aq@%‚„@‚ˆ@as@‚b@‚v@‚z@‚_@‚…@az@ay@‚W@a}@‚}@‚a@‚u@‚[@‚i@%‚d@au@av@‚w@‚‰@‚†@‚|@‚X@ar@…•@…Œ@…@cE@…‘@…†@…@…“@%cB@cF@bý@…ˆ@…˜@…’@…‰@…¡@…›@……@‡ñ@…‹@cA@…–@… @cI@…@%…Š@…@…”@…Ž@…¢@…Ÿ@…œ@cC@cD@cH@…‡@…£@cG@…™@…—@…š@ˆA@%‡ë@‡ð@‡ý@‡ï@‡ç@‡ì@d«@‡à@‡ø@‡ú@‡ß@dª@‡ü@‡ô@d±@‡û@‡í@%d³@‡å@…ž@‡õ@‡ò@‡á@ˆC@d­@d®@‡ã@‡ó@ˆB@‡ö@‡é@d°@d¬@‡÷@%‡ê@ˆD@‡ä@‡î@‡ù@‡æ@‡è@eµ@‡â@d²@e®@d©@d¯@e²@ŠA@‰ô@‰ï@%‰õ@ŠB@ŠF@ŠE@e´@e³@‰ö@ŠG@‰ù@‰ñ@‰ó@‰ò@‰ø@‰ý@‰ð@‰÷@‰ü@%e±@‰ú@e¯@‰û@e­@e°@‹â@ŠC@f@‹Ú@‹Þ@‹Ö@‹Ù@‹á@f‹@‹æ@‹ß@%‹×@‹ç@‹à@fŽ@f@‹ä@‹Ø@fŠ@fŒ@‹Ó@‹Û@‹Õ@‹å@‹ã@‹Ô@‹Ü@@%f@‹Ý@gR@gT@gQ@’@Š@ˆ@Œ@‰@Ž@@gU@gW@@gX@gV@%‘@gS@g @Ž¡@Ž§@g¢@‹@Ž¦@Ž­@Ž¤@Ž«@Žª@‡@Ž¥@ŠD@Ž®@Ž£@%Ž¨@Ž¬@Ž¢@š@g¡@Ž©@e@›@™@—@˜@œ@he@c@a@f@d@%g@hf@b@Ë@‘V@‘W@‘X@‘·@‘­@iî@QÌ@SË@qÚ@qÙ@VE@X§@uC@%uB@Zï@]_@]^@]`@}@‚Š@…¤@…¦@…¥@d´@ˆE@ŠH@‘•@N†@lé@lê@%lè@lç@QÍ@ok@oi@oh@SÌ@SÎ@SÍ@oj@qæ@qã@qá@VF@qä@VK@qÞ@%qí@qï@qß@VH@qð@që@qÝ@qâ@qì@qè@qå@VM@qî@qà@qé@qÛ@VL@%VI@qç@qê@qÜ@VJ@VG@X±@uJ@X°@uM@uP@X­@X«@uE@uN@uL@uI@%uQ@uR@uT@uU@uD@Xª@uG@uF@uS@X¬@uH@X®@X©@uK@X²@X¯@uO@%Zö@x¥@xš@Zó@|P@x£@x—@Zñ@xœ@Zô@x @xž@Z÷@Zð@x˜@x›@Zõ@%x™@x¤@x¢@x@xŸ@x¡@Zò@|Q@|W@|M@|S@]a@|O@]g@]f@]e@|V@%]h@]i@|L@|Y@]j@]d@]c@|U@]k@|K@|N@|X@|T@ž@“@]b@_“@%‡@œ@ˆ@_Ž@…@Ž@†@_@@›@_‘@˜@™@@_–@@Š@%‘@„@@•@@~@_’@–@_•@š@”@_@’@Œ@_@ƒ@‹@%—@‰@@aŠ@|R@‚œ@‚¥@‚›@‚—@‚”@a‹@‚’@_”@‚‹@a‰@‚‘@aˆ@%‚–@‚“@‚£@‚ž@‚˜@‚@a„@‚•@‚¨@‚Œ@‚@‚¤@a…@‚©@a‡@‚ª@‚š@%‚@‚ @‚™@‚¢@‚Ÿ@‚@a‚@‚§@aƒ@‚Ž@a†@…°@‚¡@‚¦@…­@a@cJ@%…·@…³@…±@…¬@…»@cN@…¨@…´@…µ@…«@…ª@…¸@…®@…©@…¯@…º@…§@%…¹@…¶@cL@cK@cM@…²@ŠY@ˆG@dº@ˆK@ˆH@ˆO@ˆU@ˆJ@ˆ^@d·@ˆX@%ˆM@ˆY@ˆT@ˆ[@ˆL@d¼@d»@ˆN@ˆ\@ˆF@ˆZ@dµ@ˆR@ˆQ@ˆV@ˆI@d¹@%d½@ˆP@ˆW@d¾@ˆS@d¶@d¸@ŠU@ŠS@ŠZ@ŠW@Š[@ŠL@ŠT@Š_@ˆ]@ŠP@%e¹@‚@ŠK@ŠX@ŠR@ŠO@ŠJ@ŠI@Š^@ŠN@ŠM@e·@ŠV@e¶@e¸@ŠQ@Š]@%‹ë@‹ì@f”@‹é@f‘@‹ñ@f•@‹ó@‹è@Š\@‹õ@‹ê@f’@‹ð@‹ò@‹í@‹ô@%‹ï@‹î@f“@”@•@—@gY@gZ@˜@–@“@Ž±@Ž´@Ž°@g¦@Ž²@g¥@%g¤@g£@Ž³@¡@Ÿ@ž@Ž¯@ @Žµ@@j@H@h@hg@i@k@Î@%h‡@Í@Ì@hˆ@h¦@‘@‘—@‘–@‘˜@N‡@ol@qñ@qò@x¦@Ž¶@Ï@Nˆ@%SÏ@om@uV@X³@x¨@x§@Zø@]l@‚«@aŒ@a@cO@h‰@N‰@on@QÏ@op@%oo@SÐ@qó@qú@VN@qø@qö@qý@qô@qõ@VO@VS@rA@VR@qü@qù@q÷@%VP@VQ@qû@Xµ@uW@Xº@ug@X¹@ui@u]@X·@uh@uX@X¸@ud@u`@ub@%u\@uc@X´@u_@u^@uZ@ue@ua@uY@u[@X¶@uf@Zû@x³@x¯@x±@x¬@%x«@x©@x°@x²@x®@x­@Zù@Zú@xµ@]t@|[@|a@|\@|]@|b@]v@]n@%]u@|Z@xª@]q@]o@|`@|_@]p@]r@|^@]m@]s@ @_@«@ª@¥@%_Ÿ@©@¡@¢@_—@_™@§@Ÿ@_›@_š@£@¨@¦@_œ@¤@x´@_˜@%‚¬@‚³@a@‚·@a“@‚¯@‚­@‚¶@aŽ@‚µ@a@a‘@‚®@a’@‚´@‚°@‚±@%‚²@_ž@…¼@…È@cT@…Ã@…Å@cR@…½@…Á@…Ä@cP@cS@…Ç@…¿@…À@…Æ@%…¾@…Â@cQ@ˆ`@ˆ_@dÀ@ˆe@dÂ@d¿@ˆa@dÃ@ˆb@ˆc@ˆf@dÁ@Šd@Šg@%Ša@Šc@Šb@Še@Šf@ˆd@Š`@f˜@‹ù@‹ü@ŒA@‹÷@‹ø@‹û@‹ý@f™@f—@%f–@‹ú@‹ö@™@g[@š@Ž¸@g§@Žº@g¨@Ž·@Ž¹@gñ@¢@gð@n@m@%l@‘Y@‘Z@‘\@‘[@iï@NŠ@SÑ@uj@Zü@|c@eº@ŒB@OÃ@X¼@X»@x¶@%Zý@x¸@x·@|d@]w@¬@¯@®@­@‚¸@‚º@‚¹@cV@cU@dÄ@ˆg@ˆi@%ˆh@e»@ŒD@ŒC@›@g\@g©@¤@£@h§@OÄ@oq@SÒ@um@uk@ul@xº@%x»@|k@x¹@|e@|i@|h@|j@]x@|g@|f@|l@²@°@±@‚½@‚»@‚¼@%…É@ˆj@ˆk@e¼@ŒE@œ@g]@Ž»@¥@gò@o@‘]@OÅ@SÔ@SÕ@or@os@%SÓ@VY@VW@VV@V]@VU@V^@rB@V[@VX@V\@VZ@VT@XÄ@X¾@uq@XÃ@%XÅ@X¿@XÀ@uo@X½@up@XÂ@un@XÁ@[K@[M@x¾@[L@[A@[E@]Œ@|q@%xÀ@[F@xÃ@xÄ@[J@xÆ@xÈ@xÉ@x½@x¼@xÊ@[I@xÇ@xÅ@[G@[C@[N@%xÁ@xÂ@x¿@[H@[D@[B@|p@]‡@]‚@]|@]@]}@]y@]‰@]†@]ˆ@]~@%]„@]z@]{@|x@|u@|m@|r@]Š@|y@]‹@]@|o@|w@|s@|v@|t@]…@%|n@]@µ@_¡@_¤@·@_¬@¶@_¦@a˜@¸@_«@´@_­@_¢@]ƒ@_¥@%_£@_§@_©@_ @_®@_ª@_¨@³@aŸ@a›@a¢@‚À@a£@‚Ì@‚Å@a”@‚Í@%‚Ç@až@‚È@a@‚Ë@a—@‚É@‚¿@a–@…Ô@aœ@a™@a¡@‚¾@‚Â@a•@‚Á@%‚Ã@‚Ä@a @‚Æ@‚Ê@‚Î@a¤@c\@…Ï@…Õ@…Ò@…Ê@…Ö@…Ë@…Ñ@cW@c]@%…×@cY@cc@c^@…Ù@…Ó@cZ@…Ì@cd@…Í@…Î@ce@cb@aš@cX@…Ú@cf@%c_@…Ø@c[@c`@ca@dÌ@ˆp@ˆy@ˆv@ˆx@dÉ@ˆq@ˆw@dÅ@ˆs@dÍ@ˆo@%ˆt@ˆ{@…Ð@ˆu@ˆn@dÆ@ˆm@dÇ@ˆ|@dÈ@ˆz@dË@ˆl@dÊ@ˆr@Šj@Šx@%Šs@Šu@Ši@e½@Šh@eÀ@e¿@Šw@Šo@Šl@Šr@Šk@Šm@Šv@Št@e¾@Š{@%Šy@Šp@Šz@Šq@ŒI@fš@ŒP@Ž¾@f¡@Šn@ŒG@f@ŒH@ŒM@fŸ@f @ŒF@%ŒO@ŒQ@ŒJ@ŒL@ŒN@ŒK@ŒR@fœ@f¢@fž@f›@Ÿ@gb@@¡@¢@g`@%£@ @ž@gc@g_@¤@ga@g^@gª@g«@Ž½@Ž¼@Ž¿@ŽÀ@g¬@¦@«@%gó@¨@§@ª@©@s@hh@r@p@q@h‹@hŠ@Ð@Ñ@hŒ@‘^@‘_@%h³@h¹@‘™@‘¸@OÆ@ur@us@|z@¹@‚Ï@dÏ@dÎ@Š|@ŒS@t@OÇ@rC@%V_@XÆ@||@|{@a¥@‚Ð@a¦@ˆ}@eÁ@hÂ@OÈ@lë@rD@XÇ@ut@uu@xË@%[O@]Ž@|~@|}@|@º@»@_¯@cg@a§@ch@ˆ‚@ˆ~@ˆ@ˆ@dÐ@Š}@%ŒU@ŒT@kE@Va@V`@rE@uv@xÍ@xÌ@[P@|‚@|ƒ@|@]@]@_±@_°@%‚Ñ@…Ý@…Û@…Ü@ci@ˆ„@ˆƒ@Š@Š@Š~@ŒV@‘š@OÉ@SÖ@S×@Vb@Vc@%rG@rF@uw@XÍ@XË@XÈ@XÌ@XÊ@XÉ@[Q@xÐ@]•@[S@[X@xÒ@[Z@[Y@%[\@xÑ@xÎ@[V@[R@[T@xÏ@[[@[W@[U@]—@]–@]”@]˜@]’@]“@]‘@%|„@½@_³@_´@_²@¼@¾@‚Ô@‚Ö@a°@‚×@a©@‚Ó@a¨@a²@a®@a¯@%a«@‚Ò@aª@‚Ø@‚Õ@a±@a¬@a­@…ß@…á@…à@…â@cj@…Þ@dÔ@ˆ…@dÑ@%dÕ@dÓ@dÒ@Š‚@Š…@Š„@Šƒ@eÂ@ŒW@ŒX@f£@ŒY@f¤@ge@gd@ŽÁ@g­@%ŽÂ@¬@gô@gõ@u@hŽ@OÊ@XÏ@XÎ@|…@|†@_µ@…ã@a³@…ä@ˆ†@OË@%ot@SÙ@SØ@rH@Vd@rI@uz@uy@ux@xÔ@[_@xÓ@[^@xÕ@[]@|ˆ@|‹@%|‰@|Š@|Ž@|‡@|@|Œ@|@_·@¿@_¶@‚Ü@‚Ú@a´@‚Ù@‚Û@aµ@…å@%…æ@dÖ@Œ[@Œ]@ŒZ@Œ\@¥@ŽÃ@‘@OÌ@SÚ@rJ@rL@rK@u}@XÑ@u{@%XÐ@u~@u@u|@xá@[g@xÙ@xß@[b@[e@xØ@[`@xÜ@|•@[d@x×@xÝ@%xÚ@xà@xÖ@xÞ@[c@[f@xÛ@[a@]š@|‘@]™@|˜@|—@] @]¡@|™@]›@%|–@]Ÿ@|›@|’@|”@]œ@|@|“@|š@]@|œ@]ž@_¸@Ä@Ê@Â@Ë@%Á@Æ@Ì@É@È@Ç@À@Å@Ã@aº@a·@‚å@‚ê@‚ì@‚é@‚â@‚ä@%‚î@‚ë@‚æ@‚ï@‚ã@‚í@a¸@a¾@a¼@‚Ý@a½@a¹@‚Þ@‚à@‚ß@‚ç@‚è@%a»@a¶@‚á@…ð@cl@…ç@cm@cp@…ì@…é@co@…í@…î@…è@…ñ@…ê@…ï@%cn@ck@…ë@ˆŒ@dÙ@d×@dÚ@dØ@ˆ‹@ˆˆ@ˆ‡@ˆŠ@ˆ‰@Š“@eÈ@ŠŠ@Š‰@%eÃ@Š@ŠŽ@Š†@Š‘@Š‹@eÇ@Šˆ@Š@Š‡@eÄ@eÆ@ŠŒ@eÅ@Š@Š’@Œa@%f©@Œ^@Œb@f¦@Œ`@f«@f¨@Œ_@fª@Œc@f¥@gg@gi@¨@gh@¦@f§@%§@gf@g®@g°@ŽÅ@g¯@ŽÄ@±@gö@°@g÷@®@­@²@³@v@¯@%Õ@Ò@Ó@Ô@h¨@‘b@‘a@‘`@‘‚@‘®@‘›@hº@OÍ@Ve@]¢@a¿@…ò@%eÉ@Œd@‘œ@OÎ@QÐ@SÜ@SÛ@Vh@rM@Vf@rN@Vg@u…@u@XÒ@u„@uƒ@%u‚@XÓ@u†@u‡@xè@xæ@xê@xë@xñ@xí@xï@xç@xâ@xî@xð@xé@xì@%xã@[i@xå@xä@[h@[j@]¥@|ž@| @|Ÿ@|¤@]£@|¡@|@|¢@|£@]¤@%]¦@|¥@Ð@Ï@Í@Î@_º@_¼@_¹@_»@‚ö@‚÷@‚ò@‚ó@aÁ@aÆ@aÀ@%aÇ@aÂ@‚ô@‚õ@‚ñ@aÈ@aÄ@aÃ@aÅ@‚ð@…ô@cr@…ö@ct@…ù@…õ@…ó@%…ø@cs@…÷@cq@dÜ@dß@ˆŽ@dÝ@ˆ@dÛ@dÞ@Š”@Š•@Š–@eÊ@Š—@eË@%f­@Œg@Œh@Œf@Œe@Œi@f¬@¬@ª@«@­@©@®@ŽÇ@ŽÈ@ŽÆ@g±@%´@gø@µ@x@w@OÏ@[k@]§@_½@cv@cu@f®@gI@g²@OÐ@Vi@]¨@%Œj@Hâ@kG@OÑ@OÔ@OÓ@OÒ@kF@lí@lï@QÑ@QÓ@lì@lî@QÒ@lñ@lð@%lò@ox@ov@Sß@ou@Sä@Sá@SÞ@Så@Sà@Sã@Sâ@ow@SÝ@Vo@rP@rV@%Vl@Vs@Vn@rS@rU@Vq@rO@rR@Vm@Vj@rQ@Vp@rT@Vr@Vk@u‰@uŒ@%XÕ@Xß@XÛ@uŠ@Xã@XÜ@Xá@X×@XÔ@XÖ@Xâ@u‹@XÚ@XÝ@XÙ@XÞ@u@%Xà@XØ@uˆ@xò@[l@xô@[n@[p@xó@[m@[q@[o@]®@|ª@]¶@|§@]·@%]¬@|¨@]±@|©@]ª@]©@]´@]³@]²@]°@]µ@|¦@]«@]­@]¯@_¿@_Â@%_Æ@_À@_Å@_Ã@_¾@_Ä@_Á@‚û@aË@aÉ@‚ü@aÌ@aÊ@‚ú@‚ù@cz@‚ø@%cx@cw@…ú@aÍ@cy@…û@c|@…ü@c{@dá@ˆ@dà@då@dã@dä@eÍ@dâ@%ˆ@…ý@eÌ@eÎ@f¯@f°@¯@hj@hi@OÖ@iô@Vt@iñ@iò@ið@ió@kK@%kH@kM@kI@O×@OÚ@kJ@OÙ@kL@OØ@lõ@l÷@QÖ@ló@lö@lô@QÔ@Q×@%QÕ@oz@o~@o{@Sè@Sé@o}@o@o‚@Sæ@o@Sç@u”@o|@rW@r`@r^@%rY@rZ@r_@ra@Vv@r\@rX@Vu@Vw@r[@rb@r]@Xä@u—@u@u•@u–@%Xå@uŽ@u@oy@u’@u“@u‘@[s@xû@†A@xü@xù@Xæ@[u@xø@yA@xý@%[r@yD@x÷@yC@xõ@yB@xú@[t@|±@|¬@|²@|­@|«@|®@]¸@|°@|¯@%]¹@_È@_Ç@×@Ú@Ò@Ö@_É@Õ@Ó@Ù@Ô@Ñ@Ø@ƒE@aÐ@Š˜@%ƒB@ƒC@ƒA@xö@aÏ@ƒF@‚ý@aÎ@aÑ@ƒD@†B@c}@†C@†D@ˆ‘@dæ@Š™@%Šš@Š›@Œl@Œk@±@°@ŽÊ@ŽË@ŽÉ@¶@gù@OÛ@Së@Sê@Vz@Vy@rd@%re@rc@Vx@u›@uœ@u˜@Xç@u™@uš@yG@yI@yE@yH@[v@yF@[w@yù@%]¼@]»@]º@|³@|´@Ü@Þ@_Í@_Ê@_Ì@_Ë@Ý@Û@ƒM@ƒJ@ƒK@aÕ@%ƒL@ƒG@ƒH@aÒ@aÓ@ƒI@aÔ@†H@†I@†F@†G@c~@†E@ˆ•@ˆ’@ˆ”@dé@%ˆ˜@dè@ˆ–@ˆ™@ˆ—@ˆ“@dç@Š@Šž@Šœ@Š @eÏ@eÐ@Œn@f²@ŠŸ@Œm@%f±@´@µ@gj@³@²@ŽÌ@g³@y@×@Ö@h@h©@Ø@‘ƒ@h»@OÜ@%QØ@]½@gk@OÝ@Sì@Xè@[x@eÑ@QÙ@o„@oƒ@rf@V}@V{@V@rh@V~@%V|@rg@Xë@u¢@Xê@Xì@u§@Xî@u¤@u¥@u@Xí@u¨@uŸ@u @už@Xé@%u¦@u¡@u£@yU@yT@yR@yJ@yY@yM@yW@y^@yV@[@[|@yK@yQ@[~@%yP@[@[‚@yS@[y@[z@y_@y]@y\@yN@yZ@[}@[{@y[@yL@yO@yX@%€D@|¾@|·@|Ê@|Ó@|º@]È@|Ç@]¾@]À@]Ì@|¸@]Á@]Ã@]Í@]Â@]Ë@%|À@|µ@]É@|¿@]Å@|Ñ@]Ê@|Ï@|Ã@|Í@]Ç@|¶@|Ð@|Ë@|Ò@]¿@]Î@%]Ä@|¼@|Ä@|È@|Ì@]Æ@|»@|¹@|Å@|Â@|Á@|Æ@|É@|Î@á@_Î@ë@%ã@_Ó@_×@ô@ü@í@_Ï@ñ@|½@_Ð@ø@ý@õ@÷@€C@ù@ç@%ð@_Ø@_Ô@å@ò@_Ò@ì@_Ñ@ú@é@â@_Õ@€B@ä@ö@ó@î@%à@ß@è@û@_Ö@€A@æ@ê@aÚ@aâ@aÝ@ƒn@ƒk@ƒS@aØ@a×@aÞ@%ƒQ@aÜ@ƒ]@ƒO@ƒP@aÖ@ƒm@aà@ƒ`@ƒe@ƒ_@†[@ƒ[@ƒc@ƒa@ƒT@ƒN@%ƒi@aß@ƒj@ƒd@ƒY@ƒW@ƒR@ƒZ@ƒg@ƒV@ƒf@ƒl@aÛ@ƒb@ƒh@ƒ^@ƒX@%aÙ@ï@ƒ\@aá@ƒU@†a@c‚@†`@†]@†p@c†@†m@†e@†o@†V@†c@cˆ@%†N@†L@†n@†l@†k@†Z@†Y@†O@cŠ@†U@†_@†j@c@†q@dñ@c@c‰@%†S@†\@†K@†M@c@cŒ@c…@†T@†d@†^@c‹@†J@dì@†f@†i@c‡@†X@%cŽ@c„@cƒ@†b@†h@c@†Q@†g@†R@†W@ˆŸ@ˆ¤@dî@dð@ˆª@dê@ˆ¹@%ˆ°@ˆ¥@ˆ¦@ˆ¯@d÷@ˆ®@ˆž@ˆ­@ˆ¡@ˆº@dö@dô@ˆ¢@ˆµ@ˆ§@ˆ´@ˆ¶@%ˆ@dï@ˆ·@ˆ«@dó@ˆ¨@dõ@ˆ±@dí@ˆ£@ˆ²@ˆ¬@†P@ˆ³@ˆ @dò@ˆ¸@%dë@ˆ›@Š®@Š§@eÓ@Š¢@Š±@Š©@ˆ©@Š³@Š£@eÒ@Š­@eÔ@eÜ@eÚ@Š¯@%eÛ@Š¥@Š¦@Š«@Š°@ˆš@eÕ@Š¸@Šµ@Š¹@Š¬@Š¨@Š¶@Œy@Šª@eØ@e×@%ˆœ@eÙ@Š²@Š´@eÖ@Š·@Š¡@Š¤@Œƒ@Œr@f¶@Œ@Œp@f·@Œ{@Œw@f¼@%Œ‚@Œq@Œt@f´@Œ„@Œ|@Œ@fº@f¿@f½@Œx@Œs@f¸@f¹@Œo@fµ@f³@%f»@Œ~@f¾@Œz@Œ…@fÀ@Œv@Œ}@Â@Ð@Ä@Ë@Œu@É@¸@Î@gn@%¼@Í@Ã@gm@Ò@Å@Ê@Ì@¶@Ï@Á@Æ@º@¾@Ñ@È@·@%»@½@Ç@gl@À@¹@¿@ŽÐ@ŽÕ@gº@Ž×@g´@ŽÓ@ŽÙ@g¹@gµ@g¶@%ŽÏ@ŽÖ@g¸@ŽÔ@g·@ŽÎ@ŽÒ@ŽÑ@ŽÍ@ŽØ@gú@½@À@¼@¾@¿@¹@%º@·@»@¸@gû@gü@{@}@|@~@hl@z@hk@hm@Ú@Û@h@%Ù@‘d@‘c@‘e@h«@‘f@hª@‘g@‘„@‘‡@‘†@h´@‘…@h¾@h¼@h½@hÃ@%‘°@‘±@‘¯@‘¹@QÚ@u©@y`@ƒo@Œ†@QÛ@Sí@V@uª@u«@Xï@[…@yb@%ya@[‰@[„@yc@[†@[ˆ@[‡@[ƒ@]Ï@|×@|Õ@|Ö@|Ô@_Ù@_Ü@_Þ@_Ý@%_Ú@_Û@ƒq@ƒp@aã@ƒr@ƒs@aä@†y@†w@ˆÀ@†u@†v@c@†r@†z@†t@%†x@ˆ¼@ˆ¾@ˆ¿@dü@ˆ»@dû@ˆ½@dø@dù@dú@†s@eß@Š¼@Šº@Š»@eÝ@%eà@eÞ@Œ‡@Œˆ@fÁ@Ó@Õ@Ô@go@g»@ŽÜ@ŽÛ@ŽÚ@QÜ@iŠ@i÷@N‹@%iõ@iø@iö@kO@Oá@Oâ@kQ@Oß@kP@kN@Oà@OÞ@lø@lû@Qß@lú@lù@%QÞ@QÝ@Qá@lü@Qà@o‰@Sï@Sð@Sñ@oŠ@o†@Sî@o‡@oˆ@o…@Vˆ@V…@%ri@V†@V‰@rj@V„@V‚@Vƒ@V‡@Xð@u®@Xø@u­@u°@Xô@u¯@[‘@Xò@%Xõ@Xñ@Xö@X÷@Xó@u¬@[@ye@yi@yh@[’@[Ž@[@yd@yf@yg@[Š@%[Œ@[@[‹@|Ú@|Ø@|Ù@]Ñ@]Ò@|Û@]Ð@_ß@_á@_à@€E@€F@ƒu@ƒt@%c‘@c’@†{@c“@ˆÃ@ˆÁ@ˆÂ@dý@Š½@fÂ@Hë@eA@Qâ@VŠ@rk@u±@Xù@%[“@yj@yl@[•@[”@[–@[—@yk@]Õ@]Ö@]Ô@_â@]Ó@|Ü@_ã@ƒv@†|@%c”@eB@Š¾@ŠÂ@eã@Š¿@eä@eâ@ŠÃ@eå@ŠÁ@Œ‰@eá@fÃ@Ü@Qã@Xû@%Xú@[˜@yn@ym@[™@|à@]Ú@]×@|ß@]Ù@|Ý@]Ø@|Þ@€G@_ä@ƒy@aå@%ƒw@aæ@aç@ƒx@aè@†}@c˜@c•@cš@†@c–@†~@c™@c—@ˆÆ@ˆÈ@eC@%ˆÇ@eD@ˆÅ@ˆÄ@ŠÅ@ŠÄ@eæ@ŠÆ@ŒŽ@fÅ@Œ@ŒŠ@fÄ@Œ‹@ŒŒ@Ö@×@%gp@g¾@ŽÝ@g¼@g½@ŽÞ@gý@hA@Á@h‘@Þ@h“@Ý@ß@h’@‘h@‘@%Qä@]Û@€H@ƒz@c›@cœ@Qå@aé@fÆ@Sò@c@hn@Só@u²@yo@yq@yp@%|ä@|á@]Ü@]Ý@|â@|ã@€J@€O@_å@€I@€K@€R@€M@€Q@€N@€L@€P@%_æ@ƒ}@ƒ{@aë@aê@ƒ|@aì@†ƒ@†‚@cž@†@ˆÉ@ˆË@ˆÍ@ˆÌ@eE@ˆÊ@%ŠÍ@eç@ŠË@ŠÎ@eè@ŠÉ@ŠÌ@ŠÊ@ŠÇ@eé@ŠÈ@Œ@Œ‘@Œ@Ø@Ù@Žß@%hC@hB@@@h”@à@hµ@Sô@[š@€T@€S@ƒ@ƒ~@eF@ˆÏ@ˆÎ@ŠÑ@%ŠÏ@ŠÒ@ŠÐ@fÇ@Œ’@Œ“@Œ”@Žà@Â@á@Sõ@†„@ˆÐ@Sö@_ç@†…@eê@%ŠÓ@fÈ@Ú@Û@g¿@‚@S÷@YA@YB@u³@[›@[œ@yr@[@]á@]ã@|æ@%|ç@|å@]Þ@]ß@]â@]à@€U@_è@_é@ƒ‡@aï@ƒ‚@ƒ@ƒ†@aí@c¥@ƒƒ@%ƒˆ@ƒ…@ƒ„@aî@c£@†‡@cŸ@†ˆ@††@c¢@c @c¤@c¡@ˆÑ@ˆÖ@ˆÒ@ˆÕ@%eG@‡À@ˆÔ@ˆÓ@eí@eë@eî@eì@ŠÔ@ŠÕ@ŠÖ@eï@Œ˜@fÊ@Œ–@fË@Œ•@%Œ—@fÉ@ß@Ü@Ý@Þ@Žá@gÁ@gÀ@Ä@Ã@hD@ho@h•@h¬@‘i@‘ž@%‘Ÿ@Sø@ys@|è@€V@€W@_ê@_ë@ƒ‰@að@eH@Š×@eð@Œ›@fÌ@Œš@Œœ@%Œ™@Žä@à@á@gq@Žã@Žâ@Å@‘ @Sù@Sú@V‹@rl@u´@[ž@[¡@[Ÿ@%yt@[£@[ @[¢@]å@|é@|ê@ƒ‹@]ä@]æ@]ç@€Y@€X@_ì@_í@€Z@ƒŠ@%_ï@añ@_î@c¦@ƒŒ@aó@aò@ƒ@ƒ@ƒŽ@ƒ@aô@c«@c©@c¨@†Š@cª@%†‰@ˆ×@†‹@c§@†Œ@ˆÚ@ˆØ@ˆÙ@ˆÞ@eô@ˆÝ@ˆà@ˆß@ˆÜ@ˆÛ@eI@ŠÚ@%ŠÙ@eó@eñ@eò@ŠØ@ŒŸ@fÍ@Œž@Œ@fÎ@æ@å@ã@â@gs@gr@ç@%Æ@hE@Žæ@gÂ@Žå@ä@Ç@hp@h­@‘j@‘¡@Sû@uµ@ˆá@Sü@€\@€[@%†@ˆã@ˆâ@eõ@Œ @Œ¡@gt@‘¢@VŒ@[¥@[¤@|ë@|í@]é@|ì@]è@]ê@%|î@€^@€`@€_@€b@_ð@€a@€]@€c@ƒ—@ƒš@ƒœ@ƒ’@ƒ–@ƒ“@aö@aù@%aû@ƒ”@ƒ•@aú@ƒ˜@ƒ›@ƒ™@aü@aø@ƒ‘@aõ@a÷@c­@†“@†‘@†@†–@%†•@†”@†@c¬@†Ž@†’@c®@ˆæ@ˆê@ˆç@ˆé@ˆè@ˆå@ˆë@ˆî@ˆì@ˆí@%eK@eJ@ˆä@ˆï@Šß@Šâ@Šä@Šã@ŠÝ@Šá@ŠÜ@ŠÞ@eö@ŠÛ@Šà@Œ®@Œ£@%fÏ@fÐ@Œ¢@Œ§@Œ­@Œ¥@Œ¬@Œ©@Œ¨@Œ«@Œ¦@Œ¤@Œª@î@ì@gu@ë@%ñ@ï@gv@ê@è@é@gx@í@gw@ð@Žç@Ží@Žè@gÆ@Žî@gÅ@Žì@%Žë@gÄ@Žê@gÃ@Žé@Í@Ï@Î@Ë@hG@È@Ì@Ñ@Ð@É@Ê@hF@%ƒ@hs@„@hq@hr@â@h–@‘ˆ@h¶@‘£@h·@‘¤@‘¥@‘³@‘²@hÆ@‘½@%V@|ð@|ï@_ñ@_ò@€d@ƒ@†™@aý@c¯@†—@†š@c°@ˆð@†˜@Šå@e÷@%Œ¯@ô@ò@ó@Žï@gÇ@Ò@hv@hH@ht@hu@ã@h®@VŽ@Šæ@rm@]ë@%€e@_ó@€f@ƒŸ@ƒž@c²@bA@bB@ƒ¢@ƒ¡@ƒ @†›@†ž@†@†œ@c±@ˆô@%ˆò@ˆñ@ˆó@eø@Šè@Šé@eù@Šç@Œ±@Œ°@Œ³@fÑ@Œ²@õ@÷@ö@Žð@%Žó@Žñ@Žò@Ó@hI@…@†@‡@h—@h¯@‘¦@V@bC@c³@Šê@Ô@‘´@%rn@hÇ@V@†Ÿ@Šë@Œ´@Žô@Õ@V‘@€g@€h@_ô@_õ@ƒ¤@bE@bD@ƒ£@%ˆõ@Šì@Šî@Ší@eü@eû@eú@gÉ@Žõ@gÈ@×@Ö@h˜@ä@YC@|ñ@€k@%€i@€j@ƒ­@ƒ¨@ƒ¥@ƒ¬@ƒ®@bG@ƒ«@ƒ§@ƒ¦@ƒª@ƒ©@bF@†ª@†¥@†£@%†¬@†¤@† @†¦@†¡@‰A@†¢@†­@†©@c´@†¨@†§@†«@ˆö@ˆù@ˆø@‰C@%ˆû@‰B@ˆý@ˆü@ˆú@ˆ÷@eN@eM@eO@eL@‰D@Šô@Š÷@Šõ@Šù@Šú@Šò@%fD@Šó@Šñ@Šø@Šð@Šï@fC@fA@eý@Šö@Œ½@ŒÃ@fÔ@Œ¾@ŒÁ@ŒÅ@fÕ@%ŒÀ@Œ¸@Œ·@ŒÄ@Œ»@Œ¹@ŒÂ@Œº@fÓ@fÒ@Œµ@Œ¶@Œ¿@Œ¼@ú@ý@fB@%û@ŽD@ŽB@ù@ŽG@ø@gz@ŽC@ü@gy@ŽF@ŽE@Žø@Ž÷@A@Žú@Žý@%gË@Žû@Žü@Žö@Žù@gÊ@hK@â@Ý@á@ä@à@Ü@hM@ß@ã@hL@%Ú@ŽA@Þ@Û@Ø@Ù@hJ@‹@@@Œ@‘@Š@ˆ@hw@Ž@hy@%hx@‰@@é@h™@ê@è@å@ç@æ@‘k@‘m@‘l@‘‹@‘Š@‘‰@‘Œ@%h¿@hÀ@‘º@‘¾@YD@yu@|ô@]ì@|ò@|ó@€l@€m@_ø@_ö@€n@_÷@ƒ³@%ƒ¶@ƒ°@ƒ·@ƒ¯@ƒ±@ƒ²@ƒµ@bJ@ƒº@ƒ¹@bH@ƒ´@ƒ¸@bI@†·@c¹@†²@%cµ@†¯@†µ@†¸@cº@†´@†±@†¹@†°@†¶@c¶@†®@c·@c¸@†³@‰V@‰I@%‰J@‰M@‰K@‰E@‰H@‰R@‰L@eP@‰T@‰Q@eQ@‰S@‰F@‰O@‰P@‰N@‹A@%‹C@‹F@Šý@fE@‹H@Šü@‹I@‹E@‹G@‹K@‹D@‹L@‹B@Šû@fF@‹J@fG@%f×@‰G@Œß@ŒÖ@fÙ@ŒÒ@fÚ@ŒÛ@ŒÕ@ŒË@fØ@ŒØ@ŒÓ@ŒÔ@ŒÆ@ŒÍ@ŒÜ@%ŒÙ@ŒÑ@ŒÝ@ŒÌ@ŒÇ@ŒÚ@ŒÉ@Œ×@ŒÎ@ŒÞ@ŒÊ@fÖ@ŒÈ@ŒÏ@ŒÐ@ŽN@ŽL@%ŽQ@Ž]@ŽT@ŽM@ŽI@ŽV@ŽO@ŽR@ŽK@ŽY@ŽH@ŽP@ŽU@ŽW@ŽZ@ŽJ@Ž^@%Ž_@ŽX@Ž\@ŽS@Q@T@gÌ@S@X@V@gÍ@M@C@B@gÏ@O@P@%L@D@I@Ž[@E@gÎ@K@J@F@R@G@é@U@W@N@H@ê@%ì@æ@hN@ó@ñ@hO@ð@ï@è@å@ë@ô@ç@í@š@Ÿ@•@%˜@hz@œ@£@î@–@ @¤@›@”@ž@@¢@¡@ò@™@“@%—@hš@h›@’@õ@ì@ô@ñ@ò@ë@î@ö@ð@ï@í@ó@‘n@%‘o@‘q@‘p@‘s@‘r@‘Ž@‘@‘§@‘¨@‘µ@hÄ@hÈ@‘¿@hÉ@YE@g{@Y@%hœ@h@YF@|õ@]í@ƒ»@†»@†¼@†º@‰X@‰W@eR@‹N@‰Y@‹M@Œá@fÛ@%fÝ@Œà@fÜ@Ž`@Žb@Ža@Z@gÐ@h{@÷@‘t@‘Â@YG@€o@bK@†¾@†½@%‰Z@fÞ@g|@õ@‘»@YH@_ù@bL@Œâ@¥@[¦@‰[@h°@[§@bM@eS@¦@%[¨@ƒ¼@c¼@†¿@†À@c»@‰\@eW@eU@eV@eT@‹O@fH@Žd@Žc@Žf@Že@%g}@[@]@\@gÑ@ö@§@¨@h|@‘u@‘@hÁ@yv@†Á@‰]@Œã@|ö@%‰^@‹Q@‹P@©@hž@‘v@‘@]î@ƒ½@ƒ¾@†Â@]ï@fI@‹R@_@gÒ@`@%^@ª@ø@]ð@‰a@‰`@‰_@‹S@‹W@‹V@‹U@‹T@fJ@Œä@Žh@g~@Žg@%a@ù@ø@hP@÷@­@¬@«@_ú@†Ã@eX@Œå@Œæ@ú@®@ù@‘w@%‘©@‘Ä@_û@eY@‹X@Œç@b@¯@bO@‰b@‹Y@Œè@Œé@Œê@Žm@Ži@gÓ@%Žl@Žk@g@Žj@g‚@g@d@c@gÔ@gÕ@hR@û@hQ@²@³@±@°@%h @ú@û@ü@hŸ@‘x@‘{@‘z@‘y@‘Ã@c½@fQ@Žn@e@hS@ü@‘Å@%c¾@‰c@ý@‘‘@ÂA@ÂB@ÂC@ÂD@ÂE@ÂF@ÂG@ÂH@ÂI@ÂJ@ÂK@ÂL@ÂM@%ÂN@ÂO@ÂP@ÂQ@ÂR@ÂS@ÂT@ÂU@ÂV@ÂW@ÂX@ÂY@ÂZ@Â[@Â\@Â]@Â^@%Â_@Â`@Âa@Âb@Âc@Âd@Âe@Âf@Âg@Âh@Âi@Âj@Âk@Âl@Âm@Ân@Âo@%Âp@Âq@Âr@Âs@Ât@Âu@Âv@Âw@Âx@Ây@Âz@Â{@Â|@Â}@Â~@Â@Â@%‚@ƒ@„@Â…@†@‡@ˆ@‰@Š@‹@ÂŒ@Â@ÂŽ@Â@Â@‘@Â’@%“@”@•@–@—@˜@™@š@›@Âœ@Â@ž@Ÿ@ @¡@¢@£@%¤@Â¥@¦@§@¨@©@ª@«@¬@­@®@¯@°@±@²@³@´@%µ@¶@·@¸@¹@º@»@¼@½@¾@¿@ÂÀ@ÂÁ@ÂÂ@ÂÃ@ÂÄ@ÂÅ@%ÂÆ@ÂÇ@ÂÈ@ÂÉ@ÂÊ@ÂË@ÂÌ@ÂÍ@ÂÎ@ÂÏ@ÂÐ@ÂÑ@ÂÒ@ÂÓ@ÂÔ@ÂÕ@ÂÖ@%Â×@ÂØ@ÂÙ@ÂÚ@ÂÛ@ÂÜ@ÂÝ@ÂÞ@Âß@Âà@Âá@Ââ@Âã@Âä@Âå@Âæ@Âç@%Âè@Âé@Âê@Âë@Âì@Âí@Âî@Âï@Âð@Âñ@Âò@Âó@Âô@Âõ@Âö@Â÷@Âø@%Âù@Âú@Âû@Âü@Âý@ÃA@ÃB@ÃC@ÃD@ÃE@ÃF@ÃG@ÃH@ÃI@ÃJ@ÃK@ÃL@%ÃM@ÃN@ÃO@ÃP@ÃQ@ÃR@ÃS@ÃT@ÃU@ÃV@ÃW@ÃX@ÃY@ÃZ@Ã[@Ã\@Ã]@%Ã^@Ã_@Ã`@Ãa@Ãb@Ãc@Ãd@Ãe@Ãf@Ãg@Ãh@Ãi@Ãj@Ãk@Ãl@Ãm@Ãn@%Ão@Ãp@Ãq@Ãr@Ãs@Ãt@Ãu@Ãv@Ãw@Ãx@Ãy@Ãz@Ã{@Ã|@Ã}@Ã~@Ã@%Ã@Â@Ã@Ä@Ã…@Æ@Ç@È@É@Ê@Ë@ÃŒ@Ã@ÃŽ@Ã@Ã@Ñ@%Ã’@Ó@Ô@Õ@Ö@×@Ø@Ù@Ú@Û@Ãœ@Ã@Þ@ß@à@á@â@%ã@ä@Ã¥@æ@ç@è@é@ê@ë@ì@í@î@ï@ð@ñ@ò@ó@%ô@õ@ö@÷@ø@ù@ú@û@ü@ý@þ@ÿ@ÃÀ@ÃÁ@ÃÂ@ÃÃ@ÃÄ@%ÃÅ@ÃÆ@ÃÇ@ÃÈ@ÃÉ@ÃÊ@ÃË@ÃÌ@ÃÍ@ÃÎ@ÃÏ@ÃÐ@ÃÑ@ÃÒ@ÃÓ@ÃÔ@ÃÕ@%ÃÖ@Ã×@ÃØ@ÃÙ@ÃÚ@ÃÛ@ÃÜ@ÃÝ@ÃÞ@Ãß@Ãà@Ãá@Ãâ@Ãã@Ãä@Ãå@Ãæ@%Ãç@Ãè@Ãé@Ãê@Ãë@Ãì@Ãí@Ãî@Ãï@Ãð@Ãñ@Ãò@Ãó@Ãô@Ãõ@Ãö@Ã÷@%Ãø@Ãù@Ãú@Ãû@Ãü@Ãý@ÄA@ÄB@ÄC@ÄD@ÄE@ÄF@ÄG@ÄH@ÄI@ÄJ@ÄK@%ÄL@ÄM@ÄN@ÄO@ÄP@ÄQ@ÄR@ÄS@ÄT@ÄU@ÄV@ÄW@ÄX@ÄY@ÄZ@Ä[@Ä\@%Ä]@Ä^@Ä_@Ä`@Äa@Äb@Äc@Äd@Äe@Äf@Äg@Äh@Äi@Äj@Äk@Äl@Äm@%Än@Äo@Äp@Äq@Är@Äs@Ät@Äu@Äv@Äw@Äx@Äy@Äz@Ä{@Ä|@Ä}@Ä~@%Ä@Ä@Ä‚@ă@Ä„@Ä…@Ć@ć@Ĉ@ĉ@ÄŠ@Ä‹@ÄŒ@Ä@ÄŽ@Ä@Ä@%Ä‘@Ä’@Ä“@Ä”@Ä•@Ä–@Ä—@Ę@Ä™@Äš@Ä›@Äœ@Ä@Äž@ÄŸ@Ä @Ä¡@%Ä¢@Ä£@Ĥ@Ä¥@Ħ@ħ@Ĩ@Ä©@Ī@Ä«@Ĭ@Ä­@Ä®@į@Ä°@ı@IJ@%ij@Ä´@ĵ@Ķ@Ä·@ĸ@Ĺ@ĺ@Ä»@ļ@Ľ@ľ@Ä¿@ÄÀ@ÄÁ@ÄÂ@ÄÃ@%ÄÄ@ÄÅ@ÄÆ@ÄÇ@ÄÈ@ÄÉ@ÄÊ@ÄË@ÄÌ@ÄÍ@ÄÎ@ÄÏ@ÄÐ@ÄÑ@ÄÒ@ÄÓ@ÄÔ@%ÄÕ@ÄÖ@Ä×@ÄØ@ÄÙ@ÄÚ@ÄÛ@ÄÜ@ÄÝ@ÄÞ@Äß@Äà@Äá@Äâ@Äã@Ää@Äå@%Äæ@Äç@Äè@Äé@Äê@Äë@Äì@Äí@Äî@Äï@Äð@Äñ@Äò@Äó@Äô@Äõ@Äö@%Ä÷@Äø@Äù@Äú@Äû@Äü@Äý@ÅA@ÅB@ÅC@ÅD@ÅE@ÅF@ÅG@ÅH@ÅI@ÅJ@%ÅK@ÅL@ÅM@ÅN@ÅO@ÅP@ÅQ@ÅR@ÅS@ÅT@ÅU@ÅV@ÅW@ÅX@ÅY@ÅZ@Å[@%Å\@Å]@Å^@Å_@Å`@Åa@Åb@Åc@Åd@Åe@Åf@Åg@Åh@Åi@Åj@Åk@Ål@%Åm@Ån@Åo@Åp@Åq@År@Ås@Åt@Åu@Åv@Åw@Åx@Åy@Åz@Å{@Å|@Å}@%Å~@Å@Å@Å‚@Ń@Å„@Å…@ņ@Ň@ň@ʼn@ÅŠ@Å‹@ÅŒ@Å@ÅŽ@Å@%Å@Å‘@Å’@Å“@Å”@Å•@Å–@Å—@Ř@Å™@Åš@Å›@Åœ@Å@Åž@ÅŸ@Å @%Å¡@Å¢@Å£@Ť@Å¥@Ŧ@ŧ@Ũ@Å©@Ū@Å«@Ŭ@Å­@Å®@ů@Å°@ű@%Ų@ų@Å´@ŵ@Ŷ@Å·@Ÿ@Ź@ź@Å»@ż@Ž@ž@Å¿@ÅÀ@ÅÁ@ÅÂ@%ÅÃ@ÅÄ@ÅÅ@ÅÆ@ÅÇ@ÅÈ@ÅÉ@ÅÊ@ÅË@ÅÌ@ÅÍ@ÅÎ@ÅÏ@ÅÐ@ÅÑ@ÅÒ@ÅÓ@%ÅÔ@ÅÕ@ÅÖ@Å×@ÅØ@ÅÙ@ÅÚ@ÅÛ@ÅÜ@ÅÝ@ÅÞ@Åß@Åà@Åá@Åâ@Åã@Åä@%Åå@Åæ@Åç@Åè@Åé@Åê@Åë@Åì@Åí@Åî@Åï@Åð@Åñ@Åò@Åó@Åô@Åõ@%Åö@Å÷@Åø@Åù@Åú@Åû@Åü@Åý@ÆA@ÆB@ÆC@ÆD@ÆE@ÆF@ÆG@ÆH@ÆI@%ÆJ@ÆK@ÆL@ÆM@ÆN@ÆO@ÆP@ÆQ@ÆR@ÆS@ÆT@ÆU@ÆV@ÆW@ÆX@ÆY@ÆZ@%Æ[@Æ\@Æ]@Æ^@Æ_@Æ`@Æa@Æb@Æc@Æd@Æe@Æf@Æg@Æh@Æi@Æj@Æk@%Æl@Æm@Æn@Æo@Æp@Æq@Ær@Æs@Æt@Æu@Æv@Æw@Æx@Æy@Æz@Æ{@Æ|@%Æ}@Æ~@Æ@Æ@Æ‚@ƃ@Æ„@Æ…@Ɔ@Ƈ@ƈ@Ɖ@ÆŠ@Æ‹@ÆŒ@Æ@ÆŽ@%Æ@Æ@Æ‘@Æ’@Æ“@Æ”@Æ•@Æ–@Æ—@Ƙ@Æ™@Æš@Æ›@Æœ@Æ@Æž@ÆŸ@%Æ @Æ¡@Æ¢@Æ£@Ƥ@Æ¥@Ʀ@Ƨ@ƨ@Æ©@ƪ@Æ«@Ƭ@Æ­@Æ®@Ư@Æ°@%Ʊ@Ʋ@Ƴ@Æ´@Ƶ@ƶ@Æ·@Ƹ@ƹ@ƺ@Æ»@Ƽ@ƽ@ƾ@Æ¿@ÆÀ@ÆÁ@%ÆÂ@ÆÃ@ÆÄ@ÆÅ@ÆÆ@ÆÇ@ÆÈ@ÆÉ@ÆÊ@ÆË@ÆÌ@ÆÍ@ÆÎ@ÆÏ@ÆÐ@ÆÑ@ÆÒ@%ÆÓ@ÆÔ@ÆÕ@ÆÖ@Æ×@ÆØ@ÆÙ@ÆÚ@ÆÛ@ÆÜ@ÆÝ@ÆÞ@Æß@Æà@Æá@Æâ@Æã@%Æä@Æå@Ææ@Æç@Æè@Æé@Æê@Æë@Æì@Æí@Æî@Æï@Æð@Æñ@Æò@Æó@Æô@%Æõ@Æö@Æ÷@Æø@Æù@Æú@Æû@Æü@Æý@ÇA@ÇB@ÇC@ÇD@ÇE@ÇF@ÇG@ÇH@%ÇI@ÇJ@ÇK@ÇL@ÇM@ÇN@ÇO@ÇP@ÇQ@ÇR@ÇS@ÇT@ÇU@ÇV@ÇW@ÇX@ÇY@%ÇZ@Ç[@Ç\@Ç]@Ç^@Ç_@Ç`@Ça@Çb@Çc@Çd@Çe@Çf@Çg@Çh@Çi@Çj@%Çk@Çl@Çm@Çn@Ço@Çp@Çq@Çr@Çs@Çt@Çu@Çv@Çw@Çx@Çy@Çz@Ç{@%Ç|@Ç}@Ç~@Ç@Ç@Ç‚@ǃ@Ç„@Ç…@dž@LJ@Lj@lj@ÇŠ@Ç‹@ÇŒ@Ç@%ÇŽ@Ç@Ç@Ç‘@Ç’@Ç“@Ç”@Ç•@Ç–@Ç—@ǘ@Ç™@Çš@Ç›@Çœ@Ç@Çž@%ÇŸ@Ç @Ç¡@Ç¢@Ç£@Ǥ@Ç¥@Ǧ@ǧ@Ǩ@Ç©@Ǫ@Ç«@Ǭ@Ç­@Ç®@ǯ@%Ç°@DZ@Dz@dz@Ç´@ǵ@Ƕ@Ç·@Ǹ@ǹ@Ǻ@Ç»@Ǽ@ǽ@Ǿ@Ç¿@ÇÀ@%ÇÁ@ÇÂ@ÇÃ@ÇÄ@ÇÅ@ÇÆ@ÇÇ@ÇÈ@ÇÉ@ÇÊ@ÇË@ÇÌ@ÇÍ@ÇÎ@ÇÏ@ÇÐ@ÇÑ@%ÇÒ@ÇÓ@ÇÔ@ÇÕ@ÇÖ@Ç×@ÇØ@ÇÙ@ÇÚ@ÇÛ@ÇÜ@ÇÝ@ÇÞ@Çß@Çà@Çá@Çâ@%Çã@Çä@Çå@Çæ@Çç@Çè@Çé@Çê@Çë@Çì@Çí@Çî@Çï@Çð@Çñ@Çò@Çó@%Çô@Çõ@Çö@Ç÷@Çø@Çù@Çú@Çû@Çü@Çý@ÈA@ÈB@ÈC@ÈD@ÈE@ÈF@ÈG@%ÈH@ÈI@ÈJ@ÈK@ÈL@ÈM@ÈN@ÈO@ÈP@ÈQ@ÈR@ÈS@ÈT@ÈU@ÈV@ÈW@ÈX@%ÈY@ÈZ@È[@È\@È]@È^@È_@È`@Èa@Èb@Èc@Èd@Èe@Èf@Èg@Èh@Èi@%Èj@Èk@Èl@Èm@Èn@Èo@Èp@Èq@Èr@Ès@Èt@Èu@Èv@Èw@Èx@Èy@Èz@%È{@È|@È}@È~@È@È@È‚@ȃ@È„@È…@Ȇ@ȇ@Ȉ@ȉ@ÈŠ@È‹@ÈŒ@%È@ÈŽ@È@È@È‘@È’@È“@È”@È•@È–@È—@Ș@È™@Èš@È›@Èœ@È@%Èž@ÈŸ@È @È¡@È¢@È£@Ȥ@È¥@Ȧ@ȧ@Ȩ@È©@Ȫ@È«@Ȭ@È­@È®@%ȯ@È°@ȱ@Ȳ@ȳ@È´@ȵ@ȶ@È·@ȸ@ȹ@Ⱥ@È»@ȼ@Ƚ@Ⱦ@È¿@%ÈÀ@ÈÁ@ÈÂ@ÈÃ@ÈÄ@ÈÅ@ÈÆ@ÈÇ@ÈÈ@ÈÉ@ÈÊ@ÈË@ÈÌ@ÈÍ@ÈÎ@ÈÏ@ÈÐ@%ÈÑ@ÈÒ@ÈÓ@ÈÔ@ÈÕ@ÈÖ@È×@ÈØ@ÈÙ@ÈÚ@ÈÛ@ÈÜ@ÈÝ@ÈÞ@Èß@Èà@Èá@%Èâ@Èã@Èä@Èå@Èæ@Èç@Èè@Èé@Èê@Èë@Èì@Èí@Èî@Èï@Èð@Èñ@Èò@%Èó@Èô@Èõ@Èö@È÷@Èø@Èù@Èú@Èû@Èü@Èý@ÉA@ÉB@ÉC@ÉD@ÉE@ÉF@%ÉG@ÉH@ÉI@ÉJ@ÉK@ÉL@ÉM@ÉN@ÉO@ÉP@ÉQ@ÉR@ÉS@ÉT@ÉU@ÉV@ÉW@%ÉX@ÉY@ÉZ@É[@É\@É]@É^@É_@É`@Éa@Éb@Éc@Éd@Ée@Éf@Ég@Éh@%Éi@Éj@Ék@Él@Ém@Én@Éo@Ép@Éq@Ér@És@Ét@Éu@Év@Éw@Éx@Éy@%Éz@É{@É|@É}@É~@É@É@É‚@Ƀ@É„@É…@Ɇ@ɇ@Ɉ@ɉ@ÉŠ@É‹@%ÉŒ@É@ÉŽ@É@É@É‘@É’@É“@É”@É•@É–@É—@ɘ@É™@Éš@É›@Éœ@%É@Éž@ÉŸ@É @É¡@É¢@É£@ɤ@É¥@ɦ@ɧ@ɨ@É©@ɪ@É«@ɬ@É­@%É®@ɯ@É°@ɱ@ɲ@ɳ@É´@ɵ@ɶ@É·@ɸ@ɹ@ɺ@É»@ɼ@ɽ@ɾ@%É¿@ÉÀ@ÉÁ@ÉÂ@ÉÃ@ÉÄ@ÉÅ@ÉÆ@ÉÇ@ÉÈ@ÉÉ@ÉÊ@ÉË@ÉÌ@ÉÍ@ÉÎ@ÉÏ@%ÉÐ@ÉÑ@ÉÒ@ÉÓ@ÉÔ@ÉÕ@ÉÖ@É×@ÉØ@ÉÙ@ÉÚ@ÉÛ@ÉÜ@ÉÝ@ÉÞ@Éß@Éà@%Éá@Éâ@Éã@Éä@Éå@Éæ@Éç@Éè@Éé@Éê@Éë@Éì@Éí@Éî@Éï@Éð@Éñ@%Éò@Éó@Éô@Éõ@Éö@É÷@Éø@Éù@Éú@Éû@Éü@Éý@ÊA@ÊB@ÊC@ÊD@ÊE@%ÊF@ÊG@ÊH@ÊI@ÊJ@ÊK@ÊL@ÊM@ÊN@ÊO@ÊP@ÊQ@ÊR@ÊS@ÊT@ÊU@ÊV@%ÊW@ÊX@ÊY@ÊZ@Ê[@Ê\@Ê]@Ê^@Ê_@Ê`@Êa@Êb@Êc@Êd@Êe@Êf@Êg@%Êh@Êi@Êj@Êk@Êl@Êm@Ên@Êo@Êp@Êq@Êr@Ês@Êt@Êu@Êv@Êw@Êx@%Êy@Êz@Ê{@Ê|@Ê}@Ê~@Ê@Ê@Ê‚@ʃ@Ê„@Ê…@ʆ@ʇ@ʈ@ʉ@ÊŠ@%Ê‹@ÊŒ@Ê@ÊŽ@Ê@Ê@Ê‘@Ê’@Ê“@Ê”@Ê•@Ê–@Ê—@ʘ@Ê™@Êš@Ê›@%Êœ@Ê@Êž@ÊŸ@Ê @Ê¡@Ê¢@Ê£@ʤ@Ê¥@ʦ@ʧ@ʨ@Ê©@ʪ@Ê«@ʬ@%Ê­@Ê®@ʯ@Ê°@ʱ@ʲ@ʳ@Ê´@ʵ@ʶ@Ê·@ʸ@ʹ@ʺ@Ê»@ʼ@ʽ@%ʾ@Ê¿@ÊÀ@ÊÁ@ÊÂ@ÊÃ@ÊÄ@ÊÅ@ÊÆ@ÊÇ@ÊÈ@ÊÉ@ÊÊ@ÊË@ÊÌ@ÊÍ@ÊÎ@%ÊÏ@ÊÐ@ÊÑ@ÊÒ@ÊÓ@ÊÔ@ÊÕ@ÊÖ@Ê×@ÊØ@ÊÙ@ÊÚ@ÊÛ@ÊÜ@ÊÝ@ÊÞ@Êß@%Êà@Êá@Êâ@Êã@Êä@Êå@Êæ@Êç@Êè@Êé@Êê@Êë@Êì@Êí@Êî@Êï@Êð@%Êñ@Êò@Êó@Êô@Êõ@Êö@Ê÷@Êø@Êù@Êú@Êû@Êü@Êý@ËA@ËB@ËC@ËD@%ËE@ËF@ËG@ËH@ËI@ËJ@ËK@ËL@ËM@ËN@ËO@ËP@ËQ@ËR@ËS@ËT@ËU@%ËV@ËW@ËX@ËY@ËZ@Ë[@Ë\@Ë]@Ë^@Ë_@Ë`@Ëa@Ëb@Ëc@Ëd@Ëe@Ëf@%Ëg@Ëh@Ëi@Ëj@Ëk@Ël@Ëm@Ën@Ëo@Ëp@Ëq@Ër@Ës@Ët@Ëu@Ëv@Ëw@%Ëx@Ëy@Ëz@Ë{@Ë|@Ë}@Ë~@Ë@Ë@Ë‚@˃@Ë„@Ë…@ˆ@ˇ@ˈ@ˉ@%ËŠ@Ë‹@ËŒ@Ë@ËŽ@Ë@Ë@Ë‘@Ë’@Ë“@Ë”@Ë•@Ë–@Ë—@˘@Ë™@Ëš@%Ë›@Ëœ@Ë@Ëž@ËŸ@Ë @Ë¡@Ë¢@Ë£@ˤ@Ë¥@˦@˧@˨@Ë©@˪@Ë«@%ˬ@Ë­@Ë®@˯@Ë°@˱@˲@˳@Ë´@˵@˶@Ë·@˸@˹@˺@Ë»@˼@%˽@˾@Ë¿@ËÀ@ËÁ@ËÂ@ËÃ@ËÄ@ËÅ@ËÆ@ËÇ@ËÈ@ËÉ@ËÊ@ËË@ËÌ@ËÍ@%ËÎ@ËÏ@ËÐ@ËÑ@ËÒ@ËÓ@ËÔ@ËÕ@ËÖ@Ë×@ËØ@ËÙ@ËÚ@ËÛ@ËÜ@ËÝ@ËÞ@%Ëß@Ëà@Ëá@Ëâ@Ëã@Ëä@Ëå@Ëæ@Ëç@Ëè@Ëé@Ëê@Ëë@Ëì@Ëí@Ëî@Ëï@%Ëð@Ëñ@Ëò@Ëó@Ëô@Ëõ@Ëö@Ë÷@Ëø@Ëù@Ëú@Ëû@Ëü@Ëý@ÌA@ÌB@ÌC@%ÌD@ÌE@ÌF@ÌG@ÌH@ÌI@ÌJ@ÌK@ÌL@ÌM@ÌN@ÌO@ÌP@ÌQ@ÌR@ÌS@ÌT@%ÌU@ÌV@ÌW@ÌX@ÌY@ÌZ@Ì[@Ì\@Ì]@Ì^@Ì_@Ì`@Ìa@Ìb@Ìc@Ìd@Ìe@%Ìf@Ìg@Ìh@Ìi@Ìj@Ìk@Ìl@Ìm@Ìn@Ìo@Ìp@Ìq@Ìr@Ìs@Ìt@Ìu@Ìv@%Ìw@Ìx@Ìy@Ìz@Ì{@Ì|@Ì}@Ì~@Ì@Ì@Ì‚@̃@Ì„@Ì…@̆@̇@̈@%̉@ÌŠ@Ì‹@ÌŒ@Ì@ÌŽ@Ì@Ì@Ì‘@Ì’@Ì“@Ì”@Ì•@Ì–@Ì—@̘@Ì™@%Ìš@Ì›@Ìœ@Ì@Ìž@ÌŸ@Ì @Ì¡@Ì¢@Ì£@̤@Ì¥@̦@̧@̨@Ì©@̪@%Ì«@̬@Ì­@Ì®@̯@Ì°@̱@̲@̳@Ì´@̵@̶@Ì·@̸@̹@̺@Ì»@%̼@̽@̾@Ì¿@ÌÀ@ÌÁ@ÌÂ@ÌÃ@ÌÄ@ÌÅ@ÌÆ@ÌÇ@ÌÈ@ÌÉ@ÌÊ@ÌË@ÌÌ@%ÌÍ@ÌÎ@ÌÏ@ÌÐ@ÌÑ@ÌÒ@ÌÓ@ÌÔ@ÌÕ@ÌÖ@Ì×@ÌØ@ÌÙ@ÌÚ@ÌÛ@ÌÜ@ÌÝ@%ÌÞ@Ìß@Ìà@Ìá@Ìâ@Ìã@Ìä@Ìå@Ìæ@Ìç@Ìè@Ìé@Ìê@Ìë@Ìì@Ìí@Ìî@%Ìï@Ìð@Ìñ@Ìò@Ìó@Ìô@Ìõ@Ìö@Ì÷@Ìø@Ìù@Ìú@Ìû@Ìü@Ìý@ÍA@ÍB@%ÍC@ÍD@ÍE@ÍF@ÍG@ÍH@ÍI@ÍJ@ÍK@ÍL@ÍM@ÍN@ÍO@ÍP@ÍQ@ÍR@ÍS@%ÍT@ÍU@ÍV@ÍW@ÍX@ÍY@ÍZ@Í[@Í\@Í]@Í^@Í_@Í`@Ía@Íb@Íc@Íd@%Íe@Íf@Íg@Íh@Íi@Íj@Ík@Íl@Ím@Ín@Ío@Íp@Íq@Ír@Ís@Ít@Íu@%Ív@Íw@Íx@Íy@Íz@Í{@Í|@Í}@Í~@Í@Í@Í‚@̓@Í„@Í…@͆@͇@%͈@͉@ÍŠ@Í‹@ÍŒ@Í@ÍŽ@Í@Í@Í‘@Í’@Í“@Í”@Í•@Í–@Í—@͘@%Í™@Íš@Í›@Íœ@Í@Íž@ÍŸ@Í @Í¡@Í¢@Í£@ͤ@Í¥@ͦ@ͧ@ͨ@Í©@%ͪ@Í«@ͬ@Í­@Í®@ͯ@Í°@ͱ@Ͳ@ͳ@Í´@͵@Ͷ@Í·@͸@͹@ͺ@%Í»@ͼ@ͽ@;@Í¿@ÍÀ@ÍÁ@ÍÂ@ÍÃ@ÍÄ@ÍÅ@ÍÆ@ÍÇ@ÍÈ@ÍÉ@ÍÊ@ÍË@%ÍÌ@ÍÍ@ÍÎ@ÍÏ@ÍÐ@ÍÑ@ÍÒ@ÍÓ@ÍÔ@ÍÕ@ÍÖ@Í×@ÍØ@ÍÙ@ÍÚ@ÍÛ@ÍÜ@%ÍÝ@ÍÞ@Íß@Íà@Íá@Íâ@Íã@Íä@Íå@Íæ@Íç@Íè@Íé@Íê@Íë@Íì@Íí@%Íî@Íï@Íð@Íñ@Íò@Íó@Íô@Íõ@Íö@Í÷@Íø@Íù@Íú@Íû@Íü@Íý@ÎA@%ÎB@ÎC@ÎD@ÎE@ÎF@ÎG@ÎH@ÎI@ÎJ@ÎK@ÎL@ÎM@ÎN@ÎO@ÎP@ÎQ@ÎR@%ÎS@ÎT@ÎU@ÎV@ÎW@ÎX@ÎY@ÎZ@Î[@Î\@Î]@Î^@Î_@Î`@Îa@Îb@Îc@%Îd@Îe@Îf@Îg@Îh@Îi@Îj@Îk@Îl@Îm@În@Îo@Îp@Îq@Îr@Îs@Ît@%Îu@Îv@Îw@Îx@Îy@Îz@Î{@Î|@Î}@Î~@Î@Î@΂@΃@΄@Î…@Ά@%·@Έ@Ή@Ί@΋@ÎŒ@Î@ÎŽ@Î@Î@Α@Î’@Γ@Δ@Ε@Ζ@Η@%Θ@Ι@Κ@Λ@Îœ@Î@Ξ@Ο@Π@Ρ@΢@Σ@Τ@Î¥@Φ@Χ@Ψ@%Ω@Ϊ@Ϋ@ά@έ@ή@ί@ΰ@α@β@γ@δ@ε@ζ@η@θ@ι@%κ@λ@μ@ν@ξ@ο@ÎÀ@ÎÁ@ÎÂ@ÎÃ@ÎÄ@ÎÅ@ÎÆ@ÎÇ@ÎÈ@ÎÉ@ÎÊ@%ÎË@ÎÌ@ÎÍ@ÎÎ@ÎÏ@ÎÐ@ÎÑ@ÎÒ@ÎÓ@ÎÔ@ÎÕ@ÎÖ@Î×@ÎØ@ÎÙ@ÎÚ@ÎÛ@%ÎÜ@ÎÝ@ÎÞ@Îß@Îà@Îá@Îâ@Îã@Îä@Îå@Îæ@Îç@Îè@Îé@Îê@Îë@Îì@%Îí@Îî@Îï@Îð@Îñ@Îò@Îó@Îô@Îõ@Îö@Î÷@Îø@Îù@Îú@Îû@Îü@Îý@%ÏA@ÏB@ÏC@ÏD@ÏE@ÏF@ÏG@ÏH@ÏI@ÏJ@ÏK@ÏL@ÏM@ÏN@ÏO@ÏP@ÏQ@%ÏR@ÏS@ÏT@ÏU@ÏV@ÏW@ÏX@ÏY@ÏZ@Ï[@Ï\@Ï]@Ï^@Ï_@Ï`@Ïa@Ïb@%Ïc@Ïd@Ïe@Ïf@Ïg@Ïh@Ïi@Ïj@Ïk@Ïl@Ïm@Ïn@Ïo@Ïp@Ïq@Ïr@Ïs@%Ït@Ïu@Ïv@Ïw@Ïx@Ïy@Ïz@Ï{@Ï|@Ï}@Ï~@Ï@Ï@Ï‚@σ@Ï„@Ï…@%φ@χ@ψ@ω@ÏŠ@Ï‹@ÏŒ@Ï@ÏŽ@Ï@Ï@Ï‘@Ï’@Ï“@Ï”@Ï•@Ï–@%Ï—@Ϙ@Ï™@Ïš@Ï›@Ïœ@Ï@Ïž@ÏŸ@Ï @Ï¡@Ï¢@Ï£@Ϥ@Ï¥@Ϧ@ϧ@%Ϩ@Ï©@Ϫ@Ï«@Ϭ@Ï­@Ï®@ϯ@Ï°@ϱ@ϲ@ϳ@Ï´@ϵ@϶@Ï·@ϸ@%Ϲ@Ϻ@Ï»@ϼ@Ͻ@Ͼ@Ï¿@ÏÀ@ÏÁ@ÏÂ@ÏÃ@ÏÄ@ÏÅ@ÏÆ@ÏÇ@ÏÈ@ÏÉ@%ÏÊ@ÏË@ÏÌ@ÏÍ@ÏÎ@ÏÏ@ÏÐ@ÏÑ@ÏÒ@ÏÓ@ÏÔ@ÏÕ@ÏÖ@Ï×@ÏØ@ÏÙ@ÏÚ@%ÏÛ@ÏÜ@ÏÝ@ÏÞ@Ïß@Ïà@Ïá@Ïâ@Ïã@Ïä@Ïå@Ïæ@Ïç@Ïè@Ïé@Ïê@Ïë@%Ïì@Ïí@Ïî@Ïï@Ïð@Ïñ@Ïò@Ïó@Ïô@Ïõ@Ïö@Ï÷@Ïø@Ïù@Ïú@Ïû@Ïü@%Ïý@ÐA@ÐB@ÐC@ÐD@ÐE@ÐF@ÐG@ÐH@ÐI@ÐJ@ÐK@ÐL@ÐM@ÐN@ÐO@ÐP@%ÐQ@ÐR@ÐS@ÐT@ÐU@ÐV@ÐW@ÐX@ÐY@ÐZ@Ð[@Ð\@Ð]@Ð^@Ð_@Ð`@Ða@%Ðb@Ðc@Ðd@Ðe@Ðf@Ðg@Ðh@Ði@Ðj@Ðk@Ðl@Ðm@Ðn@Ðo@Ðp@Ðq@Ðr@%Ðs@Ðt@Ðu@Ðv@Ðw@Ðx@Ðy@Ðz@Ð{@Ð|@Ð}@Ð~@Ð@Ð@Ђ@Ѓ@Є@%Ð…@І@Ї@Ј@Љ@Њ@Ћ@ÐŒ@Ð@ÐŽ@Ð@Ð@Б@Ð’@Г@Д@Е@%Ж@З@И@Й@К@Л@Ðœ@Ð@О@П@Р@С@Т@У@Ф@Ð¥@Ц@%Ч@Ш@Щ@Ъ@Ы@Ь@Э@Ю@Я@а@б@в@г@д@е@ж@з@%и@й@к@л@м@н@о@п@ÐÀ@ÐÁ@ÐÂ@ÐÃ@ÐÄ@ÐÅ@ÐÆ@ÐÇ@ÐÈ@%ÐÉ@ÐÊ@ÐË@ÐÌ@ÐÍ@ÐÎ@ÐÏ@ÐÐ@ÐÑ@ÐÒ@ÐÓ@ÐÔ@ÐÕ@ÐÖ@Ð×@ÐØ@ÐÙ@%ÐÚ@ÐÛ@ÐÜ@ÐÝ@ÐÞ@Ðß@Ðà@Ðá@Ðâ@Ðã@Ðä@Ðå@Ðæ@Ðç@Ðè@Ðé@Ðê@%Ðë@Ðì@Ðí@Ðî@Ðï@Ðð@Ðñ@Ðò@Ðó@Ðô@Ðõ@Ðö@Ð÷@Ðø@Ðù@Ðú@Ðû@%Ðü@Ðý@ÑA@ÑB@ÑC@ÑD@ÑE@ÑF@ÑG@ÑH@ÑI@ÑJ@ÑK@ÑL@ÑM@ÑN@ÑO@%ÑP@ÑQ@ÑR@ÑS@ÑT@ÑU@ÑV@ÑW@ÑX@ÑY@ÑZ@Ñ[@Ñ\@Ñ]@Ñ^@Ñ_@Ñ`@%Ña@Ñb@Ñc@Ñd@Ñe@Ñf@Ñg@Ñh@Ñi@Ñj@Ñk@Ñl@Ñm@Ñn@Ño@Ñp@Ñq@%Ñr@Ñs@Ñt@Ñu@Ñv@Ñw@Ñx@Ñy@Ñz@Ñ{@Ñ|@Ñ}@Ñ~@Ñ@Ñ@Ñ‚@у@%Ñ„@Ñ…@ц@ч@ш@щ@ÑŠ@Ñ‹@ÑŒ@Ñ@ÑŽ@Ñ@Ñ@Ñ‘@Ñ’@Ñ“@Ñ”@%Ñ•@Ñ–@Ñ—@ј@Ñ™@Ñš@Ñ›@Ñœ@Ñ@Ñž@ÑŸ@Ñ @Ñ¡@Ñ¢@Ñ£@Ѥ@Ñ¥@%Ѧ@ѧ@Ѩ@Ñ©@Ѫ@Ñ«@Ѭ@Ñ­@Ñ®@ѯ@Ñ°@ѱ@Ѳ@ѳ@Ñ´@ѵ@Ѷ@%Ñ·@Ѹ@ѹ@Ѻ@Ñ»@Ѽ@ѽ@Ѿ@Ñ¿@ÑÀ@ÑÁ@ÑÂ@ÑÃ@ÑÄ@ÑÅ@ÑÆ@ÑÇ@%ÑÈ@ÑÉ@ÑÊ@ÑË@ÑÌ@ÑÍ@ÑÎ@ÑÏ@ÑÐ@ÑÑ@ÑÒ@ÑÓ@ÑÔ@ÑÕ@ÑÖ@Ñ×@ÑØ@%ÑÙ@ÑÚ@ÑÛ@ÑÜ@ÑÝ@ÑÞ@Ñß@Ñà@Ñá@Ñâ@Ñã@Ñä@Ñå@Ñæ@Ñç@Ñè@Ñé@%Ñê@Ñë@Ñì@Ñí@Ñî@Ñï@Ñð@Ññ@Ñò@Ñó@Ñô@Ñõ@Ñö@Ñ÷@Ñø@Ñù@Ñú@%Ñû@Ñü@Ñý@ÒA@ÒB@ÒC@ÒD@ÒE@ÒF@ÒG@ÒH@ÒI@ÒJ@ÒK@ÒL@ÒM@ÒN@%ÒO@ÒP@ÒQ@ÒR@ÒS@ÒT@ÒU@ÒV@ÒW@ÒX@ÒY@ÒZ@Ò[@Ò\@Ò]@Ò^@Ò_@%Ò`@Òa@Òb@Òc@Òd@Òe@Òf@Òg@Òh@Òi@Òj@Òk@Òl@Òm@Òn@Òo@Òp@%Òq@Òr@Òs@Òt@Òu@Òv@Òw@Òx@Òy@Òz@Ò{@Ò|@Ò}@Ò~@Ò@Ò@Ò‚@%Òƒ@Ò„@Ò…@Ò†@Ò‡@Òˆ@Ò‰@ÒŠ@Ò‹@ÒŒ@Ò@ÒŽ@Ò@Ò@Ò‘@Ò’@Ò“@%Ò”@Ò•@Ò–@Ò—@Ò˜@Ò™@Òš@Ò›@Òœ@Ò@Òž@ÒŸ@Ò @Ò¡@Ò¢@Ò£@Ò¤@%Ò¥@Ò¦@Ò§@Ò¨@Ò©@Òª@Ò«@Ò¬@Ò­@Ò®@Ò¯@Ò°@Ò±@Ò²@Ò³@Ò´@Òµ@%Ò¶@Ò·@Ò¸@Ò¹@Òº@Ò»@Ò¼@Ò½@Ò¾@Ò¿@ÒÀ@ÒÁ@ÒÂ@ÒÃ@ÒÄ@ÒÅ@ÒÆ@%ÒÇ@ÒÈ@ÒÉ@ÒÊ@ÒË@ÒÌ@ÒÍ@ÒÎ@ÒÏ@ÒÐ@ÒÑ@ÒÒ@ÒÓ@ÒÔ@ÒÕ@ÒÖ@Ò×@%ÒØ@ÒÙ@ÒÚ@ÒÛ@ÒÜ@ÒÝ@ÒÞ@Òß@Òà@Òá@Òâ@Òã@Òä@Òå@Òæ@Òç@Òè@%Òé@Òê@Òë@Òì@Òí@Òî@Òï@Òð@Òñ@Òò@Òó@Òô@Òõ@Òö@Ò÷@Òø@Òù@%Òú@Òû@Òü@Òý@ÓA@ÓB@ÓC@ÓD@ÓE@ÓF@ÓG@ÓH@ÓI@ÓJ@ÓK@ÓL@ÓM@%ÓN@ÓO@ÓP@ÓQ@ÓR@ÓS@ÓT@ÓU@ÓV@ÓW@ÓX@ÓY@ÓZ@Ó[@Ó\@Ó]@Ó^@%Ó_@Ó`@Óa@Ób@Óc@Ód@Óe@Óf@Óg@Óh@Ói@Ój@Ók@Ól@Óm@Ón@Óo@%Óp@Óq@Ór@Ós@Ót@Óu@Óv@Ów@Óx@Óy@Óz@Ó{@Ó|@Ó}@Ó~@Ó@Ó@%Ó‚@Óƒ@Ó„@Ó…@Ó†@Ó‡@Óˆ@Ó‰@ÓŠ@Ó‹@ÓŒ@Ó@ÓŽ@Ó@Ó@Ó‘@Ó’@%Ó“@Ó”@Ó•@Ó–@Ó—@Ó˜@Ó™@Óš@Ó›@Óœ@Ó@Óž@ÓŸ@Ó @Ó¡@Ó¢@Ó£@%Ó¤@Ó¥@Ó¦@Ó§@Ó¨@Ó©@Óª@Ó«@Ó¬@Ó­@Ó®@Ó¯@Ó°@Ó±@Ó²@Ó³@Ó´@%Óµ@Ó¶@Ó·@Ó¸@Ó¹@Óº@Ó»@Ó¼@Ó½@Ó¾@Ó¿@ÓÀ@ÓÁ@ÓÂ@ÓÃ@ÓÄ@ÓÅ@%ÓÆ@ÓÇ@ÓÈ@ÓÉ@ÓÊ@ÓË@ÓÌ@ÓÍ@ÓÎ@ÓÏ@ÓÐ@ÓÑ@ÓÒ@ÓÓ@ÓÔ@ÓÕ@ÓÖ@%Ó×@ÓØ@ÓÙ@ÓÚ@ÓÛ@ÓÜ@ÓÝ@ÓÞ@Óß@Óà@Óá@Óâ@Óã@Óä@Óå@Óæ@Óç@%Óè@Óé@Óê@Óë@Óì@Óí@Óî@Óï@Óð@Óñ@Óò@Óó@Óô@Óõ@Óö@Ó÷@Óø@%Óù@Óú@Óû@Óü@Óý@ÔA@ÔB@ÔC@ÔD@ÔE@ÔF@ÔG@ÔH@ÔI@ÔJ@ÔK@ÔL@%ÔM@ÔN@ÔO@ÔP@ÔQ@ÔR@ÔS@ÔT@ÔU@ÔV@ÔW@ÔX@ÔY@ÔZ@Ô[@Ô\@Ô]@%Ô^@Ô_@Ô`@Ôa@Ôb@Ôc@Ôd@Ôe@Ôf@Ôg@Ôh@Ôi@Ôj@Ôk@Ôl@Ôm@Ôn@%Ôo@Ôp@Ôq@Ôr@Ôs@Ôt@Ôu@Ôv@Ôw@Ôx@Ôy@Ôz@Ô{@Ô|@Ô}@Ô~@Ô@%Ô@Ô‚@Ôƒ@Ô„@Ô…@Ô†@Ô‡@Ôˆ@Ô‰@ÔŠ@Ô‹@ÔŒ@Ô@ÔŽ@Ô@Ô@Ô‘@%Ô’@Ô“@Ô”@Ô•@Ô–@Ô—@Ô˜@Ô™@Ôš@Ô›@Ôœ@Ô@Ôž@ÔŸ@Ô @Ô¡@Ô¢@%Ô£@Ô¤@Ô¥@Ô¦@Ô§@Ô¨@Ô©@Ôª@Ô«@Ô¬@Ô­@Ô®@Ô¯@Ô°@Ô±@Ô²@Ô³@%Ô´@Ôµ@Ô¶@Ô·@Ô¸@Ô¹@Ôº@Ô»@Ô¼@Ô½@Ô¾@Ô¿@ÔÀ@ÔÁ@ÔÂ@ÔÃ@ÔÄ@%ÔÅ@ÔÆ@ÔÇ@ÔÈ@ÔÉ@ÔÊ@ÔË@ÔÌ@ÔÍ@ÔÎ@ÔÏ@ÔÐ@ÔÑ@ÔÒ@ÔÓ@ÔÔ@ÔÕ@%ÔÖ@Ô×@ÔØ@ÔÙ@ÔÚ@ÔÛ@ÔÜ@ÔÝ@ÔÞ@Ôß@Ôà@Ôá@Ôâ@Ôã@Ôä@Ôå@Ôæ@%Ôç@Ôè@Ôé@Ôê@Ôë@Ôì@Ôí@Ôî@Ôï@Ôð@Ôñ@Ôò@Ôó@Ôô@Ôõ@Ôö@Ô÷@%Ôø@Ôù@Ôú@Ôû@Ôü@Ôý@ÕA@ÕB@ÕC@ÕD@ÕE@ÕF@ÕG@ÕH@ÕI@ÕJ@ÕK@%ÕL@ÕM@ÕN@ÕO@ÕP@ÕQ@ÕR@ÕS@ÕT@ÕU@ÕV@ÕW@ÕX@ÕY@ÕZ@Õ[@Õ\@%Õ]@Õ^@Õ_@Õ`@Õa@Õb@Õc@Õd@Õe@Õf@Õg@Õh@Õi@Õj@Õk@Õl@Õm@%Õn@Õo@Õp@Õq@Õr@Õs@Õt@Õu@Õv@Õw@Õx@Õy@Õz@Õ{@Õ|@Õ}@Õ~@%Õ@Õ@Õ‚@Õƒ@Õ„@Õ…@Õ†@Õ‡@Õˆ@Õ‰@ÕŠ@Õ‹@ÕŒ@Õ@ÕŽ@Õ@Õ@%Õ‘@Õ’@Õ“@Õ”@Õ•@Õ–@Õ—@Õ˜@Õ™@Õš@Õ›@Õœ@Õ@Õž@ÕŸ@Õ @Õ¡@%Õ¢@Õ£@Õ¤@Õ¥@Õ¦@Õ§@Õ¨@Õ©@Õª@Õ«@Õ¬@Õ­@Õ®@Õ¯@Õ°@Õ±@Õ²@%Õ³@Õ´@Õµ@Õ¶@Õ·@Õ¸@Õ¹@Õº@Õ»@Õ¼@Õ½@Õ¾@Õ¿@ÕÀ@ÕÁ@ÕÂ@ÕÃ@%ÕÄ@ÕÅ@ÕÆ@ÕÇ@ÕÈ@ÕÉ@ÕÊ@ÕË@ÕÌ@ÕÍ@ÕÎ@ÕÏ@ÕÐ@ÕÑ@ÕÒ@ÕÓ@ÕÔ@%ÕÕ@ÕÖ@Õ×@ÕØ@ÕÙ@ÕÚ@ÕÛ@ÕÜ@ÕÝ@ÕÞ@Õß@Õà@Õá@Õâ@Õã@Õä@Õå@%Õæ@Õç@Õè@Õé@Õê@Õë@Õì@Õí@Õî@Õï@Õð@Õñ@Õò@Õó@Õô@Õõ@Õö@%Õ÷@Õø@Õù@Õú@Õû@Õü@Õý@ÖA@ÖB@ÖC@ÖD@ÖE@ÖF@ÖG@ÖH@ÖI@ÖJ@%ÖK@ÖL@ÖM@ÖN@ÖO@ÖP@ÖQ@ÖR@ÖS@ÖT@ÖU@ÖV@ÖW@ÖX@ÖY@ÖZ@Ö[@%Ö\@Ö]@Ö^@Ö_@Ö`@Öa@Öb@Öc@Öd@Öe@Öf@Ög@Öh@Öi@Öj@Ök@Öl@%Öm@Ön@Öo@Öp@Öq@Ör@Ös@Öt@Öu@Öv@Öw@Öx@Öy@Öz@Ö{@Ö|@Ö}@%Ö~@Ö@Ö@Ö‚@Öƒ@Ö„@Ö…@Ö†@Ö‡@Öˆ@Ö‰@ÖŠ@Ö‹@ÖŒ@Ö@ÖŽ@Ö@%Ö@Ö‘@Ö’@Ö“@Ö”@Ö•@Ö–@Ö—@Ö˜@Ö™@Öš@Ö›@Öœ@Ö@Öž@ÖŸ@Ö @%Ö¡@Ö¢@Ö£@Ö¤@Ö¥@Ö¦@Ö§@Ö¨@Ö©@Öª@Ö«@Ö¬@Ö­@Ö®@Ö¯@Ö°@Ö±@%Ö²@Ö³@Ö´@Öµ@Ö¶@Ö·@Ö¸@Ö¹@Öº@Ö»@Ö¼@Ö½@Ö¾@Ö¿@ÖÀ@ÖÁ@ÖÂ@%ÖÃ@ÖÄ@ÖÅ@ÖÆ@ÖÇ@ÖÈ@ÖÉ@ÖÊ@ÖË@ÖÌ@ÖÍ@ÖÎ@ÖÏ@ÖÐ@ÖÑ@ÖÒ@ÖÓ@%ÖÔ@ÖÕ@ÖÖ@Ö×@ÖØ@ÖÙ@ÖÚ@ÖÛ@ÖÜ@ÖÝ@ÖÞ@Öß@Öà@Öá@Öâ@Öã@Öä@%Öå@Öæ@Öç@Öè@Öé@Öê@Öë@Öì@Öí@Öî@Öï@Öð@Öñ@Öò@Öó@Öô@Öõ@%Öö@Ö÷@Öø@Öù@Öú@Öû@Öü@Öý@×A@×B@×C@×D@×E@×F@×G@×H@×I@%×J@×K@×L@×M@×N@×O@×P@×Q@×R@×S@×T@×U@×V@×W@×X@×Y@×Z@%×[@×\@×]@×^@×_@×`@×a@×b@×c@×d@×e@×f@×g@×h@×i@×j@×k@%×l@×m@×n@×o@×p@×q@×r@×s@×t@×u@×v@×w@×x@×y@×z@×{@×|@%×}@×~@×@×@ׂ@׃@ׄ@×…@׆@ׇ@׈@׉@׊@׋@׌@×@׎@%×@×@ב@×’@ד@×”@ו@×–@×—@ט@×™@ך@×›@ל@×@מ@ן@%× @ס@×¢@×£@פ@×¥@צ@ק@ר@ש@ת@׫@׬@×­@×®@ׯ@×°@%×±@ײ@׳@×´@×µ@׶@×·@׸@×¹@׺@×»@×¼@×½@×¾@׿@×À@×Á@%×Â@×Ã@×Ä@×Å@×Æ@×Ç@×È@×É@×Ê@×Ë@×Ì@×Í@×Î@×Ï@×Ð@×Ñ@×Ò@%×Ó@×Ô@×Õ@×Ö@××@×Ø@×Ù@×Ú@×Û@×Ü@×Ý@×Þ@×ß@×à@×á@×â@×ã@%×ä@×å@×æ@×ç@×è@×é@×ê@×ë@×ì@×í@×î@×ï@×ð@×ñ@×ò@×ó@×ô@%×õ@×ö@×÷@×ø@×ù@×ú@×û@×ü@×ý@ØA@ØB@ØC@ØD@ØE@ØF@ØG@ØH@%ØI@ØJ@ØK@ØL@ØM@ØN@ØO@ØP@ØQ@ØR@ØS@ØT@ØU@ØV@ØW@ØX@ØY@%ØZ@Ø[@Ø\@Ø]@Ø^@Ø_@Ø`@Øa@Øb@Øc@Ød@Øe@Øf@Øg@Øh@Øi@Øj@%Øk@Øl@Øm@Øn@Øo@Øp@Øq@Ør@Øs@Øt@Øu@Øv@Øw@Øx@Øy@Øz@Ø{@%Ø|@Ø}@Ø~@Ø@Ø@Ø‚@؃@Ø„@Ø…@؆@؇@؈@؉@ØŠ@Ø‹@ØŒ@Ø@%ØŽ@Ø@Ø@Ø‘@Ø’@Ø“@Ø”@Ø•@Ø–@Ø—@ؘ@Ø™@Øš@Ø›@Øœ@Ø@Øž@%ØŸ@Ø @Ø¡@Ø¢@Ø£@ؤ@Ø¥@ئ@ا@ب@Ø©@ت@Ø«@ج@Ø­@Ø®@د@%Ø°@ر@ز@س@Ø´@ص@ض@Ø·@ظ@ع@غ@Ø»@ؼ@ؽ@ؾ@Ø¿@ØÀ@%ØÁ@ØÂ@ØÃ@ØÄ@ØÅ@ØÆ@ØÇ@ØÈ@ØÉ@ØÊ@ØË@ØÌ@ØÍ@ØÎ@ØÏ@ØÐ@ØÑ@%ØÒ@ØÓ@ØÔ@ØÕ@ØÖ@Ø×@ØØ@ØÙ@ØÚ@ØÛ@ØÜ@ØÝ@ØÞ@Øß@Øà@Øá@Øâ@%Øã@Øä@Øå@Øæ@Øç@Øè@Øé@Øê@Øë@Øì@Øí@Øî@Øï@Øð@Øñ@Øò@Øó@%Øô@Øõ@Øö@Ø÷@Øø@Øù@Øú@Øû@Øü@Øý@ÙA@ÙB@ÙC@ÙD@ÙE@ÙF@ÙG@%ÙH@ÙI@ÙJ@ÙK@ÙL@ÙM@ÙN@ÙO@ÙP@ÙQ@ÙR@ÙS@ÙT@ÙU@ÙV@ÙW@ÙX@%ÙY@ÙZ@Ù[@Ù\@Ù]@Ù^@Ù_@Ù`@Ùa@Ùb@Ùc@Ùd@Ùe@Ùf@Ùg@Ùh@Ùi@%Ùj@Ùk@Ùl@Ùm@Ùn@Ùo@Ùp@Ùq@Ùr@Ùs@Ùt@Ùu@Ùv@Ùw@Ùx@Ùy@Ùz@%Ù{@Ù|@Ù}@Ù~@Ù@Ù@Ù‚@Ùƒ@Ù„@Ù…@Ù†@Ù‡@Ùˆ@Ù‰@ÙŠ@Ù‹@ÙŒ@%Ù@ÙŽ@Ù@Ù@Ù‘@Ù’@Ù“@Ù”@Ù•@Ù–@Ù—@Ù˜@Ù™@Ùš@Ù›@Ùœ@Ù@%Ùž@ÙŸ@Ù @Ù¡@Ù¢@Ù£@Ù¤@Ù¥@Ù¦@Ù§@Ù¨@Ù©@Ùª@Ù«@Ù¬@Ù­@Ù®@%Ù¯@Ù°@Ù±@Ù²@Ù³@Ù´@Ùµ@Ù¶@Ù·@Ù¸@Ù¹@Ùº@Ù»@Ù¼@Ù½@Ù¾@Ù¿@%ÙÀ@ÙÁ@ÙÂ@ÙÃ@ÙÄ@ÙÅ@ÙÆ@ÙÇ@ÙÈ@ÙÉ@ÙÊ@ÙË@ÙÌ@ÙÍ@ÙÎ@ÙÏ@ÙÐ@%ÙÑ@ÙÒ@ÙÓ@ÙÔ@ÙÕ@ÙÖ@Ù×@ÙØ@ÙÙ@ÙÚ@ÙÛ@ÙÜ@ÙÝ@ÙÞ@Ùß@Ùà@Ùá@%Ùâ@Ùã@Ùä@Ùå@Ùæ@Ùç@Ùè@Ùé@Ùê@Ùë@Ùì@Ùí@Ùî@Ùï@Ùð@Ùñ@Ùò@%Ùó@Ùô@Ùõ@Ùö@Ù÷@Ùø@Ùù@Ùú@Ùû@Ùü@Ùý@ÚA@ÚB@ÚC@ÚD@ÚE@ÚF@%ÚG@ÚH@ÚI@ÚJ@ÚK@ÚL@ÚM@ÚN@ÚO@ÚP@ÚQ@ÚR@ÚS@ÚT@ÚU@ÚV@ÚW@%ÚX@ÚY@ÚZ@Ú[@Ú\@Ú]@Ú^@Ú_@Ú`@Úa@Úb@Úc@Úd@Úe@Úf@Úg@Úh@%Úi@Új@Úk@Úl@Úm@Ún@Úo@Úp@Úq@Úr@Ús@Út@Úu@Úv@Úw@Úx@Úy@%Úz@Ú{@Ú|@Ú}@Ú~@Ú@Ú@Ú‚@Úƒ@Ú„@Ú…@Ú†@Ú‡@Úˆ@Ú‰@ÚŠ@Ú‹@%ÚŒ@Ú@ÚŽ@Ú@Ú@Ú‘@Ú’@Ú“@Ú”@Ú•@Ú–@Ú—@Ú˜@Ú™@Úš@Ú›@Úœ@%Ú@Úž@ÚŸ@Ú @Ú¡@Ú¢@Ú£@Ú¤@Ú¥@Ú¦@Ú§@Ú¨@Ú©@Úª@Ú«@Ú¬@Ú­@%Ú®@Ú¯@Ú°@Ú±@Ú²@Ú³@Ú´@Úµ@Ú¶@Ú·@Ú¸@Ú¹@Úº@Ú»@Ú¼@Ú½@Ú¾@%Ú¿@ÚÀ@ÚÁ@ÚÂ@ÚÃ@ÚÄ@ÚÅ@ÚÆ@ÚÇ@ÚÈ@ÚÉ@ÚÊ@ÚË@ÚÌ@ÚÍ@ÚÎ@ÚÏ@%ÚÐ@ÚÑ@ÚÒ@ÚÓ@ÚÔ@ÚÕ@ÚÖ@Ú×@ÚØ@ÚÙ@ÚÚ@ÚÛ@ÚÜ@ÚÝ@ÚÞ@Úß@Úà@%Úá@Úâ@Úã@Úä@Úå@Úæ@Úç@Úè@Úé@Úê@Úë@Úì@Úí@Úî@Úï@Úð@Úñ@%Úò@Úó@Úô@Úõ@Úö@Ú÷@Úø@Úù@Úú@Úû@Úü@Úý@ÛA@ÛB@ÛC@ÛD@ÛE@%ÛF@ÛG@ÛH@ÛI@ÛJ@ÛK@ÛL@ÛM@ÛN@ÛO@ÛP@ÛQ@ÛR@ÛS@ÛT@ÛU@ÛV@%ÛW@ÛX@ÛY@ÛZ@Û[@Û\@Û]@Û^@Û_@Û`@Ûa@Ûb@Ûc@Ûd@Ûe@Ûf@Ûg@%Ûh@Ûi@Ûj@Ûk@Ûl@Ûm@Ûn@Ûo@Ûp@Ûq@Ûr@Ûs@Ût@Ûu@Ûv@Ûw@Ûx@%Ûy@Ûz@Û{@Û|@Û}@Û~@Û@Û@Û‚@Ûƒ@Û„@Û…@Û†@Û‡@Ûˆ@Û‰@ÛŠ@%Û‹@ÛŒ@Û@ÛŽ@Û@Û@Û‘@Û’@Û“@Û”@Û•@Û–@Û—@Û˜@Û™@Ûš@Û›@%Ûœ@Û@Ûž@ÛŸ@Û @Û¡@Û¢@Û£@Û¤@Û¥@Û¦@Û§@Û¨@Û©@Ûª@Û«@Û¬@%Û­@Û®@Û¯@Û°@Û±@Û²@Û³@Û´@Ûµ@Û¶@Û·@Û¸@Û¹@Ûº@Û»@Û¼@Û½@%Û¾@Û¿@ÛÀ@ÛÁ@ÛÂ@ÛÃ@ÛÄ@ÛÅ@ÛÆ@ÛÇ@ÛÈ@ÛÉ@ÛÊ@ÛË@ÛÌ@ÛÍ@ÛÎ@%ÛÏ@ÛÐ@ÛÑ@ÛÒ@ÛÓ@ÛÔ@ÛÕ@ÛÖ@Û×@ÛØ@ÛÙ@ÛÚ@ÛÛ@ÛÜ@ÛÝ@ÛÞ@Ûß@%Ûà@Ûá@Ûâ@Ûã@Ûä@Ûå@Ûæ@Ûç@Ûè@Ûé@Ûê@Ûë@Ûì@Ûí@Ûî@Ûï@Ûð@%Ûñ@Ûò@Ûó@Ûô@Ûõ@Ûö@Û÷@Ûø@Ûù@Ûú@Ûû@Ûü@Ûý@ÜA@ÜB@ÜC@ÜD@%ÜE@ÜF@ÜG@ÜH@ÜI@ÜJ@ÜK@ÜL@ÜM@ÜN@ÜO@ÜP@ÜQ@ÜR@ÜS@ÜT@ÜU@%ÜV@ÜW@ÜX@ÜY@ÜZ@Ü[@Ü\@Ü]@Ü^@Ü_@Ü`@Üa@Üb@Üc@Üd@Üe@Üf@%Üg@Üh@Üi@Üj@Ük@Ül@Üm@Ün@Üo@Üp@Üq@Ür@Üs@Üt@Üu@Üv@Üw@%Üx@Üy@Üz@Ü{@Ü|@Ü}@Ü~@Ü@Ü@Ü‚@܃@Ü„@Ü…@܆@܇@܈@܉@%ÜŠ@Ü‹@ÜŒ@Ü@ÜŽ@Ü@Ü@Ü‘@Ü’@Ü“@Ü”@Ü•@Ü–@Ü—@ܘ@Ü™@Üš@%Ü›@Üœ@Ü@Üž@ÜŸ@Ü @Ü¡@Ü¢@Ü£@ܤ@Ü¥@ܦ@ܧ@ܨ@Ü©@ܪ@Ü«@%ܬ@Ü­@Ü®@ܯ@Ü°@ܱ@ܲ@ܳ@Ü´@ܵ@ܶ@Ü·@ܸ@ܹ@ܺ@Ü»@ܼ@%ܽ@ܾ@Ü¿@ÜÀ@ÜÁ@ÜÂ@ÜÃ@ÜÄ@ÜÅ@ÜÆ@ÜÇ@ÜÈ@ÜÉ@ÜÊ@ÜË@ÜÌ@ÜÍ@%ÜÎ@ÜÏ@ÜÐ@ÜÑ@ÜÒ@ÜÓ@ÜÔ@ÜÕ@ÜÖ@Ü×@ÜØ@ÜÙ@ÜÚ@ÜÛ@ÜÜ@ÜÝ@ÜÞ@%Üß@Üà@Üá@Üâ@Üã@Üä@Üå@Üæ@Üç@Üè@Üé@Üê@Üë@Üì@Üí@Üî@Üï@%Üð@Üñ@Üò@Üó@Üô@Üõ@Üö@Ü÷@Üø@Üù@Üú@Üû@Üü@Üý@ÝA@ÝB@ÝC@%ÝD@ÝE@ÝF@ÝG@ÝH@ÝI@ÝJ@ÝK@ÝL@ÝM@ÝN@ÝO@ÝP@ÝQ@ÝR@ÝS@ÝT@%ÝU@ÝV@ÝW@ÝX@ÝY@ÝZ@Ý[@Ý\@Ý]@Ý^@Ý_@Ý`@Ýa@Ýb@Ýc@Ýd@Ýe@%Ýf@Ýg@Ýh@Ýi@Ýj@Ýk@Ýl@Ým@Ýn@Ýo@Ýp@Ýq@Ýr@Ýs@Ýt@Ýu@Ýv@%Ýw@Ýx@Ýy@Ýz@Ý{@Ý|@Ý}@Ý~@Ý@Ý@Ý‚@݃@Ý„@Ý…@݆@݇@݈@%݉@ÝŠ@Ý‹@ÝŒ@Ý@ÝŽ@Ý@Ý@Ý‘@Ý’@Ý“@Ý”@Ý•@Ý–@Ý—@ݘ@Ý™@%Ýš@Ý›@Ýœ@Ý@Ýž@ÝŸ@Ý @Ý¡@Ý¢@Ý£@ݤ@Ý¥@ݦ@ݧ@ݨ@Ý©@ݪ@%Ý«@ݬ@Ý­@Ý®@ݯ@Ý°@ݱ@ݲ@ݳ@Ý´@ݵ@ݶ@Ý·@ݸ@ݹ@ݺ@Ý»@%ݼ@ݽ@ݾ@Ý¿@ÝÀ@ÝÁ@ÝÂ@ÝÃ@ÝÄ@ÝÅ@ÝÆ@ÝÇ@ÝÈ@ÝÉ@ÝÊ@ÝË@ÝÌ@%ÝÍ@ÝÎ@ÝÏ@ÝÐ@ÝÑ@ÝÒ@ÝÓ@ÝÔ@ÝÕ@ÝÖ@Ý×@ÝØ@ÝÙ@ÝÚ@ÝÛ@ÝÜ@ÝÝ@%ÝÞ@Ýß@Ýà@Ýá@Ýâ@Ýã@Ýä@Ýå@Ýæ@Ýç@Ýè@Ýé@Ýê@Ýë@Ýì@Ýí@Ýî@%Ýï@Ýð@Ýñ@Ýò@Ýó@Ýô@Ýõ@Ýö@Ý÷@Ýø@Ýù@Ýú@Ýû@Ýü@Ýý@ÞA@ÞB@%ÞC@ÞD@ÞE@ÞF@ÞG@ÞH@ÞI@ÞJ@ÞK@ÞL@ÞM@ÞN@ÞO@ÞP@ÞQ@ÞR@ÞS@%ÞT@ÞU@ÞV@ÞW@ÞX@ÞY@ÞZ@Þ[@Þ\@Þ]@Þ^@Þ_@Þ`@Þa@Þb@Þc@Þd@%Þe@Þf@Þg@Þh@Þi@Þj@Þk@Þl@Þm@Þn@Þo@Þp@Þq@Þr@Þs@Þt@Þu@%Þv@Þw@Þx@Þy@Þz@Þ{@Þ|@Þ}@Þ~@Þ@Þ@Þ‚@Þƒ@Þ„@Þ…@Þ†@Þ‡@%Þˆ@Þ‰@ÞŠ@Þ‹@ÞŒ@Þ@ÞŽ@Þ@Þ@Þ‘@Þ’@Þ“@Þ”@Þ•@Þ–@Þ—@Þ˜@%Þ™@Þš@Þ›@Þœ@Þ@Þž@ÞŸ@Þ @Þ¡@Þ¢@Þ£@Þ¤@Þ¥@Þ¦@Þ§@Þ¨@Þ©@%Þª@Þ«@Þ¬@Þ­@Þ®@Þ¯@Þ°@Þ±@Þ²@Þ³@Þ´@Þµ@Þ¶@Þ·@Þ¸@Þ¹@Þº@%Þ»@Þ¼@Þ½@Þ¾@Þ¿@ÞÀ@ÞÁ@ÞÂ@ÞÃ@ÞÄ@ÞÅ@ÞÆ@ÞÇ@ÞÈ@ÞÉ@ÞÊ@ÞË@%ÞÌ@ÞÍ@ÞÎ@ÞÏ@ÞÐ@ÞÑ@ÞÒ@ÞÓ@ÞÔ@ÞÕ@ÞÖ@Þ×@ÞØ@ÞÙ@ÞÚ@ÞÛ@ÞÜ@%ÞÝ@ÞÞ@Þß@Þà@Þá@Þâ@Þã@Þä@Þå@Þæ@Þç@Þè@Þé@Þê@Þë@Þì@Þí@%Þî@Þï@Þð@Þñ@Þò@Þó@Þô@Þõ@Þö@Þ÷@Þø@Þù@Þú@Þû@Þü@Þý@ßA@%ßB@ßC@ßD@ßE@ßF@ßG@ßH@ßI@ßJ@ßK@ßL@ßM@ßN@ßO@ßP@ßQ@ßR@%ßS@ßT@ßU@ßV@ßW@ßX@ßY@ßZ@ß[@ß\@ß]@ß^@ß_@ß`@ßa@ßb@ßc@%ßd@ße@ßf@ßg@ßh@ßi@ßj@ßk@ßl@ßm@ßn@ßo@ßp@ßq@ßr@ßs@ßt@%ßu@ßv@ßw@ßx@ßy@ßz@ß{@ß|@ß}@ß~@ß@ß@ß‚@߃@ß„@ß…@߆@%߇@߈@߉@ߊ@ß‹@ߌ@ß@ߎ@ß@ß@ß‘@ß’@ß“@ß”@ß•@ß–@ß—@%ߘ@ß™@ßš@ß›@ßœ@ß@ßž@ߟ@ß @ß¡@ߢ@ߣ@ߤ@ߥ@ߦ@ߧ@ߨ@%ß©@ߪ@ß«@߬@ß­@ß®@߯@ß°@ß±@ß²@ß³@ß´@ßµ@߶@ß·@߸@ß¹@%ߺ@ß»@ß¼@ß½@ß¾@ß¿@ßÀ@ßÁ@ßÂ@ßÃ@ßÄ@ßÅ@ßÆ@ßÇ@ßÈ@ßÉ@ßÊ@%ßË@ßÌ@ßÍ@ßÎ@ßÏ@ßÐ@ßÑ@ßÒ@ßÓ@ßÔ@ßÕ@ßÖ@ß×@ßØ@ßÙ@ßÚ@ßÛ@%ßÜ@ßÝ@ßÞ@ßß@ßà@ßá@ßâ@ßã@ßä@ßå@ßæ@ßç@ßè@ßé@ßê@ßë@ßì@%ßí@ßî@ßï@ßð@ßñ@ßò@ßó@ßô@ßõ@ßö@ß÷@ßø@ßù@ßú@ßû@ßü@ßý@%àA@àB@àC@àD@àE@àF@àG@àH@àI@àJ@àK@àL@àM@àN@àO@àP@àQ@%àR@àS@àT@àU@àV@àW@àX@àY@àZ@à[@à\@à]@à^@à_@à`@àa@àb@%àc@àd@àe@àf@àg@àh@ài@àj@àk@àl@àm@àn@ào@àp@àq@àr@às@%àt@àu@àv@àw@àx@ày@àz@à{@à|@à}@à~@à@à@à‚@àƒ@à„@à…@%à†@à‡@àˆ@à‰@àŠ@à‹@àŒ@à@àŽ@à@à@à‘@à’@à“@à”@à•@à–@%à—@à˜@à™@àš@à›@àœ@à@àž@àŸ@à @à¡@à¢@à£@à¤@à¥@à¦@à§@%à¨@à©@àª@à«@à¬@à­@à®@à¯@à°@à±@à²@à³@à´@àµ@à¶@à·@à¸@%à¹@àº@à»@à¼@à½@à¾@à¿@àÀ@àÁ@àÂ@àÃ@àÄ@àÅ@àÆ@àÇ@àÈ@àÉ@%àÊ@àË@àÌ@àÍ@àÎ@àÏ@àÐ@àÑ@àÒ@àÓ@àÔ@àÕ@àÖ@à×@àØ@àÙ@àÚ@%àÛ@àÜ@àÝ@àÞ@àß@àà@àá@àâ@àã@àä@àå@àæ@àç@àè@àé@àê@àë@%àì@àí@àî@àï@àð@àñ@àò@àó@àô@àõ@àö@à÷@àø@àù@àú@àû@àü@%àý@áA@áB@áC@áD@áE@áF@áG@áH@áI@áJ@áK@áL@áM@áN@áO@áP@%áQ@áR@áS@áT@áU@áV@áW@áX@áY@áZ@á[@á\@á]@á^@á_@á`@áa@%áb@ác@ád@áe@áf@ág@áh@ái@áj@ák@ál@ám@án@áo@áp@áq@ár@%ás@át@áu@áv@áw@áx@áy@áz@á{@á|@á}@á~@á@á@á‚@áƒ@á„@%á…@á†@á‡@áˆ@á‰@áŠ@á‹@áŒ@á@áŽ@á@á@á‘@á’@á“@á”@á•@%á–@á—@á˜@á™@áš@á›@áœ@á@áž@áŸ@á @á¡@á¢@á£@á¤@á¥@á¦@%á§@á¨@á©@áª@á«@á¬@á­@á®@á¯@á°@á±@á²@á³@á´@áµ@á¶@á·@%á¸@á¹@áº@á»@á¼@á½@á¾@á¿@áÀ@áÁ@áÂ@áÃ@áÄ@áÅ@áÆ@áÇ@áÈ@%áÉ@áÊ@áË@áÌ@áÍ@áÎ@áÏ@áÐ@áÑ@áÒ@áÓ@áÔ@áÕ@áÖ@á×@áØ@áÙ@%áÚ@áÛ@áÜ@áÝ@áÞ@áß@áà@áá@áâ@áã@áä@áå@áæ@áç@áè@áé@áê@%áë@áì@áí@áî@áï@áð@áñ@áò@áó@áô@áõ@áö@á÷@áø@áù@áú@áû@%áü@áý@âA@âB@âC@âD@âE@âF@âG@âH@âI@âJ@âK@âL@âM@âN@âO@%âP@âQ@âR@âS@âT@âU@âV@âW@âX@âY@âZ@â[@â\@â]@â^@â_@â`@%âa@âb@âc@âd@âe@âf@âg@âh@âi@âj@âk@âl@âm@ân@âo@âp@âq@%âr@âs@ât@âu@âv@âw@âx@ây@âz@â{@â|@â}@â~@â@â@â‚@âƒ@%â„@â…@â†@â‡@âˆ@â‰@âŠ@â‹@âŒ@â@âŽ@â@â@â‘@â’@â“@â”@%â•@â–@â—@â˜@â™@âš@â›@âœ@â@âž@âŸ@â @â¡@â¢@â£@â¤@â¥@%â¦@â§@â¨@â©@âª@â«@â¬@â­@â®@â¯@â°@â±@â²@â³@â´@âµ@â¶@%â·@â¸@â¹@âº@â»@â¼@â½@â¾@â¿@âÀ@âÁ@âÂ@âÃ@âÄ@âÅ@âÆ@âÇ@%âÈ@âÉ@âÊ@âË@âÌ@âÍ@âÎ@âÏ@âÐ@âÑ@âÒ@âÓ@âÔ@âÕ@âÖ@â×@âØ@%âÙ@âÚ@âÛ@âÜ@âÝ@âÞ@âß@âà@âá@ââ@âã@âä@âå@âæ@âç@âè@âé@%âê@âë@âì@âí@âî@âï@âð@âñ@âò@âó@âô@âõ@âö@â÷@âø@âù@âú@%âû@âü@âý@D\@F¨@F©@Fª@F«@iK@z¤@GA@F§@GI@F¶@F¼@F¬@F­@%F®@F¯@F°@F±@F¤@F¥@F²@F³@F´@Fµ@F @F¡@F¢@F£@F¾@F¿@FÂ@%FÃ@FÀ@FÁ@F½@GB@GC@GD@GE@GF@GG@GH@GJ@GK@GL@GM@GN@GO@%GP@GS@GT@FÄ@GU@GV@GW@GX@GY@GZ@G[@G\@G]@BZ@B@B{@Bà@%Bl@BP@B}@BM@B]@F¸@BN@Bk@B`@BK@Ba@Bð@Bñ@Bò@Bó@Bô@Bõ@%Bö@B÷@Bø@Bù@Bz@B^@BL@B~@Bn@Bo@B|@BÁ@BÂ@BÃ@BÄ@BÅ@BÆ@%BÇ@BÈ@BÉ@BÑ@BÒ@BÓ@BÔ@BÕ@BÖ@B×@BØ@BÙ@Bâ@Bã@Bä@Bå@Bæ@%Bç@Bè@Bé@DD@Cà@DE@Dp@Bm@B@B‚@Bƒ@B„@B…@B†@B‡@Bˆ@B‰@%B‘@B’@B“@B”@B•@B–@B—@B˜@B™@B¢@B£@B¤@B¥@B¦@B§@B¨@B©@%BÀ@BO@BÐ@C¡@CJ@BJ@B_@GQ@Bj@B[@% \ No newline at end of file +@@0@1@@3@4@5@6@@8@%9@;@@@>@ÿ@?@?@J@?@?@?@j@?@?@?@_@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@%Dj@D`@B¡@Dí@DK@Dî@Cy@Få@Dz@D{@%D[@ES@EQ@ER@ET@GR@EU@Aa@Ab@Ac@Ad@Ae@Af@Ag@Ah@Ai@Aj@%Ak@Al@Am@An@Ao@Ap@Aq@Ar@As@At@Au@Av@Aw@Ax@AA@AB@AC@%AD@AE@AF@AG@AH@AI@AJ@AK@AL@AM@AN@AO@AP@AQ@AR@AS@AT@%AU@AV@AW@AX@AÆ@AÀ@AÁ@AÂ@AÃ@AÄ@AÅ@AÇ@AÈ@AÉ@AÊ@AË@AÌ@%AÍ@AÎ@AÏ@AÐ@AÑ@AÒ@AÓ@AÔ@AÕ@AÖ@A×@AØ@AÙ@AÚ@AÛ@AÜ@AÝ@%AÞ@Aß@Aà@A€@A@A‚@Aƒ@A„@A…@A‡@Aˆ@A‰@AŠ@A‹@AŒ@A@AŽ@%A@A@A‘@A’@A“@A”@A•@A–@A—@A˜@A™@Aš@A›@Aœ@A@Až@AŸ@%A @A†@DZ@DJ@DJ@Da@Dq@Db@Dr@Cw@Cx@D~@D@CE@Cs@DP@Dï@%By@Dk@B¡@DN@F»@FÛ@Dn@Do@Cr@Añ@Aò@Aó@Aô@Aõ@Aö@A÷@Aø@%Aù@Aú@A±@A²@A³@A´@Aµ@A¶@A·@A¸@A¹@Aº@Dñ@Dò@Dð@Dó@FÔ@%FÕ@F×@FÖ@Fï@Fð@Cn@Co@Fî@Cp@CN@Cq@CO@Cd@Ce@FÚ@FÅ@Ca@%DM@FÌ@FË@BO@D|@Cl@Cm@FÈ@FÉ@FÐ@Cc@FÑ@Dh@Dx@C¡@C`@FÆ@%DL@FÇ@Dg@Dw@C]@C^@Ch@Ci@Cf@Cg@FÒ@FÓ@FÊ@FÍ@CM@G@G‚@%Gƒ@G„@G…@G†@G‡@Gˆ@G‰@GŠ@G‹@GŒ@G@GŽ@G@G@G‘@G’@G“@%G”@G•@G–@G—@G˜@G™@Gš@G›@Gœ@G@Gž@GŸ@G @G¡@FA@FB@FC@%FD@FE@FF@FG@FH@FI@FJ@FQ@FR@FS@FT@FU@FV@FW@FX@FY@FZ@%Fu@C·@Fv@C¸@Fx@C¹@Fy@Cá@Fz@Cã@F{@Câ@Fs@Cî@Cé@Cä@Fr@%Cð@Cë@Cæ@Fq@Cê@Cï@Cå@Fp@Cì@Cñ@Cç@Fo@Cí@Cò@Cè@F@F‚@%F„@Fƒ@F|@F}@F@F~@F‰@FŠ@F‹@F·@F`@Fa@Fb@Fc@Fd@Fe@Ff@%Fg@Fn@Fm@Fl@Fk@Fj@Fi@Fh@Ft@Fw@Dê@Dé@Dã@Dâ@Dì@Dë@Dè@%Dç@Dà@Dä@Dá@F…@F†@Fˆ@F‡@Cz@Dæ@Då@Dy@Di@Cv@Cu@Ct@B\@%@@@CD@CA@F¹@D]@D^@D_@Dd@Dt@De@Du@CB@CC@DB@DC@Df@Dv@%Dl@D}@Dc@Ds@Fé@Fê@EA@EB@EC@ED@EE@EF@EG@EH@EI@DG@D@%DH@D‚@DI@Dƒ@DQ@D„@DR@D…@D†@DÀ@D‡@DÁ@Dˆ@DÂ@D‰@DÃ@DŠ@%DÄ@DŒ@DÅ@D@DÆ@DŽ@DÇ@D@DÈ@D@DÉ@D‘@DÊ@D’@DË@DV@D“@%DÌ@D”@DÍ@D•@DÎ@D–@D—@D˜@D™@Dš@D@DÏ@DÕ@Dž@DÐ@DÖ@DŸ@%DÑ@D×@D¢@DÒ@DØ@D£@DÓ@DÙ@D¤@D¥@D¦@D§@D¨@DS@D©@DT@Dª@%DU@D¬@D­@D®@D¯@Dº@D»@DW@D¼@DÚ@DÛ@DF@D½@C¾@C¿@DÜ@DÝ@%CG@C@CH@C‚@CI@Cƒ@CQ@C„@CR@C…@C†@CÀ@C‡@CÁ@Cˆ@CÂ@C‰@%CÃ@CŠ@CÄ@CŒ@CÅ@C@CÆ@CŽ@CÇ@C@CÈ@C@CÉ@C‘@CÊ@C’@CË@%CV@C“@CÌ@C”@CÍ@C•@CÎ@C–@C—@C˜@C™@Cš@C@CÏ@CÕ@Cž@CÐ@%CÖ@CŸ@CÑ@C×@C¢@CÒ@CØ@C£@CÓ@CÙ@C¤@C¥@C¦@C§@C¨@CS@C©@%CT@Cª@CU@C¬@C­@C®@C¯@Cº@C»@CW@C¼@CÚ@CÛ@CF@C½@CÔ@CY@%CZ@CX@CÜ@CÝ@EV@EW@EX@EY@EZ@E[@E\@E]@E^@E_@E`@Ea@Eb@%Ec@Ed@Ee@Ef@Eg@Eh@Ei@Ej@Ek@El@Em@En@Eo@Ep@Eq@Er@Es@%Et@Eu@Ev@Ew@Ex@Ey@Ez@Dm@Fº@Fâ@Fã@FÝ@FÞ@Fß@Fá@Fä@Fà@%FÏ@FÎ@FÜ@LA@LC@LD@iF@LW@LU@LX@LV@iG@Lƒ@iP@iN@L‚@L@%Lá@Là@Lß@Lâ@LÞ@M¡@M¢@Oã@HB@LY@L„@iQ@L…@id@NŒ@kR@HC@%LZ@L†@Lã@ie@HD@iA@LE@L\@iH@L]@L‡@Lä@Læ@Lå@M£@M¤@Oä@%Sý@LB@iB@LF@L_@L^@M¥@Oå@V’@ro@[©@yw@yx@HF@LG@L‰@Oæ@%LH@iI@L`@LŠ@LŒ@iR@L@L‹@M¦@Oç@Oè@Qæ@HH@La@LŽ@M§@M©@%M¨@N@Oé@Oê@Qç@Qè@TA@yy@f@LI@L@L@iS@L‘@L—@L’@L“@%iU@iT@L•@L–@L”@Lé@Lê@Lë@Lì@Lè@Lï@ik@ig@ij@Lð@MC@ii@%Lí@Lî@Lç@if@ih@M¶@i@M³@M·@iš@iŽ@M´@i’@Mµ@M¸@Mª@i‘@%M¹@i•@i™@i–@i“@M«@M­@Mº@M¯@i‹@M²@M°@M±@i›@i˜@i@M®@%iŒ@M¬@i”@i—@i@jH@N£@N–@jI@N“@N¥@N›@Nš@iú@Nž@N™@jB@%jJ@jF@Nœ@NŸ@N@N¨@iü@k^@NŽ@N¤@N@N—@N˜@jD@iý@N@N•@%iù@N‘@jG@N¦@N©@N”@N¡@N§@N’@jE@N¢@jK@iû@N @jA@jC@Oø@%k`@kl@Oð@km@Oë@Oõ@Oî@kZ@Oö@kY@k]@kd@kb@PA@Où@kT@kV@%Oû@Oï@kW@kc@kj@Oô@k\@kU@Oó@kX@O÷@k[@Oò@Oí@Oü@ke@Oý@%ki@kg@kk@Oú@k_@kS@ka@Oñ@kf@Oì@kh@Q÷@Që@mC@mK@Qê@Qò@%RA@mQ@mO@mJ@Qì@mP@mF@Qú@Qñ@Qù@mA@mM@mD@Qõ@mE@lý@Qü@%Qï@Qø@Qî@mB@mG@mN@Qö@Qó@mI@Qû@mL@mH@Qð@Qý@Qô@Qí@Qé@%mR@T[@TE@TU@TZ@o“@o’@o—@o˜@TH@TQ@T^@TR@oŒ@TK@o@T`@%TW@TB@TC@o @V£@TP@TO@oŽ@TS@r@TJ@o™@TY@TX@TN@o‘@oš@%o‹@TM@o›@TV@o@TD@TG@TF@oœ@TT@TI@T]@T_@o–@T\@ož@o@%oŸ@o”@o@o•@TL@rˆ@r{@V—@r@r‡@V–@ry@Vš@r}@rv@V˜@rz@%V@V¢@rŒ@ru@Vž@r‹@V™@r|@V•@rw@rs@r‚@rt@rr@r~@r…@r†@%V›@uÀ@rƒ@rq@r„@V¥@r‰@V¤@rp@rx@rŠ@V @VŸ@Vœ@V¡@V“@V”@%YN@uÃ@u¼@YK@uÄ@uº@u½@YJ@u¾@YM@uÂ@u¸@u·@YO@YP@YL@YQ@%u¶@uÁ@u¿@u¹@YI@u»@[°@[ª@y}@[³@y„@y‡@[¬@[­@y@[«@yŠ@%[±@y‹@y†@[²@yz@[¯@y{@y…@yƒ@y~@[®@y|@[´@y‚@y‰@y@yˆ@%]û@]ø@]ù@}C@|ø@]÷@]ô@|ù@]ö@|ü@}A@}H@}G@}B@]ó@|÷@]ñ@%|ú@]ü@|ý@}D@]õ@]ò@}F@}E@]ú@|û@`B@€v@€s@`C@`A@€z@€w@%€p@_ý@`D@€q@_ü@`G@€t@€u@`E@`F@€{@€x@€y@bS@ƒÃ@bP@ƒÀ@%bR@bT@ƒÁ@bQ@ƒÂ@ƒ¿@cÀ@†È@cÁ@†Æ@†Ç@†Å@†Ä@†É@c¿@‰e@‰f@%€r@‰d@cÂ@fK@‹Z@‹[@gƒ@g„@Žp@Žo@g×@gÖ@A@LJ@Lb@L™@L˜@%Lò@Lñ@M½@M¼@M¾@M»@N«@Nª@N¬@PC@PB@PD@RB@Fñ@o¡@Fò@V¦@%Fô@Fó@uÅ@Fõ@]ý@Fö@LK@Lš@M¿@PE@LL@L@L›@Lœ@MÀ@N­@PG@%PF@PH@Ta@bU@HM@iO@Ló@Lô@MÁ@jL@RD@RC@o£@o¢@V§@HN@Lž@%iV@kn@RE@Td@Tb@Tc@bV@HO@Lõ@MÂ@iœ@N®@N¯@jM@ko@PI@kp@%o¥@o¦@Tg@o§@o¤@Th@Tf@Te@o¨@r@uÆ@yŒ@}I@`H@bW@ƒÄ@LM@%L[@V¨@YS@^A@iC@LŸ@Lø@Lö@L÷@PJ@LN@LO@Lc@L @L¡@L¢@iž@%Lù@il@MÆ@iŸ@MÄ@MÅ@i@MÇ@MÃ@jN@QÎ@jO@jP@N±@N°@N´@N²@%N³@PP@PO@ku@kr@ks@kq@PQ@PM@PL@PN@PK@PR@RG@mS@kt@RL@%mT@RH@RK@RJ@RI@RF@o«@Tk@o®@Ti@oª@Tl@Tj@Tm@o¬@o­@o©@%o¯@YW@V©@rŽ@r@r@r‘@Vª@YT@YU@YV@[¶@yŽ@y@y@y@[·@%[µ@}J@}K@^C@^B@~â@`I@`J@`K@`M@€|@€}@`L@bX@bY@‹\@Žr@%Žq@B@LP@Lû@Lú@MÈ@i @N¶@N·@Nµ@N¸@jQ@jR@PT@kv@PS@mU@%RP@mV@RO@RM@RN@o°@V«@r“@V®@r’@Wª@V­@V¬@YZ@YY@YX@[¸@%[»@[¼@[º@[¹@}L@}M@€@`N@€~@bZ@†Ê@cÃ@‹]@fß@HT@Ld@L£@%iW@L¤@L¥@Lü@Lý@MÉ@jS@kw@kx@RQ@o±@V°@V¯@uÈ@uÇ@LQ@L¦@%MA@V±@iD@im@MB@i¢@MË@MÊ@i¡@N¹@Tn@r”@[½@}N@^D@ƒÅ@Œë@%HW@L§@ky@mW@V´@V²@V³@LR@Le@EK@Lª@L©@L¨@ME@MD@in@i£@%PX@PU@PW@PV@RR@Y[@LS@L«@MG@MF@jT@PY@HZ@iX@MI@MH@MÌ@%MÍ@jU@Nº@N»@PZ@P[@P\@RS@mX@To@iE@L¬@i¤@jV@jW@kz@k{@%mZ@mY@m\@m[@RT@r•@Tq@o²@Tp@uÉ@Y\@uÊ@}O@^E@`O@‹^@H\@%iY@MJ@Vµ@LT@Lf@L®@L­@L¯@P^@P]@P_@RU@Tr@ƒÆ@eZ@Lg@ML@%M[@MV@MQ@MP@MW@MU@MN@M\@MO@MK@MZ@MY@MX@MM@MT@MS@M]@%MR@MÓ@MÙ@MÕ@MÛ@i¥@MØ@MÎ@MÑ@MÔ@MÐ@M×@MÚ@MÏ@MÒ@MÖ@MÜ@%j`@j]@NÈ@j^@N¼@N¾@NÖ@NÑ@je@j_@NÀ@NÂ@jd@NÉ@jZ@NÕ@N×@%N½@NÎ@jX@NÔ@NÅ@NÏ@NÐ@jY@NÍ@NË@NÌ@NÒ@ja@N¿@NÓ@jc@NÇ@%NÄ@j\@NÃ@jf@NÆ@NÊ@NÁ@jb@j[@k@kŒ@Pq@k@k‘@k†@k‰@k@%Pr@kƒ@k‡@k‹@mk@Pm@mo@P`@kˆ@Pa@Pn@Pg@Pc@k„@Pf@Pk@Pt@%k…@k}@Pe@k~@k@Ph@Pj@k|@k‚@Ps@Po@kŠ@Pu@Pl@k@Pi@Pd@%Pb@kŽ@Pp@mj@m^@mm@m`@R\@Rj@RX@Ri@Ra@Rf@RV@m_@me@Re@%mq@Rg@R]@mg@md@R[@m]@Rh@ml@R`@mn@Rk@RW@Rb@R_@mb@Rc@%mh@mi@R^@Rd@RZ@RY@ma@mf@mp@oÆ@T@o´@o¹@Tx@T„@o·@Ts@%T}@Tƒ@o¾@T~@T‚@oÁ@Ty@o¸@oÄ@oÅ@T{@oÃ@Tw@T‡@o»@Tu@oÈ@%o¼@oÀ@Tz@T†@o½@T@oÂ@oÉ@r¤@oÇ@Tˆ@Tt@o¿@o¶@T|@oµ@oº@%o³@T…@rœ@VÈ@rª@VÆ@VÃ@r¡@V¿@r¥@VÊ@r›@r @rŸ@Tv@VÅ@r¨@%r«@r˜@Yn@r¬@VË@V½@Vº@r£@V·@r©@V¾@r­@r™@r§@VÁ@rš@r@%r¢@VÂ@VÀ@VÌ@VÇ@V»@W—@V¼@rž@VÉ@VÄ@r¦@V¹@V¸@r–@r—@uÏ@%Y]@Y`@uÚ@Yt@uÝ@Y^@uÖ@Yd@Yj@ZÂ@Yh@uÓ@Yu@Ya@Yi@uÛ@yž@%uà@uÔ@uË@uØ@uÒ@Yg@uÞ@Yc@Yw@Yp@Ye@Yb@Ym@uß@uÑ@u×@uÙ@%uÍ@uÜ@Y_@uÌ@Yf@Yv@Yr@uÎ@Yl@Ys@Yo@Yk@uÕ@Yq@yœ@y˜@y§@%y‘@yš@[Ë@[Ì@[Ä@y£@[Î@y–@y•@y“@y¥@[Â@yŸ@y”@[Å@y@[À@%y™@y @y¢@y¦@[É@y’@[Ã@y—@[¾@[Ê@y¡@[Æ@[Ç@[Í@[Á@F÷@[¿@%y›@[È@y¤@^U@^P@}^@}Z@}T@^J@^F@}]@^G@}W@}Y@}\@^L@^S@%^M@}R@^N@^O@}U@^T@}S@}X@^K@}Q@^Q@^I@^H@}V@}[@^R@}P@%`V@€‘@€Ž@`P@`\@`]@`S@€Œ@`U@€„@`[@€@`R@€’@`Q@€@€@%`T@€‹@€…@€‚@uÐ@€ˆ@€@€‡@€†@€ƒ@`X@`W@`Y@€‰@b[@€Š@ƒÏ@%ƒÈ@bg@ƒÌ@b_@bc@ƒË@bb@b^@ba@b\@bf@ƒÍ@ƒÉ@be@ƒÇ@bd@ƒÎ@%ƒÊ@`Z@bh@ƒÐ@b`@b]@†Ñ@†Ó@cÅ@†Ô@†Ò@†Ð@†Ï@cÇ@†Î@cÈ@†Ì@%†Í@cÄ@cÉ@cÆ@†Ë@e[@‰i@‰g@‰l@‰j@‰h@‰k@fL@‹a@‹b@fà@‹c@%‹_@‹d@‹`@e\@Œì@Œî@fã@Œí@fâ@fá@fä@Žt@Žu@g†@g…@g‡@Žs@%h@g@gØ@gÚ@gÙ@i@hT@µ@h}@´@ý@iJ@M_@M^@Mß@MÞ@i§@%MÝ@i¦@NÚ@ji@jh@NØ@NÛ@jg@NÙ@k’@k“@Pv@Rl@oÊ@oË@T‰@TŠ@%r¯@VÍ@VÏ@r®@VÎ@uá@Yx@[Ï@[Ð@y¨@^W@^V@€“@ƒÒ@ƒÑ@‘|@Lh@%iZ@io@ip@Mâ@Mæ@i©@Mä@Mã@i¨@Må@Má@Mà@iª@Nå@Nâ@NÞ@jj@%jk@Nà@jm@NÜ@jn@jl@Nß@Ná@Nä@Nã@NÝ@jo@P{@k @P}@P|@k¡@%Pz@Py@k—@k–@k”@k™@k˜@k•@kž@kŸ@kœ@kš@Px@k@P~@k¢@k›@%Rm@Pw@Rn@mv@m|@Rt@mz@m@mw@m{@m}@m@my@mx@ms@mt@Ro@%Rq@Rp@mu@m~@Rs@mr@oÕ@oÔ@oÙ@oÐ@oÓ@oÒ@oÖ@oÚ@T‹@TŽ@oÑ@%o×@T@oÌ@Rr@r½@oØ@oÏ@TŒ@oÎ@r´@VÐ@VÔ@rÄ@r²@rÀ@VÕ@rÂ@%rÈ@rÌ@rÃ@r·@r¿@rÍ@rË@rÁ@r¼@rµ@ué@r³@VÙ@rº@VÚ@VÖ@r°@%rÆ@r¸@r¶@rÉ@V×@rÏ@VÑ@VÓ@r¾@r¹@T@VÒ@r»@rÊ@rÎ@rÅ@rÇ@%r±@uä@uí@uì@Y@uå@Y‚@Y@uç@Y|@uë@uæ@uè@uâ@Yz@uõ@uô@%uñ@Yy@Y}@Y~@oÍ@uî@Y{@VØ@uð@uã@uó@uò@uö@y¶@uï@uê@y®@%[Ú@[Ý@[Ø@y­@y±@y¬@[Ò@[Ü@y©@[Ö@y°@[Ô@[Ó@y³@[Õ@yµ@y²@%[Ñ@[Û@y·@y«@y´@yª@[×@[Ù@y¯@y¸@}f@^X@}l@^]@}h@}o@}`@%^_@^Y@}e@`^@}d@}m@^Z@^^@}c@}i@}n@}_@^\@}g@}k@}q@}a@%}j@^[@}p@}b@`b@€•@``@`_@€—@€œ@€˜@€›@`e@bN@`d@€”@€š@%`c@€™@€–@`a@ƒ×@ƒÙ@ƒÔ@bj@ƒÖ@bi@ƒØ@bl@ƒÚ@bk@ƒÓ@ƒÕ@cÍ@%†×@cÌ@†Ø@cË@†Ö@cÊ@†Õ@e^@e]@‹e@‹g@‹f@fM@fN@fO@Œï@få@%D@C@h~@Li@L°@Næ@m‚@Yƒ@Y„@y¹@^`@}r@€@i[@jp@Hb@k£@%mƒ@oÛ@T@‹h@gˆ@Lj@M`@iq@Mç@Mè@P@VÛ@^b@^c@^a@Lk@L±@%L³@L²@i\@L´@Ma@ir@Mb@Mé@Mê@i«@Nç@jq@P„@k¤@P‚@Pƒ@P@%oÜ@Rx@Rw@Ry@Rv@m„@P…@Ru@T‘@T’@T“@rÐ@Y…@u÷@VÜ@[Þ@^e@%^d@}s@`f@bm@‰m@j@E@Ll@Mc@Md@i±@Mì@Mï@i¯@i­@Mî@i°@%i²@i¬@Mñ@Mð@Mí@Më@i®@Nò@Nï@jv@jy@jx@Né@Nñ@Nî@ju@js@%Ní@Nè@Në@jt@j{@jw@Nì@Nð@Nó@jr@jz@Nê@PŠ@P’@k°@k©@P“@%k´@k¥@k¬@P‰@k¦@P‡@k­@k±@P†@k²@k«@k®@P•@PŒ@kµ@k³@P‘@%P@kª@PŽ@k¨@k§@P@P‹@P”@P@Pˆ@k¯@R{@Rƒ@m’@Rz@mŠ@m†@%m–@m…@R}@m@R@R„@R~@m“@R‚@Tš@m™@m‡@m‰@m@m”@m˜@m•@%mŽ@m‘@m‹@R†@m@mŒ@m—@R|@mˆ@R…@R@T @oä@TŸ@oâ@T”@T™@%oá@oÞ@oã@T•@oÝ@T˜@T–@oå@T—@T›@Tœ@Tž@T@oß@oà@oæ@r×@%VÝ@vH@rÖ@ré@Vã@rç@Vâ@VÞ@rð@rà@rã@Væ@rí@rå@Vß@Vç@rê@%rè@rÙ@rî@râ@rÝ@rÓ@rï@rß@rÒ@Vå@rä@rñ@rá@rÕ@rÚ@rÑ@Vä@%rÞ@rÛ@Và@rÔ@rì@Vá@rÜ@rØ@rë@Y†@vA@uû@vO@vC@vP@Yˆ@vL@%vI@vJ@vM@vQ@ræ@vS@yÍ@Y‰@vT@uù@vF@vK@Y‡@YŠ@vR@vU@uý@%uú@uü@vD@vB@Y‹@vN@vE@vG@uø@yÁ@y¿@[ç@[å@yÉ@yÀ@yÊ@yÆ@%y¾@yÌ@y½@yÄ@[ä@[ã@[â@yÂ@yÇ@[ß@[æ@y»@yÅ@yº@yÃ@[à@yÈ@%y¼@[á@yË@}w@^j@^i@^k@}„@}y@}@}t@}ƒ@}‚@}†@}~@^f@}}@%^l@}v@^g@}…@^h@}x@}{@}@}z@}u@}|@€Ÿ@`j@€¢@€¡@€¤@€¦@%`h@€ @€ž@€§@€¥@€£@€©@€¨@`l@`g@`i@`k@€ª@ƒá@ƒà@ƒß@ƒâ@%ƒÛ@ƒÜ@ƒä@ƒÝ@bn@ƒæ@ƒå@ƒÞ@†Ü@cÐ@†Ú@†ß@†Þ@ƒã@cÏ@†Ý@†Ù@%†á@†à@cÎ@†Û@bo@e_@‰n@‹i@‹j@‹k@fæ@fç@Œð@Žw@Žv@k@l@%F@¶@Lm@Ln@Lo@Lµ@Me@i³@Mò@Mó@Nö@N÷@Nõ@Nô@P–@k¶@P˜@%P—@k·@R‡@T¡@oç@ró@Vè@Y@rò@YŒ@^m@}‡@bp@cÑ@†â@fè@gÛ@%Hg@is@Mf@it@Mö@Mô@Mõ@M÷@Nù@Nø@j|@Nú@j}@k¸@k¹@P™@P›@%P@Pš@Pž@Pœ@R‹@Rˆ@RŠ@RŒ@R‰@oè@mš@oê@oé@T§@T£@T¤@T¦@%T¨@T¥@Tª@T©@Ví@rõ@rô@Vì@Vë@Vê@Vî@Vé@v[@vX@Y@vW@v\@%Y‘@vZ@YŽ@Y@vY@yÎ@yÏ@yÐ@^n@^v@}ˆ@^p@^t@}‰@^u@^q@^r@%^o@^s@`o@vV@`p@`n@`m@ƒç@bq@†ã@†ä@fP@fé@Lp@Mø@R@oë@%T«@Vñ@Vð@Vï@Y’@Y“@v]@^w@br@Lq@i]@L¶@iu@i´@Mù@PŸ@yÑ@%Lr@L·@iµ@j~@j@Nû@v^@Y”@yÒ@cÒ@Ls@Lˆ@L¸@iv@Mg@OB@OA@%Nü@Ný@kº@P¡@P¢@k»@P @R‘@m›@R@RŽ@R@T®@T¬@oí@T­@oì@%T¢@rö@Vó@Vô@Vò@^x@}Š@`q@`r@€«@cÓ@‰o@‰p@g‰@·@iL@L¹@%Lt@ix@iw@Mú@i·@i¸@i¶@i¹@jˆ@jƒ@j…@j‡@j„@OF@j@j‚@OC@%OD@j†@j‰@OE@jŠ@kÉ@kÃ@k¾@P¤@kÆ@kÄ@k½@kÊ@kÍ@kÈ@kÁ@P¦@%kÇ@P§@kÂ@kÅ@k¼@kÀ@kÌ@P¨@P©@k¿@kË@P£@P¥@m¬@m¥@m«@m¤@%m¦@m @mž@m­@mª@mœ@R“@m¨@m©@m§@mŸ@m@R’@m£@m¡@m¢@m®@%T³@T²@oî@T¯@oð@T´@oñ@T·@Tµ@oò@m¯@oô@T±@T°@oï@oó@T¶@%Vö@Võ@rø@rü@sA@V÷@sD@Vû@sF@Vý@Vù@WD@WA@rú@Vø@rù@r÷@%sH@rû@Vú@sG@WB@sC@sB@WC@rý@Vü@sI@sE@vm@vt@vi@Y—@ve@%vu@v_@vr@vp@vj@vs@vl@vd@vv@vb@vo@v`@vw@Y˜@vq@yÕ@vc@%Y•@vg@Y–@vf@vk@vh@vn@yÙ@yÜ@yÔ@yÖ@yÛ@yÚ@[è@va@yØ@[é@%yÓ@y×@}‘@}˜@}@}–@}@}•@}™@}Œ@}@}‹@^y@}Ž@^z@}”@}“@%}’@}—@€¯@€±@`t@€²@€­@€¬@€¶@€´@`s@€·@€®@€³@€µ@€°@ƒë@%ƒð@ƒê@ƒï@ƒè@ƒò@ƒî@ƒó@ƒí@ƒé@ƒñ@ƒô@ƒì@†å@c×@cÕ@cÔ@cÖ@%‰q@ŠÀ@‹l@Œñ@Œò@fê@Žx@gŠ@Žy@n@gÝ@gÜ@m@hU@G@Hn@Lu@%Mû@iº@j‹@OÕ@WE@Lv@Mj@Mi@Mh@OG@T¸@yÝ@Lw@Lx@Ly@Lº@R”@%m°@Y™@Lz@i^@Mk@Ml@iy@Mü@jŒ@OH@j@P¯@kÏ@P­@P¬@kÎ@Pª@%kÐ@P«@P®@R•@R—@m´@m±@m²@m³@mµ@R–@oö@oõ@Tº@T¹@WH@sK@%WG@WI@WF@Y›@sJ@Yœ@vy@Y@vx@Yš@yà@yâ@[ê@yá@yß@yÞ@}œ@%^@^}@^~@}š@}›@^{@€»@€¹@`v@€º@`w@`u@^|@ƒ÷@ƒõ@ƒö@€¸@%†ç@cØ@†æ@‰r@‰s@ƒø@‹m@L{@Mm@NA@i»@Mý@P°@[ë@Hs@L»@Mn@%R˜@Yž@Ht@iz@i{@i¼@OJ@j‘@j@OK@jŽ@j@j’@OI@P´@Pµ@P²@%P±@m¹@P³@R™@m¸@mº@m·@m»@Rš@T½@o÷@où@T»@oú@T¼@oø@m¶@%sL@sO@sP@sM@WM@WL@WJ@WK@sN@WN@Y @Y¡@Y¢@yã@yå@yç@[í@%[ì@YŸ@yæ@yä@} @}ž@}¤@^@}¥@}¢@^‚@}Ÿ@}@}£@`y@€½@}¡@%`{@€¾@`z@`}@€¿@`x@`|@ƒý@ƒû@ƒú@ƒü@ƒù@fR@Œó@Œô@Žz@o@%h¡@Hu@P¶@OL@R›@L|@L¼@Mo@i½@OM@j“@m¼@Rœ@^ƒ@L}@NB@[î@%L~@L½@L¾@Mq@Mp@i¾@NC@j”@ON@kÒ@kÓ@kÔ@P·@P¸@kÑ@P¹@R@%m½@oü@T¾@oû@WO@sQ@WP@sR@Y£@yè@}§@}¦@^„@`~@€À@bs@„A@%cÙ@gÞ@I@Hy@kÕ@m¾@WQ@vz@[ï@e`@e`@Hz@OP@OO@Rž@oý@WS@%X¨@WT@WR@Y¤@}¨@^…@`@iM@i¿@j–@OQ@j•@OR@P½@kØ@k×@P¼@%Pº@P»@kÖ@R @m¿@R£@RŸ@R¥@R¡@R¢@R¤@TÁ@TÀ@T¿@sT@WU@WX@%WV@sS@W[@WW@sU@WZ@WY@v|@v{@Y§@Y¥@Y¦@v}@[ð@yê@[ñ@yé@%€Á@`‚@}©@`@^†@†é@„B@cÚ@†è@‹n@Œõ@Œö@L¿@Mr@i|@OT@OV@%iÂ@j™@j˜@j—@iÁ@iÀ@NE@OU@OS@ND@P¾@kÙ@P¿@jž@j @jŸ@kÚ@%j›@OZ@OX@jš@jœ@j¢@OW@j@j¦@PÁ@j£@OY@j¡@j¤@PÀ@PÂ@j¥@%kî@ká@kß@kí@kè@Rª@PÃ@ké@kì@R¦@kë@PÄ@PÉ@PÇ@kâ@kÝ@kä@%PÎ@kï@R§@kå@R¨@PÊ@kç@mÎ@R©@kÜ@PË@R«@PÌ@PÈ@PÍ@kæ@kÛ@%kê@PÅ@kÞ@kã@kà@PÆ@mÀ@mÁ@mË@pD@mÌ@R±@mÏ@mÅ@R°@mÇ@mÈ@%mÊ@R¬@TÅ@mÆ@mÂ@TÆ@mÐ@TÂ@pB@mÉ@pA@mÄ@mÍ@R¯@TÃ@Rµ@TÄ@%mÑ@pC@R®@TÈ@R´@R³@R²@TÇ@mÒ@TÉ@R­@mÃ@W\@pG@pI@pK@TÊ@%TÐ@sX@pO@pF@W^@sV@TÏ@TÍ@pQ@sW@pH@TÎ@pL@TÑ@pN@TÌ@pM@%pP@pJ@TË@W_@pE@W]@W`@sZ@sc@Yª@Wb@Wg@Y«@se@Wn@v@s[@%Wf@Wi@Wd@sY@sg@sj@v@sh@v„@We@Wl@Wp@sb@v~@sf@Wa@v@%si@vƒ@s^@Y¨@s\@s]@Wk@Wj@s`@Wo@sd@Wh@sa@Wm@Y¬@Y©@v‚@%s_@Wc@Y±@Yµ@v†@[ö@Y³@vŠ@Y·@yë@vŒ@[ø@Y¯@Y²@v@vŽ@v”@%Y¹@[ù@v@v•@v‰@\F@[ú@Y¸@v‡@v–@\E@Y¶@[ó@v“@Yº@v‹@v…@%Y°@vˆ@v‘@[ò@[÷@Y­@v’@[õ@Y®@\D@}«@yö@yî@}ª@yò@yô@yñ@%\C@yð@\G@}º@\B@^ˆ@y÷@}¬@[ý@yï@yó@^‡@[ô@yì@yí@^‰@[ü@%\A@[û@yõ@}°@}±@}¶@`‡@}½@^@^Ž@}¸@`†@}­@^@}¼@^‹@^Œ@%}¹@€Ò@`„@Y´@}»@`‹@}³@`…@`Š@}®@}²@}¯@}µ@^@`ƒ@^Š@€Ä@%}·@`‰@`Œ@}´@`ˆ@€Ã@€È@bw@€Â@„N@€Ñ@`@`Ž@bu@€Î@€Ê@`”@%„E@`’@€É@„C@€Í@€Ð@€Ç@`“@`@„D@bv@€Ï@`@`‘@€Ì@`•@€Ë@%€Æ@€Å@bt@€Ó@„G@†ë@by@„M@„K@†ì@bz@„L@„I@cÜ@†ê@„F@„H@%cÝ@b|@cÛ@b{@cß@„J@bx@‰|@‰t@†ò@‰u@†î@ea@†ð@†ï@cÞ@†í@%†ñ@‰}@‰y@‰{@‰v@‰w@‰z@‰x@fS@fV@fU@fT@fë@Œ÷@fì@‹o@g‹@%Ž{@gŒ@gß@hV@J@K@L@‘ª@LÀ@i}@Ms@NG@NH@NF@NI@O\@O[@%kð@PÐ@PÏ@pR@Wq@Wr@Y»@yø@\H@\I@yú@yü@yû@}¿@}¾@^‘@}À@%€Ô@`–@b}@cà@eb@cá@LÁ@j§@kñ@PÒ@PÑ@PÓ@R¶@mÓ@mÔ@pS@TÒ@%Ws@Y¼@v—@LÂ@L@LÃ@i~@Mw@Mv@Mt@Mu@NL@iÊ@iÌ@NK@iÄ@iÅ@%iË@iÇ@iÉ@NJ@iÆ@iÃ@iÈ@Oc@Ol@Oj@j±@j®@j¶@Oh@j·@Oa@j´@%Og@j°@j¯@Oe@jµ@Of@PÔ@O`@j²@j¨@O]@Op@j­@j³@Ob@Od@j©@%jª@j«@Oo@Oi@On@j¬@Om@O_@O^@Ok@Pâ@ký@kö@PÝ@Pð@kò@kù@%kû@lA@Pë@kú@kó@Pé@k÷@lB@PÚ@kü@Pä@Pã@kõ@PØ@PÙ@P×@Pï@%Pç@Pá@PÕ@kø@Pà@PÖ@Pè@Pñ@mÕ@På@kô@PÛ@PÞ@Pß@Pí@Pî@Pì@%Pæ@Pê@PÜ@R·@mÛ@RÃ@R»@R½@RÂ@mç@RÀ@pT@TÓ@RÅ@mØ@mà@RÁ@%mß@mÜ@mä@mæ@Rº@R¾@RÄ@TÕ@má@R¼@RÇ@mÚ@R¿@TÔ@R¹@m×@mÞ@%mÖ@mÙ@mÝ@pU@RÆ@mâ@mã@må@R¸@Tã@pa@Tá@Tâ@pW@pg@TØ@sk@%pi@pc@pZ@pl@p]@TÞ@sƒ@p`@Tà@T×@pn@pb@TÚ@p[@pX@pY@TÛ@%ph@po@TÝ@p_@p^@Tå@Tä@TÖ@TÜ@Tß@pk@pe@TÙ@pV@pm@pd@pf@%pj@sl@W{@W@W@W„@s~@sz@sw@sŠ@W~@Wv@s|@YÌ@Wz@s…@W‘@%WŽ@s@so@W@s‡@sn@W‚@W†@s†@sx@W‡@W@sm@Y¾@s‰@sv@WŒ@%sy@sˆ@W‹@v˜@Ww@st@W|@Wˆ@Wƒ@s}@ss@sq@s„@Wt@W‰@Wx@Y½@%s‚@Wy@Wu@W…@W@W}@su@WŠ@sr@s@s{@vš@v™@sp@vª@YÀ@v°@%vŸ@v­@yý@YÃ@v±@v´@YÂ@v¢@v³@v²@YÄ@v›@Y¿@YÇ@YÅ@v¯@v¥@%YÉ@v¶@v®@v·@YÑ@YÏ@v¬@v«@v©@v£@YÈ@YÆ@p\@vœ@z^@v@YÁ@%YÎ@zB@YÊ@YË@vž@vµ@zA@v¦@v¡@YÍ@v§@v¤@YÒ@\X@zE@zX@z]@%zQ@\T@zb@\Q@zC@zD@\J@\S@zK@\V@\W@zL@zY@z_@\R@\L@zJ@%zF@za@zO@zP@zG@z[@zR@z\@zT@\M@}Á@\P@\N@z`@zW@zS@zH@%^›@zV@\U@zN@zM@\O@\K@}Ö@zZ@zU@zI@}Ñ@}Â@}Í@}Ô@^™@YÐ@%}Ò@^”@^“@}Ù@}Ã@}Ð@}Ä@}Ï@^—@}Ó@v¨@}Ú@}Ë@^š@€â@`—@}Ø@%}×@^œ@€Õ@`˜@€Ö@}Ç@}È@}Å@}Ê@}Æ@}Û@^–@`™@^˜@^@}É@}Õ@%}Î@€Ù@^’@`œ@„U@€Þ@€Ý@€ß@€Ü@`@hË@`£@` @`¡@€×@€Ú@€ä@%`©@`§@€Û@v @`š@€á@€Ø@`ª@€à@^•@`Ÿ@}Ì@`¢@`¦@`¨@`¥@`¤@%`ž@€ã@`›@`«@b‚@bƒ@„T@bŒ@b‰@b@b‡@„V@b…@b~@b†@„S@cã@%b@bˆ@câ@„R@„Q@bŠ@b‹@„P@„O@cä@„Y@b„@„W@cå@cê@†õ@†÷@%cç@†ø@†ô@†ö@cè@cë@†ó@cæ@cé@ed@„X@ec@ei@‰‚@eg@eh@‰…@%‰@ee@‰~@fW@‰ƒ@‰„@‰@ef@‹p@‹s@‹t@‹r@‹u@fX@‹q@Œû@fî@%Œú@Œù@Œø@fí@fï@Ž|@gŽ@g@q@p@s@hW@gà@N@r@M@hY@%hX@h@¸@‘A@LÄ@v¸@„Z@H‚@NM@j¸@Os@Oq@Or@lC@Pò@RÈ@mè@%mé@RÉ@pq@Tæ@Tç@pp@W˜@W”@s‹@W›@Wš@W“@W–@W™@W•@v¼@W’@%YÓ@YÕ@YÖ@v»@v¾@YÔ@v¹@v½@vº@\Y@zc@^ž@}Ü@b@`¬@€å@`­@%`®@€ç@€æ@€è@„\@„[@†ú@†ù@cì@cí@‹v@LÅ@v¿@YØ@Y×@zd@‰†@%g@O@LÆ@Tè@W@Wœ@vÀ@vÁ@\Z@}Ý@^Ÿ@„]@LÇ@Mx@Pó@lD@mê@%RÊ@Wž@vÂ@YÙ@\[@€é@€ê@†û@ej@‘B@LÈ@lE@Pô@RË@më@Té@pu@%ps@pt@Tê@pr@W @W¡@sŒ@W¢@WŸ@vÃ@vÄ@ze@^¡@^ @†ü@‰‡@‹x@%‹w@Œü@H‡@i_@RÌ@LÉ@My@NO@NN@NP@NQ@iÎ@iÍ@j¹@Ot@j¼@j»@%jº@j½@Põ@lK@lG@lP@Pü@Pú@lL@lH@lO@Pù@QC@lJ@lF@QB@lM@%Pø@lN@Pû@Pý@lR@lQ@lI@P÷@Pö@QA@mð@mö@RÒ@RÏ@mí@mò@RÕ@%RÍ@mñ@RÐ@RÓ@mô@RÎ@mù@RÑ@RÔ@mî@mó@m÷@mï@mì@mø@mõ@Tò@%Të@Tî@Tñ@px@Tì@pv@Tð@Tí@py@Tï@s@W¤@s@s‘@W£@W¨@pw@%sŽ@s’@W¥@s@W§@W¦@vË@vÆ@YÚ@YÞ@YÛ@vÉ@vÌ@YÜ@YÝ@Yâ@zn@%vÊ@Yà@vÇ@vÅ@Yá@vÈ@\a@zf@\^@\_@\]@zk@zj@zg@\c@zi@Yß@%zm@zh@\`@\\@\b@zl@^¤@}à@}ß@}Þ@^¢@^£@€í@€ð@`°@`¯@€ñ@%€ì@`²@€î@`±@€ë@€ï@b“@b@„f@„e@„d@„_@„`@b‘@bŽ@b’@„^@%b@„a@„b@„g@„c@†ý@cï@‰Š@cî@‰ˆ@‰‰@ek@fZ@‹y@fY@A@B@%fð@Œý@g@P@hZ@¹@º@LÊ@NR@NS@Ou@lS@RÖ@Tó@W©@V¶@Yã@%Yä@YR@vÍ@\d@}â@}á@LË@NT@lT@QE@QD@mú@mû@pz@p{@Tô@Tõ@%Tö@s“@W«@Yæ@Yå@zo@{Â@}ã@„h@el@fñ@LÌ@M|@M}@M{@M~@Mz@%NW@iÖ@NV@NX@iÑ@iÐ@iÓ@iÒ@iÕ@NU@iÏ@iÔ@j¾@O@j¿@jÃ@O~@%jÇ@jÂ@jÅ@Ow@Ox@Oy@Oz@O‚@jÁ@O|@Oƒ@jÀ@jÆ@O{@jÄ@O}@Ov@%O@QZ@lV@QF@QP@QQ@QI@Q[@QK@l^@QV@lY@QL@lh@li@la@lZ@%QY@lf@QT@QR@lg@le@l]@lU@l\@QM@QS@QG@l`@l_@lW@QU@lc@%lX@QX@lj@QH@QO@l[@ld@QW@QJ@QN@lb@n^@RÞ@Rë@nY@nO@Rä@%nM@RÝ@nH@Rç@nU@nB@nD@nG@mü@nT@nd@Râ@nI@n[@nA@nb@nc@%nf@n]@nN@nV@Rè@RÛ@Rã@Rï@RØ@RÚ@nF@Rì@Rå@n`@nC@Rî@Ré@%nL@Rí@nS@nK@Ræ@n_@nW@Rà@ne@nJ@RÜ@n\@nR@Rá@nX@RÙ@mý@%Rê@UH@Rß@nQ@nP@nE@na@nZ@R×@p@UO@p‘@p…@UD@UP@p}@p‡@%p@p|@p˜@T÷@p—@p’@p“@UB@UM@p‰@pŠ@p”@p‹@p†@p@p@pŽ@%pˆ@Tø@Tü@p–@p‚@UK@UG@UJ@UQ@Tý@UL@p@UN@Tú@Tù@p~@pƒ@%UE@p•@pŒ@p„@UI@UF@Tû@UA@s¨@s˜@s™@s@s¬@s©@s¢@s¡@W²@%s¥@s´@s”@sµ@s§@s¹@s­@W±@s«@W¬@WÁ@W·@W»@Wº@s•@s²@s¸@%s°@s·@s¤@s–@s¶@s¦@W¯@W¼@s¯@Wµ@s®@s—@W½@W¿@s±@WÀ@W®@%sž@s³@W´@W¾@s @sª@s›@sŸ@W¹@sš@W­@W¶@W³@s£@UC@vä@W°@%W¸@vç@vý@vò@Yú@Yõ@vá@Yö@vñ@vê@v÷@Yò@vÏ@vù@Yè@v×@Yë@%Yê@Yû@vÑ@vó@vô@Yí@Yé@vß@Yô@vÚ@võ@Yð@ví@vú@vÔ@vÙ@vÓ@%Yï@væ@z†@vÕ@Yó@vÞ@vö@Yî@vÛ@vØ@vé@Yñ@Yç@Yý@vì@vë@vÐ@%Yì@vø@và@vâ@vï@vî@vÎ@Y÷@Yù@vÖ@vÝ@vå@Yø@vÜ@vè@vû@vð@%‘Æ@vü@vÒ@zš@\l@z˜@zƒ@zˆ@z@z”@zr@zy@z’@zœ@z„@zv@zŠ@%z@zz@zŒ@zw@z~@z@\n@z“@z‘@zs@z–@z—@z™@\r@\j@sœ@z{@%zŽ@z|@\g@\w@z•@\u@\q@zq@\i@zt@\v@z…@zp@\o@z‰@zx@\p@%z‚@\f@Yü@z‹@vã@zu@z@\k@z@\h@z‡@\s@z}@z›@\m@{N@\t@%}ñ@}ï@~H@}í@~B@\e@^§@}é@~G@}î@}ü@^¬@^¥@~E@}ç@~D@^·@%}ø@~K@^µ@}ð@^¦@}ò@~C@^¯@}ë@^³@^©@}ô@}ê@}ä@~A@^°@~J@%}å@^­@}ú@^®@}ì@}÷@}ó@}õ@^¨@~I@^¶@}ö@~L@}æ@}û@^«@^´@%^²@}è@}ý@^±@^ª@}ù@~F@€ý@€ù@€õ@L@I@`µ@P@€ü@`À@F@%€ø@E@`½@Y@V@H@€ö@M@O@`¹@C@€û@€ò@`¶@`¾@R@`¿@%€ó@X@K@Q@`¼@N@U@`Á@`»@G@€÷@Z@€ô@S@`¸@A@B@%`·@`´@€ú@`º@`³@T@W@D@„u@„m@„i@b @b•@bš@b–@„w@„ƒ@%b”@„o@„x@J@„y@b›@„‰@bŸ@b¢@„k@bž@„‡@„ˆ@„}@„|@„t@„~@%„†@„…@b™@b—@„v@„s@„p@„„@b¡@„‚@b@bœ@„{@„j@„l@„n@„@%„z@b˜@„q@„@„r@c÷@‡R@cð@‡C@‡N@cò@‡U@‡J@‡E@‡V@‡A@‡L@%cù@‡Q@‡W@‡K@cñ@‡M@‡B@cø@‡T@‡G@cô@‡I@‡F@cú@‡H@có@cö@%‡P@‡D@‡S@‡O@en@‰•@es@et@em@‰”@‰‘@‰’@eq@‰Œ@‰@ep@‰@%er@eo@‰‹@‰@‰“@‹@‹|@‹†@‹…@‹ƒ@‹}@f^@‹~@f]@cõ@‹‚@f\@%‹‡@‹@‹{@‰Ž@f[@‹z@F@E@‹„@fò@I@J@D@H@C@Ž@G@%g“@g‘@Ž~@Ž‚@Ž}@Ž@g’@u@v@gá@t@S@h[@Q@R@»@h¢@%‘E@‘C@‘D@‘F@‘«@LÍ@NY@Q\@lk@ng@p™@p›@pš@pœ@WÂ@s»@p@%sº@s¼@s½@wA@ZB@wB@wD@ZC@ZA@wC@z¢@z @zŸ@zž@z@\x@z¡@%^¸@~M@~O@^¹@~N@`Ã@`Â@[@„‹@„Š@„Œ@b£@‡X@cû@‰–@eu@‹ˆ@%gâ@LÎ@M@NZ@O„@Q]@Q^@Rð@pž@\y@Ú@b¤@ev@LÏ@N[@lm@Q_@%ll@nh@Rñ@ni@Rò@p @US@UR@sÂ@sÀ@sÁ@s¿@s¾@wE@wH@ZE@wF@%ZD@wG@z£@~P@~Q@~R@^@]@`Ä@\@_@„@„Ž@„@‡Y@cü@ew@%‹‰@g”@i`@Ró@nj@UT@WÃ@ZF@wI@\{@\z@~S@~T@`Å@`Æ@„‘@„@%‰—@T@LÐ@ia@M@O…@jÈ@Rô@\|@LÑ@nk@Rõ@nl@cý@LÒ@ln@nm@%p¥@p¤@p¢@p¡@p¦@p£@WÄ@WÅ@ZG@wJ@wK@wL@z¨@z©@z§@z¥@z¦@%\}@~U@b@a@`@c@„“@„’@b¥@„”@dA@‡Z@‰˜@‹Š@w@LÓ@Mƒ@%M‚@Q`@ib@i@N\@i×@jÉ@jÊ@Qa@lo@Rö@nn@no@UU@UY@p§@UX@%UV@UW@sÃ@WÆ@ZJ@ZH@ZI@wM@^º@LÔ@i@M„@i„@M‡@iƒ@M†@M…@%O†@i‚@iØ@iÜ@iÞ@iß@Nf@Ng@iÛ@Nb@iÙ@iÝ@Nc@N^@N_@Ne@iÚ@%N]@O‡@N`@Na@Nd@jÛ@jÙ@jÌ@O“@jÓ@OŽ@jÍ@jÕ@jÒ@O‘@jÑ@O˜@%jÚ@Oš@Oœ@jË@O@jÜ@O–@O™@l‡@O‰@O @O—@jÎ@OŒ@O›@jÖ@OŠ@%O‹@l…@jÏ@O’@O@jÝ@jÐ@O@O•@lp@Ož@j×@O”@OŸ@Oˆ@jÔ@O@%jØ@l†@Qm@Q}@lw@Qt@l@Qe@Qh@l„@lu@ly@Qp@Qr@l|@Qy@Qk@%Qi@Qj@Qx@l‰@Qs@l{@l}@Qq@Qv@l~@lŒ@R÷@Q|@Qf@l‹@l@lz@%l‘@l‚@Qo@lv@Qn@Q@Qu@lt@nx@Q{@Q@lƒ@lˆ@Q‚@Qz@Ql@Qb@%Qg@lx@Qc@l@lr@lq@l@ls@Q~@UZ@Qw@l@Qd@SI@lŽ@n@nƒ@%n†@nz@n‰@nŒ@nŽ@nw@Rø@Rý@p¬@SP@n‡@n@n~@nv@pÇ@SC@n„@%n{@n}@SH@n@SB@ns@nŠ@n@Rü@SK@np@SM@Rú@SQ@n‹@nr@SN@%pÁ@lŠ@SA@Rù@ny@nq@SO@SG@n…@SL@SJ@n|@SD@nt@SE@SF@nu@%nˆ@Rû@n‚@p¯@Ub@Ug@p¸@p¾@pº@p­@p°@p©@pª@Un@U_@p¹@pÂ@%Ui@U[@Ud@p±@Uf@p²@p¼@Uh@pË@p«@Ua@U`@Ul@p¨@pÉ@p½@pÊ@%pÄ@p¶@pÅ@p¿@pÈ@pÆ@Um@p·@U^@U]@Ue@Uk@pÃ@Uj@p´@WÇ@pÌ@%p³@p®@Uc@Uo@U\@p»@pÀ@Wé@sÅ@sÉ@WÖ@WÔ@WË@sÇ@sÆ@Wß@sÌ@%WÙ@sÞ@sê@WÈ@sÛ@sÔ@Wë@sÄ@sà@Wè@WÜ@Wç@WÒ@sÐ@sâ@sÚ@WÓ@%WÍ@sè@sá@sã@WÕ@WÝ@så@sÎ@sß@sÓ@sç@Wâ@WÊ@Wà@sØ@sÖ@s×@%W×@sÒ@sÑ@WÌ@sË@sé@WÎ@sÕ@Wì@Wæ@sÊ@Wã@Wá@Wê@sÜ@Wå@pµ@%sÝ@Wä@sä@WÉ@sÙ@WÛ@sÍ@WÚ@WØ@WÐ@WÏ@wN@sæ@sÏ@wc@WÑ@Zg@%WÞ@ZU@w]@Zc@wQ@ZR@ZN@wo@ZT@ZX@ZS@Z\@ws@wj@wX@Za@Z[@%wd@ZK@wp@wi@ZO@w^@Z^@w{@w|@ZL@wn@Z`@wb@wT@wU@Zd@wY@%w`@wZ@Zb@Zj@wV@wO@wP@wR@ZQ@w_@Z_@Zh@wa@wy@wq@ZM@ww@%ZY@ZW@w}@ZV@wg@w[@we@Zm@wk@wh@wW@Zi@wu@wr@wz@ZP@wf@%Zl@wm@ZZ@Z]@wl@Zk@w\@sÈ@wv@wt@wx@wS@Zf@zÈ@zÇ@z­@\„@%zÆ@z°@z±@\Ž@zÏ@\‰@zÅ@zª@\@\…@z¹@z¯@z²@zÊ@\~@zÑ@zÉ@%\ˆ@z¾@\“@\’@\Œ@zÐ@\@z¼@z³@zÀ@zÌ@\”@\‚@z»@‘Ç@z´@\‹@%\Š@z·@zÁ@zË@z®@z¸@\ƒ@zÂ@\@\‡@zµ@\†@z¬@zº@zÎ@Ze@^Ö@%z½@~V@z¿@zÍ@\@z¶@\@\‘@`Ø@z«@zÄ@zÃ@~r@^Ó@~g@~l@^È@%~X@^Õ@^¿@~W@~x@^×@~[@~k@~]@~{@~w@^½@^Ç@}@^Ô@^Å@~Y@%~v@^É@~s@~@~_@~h@~~@~t@^Ä@~f@^¾@^¼@^Î@~d@~a@~b@~z@%~@~}@^Â@~‚@^Æ@^Í@~Z@e@~c@^À@^Ò@^Ï@^Ã@~m@~^@^Ð@~o@%^Ê@^Ì@^»@~q@~i@~\@^Ë@~y@~|@~e@~p@^Á@`Ç@~n@d@~u@~`@%n@x@`Ê@w@„@`Ì@u@y@`×@p@`Ï@|@„œ@`Û@`Ú@~@m@%‰@`Õ@`Ë@‚@†@‹@@s@`Î@`Ñ@`Ù@`Ô@v@~j@r@Š@`Ð@%`Ó@Œ@`È@@f@‡@dJ@t@`É@o@`Í@g@^Ñ@k@…@l@j@%`Ò@ƒ@i@{@z@ˆ@q@`Ö@„Ÿ@b²@b¨@„«@„—@bª@„£@b±@b¬@%„¡@‡\@„§@„­@„¦@„•@„¤@„¯@„±@b§@„°@b­@b³@b°@„ª@b¯@„¥@%„™@„ž@„©@b®@b«@b¦@b©@„@h@„˜@„›@„¬@„ @„–@‡[@„®@„š@%„¨@‡^@dN@dB@dF@‡`@‡f@‡d@dD@dE@dL@‡g@‡_@dG@‡c@‡b@‡h@%dM@dH@dK@‡a@dO@dI@dP@dC@‡e@‡]@‰¥@e|@‰¢@‰¤@ez@‰ @‰¡@%‰œ@„¢@‰@e{@‰™@ex@‰¦@ey@‰š@‰›@‰Ÿ@e~@e}@‰ž@fd@‹Ž@‹”@%fe@‹‹@fb@f_@‹–@fc@f`@‹@‹@‹‘@‹’@‹•@‰£@‹Œ@fa@‹“@‹—@%‹@M@fô@P@fõ@X@O@L@N@R@U@T@W@K@fó@S@V@%Y@Q@Žƒ@Ž„@Žˆ@Ž‰@Ž†@Ž‡@Ž…@g•@gã@{@x@y@z@gä@V@%U@¾@h@¼@¿@½@‘G@h£@h±@‘“@‘}@‘’@‘À@‘Á@LÕ@Nh@ià@%jÞ@O¡@O¤@jß@O¢@O£@lš@lœ@l—@l”@l–@Q†@Q„@l˜@Q…@l•@l’@%Qƒ@l™@l“@Q‡@l›@n‘@n•@SZ@n˜@SR@SU@SW@SY@SV@n”@n“@ST@%n–@n—@n@SX@SS@n’@pÚ@pÛ@pÜ@Ut@Up@pÑ@pÙ@pÞ@Uu@pÏ@pÕ@%pÎ@pØ@pÔ@Uq@Us@pÝ@pÍ@pÐ@pÖ@p×@pß@pÓ@Ur@Wñ@sñ@só@sï@%sû@sí@sú@Wí@së@w‚@sõ@Wð@sö@sù@sý@sò@s÷@Wî@Wï@sü@sð@%sì@tA@sô@sø@sî@Zn@Zo@wŒ@Zu@w@w‰@w~@Zr@w‡@w…@w†@Zp@%wŠ@wƒ@w@Zq@w„@wˆ@Zs@w‹@z×@zÞ@zà@zæ@\¡@zÒ@\™@zá@\ž@%zç@\•@zä@zÔ@zå@zÓ@\£@zß@\–@zè@\›@zØ@\ @zã@zÖ@zÝ@zÙ@%zÕ@\˜@\Ÿ@\@\š@\¢@\—@zÜ@\œ@Zt@zâ@zÚ@zÛ@~Š@^Ú@~†@~Œ@%~ˆ@^Ü@~‡@~‹@~ƒ@~…@^Û@~‰@~„@^Ý@^Ø@~@^Ù@’@@›@•@%—@`Ü@‘@™@˜@–@œ@`ß@“@š@`Ý@Ž@@`Þ@@@”@%„µ@bº@„À@„¾@b´@„´@„·@„¸@„³@b¾@b¿@„²@„Á@„¼@b¸@bµ@„»@%„¹@b»@„½@b¶@b·@„º@b¹@„¶@„¿@b¼@„Â@„Ã@b½@dR@dY@‡i@‡o@%‡m@dU@dT@dQ@‡k@dW@dV@dS@‡n@‡j@‡l@dX@eƒ@‰©@e@e@‰«@%e‚@‰¨@‰§@‹›@‰ª@‹œ@ff@‹š@‹™@‹˜@fg@fö@Z@[@ŽŒ@Ž‹@g–@%ŽŠ@|@}@W@À@‘H@‘¬@hÅ@‘¶@LÖ@Qˆ@Q‰@S[@dZ@L×@QŠ@Uv@%\¤@LØ@Wò@^Þ@ic@n™@pà@~Ž@d[@LÙ@Q‹@nš@n›@w@Zv@zé@\¥@%~@`à@fh@LÚ@wŽ@LÛ@Nj@iá@Ni@O§@O¦@O¥@jà@QŒ@Q@l@nœ@%nŸ@S]@n@S\@nž@S^@pã@pâ@pá@Uw@tC@tD@Wó@tB@tE@Zx@Wô@%Zw@w’@w‘@w@w@w“@zë@zê@zî@zí@zì@^ß@~’@~‘@^à@~@ž@%Ÿ@`á@„Ä@„Å@‹¡@fi@‹ @‹Ÿ@‹@‹ž@g—@\@~@‘I@LÜ@i…@Mˆ@%i†@iâ@iã@jæ@jâ@já@QŽ@jå@O©@jã@O¨@jç@jä@l¡@n @lŸ@l¦@%Q@Q’@l§@l£@l¤@lž@Q‘@l @Q@l¥@l¢@n¤@S`@Sa@n§@n¡@n¦@%n¢@S_@n¥@n£@pé@pæ@pè@U|@U{@Uy@på@pê@Ux@Uz@pç@tM@pä@%pë@tH@tL@tK@w•@w @tN@tI@w”@Wø@W÷@tG@tJ@Wù@Wö@Wõ@tF@%tO@w—@wž@Zz@w@wš@Z|@wœ@w–@w˜@w›@w™@Z{@wŸ@Zy@\¦@zò@%zñ@zï@\©@\¨@zó@zð@~“@^á@\§@zõ@zô@~–@~”@`â@^â@~•@¡@%`ã@ @©@¨@¦@¥@¢@£@¤@§@ª@„Ê@„Ç@„È@bÀ@„Æ@„Ì@%„Ë@„É@‡q@‡r@d\@d]@‡p@e…@‰¬@e„@fj@fk@f÷@^@]@Ž@@%gå@Y@X@Z@M‰@n¨@U}@Wú@tP@MŠ@i‡@LÝ@iä@jì@jê@jë@jè@%Oª@jé@l¯@Q•@l­@l©@l¬@l¨@Q—@l«@Q”@Q“@Q–@l®@lª@Se@Sh@%n°@n¯@n®@Sb@n·@n­@Sd@pð@n´@n²@Sg@nª@nµ@n¬@n¶@n³@n«@%Sc@n¸@n©@Sf@põ@pì@p÷@pï@pú@pû@pí@pù@pö@pô@pø@U„@U‚@%pò@pî@pñ@pü@pó@Uƒ@n±@U~@U@t^@tS@tQ@tR@tY@tZ@tV@XB@%t[@tX@tU@Wý@tT@Wû@XA@tW@t_@U@Wü@t]@t\@XC@w¥@w¦@Z‡@%w¬@w®@w§@Z@w«@wª@Z‚@Zˆ@Z‰@w­@Z~@w¤@w¢@w¨@w¡@Z†@w£@%w©@w¯@Z@Z…@Zƒ@Z„@Z}@\°@zü@\¯@{C@zö@{D@z÷@zø@{E@{B@%zý@{A@zú@zù@{F@\¬@zû@\±@\«@\²@\³@\®@\­@~—@^ä@^ã@~œ@%`ä@^å@^ç@~@\ª@^æ@~™@~›@~˜@~š@´@³@°@`ç@„Í@`è@¯@%`æ@±@®@«@²@¬@­@`å@‡v@„Ñ@„Ð@„Ò@‡s@bÃ@„Î@bÁ@bÅ@%bÄ@„Ï@„Ó@bÂ@‡z@d`@e†@da@d^@‡w@‡u@‡x@‡{@d_@‡y@‡t@‰¯@%‰²@‹¤@‰­@_@‰³@fl@‰±@e‡@‰®@‰°@‰´@‹¥@‹£@fm@‹¢@fø@g™@%‚@g˜@„@@ƒ@h\@Á@M‹@l°@pý@qA@XD@{G@bÆ@fn@gæ@Â@%MŒ@l±@Fø@n¹@nº@qB@qC@XE@XF@w°@{J@{I@{H@~ž@~Ÿ@~ @^è@%¶@µ@„Ô@bÇ@bÈ@‡@‡|@‡}@‡~@‰¶@‰µ@eˆ@‹¦@ŽŽ@M@Si@XG@%{K@MŽ@qD@XH@ZŠ@Z‹@M@M@iå@O¬@O«@Sj@n»@w±@M‘@M’@M“@%M”@O­@O®@jî@jí@Q˜@l´@l²@l³@n¼@n½@Sn@Sl@Sm@Sk@U…@U‰@%Uˆ@qE@U‡@U†@qF@XK@ta@t`@XI@XJ@Z@ZŒ@w³@w²@XL@\´@{M@%\µ@{L@~¡@·@`é@„Õ@‡@fp@fo@gç@M•@lµ@XM@~¢@^é@H¨@jï@%jð@l¶@Qš@Q›@Q™@Sr@Ss@Sp@Sq@n¾@n¿@So@qG@U@UŽ@XP@qM@%U“@U‘@qN@qI@U@U@UŠ@qL@qK@qH@U’@qJ@U‹@UŒ@XQ@te@tf@%XR@tb@td@th@tg@tc@XN@XO@w»@Z’@Z‘@wµ@Z@w¸@Z“@w¹@Z”@%w¶@ZŽ@Z@wº@w·@w´@{Z@{O@\·@\º@\¹@\¾@\½@{[@{Y@{R@{V@%{U@\»@{X@{T@{\@{S@\¼@\¶@\¸@{Q@~¤@^í@~¨@^ì@~¥@^ë@{P@%{W@~§@^î@~©@~¦@~£@º@¾@À@¼@»@¹@`ì@`ê@`ï@`ð@½@%`í@¸@`î@^ê@¿@`ë@„×@„Ö@„Þ@„Ø@„Ý@„Ú@bÉ@„Ü@bÊ@bË@„Û@%„Ù@dc@‡‚@db@‡…@‡ƒ@‡„@dd@‰º@e‹@‰»@e‰@‰¼@eŠ@‰¹@‰½@‰·@%fq@‹§@fr@fù@‰¸@fú@gš@Ž@gé@…@gè@[@h‚@hƒ@‘¼@H©@St@%nÀ@Z•@Z–@M–@Nk@iæ@jñ@O¯@Qœ@Su@Sv@Sw@tj@qO@U”@XS@ti@%w½@Z˜@w¼@Z—@{]@`ñ@Ä@Á@Â@Ã@‡†@‰¾@a@`@†@M—@l·@%U•@Z™@{^@~ª@`ò@„ß@‰¿@b@M˜@Q@Sz@nÁ@S{@Sy@Sx@qP@U–@%U—@U˜@XU@tk@XT@w¾@XV@Zš@{_@\¿@\À@^ï@^ð@`ó@bÍ@„à@bÌ@%‡‡@de@‰À@c@M™@O°@lº@l¹@Qž@l¸@QŸ@l»@nÇ@S~@S}@nÉ@nÈ@%Sƒ@S‚@S|@nÃ@nÄ@nÅ@S„@nÂ@S@nÆ@S@qS@qW@qU@qT@qX@qY@%qZ@qR@qQ@Uš@U›@q[@qV@tt@q\@Uœ@U™@tn@tm@to@tp@tr@tq@%tv@XZ@XW@X[@tl@X\@tu@XY@ts@XX@wÁ@wÃ@w¿@wÀ@wÄ@wÆ@wÇ@%wÂ@wÅ@Z›@{c@{h@{`@{d@{i@{e@\Á@\É@\Ä@{a@{b@^ô@\Ì@\Å@%\Ê@\Ã@{g@\Ë@{f@\Ç@\Â@\È@{j@~¯@~±@\Æ@~¬@^ò@~²@^ó@~°@%~«@~®@~³@^ñ@~­@`õ@È@Ç@`ø@`ö@Å@`ô@Æ@`÷@„è@„ê@„é@%„á@„å@„ä@„â@bÏ@bÐ@bÎ@„ã@„æ@„ç@bÑ@dj@‡@dg@‡‰@di@dk@%dh@‡Ž@‡Š@df@‡@‡ˆ@‡Œ@‡‹@‰Â@eŽ@e@eŒ@e@‰Á@‹ª@fs@‹¨@%‹©@d@g@e@f@Ž@g›@\@Ã@h„@‘J@‘K@h²@Mš@S…@wÈ@{k@%M›@O±@Q @nÊ@nË@U@wÉ@Zœ@\Í@dl@‡@‹«@h@Mœ@lÁ@l¼@l¾@%lÀ@l¿@l½@Q¡@S†@nÔ@nÏ@nÌ@nÓ@Sˆ@S‰@nÒ@nÑ@nÐ@nÍ@nÎ@nÕ@%S‡@U¡@U§@U¦@qe@q_@q]@U¤@t}@UŸ@qb@qf@qh@qd@q^@U¥@qc@%qa@Už@qi@U¨@qg@U¢@q`@U£@U @X^@t~@tw@ty@t{@t|@tz@X_@%t@tx@wÍ@Z@wÕ@wÊ@wÖ@wË@wÌ@wÔ@wÓ@wÐ@X]@Zž@wÎ@wÑ@ZŸ@%wÒ@wÏ@{v@{z@\Ô@~¹@\×@{x@{u@{p@{r@{s@{l@\Ó@\Ò@\Î@{o@%\Õ@\Ö@{n@{q@{y@\Ð@\Ñ@{w@{m@~»@^ö@~½@{t@~¿@^ú@~À@~¼@%^÷@~¸@^ù@~µ@~º@~¾@~·@\Ï@~´@^ø@~¶@`û@Ê@aB@`ý@^õ@Ñ@%Ò@`ú@Ð@Ó@`ü@`ù@Ì@É@Î@Ë@aC@Í@Ï@aA@bÓ@„ñ@„ë@%„ï@„õ@„ö@„ò@„ó@„ð@„í@bÕ@bÒ@„ì@„î@bÔ@„ô@dp@‡–@‡‘@do@%dm@‡˜@dn@‡”@‡•@‡’@‡™@‰Ã@dq@‡“@‡š@‡—@‰Ç@‰Ä@e@‰È@‰Ê@%‰É@‰Å@‰Æ@‹°@ft@‹­@‹¯@‹¬@‹±@‹®@j@m@i@fû@k@l@n@%fü@gA@fý@Ž‘@Ž“@Ž’@‡@Ä@‘L@M@jò@Q¢@lÃ@Q£@Q¤@lÂ@nÚ@%nÙ@SŠ@S@SŒ@S‹@nÖ@nØ@n×@ql@Uª@qp@qo@qn@qj@U©@U­@U°@%U±@qk@qm@U¯@U®@U¬@U«@t‡@t…@t@X`@t‚@Xa@tƒ@t„@t†@Xb@%wÚ@wÙ@wØ@w×@{~@\Ø@{{@{}@\Ù@\Ú@{|@~É@~Â@~Ã@^ý@^û@^ü@%~Ë@~Ê@~Ç@~Æ@~Å@~Ä@~È@~Á@Ô@Ù@×@Ö@Õ@Ø@„÷@bÖ@dr@%‡œ@ds@‡›@‰Ì@‰Ë@e‘@‹²@fu@o@gê@ˆ@Æ@Å@iˆ@SŽ@S@tˆ@%\Ü@Mž@O´@O³@O²@lÄ@Q¦@Q¥@S’@nÜ@nß@nÝ@S@S‘@nÛ@nÞ@U¸@%qw@qy@qx@Uµ@qs@U³@U²@U¶@U´@U·@qv@qq@qr@qu@qt@t‹@tŒ@%tŠ@t‰@Xc@Z¤@wÛ@wÝ@wß@Z£@Z¡@wÜ@Z¢@wÞ@Z @{‰@{@{ƒ@{‡@%\à@{…@{„@{@{‚@\Þ@{ˆ@\Ý@\â@\á@\ß@{†@~Ñ@~Ð@~Ì@_A@~Ï@%~Î@_B@aH@Û@aI@aE@aG@aD@aF@„ø@bÙ@„ú@„ù@~Í@bÛ@bÚ@b×@%bØ@‡¡@‡Ÿ@dt@‡ @‡¢@‡ž@‡@‰Í@e”@e’@e“@‹³@‹´@fw@fv@q@%r@p@‰@Š@MŸ@iç@Oµ@lÅ@Q¨@Q§@lÆ@ná@S“@nà@S”@U¹@q|@%qz@q@Uº@q{@q@q}@q~@t@t@Xd@tŽ@Xe@Z§@Z¦@Z¥@wà@{Œ@%\ã@\ä@{‹@{Š@~Ò@_D@_C@~Ó@~Ô@aK@aJ@…A@Ü@Þ@Ý@„ý@„û@%…B@„ü@bÜ@‡£@du@‡¤@‡¥@e•@e–@gB@h]@M @nâ@q‚@U»@Xý@Xü@%Z©@wâ@Z¨@wá@{@_E@~Õ@_F@gC@s@Nl@Q©@lÇ@S–@S•@nã@nä@%q„@q†@U¼@qˆ@q‹@q‰@qŠ@q‡@qƒ@U½@qŒ@q…@t˜@Xk@t¡@Xh@tš@%Xl@Xf@t•@t¢@t–@t“@Xj@Xg@t™@tœ@Xi@t@Xm@tž@t”@t›@tŸ@%t—@t’@t@t @wä@wé@wå@wë@Z¬@t‘@wæ@Zª@wã@Z±@wç@Z°@wè@%Z²@Z­@Z³@Z®@Z¯@Z«@wê@\ç@{˜@{›@{@{”@{Ž@\é@{’@{@\è@%{—@{–@{“@{•@{‘@_J@{š@\å@{™@~å@_Q@~à@_P@~Ö@~Ø@_I@~Ý@%~Ü@~ß@_N@~Ú@~Ù@_M@_H@~Û@_K@~á@~ã@~Þ@~×@_L@aS@_G@~ä@%â@aL@ä@aM@aO@ç@ß@_O@å@á@\æ@aR@aN@aP@aQ@bß@æ@%à@aT@ã@…L@…G@…Q@bÝ@…I@bá@…O@…F@…C@…R@d{@bâ@…N@…D@%bà@…H@bä@…E@…J@bã@…M@…P@‡·@‡¸@‡¨@‡¯@‡­@dy@‡´@…K@‡«@%‡µ@dx@‡ª@‡©@‡³@‡°@‡²@‡¦@‡¶@dv@‡±@‡º@‡®@dz@dw@‡¬@‡§@%‡¹@bÞ@‰Ð@‰Î@‰Ô@eš@‰Ò@‰Ñ@eœ@‰×@e›@‰Ø@‰Õ@e˜@‰Ö@‰Ï@e™@%e—@‹¸@‰Ó@‰Ù@‹µ@f|@fz@‹·@‹¹@‹¶@f{@fx@fy@f}@gE@x@w@%u@t@v@gD@gF@gœ@Ž•@Ž”@‹@@@Ž@Œ@gì@gë@h_@h^@%h`@^@]@‘M@Ç@‘N@h¤@h¥@‘~@hÊ@Nm@lÈ@næ@nç@nå@S—@nè@%né@nê@q@q“@q‘@U¾@q@q@q’@qŽ@Xn@t£@Xp@t¥@Xo@t¤@wí@%Z´@wï@wì@t¦@Zµ@wî@{ž@\ê@{œ@\ë@{@\ì@_R@~é@~æ@~è@_S@%_T@~ç@è@é@aU@ë@ê@Fù@…V@…W@…S@…T@bå@bæ@…U@d‚@d}@%dƒ@d~@d@d|@d@e@‡»@‹»@‹º@y@gG@gH@‘@Ž–@@‘O@‘”@%Nn@O¶@lÉ@Qª@Sš@ní@S˜@në@S@S™@Sž@Sœ@nì@S›@UÂ@UÁ@qž@%UÊ@q—@q@UÆ@q–@qœ@qš@UÅ@UÇ@q™@UÀ@q˜@UË@UÈ@UÌ@UÉ@q•@%q”@q›@UÃ@U¿@UÄ@tµ@t®@Zº@t­@Xt@X{@Xx@X~@X}@Xy@t§@tª@%t©@Xu@t«@t´@Xv@t¨@t±@t²@Xw@t¯@X|@Xr@Xz@t¬@Xq@t°@t³@%xC@w÷@Z·@xA@wû@wó@wü@Z¹@wô@wð@\ò@wù@Z¶@xB@Z½@Z¿@wò@%Z¾@wõ@Z¸@wý@wö@wú@wø@Z»@wñ@ZÀ@Xs@Z¼@ZÁ@\î@{¥@{§@{©@%{­@{£@{¡@\ð@{¨@{¬@{¤@{ @{Ÿ@{ª@{¢@{¦@\ñ@\ï@{®@\í@{«@%~ú@_W@~ò@ab@~ü@_Z@C@_`@~í@~ý@~ê@B@~î@_g@_d@A@~ø@%_V@_^@_]@_\@_b@~ë@_c@~ù@__@_U@~û@_X@_Y@_a@~ð@~ï@~ì@%~ô@~ñ@~õ@_f@D@_[@~ö@~÷@~ó@_e@ð@aZ@ac@a_@í@a\@a`@%ù@aV@ñ@a^@ô@ï@a]@aa@î@a[@ø@aX@÷@ö@ad@€¼@aW@%õ@ì@ae@ó@aY@ò@bé@bî@bç@…d@…[@…g@…_@…e@bï@bè@…X@%…^@…h@…a@…f@…Z@…b@bê@…`@bí@bì@…\@…]@…Y@…c@bë@…j@…i@%‡Æ@‡Â@dŠ@‡¼@d„@d”@‡È@dŒ@dˆ@‡¿@d@d’@‡Ê@d‡@‡Á@d@‡Ì@%‡É@‡½@d‹@d…@d“@‡Ä@dŽ@‡¾@d‰@‡Ë@d@d†@‡Å@d‘@‡Ã@‡Ç@‰Û@%‰á@e£@‰ä@ež@eŸ@‰Ü@‰ã@‰Þ@e¤@e¡@‰Ú@e @‰à@‰â@e¢@‰ß@‰Ý@%‹Å@f‚@fƒ@f~@f@‹Á@‹¿@‹Ã@f…@‹Ä@‹½@‹¼@‹À@‹¾@f@‹Â@z@%gK@gJ@{@}@|@gL@Ž›@Ž˜@Ž™@Ž—@Žš@gž@Žœ@g@’@ha@hc@%_@hb@È@‘Q@‘S@‘P@‘R@h¸@No@SŸ@pÒ@UÍ@X@xD@xE@…k@d•@%‡Í@e¥@‹Ç@‹Æ@gM@Ž@“@h…@iè@Q«@O·@nî@q¤@qŸ@q£@q¡@UÎ@%q¢@q @t¶@xF@xG@{±@{²@\ô@\õ@{°@{³@{¯@\ó@_h@\ö@E@af@%ú@ag@bð@…n@…l@…m@‡Ð@‡Ï@‡Î@‹È@f„@‹É@”@h†@É@Np@Q­@%Q¬@nð@S @nï@q¦@UÏ@t·@q¥@X‚@tº@t¸@t¹@X@xI@xJ@xH@\ù@%{µ@{´@{¶@\ø@\÷@û@ý@ah@ü@…o@bñ@‰æ@‰å@f†@‹Ê@fˆ@f‡@%~@Žž@gŸ@Nq@nñ@S¡@q©@UÑ@q¨@q§@UÐ@tÀ@tÂ@t»@t¼@Xƒ@t½@%X„@tÁ@t¾@t¿@X…@ZÃ@ZÄ@xK@{·@{¸@I@_k@_i@_j@F@G@H@%‚E@‚F@ai@‚C@‚B@‚D@‚A@bô@…p@bò@bó@‡Ò@d–@‡Ñ@‰U@‰ç@‰è@%e¦@e§@d—@‹Ë@‹Ì@@gN@Nr@Ns@S¢@Q®@UÒ@nò@ZÅ@Nt@S¤@nó@%nô@S£@S¥@Nu@nõ@UÔ@qª@UÖ@UÓ@UÕ@tÅ@X†@tÄ@tÃ@{¹@J@aj@%bõ@…r@…q@‡Ó@ŽŸ@Nv@jó@lÊ@S¦@nö@q¬@U×@q«@UØ@tÇ@Xˆ@tÆ@%tÈ@X‡@xM@xN@xL@ZÆ@\ú@\û@_m@L@K@_l@‚G@‚H@…s@d›@dš@%d˜@d™@dœ@‰é@e©@e¨@‹Í@@gî@gí@Nw@pŸ@\ý@ZÇ@\ü@_n@Nx@%i‰@Ny@Nz@lË@jö@j÷@O¹@jô@O¸@O»@jõ@O½@O¼@jø@Oº@Q³@Q±@%lÍ@Q°@Qµ@Q·@Q´@lÐ@lÌ@Q¸@Q²@O¾@Q¶@lÏ@lÎ@Q¯@nü@Sª@S«@%oA@nø@nû@oG@oE@S¬@oK@S¯@oH@ný@nú@xP@oF@S§@oI@n÷@oC@%S©@S®@oD@S²@S°@nù@S­@oB@S±@S¨@oJ@UÝ@Uæ@UÛ@UÙ@q®@Uá@%UÞ@q°@Uà@q¯@q­@q²@Uå@Uã@xO@q³@q±@UÚ@UÜ@Uß@Uâ@Uä@tÒ@%XŠ@tÉ@tË@tÌ@tÔ@tÐ@tÎ@tÑ@tÕ@X‹@X@tÊ@tÓ@X@XŒ@tÏ@tÍ@%X‰@XŽ@ZÍ@xX@xV@ZÏ@xQ@{Ç@ZÎ@xU@xR@ZÊ@ZÐ@xW@ZÌ@xT@_o@%ZË@xS@ZÑ@ZÉ@ZÈ@{¿@{½@{Ã@{»@{È@{À@{º@]D@]J@{Å@{¾@]G@%]E@{Æ@]B@]A@{Á@]F@ZÒ@{Ä@{¼@]C@]H@]I@_t@_p@_u@O@N@%P@_r@M@_s@S@R@Q@_q@‚L@‚O@ap@‚N@ao@ak@al@am@‚K@%‚J@an@‚M@‚I@…u@…@bø@b÷@…y@…{@…v@…z@…t@…}@bö@…|@…x@%…~@…w@dŸ@‡Ô@‡Ú@d£@d¥@d¢@d¡@d @dž@‡Õ@‡Ø@d@‡Ù@d¤@‡×@%‡Ö@eª@e«@‰ì@‰ê@‰ë@‹Ï@‹Î@f‰@ƒ@gO@‚@Ž @•@gï@‘T@‘U@%hd@N{@Q¹@xY@_v@d¦@‡Û@N|@Uè@Uç@xZ@…@N}@S³@x[@x\@x]@%_w@bù@N~@Qº@oL@Ué@q´@X@x^@]K@_x@bú@d§@e¬@„@N@Q»@%Uê@tÖ@ZÓ@_y@T@‚P@N@ZÔ@{É@_z@N‚@lÑ@oM@S´@q¶@Uí@Uë@%Uì@Uî@qµ@tÛ@tØ@tÚ@X‘@X“@X’@t×@X”@tÙ@x_@x`@xa@{Ì@{Í@%{Ë@{Î@]L@{Ê@_{@‚U@‚Q@‚T@‚V@‚S@‚R@…‚@…ƒ@…„@bû@bü@‡Ý@%‡Ü@‡Þ@‰î@‰í@‹Ñ@‹Ò@‹Ð@gP@…@†@–@`@Ê@Nƒ@O¿@d¨@N„@%tÜ@xb@h@ié@iê@iì@N…@ií@ië@kC@kD@jû@kB@OÁ@OÂ@jü@jú@%jù@jý@OÀ@kA@oN@lÖ@Q¾@lÕ@l×@Q½@lÜ@QÁ@lÒ@là@læ@QÈ@lã@%QÅ@lÙ@lß@lá@lÔ@QÄ@Q¿@lÚ@QÆ@QÉ@QÃ@Q¼@lÞ@lØ@lå@QË@QÇ@%QÂ@lÝ@Uï@lÛ@QÀ@QÊ@lÓ@lâ@lä@SÅ@S¿@SÇ@SÄ@oU@oX@SÀ@oO@%S¹@SÃ@SÆ@SÈ@od@o[@S¸@oc@S¼@Sº@Sµ@oS@ob@oW@oZ@og@SÉ@%oa@SÁ@o\@of@oY@o]@o`@oQ@oe@o_@oP@oT@SÂ@S½@S¶@S»@S·@%SÊ@oR@qÇ@S¾@o^@mc@qÊ@Uý@qº@qÅ@qÁ@qÔ@qÌ@qÂ@qË@q¼@qÀ@%q×@VC@qÏ@qÆ@Uð@qÕ@q¸@qÎ@VB@Uú@q·@Uø@U÷@Uü@qÍ@Uô@Uû@%oV@xc@qÈ@q¾@VA@q¿@qÃ@VD@q¹@qÑ@qÐ@qØ@Uö@Uó@qÖ@qÒ@qÉ@%qÄ@Uù@Uõ@q»@Uñ@qÓ@Uò@q½@tâ@tä@té@tý@X¢@X˜@tá@X£@X¤@%tì@tó@tù@tæ@tí@X¥@tû@tö@X @Xž@tò@tî@tà@X•@tå@tÝ@X@%XŸ@tê@tç@Xš@t÷@X—@tè@uA@tð@tï@X–@X¡@X™@tÞ@tã@tô@tú@%X¦@tß@të@tñ@Xœ@tü@tõ@tø@X›@xs@xg@ZÜ@x…@x@x@ZÚ@xo@%x‰@xp@x~@Zç@xz@Zä@x{@xd@xŠ@Zí@x‡@x|@x’@xw@{î@x•@Zë@%xu@x‚@Zî@ZÙ@xy@x“@xr@xk@xv@xj@xh@ZÕ@x‹@xq@xŽ@x@ZÝ@%Zâ@ZÞ@Zæ@x†@Zß@x}@xm@Z×@xe@xˆ@x‘@xl@Zå@x–@xx@xt@ZÖ@%Zê@x„@Zì@x@Zá@ZÛ@Zã@ZØ@Zé@x@xn@xƒ@xi@xŒ@x”@xf@{í@%|F@\Û@{ò@{ð@{Û@]P@{ë@|B@{ç@]X@|A@{å@Zè@{õ@{æ@{ü@]W@%]O@{Ð@{Ø@{ñ@{é@|E@{ì@]]@{ý@]T@{ï@{÷@{Ü@{ö@|J@{×@{ø@%|H@{Ñ@Zà@{ß@{Þ@]V@{â@{ä@{ó@|G@]Y@]Z@{Ö@]R@{Ú@|C@][@%]S@]U@]\@|I@{ù@{ô@{á@{à@]Q@{Ò@]N@{ê@{Ó@{è@{Ý@|D@]M@%{Ù@{Õ@{û@{Ô@_‰@|@k@U@s@_@d@n@_„@g@_‚@X@v@%W@j@V@h@q@o@c@^@\@]@p@{@e@_ƒ@`@t@_†@%_@Y@i@_Š@_}@_‡@a@[@_@{ú@_~@l@_|@_Œ@_…@m@b@%Z@u@f@_‹@y@_ˆ@x@r@w@z@‚~@‚@‚r@‚q@‚m@a|@at@%‚‚@‚@{Ï@‚j@‚n@‚h@‚{@‚l@‚ƒ@‚e@‚c@‚o@‚y@‚t@a~@‚Z@‚x@%a@{ã@‚f@‚]@‚`@‚‡@‚g@‚^@‚\@‚Y@ax@‚p@aw@a{@‚k@‚s@aq@%‚„@‚ˆ@as@‚b@‚v@‚z@‚_@‚…@az@ay@‚W@a}@‚}@‚a@‚u@‚[@‚i@%‚d@au@av@‚w@‚‰@‚†@‚|@‚X@ar@…•@…Œ@…@cE@…‘@…†@…@…“@%cB@cF@bý@…ˆ@…˜@…’@…‰@…¡@…›@……@‡ñ@…‹@cA@…–@… @cI@…@%…Š@…@…”@…Ž@…¢@…Ÿ@…œ@cC@cD@cH@…‡@…£@cG@…™@…—@…š@ˆA@%‡ë@‡ð@‡ý@‡ï@‡ç@‡ì@d«@‡à@‡ø@‡ú@‡ß@dª@‡ü@‡ô@d±@‡û@‡í@%d³@‡å@…ž@‡õ@‡ò@‡á@ˆC@d­@d®@‡ã@‡ó@ˆB@‡ö@‡é@d°@d¬@‡÷@%‡ê@ˆD@‡ä@‡î@‡ù@‡æ@‡è@eµ@‡â@d²@e®@d©@d¯@e²@ŠA@‰ô@‰ï@%‰õ@ŠB@ŠF@ŠE@e´@e³@‰ö@ŠG@‰ù@‰ñ@‰ó@‰ò@‰ø@‰ý@‰ð@‰÷@‰ü@%e±@‰ú@e¯@‰û@e­@e°@‹â@ŠC@f@‹Ú@‹Þ@‹Ö@‹Ù@‹á@f‹@‹æ@‹ß@%‹×@‹ç@‹à@fŽ@f@‹ä@‹Ø@fŠ@fŒ@‹Ó@‹Û@‹Õ@‹å@‹ã@‹Ô@‹Ü@@%f@‹Ý@gR@gT@gQ@’@Š@ˆ@Œ@‰@Ž@@gU@gW@@gX@gV@%‘@gS@g @Ž¡@Ž§@g¢@‹@Ž¦@Ž­@Ž¤@Ž«@Žª@‡@Ž¥@ŠD@Ž®@Ž£@%Ž¨@Ž¬@Ž¢@š@g¡@Ž©@e@›@™@—@˜@œ@he@c@a@f@d@%g@hf@b@Ë@‘V@‘W@‘X@‘·@‘­@iî@QÌ@SË@qÚ@qÙ@VE@X§@uC@%uB@Zï@]_@]^@]`@}@‚Š@…¤@…¦@…¥@d´@ˆE@ŠH@‘•@N†@lé@lê@%lè@lç@QÍ@ok@oi@oh@SÌ@SÎ@SÍ@oj@qæ@qã@qá@VF@qä@VK@qÞ@%qí@qï@qß@VH@qð@që@qÝ@qâ@qì@qè@qå@VM@qî@qà@qé@qÛ@VL@%VI@qç@qê@qÜ@VJ@VG@X±@uJ@X°@uM@uP@X­@X«@uE@uN@uL@uI@%uQ@uR@uT@uU@uD@Xª@uG@uF@uS@X¬@uH@X®@X©@uK@X²@X¯@uO@%Zö@x¥@xš@Zó@|P@x£@x—@Zñ@xœ@Zô@x @xž@Z÷@Zð@x˜@x›@Zõ@%x™@x¤@x¢@x@xŸ@x¡@Zò@|Q@|W@|M@|S@]a@|O@]g@]f@]e@|V@%]h@]i@|L@|Y@]j@]d@]c@|U@]k@|K@|N@|X@|T@ž@“@]b@_“@%‡@œ@ˆ@_Ž@…@Ž@†@_@@›@_‘@˜@™@@_–@@Š@%‘@„@@•@@~@_’@–@_•@š@”@_@’@Œ@_@ƒ@‹@%—@‰@@aŠ@|R@‚œ@‚¥@‚›@‚—@‚”@a‹@‚’@_”@‚‹@a‰@‚‘@aˆ@%‚–@‚“@‚£@‚ž@‚˜@‚@a„@‚•@‚¨@‚Œ@‚@‚¤@a…@‚©@a‡@‚ª@‚š@%‚@‚ @‚™@‚¢@‚Ÿ@‚@a‚@‚§@aƒ@‚Ž@a†@…°@‚¡@‚¦@…­@a@cJ@%…·@…³@…±@…¬@…»@cN@…¨@…´@…µ@…«@…ª@…¸@…®@…©@…¯@…º@…§@%…¹@…¶@cL@cK@cM@…²@ŠY@ˆG@dº@ˆK@ˆH@ˆO@ˆU@ˆJ@ˆ^@d·@ˆX@%ˆM@ˆY@ˆT@ˆ[@ˆL@d¼@d»@ˆN@ˆ\@ˆF@ˆZ@dµ@ˆR@ˆQ@ˆV@ˆI@d¹@%d½@ˆP@ˆW@d¾@ˆS@d¶@d¸@ŠU@ŠS@ŠZ@ŠW@Š[@ŠL@ŠT@Š_@ˆ]@ŠP@%e¹@‚@ŠK@ŠX@ŠR@ŠO@ŠJ@ŠI@Š^@ŠN@ŠM@e·@ŠV@e¶@e¸@ŠQ@Š]@%‹ë@‹ì@f”@‹é@f‘@‹ñ@f•@‹ó@‹è@Š\@‹õ@‹ê@f’@‹ð@‹ò@‹í@‹ô@%‹ï@‹î@f“@”@•@—@gY@gZ@˜@–@“@Ž±@Ž´@Ž°@g¦@Ž²@g¥@%g¤@g£@Ž³@¡@Ÿ@ž@Ž¯@ @Žµ@@j@H@h@hg@i@k@Î@%h‡@Í@Ì@hˆ@h¦@‘@‘—@‘–@‘˜@N‡@ol@qñ@qò@x¦@Ž¶@Ï@Nˆ@%SÏ@om@uV@X³@x¨@x§@Zø@]l@‚«@aŒ@a@cO@h‰@N‰@on@QÏ@op@%oo@SÐ@qó@qú@VN@qø@qö@qý@qô@qõ@VO@VS@rA@VR@qü@qù@q÷@%VP@VQ@qû@Xµ@uW@Xº@ug@X¹@ui@u]@X·@uh@uX@X¸@ud@u`@ub@%u\@uc@X´@u_@u^@uZ@ue@ua@uY@u[@X¶@uf@Zû@x³@x¯@x±@x¬@%x«@x©@x°@x²@x®@x­@Zù@Zú@xµ@]t@|[@|a@|\@|]@|b@]v@]n@%]u@|Z@xª@]q@]o@|`@|_@]p@]r@|^@]m@]s@ @_@«@ª@¥@%_Ÿ@©@¡@¢@_—@_™@§@Ÿ@_›@_š@£@¨@¦@_œ@¤@x´@_˜@%‚¬@‚³@a@‚·@a“@‚¯@‚­@‚¶@aŽ@‚µ@a@a‘@‚®@a’@‚´@‚°@‚±@%‚²@_ž@…¼@…È@cT@…Ã@…Å@cR@…½@…Á@…Ä@cP@cS@…Ç@…¿@…À@…Æ@%…¾@…Â@cQ@ˆ`@ˆ_@dÀ@ˆe@dÂ@d¿@ˆa@dÃ@ˆb@ˆc@ˆf@dÁ@Šd@Šg@%Ša@Šc@Šb@Še@Šf@ˆd@Š`@f˜@‹ù@‹ü@ŒA@‹÷@‹ø@‹û@‹ý@f™@f—@%f–@‹ú@‹ö@™@g[@š@Ž¸@g§@Žº@g¨@Ž·@Ž¹@gñ@¢@gð@n@m@%l@‘Y@‘Z@‘\@‘[@iï@NŠ@SÑ@uj@Zü@|c@eº@ŒB@OÃ@X¼@X»@x¶@%Zý@x¸@x·@|d@]w@¬@¯@®@­@‚¸@‚º@‚¹@cV@cU@dÄ@ˆg@ˆi@%ˆh@e»@ŒD@ŒC@›@g\@g©@¤@£@h§@OÄ@oq@SÒ@um@uk@ul@xº@%x»@|k@x¹@|e@|i@|h@|j@]x@|g@|f@|l@²@°@±@‚½@‚»@‚¼@%…É@ˆj@ˆk@e¼@ŒE@œ@g]@Ž»@¥@gò@o@‘]@OÅ@SÔ@SÕ@or@os@%SÓ@VY@VW@VV@V]@VU@V^@rB@V[@VX@V\@VZ@VT@XÄ@X¾@uq@XÃ@%XÅ@X¿@XÀ@uo@X½@up@XÂ@un@XÁ@[K@[M@x¾@[L@[A@[E@]Œ@|q@%xÀ@[F@xÃ@xÄ@[J@xÆ@xÈ@xÉ@x½@x¼@xÊ@[I@xÇ@xÅ@[G@[C@[N@%xÁ@xÂ@x¿@[H@[D@[B@|p@]‡@]‚@]|@]@]}@]y@]‰@]†@]ˆ@]~@%]„@]z@]{@|x@|u@|m@|r@]Š@|y@]‹@]@|o@|w@|s@|v@|t@]…@%|n@]@µ@_¡@_¤@·@_¬@¶@_¦@a˜@¸@_«@´@_­@_¢@]ƒ@_¥@%_£@_§@_©@_ @_®@_ª@_¨@³@aŸ@a›@a¢@‚À@a£@‚Ì@‚Å@a”@‚Í@%‚Ç@až@‚È@a@‚Ë@a—@‚É@‚¿@a–@…Ô@aœ@a™@a¡@‚¾@‚Â@a•@‚Á@%‚Ã@‚Ä@a @‚Æ@‚Ê@‚Î@a¤@c\@…Ï@…Õ@…Ò@…Ê@…Ö@…Ë@…Ñ@cW@c]@%…×@cY@cc@c^@…Ù@…Ó@cZ@…Ì@cd@…Í@…Î@ce@cb@aš@cX@…Ú@cf@%c_@…Ø@c[@c`@ca@dÌ@ˆp@ˆy@ˆv@ˆx@dÉ@ˆq@ˆw@dÅ@ˆs@dÍ@ˆo@%ˆt@ˆ{@…Ð@ˆu@ˆn@dÆ@ˆm@dÇ@ˆ|@dÈ@ˆz@dË@ˆl@dÊ@ˆr@Šj@Šx@%Šs@Šu@Ši@e½@Šh@eÀ@e¿@Šw@Šo@Šl@Šr@Šk@Šm@Šv@Št@e¾@Š{@%Šy@Šp@Šz@Šq@ŒI@fš@ŒP@Ž¾@f¡@Šn@ŒG@f@ŒH@ŒM@fŸ@f @ŒF@%ŒO@ŒQ@ŒJ@ŒL@ŒN@ŒK@ŒR@fœ@f¢@fž@f›@Ÿ@gb@@¡@¢@g`@%£@ @ž@gc@g_@¤@ga@g^@gª@g«@Ž½@Ž¼@Ž¿@ŽÀ@g¬@¦@«@%gó@¨@§@ª@©@s@hh@r@p@q@h‹@hŠ@Ð@Ñ@hŒ@‘^@‘_@%h³@h¹@‘™@‘¸@OÆ@ur@us@|z@¹@‚Ï@dÏ@dÎ@Š|@ŒS@t@OÇ@rC@%V_@XÆ@||@|{@a¥@‚Ð@a¦@ˆ}@eÁ@hÂ@OÈ@lë@rD@XÇ@ut@uu@xË@%[O@]Ž@|~@|}@|@º@»@_¯@cg@a§@ch@ˆ‚@ˆ~@ˆ@ˆ@dÐ@Š}@%ŒU@ŒT@kE@Va@V`@rE@uv@xÍ@xÌ@[P@|‚@|ƒ@|@]@]@_±@_°@%‚Ñ@…Ý@…Û@…Ü@ci@ˆ„@ˆƒ@Š@Š@Š~@ŒV@‘š@OÉ@SÖ@S×@Vb@Vc@%rG@rF@uw@XÍ@XË@XÈ@XÌ@XÊ@XÉ@[Q@xÐ@]•@[S@[X@xÒ@[Z@[Y@%[\@xÑ@xÎ@[V@[R@[T@xÏ@[[@[W@[U@]—@]–@]”@]˜@]’@]“@]‘@%|„@½@_³@_´@_²@¼@¾@‚Ô@‚Ö@a°@‚×@a©@‚Ó@a¨@a²@a®@a¯@%a«@‚Ò@aª@‚Ø@‚Õ@a±@a¬@a­@…ß@…á@…à@…â@cj@…Þ@dÔ@ˆ…@dÑ@%dÕ@dÓ@dÒ@Š‚@Š…@Š„@Šƒ@eÂ@ŒW@ŒX@f£@ŒY@f¤@ge@gd@ŽÁ@g­@%ŽÂ@¬@gô@gõ@u@hŽ@OÊ@XÏ@XÎ@|…@|†@_µ@…ã@a³@…ä@ˆ†@OË@%ot@SÙ@SØ@rH@Vd@rI@uz@uy@ux@xÔ@[_@xÓ@[^@xÕ@[]@|ˆ@|‹@%|‰@|Š@|Ž@|‡@|@|Œ@|@_·@¿@_¶@‚Ü@‚Ú@a´@‚Ù@‚Û@aµ@…å@%…æ@dÖ@Œ[@Œ]@ŒZ@Œ\@¥@ŽÃ@‘@OÌ@SÚ@rJ@rL@rK@u}@XÑ@u{@%XÐ@u~@u@u|@xá@[g@xÙ@xß@[b@[e@xØ@[`@xÜ@|•@[d@x×@xÝ@%xÚ@xà@xÖ@xÞ@[c@[f@xÛ@[a@]š@|‘@]™@|˜@|—@] @]¡@|™@]›@%|–@]Ÿ@|›@|’@|”@]œ@|@|“@|š@]@|œ@]ž@_¸@Ä@Ê@Â@Ë@%Á@Æ@Ì@É@È@Ç@À@Å@Ã@aº@a·@‚å@‚ê@‚ì@‚é@‚â@‚ä@%‚î@‚ë@‚æ@‚ï@‚ã@‚í@a¸@a¾@a¼@‚Ý@a½@a¹@‚Þ@‚à@‚ß@‚ç@‚è@%a»@a¶@‚á@…ð@cl@…ç@cm@cp@…ì@…é@co@…í@…î@…è@…ñ@…ê@…ï@%cn@ck@…ë@ˆŒ@dÙ@d×@dÚ@dØ@ˆ‹@ˆˆ@ˆ‡@ˆŠ@ˆ‰@Š“@eÈ@ŠŠ@Š‰@%eÃ@Š@ŠŽ@Š†@Š‘@Š‹@eÇ@Šˆ@Š@Š‡@eÄ@eÆ@ŠŒ@eÅ@Š@Š’@Œa@%f©@Œ^@Œb@f¦@Œ`@f«@f¨@Œ_@fª@Œc@f¥@gg@gi@¨@gh@¦@f§@%§@gf@g®@g°@ŽÅ@g¯@ŽÄ@±@gö@°@g÷@®@­@²@³@v@¯@%Õ@Ò@Ó@Ô@h¨@‘b@‘a@‘`@‘‚@‘®@‘›@hº@OÍ@Ve@]¢@a¿@…ò@%eÉ@Œd@‘œ@OÎ@QÐ@SÜ@SÛ@Vh@rM@Vf@rN@Vg@u…@u@XÒ@u„@uƒ@%u‚@XÓ@u†@u‡@xè@xæ@xê@xë@xñ@xí@xï@xç@xâ@xî@xð@xé@xì@%xã@[i@xå@xä@[h@[j@]¥@|ž@| @|Ÿ@|¤@]£@|¡@|@|¢@|£@]¤@%]¦@|¥@Ð@Ï@Í@Î@_º@_¼@_¹@_»@‚ö@‚÷@‚ò@‚ó@aÁ@aÆ@aÀ@%aÇ@aÂ@‚ô@‚õ@‚ñ@aÈ@aÄ@aÃ@aÅ@‚ð@…ô@cr@…ö@ct@…ù@…õ@…ó@%…ø@cs@…÷@cq@dÜ@dß@ˆŽ@dÝ@ˆ@dÛ@dÞ@Š”@Š•@Š–@eÊ@Š—@eË@%f­@Œg@Œh@Œf@Œe@Œi@f¬@¬@ª@«@­@©@®@ŽÇ@ŽÈ@ŽÆ@g±@%´@gø@µ@x@w@OÏ@[k@]§@_½@cv@cu@f®@gI@g²@OÐ@Vi@]¨@%Œj@Hâ@kG@OÑ@OÔ@OÓ@OÒ@kF@lí@lï@QÑ@QÓ@lì@lî@QÒ@lñ@lð@%lò@ox@ov@Sß@ou@Sä@Sá@SÞ@Så@Sà@Sã@Sâ@ow@SÝ@Vo@rP@rV@%Vl@Vs@Vn@rS@rU@Vq@rO@rR@Vm@Vj@rQ@Vp@rT@Vr@Vk@u‰@uŒ@%XÕ@Xß@XÛ@uŠ@Xã@XÜ@Xá@X×@XÔ@XÖ@Xâ@u‹@XÚ@XÝ@XÙ@XÞ@u@%Xà@XØ@uˆ@xò@[l@xô@[n@[p@xó@[m@[q@[o@]®@|ª@]¶@|§@]·@%]¬@|¨@]±@|©@]ª@]©@]´@]³@]²@]°@]µ@|¦@]«@]­@]¯@_¿@_Â@%_Æ@_À@_Å@_Ã@_¾@_Ä@_Á@‚û@aË@aÉ@‚ü@aÌ@aÊ@‚ú@‚ù@cz@‚ø@%cx@cw@…ú@aÍ@cy@…û@c|@…ü@c{@dá@ˆ@dà@då@dã@dä@eÍ@dâ@%ˆ@…ý@eÌ@eÎ@f¯@f°@¯@hj@hi@OÖ@iô@Vt@iñ@iò@ið@ió@kK@%kH@kM@kI@O×@OÚ@kJ@OÙ@kL@OØ@lõ@l÷@QÖ@ló@lö@lô@QÔ@Q×@%QÕ@oz@o~@o{@Sè@Sé@o}@o@o‚@Sæ@o@Sç@u”@o|@rW@r`@r^@%rY@rZ@r_@ra@Vv@r\@rX@Vu@Vw@r[@rb@r]@Xä@u—@u@u•@u–@%Xå@uŽ@u@oy@u’@u“@u‘@[s@xû@†A@xü@xù@Xæ@[u@xø@yA@xý@%[r@yD@x÷@yC@xõ@yB@xú@[t@|±@|¬@|²@|­@|«@|®@]¸@|°@|¯@%]¹@_È@_Ç@×@Ú@Ò@Ö@_É@Õ@Ó@Ù@Ô@Ñ@Ø@ƒE@aÐ@Š˜@%ƒB@ƒC@ƒA@xö@aÏ@ƒF@‚ý@aÎ@aÑ@ƒD@†B@c}@†C@†D@ˆ‘@dæ@Š™@%Šš@Š›@Œl@Œk@±@°@ŽÊ@ŽË@ŽÉ@¶@gù@OÛ@Së@Sê@Vz@Vy@rd@%re@rc@Vx@u›@uœ@u˜@Xç@u™@uš@yG@yI@yE@yH@[v@yF@[w@yù@%]¼@]»@]º@|³@|´@Ü@Þ@_Í@_Ê@_Ì@_Ë@Ý@Û@ƒM@ƒJ@ƒK@aÕ@%ƒL@ƒG@ƒH@aÒ@aÓ@ƒI@aÔ@†H@†I@†F@†G@c~@†E@ˆ•@ˆ’@ˆ”@dé@%ˆ˜@dè@ˆ–@ˆ™@ˆ—@ˆ“@dç@Š@Šž@Šœ@Š @eÏ@eÐ@Œn@f²@ŠŸ@Œm@%f±@´@µ@gj@³@²@ŽÌ@g³@y@×@Ö@h@h©@Ø@‘ƒ@h»@OÜ@%QØ@]½@gk@OÝ@Sì@Xè@[x@eÑ@QÙ@o„@oƒ@rf@V}@V{@V@rh@V~@%V|@rg@Xë@u¢@Xê@Xì@u§@Xî@u¤@u¥@u@Xí@u¨@uŸ@u @už@Xé@%u¦@u¡@u£@yU@yT@yR@yJ@yY@yM@yW@y^@yV@[@[|@yK@yQ@[~@%yP@[@[‚@yS@[y@[z@y_@y]@y\@yN@yZ@[}@[{@y[@yL@yO@yX@%€D@|¾@|·@|Ê@|Ó@|º@]È@|Ç@]¾@]À@]Ì@|¸@]Á@]Ã@]Í@]Â@]Ë@%|À@|µ@]É@|¿@]Å@|Ñ@]Ê@|Ï@|Ã@|Í@]Ç@|¶@|Ð@|Ë@|Ò@]¿@]Î@%]Ä@|¼@|Ä@|È@|Ì@]Æ@|»@|¹@|Å@|Â@|Á@|Æ@|É@|Î@á@_Î@ë@%ã@_Ó@_×@ô@ü@í@_Ï@ñ@|½@_Ð@ø@ý@õ@÷@€C@ù@ç@%ð@_Ø@_Ô@å@ò@_Ò@ì@_Ñ@ú@é@â@_Õ@€B@ä@ö@ó@î@%à@ß@è@û@_Ö@€A@æ@ê@aÚ@aâ@aÝ@ƒn@ƒk@ƒS@aØ@a×@aÞ@%ƒQ@aÜ@ƒ]@ƒO@ƒP@aÖ@ƒm@aà@ƒ`@ƒe@ƒ_@†[@ƒ[@ƒc@ƒa@ƒT@ƒN@%ƒi@aß@ƒj@ƒd@ƒY@ƒW@ƒR@ƒZ@ƒg@ƒV@ƒf@ƒl@aÛ@ƒb@ƒh@ƒ^@ƒX@%aÙ@ï@ƒ\@aá@ƒU@†a@c‚@†`@†]@†p@c†@†m@†e@†o@†V@†c@cˆ@%†N@†L@†n@†l@†k@†Z@†Y@†O@cŠ@†U@†_@†j@c@†q@dñ@c@c‰@%†S@†\@†K@†M@c@cŒ@c…@†T@†d@†^@c‹@†J@dì@†f@†i@c‡@†X@%cŽ@c„@cƒ@†b@†h@c@†Q@†g@†R@†W@ˆŸ@ˆ¤@dî@dð@ˆª@dê@ˆ¹@%ˆ°@ˆ¥@ˆ¦@ˆ¯@d÷@ˆ®@ˆž@ˆ­@ˆ¡@ˆº@dö@dô@ˆ¢@ˆµ@ˆ§@ˆ´@ˆ¶@%ˆ@dï@ˆ·@ˆ«@dó@ˆ¨@dõ@ˆ±@dí@ˆ£@ˆ²@ˆ¬@†P@ˆ³@ˆ @dò@ˆ¸@%dë@ˆ›@Š®@Š§@eÓ@Š¢@Š±@Š©@ˆ©@Š³@Š£@eÒ@Š­@eÔ@eÜ@eÚ@Š¯@%eÛ@Š¥@Š¦@Š«@Š°@ˆš@eÕ@Š¸@Šµ@Š¹@Š¬@Š¨@Š¶@Œy@Šª@eØ@e×@%ˆœ@eÙ@Š²@Š´@eÖ@Š·@Š¡@Š¤@Œƒ@Œr@f¶@Œ@Œp@f·@Œ{@Œw@f¼@%Œ‚@Œq@Œt@f´@Œ„@Œ|@Œ@fº@f¿@f½@Œx@Œs@f¸@f¹@Œo@fµ@f³@%f»@Œ~@f¾@Œz@Œ…@fÀ@Œv@Œ}@Â@Ð@Ä@Ë@Œu@É@¸@Î@gn@%¼@Í@Ã@gm@Ò@Å@Ê@Ì@¶@Ï@Á@Æ@º@¾@Ñ@È@·@%»@½@Ç@gl@À@¹@¿@ŽÐ@ŽÕ@gº@Ž×@g´@ŽÓ@ŽÙ@g¹@gµ@g¶@%ŽÏ@ŽÖ@g¸@ŽÔ@g·@ŽÎ@ŽÒ@ŽÑ@ŽÍ@ŽØ@gú@½@À@¼@¾@¿@¹@%º@·@»@¸@gû@gü@{@}@|@~@hl@z@hk@hm@Ú@Û@h@%Ù@‘d@‘c@‘e@h«@‘f@hª@‘g@‘„@‘‡@‘†@h´@‘…@h¾@h¼@h½@hÃ@%‘°@‘±@‘¯@‘¹@QÚ@u©@y`@ƒo@Œ†@QÛ@Sí@V@uª@u«@Xï@[…@yb@%ya@[‰@[„@yc@[†@[ˆ@[‡@[ƒ@]Ï@|×@|Õ@|Ö@|Ô@_Ù@_Ü@_Þ@_Ý@%_Ú@_Û@ƒq@ƒp@aã@ƒr@ƒs@aä@†y@†w@ˆÀ@†u@†v@c@†r@†z@†t@%†x@ˆ¼@ˆ¾@ˆ¿@dü@ˆ»@dû@ˆ½@dø@dù@dú@†s@eß@Š¼@Šº@Š»@eÝ@%eà@eÞ@Œ‡@Œˆ@fÁ@Ó@Õ@Ô@go@g»@ŽÜ@ŽÛ@ŽÚ@QÜ@iŠ@i÷@N‹@%iõ@iø@iö@kO@Oá@Oâ@kQ@Oß@kP@kN@Oà@OÞ@lø@lû@Qß@lú@lù@%QÞ@QÝ@Qá@lü@Qà@o‰@Sï@Sð@Sñ@oŠ@o†@Sî@o‡@oˆ@o…@Vˆ@V…@%ri@V†@V‰@rj@V„@V‚@Vƒ@V‡@Xð@u®@Xø@u­@u°@Xô@u¯@[‘@Xò@%Xõ@Xñ@Xö@X÷@Xó@u¬@[@ye@yi@yh@[’@[Ž@[@yd@yf@yg@[Š@%[Œ@[@[‹@|Ú@|Ø@|Ù@]Ñ@]Ò@|Û@]Ð@_ß@_á@_à@€E@€F@ƒu@ƒt@%c‘@c’@†{@c“@ˆÃ@ˆÁ@ˆÂ@dý@Š½@fÂ@Hë@eA@Qâ@VŠ@rk@u±@Xù@%[“@yj@yl@[•@[”@[–@[—@yk@]Õ@]Ö@]Ô@_â@]Ó@|Ü@_ã@ƒv@†|@%c”@eB@Š¾@ŠÂ@eã@Š¿@eä@eâ@ŠÃ@eå@ŠÁ@Œ‰@eá@fÃ@Ü@Qã@Xû@%Xú@[˜@yn@ym@[™@|à@]Ú@]×@|ß@]Ù@|Ý@]Ø@|Þ@€G@_ä@ƒy@aå@%ƒw@aæ@aç@ƒx@aè@†}@c˜@c•@cš@†@c–@†~@c™@c—@ˆÆ@ˆÈ@eC@%ˆÇ@eD@ˆÅ@ˆÄ@ŠÅ@ŠÄ@eæ@ŠÆ@ŒŽ@fÅ@Œ@ŒŠ@fÄ@Œ‹@ŒŒ@Ö@×@%gp@g¾@ŽÝ@g¼@g½@ŽÞ@gý@hA@Á@h‘@Þ@h“@Ý@ß@h’@‘h@‘@%Qä@]Û@€H@ƒz@c›@cœ@Qå@aé@fÆ@Sò@c@hn@Só@u²@yo@yq@yp@%|ä@|á@]Ü@]Ý@|â@|ã@€J@€O@_å@€I@€K@€R@€M@€Q@€N@€L@€P@%_æ@ƒ}@ƒ{@aë@aê@ƒ|@aì@†ƒ@†‚@cž@†@ˆÉ@ˆË@ˆÍ@ˆÌ@eE@ˆÊ@%ŠÍ@eç@ŠË@ŠÎ@eè@ŠÉ@ŠÌ@ŠÊ@ŠÇ@eé@ŠÈ@Œ@Œ‘@Œ@Ø@Ù@Žß@%hC@hB@@@h”@à@hµ@Sô@[š@€T@€S@ƒ@ƒ~@eF@ˆÏ@ˆÎ@ŠÑ@%ŠÏ@ŠÒ@ŠÐ@fÇ@Œ’@Œ“@Œ”@Žà@Â@á@Sõ@†„@ˆÐ@Sö@_ç@†…@eê@%ŠÓ@fÈ@Ú@Û@g¿@‚@S÷@YA@YB@u³@[›@[œ@yr@[@]á@]ã@|æ@%|ç@|å@]Þ@]ß@]â@]à@€U@_è@_é@ƒ‡@aï@ƒ‚@ƒ@ƒ†@aí@c¥@ƒƒ@%ƒˆ@ƒ…@ƒ„@aî@c£@†‡@cŸ@†ˆ@††@c¢@c @c¤@c¡@ˆÑ@ˆÖ@ˆÒ@ˆÕ@%eG@‡À@ˆÔ@ˆÓ@eí@eë@eî@eì@ŠÔ@ŠÕ@ŠÖ@eï@Œ˜@fÊ@Œ–@fË@Œ•@%Œ—@fÉ@ß@Ü@Ý@Þ@Žá@gÁ@gÀ@Ä@Ã@hD@ho@h•@h¬@‘i@‘ž@%‘Ÿ@Sø@ys@|è@€V@€W@_ê@_ë@ƒ‰@að@eH@Š×@eð@Œ›@fÌ@Œš@Œœ@%Œ™@Žä@à@á@gq@Žã@Žâ@Å@‘ @Sù@Sú@V‹@rl@u´@[ž@[¡@[Ÿ@%yt@[£@[ @[¢@]å@|é@|ê@ƒ‹@]ä@]æ@]ç@€Y@€X@_ì@_í@€Z@ƒŠ@%_ï@añ@_î@c¦@ƒŒ@aó@aò@ƒ@ƒ@ƒŽ@ƒ@aô@c«@c©@c¨@†Š@cª@%†‰@ˆ×@†‹@c§@†Œ@ˆÚ@ˆØ@ˆÙ@ˆÞ@eô@ˆÝ@ˆà@ˆß@ˆÜ@ˆÛ@eI@ŠÚ@%ŠÙ@eó@eñ@eò@ŠØ@ŒŸ@fÍ@Œž@Œ@fÎ@æ@å@ã@â@gs@gr@ç@%Æ@hE@Žæ@gÂ@Žå@ä@Ç@hp@h­@‘j@‘¡@Sû@uµ@ˆá@Sü@€\@€[@%†@ˆã@ˆâ@eõ@Œ @Œ¡@gt@‘¢@VŒ@[¥@[¤@|ë@|í@]é@|ì@]è@]ê@%|î@€^@€`@€_@€b@_ð@€a@€]@€c@ƒ—@ƒš@ƒœ@ƒ’@ƒ–@ƒ“@aö@aù@%aû@ƒ”@ƒ•@aú@ƒ˜@ƒ›@ƒ™@aü@aø@ƒ‘@aõ@a÷@c­@†“@†‘@†@†–@%†•@†”@†@c¬@†Ž@†’@c®@ˆæ@ˆê@ˆç@ˆé@ˆè@ˆå@ˆë@ˆî@ˆì@ˆí@%eK@eJ@ˆä@ˆï@Šß@Šâ@Šä@Šã@ŠÝ@Šá@ŠÜ@ŠÞ@eö@ŠÛ@Šà@Œ®@Œ£@%fÏ@fÐ@Œ¢@Œ§@Œ­@Œ¥@Œ¬@Œ©@Œ¨@Œ«@Œ¦@Œ¤@Œª@î@ì@gu@ë@%ñ@ï@gv@ê@è@é@gx@í@gw@ð@Žç@Ží@Žè@gÆ@Žî@gÅ@Žì@%Žë@gÄ@Žê@gÃ@Žé@Í@Ï@Î@Ë@hG@È@Ì@Ñ@Ð@É@Ê@hF@%ƒ@hs@„@hq@hr@â@h–@‘ˆ@h¶@‘£@h·@‘¤@‘¥@‘³@‘²@hÆ@‘½@%V@|ð@|ï@_ñ@_ò@€d@ƒ@†™@aý@c¯@†—@†š@c°@ˆð@†˜@Šå@e÷@%Œ¯@ô@ò@ó@Žï@gÇ@Ò@hv@hH@ht@hu@ã@h®@VŽ@Šæ@rm@]ë@%€e@_ó@€f@ƒŸ@ƒž@c²@bA@bB@ƒ¢@ƒ¡@ƒ @†›@†ž@†@†œ@c±@ˆô@%ˆò@ˆñ@ˆó@eø@Šè@Šé@eù@Šç@Œ±@Œ°@Œ³@fÑ@Œ²@õ@÷@ö@Žð@%Žó@Žñ@Žò@Ó@hI@…@†@‡@h—@h¯@‘¦@V@bC@c³@Šê@Ô@‘´@%rn@hÇ@V@†Ÿ@Šë@Œ´@Žô@Õ@V‘@€g@€h@_ô@_õ@ƒ¤@bE@bD@ƒ£@%ˆõ@Šì@Šî@Ší@eü@eû@eú@gÉ@Žõ@gÈ@×@Ö@h˜@ä@YC@|ñ@€k@%€i@€j@ƒ­@ƒ¨@ƒ¥@ƒ¬@ƒ®@bG@ƒ«@ƒ§@ƒ¦@ƒª@ƒ©@bF@†ª@†¥@†£@%†¬@†¤@† @†¦@†¡@‰A@†¢@†­@†©@c´@†¨@†§@†«@ˆö@ˆù@ˆø@‰C@%ˆû@‰B@ˆý@ˆü@ˆú@ˆ÷@eN@eM@eO@eL@‰D@Šô@Š÷@Šõ@Šù@Šú@Šò@%fD@Šó@Šñ@Šø@Šð@Šï@fC@fA@eý@Šö@Œ½@ŒÃ@fÔ@Œ¾@ŒÁ@ŒÅ@fÕ@%ŒÀ@Œ¸@Œ·@ŒÄ@Œ»@Œ¹@ŒÂ@Œº@fÓ@fÒ@Œµ@Œ¶@Œ¿@Œ¼@ú@ý@fB@%û@ŽD@ŽB@ù@ŽG@ø@gz@ŽC@ü@gy@ŽF@ŽE@Žø@Ž÷@A@Žú@Žý@%gË@Žû@Žü@Žö@Žù@gÊ@hK@â@Ý@á@ä@à@Ü@hM@ß@ã@hL@%Ú@ŽA@Þ@Û@Ø@Ù@hJ@‹@@@Œ@‘@Š@ˆ@hw@Ž@hy@%hx@‰@@é@h™@ê@è@å@ç@æ@‘k@‘m@‘l@‘‹@‘Š@‘‰@‘Œ@%h¿@hÀ@‘º@‘¾@YD@yu@|ô@]ì@|ò@|ó@€l@€m@_ø@_ö@€n@_÷@ƒ³@%ƒ¶@ƒ°@ƒ·@ƒ¯@ƒ±@ƒ²@ƒµ@bJ@ƒº@ƒ¹@bH@ƒ´@ƒ¸@bI@†·@c¹@†²@%cµ@†¯@†µ@†¸@cº@†´@†±@†¹@†°@†¶@c¶@†®@c·@c¸@†³@‰V@‰I@%‰J@‰M@‰K@‰E@‰H@‰R@‰L@eP@‰T@‰Q@eQ@‰S@‰F@‰O@‰P@‰N@‹A@%‹C@‹F@Šý@fE@‹H@Šü@‹I@‹E@‹G@‹K@‹D@‹L@‹B@Šû@fF@‹J@fG@%f×@‰G@Œß@ŒÖ@fÙ@ŒÒ@fÚ@ŒÛ@ŒÕ@ŒË@fØ@ŒØ@ŒÓ@ŒÔ@ŒÆ@ŒÍ@ŒÜ@%ŒÙ@ŒÑ@ŒÝ@ŒÌ@ŒÇ@ŒÚ@ŒÉ@Œ×@ŒÎ@ŒÞ@ŒÊ@fÖ@ŒÈ@ŒÏ@ŒÐ@ŽN@ŽL@%ŽQ@Ž]@ŽT@ŽM@ŽI@ŽV@ŽO@ŽR@ŽK@ŽY@ŽH@ŽP@ŽU@ŽW@ŽZ@ŽJ@Ž^@%Ž_@ŽX@Ž\@ŽS@Q@T@gÌ@S@X@V@gÍ@M@C@B@gÏ@O@P@%L@D@I@Ž[@E@gÎ@K@J@F@R@G@é@U@W@N@H@ê@%ì@æ@hN@ó@ñ@hO@ð@ï@è@å@ë@ô@ç@í@š@Ÿ@•@%˜@hz@œ@£@î@–@ @¤@›@”@ž@@¢@¡@ò@™@“@%—@hš@h›@’@õ@ì@ô@ñ@ò@ë@î@ö@ð@ï@í@ó@‘n@%‘o@‘q@‘p@‘s@‘r@‘Ž@‘@‘§@‘¨@‘µ@hÄ@hÈ@‘¿@hÉ@YE@g{@Y@%hœ@h@YF@|õ@]í@ƒ»@†»@†¼@†º@‰X@‰W@eR@‹N@‰Y@‹M@Œá@fÛ@%fÝ@Œà@fÜ@Ž`@Žb@Ža@Z@gÐ@h{@÷@‘t@‘Â@YG@€o@bK@†¾@†½@%‰Z@fÞ@g|@õ@‘»@YH@_ù@bL@Œâ@¥@[¦@‰[@h°@[§@bM@eS@¦@%[¨@ƒ¼@c¼@†¿@†À@c»@‰\@eW@eU@eV@eT@‹O@fH@Žd@Žc@Žf@Že@%g}@[@]@\@gÑ@ö@§@¨@h|@‘u@‘@hÁ@yv@†Á@‰]@Œã@|ö@%‰^@‹Q@‹P@©@hž@‘v@‘@]î@ƒ½@ƒ¾@†Â@]ï@fI@‹R@_@gÒ@`@%^@ª@ø@]ð@‰a@‰`@‰_@‹S@‹W@‹V@‹U@‹T@fJ@Œä@Žh@g~@Žg@%a@ù@ø@hP@÷@­@¬@«@_ú@†Ã@eX@Œå@Œæ@ú@®@ù@‘w@%‘©@‘Ä@_û@eY@‹X@Œç@b@¯@bO@‰b@‹Y@Œè@Œé@Œê@Žm@Ži@gÓ@%Žl@Žk@g@Žj@g‚@g@d@c@gÔ@gÕ@hR@û@hQ@²@³@±@°@%h @ú@û@ü@hŸ@‘x@‘{@‘z@‘y@‘Ã@c½@fQ@Žn@e@hS@ü@‘Å@%c¾@‰c@ý@‘‘@ÂA@ÂB@ÂC@ÂD@ÂE@ÂF@ÂG@ÂH@ÂI@ÂJ@ÂK@ÂL@ÂM@%ÂN@ÂO@ÂP@ÂQ@ÂR@ÂS@ÂT@ÂU@ÂV@ÂW@ÂX@ÂY@ÂZ@Â[@Â\@Â]@Â^@%Â_@Â`@Âa@Âb@Âc@Âd@Âe@Âf@Âg@Âh@Âi@Âj@Âk@Âl@Âm@Ân@Âo@%Âp@Âq@Âr@Âs@Ât@Âu@Âv@Âw@Âx@Ây@Âz@Â{@Â|@Â}@Â~@Â@Â@%‚@ƒ@„@Â…@†@‡@ˆ@‰@Š@‹@ÂŒ@Â@ÂŽ@Â@Â@‘@Â’@%“@”@•@–@—@˜@™@š@›@Âœ@Â@ž@Ÿ@ @¡@¢@£@%¤@Â¥@¦@§@¨@©@ª@«@¬@­@®@¯@°@±@²@³@´@%µ@¶@·@¸@¹@º@»@¼@½@¾@¿@ÂÀ@ÂÁ@ÂÂ@ÂÃ@ÂÄ@ÂÅ@%ÂÆ@ÂÇ@ÂÈ@ÂÉ@ÂÊ@ÂË@ÂÌ@ÂÍ@ÂÎ@ÂÏ@ÂÐ@ÂÑ@ÂÒ@ÂÓ@ÂÔ@ÂÕ@ÂÖ@%Â×@ÂØ@ÂÙ@ÂÚ@ÂÛ@ÂÜ@ÂÝ@ÂÞ@Âß@Âà@Âá@Ââ@Âã@Âä@Âå@Âæ@Âç@%Âè@Âé@Âê@Âë@Âì@Âí@Âî@Âï@Âð@Âñ@Âò@Âó@Âô@Âõ@Âö@Â÷@Âø@%Âù@Âú@Âû@Âü@Âý@ÃA@ÃB@ÃC@ÃD@ÃE@ÃF@ÃG@ÃH@ÃI@ÃJ@ÃK@ÃL@%ÃM@ÃN@ÃO@ÃP@ÃQ@ÃR@ÃS@ÃT@ÃU@ÃV@ÃW@ÃX@ÃY@ÃZ@Ã[@Ã\@Ã]@%Ã^@Ã_@Ã`@Ãa@Ãb@Ãc@Ãd@Ãe@Ãf@Ãg@Ãh@Ãi@Ãj@Ãk@Ãl@Ãm@Ãn@%Ão@Ãp@Ãq@Ãr@Ãs@Ãt@Ãu@Ãv@Ãw@Ãx@Ãy@Ãz@Ã{@Ã|@Ã}@Ã~@Ã@%Ã@Â@Ã@Ä@Ã…@Æ@Ç@È@É@Ê@Ë@ÃŒ@Ã@ÃŽ@Ã@Ã@Ñ@%Ã’@Ó@Ô@Õ@Ö@×@Ø@Ù@Ú@Û@Ãœ@Ã@Þ@ß@à@á@â@%ã@ä@Ã¥@æ@ç@è@é@ê@ë@ì@í@î@ï@ð@ñ@ò@ó@%ô@õ@ö@÷@ø@ù@ú@û@ü@ý@þ@ÿ@ÃÀ@ÃÁ@ÃÂ@ÃÃ@ÃÄ@%ÃÅ@ÃÆ@ÃÇ@ÃÈ@ÃÉ@ÃÊ@ÃË@ÃÌ@ÃÍ@ÃÎ@ÃÏ@ÃÐ@ÃÑ@ÃÒ@ÃÓ@ÃÔ@ÃÕ@%ÃÖ@Ã×@ÃØ@ÃÙ@ÃÚ@ÃÛ@ÃÜ@ÃÝ@ÃÞ@Ãß@Ãà@Ãá@Ãâ@Ãã@Ãä@Ãå@Ãæ@%Ãç@Ãè@Ãé@Ãê@Ãë@Ãì@Ãí@Ãî@Ãï@Ãð@Ãñ@Ãò@Ãó@Ãô@Ãõ@Ãö@Ã÷@%Ãø@Ãù@Ãú@Ãû@Ãü@Ãý@ÄA@ÄB@ÄC@ÄD@ÄE@ÄF@ÄG@ÄH@ÄI@ÄJ@ÄK@%ÄL@ÄM@ÄN@ÄO@ÄP@ÄQ@ÄR@ÄS@ÄT@ÄU@ÄV@ÄW@ÄX@ÄY@ÄZ@Ä[@Ä\@%Ä]@Ä^@Ä_@Ä`@Äa@Äb@Äc@Äd@Äe@Äf@Äg@Äh@Äi@Äj@Äk@Äl@Äm@%Än@Äo@Äp@Äq@Är@Äs@Ät@Äu@Äv@Äw@Äx@Äy@Äz@Ä{@Ä|@Ä}@Ä~@%Ä@Ä@Ä‚@ă@Ä„@Ä…@Ć@ć@Ĉ@ĉ@ÄŠ@Ä‹@ÄŒ@Ä@ÄŽ@Ä@Ä@%Ä‘@Ä’@Ä“@Ä”@Ä•@Ä–@Ä—@Ę@Ä™@Äš@Ä›@Äœ@Ä@Äž@ÄŸ@Ä @Ä¡@%Ä¢@Ä£@Ĥ@Ä¥@Ħ@ħ@Ĩ@Ä©@Ī@Ä«@Ĭ@Ä­@Ä®@į@Ä°@ı@IJ@%ij@Ä´@ĵ@Ķ@Ä·@ĸ@Ĺ@ĺ@Ä»@ļ@Ľ@ľ@Ä¿@ÄÀ@ÄÁ@ÄÂ@ÄÃ@%ÄÄ@ÄÅ@ÄÆ@ÄÇ@ÄÈ@ÄÉ@ÄÊ@ÄË@ÄÌ@ÄÍ@ÄÎ@ÄÏ@ÄÐ@ÄÑ@ÄÒ@ÄÓ@ÄÔ@%ÄÕ@ÄÖ@Ä×@ÄØ@ÄÙ@ÄÚ@ÄÛ@ÄÜ@ÄÝ@ÄÞ@Äß@Äà@Äá@Äâ@Äã@Ää@Äå@%Äæ@Äç@Äè@Äé@Äê@Äë@Äì@Äí@Äî@Äï@Äð@Äñ@Äò@Äó@Äô@Äõ@Äö@%Ä÷@Äø@Äù@Äú@Äû@Äü@Äý@ÅA@ÅB@ÅC@ÅD@ÅE@ÅF@ÅG@ÅH@ÅI@ÅJ@%ÅK@ÅL@ÅM@ÅN@ÅO@ÅP@ÅQ@ÅR@ÅS@ÅT@ÅU@ÅV@ÅW@ÅX@ÅY@ÅZ@Å[@%Å\@Å]@Å^@Å_@Å`@Åa@Åb@Åc@Åd@Åe@Åf@Åg@Åh@Åi@Åj@Åk@Ål@%Åm@Ån@Åo@Åp@Åq@År@Ås@Åt@Åu@Åv@Åw@Åx@Åy@Åz@Å{@Å|@Å}@%Å~@Å@Å@Å‚@Ń@Å„@Å…@ņ@Ň@ň@ʼn@ÅŠ@Å‹@ÅŒ@Å@ÅŽ@Å@%Å@Å‘@Å’@Å“@Å”@Å•@Å–@Å—@Ř@Å™@Åš@Å›@Åœ@Å@Åž@ÅŸ@Å @%Å¡@Å¢@Å£@Ť@Å¥@Ŧ@ŧ@Ũ@Å©@Ū@Å«@Ŭ@Å­@Å®@ů@Å°@ű@%Ų@ų@Å´@ŵ@Ŷ@Å·@Ÿ@Ź@ź@Å»@ż@Ž@ž@Å¿@ÅÀ@ÅÁ@ÅÂ@%ÅÃ@ÅÄ@ÅÅ@ÅÆ@ÅÇ@ÅÈ@ÅÉ@ÅÊ@ÅË@ÅÌ@ÅÍ@ÅÎ@ÅÏ@ÅÐ@ÅÑ@ÅÒ@ÅÓ@%ÅÔ@ÅÕ@ÅÖ@Å×@ÅØ@ÅÙ@ÅÚ@ÅÛ@ÅÜ@ÅÝ@ÅÞ@Åß@Åà@Åá@Åâ@Åã@Åä@%Åå@Åæ@Åç@Åè@Åé@Åê@Åë@Åì@Åí@Åî@Åï@Åð@Åñ@Åò@Åó@Åô@Åõ@%Åö@Å÷@Åø@Åù@Åú@Åû@Åü@Åý@ÆA@ÆB@ÆC@ÆD@ÆE@ÆF@ÆG@ÆH@ÆI@%ÆJ@ÆK@ÆL@ÆM@ÆN@ÆO@ÆP@ÆQ@ÆR@ÆS@ÆT@ÆU@ÆV@ÆW@ÆX@ÆY@ÆZ@%Æ[@Æ\@Æ]@Æ^@Æ_@Æ`@Æa@Æb@Æc@Æd@Æe@Æf@Æg@Æh@Æi@Æj@Æk@%Æl@Æm@Æn@Æo@Æp@Æq@Ær@Æs@Æt@Æu@Æv@Æw@Æx@Æy@Æz@Æ{@Æ|@%Æ}@Æ~@Æ@Æ@Æ‚@ƃ@Æ„@Æ…@Ɔ@Ƈ@ƈ@Ɖ@ÆŠ@Æ‹@ÆŒ@Æ@ÆŽ@%Æ@Æ@Æ‘@Æ’@Æ“@Æ”@Æ•@Æ–@Æ—@Ƙ@Æ™@Æš@Æ›@Æœ@Æ@Æž@ÆŸ@%Æ @Æ¡@Æ¢@Æ£@Ƥ@Æ¥@Ʀ@Ƨ@ƨ@Æ©@ƪ@Æ«@Ƭ@Æ­@Æ®@Ư@Æ°@%Ʊ@Ʋ@Ƴ@Æ´@Ƶ@ƶ@Æ·@Ƹ@ƹ@ƺ@Æ»@Ƽ@ƽ@ƾ@Æ¿@ÆÀ@ÆÁ@%ÆÂ@ÆÃ@ÆÄ@ÆÅ@ÆÆ@ÆÇ@ÆÈ@ÆÉ@ÆÊ@ÆË@ÆÌ@ÆÍ@ÆÎ@ÆÏ@ÆÐ@ÆÑ@ÆÒ@%ÆÓ@ÆÔ@ÆÕ@ÆÖ@Æ×@ÆØ@ÆÙ@ÆÚ@ÆÛ@ÆÜ@ÆÝ@ÆÞ@Æß@Æà@Æá@Æâ@Æã@%Æä@Æå@Ææ@Æç@Æè@Æé@Æê@Æë@Æì@Æí@Æî@Æï@Æð@Æñ@Æò@Æó@Æô@%Æõ@Æö@Æ÷@Æø@Æù@Æú@Æû@Æü@Æý@ÇA@ÇB@ÇC@ÇD@ÇE@ÇF@ÇG@ÇH@%ÇI@ÇJ@ÇK@ÇL@ÇM@ÇN@ÇO@ÇP@ÇQ@ÇR@ÇS@ÇT@ÇU@ÇV@ÇW@ÇX@ÇY@%ÇZ@Ç[@Ç\@Ç]@Ç^@Ç_@Ç`@Ça@Çb@Çc@Çd@Çe@Çf@Çg@Çh@Çi@Çj@%Çk@Çl@Çm@Çn@Ço@Çp@Çq@Çr@Çs@Çt@Çu@Çv@Çw@Çx@Çy@Çz@Ç{@%Ç|@Ç}@Ç~@Ç@Ç@Ç‚@ǃ@Ç„@Ç…@dž@LJ@Lj@lj@ÇŠ@Ç‹@ÇŒ@Ç@%ÇŽ@Ç@Ç@Ç‘@Ç’@Ç“@Ç”@Ç•@Ç–@Ç—@ǘ@Ç™@Çš@Ç›@Çœ@Ç@Çž@%ÇŸ@Ç @Ç¡@Ç¢@Ç£@Ǥ@Ç¥@Ǧ@ǧ@Ǩ@Ç©@Ǫ@Ç«@Ǭ@Ç­@Ç®@ǯ@%Ç°@DZ@Dz@dz@Ç´@ǵ@Ƕ@Ç·@Ǹ@ǹ@Ǻ@Ç»@Ǽ@ǽ@Ǿ@Ç¿@ÇÀ@%ÇÁ@ÇÂ@ÇÃ@ÇÄ@ÇÅ@ÇÆ@ÇÇ@ÇÈ@ÇÉ@ÇÊ@ÇË@ÇÌ@ÇÍ@ÇÎ@ÇÏ@ÇÐ@ÇÑ@%ÇÒ@ÇÓ@ÇÔ@ÇÕ@ÇÖ@Ç×@ÇØ@ÇÙ@ÇÚ@ÇÛ@ÇÜ@ÇÝ@ÇÞ@Çß@Çà@Çá@Çâ@%Çã@Çä@Çå@Çæ@Çç@Çè@Çé@Çê@Çë@Çì@Çí@Çî@Çï@Çð@Çñ@Çò@Çó@%Çô@Çõ@Çö@Ç÷@Çø@Çù@Çú@Çû@Çü@Çý@ÈA@ÈB@ÈC@ÈD@ÈE@ÈF@ÈG@%ÈH@ÈI@ÈJ@ÈK@ÈL@ÈM@ÈN@ÈO@ÈP@ÈQ@ÈR@ÈS@ÈT@ÈU@ÈV@ÈW@ÈX@%ÈY@ÈZ@È[@È\@È]@È^@È_@È`@Èa@Èb@Èc@Èd@Èe@Èf@Èg@Èh@Èi@%Èj@Èk@Èl@Èm@Èn@Èo@Èp@Èq@Èr@Ès@Èt@Èu@Èv@Èw@Èx@Èy@Èz@%È{@È|@È}@È~@È@È@È‚@ȃ@È„@È…@Ȇ@ȇ@Ȉ@ȉ@ÈŠ@È‹@ÈŒ@%È@ÈŽ@È@È@È‘@È’@È“@È”@È•@È–@È—@Ș@È™@Èš@È›@Èœ@È@%Èž@ÈŸ@È @È¡@È¢@È£@Ȥ@È¥@Ȧ@ȧ@Ȩ@È©@Ȫ@È«@Ȭ@È­@È®@%ȯ@È°@ȱ@Ȳ@ȳ@È´@ȵ@ȶ@È·@ȸ@ȹ@Ⱥ@È»@ȼ@Ƚ@Ⱦ@È¿@%ÈÀ@ÈÁ@ÈÂ@ÈÃ@ÈÄ@ÈÅ@ÈÆ@ÈÇ@ÈÈ@ÈÉ@ÈÊ@ÈË@ÈÌ@ÈÍ@ÈÎ@ÈÏ@ÈÐ@%ÈÑ@ÈÒ@ÈÓ@ÈÔ@ÈÕ@ÈÖ@È×@ÈØ@ÈÙ@ÈÚ@ÈÛ@ÈÜ@ÈÝ@ÈÞ@Èß@Èà@Èá@%Èâ@Èã@Èä@Èå@Èæ@Èç@Èè@Èé@Èê@Èë@Èì@Èí@Èî@Èï@Èð@Èñ@Èò@%Èó@Èô@Èõ@Èö@È÷@Èø@Èù@Èú@Èû@Èü@Èý@ÉA@ÉB@ÉC@ÉD@ÉE@ÉF@%ÉG@ÉH@ÉI@ÉJ@ÉK@ÉL@ÉM@ÉN@ÉO@ÉP@ÉQ@ÉR@ÉS@ÉT@ÉU@ÉV@ÉW@%ÉX@ÉY@ÉZ@É[@É\@É]@É^@É_@É`@Éa@Éb@Éc@Éd@Ée@Éf@Ég@Éh@%Éi@Éj@Ék@Él@Ém@Én@Éo@Ép@Éq@Ér@És@Ét@Éu@Év@Éw@Éx@Éy@%Éz@É{@É|@É}@É~@É@É@É‚@Ƀ@É„@É…@Ɇ@ɇ@Ɉ@ɉ@ÉŠ@É‹@%ÉŒ@É@ÉŽ@É@É@É‘@É’@É“@É”@É•@É–@É—@ɘ@É™@Éš@É›@Éœ@%É@Éž@ÉŸ@É @É¡@É¢@É£@ɤ@É¥@ɦ@ɧ@ɨ@É©@ɪ@É«@ɬ@É­@%É®@ɯ@É°@ɱ@ɲ@ɳ@É´@ɵ@ɶ@É·@ɸ@ɹ@ɺ@É»@ɼ@ɽ@ɾ@%É¿@ÉÀ@ÉÁ@ÉÂ@ÉÃ@ÉÄ@ÉÅ@ÉÆ@ÉÇ@ÉÈ@ÉÉ@ÉÊ@ÉË@ÉÌ@ÉÍ@ÉÎ@ÉÏ@%ÉÐ@ÉÑ@ÉÒ@ÉÓ@ÉÔ@ÉÕ@ÉÖ@É×@ÉØ@ÉÙ@ÉÚ@ÉÛ@ÉÜ@ÉÝ@ÉÞ@Éß@Éà@%Éá@Éâ@Éã@Éä@Éå@Éæ@Éç@Éè@Éé@Éê@Éë@Éì@Éí@Éî@Éï@Éð@Éñ@%Éò@Éó@Éô@Éõ@Éö@É÷@Éø@Éù@Éú@Éû@Éü@Éý@ÊA@ÊB@ÊC@ÊD@ÊE@%ÊF@ÊG@ÊH@ÊI@ÊJ@ÊK@ÊL@ÊM@ÊN@ÊO@ÊP@ÊQ@ÊR@ÊS@ÊT@ÊU@ÊV@%ÊW@ÊX@ÊY@ÊZ@Ê[@Ê\@Ê]@Ê^@Ê_@Ê`@Êa@Êb@Êc@Êd@Êe@Êf@Êg@%Êh@Êi@Êj@Êk@Êl@Êm@Ên@Êo@Êp@Êq@Êr@Ês@Êt@Êu@Êv@Êw@Êx@%Êy@Êz@Ê{@Ê|@Ê}@Ê~@Ê@Ê@Ê‚@ʃ@Ê„@Ê…@ʆ@ʇ@ʈ@ʉ@ÊŠ@%Ê‹@ÊŒ@Ê@ÊŽ@Ê@Ê@Ê‘@Ê’@Ê“@Ê”@Ê•@Ê–@Ê—@ʘ@Ê™@Êš@Ê›@%Êœ@Ê@Êž@ÊŸ@Ê @Ê¡@Ê¢@Ê£@ʤ@Ê¥@ʦ@ʧ@ʨ@Ê©@ʪ@Ê«@ʬ@%Ê­@Ê®@ʯ@Ê°@ʱ@ʲ@ʳ@Ê´@ʵ@ʶ@Ê·@ʸ@ʹ@ʺ@Ê»@ʼ@ʽ@%ʾ@Ê¿@ÊÀ@ÊÁ@ÊÂ@ÊÃ@ÊÄ@ÊÅ@ÊÆ@ÊÇ@ÊÈ@ÊÉ@ÊÊ@ÊË@ÊÌ@ÊÍ@ÊÎ@%ÊÏ@ÊÐ@ÊÑ@ÊÒ@ÊÓ@ÊÔ@ÊÕ@ÊÖ@Ê×@ÊØ@ÊÙ@ÊÚ@ÊÛ@ÊÜ@ÊÝ@ÊÞ@Êß@%Êà@Êá@Êâ@Êã@Êä@Êå@Êæ@Êç@Êè@Êé@Êê@Êë@Êì@Êí@Êî@Êï@Êð@%Êñ@Êò@Êó@Êô@Êõ@Êö@Ê÷@Êø@Êù@Êú@Êû@Êü@Êý@ËA@ËB@ËC@ËD@%ËE@ËF@ËG@ËH@ËI@ËJ@ËK@ËL@ËM@ËN@ËO@ËP@ËQ@ËR@ËS@ËT@ËU@%ËV@ËW@ËX@ËY@ËZ@Ë[@Ë\@Ë]@Ë^@Ë_@Ë`@Ëa@Ëb@Ëc@Ëd@Ëe@Ëf@%Ëg@Ëh@Ëi@Ëj@Ëk@Ël@Ëm@Ën@Ëo@Ëp@Ëq@Ër@Ës@Ët@Ëu@Ëv@Ëw@%Ëx@Ëy@Ëz@Ë{@Ë|@Ë}@Ë~@Ë@Ë@Ë‚@˃@Ë„@Ë…@ˆ@ˇ@ˈ@ˉ@%ËŠ@Ë‹@ËŒ@Ë@ËŽ@Ë@Ë@Ë‘@Ë’@Ë“@Ë”@Ë•@Ë–@Ë—@˘@Ë™@Ëš@%Ë›@Ëœ@Ë@Ëž@ËŸ@Ë @Ë¡@Ë¢@Ë£@ˤ@Ë¥@˦@˧@˨@Ë©@˪@Ë«@%ˬ@Ë­@Ë®@˯@Ë°@˱@˲@˳@Ë´@˵@˶@Ë·@˸@˹@˺@Ë»@˼@%˽@˾@Ë¿@ËÀ@ËÁ@ËÂ@ËÃ@ËÄ@ËÅ@ËÆ@ËÇ@ËÈ@ËÉ@ËÊ@ËË@ËÌ@ËÍ@%ËÎ@ËÏ@ËÐ@ËÑ@ËÒ@ËÓ@ËÔ@ËÕ@ËÖ@Ë×@ËØ@ËÙ@ËÚ@ËÛ@ËÜ@ËÝ@ËÞ@%Ëß@Ëà@Ëá@Ëâ@Ëã@Ëä@Ëå@Ëæ@Ëç@Ëè@Ëé@Ëê@Ëë@Ëì@Ëí@Ëî@Ëï@%Ëð@Ëñ@Ëò@Ëó@Ëô@Ëõ@Ëö@Ë÷@Ëø@Ëù@Ëú@Ëû@Ëü@Ëý@ÌA@ÌB@ÌC@%ÌD@ÌE@ÌF@ÌG@ÌH@ÌI@ÌJ@ÌK@ÌL@ÌM@ÌN@ÌO@ÌP@ÌQ@ÌR@ÌS@ÌT@%ÌU@ÌV@ÌW@ÌX@ÌY@ÌZ@Ì[@Ì\@Ì]@Ì^@Ì_@Ì`@Ìa@Ìb@Ìc@Ìd@Ìe@%Ìf@Ìg@Ìh@Ìi@Ìj@Ìk@Ìl@Ìm@Ìn@Ìo@Ìp@Ìq@Ìr@Ìs@Ìt@Ìu@Ìv@%Ìw@Ìx@Ìy@Ìz@Ì{@Ì|@Ì}@Ì~@Ì@Ì@Ì‚@̃@Ì„@Ì…@̆@̇@̈@%̉@ÌŠ@Ì‹@ÌŒ@Ì@ÌŽ@Ì@Ì@Ì‘@Ì’@Ì“@Ì”@Ì•@Ì–@Ì—@̘@Ì™@%Ìš@Ì›@Ìœ@Ì@Ìž@ÌŸ@Ì @Ì¡@Ì¢@Ì£@̤@Ì¥@̦@̧@̨@Ì©@̪@%Ì«@̬@Ì­@Ì®@̯@Ì°@̱@̲@̳@Ì´@̵@̶@Ì·@̸@̹@̺@Ì»@%̼@̽@̾@Ì¿@ÌÀ@ÌÁ@ÌÂ@ÌÃ@ÌÄ@ÌÅ@ÌÆ@ÌÇ@ÌÈ@ÌÉ@ÌÊ@ÌË@ÌÌ@%ÌÍ@ÌÎ@ÌÏ@ÌÐ@ÌÑ@ÌÒ@ÌÓ@ÌÔ@ÌÕ@ÌÖ@Ì×@ÌØ@ÌÙ@ÌÚ@ÌÛ@ÌÜ@ÌÝ@%ÌÞ@Ìß@Ìà@Ìá@Ìâ@Ìã@Ìä@Ìå@Ìæ@Ìç@Ìè@Ìé@Ìê@Ìë@Ìì@Ìí@Ìî@%Ìï@Ìð@Ìñ@Ìò@Ìó@Ìô@Ìõ@Ìö@Ì÷@Ìø@Ìù@Ìú@Ìû@Ìü@Ìý@ÍA@ÍB@%ÍC@ÍD@ÍE@ÍF@ÍG@ÍH@ÍI@ÍJ@ÍK@ÍL@ÍM@ÍN@ÍO@ÍP@ÍQ@ÍR@ÍS@%ÍT@ÍU@ÍV@ÍW@ÍX@ÍY@ÍZ@Í[@Í\@Í]@Í^@Í_@Í`@Ía@Íb@Íc@Íd@%Íe@Íf@Íg@Íh@Íi@Íj@Ík@Íl@Ím@Ín@Ío@Íp@Íq@Ír@Ís@Ít@Íu@%Ív@Íw@Íx@Íy@Íz@Í{@Í|@Í}@Í~@Í@Í@Í‚@̓@Í„@Í…@͆@͇@%͈@͉@ÍŠ@Í‹@ÍŒ@Í@ÍŽ@Í@Í@Í‘@Í’@Í“@Í”@Í•@Í–@Í—@͘@%Í™@Íš@Í›@Íœ@Í@Íž@ÍŸ@Í @Í¡@Í¢@Í£@ͤ@Í¥@ͦ@ͧ@ͨ@Í©@%ͪ@Í«@ͬ@Í­@Í®@ͯ@Í°@ͱ@Ͳ@ͳ@Í´@͵@Ͷ@Í·@͸@͹@ͺ@%Í»@ͼ@ͽ@;@Í¿@ÍÀ@ÍÁ@ÍÂ@ÍÃ@ÍÄ@ÍÅ@ÍÆ@ÍÇ@ÍÈ@ÍÉ@ÍÊ@ÍË@%ÍÌ@ÍÍ@ÍÎ@ÍÏ@ÍÐ@ÍÑ@ÍÒ@ÍÓ@ÍÔ@ÍÕ@ÍÖ@Í×@ÍØ@ÍÙ@ÍÚ@ÍÛ@ÍÜ@%ÍÝ@ÍÞ@Íß@Íà@Íá@Íâ@Íã@Íä@Íå@Íæ@Íç@Íè@Íé@Íê@Íë@Íì@Íí@%Íî@Íï@Íð@Íñ@Íò@Íó@Íô@Íõ@Íö@Í÷@Íø@Íù@Íú@Íû@Íü@Íý@ÎA@%ÎB@ÎC@ÎD@ÎE@ÎF@ÎG@ÎH@ÎI@ÎJ@ÎK@ÎL@ÎM@ÎN@ÎO@ÎP@ÎQ@ÎR@%ÎS@ÎT@ÎU@ÎV@ÎW@ÎX@ÎY@ÎZ@Î[@Î\@Î]@Î^@Î_@Î`@Îa@Îb@Îc@%Îd@Îe@Îf@Îg@Îh@Îi@Îj@Îk@Îl@Îm@În@Îo@Îp@Îq@Îr@Îs@Ît@%Îu@Îv@Îw@Îx@Îy@Îz@Î{@Î|@Î}@Î~@Î@Î@΂@΃@΄@Î…@Ά@%·@Έ@Ή@Ί@΋@ÎŒ@Î@ÎŽ@Î@Î@Α@Î’@Γ@Δ@Ε@Ζ@Η@%Θ@Ι@Κ@Λ@Îœ@Î@Ξ@Ο@Π@Ρ@΢@Σ@Τ@Î¥@Φ@Χ@Ψ@%Ω@Ϊ@Ϋ@ά@έ@ή@ί@ΰ@α@β@γ@δ@ε@ζ@η@θ@ι@%κ@λ@μ@ν@ξ@ο@ÎÀ@ÎÁ@ÎÂ@ÎÃ@ÎÄ@ÎÅ@ÎÆ@ÎÇ@ÎÈ@ÎÉ@ÎÊ@%ÎË@ÎÌ@ÎÍ@ÎÎ@ÎÏ@ÎÐ@ÎÑ@ÎÒ@ÎÓ@ÎÔ@ÎÕ@ÎÖ@Î×@ÎØ@ÎÙ@ÎÚ@ÎÛ@%ÎÜ@ÎÝ@ÎÞ@Îß@Îà@Îá@Îâ@Îã@Îä@Îå@Îæ@Îç@Îè@Îé@Îê@Îë@Îì@%Îí@Îî@Îï@Îð@Îñ@Îò@Îó@Îô@Îõ@Îö@Î÷@Îø@Îù@Îú@Îû@Îü@Îý@%ÏA@ÏB@ÏC@ÏD@ÏE@ÏF@ÏG@ÏH@ÏI@ÏJ@ÏK@ÏL@ÏM@ÏN@ÏO@ÏP@ÏQ@%ÏR@ÏS@ÏT@ÏU@ÏV@ÏW@ÏX@ÏY@ÏZ@Ï[@Ï\@Ï]@Ï^@Ï_@Ï`@Ïa@Ïb@%Ïc@Ïd@Ïe@Ïf@Ïg@Ïh@Ïi@Ïj@Ïk@Ïl@Ïm@Ïn@Ïo@Ïp@Ïq@Ïr@Ïs@%Ït@Ïu@Ïv@Ïw@Ïx@Ïy@Ïz@Ï{@Ï|@Ï}@Ï~@Ï@Ï@Ï‚@σ@Ï„@Ï…@%φ@χ@ψ@ω@ÏŠ@Ï‹@ÏŒ@Ï@ÏŽ@Ï@Ï@Ï‘@Ï’@Ï“@Ï”@Ï•@Ï–@%Ï—@Ϙ@Ï™@Ïš@Ï›@Ïœ@Ï@Ïž@ÏŸ@Ï @Ï¡@Ï¢@Ï£@Ϥ@Ï¥@Ϧ@ϧ@%Ϩ@Ï©@Ϫ@Ï«@Ϭ@Ï­@Ï®@ϯ@Ï°@ϱ@ϲ@ϳ@Ï´@ϵ@϶@Ï·@ϸ@%Ϲ@Ϻ@Ï»@ϼ@Ͻ@Ͼ@Ï¿@ÏÀ@ÏÁ@ÏÂ@ÏÃ@ÏÄ@ÏÅ@ÏÆ@ÏÇ@ÏÈ@ÏÉ@%ÏÊ@ÏË@ÏÌ@ÏÍ@ÏÎ@ÏÏ@ÏÐ@ÏÑ@ÏÒ@ÏÓ@ÏÔ@ÏÕ@ÏÖ@Ï×@ÏØ@ÏÙ@ÏÚ@%ÏÛ@ÏÜ@ÏÝ@ÏÞ@Ïß@Ïà@Ïá@Ïâ@Ïã@Ïä@Ïå@Ïæ@Ïç@Ïè@Ïé@Ïê@Ïë@%Ïì@Ïí@Ïî@Ïï@Ïð@Ïñ@Ïò@Ïó@Ïô@Ïõ@Ïö@Ï÷@Ïø@Ïù@Ïú@Ïû@Ïü@%Ïý@ÐA@ÐB@ÐC@ÐD@ÐE@ÐF@ÐG@ÐH@ÐI@ÐJ@ÐK@ÐL@ÐM@ÐN@ÐO@ÐP@%ÐQ@ÐR@ÐS@ÐT@ÐU@ÐV@ÐW@ÐX@ÐY@ÐZ@Ð[@Ð\@Ð]@Ð^@Ð_@Ð`@Ða@%Ðb@Ðc@Ðd@Ðe@Ðf@Ðg@Ðh@Ði@Ðj@Ðk@Ðl@Ðm@Ðn@Ðo@Ðp@Ðq@Ðr@%Ðs@Ðt@Ðu@Ðv@Ðw@Ðx@Ðy@Ðz@Ð{@Ð|@Ð}@Ð~@Ð@Ð@Ђ@Ѓ@Є@%Ð…@І@Ї@Ј@Љ@Њ@Ћ@ÐŒ@Ð@ÐŽ@Ð@Ð@Б@Ð’@Г@Д@Е@%Ж@З@И@Й@К@Л@Ðœ@Ð@О@П@Р@С@Т@У@Ф@Ð¥@Ц@%Ч@Ш@Щ@Ъ@Ы@Ь@Э@Ю@Я@а@б@в@г@д@е@ж@з@%и@й@к@л@м@н@о@п@ÐÀ@ÐÁ@ÐÂ@ÐÃ@ÐÄ@ÐÅ@ÐÆ@ÐÇ@ÐÈ@%ÐÉ@ÐÊ@ÐË@ÐÌ@ÐÍ@ÐÎ@ÐÏ@ÐÐ@ÐÑ@ÐÒ@ÐÓ@ÐÔ@ÐÕ@ÐÖ@Ð×@ÐØ@ÐÙ@%ÐÚ@ÐÛ@ÐÜ@ÐÝ@ÐÞ@Ðß@Ðà@Ðá@Ðâ@Ðã@Ðä@Ðå@Ðæ@Ðç@Ðè@Ðé@Ðê@%Ðë@Ðì@Ðí@Ðî@Ðï@Ðð@Ðñ@Ðò@Ðó@Ðô@Ðõ@Ðö@Ð÷@Ðø@Ðù@Ðú@Ðû@%Ðü@Ðý@ÑA@ÑB@ÑC@ÑD@ÑE@ÑF@ÑG@ÑH@ÑI@ÑJ@ÑK@ÑL@ÑM@ÑN@ÑO@%ÑP@ÑQ@ÑR@ÑS@ÑT@ÑU@ÑV@ÑW@ÑX@ÑY@ÑZ@Ñ[@Ñ\@Ñ]@Ñ^@Ñ_@Ñ`@%Ña@Ñb@Ñc@Ñd@Ñe@Ñf@Ñg@Ñh@Ñi@Ñj@Ñk@Ñl@Ñm@Ñn@Ño@Ñp@Ñq@%Ñr@Ñs@Ñt@Ñu@Ñv@Ñw@Ñx@Ñy@Ñz@Ñ{@Ñ|@Ñ}@Ñ~@Ñ@Ñ@Ñ‚@у@%Ñ„@Ñ…@ц@ч@ш@щ@ÑŠ@Ñ‹@ÑŒ@Ñ@ÑŽ@Ñ@Ñ@Ñ‘@Ñ’@Ñ“@Ñ”@%Ñ•@Ñ–@Ñ—@ј@Ñ™@Ñš@Ñ›@Ñœ@Ñ@Ñž@ÑŸ@Ñ @Ñ¡@Ñ¢@Ñ£@Ѥ@Ñ¥@%Ѧ@ѧ@Ѩ@Ñ©@Ѫ@Ñ«@Ѭ@Ñ­@Ñ®@ѯ@Ñ°@ѱ@Ѳ@ѳ@Ñ´@ѵ@Ѷ@%Ñ·@Ѹ@ѹ@Ѻ@Ñ»@Ѽ@ѽ@Ѿ@Ñ¿@ÑÀ@ÑÁ@ÑÂ@ÑÃ@ÑÄ@ÑÅ@ÑÆ@ÑÇ@%ÑÈ@ÑÉ@ÑÊ@ÑË@ÑÌ@ÑÍ@ÑÎ@ÑÏ@ÑÐ@ÑÑ@ÑÒ@ÑÓ@ÑÔ@ÑÕ@ÑÖ@Ñ×@ÑØ@%ÑÙ@ÑÚ@ÑÛ@ÑÜ@ÑÝ@ÑÞ@Ñß@Ñà@Ñá@Ñâ@Ñã@Ñä@Ñå@Ñæ@Ñç@Ñè@Ñé@%Ñê@Ñë@Ñì@Ñí@Ñî@Ñï@Ñð@Ññ@Ñò@Ñó@Ñô@Ñõ@Ñö@Ñ÷@Ñø@Ñù@Ñú@%Ñû@Ñü@Ñý@ÒA@ÒB@ÒC@ÒD@ÒE@ÒF@ÒG@ÒH@ÒI@ÒJ@ÒK@ÒL@ÒM@ÒN@%ÒO@ÒP@ÒQ@ÒR@ÒS@ÒT@ÒU@ÒV@ÒW@ÒX@ÒY@ÒZ@Ò[@Ò\@Ò]@Ò^@Ò_@%Ò`@Òa@Òb@Òc@Òd@Òe@Òf@Òg@Òh@Òi@Òj@Òk@Òl@Òm@Òn@Òo@Òp@%Òq@Òr@Òs@Òt@Òu@Òv@Òw@Òx@Òy@Òz@Ò{@Ò|@Ò}@Ò~@Ò@Ò@Ò‚@%Òƒ@Ò„@Ò…@Ò†@Ò‡@Òˆ@Ò‰@ÒŠ@Ò‹@ÒŒ@Ò@ÒŽ@Ò@Ò@Ò‘@Ò’@Ò“@%Ò”@Ò•@Ò–@Ò—@Ò˜@Ò™@Òš@Ò›@Òœ@Ò@Òž@ÒŸ@Ò @Ò¡@Ò¢@Ò£@Ò¤@%Ò¥@Ò¦@Ò§@Ò¨@Ò©@Òª@Ò«@Ò¬@Ò­@Ò®@Ò¯@Ò°@Ò±@Ò²@Ò³@Ò´@Òµ@%Ò¶@Ò·@Ò¸@Ò¹@Òº@Ò»@Ò¼@Ò½@Ò¾@Ò¿@ÒÀ@ÒÁ@ÒÂ@ÒÃ@ÒÄ@ÒÅ@ÒÆ@%ÒÇ@ÒÈ@ÒÉ@ÒÊ@ÒË@ÒÌ@ÒÍ@ÒÎ@ÒÏ@ÒÐ@ÒÑ@ÒÒ@ÒÓ@ÒÔ@ÒÕ@ÒÖ@Ò×@%ÒØ@ÒÙ@ÒÚ@ÒÛ@ÒÜ@ÒÝ@ÒÞ@Òß@Òà@Òá@Òâ@Òã@Òä@Òå@Òæ@Òç@Òè@%Òé@Òê@Òë@Òì@Òí@Òî@Òï@Òð@Òñ@Òò@Òó@Òô@Òõ@Òö@Ò÷@Òø@Òù@%Òú@Òû@Òü@Òý@ÓA@ÓB@ÓC@ÓD@ÓE@ÓF@ÓG@ÓH@ÓI@ÓJ@ÓK@ÓL@ÓM@%ÓN@ÓO@ÓP@ÓQ@ÓR@ÓS@ÓT@ÓU@ÓV@ÓW@ÓX@ÓY@ÓZ@Ó[@Ó\@Ó]@Ó^@%Ó_@Ó`@Óa@Ób@Óc@Ód@Óe@Óf@Óg@Óh@Ói@Ój@Ók@Ól@Óm@Ón@Óo@%Óp@Óq@Ór@Ós@Ót@Óu@Óv@Ów@Óx@Óy@Óz@Ó{@Ó|@Ó}@Ó~@Ó@Ó@%Ó‚@Óƒ@Ó„@Ó…@Ó†@Ó‡@Óˆ@Ó‰@ÓŠ@Ó‹@ÓŒ@Ó@ÓŽ@Ó@Ó@Ó‘@Ó’@%Ó“@Ó”@Ó•@Ó–@Ó—@Ó˜@Ó™@Óš@Ó›@Óœ@Ó@Óž@ÓŸ@Ó @Ó¡@Ó¢@Ó£@%Ó¤@Ó¥@Ó¦@Ó§@Ó¨@Ó©@Óª@Ó«@Ó¬@Ó­@Ó®@Ó¯@Ó°@Ó±@Ó²@Ó³@Ó´@%Óµ@Ó¶@Ó·@Ó¸@Ó¹@Óº@Ó»@Ó¼@Ó½@Ó¾@Ó¿@ÓÀ@ÓÁ@ÓÂ@ÓÃ@ÓÄ@ÓÅ@%ÓÆ@ÓÇ@ÓÈ@ÓÉ@ÓÊ@ÓË@ÓÌ@ÓÍ@ÓÎ@ÓÏ@ÓÐ@ÓÑ@ÓÒ@ÓÓ@ÓÔ@ÓÕ@ÓÖ@%Ó×@ÓØ@ÓÙ@ÓÚ@ÓÛ@ÓÜ@ÓÝ@ÓÞ@Óß@Óà@Óá@Óâ@Óã@Óä@Óå@Óæ@Óç@%Óè@Óé@Óê@Óë@Óì@Óí@Óî@Óï@Óð@Óñ@Óò@Óó@Óô@Óõ@Óö@Ó÷@Óø@%Óù@Óú@Óû@Óü@Óý@ÔA@ÔB@ÔC@ÔD@ÔE@ÔF@ÔG@ÔH@ÔI@ÔJ@ÔK@ÔL@%ÔM@ÔN@ÔO@ÔP@ÔQ@ÔR@ÔS@ÔT@ÔU@ÔV@ÔW@ÔX@ÔY@ÔZ@Ô[@Ô\@Ô]@%Ô^@Ô_@Ô`@Ôa@Ôb@Ôc@Ôd@Ôe@Ôf@Ôg@Ôh@Ôi@Ôj@Ôk@Ôl@Ôm@Ôn@%Ôo@Ôp@Ôq@Ôr@Ôs@Ôt@Ôu@Ôv@Ôw@Ôx@Ôy@Ôz@Ô{@Ô|@Ô}@Ô~@Ô@%Ô@Ô‚@Ôƒ@Ô„@Ô…@Ô†@Ô‡@Ôˆ@Ô‰@ÔŠ@Ô‹@ÔŒ@Ô@ÔŽ@Ô@Ô@Ô‘@%Ô’@Ô“@Ô”@Ô•@Ô–@Ô—@Ô˜@Ô™@Ôš@Ô›@Ôœ@Ô@Ôž@ÔŸ@Ô @Ô¡@Ô¢@%Ô£@Ô¤@Ô¥@Ô¦@Ô§@Ô¨@Ô©@Ôª@Ô«@Ô¬@Ô­@Ô®@Ô¯@Ô°@Ô±@Ô²@Ô³@%Ô´@Ôµ@Ô¶@Ô·@Ô¸@Ô¹@Ôº@Ô»@Ô¼@Ô½@Ô¾@Ô¿@ÔÀ@ÔÁ@ÔÂ@ÔÃ@ÔÄ@%ÔÅ@ÔÆ@ÔÇ@ÔÈ@ÔÉ@ÔÊ@ÔË@ÔÌ@ÔÍ@ÔÎ@ÔÏ@ÔÐ@ÔÑ@ÔÒ@ÔÓ@ÔÔ@ÔÕ@%ÔÖ@Ô×@ÔØ@ÔÙ@ÔÚ@ÔÛ@ÔÜ@ÔÝ@ÔÞ@Ôß@Ôà@Ôá@Ôâ@Ôã@Ôä@Ôå@Ôæ@%Ôç@Ôè@Ôé@Ôê@Ôë@Ôì@Ôí@Ôî@Ôï@Ôð@Ôñ@Ôò@Ôó@Ôô@Ôõ@Ôö@Ô÷@%Ôø@Ôù@Ôú@Ôû@Ôü@Ôý@ÕA@ÕB@ÕC@ÕD@ÕE@ÕF@ÕG@ÕH@ÕI@ÕJ@ÕK@%ÕL@ÕM@ÕN@ÕO@ÕP@ÕQ@ÕR@ÕS@ÕT@ÕU@ÕV@ÕW@ÕX@ÕY@ÕZ@Õ[@Õ\@%Õ]@Õ^@Õ_@Õ`@Õa@Õb@Õc@Õd@Õe@Õf@Õg@Õh@Õi@Õj@Õk@Õl@Õm@%Õn@Õo@Õp@Õq@Õr@Õs@Õt@Õu@Õv@Õw@Õx@Õy@Õz@Õ{@Õ|@Õ}@Õ~@%Õ@Õ@Õ‚@Õƒ@Õ„@Õ…@Õ†@Õ‡@Õˆ@Õ‰@ÕŠ@Õ‹@ÕŒ@Õ@ÕŽ@Õ@Õ@%Õ‘@Õ’@Õ“@Õ”@Õ•@Õ–@Õ—@Õ˜@Õ™@Õš@Õ›@Õœ@Õ@Õž@ÕŸ@Õ @Õ¡@%Õ¢@Õ£@Õ¤@Õ¥@Õ¦@Õ§@Õ¨@Õ©@Õª@Õ«@Õ¬@Õ­@Õ®@Õ¯@Õ°@Õ±@Õ²@%Õ³@Õ´@Õµ@Õ¶@Õ·@Õ¸@Õ¹@Õº@Õ»@Õ¼@Õ½@Õ¾@Õ¿@ÕÀ@ÕÁ@ÕÂ@ÕÃ@%ÕÄ@ÕÅ@ÕÆ@ÕÇ@ÕÈ@ÕÉ@ÕÊ@ÕË@ÕÌ@ÕÍ@ÕÎ@ÕÏ@ÕÐ@ÕÑ@ÕÒ@ÕÓ@ÕÔ@%ÕÕ@ÕÖ@Õ×@ÕØ@ÕÙ@ÕÚ@ÕÛ@ÕÜ@ÕÝ@ÕÞ@Õß@Õà@Õá@Õâ@Õã@Õä@Õå@%Õæ@Õç@Õè@Õé@Õê@Õë@Õì@Õí@Õî@Õï@Õð@Õñ@Õò@Õó@Õô@Õõ@Õö@%Õ÷@Õø@Õù@Õú@Õû@Õü@Õý@ÖA@ÖB@ÖC@ÖD@ÖE@ÖF@ÖG@ÖH@ÖI@ÖJ@%ÖK@ÖL@ÖM@ÖN@ÖO@ÖP@ÖQ@ÖR@ÖS@ÖT@ÖU@ÖV@ÖW@ÖX@ÖY@ÖZ@Ö[@%Ö\@Ö]@Ö^@Ö_@Ö`@Öa@Öb@Öc@Öd@Öe@Öf@Ög@Öh@Öi@Öj@Ök@Öl@%Öm@Ön@Öo@Öp@Öq@Ör@Ös@Öt@Öu@Öv@Öw@Öx@Öy@Öz@Ö{@Ö|@Ö}@%Ö~@Ö@Ö@Ö‚@Öƒ@Ö„@Ö…@Ö†@Ö‡@Öˆ@Ö‰@ÖŠ@Ö‹@ÖŒ@Ö@ÖŽ@Ö@%Ö@Ö‘@Ö’@Ö“@Ö”@Ö•@Ö–@Ö—@Ö˜@Ö™@Öš@Ö›@Öœ@Ö@Öž@ÖŸ@Ö @%Ö¡@Ö¢@Ö£@Ö¤@Ö¥@Ö¦@Ö§@Ö¨@Ö©@Öª@Ö«@Ö¬@Ö­@Ö®@Ö¯@Ö°@Ö±@%Ö²@Ö³@Ö´@Öµ@Ö¶@Ö·@Ö¸@Ö¹@Öº@Ö»@Ö¼@Ö½@Ö¾@Ö¿@ÖÀ@ÖÁ@ÖÂ@%ÖÃ@ÖÄ@ÖÅ@ÖÆ@ÖÇ@ÖÈ@ÖÉ@ÖÊ@ÖË@ÖÌ@ÖÍ@ÖÎ@ÖÏ@ÖÐ@ÖÑ@ÖÒ@ÖÓ@%ÖÔ@ÖÕ@ÖÖ@Ö×@ÖØ@ÖÙ@ÖÚ@ÖÛ@ÖÜ@ÖÝ@ÖÞ@Öß@Öà@Öá@Öâ@Öã@Öä@%Öå@Öæ@Öç@Öè@Öé@Öê@Öë@Öì@Öí@Öî@Öï@Öð@Öñ@Öò@Öó@Öô@Öõ@%Öö@Ö÷@Öø@Öù@Öú@Öû@Öü@Öý@×A@×B@×C@×D@×E@×F@×G@×H@×I@%×J@×K@×L@×M@×N@×O@×P@×Q@×R@×S@×T@×U@×V@×W@×X@×Y@×Z@%×[@×\@×]@×^@×_@×`@×a@×b@×c@×d@×e@×f@×g@×h@×i@×j@×k@%×l@×m@×n@×o@×p@×q@×r@×s@×t@×u@×v@×w@×x@×y@×z@×{@×|@%×}@×~@×@×@ׂ@׃@ׄ@×…@׆@ׇ@׈@׉@׊@׋@׌@×@׎@%×@×@ב@×’@ד@×”@ו@×–@×—@ט@×™@ך@×›@ל@×@מ@ן@%× @ס@×¢@×£@פ@×¥@צ@ק@ר@ש@ת@׫@׬@×­@×®@ׯ@×°@%×±@ײ@׳@×´@×µ@׶@×·@׸@×¹@׺@×»@×¼@×½@×¾@׿@×À@×Á@%×Â@×Ã@×Ä@×Å@×Æ@×Ç@×È@×É@×Ê@×Ë@×Ì@×Í@×Î@×Ï@×Ð@×Ñ@×Ò@%×Ó@×Ô@×Õ@×Ö@××@×Ø@×Ù@×Ú@×Û@×Ü@×Ý@×Þ@×ß@×à@×á@×â@×ã@%×ä@×å@×æ@×ç@×è@×é@×ê@×ë@×ì@×í@×î@×ï@×ð@×ñ@×ò@×ó@×ô@%×õ@×ö@×÷@×ø@×ù@×ú@×û@×ü@×ý@ØA@ØB@ØC@ØD@ØE@ØF@ØG@ØH@%ØI@ØJ@ØK@ØL@ØM@ØN@ØO@ØP@ØQ@ØR@ØS@ØT@ØU@ØV@ØW@ØX@ØY@%ØZ@Ø[@Ø\@Ø]@Ø^@Ø_@Ø`@Øa@Øb@Øc@Ød@Øe@Øf@Øg@Øh@Øi@Øj@%Øk@Øl@Øm@Øn@Øo@Øp@Øq@Ør@Øs@Øt@Øu@Øv@Øw@Øx@Øy@Øz@Ø{@%Ø|@Ø}@Ø~@Ø@Ø@Ø‚@؃@Ø„@Ø…@؆@؇@؈@؉@ØŠ@Ø‹@ØŒ@Ø@%ØŽ@Ø@Ø@Ø‘@Ø’@Ø“@Ø”@Ø•@Ø–@Ø—@ؘ@Ø™@Øš@Ø›@Øœ@Ø@Øž@%ØŸ@Ø @Ø¡@Ø¢@Ø£@ؤ@Ø¥@ئ@ا@ب@Ø©@ت@Ø«@ج@Ø­@Ø®@د@%Ø°@ر@ز@س@Ø´@ص@ض@Ø·@ظ@ع@غ@Ø»@ؼ@ؽ@ؾ@Ø¿@ØÀ@%ØÁ@ØÂ@ØÃ@ØÄ@ØÅ@ØÆ@ØÇ@ØÈ@ØÉ@ØÊ@ØË@ØÌ@ØÍ@ØÎ@ØÏ@ØÐ@ØÑ@%ØÒ@ØÓ@ØÔ@ØÕ@ØÖ@Ø×@ØØ@ØÙ@ØÚ@ØÛ@ØÜ@ØÝ@ØÞ@Øß@Øà@Øá@Øâ@%Øã@Øä@Øå@Øæ@Øç@Øè@Øé@Øê@Øë@Øì@Øí@Øî@Øï@Øð@Øñ@Øò@Øó@%Øô@Øõ@Øö@Ø÷@Øø@Øù@Øú@Øû@Øü@Øý@ÙA@ÙB@ÙC@ÙD@ÙE@ÙF@ÙG@%ÙH@ÙI@ÙJ@ÙK@ÙL@ÙM@ÙN@ÙO@ÙP@ÙQ@ÙR@ÙS@ÙT@ÙU@ÙV@ÙW@ÙX@%ÙY@ÙZ@Ù[@Ù\@Ù]@Ù^@Ù_@Ù`@Ùa@Ùb@Ùc@Ùd@Ùe@Ùf@Ùg@Ùh@Ùi@%Ùj@Ùk@Ùl@Ùm@Ùn@Ùo@Ùp@Ùq@Ùr@Ùs@Ùt@Ùu@Ùv@Ùw@Ùx@Ùy@Ùz@%Ù{@Ù|@Ù}@Ù~@Ù@Ù@Ù‚@Ùƒ@Ù„@Ù…@Ù†@Ù‡@Ùˆ@Ù‰@ÙŠ@Ù‹@ÙŒ@%Ù@ÙŽ@Ù@Ù@Ù‘@Ù’@Ù“@Ù”@Ù•@Ù–@Ù—@Ù˜@Ù™@Ùš@Ù›@Ùœ@Ù@%Ùž@ÙŸ@Ù @Ù¡@Ù¢@Ù£@Ù¤@Ù¥@Ù¦@Ù§@Ù¨@Ù©@Ùª@Ù«@Ù¬@Ù­@Ù®@%Ù¯@Ù°@Ù±@Ù²@Ù³@Ù´@Ùµ@Ù¶@Ù·@Ù¸@Ù¹@Ùº@Ù»@Ù¼@Ù½@Ù¾@Ù¿@%ÙÀ@ÙÁ@ÙÂ@ÙÃ@ÙÄ@ÙÅ@ÙÆ@ÙÇ@ÙÈ@ÙÉ@ÙÊ@ÙË@ÙÌ@ÙÍ@ÙÎ@ÙÏ@ÙÐ@%ÙÑ@ÙÒ@ÙÓ@ÙÔ@ÙÕ@ÙÖ@Ù×@ÙØ@ÙÙ@ÙÚ@ÙÛ@ÙÜ@ÙÝ@ÙÞ@Ùß@Ùà@Ùá@%Ùâ@Ùã@Ùä@Ùå@Ùæ@Ùç@Ùè@Ùé@Ùê@Ùë@Ùì@Ùí@Ùî@Ùï@Ùð@Ùñ@Ùò@%Ùó@Ùô@Ùõ@Ùö@Ù÷@Ùø@Ùù@Ùú@Ùû@Ùü@Ùý@ÚA@ÚB@ÚC@ÚD@ÚE@ÚF@%ÚG@ÚH@ÚI@ÚJ@ÚK@ÚL@ÚM@ÚN@ÚO@ÚP@ÚQ@ÚR@ÚS@ÚT@ÚU@ÚV@ÚW@%ÚX@ÚY@ÚZ@Ú[@Ú\@Ú]@Ú^@Ú_@Ú`@Úa@Úb@Úc@Úd@Úe@Úf@Úg@Úh@%Úi@Új@Úk@Úl@Úm@Ún@Úo@Úp@Úq@Úr@Ús@Út@Úu@Úv@Úw@Úx@Úy@%Úz@Ú{@Ú|@Ú}@Ú~@Ú@Ú@Ú‚@Úƒ@Ú„@Ú…@Ú†@Ú‡@Úˆ@Ú‰@ÚŠ@Ú‹@%ÚŒ@Ú@ÚŽ@Ú@Ú@Ú‘@Ú’@Ú“@Ú”@Ú•@Ú–@Ú—@Ú˜@Ú™@Úš@Ú›@Úœ@%Ú@Úž@ÚŸ@Ú @Ú¡@Ú¢@Ú£@Ú¤@Ú¥@Ú¦@Ú§@Ú¨@Ú©@Úª@Ú«@Ú¬@Ú­@%Ú®@Ú¯@Ú°@Ú±@Ú²@Ú³@Ú´@Úµ@Ú¶@Ú·@Ú¸@Ú¹@Úº@Ú»@Ú¼@Ú½@Ú¾@%Ú¿@ÚÀ@ÚÁ@ÚÂ@ÚÃ@ÚÄ@ÚÅ@ÚÆ@ÚÇ@ÚÈ@ÚÉ@ÚÊ@ÚË@ÚÌ@ÚÍ@ÚÎ@ÚÏ@%ÚÐ@ÚÑ@ÚÒ@ÚÓ@ÚÔ@ÚÕ@ÚÖ@Ú×@ÚØ@ÚÙ@ÚÚ@ÚÛ@ÚÜ@ÚÝ@ÚÞ@Úß@Úà@%Úá@Úâ@Úã@Úä@Úå@Úæ@Úç@Úè@Úé@Úê@Úë@Úì@Úí@Úî@Úï@Úð@Úñ@%Úò@Úó@Úô@Úõ@Úö@Ú÷@Úø@Úù@Úú@Úû@Úü@Úý@ÛA@ÛB@ÛC@ÛD@ÛE@%ÛF@ÛG@ÛH@ÛI@ÛJ@ÛK@ÛL@ÛM@ÛN@ÛO@ÛP@ÛQ@ÛR@ÛS@ÛT@ÛU@ÛV@%ÛW@ÛX@ÛY@ÛZ@Û[@Û\@Û]@Û^@Û_@Û`@Ûa@Ûb@Ûc@Ûd@Ûe@Ûf@Ûg@%Ûh@Ûi@Ûj@Ûk@Ûl@Ûm@Ûn@Ûo@Ûp@Ûq@Ûr@Ûs@Ût@Ûu@Ûv@Ûw@Ûx@%Ûy@Ûz@Û{@Û|@Û}@Û~@Û@Û@Û‚@Ûƒ@Û„@Û…@Û†@Û‡@Ûˆ@Û‰@ÛŠ@%Û‹@ÛŒ@Û@ÛŽ@Û@Û@Û‘@Û’@Û“@Û”@Û•@Û–@Û—@Û˜@Û™@Ûš@Û›@%Ûœ@Û@Ûž@ÛŸ@Û @Û¡@Û¢@Û£@Û¤@Û¥@Û¦@Û§@Û¨@Û©@Ûª@Û«@Û¬@%Û­@Û®@Û¯@Û°@Û±@Û²@Û³@Û´@Ûµ@Û¶@Û·@Û¸@Û¹@Ûº@Û»@Û¼@Û½@%Û¾@Û¿@ÛÀ@ÛÁ@ÛÂ@ÛÃ@ÛÄ@ÛÅ@ÛÆ@ÛÇ@ÛÈ@ÛÉ@ÛÊ@ÛË@ÛÌ@ÛÍ@ÛÎ@%ÛÏ@ÛÐ@ÛÑ@ÛÒ@ÛÓ@ÛÔ@ÛÕ@ÛÖ@Û×@ÛØ@ÛÙ@ÛÚ@ÛÛ@ÛÜ@ÛÝ@ÛÞ@Ûß@%Ûà@Ûá@Ûâ@Ûã@Ûä@Ûå@Ûæ@Ûç@Ûè@Ûé@Ûê@Ûë@Ûì@Ûí@Ûî@Ûï@Ûð@%Ûñ@Ûò@Ûó@Ûô@Ûõ@Ûö@Û÷@Ûø@Ûù@Ûú@Ûû@Ûü@Ûý@ÜA@ÜB@ÜC@ÜD@%ÜE@ÜF@ÜG@ÜH@ÜI@ÜJ@ÜK@ÜL@ÜM@ÜN@ÜO@ÜP@ÜQ@ÜR@ÜS@ÜT@ÜU@%ÜV@ÜW@ÜX@ÜY@ÜZ@Ü[@Ü\@Ü]@Ü^@Ü_@Ü`@Üa@Üb@Üc@Üd@Üe@Üf@%Üg@Üh@Üi@Üj@Ük@Ül@Üm@Ün@Üo@Üp@Üq@Ür@Üs@Üt@Üu@Üv@Üw@%Üx@Üy@Üz@Ü{@Ü|@Ü}@Ü~@Ü@Ü@Ü‚@܃@Ü„@Ü…@܆@܇@܈@܉@%ÜŠ@Ü‹@ÜŒ@Ü@ÜŽ@Ü@Ü@Ü‘@Ü’@Ü“@Ü”@Ü•@Ü–@Ü—@ܘ@Ü™@Üš@%Ü›@Üœ@Ü@Üž@ÜŸ@Ü @Ü¡@Ü¢@Ü£@ܤ@Ü¥@ܦ@ܧ@ܨ@Ü©@ܪ@Ü«@%ܬ@Ü­@Ü®@ܯ@Ü°@ܱ@ܲ@ܳ@Ü´@ܵ@ܶ@Ü·@ܸ@ܹ@ܺ@Ü»@ܼ@%ܽ@ܾ@Ü¿@ÜÀ@ÜÁ@ÜÂ@ÜÃ@ÜÄ@ÜÅ@ÜÆ@ÜÇ@ÜÈ@ÜÉ@ÜÊ@ÜË@ÜÌ@ÜÍ@%ÜÎ@ÜÏ@ÜÐ@ÜÑ@ÜÒ@ÜÓ@ÜÔ@ÜÕ@ÜÖ@Ü×@ÜØ@ÜÙ@ÜÚ@ÜÛ@ÜÜ@ÜÝ@ÜÞ@%Üß@Üà@Üá@Üâ@Üã@Üä@Üå@Üæ@Üç@Üè@Üé@Üê@Üë@Üì@Üí@Üî@Üï@%Üð@Üñ@Üò@Üó@Üô@Üõ@Üö@Ü÷@Üø@Üù@Üú@Üû@Üü@Üý@ÝA@ÝB@ÝC@%ÝD@ÝE@ÝF@ÝG@ÝH@ÝI@ÝJ@ÝK@ÝL@ÝM@ÝN@ÝO@ÝP@ÝQ@ÝR@ÝS@ÝT@%ÝU@ÝV@ÝW@ÝX@ÝY@ÝZ@Ý[@Ý\@Ý]@Ý^@Ý_@Ý`@Ýa@Ýb@Ýc@Ýd@Ýe@%Ýf@Ýg@Ýh@Ýi@Ýj@Ýk@Ýl@Ým@Ýn@Ýo@Ýp@Ýq@Ýr@Ýs@Ýt@Ýu@Ýv@%Ýw@Ýx@Ýy@Ýz@Ý{@Ý|@Ý}@Ý~@Ý@Ý@Ý‚@݃@Ý„@Ý…@݆@݇@݈@%݉@ÝŠ@Ý‹@ÝŒ@Ý@ÝŽ@Ý@Ý@Ý‘@Ý’@Ý“@Ý”@Ý•@Ý–@Ý—@ݘ@Ý™@%Ýš@Ý›@Ýœ@Ý@Ýž@ÝŸ@Ý @Ý¡@Ý¢@Ý£@ݤ@Ý¥@ݦ@ݧ@ݨ@Ý©@ݪ@%Ý«@ݬ@Ý­@Ý®@ݯ@Ý°@ݱ@ݲ@ݳ@Ý´@ݵ@ݶ@Ý·@ݸ@ݹ@ݺ@Ý»@%ݼ@ݽ@ݾ@Ý¿@ÝÀ@ÝÁ@ÝÂ@ÝÃ@ÝÄ@ÝÅ@ÝÆ@ÝÇ@ÝÈ@ÝÉ@ÝÊ@ÝË@ÝÌ@%ÝÍ@ÝÎ@ÝÏ@ÝÐ@ÝÑ@ÝÒ@ÝÓ@ÝÔ@ÝÕ@ÝÖ@Ý×@ÝØ@ÝÙ@ÝÚ@ÝÛ@ÝÜ@ÝÝ@%ÝÞ@Ýß@Ýà@Ýá@Ýâ@Ýã@Ýä@Ýå@Ýæ@Ýç@Ýè@Ýé@Ýê@Ýë@Ýì@Ýí@Ýî@%Ýï@Ýð@Ýñ@Ýò@Ýó@Ýô@Ýõ@Ýö@Ý÷@Ýø@Ýù@Ýú@Ýû@Ýü@Ýý@ÞA@ÞB@%ÞC@ÞD@ÞE@ÞF@ÞG@ÞH@ÞI@ÞJ@ÞK@ÞL@ÞM@ÞN@ÞO@ÞP@ÞQ@ÞR@ÞS@%ÞT@ÞU@ÞV@ÞW@ÞX@ÞY@ÞZ@Þ[@Þ\@Þ]@Þ^@Þ_@Þ`@Þa@Þb@Þc@Þd@%Þe@Þf@Þg@Þh@Þi@Þj@Þk@Þl@Þm@Þn@Þo@Þp@Þq@Þr@Þs@Þt@Þu@%Þv@Þw@Þx@Þy@Þz@Þ{@Þ|@Þ}@Þ~@Þ@Þ@Þ‚@Þƒ@Þ„@Þ…@Þ†@Þ‡@%Þˆ@Þ‰@ÞŠ@Þ‹@ÞŒ@Þ@ÞŽ@Þ@Þ@Þ‘@Þ’@Þ“@Þ”@Þ•@Þ–@Þ—@Þ˜@%Þ™@Þš@Þ›@Þœ@Þ@Þž@ÞŸ@Þ @Þ¡@Þ¢@Þ£@Þ¤@Þ¥@Þ¦@Þ§@Þ¨@Þ©@%Þª@Þ«@Þ¬@Þ­@Þ®@Þ¯@Þ°@Þ±@Þ²@Þ³@Þ´@Þµ@Þ¶@Þ·@Þ¸@Þ¹@Þº@%Þ»@Þ¼@Þ½@Þ¾@Þ¿@ÞÀ@ÞÁ@ÞÂ@ÞÃ@ÞÄ@ÞÅ@ÞÆ@ÞÇ@ÞÈ@ÞÉ@ÞÊ@ÞË@%ÞÌ@ÞÍ@ÞÎ@ÞÏ@ÞÐ@ÞÑ@ÞÒ@ÞÓ@ÞÔ@ÞÕ@ÞÖ@Þ×@ÞØ@ÞÙ@ÞÚ@ÞÛ@ÞÜ@%ÞÝ@ÞÞ@Þß@Þà@Þá@Þâ@Þã@Þä@Þå@Þæ@Þç@Þè@Þé@Þê@Þë@Þì@Þí@%Þî@Þï@Þð@Þñ@Þò@Þó@Þô@Þõ@Þö@Þ÷@Þø@Þù@Þú@Þû@Þü@Þý@ßA@%ßB@ßC@ßD@ßE@ßF@ßG@ßH@ßI@ßJ@ßK@ßL@ßM@ßN@ßO@ßP@ßQ@ßR@%ßS@ßT@ßU@ßV@ßW@ßX@ßY@ßZ@ß[@ß\@ß]@ß^@ß_@ß`@ßa@ßb@ßc@%ßd@ße@ßf@ßg@ßh@ßi@ßj@ßk@ßl@ßm@ßn@ßo@ßp@ßq@ßr@ßs@ßt@%ßu@ßv@ßw@ßx@ßy@ßz@ß{@ß|@ß}@ß~@ß@ß@ß‚@߃@ß„@ß…@߆@%߇@߈@߉@ߊ@ß‹@ߌ@ß@ߎ@ß@ß@ß‘@ß’@ß“@ß”@ß•@ß–@ß—@%ߘ@ß™@ßš@ß›@ßœ@ß@ßž@ߟ@ß @ß¡@ߢ@ߣ@ߤ@ߥ@ߦ@ߧ@ߨ@%ß©@ߪ@ß«@߬@ß­@ß®@߯@ß°@ß±@ß²@ß³@ß´@ßµ@߶@ß·@߸@ß¹@%ߺ@ß»@ß¼@ß½@ß¾@ß¿@ßÀ@ßÁ@ßÂ@ßÃ@ßÄ@ßÅ@ßÆ@ßÇ@ßÈ@ßÉ@ßÊ@%ßË@ßÌ@ßÍ@ßÎ@ßÏ@ßÐ@ßÑ@ßÒ@ßÓ@ßÔ@ßÕ@ßÖ@ß×@ßØ@ßÙ@ßÚ@ßÛ@%ßÜ@ßÝ@ßÞ@ßß@ßà@ßá@ßâ@ßã@ßä@ßå@ßæ@ßç@ßè@ßé@ßê@ßë@ßì@%ßí@ßî@ßï@ßð@ßñ@ßò@ßó@ßô@ßõ@ßö@ß÷@ßø@ßù@ßú@ßû@ßü@ßý@%àA@àB@àC@àD@àE@àF@àG@àH@àI@àJ@àK@àL@àM@àN@àO@àP@àQ@%àR@àS@àT@àU@àV@àW@àX@àY@àZ@à[@à\@à]@à^@à_@à`@àa@àb@%àc@àd@àe@àf@àg@àh@ài@àj@àk@àl@àm@àn@ào@àp@àq@àr@às@%àt@àu@àv@àw@àx@ày@àz@à{@à|@à}@à~@à@à@à‚@àƒ@à„@à…@%à†@à‡@àˆ@à‰@àŠ@à‹@àŒ@à@àŽ@à@à@à‘@à’@à“@à”@à•@à–@%à—@à˜@à™@àš@à›@àœ@à@àž@àŸ@à @à¡@à¢@à£@à¤@à¥@à¦@à§@%à¨@à©@àª@à«@à¬@à­@à®@à¯@à°@à±@à²@à³@à´@àµ@à¶@à·@à¸@%à¹@àº@à»@à¼@à½@à¾@à¿@àÀ@àÁ@àÂ@àÃ@àÄ@àÅ@àÆ@àÇ@àÈ@àÉ@%àÊ@àË@àÌ@àÍ@àÎ@àÏ@àÐ@àÑ@àÒ@àÓ@àÔ@àÕ@àÖ@à×@àØ@àÙ@àÚ@%àÛ@àÜ@àÝ@àÞ@àß@àà@àá@àâ@àã@àä@àå@àæ@àç@àè@àé@àê@àë@%àì@àí@àî@àï@àð@àñ@àò@àó@àô@àõ@àö@à÷@àø@àù@àú@àû@àü@%àý@áA@áB@áC@áD@áE@áF@áG@áH@áI@áJ@áK@áL@áM@áN@áO@áP@%áQ@áR@áS@áT@áU@áV@áW@áX@áY@áZ@á[@á\@á]@á^@á_@á`@áa@%áb@ác@ád@áe@áf@ág@áh@ái@áj@ák@ál@ám@án@áo@áp@áq@ár@%ás@át@áu@áv@áw@áx@áy@áz@á{@á|@á}@á~@á@á@á‚@áƒ@á„@%á…@á†@á‡@áˆ@á‰@áŠ@á‹@áŒ@á@áŽ@á@á@á‘@á’@á“@á”@á•@%á–@á—@á˜@á™@áš@á›@áœ@á@áž@áŸ@á @á¡@á¢@á£@á¤@á¥@á¦@%á§@á¨@á©@áª@á«@á¬@á­@á®@á¯@á°@á±@á²@á³@á´@áµ@á¶@á·@%á¸@á¹@áº@á»@á¼@á½@á¾@á¿@áÀ@áÁ@áÂ@áÃ@áÄ@áÅ@áÆ@áÇ@áÈ@%áÉ@áÊ@áË@áÌ@áÍ@áÎ@áÏ@áÐ@áÑ@áÒ@áÓ@áÔ@áÕ@áÖ@á×@áØ@áÙ@%áÚ@áÛ@áÜ@áÝ@áÞ@áß@áà@áá@áâ@áã@áä@áå@áæ@áç@áè@áé@áê@%áë@áì@áí@áî@áï@áð@áñ@áò@áó@áô@áõ@áö@á÷@áø@áù@áú@áû@%áü@áý@âA@âB@âC@âD@âE@âF@âG@âH@âI@âJ@âK@âL@âM@âN@âO@%âP@âQ@âR@âS@âT@âU@âV@âW@âX@âY@âZ@â[@â\@â]@â^@â_@â`@%âa@âb@âc@âd@âe@âf@âg@âh@âi@âj@âk@âl@âm@ân@âo@âp@âq@%âr@âs@ât@âu@âv@âw@âx@ây@âz@â{@â|@â}@â~@â@â@â‚@âƒ@%â„@â…@â†@â‡@âˆ@â‰@âŠ@â‹@âŒ@â@âŽ@â@â@â‘@â’@â“@â”@%â•@â–@â—@â˜@â™@âš@â›@âœ@â@âž@âŸ@â @â¡@â¢@â£@â¤@â¥@%â¦@â§@â¨@â©@âª@â«@â¬@â­@â®@â¯@â°@â±@â²@â³@â´@âµ@â¶@%â·@â¸@â¹@âº@â»@â¼@â½@â¾@â¿@âÀ@âÁ@âÂ@âÃ@âÄ@âÅ@âÆ@âÇ@%âÈ@âÉ@âÊ@âË@âÌ@âÍ@âÎ@âÏ@âÐ@âÑ@âÒ@âÓ@âÔ@âÕ@âÖ@â×@âØ@%âÙ@âÚ@âÛ@âÜ@âÝ@âÞ@âß@âà@âá@ââ@âã@âä@âå@âæ@âç@âè@âé@%âê@âë@âì@âí@âî@âï@âð@âñ@âò@âó@âô@âõ@âö@â÷@âø@âù@âú@%âû@âü@âý@D\@F¨@F©@Fª@F«@iK@z¤@GA@F§@GI@F¶@F¼@F¬@F­@%F®@F¯@F°@F±@F¤@F¥@F²@F³@F´@Fµ@F @F¡@F¢@F£@F¾@F¿@FÂ@%FÃ@FÀ@FÁ@F½@GB@GC@GD@GE@GF@GG@GH@GJ@GK@GL@GM@GN@GO@%GP@GS@GT@FÄ@GU@GV@GW@GX@GY@GZ@G[@G\@G]@BZ@B@B{@Bà@%Bl@BP@B}@BM@B]@F¸@BN@Bk@B`@BK@Ba@Bð@Bñ@Bò@Bó@Bô@Bõ@%Bö@B÷@Bø@Bù@Bz@B^@BL@B~@Bn@Bo@B|@BÁ@BÂ@BÃ@BÄ@BÅ@BÆ@%BÇ@BÈ@BÉ@BÑ@BÒ@BÓ@BÔ@BÕ@BÖ@B×@BØ@BÙ@Bâ@Bã@Bä@Bå@Bæ@%Bç@Bè@Bé@DD@Cà@DE@Dp@Bm@B@B‚@Bƒ@B„@B…@B†@B‡@Bˆ@B‰@%B‘@B’@B“@B”@B•@B–@B—@B˜@B™@B¢@B£@B¤@B¥@B¦@B§@B¨@B©@%BÀ@BO@BÐ@C¡@CJ@BJ@B_@GQ@Bj@B[@% \ No newline at end of file diff -adurpN glibc-2.2/iconvdata/testdata/IBM939 glibc-2.2.1/iconvdata/testdata/IBM939 --- glibc-2.2/iconvdata/testdata/IBM939 Wed Nov 1 23:49:07 2000 +++ glibc-2.2.1/iconvdata/testdata/IBM939 Sat Jan 6 20:35:16 2001 @@ -1,2 +1,2 @@ @@@@7@-@.@/@@@%@ @ @ @?@?@@%@@@<@=@2@&@@@?@'@@@@@@@Z@%@{@[@l@P@}@M@]@\@N@k@`@K@a@ð@ñ@ò@%ó@ô@õ@ö@÷@ø@ù@z@^@L@~@n@o@|@Á@Â@Ã@%Ä@Å@Æ@Ç@È@É@Ñ@Ò@Ó@Ô@Õ@Ö@×@Ø@Ù@â@ã@%ä@å@æ@ç@è@é@­@²@½@°@m@y@@‚@ƒ@„@…@%†@‡@ˆ@‰@‘@’@“@”@•@–@—@˜@™@¢@£@¤@¥@%¦@§@¨@©@À@O@Ð@ @@ @!@"@#@$@@@@%(@)@*@+@,@ @ -@@0@1@@3@4@5@6@@8@%9@;@@@>@ÿ@?@?@J@±@?@²@?@?@?@_@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@ @?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@B@C@D@E@F@G@H@I@%Q@R@S@T@U@V@W@X@Y@b@c@d@e@f@g@h@i@%p@q@r@s@t@u@v@w@x@Š@‹@Œ@@Ž@@š@›@%œ@@ž@Ÿ@ª@«@¬@®@¯@³@´@µ@¶@·@¸@¹@º@%»@¼@¾@¿@?@?@?@?@?@?@?@%Bj@Dj@D`@Dí@DK@DP@%Cy@Dz@D{@Aa@Ab@Ac@Ad@Ae@Af@Ag@Ah@Ai@Aj@Ak@Al@Am@An@%Ao@Ap@Aq@Ar@As@At@Au@Av@Aw@Ax@AA@AB@AC@AD@AE@AF@AG@%AH@AI@AJ@AK@AL@AM@AN@AO@AP@AQ@AR@AS@AT@AU@AV@AW@AX@%AÆ@AÀ@AÁ@AÂ@AÃ@AÄ@AÅ@AÇ@AÈ@AÉ@AÊ@AË@AÌ@AÍ@AÎ@AÏ@AÐ@%AÑ@AÒ@AÓ@AÔ@AÕ@AÖ@A×@AØ@AÙ@AÚ@AÛ@AÜ@AÝ@AÞ@Aß@Aà@A€@%A@A‚@Aƒ@A„@A…@A‡@Aˆ@A‰@AŠ@A‹@AŒ@A@AŽ@A@A@A‘@A’@%A“@A”@A•@A–@A—@A˜@A™@Aš@A›@Aœ@A@Až@AŸ@A @A†@DZ@DJ@%DJ@D|@Da@Dq@Db@Dr@Cw@Cx@D~@D@Cs@Dî@Dï@Dk@DN@Dn@Do@%Cr@Añ@Aò@Aó@Aô@Aõ@Aö@A÷@Aø@Aù@Aú@A±@A²@A³@A´@Aµ@A¶@%A·@A¸@A¹@Aº@Dñ@Dò@Dð@Dó@Cn@Co@Cp@CN@Cq@CO@Cd@Ce@B`@%C_@Ca@DM@CK@D|@Cl@Cm@Ck@Cj@Cb@Cc@Dh@Dx@C`@C\@DL@C[@%Dg@Dw@C]@C^@Ch@Ci@Cf@Cg@CL@CM@C|@C·@C}@C¸@C~@C¹@C@%Cá@C±@Cã@C°@Câ@C²@Cî@Cé@Cä@C´@Cð@Cë@Cæ@C³@Cê@Cï@Cå@%Cµ@Cì@Cñ@Cç@C¶@Cí@Cò@Cè@Dê@Dé@Dã@Dâ@Dì@Dë@Dè@Dç@Dà@%Dä@Dá@Cz@Dæ@Då@Dy@Di@Cv@Cu@Ct@@@@CD@CA@D[@D]@D^@D_@%Dd@Dt@De@Du@CB@CC@DB@DC@Df@Dv@Dl@D}@Dc@Ds@C¡@DG@D@%DH@D‚@DI@Dƒ@DQ@D„@DR@D…@D†@DÀ@D‡@DÁ@Dˆ@DÂ@D‰@DÃ@DŠ@%DÄ@DŒ@DÅ@D@DÆ@DŽ@DÇ@D@DÈ@D@DÉ@D‘@DÊ@D’@DË@DV@D“@%DÌ@D”@DÍ@D•@DÎ@D–@D—@D˜@D™@Dš@D@DÏ@DÕ@Dž@DÐ@DÖ@DŸ@%DÑ@D×@D¢@DÒ@DØ@D£@DÓ@DÙ@D¤@D¥@D¦@D§@D¨@DS@D©@DT@Dª@%DU@D¬@D­@D®@D¯@Dº@D»@DW@D¼@DÚ@DÛ@DF@D½@C¾@C¿@DÜ@DÝ@%CG@C@CH@C‚@CI@Cƒ@CQ@C„@CR@C…@C†@CÀ@C‡@CÁ@Cˆ@CÂ@C‰@%CÃ@CŠ@CÄ@CŒ@CÅ@C@CÆ@CŽ@CÇ@C@CÈ@C@CÉ@C‘@CÊ@C’@CË@%CV@C“@CÌ@C”@CÍ@C•@CÎ@C–@C—@C˜@C™@Cš@C@CÏ@CÕ@Cž@CÐ@%CÖ@CŸ@CÑ@C×@C¢@CÒ@CØ@C£@CÓ@CÙ@C¤@C¥@C¦@C§@C¨@CS@C©@%CT@Cª@CU@C¬@C­@C®@C¯@Cº@C»@CW@C¼@CÚ@CÛ@CF@C½@CÔ@CY@%CZ@CE@CX@CÜ@CÝ@Dm@EA@KÎ@EG@EM@IÓ@EC@E^@E_@F¯@G‰@VB@%Mì@O—@VC@F›@Wu@MV@PÅ@Ob@Hƒ@H|@VD@VE@E\@VF@L¸@VG@Fz@%H«@Gb@TÈ@VH@VI@KŸ@EŠ@EØ@U©@T¥@Ol@bÐ@VJ@IG@VK@K½@EI@%Nµ@GI@VL@K¿@J˜@Ip@GÀ@VM@VN@K±@GÂ@H–@VO@EÎ@EB@VP@I@%Kt@EE@Em@Kä@Pè@UÜ@Hg@VR@Qg@VS@LÎ@VT@GŽ@O@Oú@K¬@Ks@%Eu@NR@Iœ@VU@VV@VW@E“@SÙ@Gv@V\@VZ@V[@P…@Eà@HK@VY@VX@%Kå@Te@Hµ@GU@V^@G]@H¢@D\@V_@Va@V]@Eš@IÃ@Fö@V`@Mq@Mí@%Hi@H²@SA@JU@Vb@Ve@GÒ@Vf@Vc@E²@M™@NŸ@Jƒ@Pö@J@E½@Vd@%HÙ@I¦@Vh@IÉ@TJ@Fô@Vj@PŠ@K¼@Ta@Nß@Nþ@Vl@GÈ@H¤@Fà@Ev@%Læ@F–@Gp@Vn@Vk@IÁ@Vg@Vo@E”@Vi@Vm@Vy@V|@Vz@Hv@K”@Qâ@%Vw@Tb@H¶@O˜@V}@Vr@Vq@JF@OÂ@Vs@O@Vp@V{@V~@Vv@Vt@H¼@%Jž@Rì@GZ@Vx@Vu@S¹@Sã@OŒ@U|@KL@HQ@Jj@TÇ@R”@F`@V†@V€@%V…@Vƒ@V@N—@V@V„@V‚@Eª@SÄ@Rì@E¥@KJ@V‡@Vˆ@FÞ@V–@Lá@%M±@Qø@Pù@Ng@V•@V”@V@V™@EÖ@Iú@JÄ@V¡@V—@Kj@VŒ@SC@L®@%V‰@V˜@JÐ@V@V‘@Ui@H}@VŽ@Rñ@V‹@V’@V@MQ@V“@Où@Oc@Rú@%VŠ@V¤@Vš@V¢@V›@Vž@Mû@PI@V@Vœ@V @VŸ@Np@F@V¥@V£@TÒ@%IC@O•@PÃ@V¦@PY@V§@Vª@Nç@OÃ@V¨@Pœ@F¬@V©@LC@TÚ@V­@V°@%V«@KX@L[@JC@V±@OÉ@V®@V¯@Hì@Kº@U­@J»@RÔ@Vµ@M‚@V³@V·@%V´@N„@V¶@V¸@V²@Vº@V¹@Ux@IÊ@V¼@V½@EN@V»@To@VÀ@V¿@VÁ@%R@V¾@J¢@VÂ@GÚ@T½@VÄ@VÃ@VÆ@VÅ@VÇ@VÈ@L‘@F•@Kè@HÉ@Mó@%UZ@G¢@Ež@VÉ@Gž@VÊ@KV@PP@FŸ@VË@VÌ@IK@Q¾@VÍ@VÎ@Fe@F±@%VÏ@VÐ@EH@F»@EF@VÑ@G³@FI@Og@G¯@GÉ@Hô@VÒ@VÓ@EŽ@FE@VÖ@%N¡@VÕ@Hë@V×@a@VØ@O@VÙ@VÚ@VÛ@R~@HÄ@VÜ@N{@Vß@VÝ@Tg@%VÞ@Hx@Và@Vá@Vâ@KÞ@Væ@Vä@Vå@Vã@PÉ@Vç@QF@Hü@Vé@Vè@RÜ@%Vê@O€@Vë@Uù@SD@Kæ@Ww@Vì@h„@NÙ@Ví@Má@Hæ@UŠ@Vî@Tž@Vï@%Vð@Vñ@Q¬@Vò@Qì@PÏ@Pæ@E›@K¶@Vó@LP@OD@Vô@E´@Ge@K›@L×@%Võ@Tã@LR@Vö@V÷@K´@GK@I\@FÝ@Vø@E¼@Vù@Vú@LÝ@Vû@FÄ@HÏ@%Kk@Vü@KÀ@Kõ@Sy@Vý@GM@J@Vþ@Q®@E¯@WA@WC@Q™@IÇ@T@WB@%LÓ@Gf@T@WH@WE@KN@M…@WD@GÖ@WF@WG@Ká@WJ@WI@UÖ@Ið@WL@%Q…@WK@WN@WM@U€@E÷@WO@Hp@EŸ@Nh@WP@Fq@Jd@TÆ@WQ@WR@_ª@%M’@H©@WT@Ix@WS@Uj@WV@WU@T±@Nï@Fœ@HÎ@WW@SÖ@Eä@S’@Kš@%Fí@WX@Eµ@WY@Já@W\@Gî@WZ@IŸ@W[@L~@Iz@W]@W^@W_@W`@Tp@%Qé@R—@Wa@O[@NË@J¨@Wb@Wc@Wd@Wf@Wh@Wg@Wi@E@EZ@TW@Wj@%Q·@Nk@MM@Wl@Wk@Uí@Wm@Wn@Wo@Wp@OÑ@ET@J‡@Pñ@Wq@EJ@EL@%Wr@Ws@NG@Eß@Wt@G@Wv@S­@Jò@I–@G×@EY@Hã@Eö@QÀ@Wy@Iî@%SÛ@Wz@W{@L‚@G™@K‘@W|@Km@J¤@Lõ@W}@Ny@W~@Sâ@W@SR@W€@%W@OU@IB@Et@W‚@W„@Wƒ@Qx@Sg@S·@W…@W†@W‡@LŽ@Wˆ@JÊ@HÒ@%W‰@Hõ@P¥@H\@FÔ@Kq@Gù@G‘@O¥@F¦@HL@Põ@U²@W‹@WŒ@Q”@Sõ@%Eˆ@EÔ@L‹@W‘@Oq@NA@MÕ@O†@W’@W@GÆ@Gx@PB@GÙ@HZ@OY@Hâ@%Eð@W“@W”@Uê@Gº@E @E~@SÓ@U¼@Fm@Eó@Q¯@PÆ@N²@F¥@GÏ@W@%Pz@Sá@LO@Wœ@IË@W—@W˜@Wš@W›@K˜@IÄ@Så@W™@W•@Gö@W–@KP@%Ps@OV@Jî@IT@Wž@P°@W¢@H¡@T@W¥@W£@G@W @Wª@W¤@W§@Jö@%I°@W¨@W«@W­@W®@OP@Ez@W¡@WŸ@W¬@W¦@W©@W²@W¼@W´@W¹@W½@%Wº@Wµ@W±@LÞ@Sé@W³@W°@R±@W¾@Nù@EÐ@W»@W¶@W¯@W¸@Jk@W·@%FË@WÇ@W¿@WÁ@Uh@Uð@WÆ@WÅ@GG@T|@WÄ@WÀ@LÛ@Q¸@Ov@WÂ@K«@%WÃ@TÔ@WÌ@Kà@MC@WÒ@WÑ@WÈ@Tx@WÉ@Sƒ@WÎ@F¾@WË@Fä@Gä@WÏ@%WÐ@WÍ@WÓ@TÔ@WÊ@WØ@WÝ@WÙ@WÕ@Wß@F³@WÞ@Wá@RS@WÖ@UX@WÚ@%WÔ@Rµ@EÑ@Tu@WÛ@W×@OÓ@Wâ@Wà@Qh@Mm@L_@WÜ@N¹@HÓ@Wå@Wã@%XX@Wè@R¢@Wæ@Wä@K^@Wç@Wë@Wé@Wî@Wí@Pc@G~@Wê@Wì@Tì@Pó@%Wï@RÊ@Wø@PÊ@Wó@T@Wò@Wô@R›@Pb@Wð@Wñ@T}@Wö@Eü@Wú@Wõ@%Wù@Nm@Uñ@U‚@Wþ@W÷@UØ@XA@Wý@Wü@T}@XB@Q@XC@XD@XF@XE@%XI@XL@XJ@XH@XK@XG@Q@XM@XO@XN@XP@VÔ@Pe@ED@F©@JI@Gð@%XQ@KD@Jú@GÁ@XR@J”@E@XS@Rf@SÏ@XT@XV@XU@Q½@XW@OI@Gá@%Tç@XZ@XY@X[@F„@X\@G‚@GÍ@Iæ@EÂ@QÑ@X]@X_@Xa@Eì@I®@LU@%X^@Xb@N@Nó@X`@Xe@S¦@Xc@QÄ@S˜@II@Xf@KÉ@Xd@Xg@Fæ@Xh@%Xi@Tf@GÎ@Xj@Xm@Xl@SÍ@Xk@Xq@Xn@Xo@Xs@Xp@N¬@EÛ@Xt@Xu@%Xr@Xv@Mô@Hé@Q~@Xy@OH@MW@M¬@Fñ@F£@F@I@Jç@Sq@Xx@Xz@%S°@X{@S§@X|@Ka@O¬@NS@P¤@I¸@EÙ@Tö@J|@X€@SŸ@Kë@PS@X}@%NÆ@X@LË@Hj@Rø@Oo@FW@SÁ@O^@X~@GC@O^@Xƒ@X†@M‰@X„@Ry@%J•@X…@N¾@FM@QP@XŠ@X‡@Jü@Xˆ@X‹@XŒ@R‰@X‰@X@XŽ@UR@Tˆ@%K•@X@NŽ@NÈ@Q–@X‘@X@U¹@X’@X”@X“@X–@X•@X—@X˜@X™@F}@%QO@LŸ@Xš@Il@N°@Gu@X›@Xœ@Pw@X@Xž@Ru@XŸ@Go@X @X¡@I~@%X¢@JÃ@F”@RÈ@TÝ@Eþ@X£@HÈ@K‹@X¥@E[@FŠ@E«@Es@X¦@X§@G’@%IA@X¨@QG@X©@Xª@Rò@Mi@Eæ@M²@Q@LS@X¬@Ld@X­@R„@X«@Uƒ@%X¯@X®@X°@X±@X´@X³@X²@Få@Xµ@NÊ@X·@N»@X¶@NÝ@F™@M@X¸@%Fž@X¹@Kø@Q¢@UM@PC@Xº@S•@SÑ@Jf@X»@X¼@X½@X¾@Mž@Pì@S@%X¿@KÜ@XÀ@I£@S¯@XÁ@LÁ@I@Tœ@Sò@Oñ@HO@XÃ@XÄ@Q„@RU@UÞ@%XÂ@UŒ@J³@Qy@R¹@KB@Le@Uz@XÊ@XÇ@KT@XÉ@XÈ@XÆ@RL@XÅ@TŸ@%Pµ@XÎ@XÏ@T˜@XË@Pø@NÌ@XÍ@Jw@XÐ@Io@XÑ@XÌ@TT@M€@XÒ@HU@%XÓ@XØ@XÔ@N‰@X×@Sà@XÖ@NÃ@XÕ@XÝ@XÚ@Ug@XÙ@XÛ@XÜ@XÞ@Xß@%O‹@Xá@Xà@Xâ@Mä@Xä@Rê@Uè@Xã@Xå@Xæ@Xé@Xç@Xè@Ed@Xê@KÙ@%Xë@Xì@Hò@JA@RX@Xî@Oò@Eô@Oƒ@Jì@N¯@Xï@E¾@Xð@L^@Xñ@Y[@%Xò@Xó@Xô@Xõ@Xö@X÷@Ho@FÕ@Fð@E¨@RM@HÅ@Lu@FÈ@Q\@GÝ@I¢@%Md@Eç@P«@M‹@IM@Eí@JÞ@I@G¸@Oz@Xø@E’@NÔ@Ih@Px@Rï@F†@%Xù@H‰@H‚@Xü@Oé@Xú@Iß@J„@JV@Xû@Xý@E¬@YA@K@Uô@RD@YB@%Gø@KY@YC@K“@R¸@YF@YE@YG@Qü@O©@\~@I‡@YH@YD@Lz@YI@YJ@%UV@YK@K`@F @FV@F²@Mv@Iû@IŠ@YL@IY@YM@YN@Q‰@Lï@M_@YO@%H®@E]@HJ@YP@SÀ@Hq@YQ@YR@YS@S®@YT@h€@Kî@YU@Q]@Lk@IÎ@%J†@O¹@EÈ@LÆ@H‹@YV@H^@YW@M”@M§@Eé@Uº@YX@TC@YZ@T²@YY@%HÝ@TC@Gm@Sû@UÀ@UÀ@JŽ@L¢@Y\@Y]@OÝ@Ee@Y^@Y_@Y`@GJ@RZ@%Ya@Er@Yg@T¹@E¿@Yc@PÕ@Rb@MF@Ye@Yf@GH@Yh@Yd@Yj@Yb@Yi@%Yk@Yl@O–@Q³@O@Ym@Yr@Yq@J¬@Hþ@Yp@Eo@Yo@Pr@Yn@L@Ys@%E@Yw@QM@Yt@Pt@Tñ@Y|@Y{@Yz@Yv@Yu@Yy@Yx@O_@Y„@Yƒ@Y}@%Y‚@IŒ@Y~@Y@Y@Pž@Y…@Y‡@NÓ@Y†@Yˆ@Y‹@YŠ@Y‰@GÑ@YŒ@Y@%YŽ@Y@Y@Y‘@Y’@Y“@Y•@Lè@Y”@O„@Y–@IÏ@R@Y—@Y™@Y˜@Qß@%Yš@Eg@GA@MG@Lg@Ej@H[@L£@JR@Y›@I‹@G­@JK@Jæ@N}@Yœ@SË@%H“@NF@J}@ES@Gk@Ou@Y@Jµ@Y @QÇ@YŸ@Yž@Y¡@Hœ@R¯@JD@KS@%I`@I‚@MÅ@Y¢@T¾@Fï@L…@Y¥@Y¤@Y£@J^@Y¦@Ik@Y§@Y©@LÊ@Y¨@%Tƒ@HÞ@Yª@N@Y«@Jo@E@E`@Y¬@Y­@E©@HÚ@Y®@P¢@M¯@R_@KW@%Y¯@K’@E·@HP@U@Jí@MO@Kd@UO@HT@QZ@EQ@Y°@EÞ@H±@Eø@Hà@%Në@PÁ@Fš@L]@Y±@Y²@KÇ@Y³@NÛ@N§@Yµ@Y´@T­@Sl@Y·@Y¸@Y¶@%U¯@Ub@Yº@Y¹@Pé@Y»@Y¼@Y½@Y¾@Y¿@YÀ@YÁ@GÐ@P[@RÖ@Ff@K¯@%Ud@TK@QÙ@KG@YÂ@T¿@YÃ@PÍ@YÄ@VA@VQ@F@Pá@YÅ@Kc@Qå@FÚ@%YÆ@T¬@EÓ@U—@L›@YÇ@Gæ@NB@Sk@YÈ@YÉ@YÊ@Kn@YË@Hº@FÒ@YÌ@%Rà@JÔ@YÍ@SÇ@YÎ@S…@YÏ@YÐ@YÑ@F_@YÒ@YÓ@YÔ@YÕ@YÖ@Y×@F@%Eá@YØ@MÍ@QY@N†@Nˆ@Rœ@Id@I^@YÙ@YÚ@I]@Gr@YÝ@Lê@Ja@YÜ@%YÛ@N`@H£@Yà@Yß@YÞ@I‘@Eå@P³@Yá@Ll@Hû@Gè@Yä@Yâ@Yã@Yå@%F˜@Yæ@Jp@Nõ@Yç@K]@FT@Lt@Yè@Hø@Yé@Uà@Fç@GÊ@P—@K×@Yê@%Fa@LE@N£@H•@Yð@Yñ@FO@Yì@L`@Yï@Yî@J®@Yí@Yë@PV@Yò@Y÷@%Yý@Yõ@LÖ@Yú@Nð@Yô@Yù@PŸ@F­@P@Yó@GÌ@Yü@Fn@TÞ@Yö@Nq@%Yû@UB@Yø@Yþ@ZB@RV@ZL@ZI@ZH@KÊ@ZJ@KÕ@GÇ@R˜@ZP@ZA@ZD@%ZG@ZC@U”@ZK@ZM@NÎ@S¸@L@ZE@ZO@ZN@IN@K°@S„@FC@ZF@ZR@%ZS@ZU@ZQ@Ti@ZW@Z\@Mã@UD@ZZ@P‘@ZX@ZY@ZT@ZV@J±@MØ@Më@%Hs@Z[@KÍ@Ie@L@Rv@S£@Zd@UT@Z^@QE@Zb@H_@Zc@Ne@Nx@Za@%Ze@Zf@T@N×@Z_@Oà@Z`@Z]@Kh@UJ@Pn@T¸@Zs@Zh@H³@Zn@Zk@%Zl@Tr@Zo@Zr@Zm@R‚@Zp@Zj@SÈ@P˜@Zt@Zu@Gc@Zv@Zi@R²@EÆ@%G÷@Zg@Zq@Z{@Zz@Z€@Z~@Z@Zy@Z@Z„@Z|@Qã@Z…@Z†@Zw@L¾@%Z}@Hý@SŽ@Zx@Jv@Z’@Rã@ZŠ@Z‹@ZŒ@Zƒ@Z‘@MÛ@MÓ@Z‚@N¶@RŠ@%Z@LI@Z@O­@Z@Z‡@ZŽ@Z“@H¨@Z‰@Sô@P|@Zˆ@Z™@OJ@U[@Zš@%Z˜@Z–@Z”@Z•@UÏ@Oü@SÂ@Qu@Z›@Z—@Zœ@G¾@Nl@Z£@Q¥@Z¡@Z¢@%N¤@Z @ZŸ@Zž@Z¤@Z@Z¦@Nò@Z¨@Z§@QS@Z©@Z«@Zª@MÆ@Z­@Z¯@%Z¬@Z°@Z®@Z±@Z²@Z³@Qa@T`@Z´@Q@Eº@IÞ@M @Zµ@Z¶@M@U•@%Z·@dn@Z¸@TÙ@Z¹@Gd@Zº@Z»@O’@Z¼@Z½@Z¾@P’@EÏ@LD@GÜ@EŒ@%Z¿@MÊ@e]@P­@EË@Iñ@ZÀ@Gê@I@UÕ@ZÃ@ZÁ@ZÄ@ZÂ@ZÅ@T·@Li@%Mz@Lv@ZÆ@ZÊ@LH@H÷@ZÇ@ZÍ@NÀ@ZÈ@Nã@Mf@ZÉ@ZË@ZÎ@GQ@ZÌ@%Jg@I@ZÜ@J…@N~@ZÚ@O¦@ZÓ@L†@K@Qà@ZÑ@Iá@MS@ZÙ@J¡@ZÔ@%ZÛ@ZÕ@ZÝ@ZØ@SE@Oº@ZÒ@S¢@ZÐ@Oa@KÛ@Z×@ZÏ@PE@R\@Ký@ZÖ@%Nâ@Mw@Hå@OÅ@Nå@Zß@Zä@Zà@P@Zå@Ož@Uµ@M×@Zæ@FØ@Zâ@G¶@%Zã@T‰@ZÞ@OÛ@K‚@U±@Zá@O@T@Hö@S‡@R¨@Zé@UU@S @U}@Zè@%Zê@Zç@LA@UF@MÝ@R…@K³@Zõ@Zô@NÖ@T“@Zï@M@OÀ@TÀ@Zí@MÃ@%La@Zò@Nì@Zì@Zñ@Lú@Zë@MD@Jã@Zó@Uæ@KO@K@Zð@G¨@L¬@HÕ@%UÐ@J`@Zî@UA@MÁ@TÍ@Zö@T£@Z÷@Zù@Ný@[B@Zú@Zý@KÏ@I¹@Zþ@%Lò@LF@Iª@M`@Zü@Zø@Kò@JÕ@Zû@[A@O~@[D@KØ@[K@[E@T£@[L@%[I@[H@[F@[J@MÈ@R@[C@[G@NI@P£@NŒ@[M@TÍ@MË@[P@[N@HÑ@%[O@[Q@Uõ@Qï@Jt@[Z@SÞ@[W@[U@SH@[S@UÛ@Nz@[X@[Y@Qá@Nb@%Lw@Sr@NÇ@[R@[V@[[@QN@[b@[^@[_@I›@[T@[]@[`@[a@[\@[e@%[f@UC@[g@OÖ@[d@OÍ@[h@[c@[k@[i@[j@[l@[n@Uö@[m@[r@[o@%[p@[q@[r@[t@[s@R@[u@[v@G{@[w@[x@[z@[y@[{@H@KÅ@H¯@%EÇ@J÷@[}@[€@[~@FG@L\@[‚@[@KŠ@[@G¥@[ƒ@Q±@OÏ@JÉ@Iò@%G°@FÌ@[„@G|@Kó@IQ@[…@[†@[‡@EÊ@Xí@FŽ@Q@GÛ@K€@Rä@Nƒ@%FN@[‰@KÑ@[Š@U@TÏ@QA@QÂ@[‹@Nü@I‰@N¥@E‡@[Œ@EÍ@M¤@Hˆ@%[@[@[@JÏ@[Ž@M{@[‘@JÜ@[’@M«@[“@Qe@[•@[”@Kw@Eb@M@%L{@Mj@Fé@Mg@Gì@[–@O£@[œ@[—@[™@[›@Oç@Fþ@[@RŽ@FÑ@E¦@%Tè@Gé@LY@[˜@[£@[¡@G©@G¬@[¤@Fb@U@Hè@E³@[ @K»@Rë@[¢@%[Ÿ@Q“@OŸ@L˜@[ž@RQ@FQ@H°@[¥@[¦@K²@Qê@TÃ@[¨@[«@[­@[©@%OÎ@[¬@[ª@[§@Um@P @Q²@L¶@Iø@I“@[°@[¯@G•@Jø@F¨@Lƒ@[±@%[³@OF@[²@NÑ@O«@O¾@Ml@Kâ@[µ@[´@[·@[¶@LÇ@PÌ@P“@Jþ@[¸@%L²@[¿@RC@[¾@[½@[»@[º@[¹@LV@[¼@[À@QR@[Á@Kþ@R¦@QÌ@[Â@%[Ã@[Ä@I¶@N¼@Jm@[Å@[Æ@G@NÒ@[Ç@S—@W@I_@Qf@KÃ@Fõ@V¬@%Ea@F…@KÄ@GÔ@[È@Tý@O¤@Uó@[Ê@Hn@G»@G\@[Ë@F‹@[Í@[Î@El@%IÆ@GF@Ef@Hù@[Ð@MB@N¢@[Ò@[Ó@[Ô@M–@Pð@[Ñ@SO@[Õ@Fh@NQ@%PÐ@F¼@EV@TÁ@Pô@[×@R]@[Ö@KK@T€@G^@Q¦@R‘@[Ù@Fv@[Ø@[Þ@%P‹@Lc@[Ü@EW@[š@[à@J¦@R€@Tß@Ex@F´@[Û@R^@[Ú@[ß@Tò@Jâ@%Ox@E¢@IÙ@G¹@Fr@OÒ@[â@RÐ@[á@[Ý@Pa@TÉ@[æ@Nè@[ä@[é@[ò@%[ã@[ð@UÍ@J@[ô@RÙ@[ñ@I€@PJ@NÁ@H›@Mê@OØ@Ná@[í@Tó@[î@%[ë@[ê@[è@[ç@[ï@[å@Kê@Fê@G§@Qñ@Gs@PT@JÁ@[ó@RÑ@GÓ@Eú@%Qñ@Pã@MÌ@G›@[õ@H¿@RB@RÞ@HV@Râ@[ú@UÚ@Kž@Fg@GÞ@Mà@[ø@%PÖ@I«@JÚ@[ù@[ö@Hñ@[÷@[û@IÀ@Hy@[ì@Sm@SK@[ý@Gq@Mˆ@Qó@%[ü@PF@\K@Nw@\A@\D@\B@ND@\H@G˜@[þ@[þ@\E@PÚ@\G@RÌ@S¼@%N’@\C@RÆ@P¬@X¤@RÓ@HX@\F@Qä@F‚@SY@Sa@\L@I­@\J@\M@\I@%N±@\`@S†@UÊ@\P@Nñ@\V@\_@KZ@\W@\Y@TÂ@\R@Kï@N©@\^@\T@%\]@\X@E@\[@Su@T”@U¶@Th@\O@\\@O÷@\Q@Mý@\U@GÅ@K @\N@%\Z@Oí@Sp@Qc@Hm@\c@\a@\d@Sú@\S@\e@\b@\q@T§@\i@Rí@\o@%Lº@Q×@R•@\k@UÅ@\p@SL@Tâ@\s@\r@Jß@R|@M“@\n@\l@T¢@Ek@%Sï@O®@R³@\m@I·@\h@\j@\g@Rº@Ga@\t@\u@LB@KR@Ië@Tv@UÇ@%\†@\y@M~@\…@\„@S@QJ@\€@\v@S²@\‚@\|@\w@\z@\ƒ@M¹@\@%G–@Nú@RÛ@\}@TŒ@\{@HH@h@\@\‡@\@\@\‰@\”@\’@\Ž@\@%K\@M·@\Œ@\Š@S»@\•@IO@\@\—@\™@\“@S‹@If@\‹@\‘@S›@Hd@%\–@\˜@HÜ@Eò@Ko@\ˆ@\š@U…@\Ÿ@\§@FÏ@Ni@K¾@\œ@\¦@\¡@\¥@%E‰@KÂ@\£@Ey@UÔ@\¢@\¤@\›@\¨@\©@\ @\¯@O²@Oõ@\¬@\«@Uî@%\ª@\°@MU@\ž@\­@\®@\²@\±@T]@\¶@\µ@\³@\·@\´@R‹@\º@U†@%\»@M¦@\¸@Sb@\¹@\¼@QÅ@\¿@\Â@Rî@NÞ@\À@\Á@\Ã@\Ä@U÷@\Å@%Lµ@E—@K@J @Kö@\Ç@\Æ@\È@Q}@Lø@Nû@\Ì@\Ë@\Í@F÷@T‡@\Î@%MN@\Ð@\Ï@\Ñ@\Ò@\Ó@HØ@Ew@ML@E±@GØ@UŽ@JŸ@Hä@IU@\Ô@\Õ@%I™@\Ö@\×@\Ù@\Ø@OB@S¤@He@I’@\Ú@\Ü@Ns@\Û@\Ý@\Þ@\ß@\à@%\á@\â@\ã@\ä@TY@Gí@\å@Ié@PÀ@\æ@HI@X@J[@\ç@\è@Ii@Iõ@%L—@\é@GN@\ê@S×@Fâ@\ë@\í@\ì@\ï@\î@\ð@HŽ@GV@\ñ@\ò@E¹@%\ó@\õ@\ô@Eœ@L¤@Eû@Un@\ö@SM@M„@I @P^@Pj@\ø@NÄ@N‚@\ù@%U^@\÷@E­@Eè@\ú@]E@R´@\þ@PÒ@PÈ@]F@G¤@IL@]D@]B@\û@UÙ@%\ý@L@U˜@\ü@]H@]G@Oø@Gý@N­@]A@]C@Pu@E…@Sì@]M@]P@FZ@%Nª@F\@]R@E„@FÆ@]K@]Q@No@JX@]I@]L@Fî@M¸@Qý@T×@FJ@UÆ@%]U@]N@]S@]O@N‡@FÊ@MK@NV@ID@]V@]T@Fó@]J@OW@]X@EÚ@]^@%]]@JN@R¶@TP@M˜@]W@EÜ@P·@OÔ@]Z@Kr@]\@R¬@]Y@P¼@G´@][@%Jr@Fü@LÉ@F@]f@]d@Eê@]_@]c@Fk@Fë@J@UÌ@JŒ@]b@K~@E§@%MA@]e@]j@]`@Hk@O}@]g@]a@]h@]k@MÚ@]i@UP@]r@O‘@JE@]o@%]s@Nt@Jˆ@]|@]u@]q@RÇ@]x@]t@J¿@]{@]‚@Uá@]~@]w@L¥@]@%]p@]y@]ƒ@UN@]v@]„@Gw@]@H”@Hê@KF@]z@]l@]}@J‘@]€@E–@%TA@Gi@JÀ@]m@H’@Q˜@Qd@]‡@Pä@GŠ@]™@]’@Rz@EÒ@]Œ@]˜@NC@%Q @]“@IP@]@IE@]…@]n@HÆ@]š@]Š@]–@]•@]‹@]”@Lˆ@]‘@]—@%MR@QU@Só@]Ž@]‰@O½@]@]†@H½@]ˆ@]@Mk@L@G[@]›@Tú@]¥@%Gü@FÎ@]@MÄ@JM@]¨@Rq@Sv@]œ@] @]¢@H¾@]ž@T—@]Ÿ@]¦@]§@%]¡@Næ@R©@HW@]³@K¢@RJ@]£@]¤@G£@M¡@]«@]±@]¯@O·@]·@]¬@%]­@]´@Kx@O¼@M®@TÐ@PÄ@Uu@]¶@Ií@T¡@PŽ@OX@Tà@On@NŠ@]°@%]²@Ms@]µ@]®@]©@]ª@Tú@JÂ@]Ã@]½@MÀ@FÂ@JÒ@]Ç@]¾@L“@]¼@%TF@]¿@]º@]¹@]Â@]»@U @]À@H‡@]¸@]Á@]Å@]Æ@Tº@]Ë@]É@NK@%]Î@U‰@]È@]Ê@]Ì@KÐ@P¾@]Ï@JÎ@]Ä@]Ô@]Ñ@]Ó@]Í@]Ð@S€@P~@%QÒ@U£@]Ò@]Ö@MÔ@PU@]â@]Õ@fX@]Û@Q‡@]Ý@]×@UP@]Ø@]Ù@]Ú@%]Þ@]Ü@UÑ@]ä@]à@]ß@R°@S\@]á@OÞ@R®@]ã@F[@]å@]ç@]æ@Sê@%]è@K–@]é@G…@Ke@Jõ@Ts@Tj@L¼@]ê@I}@OË@M­@Oî@]ë@]í@]î@%Ha@]ð@]ì@RÍ@]ï@Gˆ@I×@Rž@MÑ@]ò@P™@]ó@SŒ@]ñ@]÷@U‡@]ø@%]ö@]ô@]õ@Sî@]ú@TO@]ù@G_@Mæ@Sî@Gï@Iƒ@]ü@]ý@Lo@^B@T@%h…@^C@KÝ@]û@^A@Tê@SW@]þ@GB@T @^D@LL@U@^G@^E@F@^F@%R@^H@Oh@N¿@T»@^J@GÕ@^L@^M@^K@IÕ@Nø@^P@^S@Jy@^N@^Q@%PG@^R@Wû@^U@Lf@TÎ@^O@^V@Tæ@W@^T@^Y@^W@^X@^Z@^[@JÙ@%^\@^]@S|@^^@L‡@^`@^_@^a@^b@S©@EÌ@P–@^c@^d@RÝ@Ly@^e@%^f@^g@Gg@J½@^h@Uo@UÝ@^i@Sü@Is@U·@J¯@Pš@UÄ@H{@FR@QX@%^j@F¢@TŠ@^k@ST@^l@^n@^m@^o@^p@OÜ@^q@^r@JÅ@L§@^s@^t@%HR@^y@^u@NZ@^v@^x@^w@^z@QÛ@^{@Rt@NÏ@PÜ@^}@^~@^|@J{@%JÛ@Lž@^€@Rþ@^@Po@TÖ@^‚@^„@^@JQ@^ƒ@^…@N@^†@^‹@^ˆ@%IÅ@OÐ@OE@^‰@^‡@PO@SÝ@^Œ@LZ@N•@QŸ@^Ž@^@^@Oe@^’@^‘@%^“@Ma@^–@^”@^•@QË@^—@Ln@Gƒ@Eý@I±@Mé@NL@Jù@^š@^œ@^™@%^@Lš@^˜@^ž@S™@M]@^›@^¢@^Ÿ@^¥@K™@^¡@^ @L¹@Pf@^£@^¤@%^¨@^¦@F·@HÛ@^©@Eë@^§@P÷@N\@^¬@^ª@^­@^«@^®@^¯@TS@LØ@%R£@RŸ@^°@^²@^µ@^±@^´@Sñ@OR@^¶@K[@^³@PŒ@^¼@^¹@^»@^·@%^º@^¾@^¸@Qˆ@hƒ@^¿@RŒ@^½@PM@^Á@^À@^Â@^Ã@J¹@RI@^Ä@^Å@%^Æ@Nd@^Ç@TR@^È@IÂ@^É@^Ê@^Ë@^Ì@^Î@^Í@LÔ@^Ï@^Ð@^Ñ@^Ó@%^Ò@^Ô@^Ö@^Õ@^×@T•@^Ø@Sæ@KU@Kf@R§@^Ù@E™@EÀ@U×@^Ú@E¶@%MX@^Û@Xþ@Ec@F|@H @Ig@E|@We@EU@Fw@^Ü@^Ý@^á@^à@^ß@[|@%G®@^Þ@U@G‹@NÜ@G«@^ã@^â@Mr@P†@Iþ@Uš@^ä@Lð@Q´@^å@Rý@%H¹@^æ@^é@^ç@J©@NT@^è@^ë@PÝ@^ê@PÔ@^ì@^í@^î@^ð@^ï@N @%Qq@U°@L´@^ñ@^ò@^ó@^õ@^ô@PÎ@^ý@M—@^÷@^ù@^û@Tá@^ü@^ú@%QB@^ö@^ø@I¿@NJ@_A@^þ@_B@Q‚@Sý@UI@_C@LG@_E@Qt@_D@T¤@%_J@_L@_M@P‰@_K@_H@_F@_G@_I@_O@_N@RO@_P@_R@_S@_T@_U@%T¤@_Q@_W@_V@_X@K·@_\@_Y@_Z@TG@Sª@S~@_[@_]@_^@__@_b@%_`@_a@_c@_d@_e@_f@_g@Sš@FK@Fè@_h@FY@EK@_j@_i@_k@Eï@%J°@L»@_l@_m@R™@R¤@N@S–@_n@_o@_r@_p@_q@_s@IÚ@_t@_u@%hh@_v@_w@_x@MÇ@_y@Sº@PW@Qµ@Gt@_{@_}@_|@Me@HD@\É@_~@%K„@_@Iã@H@_€@S÷@_@Fu@P€@Ft@Fx@_ƒ@P‚@HG@_†@_…@_„@%R¼@M¢@ER@_‹@QÊ@FB@Nj@_‡@_‰@_Š@_ˆ@_Œ@_@N_@I¥@Gª@_Ž@%_@_@_“@Rl@Js@_”@J–@_‘@_’@_—@_–@_•@_™@_˜@_š@_œ@_›@%Ur@M°@R}@_@O›@_ž@_Ÿ@_£@_¡@_¢@_ @_¤@_¥@SP@_¦@Pí@_§@%FÁ@_¨@E°@UÉ@NM@J‚@_©@Q»@E€@_«@I[@_¬@_­@FÓ@LÃ@_°@_®@%ME@T´@RH@LÂ@J¾@Pß@_¯@_±@_²@Iv@_³@I„@Jï@Si@R¿@_´@_¶@%_¹@ON@_·@Q•@_º@SV@_µ@Q{@O±@RÒ@T[@_¸@_»@Mø@P}@_½@_¾@%_¼@Hz@_Ä@_Ã@Jb@_Å@_À@_Æ@_Á@Kœ@_¿@_Â@_É@_È@I´@_Ç@Hª@%_Ë@_Ê@Q°@_Ì@Lœ@_Í@Mð@_Î@Q¹@QL@_Ð@_Ï@_Ñ@HS@IX@Fc@_Ó@%SÒ@Q’@NØ@Oë@HŒ@U\@_Ø@LÜ@Se@_×@Lë@E¡@_Ö@_Ô@O‰@Iù@M¿@%Lq@US@RØ@_Ú@Pç@Mu@P®@O‡@_Û@R†@K§@E‹@_Ü@_ß@_Þ@Uª@O×@%_à@Tõ@Pú@US@_á@Sj@_â@U]@Tc@SÐ@Eñ@FÃ@_ã@FX@Hí@Mº@_ä@%Lp@Mƒ@Tµ@_ç@P@LŠ@_å@MŸ@_æ@Kß@Iu@Rd@_è@Gô@_é@GÄ@Gú@%P‡@_ê@_ë@MÏ@R–@_ì@Sf@F’@_í@Gj@_ï@_ð@M¾@OÇ@_î@OÕ@N”@%HÔ@_ñ@R¾@_ó@H‘@RT@P¸@P›@_ò@_õ@_ô@N˜@_ö@O\@_ø@K†@I†@%_ù@G@_ú@N‘@Jý@Qi@T™@_û@O°@Ké@_ü@_þ@`A@_ý@P¦@`B@Je@%Pª@I§@`C@`D@Už@`G@`F@`I@`H@`J@Rð@`K@EÝ@`L@`M@`O@`N@%`Q@`P@`R@`S@Iç@`T@fÁ@Gn@`U@`V@Tk@MP@`W@`X@QÈ@`Z@`[@%Hï@`\@Iq@`]@Eõ@T\@R‡@`^@TÕ@`b@QÏ@`a@``@`_@Iµ@Sç@`e@%OA@`f@Gà@Rô@OÙ@`h@F~@`c@`g@`d@In@`l@JÇ@M›@F§@K@`k@%`j@Rõ@`i@KE@K|@IÐ@FÉ@`m@T„@PH@SN@`s@`q@`r@`p@`n@`o@%U›@OQ@U¤@`w@`{@`z@Nà@LÌ@HC@`u@`|@`y@`x@`t@`‚@`v@Fò@%TÊ@Q@Jû@`€@P\@G¡@Qè@Iè@`@O¶@I¨@`~@`@`}@`ƒ@Hu@JØ@%`‡@`…@`„@TD@`Œ@`Ž@`†@`‰@`‹@`@OS@WŠ@`Š@`ˆ@Q|@TÊ@`’@%Kì@`@`@`‘@`”@`“@Q«@`•@Rp@OL@`–@`˜@`—@Mþ@Qò@`š@O™@%`™@`›@`œ@Lî@Rª@`@`ž@Fo@`Ÿ@Oð@Uç@N…@` @Hž@OÌ@SÉ@`¡@%L©@LK@MY@K÷@OÈ@Kû@`¥@`£@`¢@R«@KÔ@`§@`¤@`¦@`«@`ª@`©@%`¨@`¬@`®@Fl@Q¼@`°@`¯@Tq@Q`@`±@H„@`³@`´@T’@QŒ@QK@`²@%NÅ@`µ@`¶@`·@`¸@FÇ@RÂ@Hú@Qþ@FÛ@`º@G½@Kg@`¹@`½@Lù@Iâ@%Oµ@G¦@`¼@OG@Lx@F€@Ió@Oó@`»@GŸ@Hw@Lô@Jð@U’@`À@QH@Gh@%`Á@NY@`Ã@Lä@L½@`Â@Iô@Uc@F¹@`¾@`Å@`Ä@`¿@Fˆ@`É@`Ì@F¿@%`È@`Ð@`Æ@Pm@Lç@N÷@`Í@GW@`Ê@`Ë@H@Rh@`Ç@Jä@Jó@Iö@Tí@%`Ï@St@`Î@JJ@GË@Të@Pp@`Ü@`Ú@`Ø@`Ò@`×@Q£@H€@`Ñ@`Ù@`Ý@%HË@JS@MÉ@`Ó@`Ô@`Û@TÓ@T¦@`Ö@IÜ@H@`Õ@K—@S}@G“@H¥@J›@%`Þ@`á@`ß@F‡@`è@`à@`ã@J€@`ç@`â@HN@Lü@Uk@Nš@`æ@H`@`ä@%Kª@HY@`é@`î@`ê@`å@`ì@Ræ@Ok@`í@`ë@[Ì@U¨@N“@Iä@I÷@`ò@%`ù@`ô@`ø@`ö@`ï@`õ@`ó@Hf@GY@`÷@`ð@`ñ@Hh@Ss@RÚ@`ý@Hš@%QÔ@`û@`þ@aA@`ú@`ü@RÚ@`ñ@aB@aE@aD@Ss@Mš@Ki@aC@aG@aF@%aH@aJ@Uë@aK@Rx@aL@Q¿@aN@aM@Uú@Rs@aO@aP@aQ@aR@aS@Sœ@%P„@aT@aU@aV@aW@aX@TË@aY@Qn@aZ@a\@a[@a]@a^@a_@aa@a`@%ab@LN@Uï@FŒ@O‚@L™@Uy@U¥@ac@Z¥@ad@af@Mú@ae@ag@ah@JÑ@%ai@E}@aj@am@al@ak@an@ao@G±@U–@E˜@aq@ap@ar@at@au@as@%G@Oû@ax@ay@az@Mœ@Ji@Tù@a{@Oi@a|@a}@a~@U‹@T¶@a@a€@%Qö@Mµ@R @I…@G`@a@Fp@SÜ@a‚@Qæ@IŽ@aƒ@Iš@Oì@Tä@a„@a…@%a†@a‡@L«@N™@a‰@U¸@aˆ@a‹@aŠ@aŒ@Kµ@a@Ty@H»@aŽ@K‰@a@%a@SÊ@a“@a’@a‘@M¨@a”@H×@a•@a–@Sä@a—@a˜@a™@S¶@KA@JB@%U@NP@aš@Rg@Rj@a›@R’@LŒ@LÅ@S‚@I{@Ky@Lû@až@aœ@Pë@RÕ@%H¬@TQ@PN@Mö@a£@N›@J²@Rc@Rˆ@a¡@a¤@aŸ@a¢@P¶@Mc@Né@a @%a¦@a§@N«@Kã@a°@GO@Ht@PQ@Uì@Gã@Py@a¥@S^@M\@a¨@a©@L–@%aª@J´@L³@Ué@a­@a°@a¬@a«@RÄ@Mb@a¯@a®@RG@L¯@a´@a³@aµ@%QÎ@a²@K¤@a±@a¶@M¶@L @Ro@Rš@aº@a»@a·@a¸@a¹@QØ@a¿@a½@%Q‘@MŠ@P`@a¼@a¾@aÁ@Nö@aÂ@aÄ@Pv@aÀ@aÃ@aÊ@aÇ@aÆ@S_@aÈ@%aÉ@Tt@aÅ@aË@aÌ@aÍ@M½@aÎ@aÏ@aÐ@aÑ@aÒ@JG@SŠ@Qs@LÐ@EÃ@%M³@JH@Lj@aÓ@aÔ@J‰@aÕ@aÖ@a×@aØ@SX@Fj@Wx@bº@P”@aÙ@LX@%aÚ@aÛ@aÜ@N[@Lª@OÁ@O¸@Jc@K¸@aÝ@HŸ@aÞ@IV@aß@aá@TÛ@K‡@%S¬@aà@F{@aâ@Mü@T®@aã@aä@aå@aæ@aè@aç@LJ@aé@aê@aë@U´@%EÄ@aì@GÃ@MT@aí@SÅ@aî@Qš@aï@að@N½@Ir@aò@O{@JÝ@añ@aô@%TB@Oå@FÙ@Fƒ@IS@MÐ@aó@Nº@N]@PK@aù@UY@R×@J¸@bF@Sw@bC@%bA@a÷@aõ@aö@FÖ@J_@T°@MZ@Eî@aû@aú@aþ@bD@aý@aø@FF@aü@%Tz@KÓ@bB@bE@NÉ@bJ@Sö@bR@Pâ@bX@GL@bQ@bP@bK@T{@bI@bG@%Iw@M÷@bM@bL@bO@S³@HB@S³@Q_@bN@FÜ@Kb@bH@b_@bZ@K¡@Ià@%b]@b[@bb@T†@bc@b\@bY@b`@bW@bS@Qî@bU@ba@bV@bd@bT@T³@%RÉ@b^@bu@bn@GS@bg@F×@Ls@bh@LQ@Q€@bl@K¨@SÔ@bp@Qj@Té@%Kl@Qm@HÌ@bq@be@bt@bi@bv@bj@bk@T÷@bo@RÉ@bm@PÛ@br@T‚@%bf@bs@TØ@IJ@bw@Ku@O|@b…@b„@by@Gò@b‚@b~@Eù@UŸ@JY@Hß@%UG@bx@Pq@Nr@b@b|@Oy@Ql@b@bƒ@TN@PÙ@b{@b}@Pà@b€@bz@%Sø@O“@Oã@P•@RY@b‰@b“@b@I²@bŠ@Jº@b‡@bŒ@P¹@bˆ@b@L”@%b‘@Pƒ@b†@Om@b‹@bŽ@Oš@b’@b”@b@R{@Pˆ@Kô@b–@Q‹@b•@R½@%b@Ul@U{@bœ@b›@b—@b˜@Tš@bš@T¨@Sø@O¡@b™@N‹@F^@TÑ@b @%b¥@R÷@b¤@S¨@b¦@b§@Ue@bž@b©@T‘@b£@b¡@bŸ@b¢@PÞ@Tð@QÓ@%b¨@b°@b¶@b·@bª@J’@b´@b¬@b®@b¸@b­@b±@Lì@Q­@b²@bµ@b«@%O¿@b¯@Lñ@TZ@I˜@Fá@b³@Sù@b»@b¿@b½@O»@b¼@Ní@b¾@bÀ@bÁ@%bÄ@bÂ@Eh@bÃ@Oö@L•@Uâ@bÅ@Sí@P_@bÉ@T–@NÚ@L¿@bÆ@bÈ@bÇ@%\½@\¾@bË@bÊ@L¦@_‚@bÌ@bÍ@bÏ@J«@R`@Rû@bÑ@Or@RP@Uˆ@bÒ@%bÓ@KË@bÔ@Q¶@QD@Oª@bØ@bÚ@bÕ@O]@bÖ@U¢@b×@bÙ@bã@bÜ@bß@%bÛ@bÝ@bÞ@Oê@bà@SØ@Mù@bá@bä@U»@bé@bå@bè@UÂ@bæ@bç@Nf@%S¥@Ot@RN@bó@bï@U™@bí@NÍ@bî@bë@bì@bñ@bô@bò@bð@bê@TÜ@%bú@S¡@bø@bù@bõ@Rm@b÷@bö@Sè@R¡@bý@bþ@cI@SG@cB@cH@bû@%cF@cJ@QÃ@cC@cE@cG@cA@Nn@bü@cK@cD@HÂ@cN@cL@cU@cO@cW@%QÖ@cY@cQ@cR@cV@cM@Tô@cP@cS@cX@c\@Sè@cZ@c[@cc@cd@P@%QÆ@cb@U½@c^@ca@c]@c_@ce@cf@c`@R¡@ch@cg@SQ@ci@cj@ck@%cl@cm@KC@cn@co@Kˆ@E¤@cp@cq@Hl@K¥@cr@G€@M¥@cs@Kí@ct@%Jê@FÀ@cu@OT@cz@cx@Ré@cy@cw@J§@cv@c{@Oj@JT@c‚@c~@JW@%c}@c€@c|@c@cƒ@K@c@TÅ@c†@OZ@c…@TH@c„@I½@O`@c‡@cˆ@%H˜@I¤@c‰@Fø@cŠ@c‹@Ij@cŒ@OŠ@TM@c‘@c’@O¨@SI@c@OC@c@%c@E{@L@cŽ@c“@KQ@c—@c”@T^@Qº@c˜@QÚ@c–@c™@cš@c•@c›@%cž@c @c@cœ@cŸ@Pk@c¢@c¡@Tl@c¤@T¯@c£@c§@c¥@c¦@c¨@c©@%Mß@cª@c«@c¬@EX@FU@c­@Mò@Kú@c®@c¯@E»@Fû@c°@JP@Së@c±@%JL@c²@c´@NÐ@c³@H…@cµ@c¶@c·@H~@c¸@cº@c¹@c»@G}@c¼@S`@%c½@G·@LÑ@c¾@c¿@cÀ@Gš@OÄ@cÁ@EÉ@Pò@cÄ@IÒ@cÃ@cÅ@KÈ@cÂ@%J¶@G”@cÆ@cÇ@Pï@TÌ@cÈ@Jq@Eâ@Jš@K­@Lß@cÉ@cË@Mh@Of@Iº@%cÊ@cÎ@cÏ@Qv@Uã@cÍ@Oˆ@Iý@cÌ@N@QÁ@cÓ@Tû@IH@L°@PÓ@cÒ@%cÑ@QŽ@K_@GP@M@Mç@cÔ@cÐ@cÖ@c×@cÕ@N´@MŒ@Kv@J~@cÚ@O @%O¢@JË@cÝ@Hç@Fý@cÙ@cÞ@M‘@cÛ@cÜ@cß@cØ@IR@JO@Kƒ@IÖ@Uò@%Re@cá@F‰@cã@P²@Ic@Jè@cà@câ@KÁ@Q@Hó@cä@cò@Up@cñ@cí@%cê@cì@cë@cç@RF@cæ@N–@Nœ@Oœ@cè@cå@cï@cð@Gâ@U«@Oá@OM@%Tå@Us@Oâ@cô@có@Rù@c÷@cé@cö@cø@I|@cõ@Jn@M»@cù@M}@cý@%S@cþ@U¡@cú@M‡@dA@cû@dF@dB@dD@dC@dE@dG@Ju@dI@dH@NO@%dL@J×@dK@dM@dN@G@av@K{@dJ@IÛ@dO@dP@dQ@Qk@[ˆ@dR@dS@%Sþ@dU@dV@dW@dT@dX@E@dY@d[@dZ@J™@d\@FH@d]@d^@d_@d`@%LÏ@I”@da@Lh@SU@db@dc@U“@dd@de@df@dh@dg@di@Pd@dj@dk@%dm@dl@Iê@F¶@IÈ@I¯@Jñ@M£@Jë@J]@dp@I¡@KÒ@do@dq@Lb@Mï@%ds@dt@H@dv@It@Jô@FÐ@P{@dr@Hr@FA@du@Uø@KM@Pg@FP@dw@%Oý@dy@dx@Sž@P×@d{@Mî@O”@J­@OO@Gå@dz@Uf@O§@Fì@RÁ@d|@%d}@d@d€@N@d~@SZ@Ut@d@L|@d‚@U„@d„@dƒ@d†@d…@d‡@dˆ@%d‰@Fù@QQ@dŠ@SÌ@d‹@Jª@dŒ@QÉ@Pî@d@HÐ@d@Jx@Fß@QÞ@Lí@%Ua@Fú@d’@d‘@d@d˜@d–@d“@d•@d”@d—@MÂ@d›@LÍ@dœ@UË@d™@%dš@G„@P´@PÑ@d@dŸ@dž@d @L¨@M|@d£@d¡@d¢@d¤@Pü@d§@d¨@%d¦@d¥@U§@dª@d®@d«@d©@d¬@d­@d²@d¯@Sh@d±@d³@d°@dµ@Rö@%d´@d·@d¸@dº@d¹@d¶@d¼@d»@L¡@d¾@d½@d¿@dÀ@dÁ@dÂ@Gœ@PD@%SS@Sz@dÃ@dÄ@SS@dÆ@dÅ@dÇ@FS@dÈ@Mª@H—@dÉ@NU@dÊ@L±@GR@%dË@dÎ@K¦@dÍ@dÌ@H¦@dÏ@JZ@dÒ@Mn@dÐ@dÑ@dÔ@dÕ@Jh@dÓ@d×@%Q[@dÖ@G‡@dØ@dÙ@Nô@H·@U¦@dÚ@F“@dÜ@dÛ@dß@Pl@dÞ@Pþ@dÝ@%dá@dà@dâ@Tî@dã@dä@då@P©@Rá@dæ@dç@dè@M^@dé@Mt@dê@dë@%dí@dì@dî@aI@dï@Gß@Rå@HE@dð@EÕ@Gõ@HA@T~@Uß@IÍ@Ph@K©@%Fs@HÖ@dò@dô@dó@S]@dö@Nž@Iï@Sß@dõ@Jœ@d÷@NX@dú@dù@T©@%IÑ@KI@GD@Lr@dø@Kü@eD@eA@dý@KÚ@P»@dû@Q^@Hð@dü@eC@O³@%OÊ@Eã@S±@eB@HÍ@E¸@dþ@MÎ@GT@eE@Ow@JÓ@Fi@T…@eF@JÖ@eG@%U¬@eN@Tø@L÷@Lm@Iì@eM@J‹@F«@P]@H@eH@eJ@eK@eL@EP@F¤@%I¼@eO@eP@Ró@TU@eQ@Fã@TL@NÂ@h‚@eS@eR@IÌ@QC@TX@eT@eW@%Rn@eU@S[@H]@LÚ@Rk@eY@LÄ@e[@S{@eX@`E@M©@Q†@eZ@Pê@e\@%L’@HF@FÅ@Q¨@N¸@e^@e_@e`@M@I³@PR@En@ec@ed@Iž@ea@eb@%E•@Qb@L·@I•@EO@ee@eh@eg@ei@ek@QT@el@ej@Os@em@UH@R»@%Gó@U‘@GX@N|@en@eo@K®@ep@eq@er@P½@QI@et@es@M†@Që@H™@%ew@Q©@ev@eu@Qo@Qp@Sx@Qú@So@ex@P@e{@ey@P@ez@Qú@e}@%e|@PÂ@e~@e@e€@SF@S¿@My@RR@e@Gl@E£@Ei@Gµ@e‚@E†@e‡@%e…@Oô@eƒ@e„@JÌ@Iˆ@e†@eˆ@e‰@Lã@e@e@SJ@Kð@eŠ@eŒ@e‹@%eŽ@QÐ@e’@e@e•@Nc@S@e“@Ri@e”@e—@e‘@e˜@e–@E®@U¿@e¦@%e›@eŸ@e¤@ež@E×@eš@e @eœ@e§@e¡@e¢@e¥@e™@e£@e©@IÔ@S“@%N¨@e@O´@e¨@Hc@e¬@e­@Qƒ@GŒ@Lâ@HÀ@RK@L­@e¯@e±@e®@MÜ@%N€@e°@eª@e«@MH@e»@eº@e³@e·@TI@e½@e¹@eµ@e¶@e¼@RÀ@e´@%e²@Sc@Mo@U¾@HÁ@Qç@S”@eÂ@eÅ@F¡@eÉ@eÎ@UÒ@eÀ@S@Tï@eÇ@%eË@eÌ@eÈ@NW@eÃ@eÊ@eÍ@eÁ@KŽ@Sð@RW@Oæ@Rƒ@P±@H†@e¿@e¾@%eÏ@eÄ@Q÷@KH@UÓ@Tª@eÔ@eÕ@HÇ@R­@eÑ@Op@eÓ@eÐ@NE@eÒ@S½@%Ib@eÚ@Mp@Q—@Tþ@eØ@Tm@Sn@eÙ@L‰@e×@eÖ@eâ@eÝ@eÛ@eå@PA@%eÜ@eÞ@eá@eã@eä@J@eæ@eà@eß@eè@eì@eí@QÍ@eê@eé@LÈ@RÏ@%eç@eë@eï@eð@QV@eî@Sˆ@eñ@eò@eõ@eô@eö@NN@eó@RA@eø@e÷@%eû@eù@eú@eü@eþ@eý@fA@fD@fC@fE@fB@fF@Eƒ@Fª@fG@Qœ@fH@%K}@fI@FÍ@T_@MÙ@fJ@EÁ@fK@fL@fM@fN@fO@EÅ@Jé@T›@Qr@fQ@%fP@fR@Qw@fU@fT@fS@fV@fY@Sd@fW@f[@fZ@f]@f\@f^@KÌ@f_@%f`@fb@fa@G†@fc@fd@E‘@fe@ff@G¼@Oï@F®@Oè@fg@KŒ@fj@fi@%Iå@fh@H­@QW@fk@fl@Rr@fm@IØ@L„@Im@Oþ@fn@UÃ@fq@LÒ@fp@%Na@PÇ@J·@fo@Ia@Jl@G¿@K¹@F]@Lå@J“@fs@fr@I©@Nv@PZ@fv@%fw@fu@SÃ@G—@Kù@fy@N®@Là@fz@eV@f{@f@f~@f|@f}@f€@f@%UE@f‚@fƒ@OÚ@NÕ@Od@Q¤@Ep@GE@G @LM@Tw@f…@R·@R[@f„@JŠ@%f†@cT@fˆ@Qû@f‡@I—@IZ@IÝ@I»@R¥@O@J¼@Pi@KÖ@f‰@E‚@Gû@%fŠ@f‹@MÞ@fŒ@OK@fŽ@f@f’@f‘@f@f“@f@Mè@Nä@f”@NH@f•@%f–@KÆ@f—@[Ï@f˜@f™@fš@f›@f @fž@f@fœ@fŸ@f¡@f¢@f£@f¤@%FL@f¥@HÃ@FD@f¦@Há@f§@hR@F‘@f¨@f©@fª@J£@Sµ@f«@RÎ@Mñ@%f¬@f°@f®@f¯@TE@f­@Rw@f±@PL@f²@f³@Rç@f´@Qí@f·@f¶@fµ@%cü@T‹@f¸@f¹@fº@f»@f¼@f½@Nu@f¾@f¿@Oß@fÀ@HM@fÂ@Rü@Uw@%J\@LÙ@M[@IF@J—@G²@F°@TV@fÃ@MJ@S@UW@Qz@Uä@JÍ@fÄ@fÆ@%fÅ@N³@Gë@N³@Uv@fÇ@Pû@fÈ@S«@Jz@fÈ@QÜ@fÊ@Gþ@Gñ@TŽ@fÉ@%H¸@Jå@fË@LW@UÁ@UÁ@Fº@fÌ@Nî@fÍ@fÎ@fÏ@fÐ@fÒ@fÑ@Gç@fÓ@%fÔ@fÕ@fÖ@fØ@f×@fÙ@HŠ@fÚ@F¸@SÎ@fÜ@fÞ@fÛ@\Ê@Fµ@K£@RE@%J@MI@IW@fà@P¿@T¼@Iy@P§@U³@fâ@UK@fã@fä@fá@fè@fê@fç@%fé@få@Hb@fë@fì@fí@fî@fï@fñ@fð@fó@fõ@fò@fô@Rè@fö@QÕ@%I¾@f÷@fø@F½@fù@fú@K…@Fd@fû@fü@Rß@P¡@fý@Uå@Må@I¬@Lþ@%O…@Mõ@gD@Iü@S¾@gC@gA@gB@fþ@gG@gE@gF@gH@gI@gK@gJ@LÀ@%gL@gN@PX@gM@MÒ@H´@gO@SÚ@gP@N^@gQ@gV@gR@gT@gU@gS@gX@%gY@SÚ@gW@g[@LÕ@gZ@g\@g]@g`@g_@g^@ga@gb@J¥@gc@gd@Uœ@%ge@gf@RÅ@gg@gj@gh@gi@Eq@gk@gl@gm@gn@go@gp@gq@Lö@gs@%P@gt@gr@gv@gu@gw@gx@gy@gz@g{@g|@g}@g~@g@g€@g@g‚@%gƒ@g„@g…@g†@g‡@gˆ@JÈ@RË@P¨@gŠ@g‰@M´@g‹@gŒ@S‰@g@Mâ@%gŽ@Hî@Qô@g‘@g@g@g”@OŽ@g“@g•@R@g’@g–@g—@g˜@g™@gš@%UÎ@N·@S‘@Lé@g›@gœ@g @gŸ@g@g¡@OÆ@gž@g¢@g£@g¤@g¨@Oä@%PØ@g©@g¦@g¥@g§@Mx@UQ@g«@g¬@gª@g±@g­@gµ@g¶@g²@g¸@g´@%Uq@R“@g·@g³@g°@g¯@g®@g¼@g»@gº@Tn@g¹@UÈ@g½@g¿@SÕ@Qð@%T«@gÁ@gÀ@g¾@U`@SÆ@UL@gÂ@gÃ@gÄ@gÅ@gÆ@Gy@gÈ@M•@gÇ@gÉ@%gÊ@N¦@Kp@TÄ@gÌ@gÍ@Q¡@Tü@gË@Td@gÔ@gÓ@RÃ@gÒ@gÑ@gÏ@LT@%gÎ@Pº@gÐ@MÖ@gØ@gÖ@gÕ@g×@gÙ@gÚ@gß@gÞ@gÝ@Kç@gÛ@gÜ@Pý@%U~@gà@gä@QŠ@gå@gâ@gá@gæ@gã@SB@MŽ@gç@gè@gé@gê@På@gë@%Gz@gï@gð@gî@gí@gó@gì@gñ@gò@gö@Td@gõ@gø@gù@gú@Kñ@g÷@%Kz@P¯@gû@gþ@gü@gý@hA@hB@L}@hC@L}@hD@F—@hE@hF@hG@hH@%hJ@Qù@Qž@hI@Ló@hK@Q›@hL@Jà@S´@hN@hO@Ra@U_@hM@Ra@U_@%H§@hP@hQ@Nê@JÆ@hS@U®@Q§@hT@hU@hV@Fy@hW@^@M¼@QÝ@hX@%hZ@hY@h[@h\@h]@h^@h_@h`@ha@hb@hc@hd@he@hf@hg@Qª@O¯@%hi@PË@hj@hk@Lý@hl@hm@Qõ@hn@ho@hp@hq@hs@ht@hu@L€@hr@%hv@hw@hy@hx@h{@h|@hz@HÊ@h}@h~@_÷@h@iA@iB@iC@iD@iE@%iF@iG@iH@iI@iJ@iK@iL@iM@iN@iO@iP@iQ@iR@iS@iT@iU@iV@%iW@iX@iY@iZ@i[@i\@i]@i^@i_@i`@ia@ib@ic@id@ie@if@ig@%ih@ii@ij@ik@il@im@in@io@ip@iq@ir@is@it@iu@iv@iw@ix@%iy@iz@i{@i|@i}@i~@i@i€@i@i‚@iƒ@i„@i…@i†@i‡@iˆ@i‰@%iŠ@i‹@iŒ@i@iŽ@i@i@i‘@i’@i“@i”@i•@i–@i—@i˜@i™@iš@%i›@iœ@i@iž@iŸ@i @i¡@i¢@i£@i¤@i¥@i¦@i§@i¨@i©@iª@i«@%i¬@i­@i®@i¯@i°@i±@i²@i³@i´@iµ@i¶@i·@i¸@i¹@iº@i»@i¼@%i½@i¾@i¿@iÀ@iÁ@iÂ@iÃ@iÄ@iÅ@iÆ@iÇ@iÈ@iÉ@iÊ@iË@iÌ@iÍ@%iÎ@iÏ@iÐ@iÑ@iÒ@iÓ@iÔ@iÕ@iÖ@i×@iØ@iÙ@iÚ@iÛ@iÜ@iÝ@iÞ@%iß@ià@iá@iâ@iã@iä@iå@iæ@iç@iè@ié@iê@ië@iì@ií@iî@iï@%ið@iñ@iò@ió@iô@iõ@iö@i÷@iø@iù@iú@iû@iü@iý@iþ@jA@jB@%jC@jD@jE@jF@jG@jH@jI@jJ@jK@jL@jM@jN@jO@jP@jQ@jR@jS@%jT@jU@jV@jW@jX@jY@jZ@j[@j\@j]@j^@j_@j`@ja@jb@jc@jd@%je@jf@jg@jh@ji@jj@jk@jl@jm@jn@jo@jp@jq@jr@js@jt@ju@%jv@jw@jx@jy@jz@j{@j|@j}@j~@j@j€@j@j‚@jƒ@j„@j…@j†@%j‡@jˆ@j‰@jŠ@j‹@jŒ@j@jŽ@j@j@j‘@j’@j“@j”@j•@j–@j—@%j˜@j™@jš@j›@jœ@j@jž@jŸ@j @j¡@j¢@j£@j¤@j¥@j¦@j§@j¨@%j©@jª@j«@j¬@j­@j®@j¯@j°@j±@j²@j³@j´@jµ@j¶@j·@j¸@j¹@%jº@j»@j¼@j½@j¾@j¿@jÀ@jÁ@jÂ@jÃ@jÄ@jÅ@jÆ@jÇ@jÈ@jÉ@jÊ@%jË@jÌ@jÍ@jÎ@jÏ@jÐ@jÑ@jÒ@jÓ@jÔ@jÕ@jÖ@j×@jØ@jÙ@jÚ@jÛ@%jÜ@jÝ@jÞ@jß@jà@já@jâ@jã@jä@jå@jæ@jç@jè@jé@jê@jë@jì@%jí@jî@jï@jð@jñ@jò@jó@jô@jõ@jö@j÷@jø@jù@jú@jû@jü@jý@%jþ@kA@kB@kC@kD@kE@kF@kG@kH@kI@kJ@kK@kL@kM@kN@kO@kP@%kQ@kR@kS@kT@kU@kV@kW@kX@kY@kZ@k[@k\@k]@k^@k_@k`@ka@%kb@kc@kd@ke@kf@kg@kh@ki@kj@kk@kl@km@kn@ko@kp@kq@kr@%ks@kt@ku@kv@kw@kx@ky@kz@k{@k|@k}@k~@k@k€@k@k‚@kƒ@%k„@k…@k†@k‡@kˆ@k‰@kŠ@k‹@kŒ@k@kŽ@k@k@k‘@k’@k“@k”@%k•@k–@k—@k˜@k™@kš@k›@kœ@k@kž@kŸ@k @k¡@k¢@k£@k¤@k¥@%k¦@k§@k¨@k©@kª@k«@k¬@k­@k®@k¯@k°@k±@k²@k³@k´@kµ@k¶@%k·@k¸@k¹@kº@k»@k¼@k½@k¾@k¿@kÀ@kÁ@kÂ@kÃ@kÄ@kÅ@kÆ@kÇ@%kÈ@kÉ@kÊ@kË@kÌ@kÍ@kÎ@kÏ@kÐ@kÑ@kÒ@kÓ@kÔ@kÕ@kÖ@k×@kØ@%kÙ@kÚ@kÛ@kÜ@kÝ@kÞ@kß@kà@ká@kâ@kã@kä@kå@kæ@kç@kè@ké@%kê@kë@kì@kí@kî@kï@kð@kñ@kò@kó@kô@kõ@kö@k÷@kø@kù@kú@%kû@kü@ký@kþ@lA@lB@lC@lD@lE@lF@lG@lH@lI@lJ@lK@lL@lM@%lN@lO@lP@lQ@lR@lS@lT@lU@lV@lW@lX@lY@lZ@l[@l\@l]@l^@%l_@l`@la@lb@lc@ld@le@lf@lg@lh@li@lj@lk@ll@lm@ln@lo@%lp@lq@lr@ls@lt@lu@lv@lw@lx@ly@lz@l{@l|@l}@l~@l@l€@%l@l‚@lƒ@l„@l…@l†@l‡@lˆ@l‰@lŠ@l‹@lŒ@l@lŽ@l@l@l‘@%l’@l“@l”@l•@l–@l—@l˜@l™@lš@l›@lœ@l@lž@lŸ@l @l¡@l¢@%l£@l¤@l¥@l¦@l§@l¨@l©@lª@l«@l¬@l­@l®@l¯@l°@l±@l²@l³@%l´@lµ@l¶@l·@l¸@l¹@lº@l»@l¼@l½@l¾@l¿@lÀ@lÁ@lÂ@lÃ@lÄ@%lÅ@lÆ@lÇ@lÈ@lÉ@lÊ@lË@lÌ@lÍ@lÎ@lÏ@lÐ@lÑ@lÒ@lÓ@lÔ@lÕ@%lÖ@l×@lØ@lÙ@lÚ@lÛ@lÜ@lÝ@lÞ@lß@là@lá@lâ@lã@lä@lå@læ@%lç@lè@lé@lê@lë@lì@lí@lî@lï@lð@lñ@lò@ló@lô@lõ@lö@l÷@%lø@lù@lú@lû@lü@lý@lþ@mA@mB@mC@mD@mE@mF@mG@mH@mI@mJ@%mK@mL@mM@mN@mO@mP@mQ@mR@mS@mT@mU@mV@mW@mX@mY@mZ@m[@%m\@m]@m^@m_@m`@ma@mb@mc@md@me@mf@mg@mh@mi@mj@mk@ml@%mm@mn@mo@mp@mq@mr@ms@mt@mu@mv@mw@mx@my@mz@m{@m|@m}@%m~@m@m€@m@m‚@mƒ@m„@m…@m†@m‡@mˆ@m‰@mŠ@m‹@mŒ@m@mŽ@%m@m@m‘@m’@m“@m”@m•@m–@m—@m˜@m™@mš@m›@mœ@m@mž@mŸ@%m @m¡@m¢@m£@m¤@m¥@m¦@m§@m¨@m©@mª@m«@m¬@m­@m®@m¯@m°@%m±@m²@m³@m´@mµ@m¶@m·@m¸@m¹@mº@m»@m¼@m½@m¾@m¿@mÀ@mÁ@%mÂ@mÃ@mÄ@mÅ@mÆ@mÇ@mÈ@mÉ@mÊ@mË@mÌ@mÍ@mÎ@mÏ@mÐ@mÑ@mÒ@%mÓ@mÔ@mÕ@mÖ@m×@mØ@mÙ@mÚ@mÛ@mÜ@mÝ@mÞ@mß@mà@má@mâ@mã@%mä@må@mæ@mç@mè@mé@mê@më@mì@mí@mî@mï@mð@mñ@mò@mó@mô@%mõ@mö@m÷@mø@mù@mú@mû@mü@mý@mþ@nA@nB@nC@nD@nE@nF@nG@%nH@nI@nJ@nK@nL@nM@nN@nO@nP@nQ@nR@nS@nT@nU@nV@nW@nX@%nY@nZ@n[@n\@n]@n^@n_@n`@na@nb@nc@nd@ne@nf@ng@nh@ni@%nj@nk@nl@nm@nn@no@np@nq@nr@ns@nt@nu@nv@nw@nx@ny@nz@%n{@n|@n}@n~@n@n€@n@n‚@nƒ@n„@n…@n†@n‡@nˆ@n‰@nŠ@n‹@%nŒ@n@nŽ@n@n@n‘@n’@n“@n”@n•@n–@n—@n˜@n™@nš@n›@nœ@%n@nž@nŸ@n @n¡@n¢@n£@n¤@n¥@n¦@n§@n¨@n©@nª@n«@n¬@n­@%n®@n¯@n°@n±@n²@n³@n´@nµ@n¶@n·@n¸@n¹@nº@n»@n¼@n½@n¾@%n¿@nÀ@nÁ@nÂ@nÃ@nÄ@nÅ@nÆ@nÇ@nÈ@nÉ@nÊ@nË@nÌ@nÍ@nÎ@nÏ@%nÐ@nÑ@nÒ@nÓ@nÔ@nÕ@nÖ@n×@nØ@nÙ@nÚ@nÛ@nÜ@nÝ@nÞ@nß@nà@%ná@nâ@nã@nä@nå@næ@nç@nè@né@nê@në@nì@ní@nî@nï@nð@nñ@%nò@nó@nô@nõ@nö@n÷@nø@nù@nú@nû@nü@ný@nþ@oA@oB@oC@oD@%oE@oF@oG@oH@oI@oJ@oK@oL@oM@oN@oO@oP@oQ@oR@oS@oT@oU@%oV@oW@oX@oY@oZ@o[@o\@o]@o^@o_@o`@oa@ob@oc@od@oe@of@%og@oh@oi@oj@ok@ol@om@on@oo@op@oq@or@os@ot@ou@ov@ow@%ox@oy@oz@o{@o|@o}@o~@o@o€@o@o‚@oƒ@o„@o…@o†@o‡@oˆ@%o‰@oŠ@o‹@oŒ@o@oŽ@o@o@o‘@o’@o“@o”@o•@o–@o—@o˜@o™@%oš@o›@oœ@o@ož@oŸ@o @o¡@o¢@o£@o¤@o¥@o¦@o§@o¨@o©@oª@%o«@o¬@o­@o®@o¯@o°@o±@o²@o³@o´@oµ@o¶@o·@o¸@o¹@oº@o»@%o¼@o½@o¾@o¿@oÀ@oÁ@oÂ@oÃ@oÄ@oÅ@oÆ@oÇ@oÈ@oÉ@oÊ@oË@oÌ@%oÍ@oÎ@oÏ@oÐ@oÑ@oÒ@oÓ@oÔ@oÕ@oÖ@o×@oØ@oÙ@oÚ@oÛ@oÜ@oÝ@%oÞ@oß@oà@oá@oâ@oã@oä@oå@oæ@oç@oè@oé@oê@oë@oì@oí@oî@%oï@oð@oñ@oò@oó@oô@oõ@oö@o÷@oø@où@oú@oû@oü@oý@oþ@pA@%pB@pC@pD@pE@pF@pG@pH@pI@pJ@pK@pL@pM@pN@pO@pP@pQ@pR@%pS@pT@pU@pV@pW@pX@pY@pZ@p[@p\@p]@p^@p_@p`@pa@pb@pc@%pd@pe@pf@pg@ph@pi@pj@pk@pl@pm@pn@po@pp@pq@pr@ps@pt@%pu@pv@pw@px@py@pz@p{@p|@p}@p~@p@p€@p@p‚@pƒ@p„@p…@%p†@p‡@pˆ@p‰@pŠ@p‹@pŒ@p@pŽ@p@p@p‘@p’@p“@p”@p•@p–@%p—@p˜@p™@pš@p›@pœ@p@pž@pŸ@p @p¡@p¢@p£@p¤@p¥@p¦@p§@%p¨@p©@pª@p«@p¬@p­@p®@p¯@p°@p±@p²@p³@p´@pµ@p¶@p·@p¸@%p¹@pº@p»@p¼@p½@p¾@p¿@pÀ@pÁ@pÂ@pÃ@pÄ@pÅ@pÆ@pÇ@pÈ@pÉ@%pÊ@pË@pÌ@pÍ@pÎ@pÏ@pÐ@pÑ@pÒ@pÓ@pÔ@pÕ@pÖ@p×@pØ@pÙ@pÚ@%pÛ@pÜ@pÝ@pÞ@pß@pà@pá@pâ@pã@pä@på@pæ@pç@pè@pé@pê@pë@%pì@pí@pî@pï@pð@pñ@pò@pó@pô@põ@pö@p÷@pø@pù@pú@pû@pü@%pý@pþ@qA@qB@qC@qD@qE@qF@qG@qH@qI@qJ@qK@qL@qM@qN@qO@%qP@qQ@qR@qS@qT@qU@qV@qW@qX@qY@qZ@q[@q\@q]@q^@q_@q`@%qa@qb@qc@qd@qe@qf@qg@qh@qi@qj@qk@ql@qm@qn@qo@qp@qq@%qr@qs@qt@qu@qv@qw@qx@qy@qz@q{@q|@q}@q~@q@q€@q@q‚@%qƒ@q„@q…@q†@q‡@qˆ@q‰@qŠ@q‹@qŒ@q@qŽ@q@q@q‘@q’@q“@%q”@q•@q–@q—@q˜@q™@qš@q›@qœ@q@qž@qŸ@q @q¡@q¢@q£@q¤@%q¥@q¦@q§@q¨@q©@qª@q«@q¬@q­@q®@q¯@q°@q±@q²@q³@q´@qµ@%q¶@q·@q¸@q¹@qº@q»@q¼@q½@q¾@q¿@qÀ@qÁ@qÂ@qÃ@qÄ@qÅ@qÆ@%qÇ@qÈ@qÉ@qÊ@qË@qÌ@qÍ@qÎ@qÏ@qÐ@qÑ@qÒ@qÓ@qÔ@qÕ@qÖ@q×@%qØ@qÙ@qÚ@qÛ@qÜ@qÝ@qÞ@qß@qà@qá@qâ@qã@qä@qå@qæ@qç@qè@%qé@qê@që@qì@qí@qî@qï@qð@qñ@qò@qó@qô@qõ@qö@q÷@qø@qù@%qú@qû@qü@qý@qþ@rA@rB@rC@rD@rE@rF@rG@rH@rI@rJ@rK@rL@%rM@rN@rO@rP@rQ@rR@rS@rT@rU@rV@rW@rX@rY@rZ@r[@r\@r]@%r^@r_@r`@ra@rb@rc@rd@re@rf@rg@rh@ri@rj@rk@rl@rm@rn@%ro@rp@rq@rr@rs@rt@ru@rv@rw@rx@ry@rz@r{@r|@r}@r~@r@%r€@r@r‚@rƒ@r„@r…@r†@r‡@rˆ@r‰@rŠ@r‹@rŒ@r@rŽ@r@r@%r‘@r’@r“@r”@r•@r–@r—@r˜@r™@rš@r›@rœ@r@rž@rŸ@r @r¡@%r¢@r£@r¤@r¥@r¦@r§@r¨@r©@rª@r«@r¬@r­@r®@r¯@r°@r±@r²@%r³@r´@rµ@r¶@r·@r¸@r¹@rº@r»@r¼@r½@r¾@r¿@rÀ@rÁ@rÂ@rÃ@%rÄ@rÅ@rÆ@rÇ@rÈ@rÉ@rÊ@rË@rÌ@rÍ@rÎ@rÏ@rÐ@rÑ@rÒ@rÓ@rÔ@%rÕ@rÖ@r×@rØ@rÙ@rÚ@rÛ@rÜ@rÝ@rÞ@rß@rà@rá@râ@rã@rä@rå@%ræ@rç@rè@ré@rê@rë@rì@rí@rî@rï@rð@rñ@rò@ró@rô@rõ@rö@%r÷@rø@rù@rú@rû@rü@rý@rþ@sA@sB@sC@sD@sE@sF@sG@sH@sI@%sJ@sK@sL@sM@sN@sO@sP@sQ@sR@sS@sT@sU@sV@sW@sX@sY@sZ@%s[@s\@s]@s^@s_@s`@sa@sb@sc@sd@se@sf@sg@sh@si@sj@sk@%sl@sm@sn@so@sp@sq@sr@ss@st@su@sv@sw@sx@sy@sz@s{@s|@%s}@s~@s@s€@s@s‚@sƒ@s„@s…@s†@s‡@sˆ@s‰@sŠ@s‹@sŒ@s@%sŽ@s@s@s‘@s’@s“@s”@s•@s–@s—@s˜@s™@sš@s›@sœ@s@sž@%sŸ@s @s¡@s¢@s£@s¤@s¥@s¦@s§@s¨@s©@sª@s«@s¬@s­@s®@s¯@%s°@s±@s²@s³@s´@sµ@s¶@s·@s¸@s¹@sº@s»@s¼@s½@s¾@s¿@sÀ@%sÁ@sÂ@sÃ@sÄ@sÅ@sÆ@sÇ@sÈ@sÉ@sÊ@sË@sÌ@sÍ@sÎ@sÏ@sÐ@sÑ@%sÒ@sÓ@sÔ@sÕ@sÖ@s×@sØ@sÙ@sÚ@sÛ@sÜ@sÝ@sÞ@sß@sà@sá@sâ@%sã@sä@så@sæ@sç@sè@sé@sê@së@sì@sí@sî@sï@sð@sñ@sò@só@%sô@sõ@sö@s÷@sø@sù@sú@sû@sü@sý@sþ@tA@tB@tC@tD@tE@tF@%tG@tH@tI@tJ@tK@tL@tM@tN@tO@tP@tQ@tR@tS@tT@tU@tV@tW@%tX@tY@tZ@t[@t\@t]@t^@t_@t`@ta@tb@tc@td@te@tf@tg@th@%ti@tj@tk@tl@tm@tn@to@tp@tq@tr@ts@tt@tu@tv@tw@tx@ty@%tz@t{@t|@t}@t~@t@t€@t@t‚@tƒ@t„@t…@t†@t‡@tˆ@t‰@tŠ@%t‹@tŒ@t@tŽ@t@t@t‘@t’@t“@t”@t•@t–@t—@t˜@t™@tš@t›@%tœ@t@tž@tŸ@t @t¡@t¢@t£@t¤@t¥@t¦@t§@t¨@t©@tª@t«@t¬@%t­@t®@t¯@t°@t±@t²@t³@t´@tµ@t¶@t·@t¸@t¹@tº@t»@t¼@t½@%t¾@t¿@tÀ@tÁ@tÂ@tÃ@tÄ@tÅ@tÆ@tÇ@tÈ@tÉ@tÊ@tË@tÌ@tÍ@tÎ@%tÏ@tÐ@tÑ@tÒ@tÓ@tÔ@tÕ@tÖ@t×@tØ@tÙ@tÚ@tÛ@tÜ@tÝ@tÞ@tß@%tà@tá@tâ@tã@tä@tå@tæ@tç@tè@té@tê@të@tì@tí@tî@tï@tð@%tñ@tò@tó@tô@tõ@tö@t÷@tø@tù@tú@tû@tü@tý@tþ@uA@uB@uC@%uD@uE@uF@uG@uH@uI@uJ@uK@uL@uM@uN@uO@uP@uQ@uR@uS@uT@%uU@uV@uW@uX@uY@uZ@u[@u\@u]@u^@u_@u`@ua@ub@uc@ud@ue@%uf@ug@uh@ui@uj@uk@ul@um@un@uo@up@uq@ur@us@ut@uu@uv@%uw@ux@uy@uz@u{@u|@u}@u~@u@u€@u@u‚@uƒ@u„@u…@u†@u‡@%uˆ@u‰@uŠ@u‹@uŒ@u@uŽ@u@u@u‘@u’@u“@u”@u•@u–@u—@u˜@%u™@uš@u›@uœ@u@už@uŸ@u @u¡@u¢@u£@u¤@u¥@u¦@u§@u¨@u©@%uª@u«@u¬@u­@u®@u¯@u°@u±@u²@u³@u´@uµ@u¶@u·@u¸@u¹@uº@%u»@u¼@u½@u¾@u¿@uÀ@uÁ@uÂ@uÃ@uÄ@uÅ@uÆ@uÇ@uÈ@uÉ@uÊ@uË@%uÌ@uÍ@uÎ@uÏ@uÐ@uÑ@uÒ@uÓ@uÔ@uÕ@uÖ@u×@uØ@uÙ@uÚ@uÛ@uÜ@%uÝ@uÞ@uß@uà@uá@uâ@uã@uä@uå@uæ@uç@uè@ué@uê@uë@uì@uí@%uî@uï@uð@uñ@uò@uó@uô@uõ@uö@u÷@uø@uù@uú@uû@uü@uý@uþ@%vA@vB@vC@vD@vE@vF@vG@vH@vI@vJ@vK@vL@vM@vN@vO@vP@vQ@%vR@vS@vT@vU@vV@vW@vX@vY@vZ@v[@v\@v]@v^@v_@v`@va@vb@%vc@vd@ve@vf@vg@vh@vi@vj@vk@vl@vm@vn@vo@vp@vq@vr@vs@%vt@vu@vv@vw@vx@vy@vz@v{@v|@v}@v~@v@v€@v@v‚@vƒ@v„@%v…@v†@v‡@vˆ@v‰@vŠ@v‹@vŒ@v@vŽ@v@v@v‘@v’@v“@v”@v•@%v–@v—@v˜@v™@vš@v›@vœ@v@vž@vŸ@v @v¡@v¢@v£@v¤@v¥@v¦@%v§@v¨@v©@vª@v«@v¬@v­@v®@v¯@v°@v±@v²@v³@v´@vµ@v¶@v·@%v¸@v¹@vº@v»@v¼@v½@v¾@v¿@vÀ@vÁ@vÂ@vÃ@vÄ@vÅ@vÆ@vÇ@vÈ@%vÉ@vÊ@vË@vÌ@vÍ@vÎ@vÏ@vÐ@vÑ@vÒ@vÓ@vÔ@vÕ@vÖ@v×@vØ@vÙ@%vÚ@vÛ@vÜ@vÝ@vÞ@vß@và@vá@vâ@vã@vä@vå@væ@vç@vè@vé@vê@%vë@vì@ví@vî@vï@vð@vñ@vò@vó@vô@võ@vö@v÷@vø@vù@vú@vû@%vü@vý@vþ@wA@wB@wC@wD@wE@wF@wG@wH@wI@wJ@wK@wL@wM@wN@%wO@wP@wQ@wR@wS@wT@wU@wV@wW@wX@wY@wZ@w[@w\@w]@w^@w_@%w`@wa@wb@wc@wd@we@wf@wg@wh@wi@wj@wk@wl@wm@wn@wo@wp@%wq@wr@ws@wt@wu@wv@ww@wx@wy@wz@w{@w|@w}@w~@w@w€@w@%w‚@wƒ@w„@w…@w†@w‡@wˆ@w‰@wŠ@w‹@wŒ@w@wŽ@w@w@w‘@w’@%w“@w”@w•@w–@w—@w˜@w™@wš@w›@wœ@w@wž@wŸ@w @w¡@w¢@w£@%w¤@w¥@w¦@w§@w¨@w©@wª@w«@w¬@w­@w®@w¯@w°@w±@w²@w³@w´@%wµ@w¶@w·@w¸@w¹@wº@w»@w¼@w½@w¾@w¿@wÀ@wÁ@wÂ@wÃ@wÄ@wÅ@%wÆ@wÇ@wÈ@wÉ@wÊ@wË@wÌ@wÍ@wÎ@wÏ@wÐ@wÑ@wÒ@wÓ@wÔ@wÕ@wÖ@%w×@wØ@wÙ@wÚ@wÛ@wÜ@wÝ@wÞ@wß@wà@wá@wâ@wã@wä@wå@wæ@wç@%wè@wé@wê@wë@wì@wí@wî@wï@wð@wñ@wò@wó@wô@wõ@wö@w÷@wø@%wù@wú@wû@wü@wý@wþ@xA@xB@xC@xD@xE@xF@xG@xH@xI@xJ@xK@%xL@xM@xN@xO@xP@xQ@xR@xS@xT@xU@xV@xW@xX@xY@xZ@x[@x\@%x]@x^@x_@x`@xa@xb@xc@xd@xe@xf@xg@xh@xi@xj@xk@xl@xm@%xn@xo@xp@xq@xr@xs@xt@xu@xv@xw@xx@xy@xz@x{@x|@x}@x~@%x@x€@x@x‚@xƒ@x„@x…@x†@x‡@xˆ@x‰@xŠ@x‹@xŒ@x@xŽ@x@%x@x‘@x’@x“@x”@x•@x–@x—@x˜@x™@xš@x›@xœ@x@xž@xŸ@x @%x¡@x¢@x£@x¤@x¥@x¦@x§@x¨@x©@xª@x«@x¬@x­@x®@x¯@x°@x±@%x²@x³@x´@xµ@x¶@x·@x¸@x¹@xº@x»@x¼@x½@x¾@x¿@xÀ@xÁ@xÂ@%xÃ@xÄ@xÅ@xÆ@xÇ@xÈ@xÉ@xÊ@xË@xÌ@xÍ@xÎ@xÏ@xÐ@xÑ@xÒ@xÓ@%xÔ@xÕ@xÖ@x×@xØ@xÙ@xÚ@xÛ@xÜ@xÝ@xÞ@xß@xà@xá@xâ@xã@xä@%xå@xæ@xç@xè@xé@xê@xë@xì@xí@xî@xï@xð@xñ@xò@xó@xô@xõ@%xö@x÷@xø@xù@xú@xû@xü@xý@xþ@yA@yB@yC@yD@yE@yF@yG@yH@%yI@yJ@yK@yL@yM@yN@yO@yP@yQ@yR@yS@yT@yU@yV@yW@yX@yY@%yZ@y[@y\@y]@y^@y_@y`@ya@yb@yc@yd@ye@yf@yg@yh@yi@yj@%yk@yl@ym@yn@yo@yp@yq@yr@ys@yt@yu@yv@yw@yx@yy@yz@y{@%y|@y}@y~@y@y€@y@y‚@yƒ@y„@y…@y†@y‡@yˆ@y‰@yŠ@y‹@yŒ@%y@yŽ@y@y@y‘@y’@y“@y”@y•@y–@y—@y˜@y™@yš@y›@yœ@y@%yž@yŸ@y @y¡@y¢@y£@y¤@y¥@y¦@y§@y¨@y©@yª@y«@y¬@y­@y®@%y¯@y°@y±@y²@y³@y´@yµ@y¶@y·@y¸@y¹@yº@y»@y¼@y½@y¾@y¿@%yÀ@yÁ@yÂ@yÃ@yÄ@yÅ@yÆ@yÇ@yÈ@yÉ@yÊ@yË@yÌ@yÍ@yÎ@yÏ@yÐ@%yÑ@yÒ@yÓ@yÔ@yÕ@yÖ@y×@yØ@yÙ@yÚ@yÛ@yÜ@yÝ@yÞ@yß@yà@yá@%yâ@yã@yä@yå@yæ@yç@yè@yé@yê@yë@yì@yí@yî@yï@yð@yñ@yò@%yó@yô@yõ@yö@y÷@yø@yù@yú@yû@yü@yý@yþ@zA@zB@zC@zD@zE@%zF@zG@zH@zI@zJ@zK@zL@zM@zN@zO@zP@zQ@zR@zS@zT@zU@zV@%zW@zX@zY@zZ@z[@z\@z]@z^@z_@z`@za@zb@zc@zd@ze@zf@zg@%zh@zi@zj@zk@zl@zm@zn@zo@zp@zq@zr@zs@zt@zu@zv@zw@zx@%zy@zz@z{@z|@z}@z~@z@z€@z@z‚@zƒ@z„@z…@z†@z‡@zˆ@z‰@%zŠ@z‹@zŒ@z@zŽ@z@z@z‘@z’@z“@z”@z•@z–@z—@z˜@z™@zš@%z›@zœ@z@zž@zŸ@z @z¡@z¢@z£@z¤@z¥@z¦@z§@z¨@z©@zª@z«@%z¬@z­@z®@z¯@z°@z±@z²@z³@z´@zµ@z¶@z·@z¸@z¹@zº@z»@z¼@%z½@z¾@z¿@zÀ@zÁ@zÂ@zÃ@zÄ@zÅ@zÆ@zÇ@zÈ@zÉ@zÊ@zË@zÌ@zÍ@%zÎ@zÏ@zÐ@zÑ@zÒ@zÓ@zÔ@zÕ@zÖ@z×@zØ@zÙ@zÚ@zÛ@zÜ@zÝ@zÞ@%zß@zà@zá@zâ@zã@zä@zå@zæ@zç@zè@zé@zê@zë@zì@zí@zî@zï@%zð@zñ@zò@zó@zô@zõ@zö@z÷@zø@zù@zú@zû@zü@zý@zþ@{A@{B@%{C@{D@{E@{F@{G@{H@{I@{J@{K@{L@{M@{N@{O@{P@{Q@{R@{S@%{T@{U@{V@{W@{X@{Y@{Z@{[@{\@{]@{^@{_@{`@{a@{b@{c@{d@%{e@{f@{g@{h@{i@{j@{k@{l@{m@{n@{o@{p@{q@{r@{s@{t@{u@%{v@{w@{x@{y@{z@{{@{|@{}@{~@{@{€@{@{‚@{ƒ@{„@{…@{†@%{‡@{ˆ@{‰@{Š@{‹@{Œ@{@{Ž@{@{@{‘@{’@{“@{”@{•@{–@{—@%{˜@{™@{š@{›@{œ@{@{ž@{Ÿ@{ @{¡@{¢@{£@{¤@{¥@{¦@{§@{¨@%{©@{ª@{«@{¬@{­@{®@{¯@{°@{±@{²@{³@{´@{µ@{¶@{·@{¸@{¹@%{º@{»@{¼@{½@{¾@{¿@{À@{Á@{Â@{Ã@{Ä@{Å@{Æ@{Ç@{È@{É@{Ê@%{Ë@{Ì@{Í@{Î@{Ï@{Ð@{Ñ@{Ò@{Ó@{Ô@{Õ@{Ö@{×@{Ø@{Ù@{Ú@{Û@%{Ü@{Ý@{Þ@{ß@{à@{á@{â@{ã@{ä@{å@{æ@{ç@{è@{é@{ê@{ë@{ì@%{í@{î@{ï@{ð@{ñ@{ò@{ó@{ô@{õ@{ö@{÷@{ø@{ù@{ú@{û@{ü@{ý@%{þ@|A@|B@|C@|D@|E@|F@|G@|H@|I@|J@|K@|L@|M@|N@|O@|P@%|Q@|R@|S@|T@|U@|V@|W@|X@|Y@|Z@|[@|\@|]@|^@|_@|`@|a@%|b@|c@|d@|e@|f@|g@|h@|i@|j@|k@|l@|m@|n@|o@|p@|q@|r@%|s@|t@|u@|v@|w@|x@|y@|z@|{@||@|}@|~@|@|€@|@|‚@|ƒ@%|„@|…@|†@|‡@|ˆ@|‰@|Š@|‹@|Œ@|@|Ž@|@|@|‘@|’@|“@|”@%|•@|–@|—@|˜@|™@|š@|›@|œ@|@|ž@|Ÿ@| @|¡@|¢@|£@|¤@|¥@%|¦@|§@|¨@|©@|ª@|«@|¬@|­@|®@|¯@|°@|±@|²@|³@|´@|µ@|¶@%|·@|¸@|¹@|º@|»@|¼@|½@|¾@|¿@|À@|Á@|Â@|Ã@|Ä@|Å@|Æ@|Ç@%|È@|É@|Ê@|Ë@|Ì@|Í@|Î@|Ï@|Ð@|Ñ@|Ò@|Ó@|Ô@|Õ@|Ö@|×@|Ø@%|Ù@|Ú@|Û@|Ü@|Ý@|Þ@|ß@|à@|á@|â@|ã@|ä@|å@|æ@|ç@|è@|é@%|ê@|ë@|ì@|í@|î@|ï@|ð@|ñ@|ò@|ó@|ô@|õ@|ö@|÷@|ø@|ù@|ú@%|û@|ü@|ý@|þ@}A@}B@}C@}D@}E@}F@}G@}H@}I@}J@}K@}L@}M@%}N@}O@}P@}Q@}R@}S@}T@}U@}V@}W@}X@}Y@}Z@}[@}\@}]@}^@%}_@}`@}a@}b@}c@}d@}e@}f@}g@}h@}i@}j@}k@}l@}m@}n@}o@%}p@}q@}r@}s@}t@}u@}v@}w@}x@}y@}z@}{@}|@}}@}~@}@}€@%}@}‚@}ƒ@}„@}…@}†@}‡@}ˆ@}‰@}Š@}‹@}Œ@}@}Ž@}@}@}‘@%}’@}“@}”@}•@}–@}—@}˜@}™@}š@}›@}œ@}@}ž@}Ÿ@} @}¡@}¢@%}£@}¤@}¥@}¦@}§@}¨@}©@}ª@}«@}¬@}­@}®@}¯@}°@}±@}²@}³@%}´@}µ@}¶@}·@}¸@}¹@}º@}»@}¼@}½@}¾@}¿@}À@}Á@}Â@}Ã@}Ä@%}Å@}Æ@}Ç@}È@}É@}Ê@}Ë@}Ì@}Í@}Î@}Ï@}Ð@}Ñ@}Ò@}Ó@}Ô@}Õ@%}Ö@}×@}Ø@}Ù@}Ú@}Û@}Ü@}Ý@}Þ@}ß@}à@}á@}â@}ã@}ä@}å@}æ@%}ç@}è@}é@}ê@}ë@}ì@}í@}î@}ï@}ð@}ñ@}ò@}ó@}ô@}õ@}ö@}÷@%}ø@}ù@}ú@}û@}ü@}ý@}þ@~A@~B@~C@~D@~E@~F@~G@~H@~I@~J@%~K@~L@~M@~N@~O@~P@~Q@~R@~S@~T@~U@~V@~W@~X@~Y@~Z@~[@%~\@~]@~^@~_@~`@~a@~b@~c@~d@~e@~f@~g@~h@~i@~j@~k@~l@%~m@~n@~o@~p@~q@~r@~s@~t@~u@~v@~w@~x@~y@~z@~{@~|@~}@%~~@~@~€@~@~‚@~ƒ@~„@~…@~†@~‡@~ˆ@~‰@~Š@~‹@~Œ@~@~Ž@%~@~@~‘@~’@~“@~”@~•@~–@~—@~˜@~™@~š@~›@~œ@~@~ž@~Ÿ@%~ @~¡@~¢@~£@~¤@~¥@~¦@~§@~¨@~©@~ª@~«@~¬@~­@~®@~¯@~°@%~±@~²@~³@~´@~µ@~¶@~·@~¸@~¹@~º@~»@~¼@~½@~¾@~¿@~À@~Á@%~Â@~Ã@~Ä@~Å@~Æ@~Ç@~È@~É@~Ê@~Ë@~Ì@~Í@~Î@~Ï@~Ð@~Ñ@~Ò@%~Ó@~Ô@~Õ@~Ö@~×@~Ø@~Ù@~Ú@~Û@~Ü@~Ý@~Þ@~ß@~à@~á@~â@~ã@%~ä@~å@~æ@~ç@~è@~é@~ê@~ë@~ì@~í@~î@~ï@~ð@~ñ@~ò@~ó@~ô@%~õ@~ö@~÷@~ø@~ù@~ú@~û@~ü@~ý@~þ@A@B@C@D@E@F@G@%H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@%Y@Z@[@\@]@^@_@`@a@b@c@d@e@f@g@h@i@%j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@%{@|@}@~@@€@@‚@ƒ@„@…@†@‡@ˆ@‰@Š@‹@%Œ@@Ž@@@‘@’@“@”@•@–@—@˜@™@š@›@œ@%@ž@Ÿ@ @¡@¢@£@¤@¥@¦@§@¨@©@ª@«@¬@­@%®@¯@°@±@²@³@´@µ@¶@·@¸@¹@º@»@¼@½@¾@%¿@À@Á@Â@Ã@Ä@Å@Æ@Ç@È@É@Ê@Ë@Ì@Í@Î@Ï@%Ð@Ñ@Ò@Ó@Ô@Õ@Ö@×@Ø@Ù@Ú@Û@Ü@Ý@Þ@ß@à@%á@â@ã@ä@å@æ@ç@è@é@ê@ë@ì@í@î@ï@ð@ñ@%ò@ó@ô@õ@ö@÷@ø@ù@ú@û@ü@ý@þ@Dn@[É@ft@WŽ@%Xw@X‚@Y€@[®@\f@\x@^I@^Š@_z@_Ò@_Õ@_Ù@_Ý@`Y@`­@aw@b¹@%bÎ@bâ@cî@dŽ@dñ@eI@ef@e¸@eÆ@fx@fÝ@fß@fæ@gô@BZ@B@B{@%Bà@Bl@BP@B}@BM@B]@B\@BN@Bk@B`@BK@Ba@Bð@Bñ@Bò@Bó@Bô@%Bõ@Bö@B÷@Bø@Bù@Bz@B^@BL@B~@Bn@Bo@B|@BÁ@BÂ@BÃ@BÄ@BÅ@%BÆ@BÇ@BÈ@BÉ@BÑ@BÒ@BÓ@BÔ@BÕ@BÖ@B×@BØ@BÙ@Bâ@Bã@Bä@Bå@%Bæ@Bç@Bè@Bé@DD@Cà@DE@Dp@Bm@By@B@B‚@Bƒ@B„@B…@B†@B‡@%Bˆ@B‰@B‘@B’@B“@B”@B•@B–@B—@B˜@B™@B¢@B£@B¤@B¥@B¦@B§@%B¨@B©@BÀ@BO@BÐ@C¡@CJ@BJ@B_@B¡@Bj@B[@% \ No newline at end of file +@@0@1@@3@4@5@6@@8@%9@;@@@>@ÿ@?@?@J@±@?@²@?@?@?@_@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@ @?@?@?@?@?@?@?@?@%?@?@?@?@?@?@?@?@?@B@C@D@E@F@G@H@I@%Q@R@S@T@U@V@W@X@Y@b@c@d@e@f@g@h@i@%p@q@r@s@t@u@v@w@x@Š@‹@Œ@@Ž@@š@›@%œ@@ž@Ÿ@ª@«@¬@®@¯@³@´@µ@¶@·@¸@¹@º@%»@¼@¾@¿@?@?@?@?@?@?@?@%Bj@Dj@D`@Dí@DK@DP@%Cy@Dz@D{@Aa@Ab@Ac@Ad@Ae@Af@Ag@Ah@Ai@Aj@Ak@Al@Am@An@%Ao@Ap@Aq@Ar@As@At@Au@Av@Aw@Ax@AA@AB@AC@AD@AE@AF@AG@%AH@AI@AJ@AK@AL@AM@AN@AO@AP@AQ@AR@AS@AT@AU@AV@AW@AX@%AÆ@AÀ@AÁ@AÂ@AÃ@AÄ@AÅ@AÇ@AÈ@AÉ@AÊ@AË@AÌ@AÍ@AÎ@AÏ@AÐ@%AÑ@AÒ@AÓ@AÔ@AÕ@AÖ@A×@AØ@AÙ@AÚ@AÛ@AÜ@AÝ@AÞ@Aß@Aà@A€@%A@A‚@Aƒ@A„@A…@A‡@Aˆ@A‰@AŠ@A‹@AŒ@A@AŽ@A@A@A‘@A’@%A“@A”@A•@A–@A—@A˜@A™@Aš@A›@Aœ@A@Až@AŸ@A @A†@DZ@DJ@%DJ@D|@Da@Dq@Db@Dr@Cw@Cx@D~@D@Cs@Dî@Dï@Dk@DN@Dn@Do@%Cr@Añ@Aò@Aó@Aô@Aõ@Aö@A÷@Aø@Aù@Aú@A±@A²@A³@A´@Aµ@A¶@%A·@A¸@A¹@Aº@Dñ@Dò@Dð@Dó@Cn@Co@Cp@CN@Cq@CO@Cd@Ce@B`@%C_@Ca@DM@CK@D|@Cl@Cm@Ck@Cj@Cb@Cc@Dh@Dx@C`@C\@DL@C[@%Dg@Dw@C]@C^@Ch@Ci@Cf@Cg@CL@CM@C|@C·@C}@C¸@C~@C¹@C@%Cá@C±@Cã@C°@Câ@C²@Cî@Cé@Cä@C´@Cð@Cë@Cæ@C³@Cê@Cï@Cå@%Cµ@Cì@Cñ@Cç@C¶@Cí@Cò@Cè@Dê@Dé@Dã@Dâ@Dì@Dë@Dè@Dç@Dà@%Dä@Dá@Cz@Dæ@Då@Dy@Di@Cv@Cu@Ct@@@@CD@CA@D[@D]@D^@D_@%Dd@Dt@De@Du@CB@CC@DB@DC@Df@Dv@Dl@D}@Dc@Ds@C¡@DG@D@%DH@D‚@DI@Dƒ@DQ@D„@DR@D…@D†@DÀ@D‡@DÁ@Dˆ@DÂ@D‰@DÃ@DŠ@%DÄ@DŒ@DÅ@D@DÆ@DŽ@DÇ@D@DÈ@D@DÉ@D‘@DÊ@D’@DË@DV@D“@%DÌ@D”@DÍ@D•@DÎ@D–@D—@D˜@D™@Dš@D@DÏ@DÕ@Dž@DÐ@DÖ@DŸ@%DÑ@D×@D¢@DÒ@DØ@D£@DÓ@DÙ@D¤@D¥@D¦@D§@D¨@DS@D©@DT@Dª@%DU@D¬@D­@D®@D¯@Dº@D»@DW@D¼@DÚ@DÛ@DF@D½@C¾@C¿@DÜ@DÝ@%CG@C@CH@C‚@CI@Cƒ@CQ@C„@CR@C…@C†@CÀ@C‡@CÁ@Cˆ@CÂ@C‰@%CÃ@CŠ@CÄ@CŒ@CÅ@C@CÆ@CŽ@CÇ@C@CÈ@C@CÉ@C‘@CÊ@C’@CË@%CV@C“@CÌ@C”@CÍ@C•@CÎ@C–@C—@C˜@C™@Cš@C@CÏ@CÕ@Cž@CÐ@%CÖ@CŸ@CÑ@C×@C¢@CÒ@CØ@C£@CÓ@CÙ@C¤@C¥@C¦@C§@C¨@CS@C©@%CT@Cª@CU@C¬@C­@C®@C¯@Cº@C»@CW@C¼@CÚ@CÛ@CF@C½@CÔ@CY@%CZ@CE@CX@CÜ@CÝ@Dm@EA@KÎ@EG@EM@IÓ@EC@E^@E_@F¯@G‰@VB@%Mì@O—@VC@F›@Wu@MV@PÅ@Ob@Hƒ@H|@VD@VE@E\@VF@L¸@VG@Fz@%H«@Gb@TÈ@VH@VI@KŸ@EŠ@EØ@U©@T¥@Ol@bÐ@VJ@IG@VK@K½@EI@%Nµ@GI@VL@K¿@J˜@Ip@GÀ@VM@VN@K±@GÂ@H–@VO@EÎ@EB@VP@I@%Kt@EE@Em@Kä@Pè@UÜ@Hg@VR@Qg@VS@LÎ@VT@GŽ@O@Oú@K¬@Ks@%Eu@NR@Iœ@VU@VV@VW@E“@SÙ@Gv@V\@VZ@V[@P…@Eà@HK@VY@VX@%Kå@Te@Hµ@GU@V^@G]@H¢@D\@V_@Va@V]@Eš@IÃ@Fö@V`@Mq@Mí@%Hi@H²@SA@JU@Vb@Ve@GÒ@Vf@Vc@E²@M™@NŸ@Jƒ@Pö@J@E½@Vd@%HÙ@I¦@Vh@IÉ@TJ@Fô@Vj@PŠ@K¼@Ta@Nß@Nþ@Vl@GÈ@H¤@Fà@Ev@%Læ@F–@Gp@Vn@Vk@IÁ@Vg@Vo@E”@Vi@Vm@Vy@V|@Vz@Hv@K”@Qâ@%Vw@Tb@H¶@O˜@V}@Vr@Vq@JF@OÂ@Vs@O@Vp@V{@V~@Vv@Vt@H¼@%Jž@Rì@GZ@Vx@Vu@S¹@Sã@OŒ@U|@KL@HQ@Jj@TÇ@R”@F`@V†@V€@%V…@Vƒ@V@N—@V@V„@V‚@Eª@SÄ@Rì@E¥@KJ@V‡@Vˆ@FÞ@V–@Lá@%M±@Qø@Pù@Ng@V•@V”@V@V™@EÖ@Iú@JÄ@V¡@V—@Kj@VŒ@SC@L®@%V‰@V˜@JÐ@V@V‘@Ui@H}@VŽ@Rñ@V‹@V’@V@MQ@V“@Où@Oc@Rú@%VŠ@V¤@Vš@V¢@V›@Vž@Mû@PI@V@Vœ@V @VŸ@Np@F@V¥@V£@TÒ@%IC@O•@PÃ@V¦@PY@V§@Vª@Nç@OÃ@V¨@Pœ@F¬@V©@LC@TÚ@V­@V°@%V«@KX@L[@JC@V±@OÉ@V®@V¯@Hì@Kº@U­@J»@RÔ@Vµ@M‚@V³@V·@%V´@N„@V¶@V¸@V²@Vº@V¹@Ux@IÊ@V¼@V½@EN@V»@To@VÀ@V¿@VÁ@%R@V¾@J¢@VÂ@GÚ@T½@VÄ@VÃ@VÆ@VÅ@VÇ@VÈ@L‘@F•@Kè@HÉ@Mó@%UZ@G¢@Ež@VÉ@Gž@VÊ@KV@PP@FŸ@VË@VÌ@IK@Q¾@VÍ@VÎ@Fe@F±@%VÏ@VÐ@EH@F»@EF@VÑ@G³@FI@Og@G¯@GÉ@Hô@VÒ@VÓ@EŽ@FE@VÖ@%N¡@VÕ@Hë@V×@a@VØ@O@VÙ@VÚ@VÛ@R~@HÄ@VÜ@N{@Vß@VÝ@Tg@%VÞ@Hx@Và@Vá@Vâ@KÞ@Væ@Vä@Vå@Vã@PÉ@Vç@QF@Hü@Vé@Vè@RÜ@%Vê@O€@Vë@Uù@SD@Kæ@Ww@Vì@h„@NÙ@Ví@Má@Hæ@UŠ@Vî@Tž@Vï@%Vð@Vñ@Q¬@Vò@Qì@PÏ@Pæ@E›@K¶@Vó@LP@OD@Vô@E´@Ge@K›@L×@%Võ@Tã@LR@Vö@V÷@K´@GK@I\@FÝ@Vø@E¼@Vù@Vú@LÝ@Vû@FÄ@HÏ@%Kk@Vü@KÀ@Kõ@Sy@Vý@GM@J@Vþ@Q®@E¯@WA@WC@Q™@IÇ@T@WB@%LÓ@Gf@T@WH@WE@KN@M…@WD@GÖ@WF@WG@Ká@WJ@WI@UÖ@Ið@WL@%Q…@WK@WN@WM@U€@E÷@WO@Hp@EŸ@Nh@WP@Fq@Jd@TÆ@WQ@WR@_ª@%M’@H©@WT@Ix@WS@Uj@WV@WU@T±@Nï@Fœ@HÎ@WW@SÖ@Eä@S’@Kš@%Fí@WX@Eµ@WY@Já@W\@Gî@WZ@IŸ@W[@L~@Iz@W]@W^@W_@W`@Tp@%Qé@R—@Wa@O[@NË@J¨@Wb@Wc@Wd@Wf@Wh@Wg@Wi@E@EZ@TW@Wj@%Q·@Nk@MM@Wl@Wk@Uí@Wm@Wn@Wo@Wp@OÑ@ET@J‡@Pñ@Wq@EJ@EL@%Wr@Ws@NG@Eß@Wt@G@Wv@S­@Jò@I–@G×@EY@Hã@Eö@QÀ@Wy@Iî@%SÛ@Wz@W{@L‚@G™@K‘@W|@Km@J¤@Lõ@W}@Ny@W~@Sâ@W@SR@W€@%W@OU@IB@Et@W‚@W„@Wƒ@Qx@Sg@S·@W…@W†@W‡@LŽ@Wˆ@JÊ@HÒ@%W‰@Hõ@P¥@H\@FÔ@Kq@Gù@G‘@O¥@F¦@HL@Põ@U²@W‹@WŒ@Q”@Sõ@%Eˆ@EÔ@L‹@W‘@Oq@NA@MÕ@O†@W’@W@GÆ@Gx@PB@GÙ@HZ@OY@Hâ@%Eð@W“@W”@Uê@Gº@E @E~@SÓ@U¼@Fm@Eó@Q¯@PÆ@N²@F¥@GÏ@W@%Pz@Sá@LO@Wœ@IË@W—@W˜@Wš@W›@K˜@IÄ@Så@W™@W•@Gö@W–@KP@%Ps@OV@Jî@IT@Wž@P°@W¢@H¡@T@W¥@W£@G@W @Wª@W¤@W§@Jö@%I°@W¨@W«@W­@W®@OP@Ez@W¡@WŸ@W¬@W¦@W©@W²@W¼@W´@W¹@W½@%Wº@Wµ@W±@LÞ@Sé@W³@W°@R±@W¾@Nù@EÐ@W»@W¶@W¯@W¸@Jk@W·@%FË@WÇ@W¿@WÁ@Uh@Uð@WÆ@WÅ@GG@T|@WÄ@WÀ@LÛ@Q¸@Ov@WÂ@K«@%WÃ@TÔ@WÌ@Kà@MC@WÒ@WÑ@WÈ@Tx@WÉ@Sƒ@WÎ@F¾@WË@Fä@Gä@WÏ@%WÐ@WÍ@WÓ@TÔ@WÊ@WØ@WÝ@WÙ@WÕ@Wß@F³@WÞ@Wá@RS@WÖ@UX@WÚ@%WÔ@Rµ@EÑ@Tu@WÛ@W×@OÓ@Wâ@Wà@Qh@Mm@L_@WÜ@N¹@HÓ@Wå@Wã@%XX@Wè@R¢@Wæ@Wä@K^@Wç@Wë@Wé@Wî@Wí@Pc@G~@Wê@Wì@Tì@Pó@%Wï@RÊ@Wø@PÊ@Wó@T@Wò@Wô@R›@Pb@Wð@Wñ@T}@Wö@Eü@Wú@Wõ@%Wù@Nm@Uñ@U‚@Wþ@W÷@UØ@XA@Wý@Wü@T}@XB@Q@XC@XD@XF@XE@%XI@XL@XJ@XH@XK@XG@Q@XM@XO@XN@XP@VÔ@Pe@ED@F©@JI@Gð@%XQ@KD@Jú@GÁ@XR@J”@E@XS@Rf@SÏ@XT@XV@XU@Q½@XW@OI@Gá@%Tç@XZ@XY@X[@F„@X\@G‚@GÍ@Iæ@EÂ@QÑ@X]@X_@Xa@Eì@I®@LU@%X^@Xb@N@Nó@X`@Xe@S¦@Xc@QÄ@S˜@II@Xf@KÉ@Xd@Xg@Fæ@Xh@%Xi@Tf@GÎ@Xj@Xm@Xl@SÍ@Xk@Xq@Xn@Xo@Xs@Xp@N¬@EÛ@Xt@Xu@%Xr@Xv@Mô@Hé@Q~@Xy@OH@MW@M¬@Fñ@F£@F@I@Jç@Sq@Xx@Xz@%S°@X{@S§@X|@Ka@O¬@NS@P¤@I¸@EÙ@Tö@J|@X€@SŸ@Kë@PS@X}@%NÆ@X@LË@Hj@Rø@Oo@FW@SÁ@O^@X~@GC@O^@Xƒ@X†@M‰@X„@Ry@%J•@X…@N¾@FM@QP@XŠ@X‡@Jü@Xˆ@X‹@XŒ@R‰@X‰@X@XŽ@UR@Tˆ@%K•@X@NŽ@NÈ@Q–@X‘@X@U¹@X’@X”@X“@X–@X•@X—@X˜@X™@F}@%QO@LŸ@Xš@Il@N°@Gu@X›@Xœ@Pw@X@Xž@Ru@XŸ@Go@X @X¡@I~@%X¢@JÃ@F”@RÈ@TÝ@Eþ@X£@HÈ@K‹@X¥@E[@FŠ@E«@Es@X¦@X§@G’@%IA@X¨@QG@X©@Xª@Rò@Mi@Eæ@M²@Q@LS@X¬@Ld@X­@R„@X«@Uƒ@%X¯@X®@X°@X±@X´@X³@X²@Få@Xµ@NÊ@X·@N»@X¶@NÝ@F™@M@X¸@%Fž@X¹@Kø@Q¢@UM@PC@Xº@S•@SÑ@Jf@X»@X¼@X½@X¾@Mž@Pì@S@%X¿@KÜ@XÀ@I£@S¯@XÁ@LÁ@I@Tœ@Sò@Oñ@HO@XÃ@XÄ@Q„@RU@UÞ@%XÂ@UŒ@J³@Qy@R¹@KB@Le@Uz@XÊ@XÇ@KT@XÉ@XÈ@XÆ@RL@XÅ@TŸ@%Pµ@XÎ@XÏ@T˜@XË@Pø@NÌ@XÍ@Jw@XÐ@Io@XÑ@XÌ@TT@M€@XÒ@HU@%XÓ@XØ@XÔ@N‰@X×@Sà@XÖ@NÃ@XÕ@XÝ@XÚ@Ug@XÙ@XÛ@XÜ@XÞ@Xß@%O‹@Xá@Xà@Xâ@Mä@Xä@Rê@Uè@Xã@Xå@Xæ@Xé@Xç@Xè@Ed@Xê@KÙ@%Xë@Xì@Hò@JA@RX@Xî@Oò@Eô@Oƒ@Jì@N¯@Xï@E¾@Xð@L^@Xñ@Y[@%Xò@Xó@Xô@Xõ@Xö@X÷@Ho@FÕ@Fð@E¨@RM@HÅ@Lu@FÈ@Q\@GÝ@I¢@%Md@Eç@P«@M‹@IM@Eí@JÞ@I@G¸@Oz@Xø@E’@NÔ@Ih@Px@Rï@F†@%Xù@H‰@H‚@Xü@Oé@Xú@Iß@J„@JV@Xû@Xý@E¬@YA@K@Uô@RD@YB@%Gø@KY@YC@K“@R¸@YF@YE@YG@Qü@O©@\~@I‡@YH@YD@Lz@YI@YJ@%UV@YK@K`@F @FV@F²@Mv@Iû@IŠ@YL@IY@YM@YN@Q‰@Lï@M_@YO@%H®@E]@HJ@YP@SÀ@Hq@YQ@YR@YS@S®@YT@h€@Kî@YU@Q]@Lk@IÎ@%J†@O¹@EÈ@LÆ@H‹@YV@H^@YW@M”@M§@Eé@Uº@YX@TC@YZ@T²@YY@%HÝ@TC@Gm@Sû@UÀ@UÀ@JŽ@L¢@Y\@Y]@OÝ@Ee@Y^@Y_@Y`@GJ@RZ@%Ya@Er@Yg@T¹@E¿@Yc@PÕ@Rb@MF@Ye@Yf@GH@Yh@Yd@Yj@Yb@Yi@%Yk@Yl@O–@Q³@O@Ym@Yr@Yq@J¬@Hþ@Yp@Eo@Yo@Pr@Yn@L@Ys@%E@Yw@QM@Yt@Pt@Tñ@Y|@Y{@Yz@Yv@Yu@Yy@Yx@O_@Y„@Yƒ@Y}@%Y‚@IŒ@Y~@Y@Y@Pž@Y…@Y‡@NÓ@Y†@Yˆ@Y‹@YŠ@Y‰@GÑ@YŒ@Y@%YŽ@Y@Y@Y‘@Y’@Y“@Y•@Lè@Y”@O„@Y–@IÏ@R@Y—@Y™@Y˜@Qß@%Yš@Eg@GA@MG@Lg@Ej@H[@L£@JR@Y›@I‹@G­@JK@Jæ@N}@Yœ@SË@%H“@NF@J}@ES@Gk@Ou@Y@Jµ@Y @QÇ@YŸ@Yž@Y¡@Hœ@R¯@JD@KS@%I`@I‚@MÅ@Y¢@T¾@Fï@L…@Y¥@Y¤@Y£@J^@Y¦@Ik@Y§@Y©@LÊ@Y¨@%Tƒ@HÞ@Yª@N@Y«@Jo@E@E`@Y¬@Y­@E©@HÚ@Y®@P¢@M¯@R_@KW@%Y¯@K’@E·@HP@U@Jí@MO@Kd@UO@HT@QZ@EQ@Y°@EÞ@H±@Eø@Hà@%Në@PÁ@Fš@L]@Y±@Y²@KÇ@Y³@NÛ@N§@Yµ@Y´@T­@Sl@Y·@Y¸@Y¶@%U¯@Ub@Yº@Y¹@Pé@Y»@Y¼@Y½@Y¾@Y¿@YÀ@YÁ@GÐ@P[@RÖ@Ff@K¯@%Ud@TK@QÙ@KG@YÂ@T¿@YÃ@PÍ@YÄ@VA@VQ@F@Pá@YÅ@Kc@Qå@FÚ@%YÆ@T¬@EÓ@U—@L›@YÇ@Gæ@NB@Sk@YÈ@YÉ@YÊ@Kn@YË@Hº@FÒ@YÌ@%Rà@JÔ@YÍ@SÇ@YÎ@S…@YÏ@YÐ@YÑ@F_@YÒ@YÓ@YÔ@YÕ@YÖ@Y×@F@%Eá@YØ@MÍ@QY@N†@Nˆ@Rœ@Id@I^@YÙ@YÚ@I]@Gr@YÝ@Lê@Ja@YÜ@%YÛ@N`@H£@Yà@Yß@YÞ@I‘@Eå@P³@Yá@Ll@Hû@Gè@Yä@Yâ@Yã@Yå@%F˜@Yæ@Jp@Nõ@Yç@K]@FT@Lt@Yè@Hø@Yé@Uà@Fç@GÊ@P—@K×@Yê@%Fa@LE@N£@H•@Yð@Yñ@FO@Yì@L`@Yï@Yî@J®@Yí@Yë@PV@Yò@Y÷@%Yý@Yõ@LÖ@Yú@Nð@Yô@Yù@PŸ@F­@P@Yó@GÌ@Yü@Fn@TÞ@Yö@Nq@%Yû@UB@Yø@Yþ@ZB@RV@ZL@ZI@ZH@KÊ@ZJ@KÕ@GÇ@R˜@ZP@ZA@ZD@%ZG@ZC@U”@ZK@ZM@NÎ@S¸@L@ZE@ZO@ZN@IN@K°@S„@FC@ZF@ZR@%ZS@ZU@ZQ@Ti@ZW@Z\@Mã@UD@ZZ@P‘@ZX@ZY@ZT@ZV@J±@MØ@Më@%Hs@Z[@KÍ@Ie@L@Rv@S£@Zd@UT@Z^@QE@Zb@H_@Zc@Ne@Nx@Za@%Ze@Zf@T@N×@Z_@Oà@Z`@Z]@Kh@UJ@Pn@T¸@Zs@Zh@H³@Zn@Zk@%Zl@Tr@Zo@Zr@Zm@R‚@Zp@Zj@SÈ@P˜@Zt@Zu@Gc@Zv@Zi@R²@EÆ@%G÷@Zg@Zq@Z{@Zz@Z€@Z~@Z@Zy@Z@Z„@Z|@Qã@Z…@Z†@Zw@L¾@%Z}@Hý@SŽ@Zx@Jv@Z’@Rã@ZŠ@Z‹@ZŒ@Zƒ@Z‘@MÛ@MÓ@Z‚@N¶@RŠ@%Z@LI@Z@O­@Z@Z‡@ZŽ@Z“@H¨@Z‰@Sô@P|@Zˆ@Z™@OJ@U[@Zš@%Z˜@Z–@Z”@Z•@UÏ@Oü@SÂ@Qu@Z›@Z—@Zœ@G¾@Nl@Z£@Q¥@Z¡@Z¢@%N¤@Z @ZŸ@Zž@Z¤@Z@Z¦@Nò@Z¨@Z§@QS@Z©@Z«@Zª@MÆ@Z­@Z¯@%Z¬@Z°@Z®@Z±@Z²@Z³@Qa@T`@Z´@Q@Eº@IÞ@M @Zµ@Z¶@M@U•@%Z·@dn@Z¸@TÙ@Z¹@Gd@Zº@Z»@O’@Z¼@Z½@Z¾@P’@EÏ@LD@GÜ@EŒ@%Z¿@MÊ@e]@P­@EË@Iñ@ZÀ@Gê@I@UÕ@ZÃ@ZÁ@ZÄ@ZÂ@ZÅ@T·@Li@%Mz@Lv@ZÆ@ZÊ@LH@H÷@ZÇ@ZÍ@NÀ@ZÈ@Nã@Mf@ZÉ@ZË@ZÎ@GQ@ZÌ@%Jg@I@ZÜ@J…@N~@ZÚ@O¦@ZÓ@L†@K@Qà@ZÑ@Iá@MS@ZÙ@J¡@ZÔ@%ZÛ@ZÕ@ZÝ@ZØ@SE@Oº@ZÒ@S¢@ZÐ@Oa@KÛ@Z×@ZÏ@PE@R\@Ký@ZÖ@%Nâ@Mw@Hå@OÅ@Nå@Zß@Zä@Zà@P@Zå@Ož@Uµ@M×@Zæ@FØ@Zâ@G¶@%Zã@T‰@ZÞ@OÛ@K‚@U±@Zá@O@T@Hö@S‡@R¨@Zé@UU@S @U}@Zè@%Zê@Zç@LA@UF@MÝ@R…@K³@Zõ@Zô@NÖ@T“@Zï@M@OÀ@TÀ@Zí@MÃ@%La@Zò@Nì@Zì@Zñ@Lú@Zë@MD@Jã@Zó@Uæ@KO@K@Zð@G¨@L¬@HÕ@%UÐ@J`@Zî@UA@MÁ@TÍ@Zö@T£@Z÷@Zù@Ný@[B@Zú@Zý@KÏ@I¹@Zþ@%Lò@LF@Iª@M`@Zü@Zø@Kò@JÕ@Zû@[A@O~@[D@KØ@[K@[E@T£@[L@%[I@[H@[F@[J@MÈ@R@[C@[G@NI@P£@NŒ@[M@TÍ@MË@[P@[N@HÑ@%[O@[Q@Uõ@Qï@Jt@[Z@SÞ@[W@[U@SH@[S@UÛ@Nz@[X@[Y@Qá@Nb@%Lw@Sr@NÇ@[R@[V@[[@QN@[b@[^@[_@I›@[T@[]@[`@[a@[\@[e@%[f@UC@[g@OÖ@[d@OÍ@[h@[c@[k@[i@[j@[l@[n@Uö@[m@[r@[o@%[p@[q@[r@[t@[s@R@[u@[v@G{@[w@[x@[z@[y@[{@H@KÅ@H¯@%EÇ@J÷@[}@[€@[~@FG@L\@[‚@[@KŠ@[@G¥@[ƒ@Q±@OÏ@JÉ@Iò@%G°@FÌ@[„@G|@Kó@IQ@[…@[†@[‡@EÊ@Xí@FŽ@Q@GÛ@K€@Rä@Nƒ@%FN@[‰@KÑ@[Š@U@TÏ@QA@QÂ@[‹@Nü@I‰@N¥@E‡@[Œ@EÍ@M¤@Hˆ@%[@[@[@JÏ@[Ž@M{@[‘@JÜ@[’@M«@[“@Qe@[•@[”@Kw@Eb@M@%L{@Mj@Fé@Mg@Gì@[–@O£@[œ@[—@[™@[›@Oç@Fþ@[@RŽ@FÑ@E¦@%Tè@Gé@LY@[˜@[£@[¡@G©@G¬@[¤@Fb@U@Hè@E³@[ @K»@Rë@[¢@%[Ÿ@Q“@OŸ@L˜@[ž@RQ@FQ@H°@[¥@[¦@K²@Qê@TÃ@[¨@[«@[­@[©@%OÎ@[¬@[ª@[§@Um@P @Q²@L¶@Iø@I“@[°@[¯@G•@Jø@F¨@Lƒ@[±@%[³@OF@[²@NÑ@O«@O¾@Ml@Kâ@[µ@[´@[·@[¶@LÇ@PÌ@P“@Jþ@[¸@%L²@[¿@RC@[¾@[½@[»@[º@[¹@LV@[¼@[À@QR@[Á@Kþ@R¦@QÌ@[Â@%[Ã@[Ä@I¶@N¼@Jm@[Å@[Æ@G@NÒ@[Ç@S—@W@I_@Qf@KÃ@Fõ@V¬@%Ea@F…@KÄ@GÔ@[È@Tý@O¤@Uó@[Ê@Hn@G»@G\@[Ë@F‹@[Í@[Î@El@%IÆ@GF@Ef@Hù@[Ð@MB@N¢@[Ò@[Ó@[Ô@M–@Pð@[Ñ@SO@[Õ@Fh@NQ@%PÐ@F¼@EV@TÁ@Pô@[×@R]@[Ö@KK@T€@G^@Q¦@R‘@[Ù@Fv@[Ø@[Þ@%P‹@Lc@[Ü@EW@[š@[à@J¦@R€@Tß@Ex@F´@[Û@R^@[Ú@[ß@Tò@Jâ@%Ox@E¢@IÙ@G¹@Fr@OÒ@[â@RÐ@[á@[Ý@Pa@TÉ@[æ@Nè@[ä@[é@[ò@%[ã@[ð@UÍ@J@[ô@RÙ@[ñ@I€@PJ@NÁ@H›@Mê@OØ@Ná@[í@Tó@[î@%[ë@[ê@[è@[ç@[ï@[å@Kê@Fê@G§@Qñ@Gs@PT@JÁ@[ó@RÑ@GÓ@Eú@%Qñ@Pã@MÌ@G›@[õ@H¿@RB@RÞ@HV@Râ@[ú@UÚ@Kž@Fg@GÞ@Mà@[ø@%PÖ@I«@JÚ@[ù@[ö@Hñ@[÷@[û@IÀ@Hy@[ì@Sm@SK@[ý@Gq@Mˆ@Qó@%[ü@PF@\K@Nw@\A@\D@\B@ND@\H@G˜@[þ@[þ@\E@PÚ@\G@RÌ@S¼@%N’@\C@RÆ@P¬@X¤@RÓ@HX@\F@Qä@F‚@SY@Sa@\L@I­@\J@\M@\I@%N±@\`@S†@UÊ@\P@Nñ@\V@\_@KZ@\W@\Y@TÂ@\R@Kï@N©@\^@\T@%\]@\X@E@\[@Su@T”@U¶@Th@\O@\\@O÷@\Q@Mý@\U@GÅ@K @\N@%\Z@Oí@Sp@Qc@Hm@\c@\a@\d@Sú@\S@\e@\b@\q@T§@\i@Rí@\o@%Lº@Q×@R•@\k@UÅ@\p@SL@Tâ@\s@\r@Jß@R|@M“@\n@\l@T¢@Ek@%Sï@O®@R³@\m@I·@\h@\j@\g@Rº@Ga@\t@\u@LB@KR@Ië@Tv@UÇ@%\†@\y@M~@\…@\„@S@QJ@\€@\v@S²@\‚@\|@\w@\z@\ƒ@M¹@\@%G–@Nú@RÛ@\}@TŒ@\{@HH@h@\@\‡@\@\@\‰@\”@\’@\Ž@\@%K\@M·@\Œ@\Š@S»@\•@IO@\@\—@\™@\“@S‹@If@\‹@\‘@S›@Hd@%\–@\˜@HÜ@Eò@Ko@\ˆ@\š@U…@\Ÿ@\§@FÏ@Ni@K¾@\œ@\¦@\¡@\¥@%E‰@KÂ@\£@Ey@UÔ@\¢@\¤@\›@\¨@\©@\ @\¯@O²@Oõ@\¬@\«@Uî@%\ª@\°@MU@\ž@\­@\®@\²@\±@T]@\¶@\µ@\³@\·@\´@R‹@\º@U†@%\»@M¦@\¸@Sb@\¹@\¼@QÅ@\¿@\Â@Rî@NÞ@\À@\Á@\Ã@\Ä@U÷@\Å@%Lµ@E—@K@J @Kö@\Ç@\Æ@\È@Q}@Lø@Nû@\Ì@\Ë@\Í@F÷@T‡@\Î@%MN@\Ð@\Ï@\Ñ@\Ò@\Ó@HØ@Ew@ML@E±@GØ@UŽ@JŸ@Hä@IU@\Ô@\Õ@%I™@\Ö@\×@\Ù@\Ø@OB@S¤@He@I’@\Ú@\Ü@Ns@\Û@\Ý@\Þ@\ß@\à@%\á@\â@\ã@\ä@TY@Gí@\å@Ié@PÀ@\æ@HI@X@J[@\ç@\è@Ii@Iõ@%L—@\é@GN@\ê@S×@Fâ@\ë@\í@\ì@\ï@\î@\ð@HŽ@GV@\ñ@\ò@E¹@%\ó@\õ@\ô@Eœ@L¤@Eû@Un@\ö@SM@M„@I @P^@Pj@\ø@NÄ@N‚@\ù@%U^@\÷@E­@Eè@\ú@]E@R´@\þ@PÒ@PÈ@]F@G¤@IL@]D@]B@\û@UÙ@%\ý@L@U˜@\ü@]H@]G@Oø@Gý@N­@]A@]C@Pu@E…@Sì@]M@]P@FZ@%Nª@F\@]R@E„@FÆ@]K@]Q@No@JX@]I@]L@Fî@M¸@Qý@T×@FJ@UÆ@%]U@]N@]S@]O@N‡@FÊ@MK@NV@ID@]V@]T@Fó@]J@OW@]X@EÚ@]^@%]]@JN@R¶@TP@M˜@]W@EÜ@P·@OÔ@]Z@Kr@]\@R¬@]Y@P¼@G´@][@%Jr@Fü@LÉ@F@]f@]d@Eê@]_@]c@Fk@Fë@J@UÌ@JŒ@]b@K~@E§@%MA@]e@]j@]`@Hk@O}@]g@]a@]h@]k@MÚ@]i@UP@]r@O‘@JE@]o@%]s@Nt@Jˆ@]|@]u@]q@RÇ@]x@]t@J¿@]{@]‚@Uá@]~@]w@L¥@]@%]p@]y@]ƒ@UN@]v@]„@Gw@]@H”@Hê@KF@]z@]l@]}@J‘@]€@E–@%TA@Gi@JÀ@]m@H’@Q˜@Qd@]‡@Pä@GŠ@]™@]’@Rz@EÒ@]Œ@]˜@NC@%Q @]“@IP@]@IE@]…@]n@HÆ@]š@]Š@]–@]•@]‹@]”@Lˆ@]‘@]—@%MR@QU@Só@]Ž@]‰@O½@]@]†@H½@]ˆ@]@Mk@L@G[@]›@Tú@]¥@%Gü@FÎ@]@MÄ@JM@]¨@Rq@Sv@]œ@] @]¢@H¾@]ž@T—@]Ÿ@]¦@]§@%]¡@Næ@R©@HW@]³@K¢@RJ@]£@]¤@G£@M¡@]«@]±@]¯@O·@]·@]¬@%]­@]´@Kx@O¼@M®@TÐ@PÄ@Uu@]¶@Ií@T¡@PŽ@OX@Tà@On@NŠ@]°@%]²@Ms@]µ@]®@]©@]ª@Tú@JÂ@]Ã@]½@MÀ@FÂ@JÒ@]Ç@]¾@L“@]¼@%TF@]¿@]º@]¹@]Â@]»@U @]À@H‡@]¸@]Á@]Å@]Æ@Tº@]Ë@]É@NK@%]Î@U‰@]È@]Ê@]Ì@KÐ@P¾@]Ï@JÎ@]Ä@]Ô@]Ñ@]Ó@]Í@]Ð@S€@P~@%QÒ@U£@]Ò@]Ö@MÔ@PU@]â@]Õ@fX@]Û@Q‡@]Ý@]×@UP@]Ø@]Ù@]Ú@%]Þ@]Ü@UÑ@]ä@]à@]ß@R°@S\@]á@OÞ@R®@]ã@F[@]å@]ç@]æ@Sê@%]è@K–@]é@G…@Ke@Jõ@Ts@Tj@L¼@]ê@I}@OË@M­@Oî@]ë@]í@]î@%Ha@]ð@]ì@RÍ@]ï@Gˆ@I×@Rž@MÑ@]ò@P™@]ó@SŒ@]ñ@]÷@U‡@]ø@%]ö@]ô@]õ@Sî@]ú@TO@]ù@G_@Mæ@Sî@Gï@Iƒ@]ü@]ý@Lo@^B@T@%h…@^C@KÝ@]û@^A@Tê@SW@]þ@GB@T @^D@LL@U@^G@^E@F@^F@%R@^H@Oh@N¿@T»@^J@GÕ@^L@^M@^K@IÕ@Nø@^P@^S@Jy@^N@^Q@%PG@^R@Wû@^U@Lf@TÎ@^O@^V@Tæ@W@^T@^Y@^W@^X@^Z@^[@JÙ@%^\@^]@S|@^^@L‡@^`@^_@^a@^b@S©@EÌ@P–@^c@^d@RÝ@Ly@^e@%^f@^g@Gg@J½@^h@Uo@UÝ@^i@Sü@Is@U·@J¯@Pš@UÄ@H{@FR@QX@%^j@F¢@TŠ@^k@ST@^l@^n@^m@^o@^p@OÜ@^q@^r@JÅ@L§@^s@^t@%HR@^y@^u@NZ@^v@^x@^w@^z@QÛ@^{@Rt@NÏ@PÜ@^}@^~@^|@J{@%JÛ@Lž@^€@Rþ@^@Po@TÖ@^‚@^„@^@JQ@^ƒ@^…@N@^†@^‹@^ˆ@%IÅ@OÐ@OE@^‰@^‡@PO@SÝ@^Œ@LZ@N•@QŸ@^Ž@^@^@Oe@^’@^‘@%^“@Ma@^–@^”@^•@QË@^—@Ln@Gƒ@Eý@I±@Mé@NL@Jù@^š@^œ@^™@%^@Lš@^˜@^ž@S™@M]@^›@^¢@^Ÿ@^¥@K™@^¡@^ @L¹@Pf@^£@^¤@%^¨@^¦@F·@HÛ@^©@Eë@^§@P÷@N\@^¬@^ª@^­@^«@^®@^¯@TS@LØ@%R£@RŸ@^°@^²@^µ@^±@^´@Sñ@OR@^¶@K[@^³@PŒ@^¼@^¹@^»@^·@%^º@^¾@^¸@Qˆ@hƒ@^¿@RŒ@^½@PM@^Á@^À@^Â@^Ã@J¹@RI@^Ä@^Å@%^Æ@Nd@^Ç@TR@^È@IÂ@^É@^Ê@^Ë@^Ì@^Î@^Í@LÔ@^Ï@^Ð@^Ñ@^Ó@%^Ò@^Ô@^Ö@^Õ@^×@T•@^Ø@Sæ@KU@Kf@R§@^Ù@E™@EÀ@U×@^Ú@E¶@%MX@^Û@Xþ@Ec@F|@H @Ig@E|@We@EU@Fw@^Ü@^Ý@^á@^à@^ß@[|@%G®@^Þ@U@G‹@NÜ@G«@^ã@^â@Mr@P†@Iþ@Uš@^ä@Lð@Q´@^å@Rý@%H¹@^æ@^é@^ç@J©@NT@^è@^ë@PÝ@^ê@PÔ@^ì@^í@^î@^ð@^ï@N @%Qq@U°@L´@^ñ@^ò@^ó@^õ@^ô@PÎ@^ý@M—@^÷@^ù@^û@Tá@^ü@^ú@%QB@^ö@^ø@I¿@NJ@_A@^þ@_B@Q‚@Sý@UI@_C@LG@_E@Qt@_D@T¤@%_J@_L@_M@P‰@_K@_H@_F@_G@_I@_O@_N@RO@_P@_R@_S@_T@_U@%T¤@_Q@_W@_V@_X@K·@_\@_Y@_Z@TG@Sª@S~@_[@_]@_^@__@_b@%_`@_a@_c@_d@_e@_f@_g@Sš@FK@Fè@_h@FY@EK@_j@_i@_k@Eï@%J°@L»@_l@_m@R™@R¤@N@S–@_n@_o@_r@_p@_q@_s@IÚ@_t@_u@%hh@_v@_w@_x@MÇ@_y@Sº@PW@Qµ@Gt@_{@_}@_|@Me@HD@\É@_~@%K„@_@Iã@H@_€@S÷@_@Fu@P€@Ft@Fx@_ƒ@P‚@HG@_†@_…@_„@%R¼@M¢@ER@_‹@QÊ@FB@Nj@_‡@_‰@_Š@_ˆ@_Œ@_@N_@I¥@Gª@_Ž@%_@_@_“@Rl@Js@_”@J–@_‘@_’@_—@_–@_•@_™@_˜@_š@_œ@_›@%Ur@M°@R}@_@O›@_ž@_Ÿ@_£@_¡@_¢@_ @_¤@_¥@SP@_¦@Pí@_§@%FÁ@_¨@E°@UÉ@NM@J‚@_©@Q»@E€@_«@I[@_¬@_­@FÓ@LÃ@_°@_®@%ME@T´@RH@LÂ@J¾@Pß@_¯@_±@_²@Iv@_³@I„@Jï@Si@R¿@_´@_¶@%_¹@ON@_·@Q•@_º@SV@_µ@Q{@O±@RÒ@T[@_¸@_»@Mø@P}@_½@_¾@%_¼@Hz@_Ä@_Ã@Jb@_Å@_À@_Æ@_Á@Kœ@_¿@_Â@_É@_È@I´@_Ç@Hª@%_Ë@_Ê@Q°@_Ì@Lœ@_Í@Mð@_Î@Q¹@QL@_Ð@_Ï@_Ñ@HS@IX@Fc@_Ó@%SÒ@Q’@NØ@Oë@HŒ@U\@_Ø@LÜ@Se@_×@Lë@E¡@_Ö@_Ô@O‰@Iù@M¿@%Lq@US@RØ@_Ú@Pç@Mu@P®@O‡@_Û@R†@K§@E‹@_Ü@_ß@_Þ@Uª@O×@%_à@Tõ@Pú@US@_á@Sj@_â@U]@Tc@SÐ@Eñ@FÃ@_ã@FX@Hí@Mº@_ä@%Lp@Mƒ@Tµ@_ç@P@LŠ@_å@MŸ@_æ@Kß@Iu@Rd@_è@Gô@_é@GÄ@Gú@%P‡@_ê@_ë@MÏ@R–@_ì@Sf@F’@_í@Gj@_ï@_ð@M¾@OÇ@_î@OÕ@N”@%HÔ@_ñ@R¾@_ó@H‘@RT@P¸@P›@_ò@_õ@_ô@N˜@_ö@O\@_ø@K†@I†@%_ù@G@_ú@N‘@Jý@Qi@T™@_û@O°@Ké@_ü@_þ@`A@_ý@P¦@`B@Je@%Pª@I§@`C@`D@Už@`G@`F@`I@`H@`J@Rð@`K@EÝ@`L@`M@`O@`N@%`Q@`P@`R@`S@Iç@`T@fÁ@Gn@`U@`V@Tk@MP@`W@`X@QÈ@`Z@`[@%Hï@`\@Iq@`]@Eõ@T\@R‡@`^@TÕ@`b@QÏ@`a@``@`_@Iµ@Sç@`e@%OA@`f@Gà@Rô@OÙ@`h@F~@`c@`g@`d@In@`l@JÇ@M›@F§@K@`k@%`j@Rõ@`i@KE@K|@IÐ@FÉ@`m@T„@PH@SN@`s@`q@`r@`p@`n@`o@%U›@OQ@U¤@`w@`{@`z@Nà@LÌ@HC@`u@`|@`y@`x@`t@`‚@`v@Fò@%TÊ@Q@Jû@`€@P\@G¡@Qè@Iè@`@O¶@I¨@`~@`@`}@`ƒ@Hu@JØ@%`‡@`…@`„@TD@`Œ@`Ž@`†@`‰@`‹@`@OS@WŠ@`Š@`ˆ@Q|@TÊ@`’@%Kì@`@`@`‘@`”@`“@Q«@`•@Rp@OL@`–@`˜@`—@Mþ@Qò@`š@O™@%`™@`›@`œ@Lî@Rª@`@`ž@Fo@`Ÿ@Oð@Uç@N…@` @Hž@OÌ@SÉ@`¡@%L©@LK@MY@K÷@OÈ@Kû@`¥@`£@`¢@R«@KÔ@`§@`¤@`¦@`«@`ª@`©@%`¨@`¬@`®@Fl@Q¼@`°@`¯@Tq@Q`@`±@H„@`³@`´@T’@QŒ@QK@`²@%NÅ@`µ@`¶@`·@`¸@FÇ@RÂ@Hú@Qþ@FÛ@`º@G½@Kg@`¹@`½@Lù@Iâ@%Oµ@G¦@`¼@OG@Lx@F€@Ió@Oó@`»@GŸ@Hw@Lô@Jð@U’@`À@QH@Gh@%`Á@NY@`Ã@Lä@L½@`Â@Iô@Uc@F¹@`¾@`Å@`Ä@`¿@Fˆ@`É@`Ì@F¿@%`È@`Ð@`Æ@Pm@Lç@N÷@`Í@GW@`Ê@`Ë@H@Rh@`Ç@Jä@Jó@Iö@Tí@%`Ï@St@`Î@JJ@GË@Të@Pp@`Ü@`Ú@`Ø@`Ò@`×@Q£@H€@`Ñ@`Ù@`Ý@%HË@JS@MÉ@`Ó@`Ô@`Û@TÓ@T¦@`Ö@IÜ@H@`Õ@K—@S}@G“@H¥@J›@%`Þ@`á@`ß@F‡@`è@`à@`ã@J€@`ç@`â@HN@Lü@Uk@Nš@`æ@H`@`ä@%Kª@HY@`é@`î@`ê@`å@`ì@Ræ@Ok@`í@`ë@[Ì@U¨@N“@Iä@I÷@`ò@%`ù@`ô@`ø@`ö@`ï@`õ@`ó@Hf@GY@`÷@`ð@`ñ@Hh@Ss@RÚ@`ý@Hš@%QÔ@`û@`þ@aA@`ú@`ü@RÚ@`ñ@aB@aE@aD@Ss@Mš@Ki@aC@aG@aF@%aH@aJ@Uë@aK@Rx@aL@Q¿@aN@aM@Uú@Rs@aO@aP@aQ@aR@aS@Sœ@%P„@aT@aU@aV@aW@aX@TË@aY@Qn@aZ@a\@a[@a]@a^@a_@aa@a`@%ab@LN@Uï@FŒ@O‚@L™@Uy@U¥@ac@Z¥@ad@af@Mú@ae@ag@ah@JÑ@%ai@E}@aj@am@al@ak@an@ao@G±@U–@E˜@aq@ap@ar@at@au@as@%G@Oû@ax@ay@az@Mœ@Ji@Tù@a{@Oi@a|@a}@a~@U‹@T¶@a@a€@%Qö@Mµ@R @I…@G`@a@Fp@SÜ@a‚@Qæ@IŽ@aƒ@Iš@Oì@Tä@a„@a…@%a†@a‡@L«@N™@a‰@U¸@aˆ@a‹@aŠ@aŒ@Kµ@a@Ty@H»@aŽ@K‰@a@%a@SÊ@a“@a’@a‘@M¨@a”@H×@a•@a–@Sä@a—@a˜@a™@S¶@KA@JB@%U@NP@aš@Rg@Rj@a›@R’@LŒ@LÅ@S‚@I{@Ky@Lû@až@aœ@Pë@RÕ@%H¬@TQ@PN@Mö@a£@N›@J²@Rc@Rˆ@a¡@a¤@aŸ@a¢@P¶@Mc@Né@a @%a¦@a§@N«@Kã@a°@GO@Ht@PQ@Uì@Gã@Py@a¥@S^@M\@a¨@a©@L–@%aª@J´@L³@Ué@a­@a°@a¬@a«@RÄ@Mb@a¯@a®@RG@L¯@a´@a³@aµ@%QÎ@a²@K¤@a±@a¶@M¶@L @Ro@Rš@aº@a»@a·@a¸@a¹@QØ@a¿@a½@%Q‘@MŠ@P`@a¼@a¾@aÁ@Nö@aÂ@aÄ@Pv@aÀ@aÃ@aÊ@aÇ@aÆ@S_@aÈ@%aÉ@Tt@aÅ@aË@aÌ@aÍ@M½@aÎ@aÏ@aÐ@aÑ@aÒ@JG@SŠ@Qs@LÐ@EÃ@%M³@JH@Lj@aÓ@aÔ@J‰@aÕ@aÖ@a×@aØ@SX@Fj@Wx@bº@P”@aÙ@LX@%aÚ@aÛ@aÜ@N[@Lª@OÁ@O¸@Jc@K¸@aÝ@HŸ@aÞ@IV@aß@aá@TÛ@K‡@%S¬@aà@F{@aâ@Mü@T®@aã@aä@aå@aæ@aè@aç@LJ@aé@aê@aë@U´@%EÄ@aì@GÃ@MT@aí@SÅ@aî@Qš@aï@að@N½@Ir@aò@O{@JÝ@añ@aô@%TB@Oå@FÙ@Fƒ@IS@MÐ@aó@Nº@N]@PK@aù@UY@R×@J¸@bF@Sw@bC@%bA@a÷@aõ@aö@FÖ@J_@T°@MZ@Eî@aû@aú@aþ@bD@aý@aø@FF@aü@%Tz@KÓ@bB@bE@NÉ@bJ@Sö@bR@Pâ@bX@GL@bQ@bP@bK@T{@bI@bG@%Iw@M÷@bM@bL@bO@S³@HB@S³@Q_@bN@FÜ@Kb@bH@b_@bZ@K¡@Ià@%b]@b[@bb@T†@bc@b\@bY@b`@bW@bS@Qî@bU@ba@bV@bd@bT@T³@%RÉ@b^@bu@bn@GS@bg@F×@Ls@bh@LQ@Q€@bl@K¨@SÔ@bp@Qj@Té@%Kl@Qm@HÌ@bq@be@bt@bi@bv@bj@bk@T÷@bo@RÉ@bm@PÛ@br@T‚@%bf@bs@TØ@IJ@bw@Ku@O|@b…@b„@by@Gò@b‚@b~@Eù@UŸ@JY@Hß@%UG@bx@Pq@Nr@b@b|@Oy@Ql@b@bƒ@TN@PÙ@b{@b}@Pà@b€@bz@%Sø@O“@Oã@P•@RY@b‰@b“@b@I²@bŠ@Jº@b‡@bŒ@P¹@bˆ@b@L”@%b‘@Pƒ@b†@Om@b‹@bŽ@Oš@b’@b”@b@R{@Pˆ@Kô@b–@Q‹@b•@R½@%b@Ul@U{@bœ@b›@b—@b˜@Tš@bš@T¨@Sø@O¡@b™@N‹@F^@TÑ@b @%b¥@R÷@b¤@S¨@b¦@b§@Ue@bž@b©@T‘@b£@b¡@bŸ@b¢@PÞ@Tð@QÓ@%b¨@b°@b¶@b·@bª@J’@b´@b¬@b®@b¸@b­@b±@Lì@Q­@b²@bµ@b«@%O¿@b¯@Lñ@TZ@I˜@Fá@b³@Sù@b»@b¿@b½@O»@b¼@Ní@b¾@bÀ@bÁ@%bÄ@bÂ@Eh@bÃ@Oö@L•@Uâ@bÅ@Sí@P_@bÉ@T–@NÚ@L¿@bÆ@bÈ@bÇ@%\½@\¾@bË@bÊ@L¦@_‚@bÌ@bÍ@bÏ@J«@R`@Rû@bÑ@Or@RP@Uˆ@bÒ@%bÓ@KË@bÔ@Q¶@QD@Oª@bØ@bÚ@bÕ@O]@bÖ@U¢@b×@bÙ@bã@bÜ@bß@%bÛ@bÝ@bÞ@Oê@bà@SØ@Mù@bá@bä@U»@bé@bå@bè@UÂ@bæ@bç@Nf@%S¥@Ot@RN@bó@bï@U™@bí@NÍ@bî@bë@bì@bñ@bô@bò@bð@bê@TÜ@%bú@S¡@bø@bù@bõ@Rm@b÷@bö@Sè@R¡@bý@bþ@cI@SG@cB@cH@bû@%cF@cJ@QÃ@cC@cE@cG@cA@Nn@bü@cK@cD@HÂ@cN@cL@cU@cO@cW@%QÖ@cY@cQ@cR@cV@cM@Tô@cP@cS@cX@c\@Sè@cZ@c[@cc@cd@P@%QÆ@cb@U½@c^@ca@c]@c_@ce@cf@c`@R¡@ch@cg@SQ@ci@cj@ck@%cl@cm@KC@cn@co@Kˆ@E¤@cp@cq@Hl@K¥@cr@G€@M¥@cs@Kí@ct@%Jê@FÀ@cu@OT@cz@cx@Ré@cy@cw@J§@cv@c{@Oj@JT@c‚@c~@JW@%c}@c€@c|@c@cƒ@K@c@TÅ@c†@OZ@c…@TH@c„@I½@O`@c‡@cˆ@%H˜@I¤@c‰@Fø@cŠ@c‹@Ij@cŒ@OŠ@TM@c‘@c’@O¨@SI@c@OC@c@%c@E{@L@cŽ@c“@KQ@c—@c”@T^@Qº@c˜@QÚ@c–@c™@cš@c•@c›@%cž@c @c@cœ@cŸ@Pk@c¢@c¡@Tl@c¤@T¯@c£@c§@c¥@c¦@c¨@c©@%Mß@cª@c«@c¬@EX@FU@c­@Mò@Kú@c®@c¯@E»@Fû@c°@JP@Së@c±@%JL@c²@c´@NÐ@c³@H…@cµ@c¶@c·@H~@c¸@cº@c¹@c»@G}@c¼@S`@%c½@G·@LÑ@c¾@c¿@cÀ@Gš@OÄ@cÁ@EÉ@Pò@cÄ@IÒ@cÃ@cÅ@KÈ@cÂ@%J¶@G”@cÆ@cÇ@Pï@TÌ@cÈ@Jq@Eâ@Jš@K­@Lß@cÉ@cË@Mh@Of@Iº@%cÊ@cÎ@cÏ@Qv@Uã@cÍ@Oˆ@Iý@cÌ@N@QÁ@cÓ@Tû@IH@L°@PÓ@cÒ@%cÑ@QŽ@K_@GP@M@Mç@cÔ@cÐ@cÖ@c×@cÕ@N´@MŒ@Kv@J~@cÚ@O @%O¢@JË@cÝ@Hç@Fý@cÙ@cÞ@M‘@cÛ@cÜ@cß@cØ@IR@JO@Kƒ@IÖ@Uò@%Re@cá@F‰@cã@P²@Ic@Jè@cà@câ@KÁ@Q@Hó@cä@cò@Up@cñ@cí@%cê@cì@cë@cç@RF@cæ@N–@Nœ@Oœ@cè@cå@cï@cð@Gâ@U«@Oá@OM@%Tå@Us@Oâ@cô@có@Rù@c÷@cé@cö@cø@I|@cõ@Jn@M»@cù@M}@cý@%S@cþ@U¡@cú@M‡@dA@cû@dF@dB@dD@dC@dE@dG@Ju@dI@dH@NO@%dL@J×@dK@dM@dN@G@av@K{@dJ@IÛ@dO@dP@dQ@Qk@[ˆ@dR@dS@%Sþ@dU@dV@dW@dT@dX@E@dY@d[@dZ@J™@d\@FH@d]@d^@d_@d`@%LÏ@I”@da@Lh@SU@db@dc@U“@dd@de@df@dh@dg@di@Pd@dj@dk@%dm@dl@Iê@F¶@IÈ@I¯@Jñ@M£@Jë@J]@dp@I¡@KÒ@do@dq@Lb@Mï@%ds@dt@H@dv@It@Jô@FÐ@P{@dr@Hr@FA@du@Uø@KM@Pg@FP@dw@%Oý@dy@dx@Sž@P×@d{@Mî@O”@J­@OO@Gå@dz@Uf@O§@Fì@RÁ@d|@%d}@d@d€@N@d~@SZ@Ut@d@L|@d‚@U„@d„@dƒ@d†@d…@d‡@dˆ@%d‰@Fù@QQ@dŠ@SÌ@d‹@Jª@dŒ@QÉ@Pî@d@HÐ@d@Jx@Fß@QÞ@Lí@%Ua@Fú@d’@d‘@d@d˜@d–@d“@d•@d”@d—@MÂ@d›@LÍ@dœ@UË@d™@%dš@G„@P´@PÑ@d@dŸ@dž@d @L¨@M|@d£@d¡@d¢@d¤@Pü@d§@d¨@%d¦@d¥@U§@dª@d®@d«@d©@d¬@d­@d²@d¯@Sh@d±@d³@d°@dµ@Rö@%d´@d·@d¸@dº@d¹@d¶@d¼@d»@L¡@d¾@d½@d¿@dÀ@dÁ@dÂ@Gœ@PD@%SS@Sz@dÃ@dÄ@SS@dÆ@dÅ@dÇ@FS@dÈ@Mª@H—@dÉ@NU@dÊ@L±@GR@%dË@dÎ@K¦@dÍ@dÌ@H¦@dÏ@JZ@dÒ@Mn@dÐ@dÑ@dÔ@dÕ@Jh@dÓ@d×@%Q[@dÖ@G‡@dØ@dÙ@Nô@H·@U¦@dÚ@F“@dÜ@dÛ@dß@Pl@dÞ@Pþ@dÝ@%dá@dà@dâ@Tî@dã@dä@då@P©@Rá@dæ@dç@dè@M^@dé@Mt@dê@dë@%dí@dì@dî@aI@dï@Gß@Rå@HE@dð@EÕ@Gõ@HA@T~@Uß@IÍ@Ph@K©@%Fs@HÖ@dò@dô@dó@S]@dö@Nž@Iï@Sß@dõ@Jœ@d÷@NX@dú@dù@T©@%IÑ@KI@GD@Lr@dø@Kü@eD@eA@dý@KÚ@P»@dû@Q^@Hð@dü@eC@O³@%OÊ@Eã@S±@eB@HÍ@E¸@dþ@MÎ@GT@eE@Ow@JÓ@Fi@T…@eF@JÖ@eG@%U¬@eN@Tø@L÷@Lm@Iì@eM@J‹@F«@P]@H@eH@eJ@eK@eL@EP@F¤@%I¼@eO@eP@Ró@TU@eQ@Fã@TL@NÂ@h‚@eS@eR@IÌ@QC@TX@eT@eW@%Rn@eU@S[@H]@LÚ@Rk@eY@LÄ@e[@S{@eX@`E@M©@Q†@eZ@Pê@e\@%L’@HF@FÅ@Q¨@N¸@e^@e_@e`@M@I³@PR@En@ec@ed@Iž@ea@eb@%E•@Qb@L·@I•@EO@ee@eh@eg@ei@ek@QT@el@ej@Os@em@UH@R»@%Gó@U‘@GX@N|@en@eo@K®@ep@eq@er@P½@QI@et@es@M†@Që@H™@%ew@Q©@ev@eu@Qo@Qp@Sx@Qú@So@ex@P@e{@ey@P@ez@Qú@e}@%e|@PÂ@e~@e@e€@SF@S¿@My@RR@e@Gl@E£@Ei@Gµ@e‚@E†@e‡@%e…@Oô@eƒ@e„@JÌ@Iˆ@e†@eˆ@e‰@Lã@e@e@SJ@Kð@eŠ@eŒ@e‹@%eŽ@QÐ@e’@e@e•@Nc@S@e“@Ri@e”@e—@e‘@e˜@e–@E®@U¿@e¦@%e›@eŸ@e¤@ež@E×@eš@e @eœ@e§@e¡@e¢@e¥@e™@e£@e©@IÔ@S“@%N¨@e@O´@e¨@Hc@e¬@e­@Qƒ@GŒ@Lâ@HÀ@RK@L­@e¯@e±@e®@MÜ@%N€@e°@eª@e«@MH@e»@eº@e³@e·@TI@e½@e¹@eµ@e¶@e¼@RÀ@e´@%e²@Sc@Mo@U¾@HÁ@Qç@S”@eÂ@eÅ@F¡@eÉ@eÎ@UÒ@eÀ@S@Tï@eÇ@%eË@eÌ@eÈ@NW@eÃ@eÊ@eÍ@eÁ@KŽ@Sð@RW@Oæ@Rƒ@P±@H†@e¿@e¾@%eÏ@eÄ@Q÷@KH@UÓ@Tª@eÔ@eÕ@HÇ@R­@eÑ@Op@eÓ@eÐ@NE@eÒ@S½@%Ib@eÚ@Mp@Q—@Tþ@eØ@Tm@Sn@eÙ@L‰@e×@eÖ@eâ@eÝ@eÛ@eå@PA@%eÜ@eÞ@eá@eã@eä@J@eæ@eà@eß@eè@eì@eí@QÍ@eê@eé@LÈ@RÏ@%eç@eë@eï@eð@QV@eî@Sˆ@eñ@eò@eõ@eô@eö@NN@eó@RA@eø@e÷@%eû@eù@eú@eü@eþ@eý@fA@fD@fC@fE@fB@fF@Eƒ@Fª@fG@Qœ@fH@%K}@fI@FÍ@T_@MÙ@fJ@EÁ@fK@fL@fM@fN@fO@EÅ@Jé@T›@Qr@fQ@%fP@fR@Qw@fU@fT@fS@fV@fY@Sd@fW@f[@fZ@f]@f\@f^@KÌ@f_@%f`@fb@fa@G†@fc@fd@E‘@fe@ff@G¼@Oï@F®@Oè@fg@KŒ@fj@fi@%Iå@fh@H­@QW@fk@fl@Rr@fm@IØ@L„@Im@Oþ@fn@UÃ@fq@LÒ@fp@%Na@PÇ@J·@fo@Ia@Jl@G¿@K¹@F]@Lå@J“@fs@fr@I©@Nv@PZ@fv@%fw@fu@SÃ@G—@Kù@fy@N®@Là@fz@eV@f{@f@f~@f|@f}@f€@f@%UE@f‚@fƒ@OÚ@NÕ@Od@Q¤@Ep@GE@G @LM@Tw@f…@R·@R[@f„@JŠ@%f†@cT@fˆ@Qû@f‡@I—@IZ@IÝ@I»@R¥@O@J¼@Pi@KÖ@f‰@E‚@Gû@%fŠ@f‹@MÞ@fŒ@OK@fŽ@f@f’@f‘@f@f“@f@Mè@Nä@f”@NH@f•@%f–@KÆ@f—@[Ï@f˜@f™@fš@f›@f @fž@f@fœ@fŸ@f¡@f¢@f£@f¤@%FL@f¥@HÃ@FD@f¦@Há@f§@hR@F‘@f¨@f©@fª@J£@Sµ@f«@RÎ@Mñ@%f¬@f°@f®@f¯@TE@f­@Rw@f±@PL@f²@f³@Rç@f´@Qí@f·@f¶@fµ@%cü@T‹@f¸@f¹@fº@f»@f¼@f½@Nu@f¾@f¿@Oß@fÀ@HM@fÂ@Rü@Uw@%J\@LÙ@M[@IF@J—@G²@F°@TV@fÃ@MJ@S@UW@Qz@Uä@JÍ@fÄ@fÆ@%fÅ@N³@Gë@N³@Uv@fÇ@Pû@fÈ@S«@Jz@fÈ@QÜ@fÊ@Gþ@Gñ@TŽ@fÉ@%H¸@Jå@fË@LW@UÁ@UÁ@Fº@fÌ@Nî@fÍ@fÎ@fÏ@fÐ@fÒ@fÑ@Gç@fÓ@%fÔ@fÕ@fÖ@fØ@f×@fÙ@HŠ@fÚ@F¸@SÎ@fÜ@fÞ@fÛ@\Ê@Fµ@K£@RE@%J@MI@IW@fà@P¿@T¼@Iy@P§@U³@fâ@UK@fã@fä@fá@fè@fê@fç@%fé@få@Hb@fë@fì@fí@fî@fï@fñ@fð@fó@fõ@fò@fô@Rè@fö@QÕ@%I¾@f÷@fø@F½@fù@fú@K…@Fd@fû@fü@Rß@P¡@fý@Uå@Må@I¬@Lþ@%O…@Mõ@gD@Iü@S¾@gC@gA@gB@fþ@gG@gE@gF@gH@gI@gK@gJ@LÀ@%gL@gN@PX@gM@MÒ@H´@gO@SÚ@gP@N^@gQ@gV@gR@gT@gU@gS@gX@%gY@SÚ@gW@g[@LÕ@gZ@g\@g]@g`@g_@g^@ga@gb@J¥@gc@gd@Uœ@%ge@gf@RÅ@gg@gj@gh@gi@Eq@gk@gl@gm@gn@go@gp@gq@Lö@gs@%P@gt@gr@gv@gu@gw@gx@gy@gz@g{@g|@g}@g~@g@g€@g@g‚@%gƒ@g„@g…@g†@g‡@gˆ@JÈ@RË@P¨@gŠ@g‰@M´@g‹@gŒ@S‰@g@Mâ@%gŽ@Hî@Qô@g‘@g@g@g”@OŽ@g“@g•@R@g’@g–@g—@g˜@g™@gš@%UÎ@N·@S‘@Lé@g›@gœ@g @gŸ@g@g¡@OÆ@gž@g¢@g£@g¤@g¨@Oä@%PØ@g©@g¦@g¥@g§@Mx@UQ@g«@g¬@gª@g±@g­@gµ@g¶@g²@g¸@g´@%Uq@R“@g·@g³@g°@g¯@g®@g¼@g»@gº@Tn@g¹@UÈ@g½@g¿@SÕ@Qð@%T«@gÁ@gÀ@g¾@U`@SÆ@UL@gÂ@gÃ@gÄ@gÅ@gÆ@Gy@gÈ@M•@gÇ@gÉ@%gÊ@N¦@Kp@TÄ@gÌ@gÍ@Q¡@Tü@gË@Td@gÔ@gÓ@RÃ@gÒ@gÑ@gÏ@LT@%gÎ@Pº@gÐ@MÖ@gØ@gÖ@gÕ@g×@gÙ@gÚ@gß@gÞ@gÝ@Kç@gÛ@gÜ@Pý@%U~@gà@gä@QŠ@gå@gâ@gá@gæ@gã@SB@MŽ@gç@gè@gé@gê@På@gë@%Gz@gï@gð@gî@gí@gó@gì@gñ@gò@gö@Td@gõ@gø@gù@gú@Kñ@g÷@%Kz@P¯@gû@gþ@gü@gý@hA@hB@L}@hC@L}@hD@F—@hE@hF@hG@hH@%hJ@Qù@Qž@hI@Ló@hK@Q›@hL@Jà@S´@hN@hO@Ra@U_@hM@Ra@U_@%H§@hP@hQ@Nê@JÆ@hS@U®@Q§@hT@hU@hV@Fy@hW@^@M¼@QÝ@hX@%hZ@hY@h[@h\@h]@h^@h_@h`@ha@hb@hc@hd@he@hf@hg@Qª@O¯@%hi@PË@hj@hk@Lý@hl@hm@Qõ@hn@ho@hp@hq@hs@ht@hu@L€@hr@%hv@hw@hy@hx@h{@h|@hz@HÊ@h}@h~@_÷@h@iA@iB@iC@iD@iE@%iF@iG@iH@iI@iJ@iK@iL@iM@iN@iO@iP@iQ@iR@iS@iT@iU@iV@%iW@iX@iY@iZ@i[@i\@i]@i^@i_@i`@ia@ib@ic@id@ie@if@ig@%ih@ii@ij@ik@il@im@in@io@ip@iq@ir@is@it@iu@iv@iw@ix@%iy@iz@i{@i|@i}@i~@i@i€@i@i‚@iƒ@i„@i…@i†@i‡@iˆ@i‰@%iŠ@i‹@iŒ@i@iŽ@i@i@i‘@i’@i“@i”@i•@i–@i—@i˜@i™@iš@%i›@iœ@i@iž@iŸ@i @i¡@i¢@i£@i¤@i¥@i¦@i§@i¨@i©@iª@i«@%i¬@i­@i®@i¯@i°@i±@i²@i³@i´@iµ@i¶@i·@i¸@i¹@iº@i»@i¼@%i½@i¾@i¿@iÀ@iÁ@iÂ@iÃ@iÄ@iÅ@iÆ@iÇ@iÈ@iÉ@iÊ@iË@iÌ@iÍ@%iÎ@iÏ@iÐ@iÑ@iÒ@iÓ@iÔ@iÕ@iÖ@i×@iØ@iÙ@iÚ@iÛ@iÜ@iÝ@iÞ@%iß@ià@iá@iâ@iã@iä@iå@iæ@iç@iè@ié@iê@ië@iì@ií@iî@iï@%ið@iñ@iò@ió@iô@iõ@iö@i÷@iø@iù@iú@iû@iü@iý@iþ@jA@jB@%jC@jD@jE@jF@jG@jH@jI@jJ@jK@jL@jM@jN@jO@jP@jQ@jR@jS@%jT@jU@jV@jW@jX@jY@jZ@j[@j\@j]@j^@j_@j`@ja@jb@jc@jd@%je@jf@jg@jh@ji@jj@jk@jl@jm@jn@jo@jp@jq@jr@js@jt@ju@%jv@jw@jx@jy@jz@j{@j|@j}@j~@j@j€@j@j‚@jƒ@j„@j…@j†@%j‡@jˆ@j‰@jŠ@j‹@jŒ@j@jŽ@j@j@j‘@j’@j“@j”@j•@j–@j—@%j˜@j™@jš@j›@jœ@j@jž@jŸ@j @j¡@j¢@j£@j¤@j¥@j¦@j§@j¨@%j©@jª@j«@j¬@j­@j®@j¯@j°@j±@j²@j³@j´@jµ@j¶@j·@j¸@j¹@%jº@j»@j¼@j½@j¾@j¿@jÀ@jÁ@jÂ@jÃ@jÄ@jÅ@jÆ@jÇ@jÈ@jÉ@jÊ@%jË@jÌ@jÍ@jÎ@jÏ@jÐ@jÑ@jÒ@jÓ@jÔ@jÕ@jÖ@j×@jØ@jÙ@jÚ@jÛ@%jÜ@jÝ@jÞ@jß@jà@já@jâ@jã@jä@jå@jæ@jç@jè@jé@jê@jë@jì@%jí@jî@jï@jð@jñ@jò@jó@jô@jõ@jö@j÷@jø@jù@jú@jû@jü@jý@%jþ@kA@kB@kC@kD@kE@kF@kG@kH@kI@kJ@kK@kL@kM@kN@kO@kP@%kQ@kR@kS@kT@kU@kV@kW@kX@kY@kZ@k[@k\@k]@k^@k_@k`@ka@%kb@kc@kd@ke@kf@kg@kh@ki@kj@kk@kl@km@kn@ko@kp@kq@kr@%ks@kt@ku@kv@kw@kx@ky@kz@k{@k|@k}@k~@k@k€@k@k‚@kƒ@%k„@k…@k†@k‡@kˆ@k‰@kŠ@k‹@kŒ@k@kŽ@k@k@k‘@k’@k“@k”@%k•@k–@k—@k˜@k™@kš@k›@kœ@k@kž@kŸ@k @k¡@k¢@k£@k¤@k¥@%k¦@k§@k¨@k©@kª@k«@k¬@k­@k®@k¯@k°@k±@k²@k³@k´@kµ@k¶@%k·@k¸@k¹@kº@k»@k¼@k½@k¾@k¿@kÀ@kÁ@kÂ@kÃ@kÄ@kÅ@kÆ@kÇ@%kÈ@kÉ@kÊ@kË@kÌ@kÍ@kÎ@kÏ@kÐ@kÑ@kÒ@kÓ@kÔ@kÕ@kÖ@k×@kØ@%kÙ@kÚ@kÛ@kÜ@kÝ@kÞ@kß@kà@ká@kâ@kã@kä@kå@kæ@kç@kè@ké@%kê@kë@kì@kí@kî@kï@kð@kñ@kò@kó@kô@kõ@kö@k÷@kø@kù@kú@%kû@kü@ký@kþ@lA@lB@lC@lD@lE@lF@lG@lH@lI@lJ@lK@lL@lM@%lN@lO@lP@lQ@lR@lS@lT@lU@lV@lW@lX@lY@lZ@l[@l\@l]@l^@%l_@l`@la@lb@lc@ld@le@lf@lg@lh@li@lj@lk@ll@lm@ln@lo@%lp@lq@lr@ls@lt@lu@lv@lw@lx@ly@lz@l{@l|@l}@l~@l@l€@%l@l‚@lƒ@l„@l…@l†@l‡@lˆ@l‰@lŠ@l‹@lŒ@l@lŽ@l@l@l‘@%l’@l“@l”@l•@l–@l—@l˜@l™@lš@l›@lœ@l@lž@lŸ@l @l¡@l¢@%l£@l¤@l¥@l¦@l§@l¨@l©@lª@l«@l¬@l­@l®@l¯@l°@l±@l²@l³@%l´@lµ@l¶@l·@l¸@l¹@lº@l»@l¼@l½@l¾@l¿@lÀ@lÁ@lÂ@lÃ@lÄ@%lÅ@lÆ@lÇ@lÈ@lÉ@lÊ@lË@lÌ@lÍ@lÎ@lÏ@lÐ@lÑ@lÒ@lÓ@lÔ@lÕ@%lÖ@l×@lØ@lÙ@lÚ@lÛ@lÜ@lÝ@lÞ@lß@là@lá@lâ@lã@lä@lå@læ@%lç@lè@lé@lê@lë@lì@lí@lî@lï@lð@lñ@lò@ló@lô@lõ@lö@l÷@%lø@lù@lú@lû@lü@lý@lþ@mA@mB@mC@mD@mE@mF@mG@mH@mI@mJ@%mK@mL@mM@mN@mO@mP@mQ@mR@mS@mT@mU@mV@mW@mX@mY@mZ@m[@%m\@m]@m^@m_@m`@ma@mb@mc@md@me@mf@mg@mh@mi@mj@mk@ml@%mm@mn@mo@mp@mq@mr@ms@mt@mu@mv@mw@mx@my@mz@m{@m|@m}@%m~@m@m€@m@m‚@mƒ@m„@m…@m†@m‡@mˆ@m‰@mŠ@m‹@mŒ@m@mŽ@%m@m@m‘@m’@m“@m”@m•@m–@m—@m˜@m™@mš@m›@mœ@m@mž@mŸ@%m @m¡@m¢@m£@m¤@m¥@m¦@m§@m¨@m©@mª@m«@m¬@m­@m®@m¯@m°@%m±@m²@m³@m´@mµ@m¶@m·@m¸@m¹@mº@m»@m¼@m½@m¾@m¿@mÀ@mÁ@%mÂ@mÃ@mÄ@mÅ@mÆ@mÇ@mÈ@mÉ@mÊ@mË@mÌ@mÍ@mÎ@mÏ@mÐ@mÑ@mÒ@%mÓ@mÔ@mÕ@mÖ@m×@mØ@mÙ@mÚ@mÛ@mÜ@mÝ@mÞ@mß@mà@má@mâ@mã@%mä@må@mæ@mç@mè@mé@mê@më@mì@mí@mî@mï@mð@mñ@mò@mó@mô@%mõ@mö@m÷@mø@mù@mú@mû@mü@mý@mþ@nA@nB@nC@nD@nE@nF@nG@%nH@nI@nJ@nK@nL@nM@nN@nO@nP@nQ@nR@nS@nT@nU@nV@nW@nX@%nY@nZ@n[@n\@n]@n^@n_@n`@na@nb@nc@nd@ne@nf@ng@nh@ni@%nj@nk@nl@nm@nn@no@np@nq@nr@ns@nt@nu@nv@nw@nx@ny@nz@%n{@n|@n}@n~@n@n€@n@n‚@nƒ@n„@n…@n†@n‡@nˆ@n‰@nŠ@n‹@%nŒ@n@nŽ@n@n@n‘@n’@n“@n”@n•@n–@n—@n˜@n™@nš@n›@nœ@%n@nž@nŸ@n @n¡@n¢@n£@n¤@n¥@n¦@n§@n¨@n©@nª@n«@n¬@n­@%n®@n¯@n°@n±@n²@n³@n´@nµ@n¶@n·@n¸@n¹@nº@n»@n¼@n½@n¾@%n¿@nÀ@nÁ@nÂ@nÃ@nÄ@nÅ@nÆ@nÇ@nÈ@nÉ@nÊ@nË@nÌ@nÍ@nÎ@nÏ@%nÐ@nÑ@nÒ@nÓ@nÔ@nÕ@nÖ@n×@nØ@nÙ@nÚ@nÛ@nÜ@nÝ@nÞ@nß@nà@%ná@nâ@nã@nä@nå@næ@nç@nè@né@nê@në@nì@ní@nî@nï@nð@nñ@%nò@nó@nô@nõ@nö@n÷@nø@nù@nú@nû@nü@ný@nþ@oA@oB@oC@oD@%oE@oF@oG@oH@oI@oJ@oK@oL@oM@oN@oO@oP@oQ@oR@oS@oT@oU@%oV@oW@oX@oY@oZ@o[@o\@o]@o^@o_@o`@oa@ob@oc@od@oe@of@%og@oh@oi@oj@ok@ol@om@on@oo@op@oq@or@os@ot@ou@ov@ow@%ox@oy@oz@o{@o|@o}@o~@o@o€@o@o‚@oƒ@o„@o…@o†@o‡@oˆ@%o‰@oŠ@o‹@oŒ@o@oŽ@o@o@o‘@o’@o“@o”@o•@o–@o—@o˜@o™@%oš@o›@oœ@o@ož@oŸ@o @o¡@o¢@o£@o¤@o¥@o¦@o§@o¨@o©@oª@%o«@o¬@o­@o®@o¯@o°@o±@o²@o³@o´@oµ@o¶@o·@o¸@o¹@oº@o»@%o¼@o½@o¾@o¿@oÀ@oÁ@oÂ@oÃ@oÄ@oÅ@oÆ@oÇ@oÈ@oÉ@oÊ@oË@oÌ@%oÍ@oÎ@oÏ@oÐ@oÑ@oÒ@oÓ@oÔ@oÕ@oÖ@o×@oØ@oÙ@oÚ@oÛ@oÜ@oÝ@%oÞ@oß@oà@oá@oâ@oã@oä@oå@oæ@oç@oè@oé@oê@oë@oì@oí@oî@%oï@oð@oñ@oò@oó@oô@oõ@oö@o÷@oø@où@oú@oû@oü@oý@oþ@pA@%pB@pC@pD@pE@pF@pG@pH@pI@pJ@pK@pL@pM@pN@pO@pP@pQ@pR@%pS@pT@pU@pV@pW@pX@pY@pZ@p[@p\@p]@p^@p_@p`@pa@pb@pc@%pd@pe@pf@pg@ph@pi@pj@pk@pl@pm@pn@po@pp@pq@pr@ps@pt@%pu@pv@pw@px@py@pz@p{@p|@p}@p~@p@p€@p@p‚@pƒ@p„@p…@%p†@p‡@pˆ@p‰@pŠ@p‹@pŒ@p@pŽ@p@p@p‘@p’@p“@p”@p•@p–@%p—@p˜@p™@pš@p›@pœ@p@pž@pŸ@p @p¡@p¢@p£@p¤@p¥@p¦@p§@%p¨@p©@pª@p«@p¬@p­@p®@p¯@p°@p±@p²@p³@p´@pµ@p¶@p·@p¸@%p¹@pº@p»@p¼@p½@p¾@p¿@pÀ@pÁ@pÂ@pÃ@pÄ@pÅ@pÆ@pÇ@pÈ@pÉ@%pÊ@pË@pÌ@pÍ@pÎ@pÏ@pÐ@pÑ@pÒ@pÓ@pÔ@pÕ@pÖ@p×@pØ@pÙ@pÚ@%pÛ@pÜ@pÝ@pÞ@pß@pà@pá@pâ@pã@pä@på@pæ@pç@pè@pé@pê@pë@%pì@pí@pî@pï@pð@pñ@pò@pó@pô@põ@pö@p÷@pø@pù@pú@pû@pü@%pý@pþ@qA@qB@qC@qD@qE@qF@qG@qH@qI@qJ@qK@qL@qM@qN@qO@%qP@qQ@qR@qS@qT@qU@qV@qW@qX@qY@qZ@q[@q\@q]@q^@q_@q`@%qa@qb@qc@qd@qe@qf@qg@qh@qi@qj@qk@ql@qm@qn@qo@qp@qq@%qr@qs@qt@qu@qv@qw@qx@qy@qz@q{@q|@q}@q~@q@q€@q@q‚@%qƒ@q„@q…@q†@q‡@qˆ@q‰@qŠ@q‹@qŒ@q@qŽ@q@q@q‘@q’@q“@%q”@q•@q–@q—@q˜@q™@qš@q›@qœ@q@qž@qŸ@q @q¡@q¢@q£@q¤@%q¥@q¦@q§@q¨@q©@qª@q«@q¬@q­@q®@q¯@q°@q±@q²@q³@q´@qµ@%q¶@q·@q¸@q¹@qº@q»@q¼@q½@q¾@q¿@qÀ@qÁ@qÂ@qÃ@qÄ@qÅ@qÆ@%qÇ@qÈ@qÉ@qÊ@qË@qÌ@qÍ@qÎ@qÏ@qÐ@qÑ@qÒ@qÓ@qÔ@qÕ@qÖ@q×@%qØ@qÙ@qÚ@qÛ@qÜ@qÝ@qÞ@qß@qà@qá@qâ@qã@qä@qå@qæ@qç@qè@%qé@qê@që@qì@qí@qî@qï@qð@qñ@qò@qó@qô@qõ@qö@q÷@qø@qù@%qú@qû@qü@qý@qþ@rA@rB@rC@rD@rE@rF@rG@rH@rI@rJ@rK@rL@%rM@rN@rO@rP@rQ@rR@rS@rT@rU@rV@rW@rX@rY@rZ@r[@r\@r]@%r^@r_@r`@ra@rb@rc@rd@re@rf@rg@rh@ri@rj@rk@rl@rm@rn@%ro@rp@rq@rr@rs@rt@ru@rv@rw@rx@ry@rz@r{@r|@r}@r~@r@%r€@r@r‚@rƒ@r„@r…@r†@r‡@rˆ@r‰@rŠ@r‹@rŒ@r@rŽ@r@r@%r‘@r’@r“@r”@r•@r–@r—@r˜@r™@rš@r›@rœ@r@rž@rŸ@r @r¡@%r¢@r£@r¤@r¥@r¦@r§@r¨@r©@rª@r«@r¬@r­@r®@r¯@r°@r±@r²@%r³@r´@rµ@r¶@r·@r¸@r¹@rº@r»@r¼@r½@r¾@r¿@rÀ@rÁ@rÂ@rÃ@%rÄ@rÅ@rÆ@rÇ@rÈ@rÉ@rÊ@rË@rÌ@rÍ@rÎ@rÏ@rÐ@rÑ@rÒ@rÓ@rÔ@%rÕ@rÖ@r×@rØ@rÙ@rÚ@rÛ@rÜ@rÝ@rÞ@rß@rà@rá@râ@rã@rä@rå@%ræ@rç@rè@ré@rê@rë@rì@rí@rî@rï@rð@rñ@rò@ró@rô@rõ@rö@%r÷@rø@rù@rú@rû@rü@rý@rþ@sA@sB@sC@sD@sE@sF@sG@sH@sI@%sJ@sK@sL@sM@sN@sO@sP@sQ@sR@sS@sT@sU@sV@sW@sX@sY@sZ@%s[@s\@s]@s^@s_@s`@sa@sb@sc@sd@se@sf@sg@sh@si@sj@sk@%sl@sm@sn@so@sp@sq@sr@ss@st@su@sv@sw@sx@sy@sz@s{@s|@%s}@s~@s@s€@s@s‚@sƒ@s„@s…@s†@s‡@sˆ@s‰@sŠ@s‹@sŒ@s@%sŽ@s@s@s‘@s’@s“@s”@s•@s–@s—@s˜@s™@sš@s›@sœ@s@sž@%sŸ@s @s¡@s¢@s£@s¤@s¥@s¦@s§@s¨@s©@sª@s«@s¬@s­@s®@s¯@%s°@s±@s²@s³@s´@sµ@s¶@s·@s¸@s¹@sº@s»@s¼@s½@s¾@s¿@sÀ@%sÁ@sÂ@sÃ@sÄ@sÅ@sÆ@sÇ@sÈ@sÉ@sÊ@sË@sÌ@sÍ@sÎ@sÏ@sÐ@sÑ@%sÒ@sÓ@sÔ@sÕ@sÖ@s×@sØ@sÙ@sÚ@sÛ@sÜ@sÝ@sÞ@sß@sà@sá@sâ@%sã@sä@så@sæ@sç@sè@sé@sê@së@sì@sí@sî@sï@sð@sñ@sò@só@%sô@sõ@sö@s÷@sø@sù@sú@sû@sü@sý@sþ@tA@tB@tC@tD@tE@tF@%tG@tH@tI@tJ@tK@tL@tM@tN@tO@tP@tQ@tR@tS@tT@tU@tV@tW@%tX@tY@tZ@t[@t\@t]@t^@t_@t`@ta@tb@tc@td@te@tf@tg@th@%ti@tj@tk@tl@tm@tn@to@tp@tq@tr@ts@tt@tu@tv@tw@tx@ty@%tz@t{@t|@t}@t~@t@t€@t@t‚@tƒ@t„@t…@t†@t‡@tˆ@t‰@tŠ@%t‹@tŒ@t@tŽ@t@t@t‘@t’@t“@t”@t•@t–@t—@t˜@t™@tš@t›@%tœ@t@tž@tŸ@t @t¡@t¢@t£@t¤@t¥@t¦@t§@t¨@t©@tª@t«@t¬@%t­@t®@t¯@t°@t±@t²@t³@t´@tµ@t¶@t·@t¸@t¹@tº@t»@t¼@t½@%t¾@t¿@tÀ@tÁ@tÂ@tÃ@tÄ@tÅ@tÆ@tÇ@tÈ@tÉ@tÊ@tË@tÌ@tÍ@tÎ@%tÏ@tÐ@tÑ@tÒ@tÓ@tÔ@tÕ@tÖ@t×@tØ@tÙ@tÚ@tÛ@tÜ@tÝ@tÞ@tß@%tà@tá@tâ@tã@tä@tå@tæ@tç@tè@té@tê@të@tì@tí@tî@tï@tð@%tñ@tò@tó@tô@tõ@tö@t÷@tø@tù@tú@tû@tü@tý@tþ@uA@uB@uC@%uD@uE@uF@uG@uH@uI@uJ@uK@uL@uM@uN@uO@uP@uQ@uR@uS@uT@%uU@uV@uW@uX@uY@uZ@u[@u\@u]@u^@u_@u`@ua@ub@uc@ud@ue@%uf@ug@uh@ui@uj@uk@ul@um@un@uo@up@uq@ur@us@ut@uu@uv@%uw@ux@uy@uz@u{@u|@u}@u~@u@u€@u@u‚@uƒ@u„@u…@u†@u‡@%uˆ@u‰@uŠ@u‹@uŒ@u@uŽ@u@u@u‘@u’@u“@u”@u•@u–@u—@u˜@%u™@uš@u›@uœ@u@už@uŸ@u @u¡@u¢@u£@u¤@u¥@u¦@u§@u¨@u©@%uª@u«@u¬@u­@u®@u¯@u°@u±@u²@u³@u´@uµ@u¶@u·@u¸@u¹@uº@%u»@u¼@u½@u¾@u¿@uÀ@uÁ@uÂ@uÃ@uÄ@uÅ@uÆ@uÇ@uÈ@uÉ@uÊ@uË@%uÌ@uÍ@uÎ@uÏ@uÐ@uÑ@uÒ@uÓ@uÔ@uÕ@uÖ@u×@uØ@uÙ@uÚ@uÛ@uÜ@%uÝ@uÞ@uß@uà@uá@uâ@uã@uä@uå@uæ@uç@uè@ué@uê@uë@uì@uí@%uî@uï@uð@uñ@uò@uó@uô@uõ@uö@u÷@uø@uù@uú@uû@uü@uý@uþ@%vA@vB@vC@vD@vE@vF@vG@vH@vI@vJ@vK@vL@vM@vN@vO@vP@vQ@%vR@vS@vT@vU@vV@vW@vX@vY@vZ@v[@v\@v]@v^@v_@v`@va@vb@%vc@vd@ve@vf@vg@vh@vi@vj@vk@vl@vm@vn@vo@vp@vq@vr@vs@%vt@vu@vv@vw@vx@vy@vz@v{@v|@v}@v~@v@v€@v@v‚@vƒ@v„@%v…@v†@v‡@vˆ@v‰@vŠ@v‹@vŒ@v@vŽ@v@v@v‘@v’@v“@v”@v•@%v–@v—@v˜@v™@vš@v›@vœ@v@vž@vŸ@v @v¡@v¢@v£@v¤@v¥@v¦@%v§@v¨@v©@vª@v«@v¬@v­@v®@v¯@v°@v±@v²@v³@v´@vµ@v¶@v·@%v¸@v¹@vº@v»@v¼@v½@v¾@v¿@vÀ@vÁ@vÂ@vÃ@vÄ@vÅ@vÆ@vÇ@vÈ@%vÉ@vÊ@vË@vÌ@vÍ@vÎ@vÏ@vÐ@vÑ@vÒ@vÓ@vÔ@vÕ@vÖ@v×@vØ@vÙ@%vÚ@vÛ@vÜ@vÝ@vÞ@vß@và@vá@vâ@vã@vä@vå@væ@vç@vè@vé@vê@%vë@vì@ví@vî@vï@vð@vñ@vò@vó@vô@võ@vö@v÷@vø@vù@vú@vû@%vü@vý@vþ@wA@wB@wC@wD@wE@wF@wG@wH@wI@wJ@wK@wL@wM@wN@%wO@wP@wQ@wR@wS@wT@wU@wV@wW@wX@wY@wZ@w[@w\@w]@w^@w_@%w`@wa@wb@wc@wd@we@wf@wg@wh@wi@wj@wk@wl@wm@wn@wo@wp@%wq@wr@ws@wt@wu@wv@ww@wx@wy@wz@w{@w|@w}@w~@w@w€@w@%w‚@wƒ@w„@w…@w†@w‡@wˆ@w‰@wŠ@w‹@wŒ@w@wŽ@w@w@w‘@w’@%w“@w”@w•@w–@w—@w˜@w™@wš@w›@wœ@w@wž@wŸ@w @w¡@w¢@w£@%w¤@w¥@w¦@w§@w¨@w©@wª@w«@w¬@w­@w®@w¯@w°@w±@w²@w³@w´@%wµ@w¶@w·@w¸@w¹@wº@w»@w¼@w½@w¾@w¿@wÀ@wÁ@wÂ@wÃ@wÄ@wÅ@%wÆ@wÇ@wÈ@wÉ@wÊ@wË@wÌ@wÍ@wÎ@wÏ@wÐ@wÑ@wÒ@wÓ@wÔ@wÕ@wÖ@%w×@wØ@wÙ@wÚ@wÛ@wÜ@wÝ@wÞ@wß@wà@wá@wâ@wã@wä@wå@wæ@wç@%wè@wé@wê@wë@wì@wí@wî@wï@wð@wñ@wò@wó@wô@wõ@wö@w÷@wø@%wù@wú@wû@wü@wý@wþ@xA@xB@xC@xD@xE@xF@xG@xH@xI@xJ@xK@%xL@xM@xN@xO@xP@xQ@xR@xS@xT@xU@xV@xW@xX@xY@xZ@x[@x\@%x]@x^@x_@x`@xa@xb@xc@xd@xe@xf@xg@xh@xi@xj@xk@xl@xm@%xn@xo@xp@xq@xr@xs@xt@xu@xv@xw@xx@xy@xz@x{@x|@x}@x~@%x@x€@x@x‚@xƒ@x„@x…@x†@x‡@xˆ@x‰@xŠ@x‹@xŒ@x@xŽ@x@%x@x‘@x’@x“@x”@x•@x–@x—@x˜@x™@xš@x›@xœ@x@xž@xŸ@x @%x¡@x¢@x£@x¤@x¥@x¦@x§@x¨@x©@xª@x«@x¬@x­@x®@x¯@x°@x±@%x²@x³@x´@xµ@x¶@x·@x¸@x¹@xº@x»@x¼@x½@x¾@x¿@xÀ@xÁ@xÂ@%xÃ@xÄ@xÅ@xÆ@xÇ@xÈ@xÉ@xÊ@xË@xÌ@xÍ@xÎ@xÏ@xÐ@xÑ@xÒ@xÓ@%xÔ@xÕ@xÖ@x×@xØ@xÙ@xÚ@xÛ@xÜ@xÝ@xÞ@xß@xà@xá@xâ@xã@xä@%xå@xæ@xç@xè@xé@xê@xë@xì@xí@xî@xï@xð@xñ@xò@xó@xô@xõ@%xö@x÷@xø@xù@xú@xû@xü@xý@xþ@yA@yB@yC@yD@yE@yF@yG@yH@%yI@yJ@yK@yL@yM@yN@yO@yP@yQ@yR@yS@yT@yU@yV@yW@yX@yY@%yZ@y[@y\@y]@y^@y_@y`@ya@yb@yc@yd@ye@yf@yg@yh@yi@yj@%yk@yl@ym@yn@yo@yp@yq@yr@ys@yt@yu@yv@yw@yx@yy@yz@y{@%y|@y}@y~@y@y€@y@y‚@yƒ@y„@y…@y†@y‡@yˆ@y‰@yŠ@y‹@yŒ@%y@yŽ@y@y@y‘@y’@y“@y”@y•@y–@y—@y˜@y™@yš@y›@yœ@y@%yž@yŸ@y @y¡@y¢@y£@y¤@y¥@y¦@y§@y¨@y©@yª@y«@y¬@y­@y®@%y¯@y°@y±@y²@y³@y´@yµ@y¶@y·@y¸@y¹@yº@y»@y¼@y½@y¾@y¿@%yÀ@yÁ@yÂ@yÃ@yÄ@yÅ@yÆ@yÇ@yÈ@yÉ@yÊ@yË@yÌ@yÍ@yÎ@yÏ@yÐ@%yÑ@yÒ@yÓ@yÔ@yÕ@yÖ@y×@yØ@yÙ@yÚ@yÛ@yÜ@yÝ@yÞ@yß@yà@yá@%yâ@yã@yä@yå@yæ@yç@yè@yé@yê@yë@yì@yí@yî@yï@yð@yñ@yò@%yó@yô@yõ@yö@y÷@yø@yù@yú@yû@yü@yý@yþ@zA@zB@zC@zD@zE@%zF@zG@zH@zI@zJ@zK@zL@zM@zN@zO@zP@zQ@zR@zS@zT@zU@zV@%zW@zX@zY@zZ@z[@z\@z]@z^@z_@z`@za@zb@zc@zd@ze@zf@zg@%zh@zi@zj@zk@zl@zm@zn@zo@zp@zq@zr@zs@zt@zu@zv@zw@zx@%zy@zz@z{@z|@z}@z~@z@z€@z@z‚@zƒ@z„@z…@z†@z‡@zˆ@z‰@%zŠ@z‹@zŒ@z@zŽ@z@z@z‘@z’@z“@z”@z•@z–@z—@z˜@z™@zš@%z›@zœ@z@zž@zŸ@z @z¡@z¢@z£@z¤@z¥@z¦@z§@z¨@z©@zª@z«@%z¬@z­@z®@z¯@z°@z±@z²@z³@z´@zµ@z¶@z·@z¸@z¹@zº@z»@z¼@%z½@z¾@z¿@zÀ@zÁ@zÂ@zÃ@zÄ@zÅ@zÆ@zÇ@zÈ@zÉ@zÊ@zË@zÌ@zÍ@%zÎ@zÏ@zÐ@zÑ@zÒ@zÓ@zÔ@zÕ@zÖ@z×@zØ@zÙ@zÚ@zÛ@zÜ@zÝ@zÞ@%zß@zà@zá@zâ@zã@zä@zå@zæ@zç@zè@zé@zê@zë@zì@zí@zî@zï@%zð@zñ@zò@zó@zô@zõ@zö@z÷@zø@zù@zú@zû@zü@zý@zþ@{A@{B@%{C@{D@{E@{F@{G@{H@{I@{J@{K@{L@{M@{N@{O@{P@{Q@{R@{S@%{T@{U@{V@{W@{X@{Y@{Z@{[@{\@{]@{^@{_@{`@{a@{b@{c@{d@%{e@{f@{g@{h@{i@{j@{k@{l@{m@{n@{o@{p@{q@{r@{s@{t@{u@%{v@{w@{x@{y@{z@{{@{|@{}@{~@{@{€@{@{‚@{ƒ@{„@{…@{†@%{‡@{ˆ@{‰@{Š@{‹@{Œ@{@{Ž@{@{@{‘@{’@{“@{”@{•@{–@{—@%{˜@{™@{š@{›@{œ@{@{ž@{Ÿ@{ @{¡@{¢@{£@{¤@{¥@{¦@{§@{¨@%{©@{ª@{«@{¬@{­@{®@{¯@{°@{±@{²@{³@{´@{µ@{¶@{·@{¸@{¹@%{º@{»@{¼@{½@{¾@{¿@{À@{Á@{Â@{Ã@{Ä@{Å@{Æ@{Ç@{È@{É@{Ê@%{Ë@{Ì@{Í@{Î@{Ï@{Ð@{Ñ@{Ò@{Ó@{Ô@{Õ@{Ö@{×@{Ø@{Ù@{Ú@{Û@%{Ü@{Ý@{Þ@{ß@{à@{á@{â@{ã@{ä@{å@{æ@{ç@{è@{é@{ê@{ë@{ì@%{í@{î@{ï@{ð@{ñ@{ò@{ó@{ô@{õ@{ö@{÷@{ø@{ù@{ú@{û@{ü@{ý@%{þ@|A@|B@|C@|D@|E@|F@|G@|H@|I@|J@|K@|L@|M@|N@|O@|P@%|Q@|R@|S@|T@|U@|V@|W@|X@|Y@|Z@|[@|\@|]@|^@|_@|`@|a@%|b@|c@|d@|e@|f@|g@|h@|i@|j@|k@|l@|m@|n@|o@|p@|q@|r@%|s@|t@|u@|v@|w@|x@|y@|z@|{@||@|}@|~@|@|€@|@|‚@|ƒ@%|„@|…@|†@|‡@|ˆ@|‰@|Š@|‹@|Œ@|@|Ž@|@|@|‘@|’@|“@|”@%|•@|–@|—@|˜@|™@|š@|›@|œ@|@|ž@|Ÿ@| @|¡@|¢@|£@|¤@|¥@%|¦@|§@|¨@|©@|ª@|«@|¬@|­@|®@|¯@|°@|±@|²@|³@|´@|µ@|¶@%|·@|¸@|¹@|º@|»@|¼@|½@|¾@|¿@|À@|Á@|Â@|Ã@|Ä@|Å@|Æ@|Ç@%|È@|É@|Ê@|Ë@|Ì@|Í@|Î@|Ï@|Ð@|Ñ@|Ò@|Ó@|Ô@|Õ@|Ö@|×@|Ø@%|Ù@|Ú@|Û@|Ü@|Ý@|Þ@|ß@|à@|á@|â@|ã@|ä@|å@|æ@|ç@|è@|é@%|ê@|ë@|ì@|í@|î@|ï@|ð@|ñ@|ò@|ó@|ô@|õ@|ö@|÷@|ø@|ù@|ú@%|û@|ü@|ý@|þ@}A@}B@}C@}D@}E@}F@}G@}H@}I@}J@}K@}L@}M@%}N@}O@}P@}Q@}R@}S@}T@}U@}V@}W@}X@}Y@}Z@}[@}\@}]@}^@%}_@}`@}a@}b@}c@}d@}e@}f@}g@}h@}i@}j@}k@}l@}m@}n@}o@%}p@}q@}r@}s@}t@}u@}v@}w@}x@}y@}z@}{@}|@}}@}~@}@}€@%}@}‚@}ƒ@}„@}…@}†@}‡@}ˆ@}‰@}Š@}‹@}Œ@}@}Ž@}@}@}‘@%}’@}“@}”@}•@}–@}—@}˜@}™@}š@}›@}œ@}@}ž@}Ÿ@} @}¡@}¢@%}£@}¤@}¥@}¦@}§@}¨@}©@}ª@}«@}¬@}­@}®@}¯@}°@}±@}²@}³@%}´@}µ@}¶@}·@}¸@}¹@}º@}»@}¼@}½@}¾@}¿@}À@}Á@}Â@}Ã@}Ä@%}Å@}Æ@}Ç@}È@}É@}Ê@}Ë@}Ì@}Í@}Î@}Ï@}Ð@}Ñ@}Ò@}Ó@}Ô@}Õ@%}Ö@}×@}Ø@}Ù@}Ú@}Û@}Ü@}Ý@}Þ@}ß@}à@}á@}â@}ã@}ä@}å@}æ@%}ç@}è@}é@}ê@}ë@}ì@}í@}î@}ï@}ð@}ñ@}ò@}ó@}ô@}õ@}ö@}÷@%}ø@}ù@}ú@}û@}ü@}ý@}þ@~A@~B@~C@~D@~E@~F@~G@~H@~I@~J@%~K@~L@~M@~N@~O@~P@~Q@~R@~S@~T@~U@~V@~W@~X@~Y@~Z@~[@%~\@~]@~^@~_@~`@~a@~b@~c@~d@~e@~f@~g@~h@~i@~j@~k@~l@%~m@~n@~o@~p@~q@~r@~s@~t@~u@~v@~w@~x@~y@~z@~{@~|@~}@%~~@~@~€@~@~‚@~ƒ@~„@~…@~†@~‡@~ˆ@~‰@~Š@~‹@~Œ@~@~Ž@%~@~@~‘@~’@~“@~”@~•@~–@~—@~˜@~™@~š@~›@~œ@~@~ž@~Ÿ@%~ @~¡@~¢@~£@~¤@~¥@~¦@~§@~¨@~©@~ª@~«@~¬@~­@~®@~¯@~°@%~±@~²@~³@~´@~µ@~¶@~·@~¸@~¹@~º@~»@~¼@~½@~¾@~¿@~À@~Á@%~Â@~Ã@~Ä@~Å@~Æ@~Ç@~È@~É@~Ê@~Ë@~Ì@~Í@~Î@~Ï@~Ð@~Ñ@~Ò@%~Ó@~Ô@~Õ@~Ö@~×@~Ø@~Ù@~Ú@~Û@~Ü@~Ý@~Þ@~ß@~à@~á@~â@~ã@%~ä@~å@~æ@~ç@~è@~é@~ê@~ë@~ì@~í@~î@~ï@~ð@~ñ@~ò@~ó@~ô@%~õ@~ö@~÷@~ø@~ù@~ú@~û@~ü@~ý@~þ@A@B@C@D@E@F@G@%H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@%Y@Z@[@\@]@^@_@`@a@b@c@d@e@f@g@h@i@%j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@%{@|@}@~@@€@@‚@ƒ@„@…@†@‡@ˆ@‰@Š@‹@%Œ@@Ž@@@‘@’@“@”@•@–@—@˜@™@š@›@œ@%@ž@Ÿ@ @¡@¢@£@¤@¥@¦@§@¨@©@ª@«@¬@­@%®@¯@°@±@²@³@´@µ@¶@·@¸@¹@º@»@¼@½@¾@%¿@À@Á@Â@Ã@Ä@Å@Æ@Ç@È@É@Ê@Ë@Ì@Í@Î@Ï@%Ð@Ñ@Ò@Ó@Ô@Õ@Ö@×@Ø@Ù@Ú@Û@Ü@Ý@Þ@ß@à@%á@â@ã@ä@å@æ@ç@è@é@ê@ë@ì@í@î@ï@ð@ñ@%ò@ó@ô@õ@ö@÷@ø@ù@ú@û@ü@ý@þ@Dn@[É@ft@WŽ@%Xw@X‚@Y€@[®@\f@\x@^I@^Š@_z@_Ò@_Õ@_Ù@_Ý@`Y@`­@aw@b¹@%bÎ@bâ@cî@dŽ@dñ@eI@ef@e¸@eÆ@fx@fÝ@fß@fæ@gô@BZ@B@B{@%Bà@Bl@BP@B}@BM@B]@B\@BN@Bk@B`@BK@Ba@Bð@Bñ@Bò@Bó@Bô@%Bõ@Bö@B÷@Bø@Bù@Bz@B^@BL@B~@Bn@Bo@B|@BÁ@BÂ@BÃ@BÄ@BÅ@%BÆ@BÇ@BÈ@BÉ@BÑ@BÒ@BÓ@BÔ@BÕ@BÖ@B×@BØ@BÙ@Bâ@Bã@Bä@Bå@%Bæ@Bç@Bè@Bé@DD@Cà@DE@Dp@Bm@By@B@B‚@Bƒ@B„@B…@B†@B‡@%Bˆ@B‰@B‘@B’@B“@B”@B•@B–@B—@B˜@B™@B¢@B£@B¤@B¥@B¦@B§@%B¨@B©@BÀ@BO@BÐ@C¡@CJ@BJ@B_@B¡@Bj@B[@% \ No newline at end of file diff -adurpN glibc-2.2/iconvdata/tst-table-from.c glibc-2.2.1/iconvdata/tst-table-from.c --- glibc-2.2/iconvdata/tst-table-from.c Mon Sep 18 15:42:24 2000 +++ glibc-2.2.1/iconvdata/tst-table-from.c Sat Jan 6 20:35:15 2001 @@ -222,5 +222,5 @@ main (int argc, char *argv[]) exit (1); } - exit (0); + return 0; } diff -adurpN glibc-2.2/iconvdata/tst-table-to.c glibc-2.2.1/iconvdata/tst-table-to.c --- glibc-2.2/iconvdata/tst-table-to.c Mon Sep 18 15:42:24 2000 +++ glibc-2.2.1/iconvdata/tst-table-to.c Sat Jan 6 20:35:15 2001 @@ -36,7 +36,7 @@ main (int argc, char *argv[]) if (argc != 2) { fprintf (stderr, "Usage: tst-table-to charset\n"); - exit (1); + return 1; } charset = argv[1]; @@ -44,7 +44,7 @@ main (int argc, char *argv[]) if (cd == (iconv_t)(-1)) { perror ("iconv_open"); - exit (1); + return 1; } { @@ -69,7 +69,7 @@ main (int argc, char *argv[]) fprintf (stderr, "0x%02X: iconv error: ", i); errno = saved_errno; perror (""); - exit (1); + return 1; } } else if (result == 0) /* ignore conversions with transliteration */ @@ -80,7 +80,7 @@ main (int argc, char *argv[]) fprintf (stderr, "0x%02X: inbytes = %ld, outbytes = %ld\n", i, (long) (sizeof (unsigned short) - inbytesleft), (long) (sizeof (buf) - outbytesleft)); - exit (1); + return 1; } jmax = sizeof (buf) - outbytesleft; printf ("0x"); @@ -94,14 +94,14 @@ main (int argc, char *argv[]) if (iconv_close (cd) < 0) { perror ("iconv_close"); - exit (1); + return 1; } if (ferror (stdin) || fflush (stdout) || ferror (stdout)) { fprintf (stderr, "I/O error\n"); - exit (1); + return 1; } - exit (0); + return 0; } diff -adurpN glibc-2.2/iconvdata/unicode.c glibc-2.2.1/iconvdata/unicode.c --- glibc-2.2/iconvdata/unicode.c Mon Sep 18 15:42:24 2000 +++ glibc-2.2.1/iconvdata/unicode.c Fri Dec 1 11:55:06 2000 @@ -89,6 +89,7 @@ struct unicode_data }; +extern int gconv_init (struct __gconv_step *step); int gconv_init (struct __gconv_step *step) { @@ -135,6 +136,7 @@ gconv_init (struct __gconv_step *step) } +extern void gconv_end (struct __gconv_step *data); void gconv_end (struct __gconv_step *data) { diff -adurpN glibc-2.2/iconvdata/utf-16.c glibc-2.2.1/iconvdata/utf-16.c --- glibc-2.2/iconvdata/utf-16.c Thu Nov 2 16:50:08 2000 +++ glibc-2.2.1/iconvdata/utf-16.c Fri Dec 1 11:55:06 2000 @@ -100,6 +100,7 @@ struct utf16_data }; +extern int gconv_init (struct __gconv_step *step); int gconv_init (struct __gconv_step *step) { @@ -180,6 +181,7 @@ gconv_init (struct __gconv_step *step) } +extern void gconv_end (struct __gconv_step *data); void gconv_end (struct __gconv_step *data) { diff -adurpN glibc-2.2/include/aliases.h glibc-2.2.1/include/aliases.h --- glibc-2.2/include/aliases.h Fri Jun 20 18:15:51 1997 +++ glibc-2.2.1/include/aliases.h Sat Jan 6 20:35:16 2001 @@ -1 +1,36 @@ +#ifndef _ALIASES_H #include + +extern int __getaliasent_r (struct aliasent *__restrict __result_buf, + char *__restrict __buffer, size_t __buflen, + struct aliasent **__restrict __result); +extern int __old_getaliasent_r (struct aliasent *__restrict __result_buf, + char *__restrict __buffer, size_t __buflen, + struct aliasent **__restrict __result); + +extern int __getaliasbyname_r (__const char *__restrict __name, + struct aliasent *__restrict __result_buf, + char *__restrict __buffer, size_t __buflen, + struct aliasent **__restrict __result); +extern int __old_getaliasbyname_r (__const char *__restrict __name, + struct aliasent *__restrict __result_buf, + char *__restrict __buffer, size_t __buflen, + struct aliasent **__restrict __result); + +#define DECLARE_NSS_PROTOTYPES(service) \ +extern enum nss_status _nss_ ## service ## _setaliasent (void); \ +extern enum nss_status _nss_ ## service ## _endaliasent (void); \ +extern enum nss_status _nss_ ## service ## _getaliasent_r \ + (struct aliasent *alias, char *buffer, size_t buflen, \ + int *errnop); \ +extern enum nss_status _nss_ ## service ## _getaliasbyname_r \ + (const char *name, struct aliasent *alias, \ + char *buffer, size_t buflen, int *errnop); + + +DECLARE_NSS_PROTOTYPES (files) +DECLARE_NSS_PROTOTYPES (nis) +DECLARE_NSS_PROTOTYPES (nisplus) +#undef DECLARE_NSS_PROTOTYPES + +#endif diff -adurpN glibc-2.2/include/fenv.h glibc-2.2.1/include/fenv.h --- glibc-2.2/include/fenv.h Fri Jul 31 23:26:00 1998 +++ glibc-2.2.1/include/fenv.h Sat Jan 6 20:35:16 2001 @@ -1 +1,14 @@ +#ifndef _FENV_H #include + +/* Now define the internal interfaces. */ + +extern int __feclearexcept (int __excepts); +extern int __fegetexceptflag (fexcept_t *__flagp, int __excepts); +extern int __feraiseexcept (int __excepts); +extern int __fesetexceptflag (__const fexcept_t *__flagp, int __excepts); +extern int __fegetenv (fenv_t *__envp); +extern int __fesetenv (__const fenv_t *__envp); +extern int __feupdateenv (__const fenv_t *__envp); + +#endif diff -adurpN glibc-2.2/include/getopt.h glibc-2.2.1/include/getopt.h --- glibc-2.2/include/getopt.h Fri Jun 20 18:17:05 1997 +++ glibc-2.2.1/include/getopt.h Sat Jan 6 20:35:16 2001 @@ -1 +1,8 @@ +#ifndef _GETOPT_H + #include + +/* Now define the internal interfaces. */ +extern void __getopt_clean_environment (char **__env); + +#endif diff -adurpN glibc-2.2/include/gmp.h glibc-2.2.1/include/gmp.h --- glibc-2.2/include/gmp.h Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/include/gmp.h Tue Dec 5 09:28:08 2000 @@ -0,0 +1,23 @@ +#ifndef __GMP_H__ + +#include + +/* Now define the internal interfaces. */ +extern mp_size_t __mpn_extract_double (mp_ptr res_ptr, mp_size_t size, + int *expt, int *is_neg, + double value); + +extern mp_size_t __mpn_extract_long_double (mp_ptr res_ptr, mp_size_t size, + int *expt, int *is_neg, + long double value); + +extern float __mpn_construct_float (mp_srcptr frac_ptr, int expt, int sign); + +extern double __mpn_construct_double (mp_srcptr frac_ptr, int expt, + int negative); + +extern long double __mpn_construct_long_double (mp_srcptr frac_ptr, int expt, + int sign); + + +#endif diff -adurpN glibc-2.2/include/grp.h glibc-2.2.1/include/grp.h --- glibc-2.2/include/grp.h Tue Nov 23 09:36:34 1999 +++ glibc-2.2.1/include/grp.h Sat Jan 6 20:35:16 2001 @@ -4,6 +4,8 @@ /* Now define the internal interfaces. */ extern int __getgrent_r (struct group *__resultbuf, char *buffer, size_t __buflen, struct group **__result); +extern int __old_getgrent_r (struct group *__resultbuf, char *buffer, + size_t __buflen, struct group **__result); extern int __fgetgrent_r (FILE * __stream, struct group *__resultbuf, char *buffer, size_t __buflen, struct group **__result); @@ -12,9 +14,45 @@ extern int __fgetgrent_r (FILE * __strea extern int __getgrgid_r (__gid_t __gid, struct group *__resultbuf, char *__buffer, size_t __buflen, struct group **__result); +extern int __old_getgrgid_r (__gid_t __gid, struct group *__resultbuf, + char *__buffer, size_t __buflen, + struct group **__result); /* Search for an entry with a matching group name. */ extern int __getgrnam_r (__const char *__name, struct group *__resultbuf, char *__buffer, size_t __buflen, struct group **__result); +extern int __old_getgrnam_r (__const char *__name, struct group *__resultbuf, + char *__buffer, size_t __buflen, + struct group **__result); + +struct parser_data; +extern int _nss_files_parse_grent (char *line, struct group *result, + struct parser_data *data, + size_t datalen, int *errnop); + +#define DECLARE_NSS_PROTOTYPES(service) \ +extern enum nss_status _nss_ ## service ## _setgrent (int); \ +extern enum nss_status _nss_ ## service ## _endgrent (void); \ +extern enum nss_status _nss_ ## service ## _getgrgid_r \ + (gid_t gid, struct group *grp, char *buffer, \ + size_t buflen, int *errnop); \ +extern enum nss_status _nss_ ## service ## _getgrnam_r \ + (const char *name, struct group *grp, \ + char *buffer, size_t buflen, int *errnop); \ +extern enum nss_status _nss_ ## service ##_getgrent_r \ + (struct group *result, char *buffer, size_t buflen, \ + int *errnop); \ +extern enum nss_status _nss_ ## service ##_initgroups_dyn \ + (const char *user, gid_t group, long int *start, \ + long int *size, gid_t **groupsp, long int limit, \ + int *errnop); + +DECLARE_NSS_PROTOTYPES (compat) +DECLARE_NSS_PROTOTYPES (files) +DECLARE_NSS_PROTOTYPES (hesiod) +DECLARE_NSS_PROTOTYPES (nis) +DECLARE_NSS_PROTOTYPES (nisplus) + +#undef DECLARE_NSS_PROTOTYPES #endif diff -adurpN glibc-2.2/include/libc-internal.h glibc-2.2.1/include/libc-internal.h --- glibc-2.2/include/libc-internal.h Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/include/libc-internal.h Sun Dec 31 11:12:37 2000 @@ -0,0 +1,27 @@ +/* This file contains a number of internal prototype declarations that + don't fit anywhere else. */ + +#ifndef _LIBC_INTERNAL +# define _LIBC_INTERNAL 1 + +/* Initialize the `__libc_enable_secure' flag. */ +extern void __libc_init_secure (void); + +/* This function will be called from _init in init-first.c. */ +extern void __libc_global_ctors (void); + +/* Discover the tick frequency of the machine if something goes wrong, + we return 0, an impossible hertz. */ +extern int __profile_frequency (void); + +/* Hooks for the instrumenting functions. */ +extern void __cyg_profile_func_enter (void *this_fn, void *call_site); +extern void __cyg_profile_func_exit (void *this_fn, void *call_site); + +/* Get frequency of the system processor. */ +extern unsigned long long int __get_clockfreq (void); + +/* Free all allocated resources. */ +extern void __libc_freeres (void); + +#endif /* _LIBC_INTERNAL */ diff -adurpN glibc-2.2/include/libc-symbols.h glibc-2.2.1/include/libc-symbols.h --- glibc-2.2/include/libc-symbols.h Tue Oct 17 14:53:57 2000 +++ glibc-2.2.1/include/libc-symbols.h Sat Jan 6 20:35:16 2001 @@ -80,6 +80,10 @@ # define ASM_LINE_SEP ; #endif +#ifndef C_SYMBOL_DOT_NAME +# define C_SYMBOL_DOT_NAME(name) .##name +#endif + #ifndef __ASSEMBLER__ /* GCC understands weak symbols and aliases; use its interface where possible, instead of embedded assembly language. */ @@ -124,9 +128,17 @@ ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \ .set C_SYMBOL_NAME (alias),C_SYMBOL_NAME (original) # else -# define strong_alias(original, alias) \ +# ifdef HAVE_ASM_GLOBAL_DOT_NAME +# define strong_alias(original, alias) \ + ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \ + C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) ASM_LINE_SEP \ + ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \ + C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original) +# else +# define strong_alias(original, alias) \ ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \ C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) +# endif # endif # ifdef HAVE_WEAK_SYMBOLS @@ -138,9 +150,17 @@ # else /* ! HAVE_ASM_WEAKEXT_DIRECTIVE */ -# define weak_alias(original, alias) \ +# ifdef HAVE_ASM_GLOBAL_DOT_NAME +# define weak_alias(original, alias) \ + .weak C_SYMBOL_NAME (alias) ASM_LINE_SEP \ + C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) ASM_LINE_SEP \ + .weak C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \ + C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original) +# else +# define weak_alias(original, alias) \ .weak C_SYMBOL_NAME (alias) ASM_LINE_SEP \ C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) +# endif # define weak_extern(symbol) \ .weak C_SYMBOL_NAME (symbol) diff -adurpN glibc-2.2/include/locale.h glibc-2.2.1/include/locale.h --- glibc-2.2/include/locale.h Fri Jun 20 18:17:22 1997 +++ glibc-2.2.1/include/locale.h Sat Jan 6 20:35:16 2001 @@ -1 +1,7 @@ +#ifndef _LOCALE_H #include + +/* Now define the internal interfaces. */ +extern struct lconv *__localeconv (void); + +#endif diff -adurpN glibc-2.2/include/netdb.h glibc-2.2.1/include/netdb.h --- glibc-2.2/include/netdb.h Wed Aug 2 14:52:09 2000 +++ glibc-2.2.1/include/netdb.h Sat Jan 6 20:35:16 2001 @@ -6,6 +6,10 @@ extern int __gethostent_r (struct hosten char *__restrict __buf, size_t __buflen, struct hostent **__restrict __result, int *__restrict __h_errnop); +extern int __old_gethostent_r (struct hostent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct hostent **__restrict __result, + int *__restrict __h_errnop); extern int __gethostbyaddr_r (__const void *__restrict __addr, socklen_t __len, int __type, @@ -13,65 +17,119 @@ extern int __gethostbyaddr_r (__const vo char *__restrict __buf, size_t __buflen, struct hostent **__restrict __result, int *__restrict __h_errnop); +extern int __old_gethostbyaddr_r (__const void *__restrict __addr, + socklen_t __len, int __type, + struct hostent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct hostent **__restrict __result, + int *__restrict __h_errnop); extern int __gethostbyname_r (__const char *__restrict __name, struct hostent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct hostent **__restrict __result, int *__restrict __h_errnop); +extern int __old_gethostbyname_r (__const char *__restrict __name, + struct hostent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct hostent **__restrict __result, + int *__restrict __h_errnop); extern int __gethostbyname2_r (__const char *__restrict __name, int __af, struct hostent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct hostent **__restrict __result, int *__restrict __h_errnop); +extern int __old_gethostbyname2_r (__const char *__restrict __name, int __af, + struct hostent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct hostent **__restrict __result, + int *__restrict __h_errnop); extern int __getnetent_r (struct netent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct netent **__restrict __result, int *__restrict __h_errnop); +extern int __old_getnetent_r (struct netent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct netent **__restrict __result, + int *__restrict __h_errnop); extern int __getnetbyaddr_r (uint32_t __net, int __type, struct netent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct netent **__restrict __result, int *__restrict __h_errnop); +extern int __old_getnetbyaddr_r (uint32_t __net, int __type, + struct netent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct netent **__restrict __result, + int *__restrict __h_errnop); extern int __getnetbyname_r (__const char *__restrict __name, struct netent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct netent **__restrict __result, int *__restrict __h_errnop); +extern int __old_getnetbyname_r (__const char *__restrict __name, + struct netent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct netent **__restrict __result, + int *__restrict __h_errnop); extern int __getservent_r (struct servent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct servent **__restrict __result); +extern int __old_getservent_r (struct servent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct servent **__restrict __result); extern int __getservbyname_r (__const char *__restrict __name, __const char *__restrict __proto, struct servent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct servent **__restrict __result); +extern int __old_getservbyname_r (__const char *__restrict __name, + __const char *__restrict __proto, + struct servent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct servent **__restrict __result); extern int __getservbyport_r (int __port, __const char *__restrict __proto, struct servent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct servent **__restrict __result); +extern int __old_getservbyport_r (int __port, + __const char *__restrict __proto, + struct servent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct servent **__restrict __result); extern int __getprotoent_r (struct protoent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct protoent **__restrict __result); +extern int __old_getprotoent_r (struct protoent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct protoent **__restrict __result); extern int __getprotobyname_r (__const char *__restrict __name, struct protoent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct protoent **__restrict __result); +extern int __old_getprotobyname_r (__const char *__restrict __name, + struct protoent *__restrict __result_buf, + char *__restrict __buf, size_t __buflen, + struct protoent **__restrict __result); extern int __getprotobynumber_r (int __proto, struct protoent *__restrict __res_buf, char *__restrict __buf, size_t __buflen, struct protoent **__restrict __result); +extern int __old_getprotobynumber_r (int __proto, + struct protoent *__restrict __res_buf, + char *__restrict __buf, size_t __buflen, + struct protoent **__restrict __result); extern int __getnetgrent_r (char **__restrict __hostp, char **__restrict __userp, @@ -85,10 +143,97 @@ extern int ruserpass (const char *host, /* The following declarations and definitions have been removed from the public header since we don't want people to use them. */ -#define AI_V4MAPPED 0x0008 /* IPv4-mapped addresses are acceptable. */ -#define AI_ALL 0x0010 /* Return both IPv4 and IPv6 addresses. */ -#define AI_ADDRCONFIG 0x0020 /* Use configuration of this host to choose - returned address type. */ +#define AI_V4MAPPED 0x0008 /* IPv4-mapped addresses are acceptable. */ +#define AI_ALL 0x0010 /* Return both IPv4 and IPv6 addresses. */ +#define AI_ADDRCONFIG 0x0020 /* Use configuration of this host to choose + returned address type. */ #define AI_DEFAULT (AI_V4MAPPED | AI_ADDRCONFIG) + +#include + +struct parser_data; +extern int _nss_files_parse_protoent (char *line, struct protoent *result, + struct parser_data *data, + size_t datalen, int *errnop); +extern int _nss_files_parse_servent (char *line, struct servent *result, + struct parser_data *data, + size_t datalen, int *errnop); +extern int _nss_files_parse_netent (char *line, struct netent *result, + struct parser_data *data, + size_t datalen, int *errnop); +extern enum nss_status _nss_netgroup_parseline (char **cursor, + struct __netgrent *result, + char *buffer, size_t buflen, + int *errnop); + + +#define DECLARE_NSS_PROTOTYPES(service) \ +extern enum nss_status _nss_ ## service ## _setprotoent (int); \ +extern enum nss_status _nss_ ## service ## _endprotoent (void); \ +extern enum nss_status _nss_ ## service ## _getprotoent_r \ + (struct protoent *proto, char *buffer, size_t buflen, \ + int *errnop); \ +extern enum nss_status _nss_ ## service ## _getprotobyname_r \ + (const char *name, struct protoent *proto, \ + char *buffer, size_t buflen, int *errnop); \ +extern enum nss_status _nss_ ## service ## _getprotobynumber_r \ + (int number, struct protoent *proto, \ + char *buffer, size_t buflen, int *errnop); \ +extern enum nss_status _nss_ ## service ## _sethostent (int); \ +extern enum nss_status _nss_ ## service ## _endhostent (void); \ +extern enum nss_status _nss_ ## service ## _gethostent_r \ + (struct hostent *host, char *buffer, size_t buflen, \ + int *errnop, int *h_errnop); \ +extern enum nss_status _nss_ ## service ## _gethostbyname2_r \ + (const char *name, int af, struct hostent *host, \ + char *buffer, size_t buflen, int *errnop, \ + int *h_errnop); \ +extern enum nss_status _nss_ ## service ## _gethostbyname_r \ + (const char *name, struct hostent *host, char *buffer, \ + size_t buflen, int *errnop, int *h_errnop); \ +extern enum nss_status _nss_ ## service ## _gethostbyaddr_r \ + (const void *addr, socklen_t addrlen, int af, \ + struct hostent *host, char *buffer, size_t buflen, \ + int *errnop, int *h_errnop); \ +extern enum nss_status _nss_ ## service ## _setservent (int); \ +extern enum nss_status _nss_ ## service ## _endservent (void); \ +extern enum nss_status _nss_ ## service ## _getservent_r \ + (struct servent *serv, char *buffer, size_t buflen, \ + int *errnop); \ +extern enum nss_status _nss_ ## service ## _getservbyname_r \ + (const char *name, const char *protocol, \ + struct servent *serv, char *buffer, size_t buflen, \ + int *errnop); \ +extern enum nss_status _nss_ ## service ## _getservbyport_r \ + (int port, const char *protocol, struct servent *serv, \ + char *buffer, size_t buflen, int *errnop); \ +extern enum nss_status _nss_ ## service ## _setnetgrent \ + (const char *group, struct __netgrent *result); \ +extern enum nss_status _nss_ ## service ## _endnetgrent \ + (struct __netgrent *result); \ +extern enum nss_status _nss_ ## service ## _getnetgrent_r \ + (struct __netgrent *result, char *buffer, \ + size_t buflen, int *errnop); \ +extern enum nss_status _nss_ ## service ## _setnetent (int stayopen); \ +extern enum nss_status _nss_ ## service ## _endnetent (void); \ +extern enum nss_status _nss_ ## service ## _getnetent_r \ + (struct netent *net, char *buffer, size_t buflen, \ + int *errnop, int *herrnop); \ +extern enum nss_status _nss_ ## service ## _getnetbyname_r \ + (const char *name, struct netent *net, char *buffer, \ + size_t buflen, int *errnop, int *herrnop); \ +extern enum nss_status _nss_ ## service ## _getnetbyaddr_r \ + (uint32_t addr, int type, struct netent *net, \ + char *buffer, size_t buflen, int *errnop, \ + int *herrnop); + +DECLARE_NSS_PROTOTYPES (compat) +DECLARE_NSS_PROTOTYPES (dns) +DECLARE_NSS_PROTOTYPES (files) +DECLARE_NSS_PROTOTYPES (hesiod) +DECLARE_NSS_PROTOTYPES (nis) +DECLARE_NSS_PROTOTYPES (nisplus) + +#undef DECLARE_NSS_PROTOTYPES #endif /* !_NETDB_H */ diff -adurpN glibc-2.2/include/netinet/ether.h glibc-2.2.1/include/netinet/ether.h --- glibc-2.2/include/netinet/ether.h Fri Jun 20 18:19:54 1997 +++ glibc-2.2.1/include/netinet/ether.h Sat Jan 6 20:35:16 2001 @@ -1 +1,38 @@ +#ifndef _NETINET_ETHER_H #include + +/* Because the `ethers' lookup does not fit so well in the scheme we + define a dummy struct here which helps us to use the available + functions. */ +struct etherent +{ + const char *e_name; + struct ether_addr e_addr; +}; + +struct parser_data; +extern int _nss_files_parse_etherent (char *line, struct etherent *result, + struct parser_data *data, + size_t datalen, int *errnop); + +#define DECLARE_NSS_PROTOTYPES(service) \ +extern enum nss_status _nss_ ## service ## _setetherent (int __stayopen); \ +extern enum nss_status _nss_ ## service ## _endetherent (void); \ +extern enum nss_status _nss_ ## service ## _getetherent_r \ + (struct etherent *result, char *buffer, \ + size_t buflen, int *errnop); \ +extern enum nss_status _nss_ ## service ## _gethostton_r \ + (const char *name, struct etherent *eth, \ + char *buffer, size_t buflen, int *errnop); \ +extern enum nss_status _nss_ ## service ## _getntohost_r \ + (const struct ether_addr *addr, \ + struct etherent *eth, \ + char *buffer, size_t buflen, int *errnop); + +DECLARE_NSS_PROTOTYPES (files) +DECLARE_NSS_PROTOTYPES (nis) +DECLARE_NSS_PROTOTYPES (nisplus) + +#undef DECLARE_NSS_PROTOTYPES + +#endif diff -adurpN glibc-2.2/include/printf.h glibc-2.2.1/include/printf.h --- glibc-2.2/include/printf.h Fri Jun 20 18:17:46 1997 +++ glibc-2.2.1/include/printf.h Sat Jan 6 20:35:16 2001 @@ -1 +1,11 @@ +#ifndef _PRINTF_H + #include + +/* Now define the internal interfaces. */ +extern int __printf_fphex (FILE *, const struct printf_info *, + const void *const *); +extern int __printf_fp (FILE *, const struct printf_info *, + const void *const *); + +#endif diff -adurpN glibc-2.2/include/pwd.h glibc-2.2.1/include/pwd.h --- glibc-2.2/include/pwd.h Tue Nov 23 09:36:34 1999 +++ glibc-2.2.1/include/pwd.h Sat Jan 6 20:35:16 2001 @@ -4,13 +4,50 @@ /* Now define the internal interfaces. */ extern int __getpwent_r (struct passwd *__resultbuf, char *__buffer, size_t __buflen, struct passwd **__result); +extern int __old_getpwent_r (struct passwd *__resultbuf, char *__buffer, + size_t __buflen, struct passwd **__result); extern int __getpwuid_r (__uid_t __uid, struct passwd *__resultbuf, char *__buffer, size_t __buflen, struct passwd **__result); +extern int __old_getpwuid_r (__uid_t __uid, struct passwd *__resultbuf, + char *__buffer, size_t __buflen, + struct passwd **__result); extern int __getpwnam_r (__const char *__name, struct passwd *__resultbuf, char *__buffer, size_t __buflen, struct passwd **__result); +extern int __old_getpwnam_r (__const char *__name, struct passwd *__resultbuf, + char *__buffer, size_t __buflen, + struct passwd **__result); extern int __fgetpwent_r (FILE * __stream, struct passwd *__resultbuf, char *__buffer, size_t __buflen, struct passwd **__result); + +#include + +struct parser_data; +extern int _nss_files_parse_pwent (char *line, struct passwd *result, + struct parser_data *data, + size_t datalen, int *errnop); + +#define DECLARE_NSS_PROTOTYPES(service) \ +extern enum nss_status _nss_ ## service ## _setpwent (int); \ +extern enum nss_status _nss_ ## service ## _endpwent (void); \ +extern enum nss_status _nss_ ## service ## _getpwnam_r \ + (const char *name, struct passwd *pwd, \ + char *buffer, size_t buflen, int *errnop); \ +extern enum nss_status _nss_ ## service ## _getpwuid_r \ + (uid_t uid, struct passwd *pwd, \ + char *buffer, size_t buflen, int *errnop); \ +extern enum nss_status _nss_ ## service ##_getpwent_r \ + (struct passwd *result, char *buffer, \ + size_t buflen, int *errnop); + +DECLARE_NSS_PROTOTYPES (compat) +DECLARE_NSS_PROTOTYPES (files) +DECLARE_NSS_PROTOTYPES (hesiod) +DECLARE_NSS_PROTOTYPES (nis) +DECLARE_NSS_PROTOTYPES (nisplus) + +#undef DECLARE_NSS_PROTOTYPES + #endif diff -adurpN glibc-2.2/include/resolv.h glibc-2.2.1/include/resolv.h --- glibc-2.2/include/resolv.h Wed Aug 2 14:52:09 2000 +++ glibc-2.2.1/include/resolv.h Sat Jan 6 20:35:16 2001 @@ -9,4 +9,22 @@ while (0) #include + +/* Now define the internal interfaces. */ +extern int __res_vinit (res_state, int); +extern void _sethtent (int); +extern void _endhtent (void); +extern struct hostent *_gethtent (void); +extern struct hostent *_gethtbyname (const char *__name); +extern struct hostent *_gethtbyname2 (const char *__name, int __af); +struct hostent *_gethtbyaddr (const char *addr, size_t __len, int __af); +extern u_int32_t _getlong (const u_char *__src); +extern u_int16_t _getshort (const u_char *__src); +extern void res_pquery (const res_state __statp, const u_char *__msg, + int __len, FILE *__file); +extern void res_send_setqhook (res_send_qhook __hook); +extern void res_send_setrhook (res_send_rhook __hook); +extern int res_ourserver_p (const res_state __statp, + const struct sockaddr_in6 *__inp); + #endif diff -adurpN glibc-2.2/include/rpc/auth.h glibc-2.2.1/include/rpc/auth.h --- glibc-2.2/include/rpc/auth.h Wed Sep 10 19:46:49 1997 +++ glibc-2.2.1/include/rpc/auth.h Sat Jan 6 20:35:16 2001 @@ -1 +1,19 @@ +#ifndef _RPC_AUTH_H #include + +/* Now define the internal interfaces. */ +struct key_netstarg; +extern int key_setnet (struct key_netstarg *arg); + +#define DECLARE_NSS_PROTOTYPES(service) \ +extern enum nss_status _nss_ ##service ## _netname2user \ + (char netname[MAXNETNAMELEN + 1], uid_t *uidp, \ + gid_t *gidp, int *gidlenp, gid_t *gidlist, \ + int *errnop); + +DECLARE_NSS_PROTOTYPES (nis) +DECLARE_NSS_PROTOTYPES (nisplus) + +#undef DECLARE_NSS_PROTOTYPES + +#endif diff -adurpN glibc-2.2/include/rpc/auth_des.h glibc-2.2.1/include/rpc/auth_des.h --- glibc-2.2/include/rpc/auth_des.h Wed Sep 10 19:46:49 1997 +++ glibc-2.2.1/include/rpc/auth_des.h Sat Jan 6 20:35:16 2001 @@ -1 +1,27 @@ +#ifndef _RPC_AUTH_DES_H + #include + +extern bool_t xdr_authdes_cred (XDR *xdrs, struct authdes_cred *cred); +extern bool_t xdr_authdes_verf (register XDR *xdrs, + register struct authdes_verf *verf); +struct svc_req; +struct rpc_msg; +extern enum auth_stat _svcauth_des (register struct svc_req *rqst, + register struct rpc_msg *msg); + + +#define DECLARE_NSS_PROTOTYPES(service) \ +extern enum nss_status _nss_ ## service ## _getpublickey \ + (const char *netname, char *pkey, int *errnop); \ +extern enum nss_status _nss_ ## service ## _getsecretkey \ + (const char *netname, char *skey, char *passwd, \ + int *errnop); + +DECLARE_NSS_PROTOTYPES (files) +DECLARE_NSS_PROTOTYPES (nis) +DECLARE_NSS_PROTOTYPES (nisplus) + +#undef DECLARE_NSS_PROTOTYPES + +#endif diff -adurpN glibc-2.2/include/rpc/clnt.h glibc-2.2.1/include/rpc/clnt.h --- glibc-2.2/include/rpc/clnt.h Fri Jun 20 18:38:49 1997 +++ glibc-2.2.1/include/rpc/clnt.h Sat Jan 6 20:35:16 2001 @@ -1 +1,7 @@ +#ifndef _RPC_CLNT_H #include + +/* Now define the internal interfaces. */ +extern int _openchild (const char *command, FILE **fto, FILE **ffrom); + +#endif diff -adurpN glibc-2.2/include/rpc/des_crypt.h glibc-2.2.1/include/rpc/des_crypt.h --- glibc-2.2/include/rpc/des_crypt.h Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/include/rpc/des_crypt.h Sun Dec 31 07:34:36 2000 @@ -0,0 +1,9 @@ +#ifndef __DES_CRYPT_H__ +#include + +/* Now define the internal interfaces. */ + +extern int xencrypt (char *secret, char *passwd); +extern int xdecrypt (char *secret, char *passwd); + +#endif diff -adurpN glibc-2.2/include/rpc/netdb.h glibc-2.2.1/include/rpc/netdb.h --- glibc-2.2/include/rpc/netdb.h Fri Jun 20 18:20:53 1997 +++ glibc-2.2.1/include/rpc/netdb.h Sat Jan 6 20:35:16 2001 @@ -1 +1,49 @@ +#ifndef _RPC_NETDB_H #include + +extern int __getrpcbyname_r (__const char *__name, struct rpcent *__result_buf, + char *__buffer, size_t __buflen, + struct rpcent **__result); +extern int __old_getrpcbyname_r (__const char *__name, + struct rpcent *__result_buf, + char *__buffer, size_t __buflen, + struct rpcent **__result); + +extern int __getrpcbynumber_r (int __number, struct rpcent *__result_buf, + char *__buffer, size_t __buflen, + struct rpcent **__result); +extern int __old_getrpcbynumber_r (int __number, struct rpcent *__result_buf, + char *__buffer, size_t __buflen, + struct rpcent **__result); + +extern int __getrpcent_r (struct rpcent *__result_buf, char *__buffer, + size_t __buflen, struct rpcent **__result); +extern int __old_getrpcent_r (struct rpcent *__result_buf, char *__buffer, + size_t __buflen, struct rpcent **__result); + +struct parser_data; +extern int _nss_files_parse_rpcent (char *line, struct rpcent *result, + struct parser_data *data, + size_t datalen, int *errnop); + +#define DECLARE_NSS_PROTOTYPES(service) \ +extern enum nss_status _nss_ ## service ## _setrpcent (int); \ +extern enum nss_status _nss_ ## service ## _endrpcent (void); \ +extern enum nss_status _nss_ ## service ## _getrpcent_r \ + (struct rpcent *rpc, char *buffer, size_t buflen, \ + int *errnop); \ +extern enum nss_status _nss_ ## service ## _getrpcbyname_r \ + (const char *name, struct rpcent *rpc, \ + char *buffer, size_t buflen, int *errnop); \ +extern enum nss_status _nss_ ## service ## _getrpcbynumber_r \ + (int number, struct rpcent *rpc, \ + char *buffer, size_t buflen, int *errnop); + + +DECLARE_NSS_PROTOTYPES (files) +DECLARE_NSS_PROTOTYPES (nis) +DECLARE_NSS_PROTOTYPES (nisplus) + +#undef DECLARE_NSS_PROTOTYPES + +#endif diff -adurpN glibc-2.2/include/rpc/rpc.h glibc-2.2.1/include/rpc/rpc.h --- glibc-2.2/include/rpc/rpc.h Fri Jun 20 18:20:59 1997 +++ glibc-2.2.1/include/rpc/rpc.h Sat Jan 6 20:35:16 2001 @@ -1 +1,7 @@ +#ifndef _RPC_RPC_H #include + +/* Now define the internal interfaces. */ +extern unsigned long _create_xid (void); + +#endif diff -adurpN glibc-2.2/include/rpc/rpc_msg.h glibc-2.2.1/include/rpc/rpc_msg.h --- glibc-2.2/include/rpc/rpc_msg.h Fri Jun 20 18:21:01 1997 +++ glibc-2.2.1/include/rpc/rpc_msg.h Sat Jan 6 20:35:19 2001 @@ -1 +1,10 @@ +#ifndef _RPC_MSG_H #include + +/* Now define the internal interfaces. */ + +extern bool_t xdr_rejected_reply (XDR *xdrs, struct rejected_reply *rr); +extern bool_t xdr_accepted_reply (XDR *xdrs, struct accepted_reply *ar); + + +#endif diff -adurpN glibc-2.2/include/rpc/svc.h glibc-2.2.1/include/rpc/svc.h --- glibc-2.2/include/rpc/svc.h Fri Jun 20 18:21:05 1997 +++ glibc-2.2.1/include/rpc/svc.h Sat Jan 6 20:35:19 2001 @@ -1 +1,14 @@ +#ifndef _RPC_SVC_H #include + +/* Now define the internal interfaces. */ +extern int registerrpc (u_long prognum, u_long versnum, u_long procnum, + char *(*progname) (char *), xdrproc_t inproc, + xdrproc_t outproc); + +extern SVCXPRT *svcfd_create (int fd, u_int sendsize, u_int recvsize); + +extern int svcudp_enablecache (SVCXPRT *transp, u_long size); +extern SVCXPRT *svcunixfd_create (int fd, u_int sendsize, u_int recvsize); + +#endif diff -adurpN glibc-2.2/include/rpc/svc_auth.h glibc-2.2.1/include/rpc/svc_auth.h --- glibc-2.2/include/rpc/svc_auth.h Fri Jun 20 18:21:07 1997 +++ glibc-2.2.1/include/rpc/svc_auth.h Sat Jan 6 20:35:19 2001 @@ -1 +1,12 @@ +#ifndef _RPC_SVC_AUTH_H #include + +/* Now define the internal interfaces. */ +extern enum auth_stat _svcauth_unix (struct svc_req *rqst, + struct rpc_msg *msg); +extern enum auth_stat _svcauth_short (struct svc_req *rqst, + struct rpc_msg *msg); + + + +#endif diff -adurpN glibc-2.2/include/set-hooks.h glibc-2.2.1/include/set-hooks.h --- glibc-2.2/include/set-hooks.h Wed Aug 2 14:52:09 2000 +++ glibc-2.2.1/include/set-hooks.h Wed Nov 22 10:59:47 2000 @@ -52,7 +52,8 @@ do { \ which calls each function on the hook in turn, with ARGS. */ # define DEFINE_HOOK_RUNNER(name, runner, proto, args) \ -DEFINE_HOOK (name, proto); void runner proto { RUN_HOOK (name, args); } +DEFINE_HOOK (name, proto); \ +extern void runner proto; void runner proto { RUN_HOOK (name, args); } #else diff -adurpN glibc-2.2/include/setjmp.h glibc-2.2.1/include/setjmp.h --- glibc-2.2/include/setjmp.h Tue Nov 23 09:36:34 1999 +++ glibc-2.2.1/include/setjmp.h Sat Jan 6 20:35:16 2001 @@ -12,4 +12,10 @@ extern void __longjmp (__jmp_buf __env, This is used by the machine-dependent definition of `__sigsetjmp'. Always returns zero, for convenience. */ extern int __sigjmp_save (jmp_buf __env, int __savemask); + +extern void _longjmp_unwind (jmp_buf env, int val); + +extern void __libc_siglongjmp (sigjmp_buf __env, int __val) + __attribute__ ((noreturn)); + #endif diff -adurpN glibc-2.2/include/shadow.h glibc-2.2.1/include/shadow.h --- glibc-2.2/include/shadow.h Tue Nov 23 09:36:34 1999 +++ glibc-2.2.1/include/shadow.h Sat Jan 6 20:35:16 2001 @@ -4,9 +4,14 @@ /* Now define the internal interfaces. */ extern int __getspent_r (struct spwd *__result_buf, char *__buffer, size_t __buflen, struct spwd **__result); +extern int __old_getspent_r (struct spwd *__result_buf, char *__buffer, + size_t __buflen, struct spwd **__result); extern int __getspnam_r (__const char *__name, struct spwd *__result_buf, char *__buffer, size_t __buflen, struct spwd **__result); +extern int __old_getspnam_r (__const char *__name, struct spwd *__result_buf, + char *__buffer, size_t __buflen, + struct spwd **__result); extern int __sgetspent_r (__const char *__string, struct spwd *__result_buf, char *__buffer, size_t __buflen, struct spwd **__result); @@ -15,4 +20,29 @@ extern int __fgetspent_r (FILE *__stream struct spwd **__result); extern int __lckpwdf (void); extern int __ulckpwdf (void); + +struct parser_data; +extern int _nss_files_parse_spent (char *line, struct spwd *result, + struct parser_data *data, + size_t datalen, int *errnop); + +#define DECLARE_NSS_PROTOTYPES(service) \ +extern enum nss_status _nss_ ## service ## _setspent (int); \ +extern enum nss_status _nss_ ## service ## _endspent (void); \ +extern enum nss_status _nss_ ## service ## _getspent_r \ + (struct spwd *pwd, char *buffer, size_t buflen, \ + int *errnop); \ +extern enum nss_status _nss_ ## service ## _getspnam_r \ + (const char *name, struct spwd *pwd, \ + char *buffer, size_t buflen, int *errnop); + +DECLARE_NSS_PROTOTYPES (compat) +DECLARE_NSS_PROTOTYPES (files) +DECLARE_NSS_PROTOTYPES (hesiod) +DECLARE_NSS_PROTOTYPES (nis) +DECLARE_NSS_PROTOTYPES (nisplus) + +#undef DECLARE_NSS_PROTOTYPES + + #endif diff -adurpN glibc-2.2/include/signal.h glibc-2.2.1/include/signal.h --- glibc-2.2/include/signal.h Fri Jul 7 10:57:26 2000 +++ glibc-2.2.1/include/signal.h Sat Jan 6 20:35:16 2001 @@ -26,6 +26,12 @@ extern int __sigaltstack (__const struct extern int __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact); +extern int __sigpause (int sig_or_mask, int is_sig); +extern int __default_sigpause (int mask); +extern int __xpg_sigpause (int sig); + + + /* Allocate real-time signal with highest/lowest available priority. */ extern int __libc_allocate_rtsig (int __high); #endif diff -adurpN glibc-2.2/include/stdio.h glibc-2.2.1/include/stdio.h --- glibc-2.2/include/stdio.h Thu Sep 14 12:24:14 2000 +++ glibc-2.2.1/include/stdio.h Sat Jan 6 20:35:16 2001 @@ -28,6 +28,11 @@ extern int __vsscanf (__const char *__re _G_va_list __arg) __attribute__ ((__format__ (__scanf__, 2, 0))); +/* Prototypes for compatibility functions. */ +extern FILE *__new_tmpfile (void); +extern FILE *__old_tmpfile (void); + + # else # include # endif @@ -55,6 +60,16 @@ extern void __flockfile (FILE *__stream) /* Relinquish the ownership granted for STREAM. */ extern void __funlockfile (FILE *__stream); + +/* Try to acquire ownership of STREAM but do not block if it is not + possible. */ +extern int __ftrylockfile (FILE *__stream); + +extern int __getc_unlocked (FILE *__fp); +# ifdef USE_IN_LIBIO +extern wint_t __getwc_unlocked (FILE *__fp); +# endif + # endif diff -adurpN glibc-2.2/include/stdlib.h glibc-2.2.1/include/stdlib.h --- glibc-2.2/include/stdlib.h Thu Aug 31 14:45:03 2000 +++ glibc-2.2.1/include/stdlib.h Sat Jan 13 10:48:48 2001 @@ -46,6 +46,7 @@ extern char *__canonicalize_file_name (_ extern char *__realpath (__const char *__name, char *__resolved); extern int __ptsname_r (int __fd, char *__buf, size_t __buflen); extern int __getpt (void); +extern int __posix_openpt (int __oflag); extern int __add_to_environ (const char *name, const char *value, const char *combines, int replace); @@ -55,8 +56,12 @@ extern void _quicksort (void *const pbas extern int __cxa_atexit (void (*func) (void *), void *arg, void *d); +extern void __cxa_finalize (void *d); + extern int __posix_memalign (void **memptr, size_t alignment, size_t size) __attribute_malloc__; + +extern int __libc_system (const char *line); #endif #undef __Need_M_And_C diff -adurpN glibc-2.2/include/sys/gmon.h glibc-2.2.1/include/sys/gmon.h --- glibc-2.2/include/sys/gmon.h Tue Nov 23 09:36:35 1999 +++ glibc-2.2.1/include/sys/gmon.h Sat Jan 6 20:35:19 2001 @@ -6,4 +6,10 @@ /* Write current profiling data to file. */ extern void __write_profiling (void); extern void write_profiling (void); + +struct __bb; +extern void __bb_init_func (struct __bb *bb); +extern void __bb_exit_func (void); + + #endif diff -adurpN glibc-2.2/include/sys/wait.h glibc-2.2.1/include/sys/wait.h --- glibc-2.2/include/sys/wait.h Tue Nov 23 09:36:35 1999 +++ glibc-2.2.1/include/sys/wait.h Sat Jan 6 20:35:19 2001 @@ -4,6 +4,8 @@ /* Now define the internal interfaces. */ extern __pid_t __waitpid (__pid_t __pid, int *__stat_loc, int __options); +extern __pid_t __libc_waitpid (pid_t __pid, int *__stat_loc, int __options); +extern __pid_t __libc_wait (int *__stat_loc); extern __pid_t __wait3 (__WAIT_STATUS __stat_loc, int __options, struct rusage * __usage); extern __pid_t __wait4 (__pid_t __pid, __WAIT_STATUS __stat_loc, diff -adurpN glibc-2.2/include/termios.h glibc-2.2.1/include/termios.h --- glibc-2.2/include/termios.h Tue Nov 23 09:36:34 1999 +++ glibc-2.2.1/include/termios.h Sat Jan 6 20:35:16 2001 @@ -3,4 +3,7 @@ /* Now define the internal interfaces. */ extern int __tcgetattr (int __fd, struct termios *__termios_p); + +extern int __libc_tcdrain (int __fd); + #endif diff -adurpN glibc-2.2/include/unistd.h glibc-2.2.1/include/unistd.h --- glibc-2.2/include/unistd.h Thu Aug 31 14:45:03 2000 +++ glibc-2.2.1/include/unistd.h Wed Nov 22 10:59:47 2000 @@ -98,4 +98,9 @@ extern void *__sbrk (intptr_t __delta); environment variables that normally affect them. */ extern int __libc_enable_secure; + +/* Various internal function. */ +extern void __libc_check_standard_fds (void); + + #endif diff -adurpN glibc-2.2/inet/ether_hton.c glibc-2.2.1/inet/ether_hton.c --- glibc-2.2/inet/ether_hton.c Tue Aug 3 18:04:20 1999 +++ glibc-2.2.1/inet/ether_hton.c Sat Jan 6 20:35:19 2001 @@ -24,16 +24,6 @@ #include "../nss/nsswitch.h" -/* Because the `ethers' lookup does not fit so well in the scheme so - we define a dummy struct here which helps us to use the available - functions. */ -struct etherent -{ - const char *e_name; - struct ether_addr e_addr; -}; - - /* Type of the lookup function we need here. */ typedef int (*lookup_function) (const char *, struct etherent *, char *, int, int *); diff -adurpN glibc-2.2/inet/ether_ntoh.c glibc-2.2.1/inet/ether_ntoh.c --- glibc-2.2/inet/ether_ntoh.c Thu Apr 29 09:57:02 1999 +++ glibc-2.2.1/inet/ether_ntoh.c Sat Jan 13 10:48:48 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1999, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -17,25 +17,17 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include #include #include #include #include -/* Because the `ethers' lookup does not fit so well in the scheme so - we define a dummy struct here which helps us to use the available - functions. */ -struct etherent -{ - const char *e_name; - struct ether_addr e_addr; -}; - /* Type of the lookup function we need here. */ typedef int (*lookup_function) (const struct ether_addr *, struct etherent *, - char *, int); + char *, size_t, int *); /* The lookup function for the first entry of this service. */ extern int __nss_ethers_lookup (service_user **nip, const char *name, @@ -74,7 +66,7 @@ ether_ntohost (char *hostname, const str { char buffer[1024]; - status = (*fct) (addr, ðerent, buffer, sizeof buffer); + status = (*fct) (addr, ðerent, buffer, sizeof buffer, &errno); no_more = __nss_next (&nip, "getntohost_r", (void **) &fct, status, 0); } diff -adurpN glibc-2.2/inet/getnameinfo.c glibc-2.2.1/inet/getnameinfo.c --- glibc-2.2/inet/getnameinfo.c Tue Oct 31 11:09:52 2000 +++ glibc-2.2.1/inet/getnameinfo.c Sat Jan 6 20:35:19 2001 @@ -175,25 +175,28 @@ getnameinfo (const struct sockaddr *sa, struct hostent th; int ok = 0; + if (flags & ~(NI_NUMERICHOST|NI_NUMERICSERV|NI_NOFQDN|NI_NAMEREQD|NI_DGRAM)) + return EAI_BADFLAGS; + if (sa == NULL || addrlen < sizeof (sa_family_t)) - return -1; + return EAI_FAMILY; switch (sa->sa_family) { case AF_LOCAL: if (addrlen < (socklen_t) (((struct sockaddr_un *) NULL)->sun_path)) - return -1; + return EAI_FAMILY; break; case AF_INET: if (addrlen < sizeof (struct sockaddr_in)) - return -1; + return EAI_FAMILY; break; case AF_INET6: if (addrlen < sizeof (struct sockaddr_in6)) - return -1; + return EAI_FAMILY; break; default: - return -1; + return EAI_FAMILY; } if (host != NULL && hostlen > 0) @@ -208,7 +211,7 @@ getnameinfo (const struct sockaddr *sa, { if (sa->sa_family == AF_INET6) { - while (__gethostbyaddr_r ((void *) &(((struct sockaddr_in6 *) sa)->sin6_addr), + while (__gethostbyaddr_r ((const void *) &(((const struct sockaddr_in6 *) sa)->sin6_addr), sizeof(struct in6_addr), AF_INET6, &th, tmpbuf, tmpbuflen, &h, &herrno)) @@ -224,7 +227,7 @@ getnameinfo (const struct sockaddr *sa, { __set_h_errno (herrno); __set_errno (serrno); - return -1; + return EAI_SYSTEM; } } else @@ -235,7 +238,7 @@ getnameinfo (const struct sockaddr *sa, } else { - while (__gethostbyaddr_r ((void *) &(((struct sockaddr_in *)sa)->sin_addr), + while (__gethostbyaddr_r ((const void *) &(((const struct sockaddr_in *)sa)->sin_addr), sizeof(struct in_addr), AF_INET, &th, tmpbuf, tmpbuflen, &h, &herrno)) @@ -255,26 +258,23 @@ getnameinfo (const struct sockaddr *sa, if (h) { - if (flags & NI_NOFQDN) + char *c; + if ((flags & NI_NOFQDN) + && (c = nrl_domainname ()) + && (c = strstr (h->h_name, c)) + && (c != h->h_name) && (*(--c) == '.')) { - 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))); - host[min(hostlen - 1, (size_t) (c - h->h_name))] - = '\0'; - ok = 1; - } - else - { - strncpy (host, h->h_name, hostlen); - ok = 1; - } + strncpy (host, h->h_name, + min(hostlen, (size_t) (c - h->h_name))); + host[min(hostlen - 1, (size_t) (c - h->h_name))] + = '\0'; + ok = 1; + } + else + { + strncpy (host, h->h_name, hostlen); + ok = 1; } - strncpy (host, h->h_name, hostlen); - ok = 1; } } @@ -283,62 +283,67 @@ getnameinfo (const struct sockaddr *sa, if (flags & NI_NAMEREQD) { __set_errno (serrno); - return -1; + return EAI_NONAME; } else { const char *c; if (sa->sa_family == AF_INET6) { - struct sockaddr_in6 *sin6p = (struct sockaddr_in6 *) sa; + const struct sockaddr_in6 *sin6p; uint32_t scopeid; + sin6p = (const struct sockaddr_in6 *) sa; + c = inet_ntop (AF_INET6, - (void *) &sin6p->sin6_addr, host, hostlen); - if (addrlen > sizeof (struct sockaddr_in6) - && (scopeid = sin6p->sin6_scope_id)) + (const void *) &sin6p->sin6_addr, host, hostlen); + scopeid = sin6p->sin6_scope_id; + if (scopeid != 0) { /* Buffer is >= IFNAMSIZ+1. */ char scopebuf[IFNAMSIZ + 1]; + char *scopeptr; int ni_numericscope = 0; + size_t real_hostlen = __strnlen (host, hostlen); + size_t scopelen = 0; + + scopebuf[0] = SCOPE_DELIMITER; + scopebuf[1] = '\0'; + scopeptr = &scopebuf[1]; if (IN6_IS_ADDR_LINKLOCAL (&sin6p->sin6_addr) || IN6_IS_ADDR_MC_LINKLOCAL (&sin6p->sin6_addr)) { - if (if_indextoname (scopeid, scopebuf) == NULL) + if (if_indextoname (scopeid, scopeptr) == NULL) ++ni_numericscope; + else + scopelen = strlen (scopebuf); } else ++ni_numericscope; if (ni_numericscope) - { - char *scopeptr = &scopebuf[1]; - size_t real_hostlen; - size_t scopelen; - - scopebuf[0] = SCOPE_DELIMITER; - scopelen = 1 + __snprintf (scopeptr, - (scopebuf - + sizeof scopebuf - - scopeptr), - "%u", scopeid); + scopelen = 1 + __snprintf (scopeptr, + (scopebuf + + sizeof scopebuf + - scopeptr), + "%u", scopeid); - real_hostlen = __strnlen (host, hostlen); - if (real_hostlen + scopelen + 1 > hostlen) - return -1; - memcpy (host + real_hostlen, scopebuf, scopelen); - } + if (real_hostlen + scopelen + 1 > hostlen) + /* XXX We should not fail here. Simply enlarge + the buffer or return with out of memory. */ + return EAI_SYSTEM; + memcpy (host + real_hostlen, scopebuf, scopelen + 1); } } else c = inet_ntop (AF_INET, - (void *) &(((struct sockaddr_in *) sa)->sin_addr), + (const void *) &(((const struct sockaddr_in *) sa)->sin_addr), host, hostlen); if (c == NULL) { __set_errno (serrno); - return -1; + return EAI_SYSTEM; } } ok = 1; @@ -360,14 +365,14 @@ getnameinfo (const struct sockaddr *sa, if (flags & NI_NAMEREQD) { __set_errno (serrno); - return -1; + return EAI_NONAME; } strncpy (host, "localhost", hostlen); break; default: - return -1; + return EAI_FAMILY; } if (serv && (servlen > 0)) @@ -378,7 +383,7 @@ getnameinfo (const struct sockaddr *sa, if (!(flags & NI_NUMERICSERV)) { struct servent *s, ts; - while (__getservbyport_r (((struct sockaddr_in *) sa)->sin_port, + while (__getservbyport_r (((const struct sockaddr_in *) sa)->sin_port, ((flags & NI_DGRAM) ? "udp" : "tcp"), &ts, tmpbuf, tmpbuflen, &s)) { @@ -392,7 +397,7 @@ getnameinfo (const struct sockaddr *sa, else { __set_errno (serrno); - return -1; + return EAI_SYSTEM; } } else @@ -407,11 +412,11 @@ getnameinfo (const struct sockaddr *sa, } } __snprintf (serv, servlen, "%d", - ntohs (((struct sockaddr_in *) sa)->sin_port)); + ntohs (((const struct sockaddr_in *) sa)->sin_port)); break; case AF_LOCAL: - strncpy (serv, ((struct sockaddr_un *) sa)->sun_path, servlen); + strncpy (serv, ((const struct sockaddr_un *) sa)->sun_path, servlen); break; } diff -adurpN glibc-2.2/inet/netinet/in.h glibc-2.2.1/inet/netinet/in.h --- glibc-2.2/inet/netinet/in.h Thu Aug 31 14:45:03 2000 +++ glibc-2.2.1/inet/netinet/in.h Fri Dec 1 11:55:06 2000 @@ -268,34 +268,43 @@ extern uint16_t htons (uint16_t __hostsh #endif #define IN6_IS_ADDR_UNSPECIFIED(a) \ - (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \ - ((uint32_t *) (a))[2] == 0 && ((uint32_t *) (a))[3] == 0) + (((__const uint32_t *) (a))[0] == 0 \ + && ((__const uint32_t *) (a))[1] == 0 \ + && ((__const uint32_t *) (a))[2] == 0 \ + && ((__const uint32_t *) (a))[3] == 0) #define IN6_IS_ADDR_LOOPBACK(a) \ - (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \ - ((uint32_t *) (a))[2] == 0 && ((uint32_t *) (a))[3] == htonl (1)) + (((__const uint32_t *) (a))[0] == 0 \ + && ((__const uint32_t *) (a))[1] == 0 \ + && ((__const uint32_t *) (a))[2] == 0 \ + && ((__const uint32_t *) (a))[3] == htonl (1)) -#define IN6_IS_ADDR_MULTICAST(a) (((uint8_t *) (a))[0] == 0xff) +#define IN6_IS_ADDR_MULTICAST(a) (((__const uint8_t *) (a))[0] == 0xff) #define IN6_IS_ADDR_LINKLOCAL(a) \ - ((((uint32_t *) (a))[0] & htonl (0xffc00000)) == htonl (0xfe800000)) + ((((__const uint32_t *) (a))[0] & htonl (0xffc00000)) \ + == htonl (0xfe800000)) #define IN6_IS_ADDR_SITELOCAL(a) \ - ((((uint32_t *) (a))[0] & htonl (0xffc00000)) == htonl (0xfec00000)) + ((((__const uint32_t *) (a))[0] & htonl (0xffc00000)) \ + == htonl (0xfec00000)) #define IN6_IS_ADDR_V4MAPPED(a) \ - ((((uint32_t *) (a))[0] == 0) && (((uint32_t *) (a))[1] == 0) && \ - (((uint32_t *) (a))[2] == htonl (0xffff))) + ((((__const uint32_t *) (a))[0] == 0) \ + && (((__const uint32_t *) (a))[1] == 0) \ + && (((__const uint32_t *) (a))[2] == htonl (0xffff))) #define IN6_IS_ADDR_V4COMPAT(a) \ - ((((uint32_t *) (a))[0] == 0) && (((uint32_t *) (a))[1] == 0) && \ - (((uint32_t *) (a))[2] == 0) && (ntohl (((uint32_t *) (a))[3]) > 1)) + ((((__const uint32_t *) (a))[0] == 0) \ + && (((__const uint32_t *) (a))[1] == 0) \ + && (((__const uint32_t *) (a))[2] == 0) \ + && (ntohl (((__const uint32_t *) (a))[3]) > 1)) #define IN6_ARE_ADDR_EQUAL(a,b) \ - ((((uint32_t *) (a))[0] == ((uint32_t *) (b))[0]) && \ - (((uint32_t *) (a))[1] == ((uint32_t *) (b))[1]) && \ - (((uint32_t *) (a))[2] == ((uint32_t *) (b))[2]) && \ - (((uint32_t *) (a))[3] == ((uint32_t *) (b))[3])) + ((((__const uint32_t *) (a))[0] == ((__const uint32_t *) (b))[0]) \ + && (((__const uint32_t *) (a))[1] == ((__const uint32_t *) (b))[1]) \ + && (((__const uint32_t *) (a))[2] == ((__const uint32_t *) (b))[2]) \ + && (((__const uint32_t *) (a))[3] == ((__const uint32_t *) (b))[3])) /* Bind socket to a privileged IP port. */ extern int bindresvport (int __sockfd, struct sockaddr_in *__sock_in) __THROW; @@ -306,19 +315,24 @@ extern int bindresvport6 (int __sockfd, #define IN6_IS_ADDR_MC_NODELOCAL(a) \ - (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x1)) + (IN6_IS_ADDR_MULTICAST(a) \ + && ((((__const uint8_t *) (a))[1] & 0xf) == 0x1)) #define IN6_IS_ADDR_MC_LINKLOCAL(a) \ - (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x2)) + (IN6_IS_ADDR_MULTICAST(a) \ + && ((((__const uint8_t *) (a))[1] & 0xf) == 0x2)) #define IN6_IS_ADDR_MC_SITELOCAL(a) \ - (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x5)) + (IN6_IS_ADDR_MULTICAST(a) \ + && ((((__const uint8_t *) (a))[1] & 0xf) == 0x5)) #define IN6_IS_ADDR_MC_ORGLOCAL(a) \ - (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x8)) + (IN6_IS_ADDR_MULTICAST(a) \ + && ((((__const uint8_t *) (a))[1] & 0xf) == 0x8)) #define IN6_IS_ADDR_MC_GLOBAL(a) \ - (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0xe)) + (IN6_IS_ADDR_MULTICAST(a) \ + && ((((__const uint8_t *) (a))[1] & 0xf) == 0xe)) /* IPv6 packet information. */ struct in6_pktinfo diff -adurpN glibc-2.2/inet/rcmd.c glibc-2.2.1/inet/rcmd.c --- glibc-2.2/inet/rcmd.c Thu Sep 7 11:56:28 2000 +++ glibc-2.2.1/inet/rcmd.c Sat Jan 6 20:35:19 2001 @@ -209,13 +209,13 @@ rcmd_af(ahost, rport, locuser, remuser, } else { char num[8]; int s2 = rresvport_af(&lport, ai->ai_family), s3; - size_t len = ai->ai_addrlen; + socklen_t len = ai->ai_addrlen; if (s2 < 0) goto bad; listen(s2, 1); (void)__snprintf(num, sizeof(num), "%d", lport); - if (__write(s, num, strlen(num)+1) != strlen(num)+1) { + if (__write(s, num, strlen(num)+1) != (ssize_t)strlen(num)+1) { (void)fprintf(stderr, _("rcmd: write (setting up stderr): %m\n")); (void)__close(s2); diff -adurpN glibc-2.2/inet/ruserpass.c glibc-2.2.1/inet/ruserpass.c --- glibc-2.2/inet/ruserpass.c Thu Sep 7 11:56:28 2000 +++ glibc-2.2.1/inet/ruserpass.c Fri Dec 1 11:55:06 2000 @@ -317,7 +317,7 @@ token() *cp = 0; if (tokval[0] == 0) return (0); - for (i = 0; i < sizeof (toktab) / sizeof (toktab[0]); ++i) + for (i = 0; i < (int) (sizeof (toktab) / sizeof (toktab[0])); ++i) if (!strcmp(&tokstr[toktab[i].tokstr_off], tokval)) return toktab[i].tval; return (ID); diff -adurpN glibc-2.2/inet/test_ifindex.c glibc-2.2.1/inet/test_ifindex.c --- glibc-2.2/inet/test_ifindex.c Mon Dec 22 09:21:47 1997 +++ glibc-2.2.1/inet/test_ifindex.c Sat Jan 6 20:35:19 2001 @@ -1,5 +1,5 @@ /* Test interface name <-> index conversions. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Philip Blundell . @@ -61,5 +61,5 @@ main (void) failures += result; } if_freenameindex (idx); - exit (failures ? 1 : 0); + return failures ? 1 : 0; } diff -adurpN glibc-2.2/intl/Makefile glibc-2.2.1/intl/Makefile --- glibc-2.2/intl/Makefile Tue Oct 31 11:09:53 2000 +++ glibc-2.2.1/intl/Makefile Thu Nov 16 11:12:01 2000 @@ -60,8 +60,7 @@ $(objpfx)tst-gettext.out: tst-gettext.sh $(objpfx)tst-translit.out: tst-translit.sh $(objpfx)tst-translit $(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/ $(objpfx)tst-gettext2.out: tst-gettext2.sh $(objpfx)tst-gettext2 - $(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/ \ - $(objpfx)tst-gettext + $(SHELL) -e $< $(common-objpfx) $(common-objpfx)intl/ endif endif endif diff -adurpN glibc-2.2/intl/bindtextdom.c glibc-2.2.1/intl/bindtextdom.c --- glibc-2.2/intl/bindtextdom.c Sun Oct 8 17:04:51 2000 +++ glibc-2.2.1/intl/bindtextdom.c Sat Jan 6 20:35:19 2001 @@ -35,7 +35,7 @@ void free (); #else # include # ifndef memcpy -# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) +# define memcpy(Dst, Src, Num) (bcopy (Src, Dst, Num), (Dst)) # endif #endif diff -adurpN glibc-2.2/intl/dcigettext.c glibc-2.2.1/intl/dcigettext.c --- glibc-2.2/intl/dcigettext.c Tue Oct 31 11:09:53 2000 +++ glibc-2.2.1/intl/dcigettext.c Wed Jan 10 15:54:26 2001 @@ -1,5 +1,5 @@ /* Implementation of the internal dcigettext function. - Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. 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 @@ -210,10 +210,7 @@ static void *mempcpy PARAMS ((void *dest struct known_translation_t { /* Domain in which to search. */ - char *domain; - - /* Plural index. */ - unsigned long int plindex; + char *domainname; /* The category. */ int category; @@ -221,8 +218,12 @@ struct known_translation_t /* State of the catalog counter at the point the string was found. */ int counter; + /* Catalog where the string was found. */ + struct loaded_l10nfile *domain; + /* And finally the translation. */ const char *translation; + size_t translation_length; /* Pointer to the string in question. */ char msgid[ZERO]; @@ -243,23 +244,22 @@ static void *root; static int transcmp (const void *p1, const void *p2) { - struct known_translation_t *s1 = (struct known_translation_t *) p1; - struct known_translation_t *s2 = (struct known_translation_t *) p2; + const struct known_translation_t *s1; + const struct known_translation_t *s2; int result; + s1 = (const struct known_translation_t *) p1; + s2 = (const struct known_translation_t *) p2; + result = strcmp (s1->msgid, s2->msgid); if (result == 0) { - result = strcmp (s1->domain, s2->domain); + result = strcmp (s1->domainname, s2->domainname); if (result == 0) - { - result = s1->plindex - s2->plindex; - if (result == 0) - /* We compare the category last (though this is the cheapest - operation) since it is hopefully always the same (namely - LC_MESSAGES). */ - result = s1->category - s2->category; - } + /* We compare the category last (though this is the cheapest + operation) since it is hopefully always the same (namely + LC_MESSAGES). */ + result = s1->category - s2->category; } return result; @@ -281,8 +281,14 @@ const char _nl_default_dirname[] = GNULO struct binding *_nl_domain_bindings; /* Prototypes for local functions. */ -static unsigned long int plural_eval (struct expression *pexp, - unsigned long int n) internal_function; +static char *plural_lookup PARAMS ((struct loaded_l10nfile *domain, + unsigned long int n, + const char *translation, + size_t translation_len)) + internal_function; +static unsigned long int plural_eval PARAMS ((struct expression *pexp, + unsigned long int n)) + internal_function; static const char *category_to_name PARAMS ((int category)) internal_function; static const char *guess_category_value PARAMS ((int category, const char *categoryname)) @@ -325,12 +331,17 @@ struct block_list #endif /* have alloca */ +#ifdef _LIBC /* List of blocks allocated for translations. */ -static struct transmem_list +typedef struct transmem_list { struct transmem_list *next; char data[0]; -} *transmem_list; +} transmem_block_t; +static struct transmem_list *transmem_list; +#else +typedef char transmem_block_t; +#endif /* Names for the libintl functions are a problem. They must not clash @@ -386,6 +397,7 @@ DCIGETTEXT (domainname, msgid1, msgid2, char *dirname, *xdomainname; char *single_locale; char *retval; + size_t retlen; int saved_errno; #if defined HAVE_TSEARCH || defined _LIBC struct known_translation_t *search; @@ -409,23 +421,26 @@ DCIGETTEXT (domainname, msgid1, msgid2, #if defined HAVE_TSEARCH || defined _LIBC msgid_len = strlen (msgid1) + 1; - if (plural == 0) + /* Try to find the translation among those which we found at + some time. */ + search = + (struct known_translation_t *) alloca (sizeof (*search) + msgid_len); + memcpy (search->msgid, msgid1, msgid_len); + search->domainname = (char *) domainname; + search->category = category; + + foundp = (struct known_translation_t **) tfind (search, &root, transcmp); + if (foundp != NULL && (*foundp)->counter == _nl_msg_cat_cntr) { - /* Try to find the translation among those which we found at - some time. */ - search = (struct known_translation_t *) alloca (sizeof (*search) - + msgid_len); - memcpy (search->msgid, msgid1, msgid_len); - search->domain = (char *) domainname; - search->plindex = 0; - search->category = category; + /* Now deal with plural. */ + if (plural) + retval = plural_lookup ((*foundp)->domain, n, (*foundp)->translation, + (*foundp)->translation_length); + else + retval = (char *) (*foundp)->translation; - foundp = (struct known_translation_t **) tfind (search, &root, transcmp); - if (foundp != NULL && (*foundp)->counter == _nl_msg_cat_cntr) - { - __libc_rwlock_unlock (_nl_state_lock); - return (char *) (*foundp)->translation; - } + __libc_rwlock_unlock (_nl_state_lock); + return retval; } #endif @@ -560,39 +575,7 @@ DCIGETTEXT (domainname, msgid1, msgid2, if (domain != NULL) { - unsigned long int index = 0; - - if (plural != 0) - { - struct loaded_domain *domaindata = - (struct loaded_domain *) domain->data; - index = plural_eval (domaindata->plural, n); - if (index >= domaindata->nplurals) - /* This should never happen. It means the plural expression - and the given maximum value do not match. */ - index = 0; - -#if defined HAVE_TSEARCH || defined _LIBC - /* Try to find the translation among those which we - found at some time. */ - search = (struct known_translation_t *) alloca (sizeof (*search) - + msgid_len); - memcpy (search->msgid, msgid1, msgid_len); - search->domain = (char *) domainname; - search->plindex = index; - search->category = category; - - foundp = (struct known_translation_t **) tfind (search, &root, - transcmp); - if (foundp != NULL && (*foundp)->counter == _nl_msg_cat_cntr) - { - __libc_rwlock_unlock (_nl_state_lock); - return (char *) (*foundp)->translation; - } -#endif - } - - retval = _nl_find_msg (domain, msgid1, index); + retval = _nl_find_msg (domain, msgid1, &retlen); if (retval == NULL) { @@ -601,15 +584,20 @@ DCIGETTEXT (domainname, msgid1, msgid2, for (cnt = 0; domain->successor[cnt] != NULL; ++cnt) { retval = _nl_find_msg (domain->successor[cnt], msgid1, - index); + &retlen); if (retval != NULL) - break; + { + domain = domain->successor[cnt]; + break; + } } } if (retval != NULL) { + /* Found the translation of MSGID1 in domain DOMAIN: + starting at RETVAL, RETLEN bytes. */ FREE_BLOCKS (block_list); __set_errno (saved_errno); #if defined HAVE_TSEARCH || defined _LIBC @@ -623,12 +611,14 @@ DCIGETTEXT (domainname, msgid1, msgid2, + domainname_len + 1 - ZERO); if (newp != NULL) { - newp->domain = mempcpy (newp->msgid, msgid1, msgid_len); - memcpy (newp->domain, domainname, domainname_len + 1); - newp->plindex = index; + newp->domainname = + mempcpy (newp->msgid, msgid1, msgid_len); + memcpy (newp->domainname, domainname, domainname_len + 1); newp->category = category; newp->counter = _nl_msg_cat_cntr; + newp->domain = domain; newp->translation = retval; + newp->translation_length = retlen; /* Insert the entry in the search tree. */ foundp = (struct known_translation_t **) @@ -643,9 +633,15 @@ DCIGETTEXT (domainname, msgid1, msgid2, { /* We can update the existing entry. */ (*foundp)->counter = _nl_msg_cat_cntr; + (*foundp)->domain = domain; (*foundp)->translation = retval; + (*foundp)->translation_length = retlen; } #endif + /* Now deal with plural. */ + if (plural) + retval = plural_lookup (domain, n, retval, retlen); + __libc_rwlock_unlock (_nl_state_lock); return retval; } @@ -657,14 +653,15 @@ DCIGETTEXT (domainname, msgid1, msgid2, char * internal_function -_nl_find_msg (domain_file, msgid, index) +_nl_find_msg (domain_file, msgid, lengthp) struct loaded_l10nfile *domain_file; const char *msgid; - unsigned long int index; + size_t *lengthp; { struct loaded_domain *domain; size_t act; char *result; + size_t resultlen; if (domain_file->decided == 0) _nl_load_domain (domain_file); @@ -688,17 +685,21 @@ _nl_find_msg (domain_file, msgid, index) /* Hash table entry is empty. */ return NULL; - if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len - && strcmp (msgid, - domain->data + W (domain->must_swap, - domain->orig_tab[nstr - 1].offset)) == 0) - { - act = nstr - 1; - goto found; - } - while (1) { + /* Compare msgid with the original string at index nstr-1. + We compare the lengths with >=, not ==, because plural entries + are represented by strings with an embedded NUL. */ + if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) >= len + && (strcmp (msgid, + domain->data + W (domain->must_swap, + domain->orig_tab[nstr - 1].offset)) + == 0)) + { + act = nstr - 1; + goto found; + } + if (idx >= domain->hash_size - incr) idx -= domain->hash_size - incr; else @@ -708,16 +709,6 @@ _nl_find_msg (domain_file, msgid, index) if (nstr == 0) /* Hash table entry is empty. */ return NULL; - - if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len - && (strcmp (msgid, - domain->data + W (domain->must_swap, - domain->orig_tab[nstr - 1].offset)) - == 0)) - { - act = nstr - 1; - goto found; - } } /* NOTREACHED */ } @@ -753,6 +744,7 @@ _nl_find_msg (domain_file, msgid, index) string to use a different character set, this is the time. */ result = ((char *) domain->data + W (domain->must_swap, domain->trans_tab[act].offset)); + resultlen = W (domain->must_swap, domain->trans_tab[act].length) + 1; #if defined _LIBC || HAVE_ICONV if ( @@ -769,9 +761,10 @@ _nl_find_msg (domain_file, msgid, index) appropriate table with the same structure as the table of translations in the file, where we can put the pointers to the converted strings in. - There is a slight complication with the INDEX: We don't know - a priori which entries are plural entries. Therefore at any - moment we can only translate the variants 0 .. INDEX. */ + There is a slight complication with plural entries. They + are represented by consecutive NUL terminated strings. We + handle this case by converting RESULTLEN bytes, including + NULs. */ if (domain->conv_tab == NULL && ((domain->conv_tab = (char **) calloc (domain->nstrings, @@ -784,8 +777,7 @@ _nl_find_msg (domain_file, msgid, index) /* Nothing we can do, no more memory. */ goto converted; - if (domain->conv_tab[act] == NULL - || *(nls_uint32 *) domain->conv_tab[act] < index) + if (domain->conv_tab[act] == NULL) { /* We haven't used this string so far, so it is not translated yet. Do this now. */ @@ -793,46 +785,37 @@ _nl_find_msg (domain_file, msgid, index) We allocate always larger blocks which get used over time. This is faster than many small allocations. */ __libc_lock_define_initialized (static, lock) -#define INITIAL_BLOCK_SIZE 4080 +# define INITIAL_BLOCK_SIZE 4080 static unsigned char *freemem; static size_t freemem_size; - size_t resultlen; const unsigned char *inbuf; unsigned char *outbuf; int malloc_count; - - /* Note that we translate (index + 1) consecutive strings at - once, including the final NUL byte. */ - { - unsigned long int i = index; - char *p = result; - do - p += strlen (p) + 1; - while (i-- > 0); - resultlen = p - result; - } +# ifndef _LIBC + transmem_block_t *transmem_list = NULL; +# endif __libc_lock_lock (lock); inbuf = result; - outbuf = freemem + sizeof (nls_uint32); + outbuf = freemem + sizeof (size_t); malloc_count = 0; while (1) { + transmem_block_t *newmem; # ifdef _LIBC - struct transmem_list *newmem; size_t non_reversible; int res; - if (freemem_size < 4) + if (freemem_size < sizeof (size_t)) goto resize_freemem; res = __gconv (domain->conv, &inbuf, inbuf + resultlen, &outbuf, - outbuf + freemem_size - sizeof (nls_uint32), + outbuf + freemem_size - sizeof (size_t), &non_reversible); if (res == __GCONV_OK || res == __GCONV_EMPTY_INPUT) @@ -847,16 +830,15 @@ _nl_find_msg (domain_file, msgid, index) inbuf = result; # else # if HAVE_ICONV -# define transmem freemem const char *inptr = (const char *) inbuf; size_t inleft = resultlen; char *outptr = (char *) outbuf; size_t outleft; - if (freemem_size < 4) + if (freemem_size < sizeof (size_t)) goto resize_freemem; - outleft = freemem_size - 4; + outleft = freemem_size - sizeof (size_t); if (iconv (domain->conv, &inptr, &inleft, &outptr, &outleft) != (size_t) (-1)) { @@ -868,30 +850,34 @@ _nl_find_msg (domain_file, msgid, index) __libc_lock_unlock (lock); goto converted; } -# else -# define transmem freemem # endif # endif resize_freemem: - /* We must allocate a new buffer of resize the old one. */ + /* We must allocate a new buffer or resize the old one. */ if (malloc_count > 0) { - struct transmem_list *next = transmem_list->next; - ++malloc_count; freemem_size = malloc_count * INITIAL_BLOCK_SIZE; - newmem = (struct transmem_list *) realloc (transmem_list, - freemem_size); - + newmem = (transmem_block_t *) realloc (transmem_list, + freemem_size); +# ifdef _LIBC if (newmem != NULL) - transmem_list = next; + transmem_list = transmem_list->next; + else + { + struct transmem_list *old = transmem_list; + + transmem_list = transmem_list->next; + free (old); + } +# endif } else { malloc_count = 1; freemem_size = INITIAL_BLOCK_SIZE; - newmem = (struct transmem_list *) malloc (freemem_size); + newmem = (transmem_block_t *) malloc (freemem_size); } if (__builtin_expect (newmem == NULL, 0)) { @@ -909,27 +895,31 @@ _nl_find_msg (domain_file, msgid, index) freemem = newmem->data; freemem_size -= offsetof (struct transmem_list, data); +# else + transmem_list = newmem; + freemem = newmem; # endif - outbuf = freemem + sizeof (nls_uint32); + outbuf = freemem + sizeof (size_t); } /* We have now in our buffer a converted string. Put this into the table of conversions. */ - *(nls_uint32 *) freemem = index; + *(size_t *) freemem = outbuf - freemem - sizeof (size_t); domain->conv_tab[act] = freemem; /* Shrink freemem, but keep it aligned. */ freemem_size -= outbuf - freemem; freemem = outbuf; - freemem += freemem_size & (alignof (nls_uint32) - 1); - freemem_size = freemem_size & ~ (alignof (nls_uint32) - 1); + freemem += freemem_size & (alignof (size_t) - 1); + freemem_size = freemem_size & ~ (alignof (size_t) - 1); __libc_lock_unlock (lock); } - /* Now domain->conv_tab[act] contains the translation of at least - the variants 0 .. INDEX. */ - result = domain->conv_tab[act] + sizeof (nls_uint32); + /* Now domain->conv_tab[act] contains the translation of all + the plural variants. */ + result = domain->conv_tab[act] + sizeof (size_t); + resultlen = *(size_t *) domain->conv_tab[act]; } converted: @@ -937,26 +927,58 @@ _nl_find_msg (domain_file, msgid, index) #endif /* _LIBC || HAVE_ICONV */ - /* Now skip some strings. How much depends on the index passed in. */ + *lengthp = resultlen; + return result; +} + + +/* Look up a plural variant. */ +static char * +internal_function +plural_lookup (domain, n, translation, translation_len) + struct loaded_l10nfile *domain; + unsigned long int n; + const char *translation; + size_t translation_len; +{ + struct loaded_domain *domaindata = (struct loaded_domain *) domain->data; + unsigned long int index; + const char *p; + + index = plural_eval (domaindata->plural, n); + if (index >= domaindata->nplurals) + /* This should never happen. It means the plural expression and the + given maximum value do not match. */ + index = 0; + + /* Skip INDEX strings at TRANSLATION. */ + p = translation; while (index-- > 0) { #ifdef _LIBC - result = __rawmemchr (result, '\0'); + p = __rawmemchr (p, '\0'); #else - result = strchr (result, '\0'); + p = strchr (p, '\0'); #endif /* And skip over the NUL byte. */ - ++result; - } + p++; - return result; + if (p >= translation + translation_len) + /* This should never happen. It means the plural expression + evaluated to a value larger than the number of variants + available for MSGID1. */ + return (char *) translation; + } + return (char *) p; } /* Function to evaluate the plural expression and return an index value. */ static unsigned long int internal_function -plural_eval (struct expression *pexp, unsigned long int n) +plural_eval (pexp, n) + struct expression *pexp; + unsigned long int n; { switch (pexp->operation) { @@ -1068,39 +1090,41 @@ guess_category_value (category, category int category; const char *categoryname; { + const char *language; const char *retval; /* The highest priority value is the `LANGUAGE' environment - variable. This is a GNU extension. */ - retval = getenv ("LANGUAGE"); - if (retval != NULL && retval[0] != '\0') - return retval; + variable. But we don't use the value if the currently selected + locale is the C locale. This is a GNU extension. */ + language = getenv ("LANGUAGE"); + if (language != NULL && language[0] == '\0') + language = NULL; - /* `LANGUAGE' is not set. So we have to proceed with the POSIX - methods of looking to `LC_ALL', `LC_xxx', and `LANG'. On some - systems this can be done by the `setlocale' function itself. */ + /* We have to proceed with the POSIX methods of looking to `LC_ALL', + `LC_xxx', and `LANG'. On some systems this can be done by the + `setlocale' function itself. */ #if defined _LIBC || (defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL) - return setlocale (category, NULL); + retval = setlocale (category, NULL); #else /* Setting of LC_ALL overwrites all other. */ retval = getenv ("LC_ALL"); - if (retval != NULL && retval[0] != '\0') - return retval; - - /* Next comes the name of the desired category. */ - retval = getenv (categoryname); - if (retval != NULL && retval[0] != '\0') - return retval; - - /* Last possibility is the LANG environment variable. */ - retval = getenv ("LANG"); - if (retval != NULL && retval[0] != '\0') - return retval; - - /* We use C as the default domain. POSIX says this is implementation - defined. */ - return "C"; + if (retval == NULL || retval[0] == '\0') + { + /* Next comes the name of the desired category. */ + retval = getenv (categoryname); + if (retval == NULL || retval[0] == '\0') + { + /* Last possibility is the LANG environment variable. */ + retval = getenv ("LANG"); + if (retval == NULL || retval[0] == '\0') + /* We use C as the default domain. POSIX says this is + implementation defined. */ + return "C"; + } + } #endif + + return language != NULL && strcmp (retval, "C") != 0 ? language : retval; } /* @@ begin of epilog @@ */ diff -adurpN glibc-2.2/intl/finddomain.c glibc-2.2.1/intl/finddomain.c --- glibc-2.2/intl/finddomain.c Thu May 4 10:09:25 2000 +++ glibc-2.2.1/intl/finddomain.c Sat Jan 6 20:35:20 2001 @@ -21,8 +21,6 @@ # include #endif -#include -#include #include #include @@ -41,7 +39,7 @@ void free (); #else # include # ifndef memcpy -# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) +# define memcpy(Dst, Src, Num) (bcopy (Src, Dst, Num), (Dst)) # endif #endif diff -adurpN glibc-2.2/intl/l10nflist.c glibc-2.2.1/intl/l10nflist.c --- glibc-2.2/intl/l10nflist.c Thu May 4 10:09:25 2000 +++ glibc-2.2.1/intl/l10nflist.c Sat Jan 6 20:35:20 2001 @@ -33,7 +33,7 @@ #else # include # ifndef memcpy -# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) +# define memcpy(Dst, Src, Num) (bcopy (Src, Dst, Num), (Dst)) # endif #endif #if !HAVE_STRCHR && !defined _LIBC diff -adurpN glibc-2.2/intl/loadinfo.h glibc-2.2.1/intl/loadinfo.h --- glibc-2.2/intl/loadinfo.h Thu May 4 10:09:25 2000 +++ glibc-2.2.1/intl/loadinfo.h Sat Jan 6 20:35:20 2001 @@ -101,7 +101,7 @@ extern char *_nl_find_language PARAMS (( extern char *_nl_find_msg PARAMS ((struct loaded_l10nfile *domain_file, - const char *msgid, unsigned long int index)) + const char *msgid, size_t *lengthp)) internal_function; #endif /* loadinfo.h */ diff -adurpN glibc-2.2/intl/loadmsgcat.c glibc-2.2.1/intl/loadmsgcat.c --- glibc-2.2/intl/loadmsgcat.c Thu Sep 7 11:56:28 2000 +++ glibc-2.2.1/intl/loadmsgcat.c Sat Jan 6 20:35:20 2001 @@ -1,5 +1,5 @@ /* Load needed message catalogs. - Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. 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 @@ -85,8 +85,11 @@ cached by one of GCC's features. */ int _nl_msg_cat_cntr; +#if defined __GNUC__ \ + || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) + /* These structs are the constant expression for the germanic plural - form determination. */ + form determination. It represents the expression "n != 1". */ static const struct expression plvar = { .operation = var, @@ -104,13 +107,45 @@ static struct expression germanic_plural .operation = not_equal, .val = { - .args2 = { + .args2 = + { .left = (struct expression *) &plvar, .right = (struct expression *) &plone } } }; +# define INIT_GERMANIC_PLURAL() + +#else + +/* For compilers without support for ISO C 99 struct/union initializers: + Initialization at run-time. */ + +static struct expression plvar; +static struct expression plone; +static struct expression germanic_plural; + +static void +init_germanic_plural () +{ + if (plone.val.num == 0) + { + plvar.operation = var; + + plone.operation = num; + plone.val.num = 1; + + germanic_plural.operation = not_equal; + germanic_plural.val.args2.left = &plvar; + germanic_plural.val.args2.right = &plone; + } +} + +# define INIT_GERMANIC_PLURAL() init_germanic_plural () + +#endif + /* Load the message catalogs specified by FILENAME. If it is no valid message catalog do nothing. */ @@ -126,6 +161,7 @@ _nl_load_domain (domain_file) int use_mmap = 0; struct loaded_domain *domain; char *nullentry; + size_t nullentrylen; domain_file->decided = 1; domain_file->data = NULL; @@ -214,12 +250,11 @@ _nl_load_domain (domain_file) return; } - domain_file->data - = (struct loaded_domain *) malloc (sizeof (struct loaded_domain)); - if (domain_file->data == NULL) + domain = (struct loaded_domain *) malloc (sizeof (struct loaded_domain)); + if (domain == NULL) return; + domain_file->data = domain; - domain = (struct loaded_domain *) domain_file->data; domain->data = (char *) data; domain->use_mmap = use_mmap; domain->mmap_size = size; @@ -264,7 +299,7 @@ _nl_load_domain (domain_file) # endif #endif domain->conv_tab = NULL; - nullentry = _nl_find_msg (domain_file, "", 0); + nullentry = _nl_find_msg (domain_file, "", &nullentrylen); if (nullentry != NULL) { #if defined _LIBC || HAVE_ICONV @@ -371,6 +406,7 @@ _nl_load_domain (domain_file) for `one', the plural form otherwise. Yes, this is also what English is using since English is a Germanic language. */ no_plural: + INIT_GERMANIC_PLURAL (); domain->plural = &germanic_plural; domain->nplurals = 2; } diff -adurpN glibc-2.2/intl/locale.alias glibc-2.2.1/intl/locale.alias --- glibc-2.2/intl/locale.alias Tue Oct 31 11:09:53 2000 +++ glibc-2.2.1/intl/locale.alias Thu Nov 16 11:12:01 2000 @@ -70,4 +70,5 @@ slovene sl_SI.ISO-8859-2 slovenian sl_SI.ISO-8859-2 spanish es_ES.ISO-8859-1 swedish sv_SE.ISO-8859-1 +thai th_TH.TIS-620 turkish tr_TR.ISO-8859-9 diff -adurpN glibc-2.2/intl/localealias.c glibc-2.2.1/intl/localealias.c --- glibc-2.2/intl/localealias.c Tue Oct 17 14:53:59 2000 +++ glibc-2.2.1/intl/localealias.c Sat Jan 6 20:35:20 2001 @@ -64,7 +64,7 @@ void free (); #else # include # ifndef memcpy -# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) +# define memcpy(Dst, Src, Num) (bcopy (Src, Dst, Num), (Dst)) # endif #endif #if !HAVE_STRCHR && !defined _LIBC diff -adurpN glibc-2.2/intl/plural.c glibc-2.2.1/intl/plural.c --- glibc-2.2/intl/plural.c Thu Aug 31 14:45:03 2000 +++ glibc-2.2.1/intl/plural.c Sat Jan 6 20:35:20 2001 @@ -16,7 +16,7 @@ #line 1 "plural.y" /* Expression parsing for plural form selection. - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. Written by Ulrich Drepper , 2000. The GNU C Library is free software; you can redistribute it and/or @@ -34,6 +34,10 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#ifdef HAVE_CONFIG_H +# include +#endif + #include #include #include "gettext.h" @@ -42,12 +46,12 @@ #define YYLEX_PARAM &((struct parse_args *) arg)->cp #define YYPARSE_PARAM arg -#line 32 "plural.y" +#line 36 "plural.y" typedef union { unsigned long int num; struct expression *exp; } YYSTYPE; -#line 37 "plural.y" +#line 41 "plural.y" /* Prototypes for local functions. */ static struct expression *new_exp (enum operator op, int n, ...); @@ -117,8 +121,8 @@ static const short yyrhs[] = { 19, #if YYDEBUG != 0 static const short yyrline[] = { 0, - 55, 61, 66, 71, 76, 81, 86, 91, 96, 101, - 106, 111, 116, 122 + 59, 65, 70, 75, 80, 85, 90, 95, 100, 105, + 110, 115, 120, 126 }; #endif @@ -734,90 +738,90 @@ yyreduce: switch (yyn) { case 1: -#line 56 "plural.y" +#line 60 "plural.y" { ((struct parse_args *) arg)->res = yyvsp[0].exp; ; break;} case 2: -#line 62 "plural.y" +#line 66 "plural.y" { if ((yyval.exp = new_exp (qmop, 3, yyvsp[-4].exp, yyvsp[-2].exp, yyvsp[0].exp)) == NULL) YYABORT ; break;} case 3: -#line 67 "plural.y" +#line 71 "plural.y" { if ((yyval.exp = new_exp (lor, 2, yyvsp[-2].exp, yyvsp[0].exp)) == NULL) YYABORT ; break;} case 4: -#line 72 "plural.y" +#line 76 "plural.y" { if ((yyval.exp = new_exp (land, 2, yyvsp[-2].exp, yyvsp[0].exp)) == NULL) YYABORT ; break;} case 5: -#line 77 "plural.y" +#line 81 "plural.y" { if ((yyval.exp = new_exp (equal, 2, yyvsp[-2].exp, yyvsp[0].exp)) == NULL) YYABORT ; break;} case 6: -#line 82 "plural.y" +#line 86 "plural.y" { if ((yyval.exp = new_exp (not_equal, 2, yyvsp[-2].exp, yyvsp[0].exp)) == NULL) YYABORT ; break;} case 7: -#line 87 "plural.y" +#line 91 "plural.y" { if ((yyval.exp = new_exp (plus, 2, yyvsp[-2].exp, yyvsp[0].exp)) == NULL) YYABORT ; break;} case 8: -#line 92 "plural.y" +#line 96 "plural.y" { if ((yyval.exp = new_exp (minus, 2, yyvsp[-2].exp, yyvsp[0].exp)) == NULL) YYABORT ; break;} case 9: -#line 97 "plural.y" +#line 101 "plural.y" { if ((yyval.exp = new_exp (mult, 2, yyvsp[-2].exp, yyvsp[0].exp)) == NULL) YYABORT ; break;} case 10: -#line 102 "plural.y" +#line 106 "plural.y" { if ((yyval.exp = new_exp (divide, 2, yyvsp[-2].exp, yyvsp[0].exp)) == NULL) YYABORT ; break;} case 11: -#line 107 "plural.y" +#line 111 "plural.y" { if ((yyval.exp = new_exp (module, 2, yyvsp[-2].exp, yyvsp[0].exp)) == NULL) YYABORT ; break;} case 12: -#line 112 "plural.y" +#line 116 "plural.y" { if ((yyval.exp = new_exp (var, 0)) == NULL) YYABORT ; break;} case 13: -#line 117 "plural.y" +#line 121 "plural.y" { if ((yyval.exp = new_exp (num, 0)) == NULL) YYABORT; @@ -825,7 +829,7 @@ case 13: ; break;} case 14: -#line 123 "plural.y" +#line 127 "plural.y" { yyval.exp = yyvsp[-1].exp ; @@ -1052,7 +1056,7 @@ yyerrhandle: } return 1; } -#line 128 "plural.y" +#line 132 "plural.y" static struct expression * @@ -1156,9 +1160,10 @@ yylex (YYSTYPE *lval, const char **pexp) result = *exp++; switch (result) { - case '0' ... '9': + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': { - unsigned long int n = exp[-1] - '0'; + unsigned long int n = result - '0'; while (exp[0] >= '0' && exp[0] <= '9') { n *= 10; diff -adurpN glibc-2.2/intl/plural.y glibc-2.2.1/intl/plural.y --- glibc-2.2/intl/plural.y Thu Aug 31 14:45:03 2000 +++ glibc-2.2.1/intl/plural.y Sat Jan 6 20:35:20 2001 @@ -1,6 +1,6 @@ %{ /* Expression parsing for plural form selection. - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. Written by Ulrich Drepper , 2000. The GNU C Library is free software; you can redistribute it and/or @@ -18,6 +18,10 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#ifdef HAVE_CONFIG_H +# include +#endif + #include #include #include "gettext.h" @@ -228,9 +232,10 @@ yylex (YYSTYPE *lval, const char **pexp) result = *exp++; switch (result) { - case '0' ... '9': + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': { - unsigned long int n = exp[-1] - '0'; + unsigned long int n = result - '0'; while (exp[0] >= '0' && exp[0] <= '9') { n *= 10; diff -adurpN glibc-2.2/intl/textdomain.c glibc-2.2.1/intl/textdomain.c --- glibc-2.2/intl/textdomain.c Sun Oct 8 17:04:51 2000 +++ glibc-2.2.1/intl/textdomain.c Sat Jan 6 20:35:20 2001 @@ -29,7 +29,7 @@ #else # include # ifndef memcpy -# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) +# define memcpy(Dst, Src, Num) (bcopy (Src, Dst, Num), (Dst)) # endif #endif diff -adurpN glibc-2.2/intl/tst-gettext.c glibc-2.2.1/intl/tst-gettext.c --- glibc-2.2/intl/tst-gettext.c Tue Oct 31 11:09:53 2000 +++ glibc-2.2.1/intl/tst-gettext.c Sat Jan 6 20:35:20 2001 @@ -76,6 +76,7 @@ main (int argc, char *argv[]) setenv ("LC_CTYPE", "non-existing-locale", 1); setenv ("LANG", "non-existing-locale", 1); setlocale (LC_CTYPE, "de_DE.ISO-8859-1"); + setlocale (LC_MESSAGES, "de_DE.ISO-8859-1"); unsetenv ("OUTPUT_CHARSET"); /* This is the name of the existing domain with a catalog for the LC_MESSAGES category. */ diff -adurpN glibc-2.2/intl/tst-gettext2.c glibc-2.2.1/intl/tst-gettext2.c --- glibc-2.2/intl/tst-gettext2.c Mon Oct 30 19:07:57 2000 +++ glibc-2.2.1/intl/tst-gettext2.c Thu Nov 16 11:12:02 2000 @@ -24,15 +24,17 @@ #include #include -struct data_t { +struct data_t +{ const char *selection; const char *description; }; int data_cnt = 2; struct data_t strings[] = -{{"String1", N_("First string for testing.")}, - {"String2", N_("Another string for testing.")} +{ + { "String1", N_("First string for testing.") }, + { "String2", N_("Another string for testing.") } }; const int lang_cnt = 3; @@ -50,18 +52,20 @@ main (void) unsetenv ("LC_CTYPE"); unsetenv ("LANG"); unsetenv ("OUTPUT_CHARSET"); - + textdomain ("tstlang"); for (i = 0; i < lang_cnt; ++i) { int j; - setlocale (LC_ALL, lang[i]); + if (setlocale (LC_ALL, lang[i]) == NULL) + setlocale (LC_ALL, "C"); bindtextdomain ("tstlang", OBJPFX "domaindir"); for (j = 0; j < data_cnt; ++j) - printf ("%s - %s\n", strings[j].selection, _(strings[j].description)); + printf ("%s - %s\n", strings[j].selection, + gettext (strings[j].description)); } return 0; diff -adurpN glibc-2.2/intl/tst-gettext2.sh glibc-2.2.1/intl/tst-gettext2.sh --- glibc-2.2/intl/tst-gettext2.sh Mon Oct 30 19:08:09 2000 +++ glibc-2.2.1/intl/tst-gettext2.sh Wed Nov 22 10:59:48 2000 @@ -20,11 +20,10 @@ common_objpfx=$1 objpfx=$2 -malloc_trace=$3 GCONV_PATH=${common_objpfx}iconvdata export GCONV_PATH -LOCPATH=${common_objpfx}localedata +LOCPATH=${objpfx}domaindir export LOCPATH LC_ALL=C export LC_ALL @@ -32,10 +31,30 @@ export LC_ALL # Generate the test data. test -d ${objpfx}domaindir || mkdir ${objpfx}domaindir # Create the locale directories. -test -d ${objpfx}domaindir/lang1 || mkdir ${objpfx}domaindir/lang1 -test -d ${objpfx}domaindir/lang2 || mkdir ${objpfx}domaindir/lang2 -test -d ${objpfx}domaindir/lang1/LC_MESSAGES || mkdir ${objpfx}domaindir/lang1/LC_MESSAGES -test -d ${objpfx}domaindir/lang2/LC_MESSAGES || mkdir ${objpfx}domaindir/lang2/LC_MESSAGES +test -d ${objpfx}domaindir/lang1 || { + mkdir ${objpfx}domaindir/lang1 + for f in ADDRESS COLLATE CTYPE IDENTIFICATION MEASUREMENT MONETARY NAME NUMERIC PAPER TELEPHONE TIME; do + cp ${common_objpfx}localedata/de_DE.ISO-8859-1/LC_$f \ + ${objpfx}domaindir/lang1 + done +} +test -d ${objpfx}domaindir/lang2 || { + mkdir ${objpfx}domaindir/lang2 + for f in ADDRESS COLLATE CTYPE IDENTIFICATION MEASUREMENT MONETARY NAME NUMERIC PAPER TELEPHONE TIME; do + cp ${common_objpfx}localedata/de_DE.ISO-8859-1/LC_$f \ + ${objpfx}domaindir/lang2 + done +} +test -d ${objpfx}domaindir/lang1/LC_MESSAGES || { + mkdir ${objpfx}domaindir/lang1/LC_MESSAGES + cp ${common_objpfx}localedata/de_DE.ISO-8859-1/LC_MESSAGES/SYS_LC_MESSAGES \ + ${objpfx}domaindir/lang1/LC_MESSAGES +} +test -d ${objpfx}domaindir/lang2/LC_MESSAGES || { + mkdir ${objpfx}domaindir/lang2/LC_MESSAGES + cp ${common_objpfx}localedata/de_DE.ISO-8859-1/LC_MESSAGES/SYS_LC_MESSAGES \ + ${objpfx}domaindir/lang2/LC_MESSAGES +} # Populate them. msgfmt -o ${objpfx}domaindir/lang1/LC_MESSAGES/tstlang.mo \ @@ -46,9 +65,15 @@ msgfmt -o ${objpfx}domaindir/lang2/LC_ME # Now run the test. -MALLOC_TRACE=$malloc_trace \ ${common_objpfx}elf/ld.so --library-path $common_objpfx \ -${objpfx}tst-gettext2 > ${objpfx}tst-gettext2.out ${objpfx}domaindir +${objpfx}tst-gettext2 > ${objpfx}tst-gettext2.out ${objpfx}domaindir && +cmp ${objpfx}tst-gettext2.out - < +#include #include #include #include @@ -31,6 +32,7 @@ main (void) setenv ("LANGUAGE", "existing-locale", 1); unsetenv ("OUTPUT_CHARSET"); + setlocale (LC_ALL, "en_US.ANSI_X3.4-1968"); textdomain ("translit"); bindtextdomain ("translit", OBJPFX "domaindir"); diff -adurpN glibc-2.2/io/Makefile glibc-2.2.1/io/Makefile --- glibc-2.2/io/Makefile Tue Oct 31 11:09:53 2000 +++ glibc-2.2.1/io/Makefile Sat Jan 6 20:35:20 2001 @@ -1,4 +1,4 @@ -# Copyright (C) 1992-1999, 2000 Free Software Foundation, Inc. +# Copyright (C) 1992-1999, 2000, 2001 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 @@ -56,7 +56,7 @@ static-only-routines = stat fstat lstat others := pwd test-srcs := ftwtest tests := test-utime test-stat test-stat2 test-lfs tst-getcwd \ - tst-fcntl + tst-fcntl bug-ftw1 distribute := ftwtest-sh diff -adurpN glibc-2.2/io/Versions glibc-2.2.1/io/Versions --- glibc-2.2/io/Versions Thu Nov 9 11:34:28 2000 +++ glibc-2.2.1/io/Versions Thu Nov 16 11:12:02 2000 @@ -83,10 +83,6 @@ libc { # s* statfs64; statvfs; statvfs64; } - GLIBC_2.1.1 { - # l* - lockf64; - } GLIBC_2.1.3 { # For the cancelation wrappers. __libc_open64; __libc_lseek64; diff -adurpN glibc-2.2/io/bug-ftw1.c glibc-2.2.1/io/bug-ftw1.c --- glibc-2.2/io/bug-ftw1.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/io/bug-ftw1.c Fri Jan 5 10:09:11 2001 @@ -0,0 +1,78 @@ +/* Test for ftw function searching in root directory. + Copyright (C) 2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 2001. + + 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. */ + +#include +#include +#include +#include + + +int result; +int cnt; +int sawroot; + + +static int +callback (const char *fname, const struct stat *st, int flag) +{ + if (++cnt >= 10) + return 1; + + printf ("%d: \"%s\" -> ", cnt, fname); + if (strcmp (fname, "/") == 0 && sawroot) + { + puts ("root directory reported twice"); + result = 1; + } + else if (fname[0] != '/') + { + puts ("missing '/' as first character"); + result = 1; + } + else if (fname[1] == '/') + { + puts ("double '/' at beginning"); + result = 1; + } + else + { + puts ("OK"); + sawroot |= strcmp (fname, "/") == 0; + } + + return 0; +} + + +int +main (void) +{ + mtrace (); + + ftw ("/", callback, 10); + + if (! sawroot) + { + puts ("root directory wasn't reported"); + result = 1; + } + + return result; +} diff -adurpN glibc-2.2/io/ftw.c glibc-2.2.1/io/ftw.c --- glibc-2.2/io/ftw.c Mon May 1 14:56:37 2000 +++ glibc-2.2.1/io/ftw.c Sat Jan 6 20:35:20 2001 @@ -1,5 +1,5 @@ /* File tree walker functions. - Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -396,7 +396,10 @@ ftw_dir (struct ftw_data *data, struct S /* Next, update the `struct FTW' information. */ ++data->ftw.level; startp = strchr (data->dirbuf, '\0'); - *startp++ = '/'; + /* There always must be a directory name. */ + assert (startp != data->dirbuf); + if (startp != data->dirbuf + 1) + *startp++ = '/'; data->ftw.base = startp - data->dirbuf; while (dir.stream != NULL && (d = READDIR (dir.stream)) != NULL) @@ -426,15 +429,11 @@ ftw_dir (struct ftw_data *data, struct S int save_err; char *runp = dir.content; - assert (result == 0); - - while (*runp != '\0') + while (result == 0 && *runp != '\0') { char *endp = strchr (runp, '\0'); result = process_entry (data, &dir, runp, endp - runp); - if (result != 0) - break; runp = endp + 1; } diff -adurpN glibc-2.2/io/ftwtest-sh glibc-2.2.1/io/ftwtest-sh --- glibc-2.2/io/ftwtest-sh Wed Aug 2 14:52:10 2000 +++ glibc-2.2.1/io/ftwtest-sh Sat Jan 6 20:35:20 2001 @@ -5,10 +5,12 @@ objpfx=$1 # We expect one parameter which is the test program. This must understand # a number options: -# --phys use the FTW_PHYS flag -# --chdir use the FTW_CHDIR and print the current directory in the -# callback -# --depth use the FTW_DEPTH flag +# --phys use the FTW_PHYS flag +# --chdir use the FTW_CHDIR and print the current directory +# in the callback +# --depth use the FTW_DEPTH flag +# --early-exit print file@2 item only and return non-zero from the +# callback when it is seen testprogram=$2 # We cannot test this as root. @@ -133,6 +135,15 @@ base = "$tmp/ftwtest.d/foo/lvl1/", file base = "$tmp/ftwtest.d/foo/lvl1/lvl2/", file = "file@2", flag = FTW_F, cwd = $tmpreal/ftwtest.d/foo/lvl1/lvl2, level = 4 base = "$tmp/ftwtest.d/foo/lvl1/lvl2/", file = "lvl3", flag = FTW_D, cwd = $tmpreal/ftwtest.d/foo/lvl1/lvl2, level = 4 base = "$tmp/ftwtest.d/foo/lvl1/lvl2/lvl3/", file = "file@3", flag = FTW_F, cwd = $tmpreal/ftwtest.d/foo/lvl1/lvl2/lvl3, level = 5 +EOF +rm $testout + +LD_LIBRARY_PATH=$objpfx $ldso $testprogram --early-exit $tmpdir | + sort > $testout + +cat < #include #include +#include #include #include @@ -10,12 +11,14 @@ int do_depth; int do_chdir; int do_phys; +int do_exit; struct option options[] = { { "depth", no_argument, &do_depth, 1 }, { "chdir", no_argument, &do_chdir, 1 }, { "phys", no_argument, &do_phys, 1 }, + { "early-exit", no_argument, &do_exit, 1 }, { NULL, 0, NULL, 0 } }; @@ -31,9 +34,12 @@ const char *flag2name[] = }; -int +static int cb (const char *name, const struct stat *st, int flag, struct FTW *f) { + if (do_exit && strcmp (name + f->base, "file@2")) + return 0; + printf ("base = \"%.*s\", file = \"%s\", flag = %s", f->base, name, name + f->base, flag2name[flag]); if (do_chdir) @@ -43,7 +49,7 @@ cb (const char *name, const struct stat free (cwd); } printf (", level = %d\n", f->level); - return 0; + return do_exit ? 26 : 0; } int @@ -64,8 +70,13 @@ main (int argc, char *argv[]) if (do_phys) flag |= FTW_PHYS; - r = nftw (optind < argc ? argv[optind] : ".", cb, 3, flag); - if (r) + r = nftw (optind < argc ? argv[optind] : ".", cb, do_exit ? 1 : 3, flag); + if (r < 0) perror ("nftw"); + if (do_exit) + { + puts (r == 26 ? "succeeded" : "failed"); + return r == 26 ? 0 : 1; + } return r; } diff -adurpN glibc-2.2/io/pwd.c glibc-2.2.1/io/pwd.c --- glibc-2.2/io/pwd.c Thu Oct 26 22:57:24 2000 +++ glibc-2.2.1/io/pwd.c Sat Jan 6 20:35:20 2001 @@ -39,5 +39,5 @@ main (void) free (dir); } - exit (dir == NULL ? EXIT_FAILURE : EXIT_SUCCESS); + return (dir == NULL ? EXIT_FAILURE : EXIT_SUCCESS); } diff -adurpN glibc-2.2/io/test-lfs.c glibc-2.2.1/io/test-lfs.c --- glibc-2.2/io/test-lfs.c Thu Oct 26 22:57:24 2000 +++ glibc-2.2.1/io/test-lfs.c Wed Jan 10 15:54:26 2001 @@ -1,5 +1,5 @@ /* Some basic tests for LFS. - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2001 Free Software Foundation, Inc. Contributed by Andreas Jaeger , 2000. The GNU C Library is free software; you can redistribute it and/or @@ -100,6 +100,11 @@ do_test (int argc, char *argv[]) error (0, errno, "lseek64 is not supported"); exit (EXIT_SUCCESS); } + if (ret == -1 && errno == EINVAL) + { + error (0, errno, "LFS seems not to be supported "); + exit (EXIT_SUCCESS); + } ret = write (fd, "Hello", 5); if (ret == -1 && errno == EINVAL) @@ -122,9 +127,9 @@ do_test (int argc, char *argv[]) error (0, errno, "stat64 is not supported"); else if (ret == -1) error (EXIT_FAILURE, errno, "cannot stat file `%s'", name); - else if (statbuf.st_size != (TWO_GB+100+5)) + else if (statbuf.st_size != (TWO_GB + 100 + 5)) error (EXIT_FAILURE, 0, "stat reported size %lld instead of %lld.", - statbuf.st_size, (TWO_GB+100+5)); + (long long int) statbuf.st_size, (TWO_GB + 100 + 5)); return 0; } diff -adurpN glibc-2.2/io/test-utime.c glibc-2.2.1/io/test-utime.c --- glibc-2.2/io/test-utime.c Tue Aug 15 11:16:20 2000 +++ glibc-2.2.1/io/test-utime.c Sat Jan 6 20:35:20 2001 @@ -37,14 +37,14 @@ main (int argc, char *argv[]) if (tmpnam (file) == 0) { perror ("tmpnam"); - exit (1); + return 1; } fd = creat (file, 0666); if (fd < 0) { perror ("creat"); - exit (1); + return 1; } close (fd); @@ -55,14 +55,14 @@ main (int argc, char *argv[]) { perror ("utime"); remove (file); - exit (1); + return 1; } if (stat (file, &st)) { perror ("stat"); remove (file); - exit (1); + return 1; } /* Test utime with NULL. @@ -73,14 +73,14 @@ main (int argc, char *argv[]) { perror ("time"); remove (file); - exit (1); + return 1; } if (utime (file, NULL)) { perror ("utime NULL"); remove (file); - exit (1); + return 1; } now2 = time (NULL); @@ -88,14 +88,14 @@ main (int argc, char *argv[]) { perror ("time"); remove (file); - exit (1); + return 1; } if (stat (file, &stnow)) { perror ("stat"); remove (file); - exit (1); + return 1; } remove (file); @@ -103,27 +103,27 @@ main (int argc, char *argv[]) if (st.st_mtime != ut.modtime) { printf ("modtime %ld != %ld\n", st.st_mtime, ut.modtime); - exit (1); + return 1; } if (st.st_atime != ut.actime) { printf ("actime %ld != %ld\n", st.st_atime, ut.actime); - exit (1); + return 1; } if (stnow.st_mtime < now1 || stnow.st_mtime > now2) { printf ("modtime %ld <%ld >%ld\n", st.st_mtime, now1, now2); - exit (1); + return 1; } if (stnow.st_atime < now1 || stnow.st_atime > now2) { printf ("actime %ld <%ld >%ld\n", st.st_atime, now1, now2); - exit (1); + return 1; } puts ("Test succeeded."); - exit (0); + return 0; } diff -adurpN glibc-2.2/libio/Makefile glibc-2.2.1/libio/Makefile --- glibc-2.2/libio/Makefile Thu Sep 7 11:56:28 2000 +++ glibc-2.2.1/libio/Makefile Sat Jan 6 23:38:07 2001 @@ -1,4 +1,4 @@ -# Copyright (C) 1995,96,97,98,99,2000 Free Software Foundation, Inc. +# Copyright (C) 1995,96,97,98,99,2000, 2001 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 @@ -49,6 +49,7 @@ routines := \ tests = tst_swprintf tst_wprintf tst_swscanf tst_wscanf tst_getwc tst_putwc \ tst_wprintf2 tst-widetext test-fmemopen +test-srcs = test-freopen all: # Make this the default target; it will be defined in Rules. @@ -92,6 +93,11 @@ shared-only-routines = oldiofopen oldiof oldiofgetpos oldiofgetpos64 oldiofsetpos \ oldiofsetpos64 -distribute := iolibio.h libioP.h strfile.h Banner +distribute := iolibio.h libioP.h strfile.h Banner test-freopen.sh include ../Rules + +tests: $(objpfx)test-freopen.out + +$(objpfx)test-freopen.out: test-freopen.sh $(objpfx)test-freopen + $(SHELL) -e $< $(common-objpfx) $(common-objpfx)libio/ diff -adurpN glibc-2.2/libio/bits/stdio.h glibc-2.2.1/libio/bits/stdio.h --- glibc-2.2/libio/bits/stdio.h Wed May 31 11:10:40 2000 +++ glibc-2.2.1/libio/bits/stdio.h Wed Jan 10 15:54:26 2001 @@ -1,5 +1,5 @@ /* Optimizing macros and inline functions for stdio functions. - Copyright (C) 1998, 2000 Free Software Foundation, Inc. + Copyright (C) 1998, 2000, 2001 Free Software Foundation, Inc. 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 @@ -28,6 +28,13 @@ #ifdef __USE_EXTERN_INLINES +/* Since version 2.97 GCC knows about `fprintf' and can optimize certain + cases. Help gcc to optimize more code by mapping `printf' to the known + `fprintf' function. Unfortunately we have to use a macro. */ +# if __GNUC_PREREQ (2,97) +# define printf(fmt, args...) fprintf (stdout, fmt, ##args) +# endif + /* Write formatted output to stdout from argument list ARG. */ __STDIO_INLINE int vprintf (__const char *__restrict __fmt, _G_va_list __arg) __THROW diff -adurpN glibc-2.2/libio/fmemopen.c glibc-2.2.1/libio/fmemopen.c --- glibc-2.2/libio/fmemopen.c Tue Oct 31 11:09:53 2000 +++ glibc-2.2.1/libio/fmemopen.c Sat Jan 6 20:35:20 2001 @@ -87,7 +87,7 @@ struct fmemopen_cookie_struct }; -ssize_t +static ssize_t fmemopen_read (void *cookie, char *b, size_t s) { fmemopen_cookie_t *c; @@ -111,7 +111,7 @@ fmemopen_read (void *cookie, char *b, si } -ssize_t +static ssize_t fmemopen_write (void *cookie, const char *b, size_t s) { fmemopen_cookie_t *c; @@ -145,7 +145,7 @@ fmemopen_write (void *cookie, const char } -int +static int fmemopen_seek (void *cookie, _IO_off64_t *p, int w) { _IO_off64_t np; @@ -180,7 +180,7 @@ fmemopen_seek (void *cookie, _IO_off64_t } -int +static int fmemopen_close (void *cookie) { fmemopen_cookie_t *c; diff -adurpN glibc-2.2/libio/freopen.c glibc-2.2.1/libio/freopen.c --- glibc-2.2/libio/freopen.c Thu Sep 7 11:56:28 2000 +++ glibc-2.2.1/libio/freopen.c Thu Nov 16 11:12:02 2000 @@ -51,6 +51,9 @@ freopen (filename, mode, fp) else #endif result = _IO_freopen (filename, mode, fp); + if (result != NULL) + /* unbound stream orientation */ + result->_mode = 0; _IO_funlockfile (fp); _IO_cleanup_region_end (0); return result; diff -adurpN glibc-2.2/libio/freopen64.c glibc-2.2.1/libio/freopen64.c --- glibc-2.2/libio/freopen64.c Sat Jun 6 16:18:58 1998 +++ glibc-2.2.1/libio/freopen64.c Thu Nov 16 11:12:02 2000 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1993,1995,1996,1997,1998,2000 Free Software Foundation, Inc. This file is part of the GNU IO Library. This library is free software; you can redistribute it and/or @@ -40,6 +40,9 @@ freopen64 (filename, mode, fp) _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); _IO_flockfile (fp); result = _IO_freopen64 (filename, mode, fp); + if (result != NULL) + /* unbound stream orientation */ + result->_mode = 0; _IO_funlockfile (fp); _IO_cleanup_region_end (0); return result; diff -adurpN glibc-2.2/libio/getc_u.c glibc-2.2.1/libio/getc_u.c --- glibc-2.2/libio/getc_u.c Thu Jan 28 12:39:44 1999 +++ glibc-2.2.1/libio/getc_u.c Sat Jan 6 20:35:20 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1995, 1996, 1997, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1993,1995,1996,1997,1999,2000 Free Software Foundation, Inc. This file is part of the GNU IO Library. This library is free software; you can redistribute it and/or @@ -24,7 +24,7 @@ General Public License. */ #include "libioP.h" -#include "stdio.h" +#include #undef getc_unlocked diff -adurpN glibc-2.2/libio/getwc_u.c glibc-2.2.1/libio/getwc_u.c --- glibc-2.2/libio/getwc_u.c Wed Jun 16 15:03:56 1999 +++ glibc-2.2.1/libio/getwc_u.c Sat Jan 6 20:35:20 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1995, 1996, 1997, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1993,1995,1996,1997,1999,2000 Free Software Foundation, Inc. This file is part of the GNU IO Library. This library is free software; you can redistribute it and/or @@ -24,7 +24,7 @@ General Public License. */ #include "libioP.h" -#include "stdio.h" +#include #undef getwc_unlocked diff -adurpN glibc-2.2/libio/libio.h glibc-2.2.1/libio/libio.h --- glibc-2.2/libio/libio.h Thu Sep 7 11:56:28 2000 +++ glibc-2.2.1/libio/libio.h Fri Dec 1 11:55:06 2000 @@ -246,17 +246,13 @@ struct _IO_wide_data backup area */ wchar_t *_IO_save_end; /* Pointer to end of non-current get area. */ -#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T __mbstate_t _IO_state; __mbstate_t _IO_last_state; -#endif struct _IO_codecvt _codecvt; wchar_t _shortbuf[1]; -#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T struct _IO_jump_t *_wide_vtable; -#endif }; #endif diff -adurpN glibc-2.2/libio/stdio.h glibc-2.2.1/libio/stdio.h --- glibc-2.2/libio/stdio.h Thu Sep 14 12:24:15 2000 +++ glibc-2.2.1/libio/stdio.h Sat Jan 13 10:48:48 2001 @@ -1,5 +1,5 @@ /* Define ISO C stdio on top of C++ iostreams. - Copyright (C) 1991, 1994-1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1991, 1994-1999, 2000, 2001 Free Software Foundation, Inc. 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 @@ -479,22 +479,6 @@ extern void rewind (FILE *__stream) __TH file offset. `long int' is not the right type. These definitions are originally defined in the Large File Support API. */ -/* Types needed in these functions. */ -#ifndef __off_t_defined -# ifndef __USE_FILE_OFFSET64 -typedef __off_t off_t; -# else -typedef __off64_t off_t; -# endif -# define __off_t_defined -#endif - -#if defined __USE_LARGEFILE64 && !defined __off64_t_defined -typedef __off64_t off64_t; -# define __off64_t_defined -#endif - - #ifndef __USE_FILE_OFFSET64 # ifdef __USE_LARGEFILE /* Seek to a certain position on STREAM. */ @@ -637,7 +621,7 @@ extern void funlockfile (FILE *__stream) #endif /* X/Open, but not issue 6 and not for GNU. */ /* If we are compiling with optimizing read this file. It contains - several optizing inline functions and macros. */ + several optimizing inline functions and macros. */ #ifdef __USE_EXTERN_INLINES # include #endif diff -adurpN glibc-2.2/libio/test-freopen.c glibc-2.2.1/libio/test-freopen.c --- glibc-2.2/libio/test-freopen.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/libio/test-freopen.c Thu Nov 16 16:24:45 2000 @@ -0,0 +1,57 @@ +/* Test for freopen implementation. + Copyright (C) 2000 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. */ + +#include +#include +#include +#include + + +int +main (int argc, char *argv[]) +{ + FILE *fp; + + mtrace (); + + if (argc < 2) + exit (1); + + fp = fopen (argv[1], "w"); + if (fp == NULL) + { + puts ("fopen failed: %m"); + exit (1); + } + + fputs ("Hello world (mb)\n", fp); + + fp = freopen (argv[1], "a+", fp); + if (fp == NULL) + { + puts ("freopen failed: %m"); + exit (1); + } + + fputws (L"Hello world (wc)\n", fp); + + fclose (fp); + + return 0; +} diff -adurpN glibc-2.2/libio/test-freopen.sh glibc-2.2.1/libio/test-freopen.sh --- glibc-2.2/libio/test-freopen.sh Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/libio/test-freopen.sh Thu Nov 16 15:06:49 2000 @@ -0,0 +1,31 @@ +#! /bin/sh +# Test of freopen. +# Copyright (C) 2000 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. + +common_objpfx=$1 +objpfx=$2 + +${common_objpfx}elf/ld.so --library-path $common_objpfx \ +${objpfx}test-freopen ${objpfx}test-freopen.out && +cmp ${objpfx}test-freopen.out - <<"EOF" +Hello world (mb) +Hello world (wc) +EOF + +exit $? diff -adurpN glibc-2.2/libio/wgenops.c glibc-2.2.1/libio/wgenops.c --- glibc-2.2/libio/wgenops.c Tue Aug 15 11:16:20 2000 +++ glibc-2.2.1/libio/wgenops.c Sat Jan 6 20:35:20 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1995, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1993,1995,1997,1998,1999,2000,2001 Free Software Foundation, Inc. This file is part of the GNU IO Library. Written by Ulrich Drepper . Based on the single byte version by Per Bothner . @@ -403,7 +403,7 @@ _IO_wdoallocbuf (fp) if (fp->_wide_data->_IO_buf_base) return; if (!(fp->_flags & _IO_UNBUFFERED)) - if (_IO_DOALLOCATE (fp) != WEOF) + if ((wint_t)_IO_WDOALLOCATE (fp) != WEOF) return; _IO_wsetb (fp, fp->_wide_data->_shortbuf, fp->_wide_data->_shortbuf + 1, 0); } @@ -453,7 +453,7 @@ _IO_switch_to_wget_mode (fp) _IO_FILE *fp; { if (fp->_wide_data->_IO_write_ptr > fp->_wide_data->_IO_write_base) - if (_IO_OVERFLOW (fp, WEOF) == WEOF) + if ((wint_t)_IO_WOVERFLOW (fp, WEOF) == WEOF) return EOF; if (_IO_in_backup (fp)) fp->_wide_data->_IO_read_base = fp->_wide_data->_IO_backup_base; @@ -622,7 +622,7 @@ _IO_sputbackwc (fp, c) else result = _IO_PBACKFAIL (fp, c); - if (result != EOF) + if (result != WEOF) fp->_flags &= ~_IO_EOF_SEEN; return result; @@ -632,7 +632,7 @@ wint_t _IO_sungetwc (fp) _IO_FILE *fp; { - int result; + wint_t result; if (fp->_wide_data->_IO_read_ptr > fp->_wide_data->_IO_read_base) { diff -adurpN glibc-2.2/locale/Makefile glibc-2.2.1/locale/Makefile --- glibc-2.2/locale/Makefile Thu Oct 26 22:57:25 2000 +++ glibc-2.2.1/locale/Makefile Sat Jan 6 20:35:21 2001 @@ -35,7 +35,7 @@ distribute = localeinfo.h categories.def locfile.h charmap.h repertoire.h localedef.h \ 3level.h charmap-dir.h) routines = setlocale findlocale loadlocale localeconv nl_langinfo \ - nl_langinfo_l mb_cur_max codeset_name \ + nl_langinfo_l mb_cur_max \ newlocale duplocale freelocale tests = tst-C-locale categories = ctype messages monetary numeric time paper name \ diff -adurpN glibc-2.2/locale/codeset_name.c glibc-2.2.1/locale/codeset_name.c --- glibc-2.2/locale/codeset_name.c Fri Feb 14 20:27:59 1997 +++ glibc-2.2.1/locale/codeset_name.c Wed Dec 31 16:00:00 1969 @@ -1,31 +0,0 @@ -/* Internal function to return the name of the current codeset. - Copyright (C) 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1996. - - 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. */ - -#include -#include -#include -#include "localeinfo.h" - - -const char * -__ctype_get_codeset_name (void) -{ - return _NL_CURRENT (LC_CTYPE, _NL_CTYPE_CODESET_NAME); -} diff -adurpN glibc-2.2/locale/findlocale.c glibc-2.2.1/locale/findlocale.c --- glibc-2.2/locale/findlocale.c Tue Oct 31 11:09:54 2000 +++ glibc-2.2.1/locale/findlocale.c Fri Dec 1 11:55:06 2000 @@ -167,7 +167,7 @@ _nl_find_locale (const char *locale_path /* Determine the locale name for which loading succeeded. This information comes from the file name. The form is //LC_foo. We must extract the part. */ - if (((struct locale_data *) locale_file->data)->name == NULL) + if (((const struct locale_data *) locale_file->data)->name == NULL) { char *cp, *endp; @@ -185,7 +185,7 @@ _nl_find_locale (const char *locale_path ((struct locale_data *) locale_file->data)->use_translit = 1; /* Increment the usage count. */ - if (((struct locale_data *) locale_file->data)->usage_count + if (((const struct locale_data *) locale_file->data)->usage_count < MAX_USAGE_COUNT) ++((struct locale_data *) locale_file->data)->usage_count; diff -adurpN glibc-2.2/locale/iso-4217.def glibc-2.2.1/locale/iso-4217.def --- glibc-2.2/locale/iso-4217.def Thu Aug 31 14:45:04 2000 +++ glibc-2.2.1/locale/iso-4217.def Sat Jan 6 20:35:21 2001 @@ -57,7 +57,7 @@ DEFINE_INT_CURR("DZD ") /* Algerian Din DEFINE_INT_CURR("ECS ") /* Ecuadoran Sucre */ DEFINE_INT_CURR("EEK ") /* Estonian Kroon */ DEFINE_INT_CURR("EGP ") /* Egyptian Pound */ -DEFINE_INT_CURR("ERB ") /* Eritrean Birr */ +DEFINE_INT_CURR("ERN ") /* Eritrean Nakfa */ DEFINE_INT_CURR("ESP ") /* Spanish Peseta */ DEFINE_INT_CURR("ETB ") /* Ethiopian Birr */ DEFINE_INT_CURR("EUR ") /* European Union Euro */ diff -adurpN glibc-2.2/locale/iso-639.def glibc-2.2.1/locale/iso-639.def --- glibc-2.2/locale/iso-639.def Thu Aug 31 14:45:04 2000 +++ glibc-2.2.1/locale/iso-639.def Sat Jan 6 20:35:21 2001 @@ -49,7 +49,7 @@ DEFINE_LANGUAGE_CODE ("French", fr, fra, DEFINE_LANGUAGE_CODE ("Frisian", fy, fry, fry) DEFINE_LANGUAGE_CODE ("Georgian", ka, kat, geo) DEFINE_LANGUAGE_CODE ("German", de, deu, ger) -DEFINE_LANGUAGE_CODE ("Gaelic (Scots)", gl, gla, gla) +DEFINE_LANGUAGE_CODE ("Gaelic (Scots)", gd, gla, gla) DEFINE_LANGUAGE_CODE ("Irish", ga, gle, gle) DEFINE_LANGUAGE_CODE ("Gallegan", gl, glg, glg) DEFINE_LANGUAGE_CODE ("Manx", gv, glv, glv) @@ -152,6 +152,7 @@ DEFINE_LANGUAGE_CODE ("Thai", th, tha, t DEFINE_LANGUAGE_CODE ("Tibetan", bo, bod, tib) DEFINE_LANGUAGE_CODE ("Tswana", tn, tsn, tsn) DEFINE_LANGUAGE_CODE ("Tsonga", ts, tso, tso) +DEFINE_LANGUAGE_CODE ("Turkish", tr, tur, tur) DEFINE_LANGUAGE_CODE ("Turkmen", tk, tuk, tuk) DEFINE_LANGUAGE_CODE ("Twi", tw, twi, twi) DEFINE_LANGUAGE_CODE ("Uighur", ug, uig, uig) @@ -164,5 +165,6 @@ DEFINE_LANGUAGE_CODE ("Welsh", cy, cym, DEFINE_LANGUAGE_CODE ("Wolof", wo, wol, wol) DEFINE_LANGUAGE_CODE ("Xhosa", xh, xho, xho) DEFINE_LANGUAGE_CODE ("Yiddish", yi, yid, yid) +DEFINE_LANGUAGE_CODE ("Yoruba", yo, yor, yor) DEFINE_LANGUAGE_CODE ("Zhuang", za, zha, zha) DEFINE_LANGUAGE_CODE ("Zulu", zu, zul, zul) diff -adurpN glibc-2.2/locale/lc-time.c glibc-2.2.1/locale/lc-time.c --- glibc-2.2/locale/lc-time.c Thu Aug 31 14:45:04 2000 +++ glibc-2.2.1/locale/lc-time.c Sat Jan 6 20:35:21 2001 @@ -121,11 +121,11 @@ _nl_init_era_entries (void) /* Set and skip wide era name. */ eras[cnt].era_wname = (wchar_t *) ptr; - ptr = (char *) (wcschr ((wchar_t *) ptr, '\0') + 1); + ptr = (char *) (wcschr ((wchar_t *) ptr, L'\0') + 1); /* Set and skip wide era format. */ eras[cnt].era_wformat = (wchar_t *) ptr; - ptr = (char *) (wcschr ((wchar_t *) ptr, '\0') + 1); + ptr = (char *) (wcschr ((wchar_t *) ptr, L'\0') + 1); } } } diff -adurpN glibc-2.2/locale/localeinfo.h glibc-2.2.1/locale/localeinfo.h --- glibc-2.2/locale/localeinfo.h Tue Oct 31 11:09:54 2000 +++ glibc-2.2.1/locale/localeinfo.h Sat Jan 13 10:48:49 2001 @@ -1,5 +1,5 @@ /* Declarations for internal libc locale interfaces - Copyright (C) 1995, 96, 97, 98, 99, 2000 Free Software Foundation, Inc. + Copyright (C) 1995, 96, 97, 98, 99,2000,2001 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 @@ -33,7 +33,7 @@ #include /* For loaded_l10nfile definition. */ /* Magic number at the beginning of a locale data file for CATEGORY. */ -#define LIMAGIC(category) (0x20000828 ^ (category)) +#define LIMAGIC(category) ((unsigned int) (0x20000828 ^ (category))) /* Two special weight constants for the collation data. */ #define IGNORE_CHAR 2 @@ -65,7 +65,7 @@ struct locale_data const char *string; unsigned int word; } - values[0]; /* Items, usually pointers into `filedata'. */ + values __flexarr; /* Items, usually pointers into `filedata'. */ }; /* We know three kinds of collation sorting rules. */ @@ -201,5 +201,10 @@ extern const char *_nl_get_alt_digit (un /* Similar, but now for wide characters. */ extern const wchar_t *_nl_get_walt_digit (unsigned int number); + +/* Postload processing. */ +extern void _nl_postload_ctype (void); +extern void _nl_postload_time (void); + #endif /* localeinfo.h */ diff -adurpN glibc-2.2/locale/programs/ld-collate.c glibc-2.2.1/locale/programs/ld-collate.c --- glibc-2.2/locale/programs/ld-collate.c Sun Oct 8 17:04:52 2000 +++ glibc-2.2.1/locale/programs/ld-collate.c Sat Jan 6 20:35:22 2001 @@ -1302,7 +1302,7 @@ order for `%.*s' already defined at %s:% int cnt; /* Generate the the name. */ - sprintf (buf + preflen, base == 10 ? "%d" : "%x", from); + sprintf (buf + preflen, base == 10 ? "%ld" : "%lx", from); /* Look whether this name is already defined. */ if (find_entry (&collate->seq_table, buf, symlen, @@ -1634,6 +1634,7 @@ collate_finish (struct localedef_t *loca (*eptr)->mblast = runp; *eptr = runp; dont_insert: + ; } if (runp->used_in_level) @@ -1734,6 +1735,7 @@ collate_finish (struct localedef_t *loca if (eptr == &e) wchead_table_add (&collate->wcheads, runp->wcs[0], e); dont_insertwc: + ; } /* Up to the next entry. */ @@ -2238,6 +2240,8 @@ collate_output (struct localedef_t *loca the table. In case we have more than one sequence starting with the same byte we have to use extra indirection. */ { + auto void add_to_tablewc (uint32_t ch, struct element_t *runp); + void add_to_tablewc (uint32_t ch, struct element_t *runp) { if (runp->wcnext == NULL && runp->nwcs == 1) diff -adurpN glibc-2.2/locale/programs/ld-ctype.c glibc-2.2.1/locale/programs/ld-ctype.c --- glibc-2.2/locale/programs/ld-ctype.c Tue Oct 31 11:09:54 2000 +++ glibc-2.2.1/locale/programs/ld-ctype.c Sat Jan 6 20:35:22 2001 @@ -107,7 +107,7 @@ struct translit_ignore_t /* Type to describe a transliteration include statement. */ -struct translit_include_t +struct translit_include_t { const char *copy_locale; const char *copy_repertoire; @@ -1482,8 +1482,10 @@ charclass_symbolic_ellipsis (struct line struct charseq *seq; uint32_t wch; - sprintf (tmp, (base == 10 ? "%.*s%0*d" : "%.*s%0*X"), cp - last_str, - last_str, now->val.str.lenmb - (cp - last_str), from); + sprintf (tmp, (base == 10 ? "%.*s%0*ld" : "%.*s%0*lX"), + (int) (cp - last_str), last_str, + (int) (now->val.str.lenmb - (cp - last_str)), + from); get_character (now, charmap, repertoire, &seq, &wch); @@ -2873,6 +2875,8 @@ set_class_defaults (struct locale_ctype_ according to POSIX.2 2.5.2.1. It may seem that the order of these if-blocks is arbitrary but it is NOT. Don't move them unless you know what you do! */ + + auto void set_default (int bitpos, int from, int to); void set_default (int bitpos, int from, int to) { diff -adurpN glibc-2.2/locale/programs/linereader.c glibc-2.2.1/locale/programs/linereader.c --- glibc-2.2/locale/programs/linereader.c Sun Oct 8 17:04:52 2000 +++ glibc-2.2.1/locale/programs/linereader.c Sat Jan 6 20:35:22 2001 @@ -376,7 +376,8 @@ get_toplvl_escape (struct linereader *lr bytes[nbytes++] = byte; } - while (ch == lr->escape_char && nbytes < 4); + while (ch == lr->escape_char + && nbytes < sizeof (lr->token.val.charcode.bytes)); if (!isspace (ch)) lr_error (lr, _("garbage at end of character code specification")); diff -adurpN glibc-2.2/locale/programs/locale.c glibc-2.2.1/locale/programs/locale.c --- glibc-2.2/locale/programs/locale.c Tue Oct 31 11:09:54 2000 +++ glibc-2.2.1/locale/programs/locale.c Sat Jan 6 20:35:22 2001 @@ -1,5 +1,5 @@ /* Implementation of the locale program according to POSIX 9945-2. - Copyright (C) 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1995-1997, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1995. @@ -270,7 +270,7 @@ print_version (FILE *stream, struct argp 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\ -"), "2000"); +"), "2001"); fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper"); } @@ -501,6 +501,8 @@ show_locale_vars (void) const char *lcall = getenv ("LC_ALL"); const char *lang = getenv ("LANG") ? : "POSIX"; + auto void get_source (const char *name); + void get_source (const char *name) { char *val = getenv (name); @@ -530,6 +532,8 @@ show_info (const char *name) { size_t cat_no; + auto void print_item (struct cat_item *item); + void print_item (struct cat_item *item) { switch (item->value_type) @@ -633,6 +637,8 @@ show_info (const char *name) /* We don't print wide character information since the same information is available in a multibyte string. */ default: + break; + } } diff -adurpN glibc-2.2/locale/programs/localedef.c glibc-2.2.1/locale/programs/localedef.c --- glibc-2.2/locale/programs/localedef.c Thu Sep 7 11:56:29 2000 +++ glibc-2.2.1/locale/programs/localedef.c Sat Jan 6 20:35:22 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1995,1996,1997,1998,1999,2000 Free Software Foundation, Inc. +/* Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1995. @@ -312,7 +312,7 @@ print_version (FILE *stream, struct argp 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\ -"), "2000"); +"), "2001"); fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper"); } diff -adurpN glibc-2.2/locale/setlocale.c glibc-2.2.1/locale/setlocale.c --- glibc-2.2/locale/setlocale.c Thu Oct 26 22:57:25 2000 +++ glibc-2.2.1/locale/setlocale.c Fri Dec 1 11:55:06 2000 @@ -120,6 +120,9 @@ static const char *_nl_current_names[] = /* Lock for protecting global data. */ __libc_lock_define_initialized (, __libc_setlocale_lock) +/* Defined in loadmsgcat.c. */ +extern int _nl_msg_cat_cntr; + /* Use this when we come along an error. */ #define ERROR_RETURN \ @@ -191,7 +194,7 @@ setname (int category, const char *name) if (_nl_current_names[category] == name) return; - if (category == LC_ALL && _nl_current_names[category] != _nl_C_name) + if (_nl_current_names[category] != _nl_C_name) free ((char *) _nl_current_names[category]); _nl_current_names[category] = name; @@ -319,6 +322,14 @@ setlocale (int category, const char *loc control over the usage. So we mark it as un-deletable. */ if (newdata[category]->usage_count != UNDELETABLE) newdata[category]->usage_count = UNDELETABLE; + + /* Make a copy of locale name. */ + if (newnames[category] != _nl_C_name) + { + newnames[category] = strdup (newnames[category]); + if (newnames[category] == NULL) + break; + } } /* Create new composite name. */ @@ -334,7 +345,15 @@ setlocale (int category, const char *loc setname (category, newnames[category]); } setname (LC_ALL, composite); + + /* We successfully loaded a new locale. Let the message catalog + functions know about this. */ + ++_nl_msg_cat_cntr; } + else + for (++category; category < __LC_LAST; ++category) + if (category != LC_ALL && newnames[category] != _nl_C_name) + free ((char *) newnames[category]); /* Critical section left. */ __libc_lock_unlock (__libc_setlocale_lock); @@ -369,10 +388,21 @@ setlocale (int category, const char *loc newdata->usage_count = UNDELETABLE; } + /* Make a copy of locale name. */ + if (newname[0] != _nl_C_name) + { + newname[0] = strdup (newname[0]); + if (newname[0] == NULL) + goto abort_single; + } + /* Create new composite name. */ composite = new_composite_name (category, newname); if (composite == NULL) { + if (newname[0] != _nl_C_name) + free ((char *) newname[0]); + /* Say that we don't have any data loaded. */ abort_single: newname[0] = NULL; @@ -384,6 +414,10 @@ setlocale (int category, const char *loc setname (category, newname[0]); setname (LC_ALL, composite); + + /* We successfully loaded a new locale. Let the message catalog + functions know about this. */ + ++_nl_msg_cat_cntr; } /* Critical section left. */ diff -adurpN glibc-2.2/locale/weight.h glibc-2.2.1/locale/weight.h --- glibc-2.2/locale/weight.h Fri Feb 11 15:48:51 2000 +++ glibc-2.2.1/locale/weight.h Fri Dec 1 11:55:06 2000 @@ -38,7 +38,7 @@ findidx (const unsigned char **cpp) size_t nhere; /* The first thing is the index. */ - i = *((int32_t *) cp); + i = *((const int32_t *) cp); cp += sizeof (int32_t); /* Next is the length of the byte sequence. These are always diff -adurpN glibc-2.2/localedata/ChangeLog glibc-2.2.1/localedata/ChangeLog --- glibc-2.2/localedata/ChangeLog Thu Nov 9 11:34:28 2000 +++ glibc-2.2.1/localedata/ChangeLog Wed Jan 10 15:54:29 2001 @@ -1,3 +1,51 @@ +2001-01-08 Jakub Jelinek + + * locales/cs_CZ: Fix grammar of comment above abmon. + Reported by Stanislav Brabec . + +2000-12-31 Andreas Jaeger + + * tst-fmon.c (main): Use return instead of exit to avoid warning. + +2000-12-21 Ulrich Drepper + + * tests/test5.cm: Define code_set_name. + +2000-12-03 Ulrich Drepper + + * charmaps/SJIS: Add mapping for FULLWIDTH REVERSE SOLIDUS. + * charmaps/EUC-JP: Add mapping for FULLWIDTH TILDE and FULLWIDTH + REVERSE SOLIDUS. + +2000-11-30 Ulrich Drepper + + * Makefile (tests): Add tst-setlocale. + (tst-setlocale-ENV): Define. + * tst-setlocale.c: New file. + +2000-11-28 Ulrich Drepper + + * Makefile (LOCALES): Add ja_JP.SJIS. + +2000-11-23 Ulrich Drepper + + * tst-digits.c (main): Add casts to avoid warnings. + * collate-test.c (xstrcoll): Make l1 and l2 const. + * xfrm-test.c (xstrcmp): Make l1 and l2 const. + +2000-11-20 Ulrich Drepper + + * charmaps/BALTIC: Superceded by ISO-8859-13. + +2000-11-15 Ulrich Drepper + + * locales/ko_KR: Changed LC_IDENTIFICATION territory field to + Republic of Korea. Streamlined and extend(include all Hangul + syllables) hangul and hanja class definition in LC_CTYPE and + hangul portion of LC_COLLATE. Several changes in LC_TIME. Added + tel_dom_fmt to LC_TELEPHONE. + Patch by Jungshik Shin . + 2000-11-09 Ulrich Drepper * locales/ko_KR: Fix currency_symbol. diff -adurpN glibc-2.2/localedata/Makefile glibc-2.2.1/localedata/Makefile --- glibc-2.2/localedata/Makefile Sun Oct 8 17:04:52 2000 +++ glibc-2.2.1/localedata/Makefile Fri Dec 1 11:55:07 2000 @@ -90,7 +90,7 @@ locale_test_suite := tst_iswalnum tst_is tst_wcsxfrm tst_wctob tst_wctomb tst_wctrans \ tst_wctype tst_wcwidth -tests = $(locale_test_suite) tst-digits +tests = $(locale_test_suite) tst-digits tst-setlocale endif # Files to install. @@ -123,7 +123,7 @@ ifeq (no,$(cross-compiling)) # We have to generate locales LOCALES := de_DE.ISO-8859-1 de_DE.UTF-8 en_US.ANSI_X3.4-1968 \ en_US.ISO-8859-1 ja_JP.EUC-JP da_DK.ISO-8859-1 \ - hr_HR.ISO-8859-2 sv_SE.ISO-8859-1 + hr_HR.ISO-8859-2 sv_SE.ISO-8859-1 ja_JP.SJIS LOCALE_SRCS := $(shell echo "$(LOCALES)"|sed 's/\([^ .]*\)[^ ]*/\1/g') CHARMAPS := $(shell echo "$(LOCALES)"|sed 's/[^ .]*[.]\([^ ]*\)/\1/g') CTYPE_FILES = $(addsuffix /LC_CTYPE,$(LOCALES)) @@ -254,3 +254,5 @@ tst_wctrans-ENV = $(TEST_MBWC_ENV) tst_wctype-ENV = $(TEST_MBWC_ENV) tst_wcwidth-ENV = $(TEST_MBWC_ENV) tst-digits-ENV = $(TEST_MBWC_ENV) + +tst-setlocale-ENV = LOCPATH=$(common-objpfx)localedata LC_ALL=ja_JP.EUC-JP diff -adurpN glibc-2.2/localedata/charmaps/BALTIC glibc-2.2.1/localedata/charmaps/BALTIC --- glibc-2.2/localedata/charmaps/BALTIC Thu Jun 29 12:40:01 2000 +++ glibc-2.2.1/localedata/charmaps/BALTIC Wed Dec 31 16:00:00 1969 @@ -1,268 +0,0 @@ - BALTIC - % - / -% version: 1.0 -% repertoiremap: mnemonic,ds -% source: ECMA registry - -% &g1esc x2d56 &g2esc x2e56 &g3esc x2f56 - -% alias ISO-IR-179 -CHARMAP - /x00 NULL (NUL) - /x01 START OF HEADING (SOH) - /x02 START OF TEXT (STX) - /x03 END OF TEXT (ETX) - /x04 END OF TRANSMISSION (EOT) - /x05 ENQUIRY (ENQ) - /x06 ACKNOWLEDGE (ACK) - /x07 BELL (BEL) - /x08 BACKSPACE (BS) - /x09 CHARACTER TABULATION (HT) - /x0a LINE FEED (LF) - /x0b LINE TABULATION (VT) - /x0c FORM FEED (FF) - /x0d CARRIAGE RETURN (CR) - /x0e SHIFT OUT (SO) - /x0f SHIFT IN (SI) - /x10 DATALINK ESCAPE (DLE) - /x11 DEVICE CONTROL ONE (DC1) - /x12 DEVICE CONTROL TWO (DC2) - /x13 DEVICE CONTROL THREE (DC3) - /x14 DEVICE CONTROL FOUR (DC4) - /x15 NEGATIVE ACKNOWLEDGE (NAK) - /x16 SYNCHRONOUS IDLE (SYN) - /x17 END OF TRANSMISSION BLOCK (ETB) - /x18 CANCEL (CAN) - /x19 END OF MEDIUM (EM) - /x1a SUBSTITUTE (SUB) - /x1b ESCAPE (ESC) - /x1c FILE SEPARATOR (IS4) - /x1d GROUP SEPARATOR (IS3) - /x1e RECORD SEPARATOR (IS2) - /x1f UNIT SEPARATOR (IS1) - /x20 SPACE - /x21 EXCLAMATION MARK - /x22 QUOTATION MARK - /x23 NUMBER SIGN - /x24 DOLLAR SIGN - /x25 PERCENT SIGN - /x26 AMPERSAND - /x27 APOSTROPHE - /x28 LEFT PARENTHESIS - /x29 RIGHT PARENTHESIS - /x2a ASTERISK - /x2b PLUS SIGN - /x2c COMMA - /x2d HYPHEN-MINUS - /x2e FULL STOP - /x2f SOLIDUS - /x30 DIGIT ZERO - /x31 DIGIT ONE - /x32 DIGIT TWO - /x33 DIGIT THREE - /x34 DIGIT FOUR - /x35 DIGIT FIVE - /x36 DIGIT SIX - /x37 DIGIT SEVEN - /x38 DIGIT EIGHT - /x39 DIGIT NINE - /x3a COLON - /x3b SEMICOLON - /x3c LESS-THAN SIGN - /x3d EQUALS SIGN - /x3e GREATER-THAN SIGN - /x3f QUESTION MARK - /x40 COMMERCIAL AT - /x41 LATIN CAPITAL LETTER A - /x42 LATIN CAPITAL LETTER B - /x43 LATIN CAPITAL LETTER C - /x44 LATIN CAPITAL LETTER D - /x45 LATIN CAPITAL LETTER E - /x46 LATIN CAPITAL LETTER F - /x47 LATIN CAPITAL LETTER G - /x48 LATIN CAPITAL LETTER H - /x49 LATIN CAPITAL LETTER I - /x4a LATIN CAPITAL LETTER J - /x4b LATIN CAPITAL LETTER K - /x4c LATIN CAPITAL LETTER L - /x4d LATIN CAPITAL LETTER M - /x4e LATIN CAPITAL LETTER N - /x4f LATIN CAPITAL LETTER O - /x50 LATIN CAPITAL LETTER P - /x51 LATIN CAPITAL LETTER Q - /x52 LATIN CAPITAL LETTER R - /x53 LATIN CAPITAL LETTER S - /x54 LATIN CAPITAL LETTER T - /x55 LATIN CAPITAL LETTER U - /x56 LATIN CAPITAL LETTER V - /x57 LATIN CAPITAL LETTER W - /x58 LATIN CAPITAL LETTER X - /x59 LATIN CAPITAL LETTER Y - /x5a LATIN CAPITAL LETTER Z - /x5b LEFT SQUARE BRACKET - /x5c REVERSE SOLIDUS - /x5d RIGHT SQUARE BRACKET - /x5e CIRCUMFLEX ACCENT - /x5f LOW LINE - /x60 GRAVE ACCENT - /x61 LATIN SMALL LETTER A - /x62 LATIN SMALL LETTER B - /x63 LATIN SMALL LETTER C - /x64 LATIN SMALL LETTER D - /x65 LATIN SMALL LETTER E - /x66 LATIN SMALL LETTER F - /x67 LATIN SMALL LETTER G - /x68 LATIN SMALL LETTER H - /x69 LATIN SMALL LETTER I - /x6a LATIN SMALL LETTER J - /x6b LATIN SMALL LETTER K - /x6c LATIN SMALL LETTER L - /x6d LATIN SMALL LETTER M - /x6e LATIN SMALL LETTER N - /x6f LATIN SMALL LETTER O - /x70 LATIN SMALL LETTER P - /x71 LATIN SMALL LETTER Q - /x72 LATIN SMALL LETTER R - /x73 LATIN SMALL LETTER S - /x74 LATIN SMALL LETTER T - /x75 LATIN SMALL LETTER U - /x76 LATIN SMALL LETTER V - /x77 LATIN SMALL LETTER W - /x78 LATIN SMALL LETTER X - /x79 LATIN SMALL LETTER Y - /x7a LATIN SMALL LETTER Z - /x7b LEFT CURLY BRACKET - /x7c VERTICAL LINE - /x7d RIGHT CURLY BRACKET - /x7e TILDE - /x7f DELETE (DEL) - /x80 PADDING CHARACTER (PAD) - /x81 HIGH OCTET PRESET (HOP) - /x82 BREAK PERMITTED HERE (BPH) - /x83 NO BREAK HERE (NBH) - /x84 INDEX (IND) - /x85 NEXT LINE (NEL) - /x86 START OF SELECTED AREA (SSA) - /x87 END OF SELECTED AREA (ESA) - /x88 CHARACTER TABULATION SET (HTS) - /x89 CHARACTER TABULATION WITH JUSTIFICATION (HTJ) - /x8a LINE TABULATION SET (VTS) - /x8b PARTIAL LINE FORWARD (PLD) - /x8c PARTIAL LINE BACKWARD (PLU) - /x8d REVERSE LINE FEED (RI) - /x8e SINGLE-SHIFT TWO (SS2) - /x8f SINGLE-SHIFT THREE (SS3) - /x90 DEVICE CONTROL STRING (DCS) - /x91 PRIVATE USE ONE (PU1) - /x92 PRIVATE USE TWO (PU2) - /x93 SET TRANSMIT STATE (STS) - /x94 CANCEL CHARACTER (CCH) - /x95 MESSAGE WAITING (MW) - /x96 START OF GUARDED AREA (SPA) - /x97 END OF GUARDED AREA (EPA) - /x98 START OF STRING (SOS) - /x99 SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI) - /x9a SINGLE CHARACTER INTRODUCER (SCI) - /x9b CONTROL SEQUENCE INTRODUCER (CSI) - /x9c STRING TERMINATOR (ST) - /x9d OPERATING SYSTEM COMMAND (OSC) - /x9e PRIVACY MESSAGE (PM) - /x9f APPLICATION PROGRAM COMMAND (APC) - /xa0 NO-BREAK SPACE - /xa1 RIGHT DOUBLE QUOTATION MARK - /xa2 CENT SIGN - /xa3 POUND SIGN - /xa4 CURRENCY SIGN - /xa5 YEN SIGN - /xa6 BROKEN BAR - /xa7 SECTION SIGN - /xa8 LATIN CAPITAL LETTER O WITH STROKE - /xa9 COPYRIGHT SIGN - /xaa DOUBLE LOW-9 QUOTATION MARK - /xab LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - /xac NOT SIGN - /xad SOFT HYPHEN - /xae REGISTERED SIGN - /xaf LATIN CAPITAL LETTER AE - /xb0 DEGREE SIGN - /xb1 PLUS-MINUS SIGN - /xb2 SUPERSCRIPT TWO - /xb3 SUPERSCRIPT THREE - /xb4 ACUTE ACCENT - /xb5 MICRO SIGN - /xb6 PILCROW SIGN - /xb7 MIDDLE DOT - /xb8 LATIN SMALL LETTER O WITH STROKE - /xb9 SUPERSCRIPT ONE - /xba LEFT DOUBLE QUOTATION MARK - /xbb RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - /xbc VULGAR FRACTION ONE QUARTER - /xbd VULGAR FRACTION ONE HALF - /xbe VULGAR FRACTION THREE QUARTERS - /xbf LATIN SMALL LETTER AE - /xc0 LATIN CAPITAL LETTER I WITH OGONEK - /xc1 LATIN CAPITAL LETTER E WITH DOT ABOVE - /xc2 LATIN CAPITAL LETTER A WITH MACRON - /xc3 LATIN CAPITAL LETTER C WITH ACUTE - /xc4 LATIN CAPITAL LETTER A WITH DIAERESIS - /xc5 LATIN CAPITAL LETTER A WITH RING ABOVE - /xc6 LATIN CAPITAL LETTER A WITH OGONEK - /xc7 LATIN CAPITAL LETTER C WITH CARON - /xc8 LATIN CAPITAL LETTER G WITH CEDILLA - /xc9 LATIN CAPITAL LETTER E WITH ACUTE - /xca LATIN CAPITAL LETTER Z WITH CARON - /xcb LATIN CAPITAL LETTER E WITH OGONEK - /xcc LATIN CAPITAL LETTER E WITH MACRON - /xcd LATIN CAPITAL LETTER K WITH CEDILLA - /xce LATIN CAPITAL LETTER I WITH MACRON - /xcf LATIN CAPITAL LETTER L WITH CEDILLA - /xd0 LATIN CAPITAL LETTER L WITH STROKE - /xd1 LATIN CAPITAL LETTER N WITH CEDILLA - /xd2 LATIN CAPITAL LETTER N WITH ACUTE - /xd3 LATIN CAPITAL LETTER O WITH ACUTE - /xd4 LATIN CAPITAL LETTER O WITH MACRON - /xd5 LATIN CAPITAL LETTER O WITH TILDE - /xd6 LATIN CAPITAL LETTER O WITH DIAERESIS - /xd7 MULTIPLICATION SIGN - /xd8 LATIN CAPITAL LETTER U WITH OGONEK - /xd9 LATIN CAPITAL LETTER S WITH CARON - /xda LATIN CAPITAL LETTER S WITH ACUTE - /xdb LATIN CAPITAL LETTER U WITH MACRON - /xdc LATIN CAPITAL LETTER U WITH DIAERESIS - /xdd LATIN CAPITAL LETTER Z WITH DOT ABOVE - /xde LATIN CAPITAL LETTER Z WITH ACUTE - /xdf LATIN SMALL LETTER SHARP S (German) - /xe0 LATIN SMALL LETTER I WITH OGONEK - /xe1 LATIN SMALL LETTER E WITH DOT ABOVE - /xe2 LATIN SMALL LETTER A WITH MACRON - /xe3 LATIN SMALL LETTER C WITH ACUTE - /xe4 LATIN SMALL LETTER A WITH DIAERESIS - /xe5 LATIN SMALL LETTER A WITH RING ABOVE - /xe6 LATIN SMALL LETTER A WITH OGONEK - /xe7 LATIN SMALL LETTER C WITH CARON - /xe8 LATIN SMALL LETTER G WITH CEDILLA - /xe9 LATIN SMALL LETTER E WITH ACUTE - /xea LATIN SMALL LETTER Z WITH CARON - /xeb LATIN SMALL LETTER E WITH OGONEK - /xec LATIN SMALL LETTER E WITH MACRON - /xed LATIN SMALL LETTER K WITH CEDILLA - /xee LATIN SMALL LETTER I WITH MACRON - /xef LATIN SMALL LETTER L WITH CEDILLA - /xf0 LATIN SMALL LETTER L WITH STROKE - /xf1 LATIN SMALL LETTER N WITH CEDILLA - /xf2 LATIN SMALL LETTER N WITH ACUTE - /xf3 LATIN SMALL LETTER O WITH ACUTE - /xf4 LATIN SMALL LETTER O WITH MACRON - /xf5 LATIN SMALL LETTER O WITH TILDE - /xf6 LATIN SMALL LETTER O WITH DIAERESIS - /xf7 DIVISION SIGN - /xf8 LATIN SMALL LETTER U WITH OGONEK - /xf9 LATIN SMALL LETTER S WITH CARON - /xfa LATIN SMALL LETTER S WITH ACUTE - /xfb LATIN SMALL LETTER U WITH MACRON - /xfc LATIN SMALL LETTER U WITH DIAERESIS - /xfd LATIN SMALL LETTER Z WITH DOT ABOVE - /xfe LATIN SMALL LETTER Z WITH ACUTE - /xff LATIN SMALL LETTER KRA (Greenlandic) -END CHARMAP diff -adurpN glibc-2.2/localedata/charmaps/EUC-JP glibc-2.2.1/localedata/charmaps/EUC-JP --- glibc-2.2/localedata/charmaps/EUC-JP Thu Sep 7 11:56:32 2000 +++ glibc-2.2.1/localedata/charmaps/EUC-JP Sat Jan 6 20:35:22 2001 @@ -276,7 +276,7 @@ CHARMAP /xa1/xbd HORIZONTAL BAR /xa1/xbe HYPHEN /xa1/xbf FULLWIDTH SOLIDUS -%IRREVERSIBLE% /xa1/xc0 REVERSE SOLIDUS + /xa1/xc0 FULLWIDTH REVERSE SOLIDUS /xa1/xc1 WAVE DASH /xa1/xc2 DOUBLE VERTICAL LINE /xa1/xc3 FULLWIDTH VERTICAL LINE @@ -7136,7 +7136,7 @@ CHARMAP /x8f/xa2/xb4 MACRON /x8f/xa2/xb5 OGONEK /x8f/xa2/xb6 RING ABOVE -%IRREVERSIBLE% /x8f/xa2/xb7 TILDE + /x8f/xa2/xb7 FULLWIDTH TILDE /x8f/xa2/xb8 GREEK TONOS /x8f/xa2/xb9 GREEK DIALYTIKA TONOS /x8f/xa2/xc2 INVERTED EXCLAMATION MARK diff -adurpN glibc-2.2/localedata/charmaps/SJIS glibc-2.2.1/localedata/charmaps/SJIS --- glibc-2.2/localedata/charmaps/SJIS Fri Jul 21 19:27:55 2000 +++ glibc-2.2.1/localedata/charmaps/SJIS Sat Jan 6 20:35:23 2001 @@ -165,7 +165,7 @@ CHARMAP /x81/x5c HORIZONTAL BAR /x81/x5d HYPHEN /x81/x5e FULLWIDTH SOLIDUS - /x81/x5f REVERSE SOLIDUS + /x81/x5f FULLWIDTH REVERSE SOLIDUS /x81/x60 WAVE DASH /x81/x61 DOUBLE VERTICAL LINE /x81/x62 FULLWIDTH VERTICAL LINE diff -adurpN glibc-2.2/localedata/collate-test.c glibc-2.2.1/localedata/collate-test.c --- glibc-2.2/localedata/collate-test.c Fri May 26 12:38:30 2000 +++ glibc-2.2.1/localedata/collate-test.c Fri Dec 1 11:55:07 2000 @@ -116,8 +116,8 @@ xstrcoll (ptr1, ptr2) const void *ptr1; const void *ptr2; { - struct lines *l1 = (struct lines *) ptr1; - struct lines *l2 = (struct lines *) ptr2; + const struct lines *l1 = (const struct lines *) ptr1; + const struct lines *l2 = (const struct lines *) ptr2; return strcoll (l1->key, l2->key); } diff -adurpN glibc-2.2/localedata/locales/cs_CZ glibc-2.2.1/localedata/locales/cs_CZ --- glibc-2.2/localedata/locales/cs_CZ Thu Oct 26 22:57:26 2000 +++ glibc-2.2.1/localedata/locales/cs_CZ Wed Jan 10 15:54:29 2001 @@ -2417,9 +2417,9 @@ abmon "";/ "";/ "" -% Zde jsou zkratky doporuèené poradnou Ústavu pro Jazyk Èeský -% Ano vidíte správnì, jsou to anglické zkratky. Myslím si, ¾e nejsou -% a¾ tak za¾ité, aby se pou¾ívali. Pokud èlovìk nezná celé názvy mìsícù +% Zde jsou zkratky doporuèené poradnou Ústavu pro Jazyk Èeský. +% Ano, vidíte správnì, jsou to anglické zkratky. Myslím si, ¾e nejsou +% a¾ tak za¾ité, aby se pou¾ívaly. Pokud èlovìk nezná celé názvy mìsícù, % tì¾ko tyto zkratky odvozuje. %abmon "";/ % "";/ diff -adurpN glibc-2.2/localedata/locales/ko_KR glibc-2.2.1/localedata/locales/ko_KR --- glibc-2.2/localedata/locales/ko_KR Thu Nov 9 11:34:29 2000 +++ glibc-2.2.1/localedata/locales/ko_KR Thu Nov 16 11:12:02 2000 @@ -1,7 +1,7 @@ escape_char / comment_char % -% Korean language locale for Korea +% Korean language locale for Republic of Korea (South Korea) % Source: % Address: % Contact: @@ -9,12 +9,11 @@ comment_char % % Fax: % Language: ko % Territory: KR -% Revision: 1.0 -% Date: 1999-11-27 +% Revision: 1.1 +% Date: 2000-11-09 % Application: general % Users: general % Repertoiremap: mnemonic.ds -% Charset KSX1001 KSX1006 % Distribution and use is free, also for commercial purposes. %Changes: @@ -29,9 +28,17 @@ comment_char % % 2000-08-21: Won-kyu Park % Fixed LC_CTYPE typo % Adjusted to new glibc-2.2 mnemonic format +% 2000-11-09: Jungshik Shin +% Won-kyu Park +% Changed LC_IDENTIFICATION territory field to Republic of Korea +% Streamlined hangul and hanja class definition in LC_CTYPE +% and hangul portion of LC_COLLATE +% Several changes in LC_TIME +% Added tel_dom_fmt to LC_TELEPHONE +% Some cosmetic changes LC_IDENTIFICATION -title "Korean locale for Korea" +title "Korean locale for Republic of Korea" source "" address "" contact "" @@ -39,9 +46,9 @@ email "bug-glibc@gnu.org" tel "" fax "" language "Korean" -territory "Korea" -revision "1.0" -date "2000-06-29" +territory "Republic of Korea" +revision "1.1" +date "2000-11-09" % category "ko_KR:2000";LC_IDENTIFICATION category "ko_KR:2000";LC_CTYPE @@ -1169,2356 +1176,14 @@ order_start forward +%%% +% HANGUL SYLLABLES - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +... + +%%% +% HANJA. For the moment, Hanjas defined in KS X 1001 +% are enumerated in the order they're listed in KS X 1001. @@ -8419,1239 +6084,8 @@ copy "i18n" charclass hangul;hanja -hangul ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;; - -hanja ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;;;;;/ - ;;; +hangul .. +hanja ..;..;..;.. translit_start @@ -9707,6 +6141,9 @@ day "";/ "";/ "";/ "" + +% (%b) "%mWEOL" where %m is space-filled instead of zero-filled + abmon "";"";/ "";"";/ "";"";/ @@ -9721,19 +6158,34 @@ mon "";"";"";/ "";"" -% 1998 4 3<3247> 1120<2640>32 -d_t_fmt "" +% Appropriate date and time representation (%c) +% "%x (%a) %r" +d_t_fmt "" -d_fmt "" +% Appropriate date representation (%x) +% "%Y %m %d +d_fmt / +"" +%d_fmt "" +% Appropriate time representation (%X) +% "%H %M %S" t_fmt "" +% Strings for AM/PM (%p) +% "";"" am_pm "";"" -t_fmt_ampm "" -date_fmt "/ -/ -" +% Appropriate AM/PM time representation (%r) +% "%p %H %M %S" +t_fmt_ampm "" + +% Appropriate date representation (date(1)) "%Y. %m. %d. (%a) %H:%M:%S %Z" +date_fmt / +"/ +/ +/ +" END LC_TIME @@ -9759,8 +6211,15 @@ width 210 END LC_PAPER LC_TELEPHONE -tel_int_fmt "/ -" +% "+%c %a %l" +tel_int_fmt "" +% Alternative form: "+%c (0)%a-%l" + +% "(%A) %l" : (areacode) local_number +tel_dom_fmt "" +% Alternative form : +% "%A-%l" : areacode-local_number +%tel_dom_fmt "" int_prefix "" END LC_TELEPHONE diff -adurpN glibc-2.2/localedata/tests/test5.cm glibc-2.2.1/localedata/tests/test5.cm --- glibc-2.2/localedata/tests/test5.cm Tue Oct 20 12:30:41 1998 +++ glibc-2.2.1/localedata/tests/test5.cm Sat Jan 6 20:35:23 2001 @@ -1,3 +1,4 @@ + test5 % / 2 diff -adurpN glibc-2.2/localedata/tst-digits.c glibc-2.2.1/localedata/tst-digits.c --- glibc-2.2/localedata/tst-digits.c Thu Aug 31 14:45:05 2000 +++ glibc-2.2.1/localedata/tst-digits.c Fri Dec 1 11:55:07 2000 @@ -67,6 +67,8 @@ static struct printf_int_test { 123456, "%I'10d", ONE TWO THREE "," FOUR FIVE SIX }, { 1234567, "%I'10d", ONE "," TWO THREE FOUR "," FIVE SIX SEVEN } }; +#define nprintf_int_tests \ + (sizeof (printf_int_tests) / sizeof (printf_int_tests[0])) #define WZERO L"\x2080" #define WONE L"\x2081" @@ -106,7 +108,8 @@ static struct wprintf_int_test { 123456, L"%I'10d", L" " WONE WTWO WTHREE L"," WFOUR WFIVE WSIX }, { 1234567, L"%I'10d", L" " WONE L"," WTWO WTHREE WFOUR L"," WFIVE WSIX WSEVEN } }; - +#define nwprintf_int_tests \ + (sizeof (wprintf_int_tests) / sizeof (wprintf_int_tests[0])) int @@ -125,8 +128,7 @@ main (void) /* First: printf tests. */ failures = 0; - for (cnt = 0; cnt < sizeof (printf_int_tests) / sizeof (printf_int_tests[0]); - ++cnt) + for (cnt = 0; cnt < (int) nprintf_int_tests; ++cnt) { char buf[100]; ssize_t n; @@ -137,7 +139,7 @@ main (void) printf ("%3d: got \"%s\", expected \"%s\"", cnt, buf, printf_int_tests[cnt].expected); - if (n != strlen (printf_int_tests[cnt].expected) + if (n != (ssize_t) strlen (printf_int_tests[cnt].expected) || strcmp (buf, printf_int_tests[cnt].expected) != 0) { puts (" -> FAILED"); @@ -152,9 +154,7 @@ main (void) /* wprintf tests. */ failures = 0; - for (cnt = 0; - cnt < sizeof (wprintf_int_tests) / sizeof (wprintf_int_tests[0]); - ++cnt) + for (cnt = 0; cnt < (int) nwprintf_int_tests; ++cnt) { wchar_t buf[100]; ssize_t n; @@ -166,7 +166,7 @@ main (void) printf ("%3d: got \"%ls\", expected \"%ls\"", cnt, buf, wprintf_int_tests[cnt].expected); - if (n != wcslen (wprintf_int_tests[cnt].expected) + if (n != (ssize_t) wcslen (wprintf_int_tests[cnt].expected) || wcscmp (buf, wprintf_int_tests[cnt].expected) != 0) { puts (" -> FAILED"); diff -adurpN glibc-2.2/localedata/tst-fmon.c glibc-2.2.1/localedata/tst-fmon.c --- glibc-2.2/localedata/tst-fmon.c Fri May 26 12:38:30 2000 +++ glibc-2.2.1/localedata/tst-fmon.c Sat Jan 6 20:35:22 2001 @@ -67,5 +67,5 @@ locale: \"%s\", format: \"%s\", expected exit (EXIT_FAILURE); } - exit (EXIT_SUCCESS); + return EXIT_SUCCESS; } diff -adurpN glibc-2.2/localedata/tst-setlocale.c glibc-2.2.1/localedata/tst-setlocale.c --- glibc-2.2/localedata/tst-setlocale.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/localedata/tst-setlocale.c Thu Nov 30 16:15:38 2000 @@ -0,0 +1,25 @@ +/* Test case by Jakub Jelinek . */ +#include +#include +#include + +int +main (void) +{ + char q[30]; + char *s; + + setlocale (LC_ALL, ""); + printf ("after setlocale (LC_ALL, \"\"): %s\n", setlocale(LC_NUMERIC, NULL)); + + strcpy (q, "de_DE.UTF-8"); + setlocale (LC_NUMERIC, q); + printf ("after setlocale (LC_NUMERIC, \"%s\"): %s\n", + q, setlocale(LC_NUMERIC, NULL)); + + strcpy (q, "de_DE.ISO-8859-1"); + s = setlocale (LC_NUMERIC, NULL); + printf ("after overwriting string: %s\n", s); + + return strcmp (s, "de_DE.UTF-8") != 0; +} diff -adurpN glibc-2.2/localedata/xfrm-test.c glibc-2.2.1/localedata/xfrm-test.c --- glibc-2.2/localedata/xfrm-test.c Fri May 26 12:38:30 2000 +++ glibc-2.2.1/localedata/xfrm-test.c Fri Dec 1 11:55:07 2000 @@ -127,8 +127,8 @@ xstrcmp (ptr1, ptr2) const void *ptr1; const void *ptr2; { - struct lines *l1 = (struct lines *) ptr1; - struct lines *l2 = (struct lines *) ptr2; + const struct lines *l1 = (const struct lines *) ptr1; + const struct lines *l2 = (const struct lines *) ptr2; return strcmp (l1->xfrm, l2->xfrm); } diff -adurpN glibc-2.2/login/Versions glibc-2.2.1/login/Versions --- glibc-2.2/login/Versions Thu May 13 19:42:06 1999 +++ glibc-2.2.1/login/Versions Wed Jan 10 15:54:29 2001 @@ -36,6 +36,10 @@ libc { # g* getutmpx; getutmp; } + GLIBC_2.2.1 { + # p* + posix_openpt; + } } libutil { diff -adurpN glibc-2.2/login/programs/pt_chown.c glibc-2.2.1/login/programs/pt_chown.c --- glibc-2.2/login/programs/pt_chown.c Fri Aug 27 18:45:14 1999 +++ glibc-2.2.1/login/programs/pt_chown.c Fri Dec 1 11:55:07 2000 @@ -94,7 +94,7 @@ Report bugs using the `glibcbug' script return (char *) text; } -int +static int do_pt_chown (void) { char *pty; diff -adurpN glibc-2.2/login/programs/utmpdump.c glibc-2.2.1/login/programs/utmpdump.c --- glibc-2.2/login/programs/utmpdump.c Sun Aug 10 10:10:00 1997 +++ glibc-2.2.1/login/programs/utmpdump.c Fri Dec 1 11:55:07 2000 @@ -26,7 +26,7 @@ #include #include -void +static void print_entry (struct utmp *up) { #if _HAVE_UT_TV - 0 diff -adurpN glibc-2.2/malloc/malloc.c glibc-2.2.1/malloc/malloc.c --- glibc-2.2/malloc/malloc.c Sun Oct 8 17:05:03 2000 +++ glibc-2.2.1/malloc/malloc.c Sat Jan 6 20:35:23 2001 @@ -19,7 +19,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* $Id: malloc.c,v 1.75 2000/09/29 03:37:28 drepper Exp $ +/* $Id: malloc.c,v 1.77 2000/12/31 06:30:30 drepper Exp $ This work is mainly derived from malloc-2.6.4 by Doug Lea , which is available from: @@ -415,17 +415,20 @@ extern "C" { #if __STD_C void* memset(void*, int, size_t); void* memcpy(void*, const void*, size_t); +void* memmove(void*, const void*, size_t); #else Void_t* memset(); Void_t* memcpy(); +Void_t* memmove(); #endif #endif -#if USE_MEMCPY - /* The following macros are only invoked with (2n+1)-multiples of INTERNAL_SIZE_T units, with a positive integer n. This is exploited - for fast inline execution when n is small. */ + for fast inline execution when n is small. If the regions to be + copied do overlap, the destination lies always _below_ the source. */ + +#if USE_MEMCPY #define MALLOC_ZERO(charp, nbytes) \ do { \ @@ -444,7 +447,9 @@ do { } else memset((charp), 0, mzsz); \ } while(0) -#define MALLOC_COPY(dest,src,nbytes) \ +/* If the regions overlap, dest is always _below_ src. */ + +#define MALLOC_COPY(dest,src,nbytes,overlap) \ do { \ INTERNAL_SIZE_T mcsz = (nbytes); \ if(mcsz <= 9*sizeof(mcsz)) { \ @@ -459,7 +464,10 @@ do { *mcdst++ = *mcsrc++; \ *mcdst++ = *mcsrc++; \ *mcdst = *mcsrc ; \ - } else memcpy(dest, src, mcsz); \ + } else if(overlap) \ + memmove(dest, src, mcsz); \ + else \ + memcpy(dest, src, mcsz); \ } while(0) #else /* !USE_MEMCPY */ @@ -483,7 +491,9 @@ do { } \ } while(0) -#define MALLOC_COPY(dest,src,nbytes) \ +/* If the regions overlap, dest is always _below_ src. */ + +#define MALLOC_COPY(dest,src,nbytes,overlap) \ do { \ INTERNAL_SIZE_T* mcsrc = (INTERNAL_SIZE_T*) src; \ INTERNAL_SIZE_T* mcdst = (INTERNAL_SIZE_T*) dest; \ @@ -3250,7 +3260,7 @@ Void_t* rEALLOc(oldmem, bytes) Void_t* o /* Must alloc, copy, free. */ newmem = mALLOc(bytes); if (newmem == 0) return 0; /* propagate failure */ - MALLOC_COPY(newmem, oldmem, oldsize - 2*SIZE_SZ); + MALLOC_COPY(newmem, oldmem, oldsize - 2*SIZE_SZ, 0); munmap_chunk(oldp); return newmem; } @@ -3365,7 +3375,8 @@ arena* ar_ptr; mchunkptr oldp; INTERNAL_ unlink(prev, bck, fwd); newp = prev; newsize += prevsize + nextsize; - MALLOC_COPY(BOUNDED_N(chunk2mem(newp), oldsize), oldmem, oldsize); + MALLOC_COPY(BOUNDED_N(chunk2mem(newp), oldsize), oldmem, oldsize, + 1); top(ar_ptr) = chunk_at_offset(newp, nb); set_head(top(ar_ptr), (newsize - nb) | PREV_INUSE); set_head_size(newp, nb); @@ -3380,7 +3391,7 @@ arena* ar_ptr; mchunkptr oldp; INTERNAL_ unlink(prev, bck, fwd); newp = prev; newsize += nextsize + prevsize; - MALLOC_COPY(BOUNDED_N(chunk2mem(newp), oldsize), oldmem, oldsize); + MALLOC_COPY(BOUNDED_N(chunk2mem(newp), oldsize), oldmem, oldsize, 1); goto split; } } @@ -3391,7 +3402,7 @@ arena* ar_ptr; mchunkptr oldp; INTERNAL_ unlink(prev, bck, fwd); newp = prev; newsize += prevsize; - MALLOC_COPY(BOUNDED_N(chunk2mem(newp), oldsize), oldmem, oldsize); + MALLOC_COPY(BOUNDED_N(chunk2mem(newp), oldsize), oldmem, oldsize, 1); goto split; } } @@ -3431,7 +3442,7 @@ arena* ar_ptr; mchunkptr oldp; INTERNAL_ } /* Otherwise copy, free, and exit */ - MALLOC_COPY(BOUNDED_N(chunk2mem(newp), oldsize), oldmem, oldsize); + MALLOC_COPY(BOUNDED_N(chunk2mem(newp), oldsize), oldmem, oldsize, 0); chunk_free(ar_ptr, oldp); return newp; } @@ -4600,7 +4611,7 @@ realloc_check(oldmem, bytes, caller) newp = (top_check() >= 0) ? chunk_alloc(&main_arena, nb) : NULL; if (newp) { MALLOC_COPY(BOUNDED_N(chunk2mem(newp), nb), - oldmem, oldsize - 2*SIZE_SZ); + oldmem, oldsize - 2*SIZE_SZ, 0); munmap_chunk(oldp); } } diff -adurpN glibc-2.2/malloc/memusage.c glibc-2.2.1/malloc/memusage.c --- glibc-2.2/malloc/memusage.c Tue Oct 17 14:54:01 2000 +++ glibc-2.2.1/malloc/memusage.c Wed Jan 10 15:54:30 2001 @@ -1,5 +1,5 @@ /* Profile heap and stack memory usage of running program. - Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1998. @@ -200,7 +200,8 @@ me (void) if (!not_me && fd == -1) { const char *outname = getenv ("MEMUSAGE_OUTPUT"); - if (outname != NULL) + if (outname != NULL && outname[0] != '\0' + && access (outname, R_OK | W_OK) == 0) { fd = creat (outname, 0666); diff -adurpN glibc-2.2/malloc/memusage.sh glibc-2.2.1/malloc/memusage.sh --- glibc-2.2/malloc/memusage.sh Mon Jun 19 21:45:37 2000 +++ glibc-2.2.1/malloc/memusage.sh Sat Jan 6 20:35:23 2001 @@ -1,5 +1,5 @@ #! @BASH@ -# Copyright (C) 1999, 2000 Free Software Foundation, Inc. +# Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. # This file is part of the GNU C Library. # Contributed by Ulrich Drepper , 1999. @@ -65,7 +65,7 @@ Report bugs using the \`glibcbug' script do_version() { echo 'memusage (GNU libc) @VERSION@' - echo $"Copyright (C) 2000 Free Software Foundation, Inc. + echo $"Copyright (C) 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Written by Ulrich Drepper." diff -adurpN glibc-2.2/malloc/memusagestat.c glibc-2.2.1/malloc/memusagestat.c --- glibc-2.2/malloc/memusagestat.c Mon Jun 19 21:43:21 2000 +++ glibc-2.2.1/malloc/memusagestat.c Sat Jan 6 20:35:23 2001 @@ -550,7 +550,7 @@ main (int argc, char *argv[]) gdImageDestroy (im_out); - exit (0); + return 0; } diff -adurpN glibc-2.2/malloc/mtrace.c glibc-2.2.1/malloc/mtrace.c --- glibc-2.2/malloc/mtrace.c Mon Sep 18 15:42:28 2000 +++ glibc-2.2.1/malloc/mtrace.c Sat Jan 6 20:35:23 2001 @@ -36,6 +36,10 @@ #include +#ifdef _LIBC +# include +#endif + #ifdef USE_IN_LIBIO # include # define setvbuf(s, b, f, l) _IO_setvbuf (s, b, f, l) @@ -223,7 +227,6 @@ tr_reallochook (ptr, size, caller) #ifdef _LIBC -extern void __libc_freeres (void); /* This function gets called to make sure all memory the library allocates get freed and so does not irritate the user when studying diff -adurpN glibc-2.2/malloc/mtrace.pl glibc-2.2.1/malloc/mtrace.pl --- glibc-2.2/malloc/mtrace.pl Thu Aug 31 14:45:13 2000 +++ glibc-2.2.1/malloc/mtrace.pl Sat Jan 6 20:35:23 2001 @@ -1,7 +1,7 @@ #! @PERL@ eval "exec @PERL@ -S $0 $*" if 0; -# Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. +# Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. # This file is part of the GNU C Library. # Contributed by Ulrich Drepper , 1997. # Based on the mtrace.awk script. @@ -44,7 +44,7 @@ arglist: while (@ARGV) { $ARGV[0] eq "--vers" || $ARGV[0] eq "--versi" || $ARGV[0] eq "--versio" || $ARGV[0] eq "--version") { print "mtrace (GNU $PACKAGE) $VERSION\n"; - print "Copyright (C) 1999 Free Software Foundation, Inc.\n"; + print "Copyright (C) 2001 Free Software Foundation, Inc.\n"; print "This is free software; see the source for copying conditions. There is NO\n"; print "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"; print "Written by Ulrich Drepper \n"; @@ -75,7 +75,7 @@ if ($#ARGV == 0) { sub location { my $str = pop(@_); return $str if ($str eq ""); - if ($str =~ /[[](0x[^]]*)]:(.)*/) { + if ($str =~ /.*[[](0x[^]]*)]:(.)*/) { my $addr = $1; my $fct = $2; return $cache{$addr} if (exists $cache{$addr}); @@ -89,7 +89,7 @@ sub location { } } $cache{$addr} = $str = "$fct @ $addr"; - } elsif ($str =~ /^[[](0x[^]]*)]$/) { + } elsif ($str =~ /^.*[[](0x[^]]*)]$/) { my $addr = $1; return $cache{$addr} if (exists $cache{$addr}); if ($binary ne "" && open (ADDR, "addr2line -e $binary $addr|")) { diff -adurpN glibc-2.2/malloc/obstack.c glibc-2.2.1/malloc/obstack.c --- glibc-2.2/malloc/obstack.c Thu Oct 26 22:57:31 2000 +++ glibc-2.2.1/malloc/obstack.c Thu Nov 16 11:12:03 2000 @@ -524,20 +524,20 @@ int (obstack_make_room) (obstack, length return obstack_make_room (obstack, length); } -void (obstack_grow) (obstack, pointer, length) +void (obstack_grow) (obstack, data, length) struct obstack *obstack; - POINTER pointer; + const POINTER data; int length; { - obstack_grow (obstack, pointer, length); + obstack_grow (obstack, data, length); } -void (obstack_grow0) (obstack, pointer, length) +void (obstack_grow0) (obstack, data, length) struct obstack *obstack; - POINTER pointer; + const POINTER data; int length; { - obstack_grow0 (obstack, pointer, length); + obstack_grow0 (obstack, data, length); } void (obstack_1grow) (obstack, character) @@ -581,20 +581,20 @@ POINTER (obstack_alloc) (obstack, length return obstack_alloc (obstack, length); } -POINTER (obstack_copy) (obstack, pointer, length) +POINTER (obstack_copy) (obstack, address, length) struct obstack *obstack; - POINTER pointer; + const POINTER address; int length; { - return obstack_copy (obstack, pointer, length); + return obstack_copy (obstack, address, length); } -POINTER (obstack_copy0) (obstack, pointer, length) +POINTER (obstack_copy0) (obstack, address, length) struct obstack *obstack; - POINTER pointer; + const POINTER address; int length; { - return obstack_copy0 (obstack, pointer, length); + return obstack_copy0 (obstack, address, length); } #endif /* __STDC__ */ diff -adurpN glibc-2.2/malloc/obstack.h glibc-2.2.1/malloc/obstack.h --- glibc-2.2/malloc/obstack.h Mon Mar 29 16:15:57 1999 +++ glibc-2.2.1/malloc/obstack.h Wed Nov 22 10:59:51 2000 @@ -217,18 +217,18 @@ void obstack_init (struct obstack *obsta void * obstack_alloc (struct obstack *obstack, int size); -void * obstack_copy (struct obstack *obstack, void *address, int size); -void * obstack_copy0 (struct obstack *obstack, void *address, int size); +void * obstack_copy (struct obstack *obstack, const void *address, int size); +void * obstack_copy0 (struct obstack *obstack, const void *address, int size); void obstack_free (struct obstack *obstack, void *block); void obstack_blank (struct obstack *obstack, int size); -void obstack_grow (struct obstack *obstack, void *data, int size); -void obstack_grow0 (struct obstack *obstack, void *data, int size); +void obstack_grow (struct obstack *obstack, const void *data, int size); +void obstack_grow0 (struct obstack *obstack, const void *data, int size); void obstack_1grow (struct obstack *obstack, int data_char); -void obstack_ptr_grow (struct obstack *obstack, void *data); +void obstack_ptr_grow (struct obstack *obstack, const void *data); void obstack_int_grow (struct obstack *obstack, int data); void * obstack_finish (struct obstack *obstack); @@ -238,7 +238,7 @@ int obstack_object_size (struct obstack int obstack_room (struct obstack *obstack); void obstack_make_room (struct obstack *obstack, int size); void obstack_1grow_fast (struct obstack *obstack, int data_char); -void obstack_ptr_grow_fast (struct obstack *obstack, void *data); +void obstack_ptr_grow_fast (struct obstack *obstack, const void *data); void obstack_int_grow_fast (struct obstack *obstack, int data); void obstack_blank_fast (struct obstack *obstack, int size); @@ -288,21 +288,24 @@ extern int obstack_exit_failure; standard C version. */ #if defined __STDC__ && __STDC__ -# define obstack_init(h) \ - _obstack_begin ((h), 0, 0, \ - (void *(*) (long)) obstack_chunk_alloc, (void (*) (void *)) obstack_chunk_free) +# define obstack_init(h) \ + _obstack_begin ((h), 0, 0, \ + (void *(*) (long)) obstack_chunk_alloc, \ + (void (*) (void *)) obstack_chunk_free) -# define obstack_begin(h, size) \ - _obstack_begin ((h), (size), 0, \ - (void *(*) (long)) obstack_chunk_alloc, (void (*) (void *)) obstack_chunk_free) +# define obstack_begin(h, size) \ + _obstack_begin ((h), (size), 0, \ + (void *(*) (long)) obstack_chunk_alloc, \ + (void (*) (void *)) obstack_chunk_free) # define obstack_specify_allocation(h, size, alignment, chunkfun, freefun) \ - _obstack_begin ((h), (size), (alignment), \ - (void *(*) (long)) (chunkfun), (void (*) (void *)) (freefun)) + _obstack_begin ((h), (size), (alignment), \ + (void *(*) (long)) (chunkfun), \ + (void (*) (void *)) (freefun)) # define obstack_specify_allocation_with_arg(h, size, alignment, chunkfun, freefun, arg) \ - _obstack_begin_1 ((h), (size), (alignment), \ - (void *(*) (void *, long)) (chunkfun), \ + _obstack_begin_1 ((h), (size), (alignment), \ + (void *(*) (void *, long)) (chunkfun), \ (void (*) (void *, void *)) (freefun), (arg)) # define obstack_chunkfun(h, newchunkfun) \ @@ -313,21 +316,25 @@ extern int obstack_exit_failure; #else -# define obstack_init(h) \ - _obstack_begin ((h), 0, 0, \ - (void *(*) ()) obstack_chunk_alloc, (void (*) ()) obstack_chunk_free) +# define obstack_init(h) \ + _obstack_begin ((h), 0, 0, \ + (void *(*) ()) obstack_chunk_alloc, \ + (void (*) ()) obstack_chunk_free) -# define obstack_begin(h, size) \ - _obstack_begin ((h), (size), 0, \ - (void *(*) ()) obstack_chunk_alloc, (void (*) ()) obstack_chunk_free) +# define obstack_begin(h, size) \ + _obstack_begin ((h), (size), 0, \ + (void *(*) ()) obstack_chunk_alloc, \ + (void (*) ()) obstack_chunk_free) # define obstack_specify_allocation(h, size, alignment, chunkfun, freefun) \ - _obstack_begin ((h), (size), (alignment), \ - (void *(*) ()) (chunkfun), (void (*) ()) (freefun)) + _obstack_begin ((h), (size), (alignment), \ + (void *(*) ()) (chunkfun), \ + (void (*) ()) (freefun)) # define obstack_specify_allocation_with_arg(h, size, alignment, chunkfun, freefun, arg) \ - _obstack_begin_1 ((h), (size), (alignment), \ - (void *(*) ()) (chunkfun), (void (*) ()) (freefun), (arg)) + _obstack_begin_1 ((h), (size), (alignment), \ + (void *(*) ()) (chunkfun), \ + (void (*) ()) (freefun), (arg)) # define obstack_chunkfun(h, newchunkfun) \ ((h) -> chunkfun = (struct _obstack_chunk *(*)()) (newchunkfun)) @@ -385,7 +392,7 @@ __extension__ \ int __len = (length); \ if (__o->next_free + __len > __o->chunk_limit) \ _obstack_newchunk (__o, __len); \ - _obstack_memcpy (__o->next_free, (char *) (where), __len); \ + _obstack_memcpy (__o->next_free, (where), __len); \ __o->next_free += __len; \ (void) 0; }) @@ -395,7 +402,7 @@ __extension__ \ int __len = (length); \ if (__o->next_free + __len + 1 > __o->chunk_limit) \ _obstack_newchunk (__o, __len + 1); \ - _obstack_memcpy (__o->next_free, (char *) (where), __len); \ + _obstack_memcpy (__o->next_free, (where), __len); \ __o->next_free += __len; \ *(__o->next_free)++ = 0; \ (void) 0; }) @@ -408,8 +415,8 @@ __extension__ \ *(__o->next_free)++ = (datum); \ (void) 0; }) -/* These assume that the obstack alignment is good enough for pointers or ints, - and that the data added so far to the current object +/* These assume that the obstack alignment is good enough for pointers + or ints, and that the data added so far to the current object shares that much alignment. */ # define obstack_ptr_grow(OBSTACK,datum) \ @@ -417,7 +424,7 @@ __extension__ \ ({ struct obstack *__o = (OBSTACK); \ if (__o->next_free + sizeof (void *) > __o->chunk_limit) \ _obstack_newchunk (__o, sizeof (void *)); \ - *((void **)__o->next_free)++ = ((void *)datum); \ + *((void **)__o->next_free)++ = (datum); \ (void) 0; }) # define obstack_int_grow(OBSTACK,datum) \ @@ -425,11 +432,14 @@ __extension__ \ ({ struct obstack *__o = (OBSTACK); \ if (__o->next_free + sizeof (int) > __o->chunk_limit) \ _obstack_newchunk (__o, sizeof (int)); \ - *((int *)__o->next_free)++ = ((int)datum); \ + *((int *)__o->next_free)++ = (datum); \ (void) 0; }) -# define obstack_ptr_grow_fast(h,aptr) (*((void **) (h)->next_free)++ = (void *)aptr) -# define obstack_int_grow_fast(h,aint) (*((int *) (h)->next_free)++ = (int) aint) +# define obstack_ptr_grow_fast(h,aptr) \ + (*((void **) (h)->next_free)++ = (aptr)) + +# define obstack_int_grow_fast(h,aint) \ + (*((int *) (h)->next_free)++ = (aint)) # define obstack_blank(OBSTACK,length) \ __extension__ \ @@ -510,14 +520,14 @@ __extension__ \ ( (h)->temp = (length), \ (((h)->next_free + (h)->temp > (h)->chunk_limit) \ ? (_obstack_newchunk ((h), (h)->temp), 0) : 0), \ - _obstack_memcpy ((h)->next_free, (char *) (where), (h)->temp), \ + _obstack_memcpy ((h)->next_free, (where), (h)->temp), \ (h)->next_free += (h)->temp) # define obstack_grow0(h,where,length) \ ( (h)->temp = (length), \ (((h)->next_free + (h)->temp + 1 > (h)->chunk_limit) \ ? (_obstack_newchunk ((h), (h)->temp + 1), 0) : 0), \ - _obstack_memcpy ((h)->next_free, (char *) (where), (h)->temp), \ + _obstack_memcpy ((h)->next_free, (where), (h)->temp), \ (h)->next_free += (h)->temp, \ *((h)->next_free)++ = 0) @@ -529,15 +539,18 @@ __extension__ \ # define obstack_ptr_grow(h,datum) \ ( (((h)->next_free + sizeof (char *) > (h)->chunk_limit) \ ? (_obstack_newchunk ((h), sizeof (char *)), 0) : 0), \ - (*((char **) (((h)->next_free+=sizeof(char *))-sizeof(char *))) = ((char *) datum))) + (*((const char **) (((h)->next_free+=sizeof(char *))-sizeof(char *))) = (datum))) # define obstack_int_grow(h,datum) \ ( (((h)->next_free + sizeof (int) > (h)->chunk_limit) \ ? (_obstack_newchunk ((h), sizeof (int)), 0) : 0), \ - (*((int *) (((h)->next_free+=sizeof(int))-sizeof(int))) = ((int) datum))) + (*((int *) (((h)->next_free+=sizeof(int))-sizeof(int))) = (datum))) -# define obstack_ptr_grow_fast(h,aptr) (*((char **) (h)->next_free)++ = (char *) aptr) -# define obstack_int_grow_fast(h,aint) (*((int *) (h)->next_free)++ = (int) aint) +# define obstack_ptr_grow_fast(h,aptr) \ + (*((const char **) (h)->next_free)++ = (aptr)) + +# define obstack_int_grow_fast(h,aint) \ + (*((int *) (h)->next_free)++ = (aint)) # define obstack_blank(h,length) \ ( (h)->temp = (length), \ diff -adurpN glibc-2.2/malloc/set-freeres.c glibc-2.2.1/malloc/set-freeres.c --- glibc-2.2/malloc/set-freeres.c Sat Dec 4 12:31:51 1999 +++ glibc-2.2.1/malloc/set-freeres.c Sat Jan 6 20:35:23 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1997, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1999, 2000 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 @@ -19,6 +19,7 @@ #include #include #include +#include DEFINE_HOOK (__libc_subfreeres, (void)); diff -adurpN glibc-2.2/malloc/thread-m.h glibc-2.2.1/malloc/thread-m.h --- glibc-2.2/malloc/thread-m.h Thu Sep 14 12:24:24 2000 +++ glibc-2.2.1/malloc/thread-m.h Wed Nov 22 10:59:51 2000 @@ -19,7 +19,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* $Id: thread-m.h,v 1.12 2000/09/10 18:42:08 drepper Exp $ +/* $Id: thread-m.h,v 1.13 2000/11/20 10:17:55 drepper Exp $ One out of _LIBC, USE_PTHREADS, USE_THR or USE_SPROC should be defined, otherwise the token NO_THREADS and dummy implementations of the macros will be defined. */ @@ -102,7 +102,7 @@ typedef pthread_mutex_t mutex_t; #include -typedef int tsd_key_t[0]; /* no key data structure, libc magic does it */ +typedef int tsd_key_t[1]; /* no key data structure, libc magic does it */ __libc_tsd_define (, MALLOC) /* declaration/common definition */ #define tsd_key_create(key, destr) ((void) (key)) #define tsd_setspecific(key, data) __libc_tsd_set (MALLOC, (data)) diff -adurpN glibc-2.2/malloc/tst-obstack.c glibc-2.2.1/malloc/tst-obstack.c --- glibc-2.2/malloc/tst-obstack.c Tue Oct 24 01:30:36 2000 +++ glibc-2.2.1/malloc/tst-obstack.c Wed Nov 22 10:59:51 2000 @@ -14,7 +14,7 @@ static void * verbose_malloc (size_t size) { void *buf = malloc (size); - printf ("malloc (%u) => %p\n", size, buf); + printf ("malloc (%zu) => %p\n", size, buf); return buf; } diff -adurpN glibc-2.2/malloc/tst-valloc.c glibc-2.2.1/malloc/tst-valloc.c --- glibc-2.2/malloc/tst-valloc.c Mon Feb 21 21:23:04 2000 +++ glibc-2.2.1/malloc/tst-valloc.c Wed Nov 22 10:59:51 2000 @@ -3,19 +3,21 @@ #include #include -int main(void) +int +main (void) { char *p; int pagesize = getpagesize (); int i; p = valloc (pagesize); - i = (int) p; + i = (long int) p; - if ((i & (pagesize-1)) != 0) { - fprintf (stderr, "Alignment problem: valloc returns %p\n", p); - exit(1); - } + if ((i & (pagesize-1)) != 0) + { + fprintf (stderr, "Alignment problem: valloc returns %p\n", p); + exit (1); + } return 0; } diff -adurpN glibc-2.2/manual/Makefile glibc-2.2.1/manual/Makefile --- glibc-2.2/manual/Makefile Mon May 1 14:56:43 2000 +++ glibc-2.2.1/manual/Makefile Sat Jan 6 20:35:23 2001 @@ -1,4 +1,4 @@ -# Copyright (C) 1992-1999, 2000 Free Software Foundation, Inc. +# Copyright (C) 1992-1999, 2000, 2001 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 @@ -38,7 +38,7 @@ TEXI2DVI = texi2dvi AWK = gawk endif -TEXI2PDF = pdftexinfo +TEXI2PDF = texi2dvi --pdf ifneq ($(strip $(MAKEINFO)),:) all: info diff -adurpN glibc-2.2/manual/argp.texi glibc-2.2.1/manual/argp.texi --- glibc-2.2/manual/argp.texi Wed Aug 2 14:52:26 2000 +++ glibc-2.2.1/manual/argp.texi Sat Jan 6 20:35:23 2001 @@ -201,6 +201,12 @@ additional argp parsers that should be c @item char *(*help_filter)(int @var{key}, const char *@var{text}, void *@var{input}) If non-zero, a pointer to a function to filter the output of help messages. @xref{Argp Help Filtering}. + +@item const char *argp_domain +If non-zero, the strings used in the argp library are translated using +the domain described by this string. Otherwise the currently installed +default domain is used. + @end table @end deftp diff -adurpN glibc-2.2/manual/charset.texi glibc-2.2.1/manual/charset.texi --- glibc-2.2/manual/charset.texi Thu Oct 26 22:57:32 2000 +++ glibc-2.2.1/manual/charset.texi Sat Jan 6 20:35:23 2001 @@ -153,7 +153,7 @@ This macro got introduced in @w{Amendmen @comment wchar.h @comment ISO @deftypevr Macro wint_t WCHAR_MAX -The macro @code{WCHAR_MIN} evaluates to the maximum value representable +The macro @code{WCHAR_MAX} evaluates to the maximum value representable by an object of type @code{wint_t}. This macro got introduced in @w{Amendment 1} to @w{ISO C90}. @@ -268,7 +268,7 @@ representing characters like the acute a themselves: one has to combine them with other characters to get the desired result. E.g., the byte sequence @code{0xc2 0x61} (non-spacing acute accent, following by lower-case `a') to get the ``small a with -acute'' character. To get the acute accent character on its on one has +acute'' character. To get the acute accent character on its own, one has to write @code{0xc2 0x20} (the non-spacing acute followed by a space). This type of character set is used in some embedded systems such as @@ -688,8 +688,9 @@ mbstouwcs (const char *s) wchar_t *wcp = result; wchar_t tmp[1]; mbstate_t state; - memset (&state, '\0', sizeof (state)); size_t nbytes; + + memset (&state, '\0', sizeof (state)); while ((nbytes = mbrtowc (tmp, s, len, &state)) > 0) @{ if (nbytes >= (size_t) -2) diff -adurpN glibc-2.2/manual/conf.texi glibc-2.2.1/manual/conf.texi --- glibc-2.2/manual/conf.texi Fri May 26 12:38:31 2000 +++ glibc-2.2.1/manual/conf.texi Wed Jan 10 15:54:30 2001 @@ -1282,7 +1282,7 @@ bytes in a file name component. The val @comment POSIX.1 @item _POSIX_PATH_MAX The most restrictive limit permitted by POSIX for the maximum number of -bytes in a file name. The value of this constant is @code{255}. +bytes in a file name. The value of this constant is @code{256}. @comment limits.h @comment POSIX.1 diff -adurpN glibc-2.2/manual/dir-add.info glibc-2.2.1/manual/dir-add.info --- glibc-2.2/manual/dir-add.info Fri Jun 30 23:38:29 2000 +++ glibc-2.2.1/manual/dir-add.info Sun Jan 7 09:09:10 2001 @@ -499,6 +499,8 @@ START-INFO-DIR-ENTRY * atoi: (libc)Parsing of Integers. * atol: (libc)Parsing of Integers. * atoll: (libc)Parsing of Integers. +* basename: (libc)Finding Tokens in a String. +* basename: (libc)Finding Tokens in a String. * bcmp: (libc)String/Array Comparison. * bcopy: (libc)Copying and Concatenation. * bind: (libc)Setting Address. @@ -628,6 +630,7 @@ START-INFO-DIR-ENTRY * des_setparity: (libc)DES Encryption. * dgettext: (libc)Translation with gettext. * difftime: (libc)Elapsed Time. +* dirname: (libc)Finding Tokens in a String. * div: (libc)Integer Division. * dngettext: (libc)Advanced gettext functions. * drand48: (libc)SVID Random. @@ -819,6 +822,7 @@ START-INFO-DIR-ENTRY * gethostname: (libc)Host Identification. * getitimer: (libc)Setting an Alarm. * getline: (libc)Line Input. +* getloadavg: (libc)Load Average. * getlogin: (libc)Who Logged In. * getmntent: (libc)mtab. * getmntent_r: (libc)mtab. @@ -1172,9 +1176,9 @@ START-INFO-DIR-ENTRY * psignal: (libc)Signal Messages. * pthread_atfork: (libc)Threads and Fork. * pthread_attr_destroy: (libc)Thread Attributes. -* pthread_attr_get@var{attr}: (libc)Thread Attributes. +* pthread_attr_getattr: (libc)Thread Attributes. * pthread_attr_init: (libc)Thread Attributes. -* pthread_attr_set@var{attr}: (libc)Thread Attributes. +* pthread_attr_setattr: (libc)Thread Attributes. * pthread_cancel: (libc)Basic Thread Operations. * pthread_cleanup_pop: (libc)Cleanup Handlers. * pthread_cleanup_pop_restore_np: (libc)Cleanup Handlers. @@ -1192,6 +1196,7 @@ START-INFO-DIR-ENTRY * pthread_detach: (libc)Miscellaneous Thread Functions. * pthread_equal: (libc)Miscellaneous Thread Functions. * pthread_exit: (libc)Basic Thread Operations. +* pthread_getconcurrency: (libc)Miscellaneous Thread Functions. * pthread_getschedparam: (libc)Miscellaneous Thread Functions. * pthread_getspecific: (libc)Thread-Specific Data. * pthread_join: (libc)Basic Thread Operations. @@ -1206,13 +1211,14 @@ START-INFO-DIR-ENTRY * pthread_mutex_trylock: (libc)Mutexes. * pthread_mutex_unlock: (libc)Mutexes. * pthread_mutexattr_destroy: (libc)Mutexes. -* pthread_mutexattr_getkind_np: (libc)Mutexes. +* pthread_mutexattr_gettype: (libc)Mutexes. * pthread_mutexattr_init: (libc)Mutexes. -* pthread_mutexattr_setkind_np: (libc)Mutexes. +* pthread_mutexattr_settype: (libc)Mutexes. * pthread_once: (libc)Miscellaneous Thread Functions. * pthread_self: (libc)Miscellaneous Thread Functions. * pthread_setcancelstate: (libc)Cancellation. * pthread_setcanceltype: (libc)Cancellation. +* pthread_setconcurrency: (libc)Miscellaneous Thread Functions. * pthread_setschedparam: (libc)Miscellaneous Thread Functions. * pthread_setspecific: (libc)Thread-Specific Data. * pthread_sigmask: (libc)Threads and Signal Handling. @@ -1240,6 +1246,8 @@ START-INFO-DIR-ENTRY * rand_r: (libc)ISO Random. * random: (libc)BSD Random. * read: (libc)I/O Primitives. +* readdir64: (libc)Reading/Closing Directory. +* readdir64_r: (libc)Reading/Closing Directory. * readdir: (libc)Reading/Closing Directory. * readdir_r: (libc)Reading/Closing Directory. * readlink: (libc)Symbolic Links. diff -adurpN glibc-2.2/manual/examples/longopt.c glibc-2.2.1/manual/examples/longopt.c --- glibc-2.2/manual/examples/longopt.c Wed May 15 16:00:17 1996 +++ glibc-2.2.1/manual/examples/longopt.c Sun Jan 7 09:08:47 2001 @@ -17,21 +17,21 @@ main (argc, argv) static struct option long_options[] = { /* These options set a flag. */ - {"verbose", 0, &verbose_flag, 1}, - {"brief", 0, &verbose_flag, 0}, + {"verbose", no_argument, &verbose_flag, 1}, + {"brief", no_argument, &verbose_flag, 0}, /* These options don't set a flag. We distinguish them by their indices. */ - {"add", 1, 0, 0}, - {"append", 0, 0, 0}, - {"delete", 1, 0, 0}, - {"create", 0, 0, 0}, - {"file", 1, 0, 0}, + {"add", required_argument, 0, 'a'}, + {"append", no_argument, 0, 'b'}, + {"delete", required_argument, 0, 'd'}, + {"create", no_argument, 0, 'c'}, + {"file", required_argument, 0, 'f'}, {0, 0, 0, 0} }; /* @code{getopt_long} stores the option index here. */ int option_index = 0; - c = getopt_long (argc, argv, "abc:d:", + c = getopt_long (argc, argv, "abc:d:f:", long_options, &option_index); /* Detect the end of the options. */ @@ -64,6 +64,10 @@ main (argc, argv) case 'd': printf ("option -d with value `%s'\n", optarg); + break; + + case 'f': + printf ("option -f with value `%s'\n", optarg); break; case '?': diff -adurpN glibc-2.2/manual/install.texi glibc-2.2.1/manual/install.texi --- glibc-2.2/manual/install.texi Wed Nov 8 14:10:19 2000 +++ glibc-2.2.1/manual/install.texi Wed Nov 22 10:59:51 2000 @@ -243,12 +243,12 @@ work with object files for the target yo @cindex installing To install the library and its header files, and the Info files of the -manual, type @code{make install}. This will build things if necessary, -before installing them. However, you should still compile everything first. -If you are installing glibc as your primary C library, we recommend that you -shut the system down to single-user mode first, and reboot afterward. -This minimizes the risk of breaking things when the library changes out -from underneath. +manual, type @code{env LANGUAGE=C LC_ALL=C make install}. This will +build things if necessary, before installing them. However, you should +still compile everything first. If you are installing glibc as your +primary C library, we recommend that you shut the system down to +single-user mode first, and reboot afterward. This minimizes the risk +of breaking things when the library changes out from underneath. If you're upgrading from Linux libc5 or some other C library, you need to replace the @file{/usr/include} with a fresh directory before installing it. @@ -332,22 +332,17 @@ recommend version GNU @code{make} versio versions have severe bugs or lack features. @item -EGCS 1.1.1, 1.1 or 1.0.3, or GCC 2.8.1, 2.95 or newer +GCC 2.95 or newer The GNU C library can only be compiled with the GNU C compiler family. -As of the 2.1 release, EGCS 1.0.3 or higher is required. GCC 2.8.1 can -also be used (but see the FAQ for reasons why you might not want to). -Earlier versions simply are too buggy. As of this writing, GCC 2.95.2 -is the compiler we advise to use. +As of the 2.2 release, GCC 2.95.2 or higher is required. As of this +writing, GCC 2.95.2 is the compiler we advise to use. You can use whatever compiler you like to compile programs that use GNU libc, but be aware that both GCC 2.7 and 2.8 have bugs in their floating-point support that may be triggered by the math library. -On Alpha machines you need at least EGCS 1.1.1. Earlier versions don't -work reliably. - -For PPC you might need some patches even on top of the last EGCS version. +For PPC you might need some patches even on top of the last GCC version. See the FAQ. @item @@ -430,8 +425,7 @@ following patterns: @smallexample alpha@var{*}-@var{*}-linux arm-@var{*}-linux -arm-@var{*}-linuxaout -arm-@var{*}-none +hppa-@var{*}-linux i@var{x}86-@var{*}-gnu i@var{x}86-@var{*}-linux ia64-@var{*}-linux @@ -443,8 +437,16 @@ sparc-@var{*}-linux sparc64-@var{*}-linux @end smallexample -Former releases of this library (version 1.09.1 and perhaps earlier -versions) used to run on the following configurations: +Former releases of this library (version 2.1 and/or 2.0) used to run on +the following configurations: + +@smallexample +arm-@var{*}-linuxaout +arm-@var{*}-none +@end smallexample + +Very early releases (version 1.09.1 and perhaps earlier versions) used +to run on the following configurations: @smallexample alpha-dec-osf1 diff -adurpN glibc-2.2/manual/libc.cp glibc-2.2.1/manual/libc.cp --- glibc-2.2/manual/libc.cp Thu Sep 7 12:04:42 2000 +++ glibc-2.2.1/manual/libc.cp Sun Jan 7 09:11:50 2001 @@ -22,82 +22,82 @@ \entry{shadowing functions with macros}{5}{shadowing functions with macros} \entry{removing macros that shadow functions}{5}{removing macros that shadow functions} \entry{undefining macros that shadow functions}{5}{undefining macros that shadow functions} -\entry{reserved names}{6}{reserved names} -\entry{name space}{6}{name space} +\entry{reserved names}{5}{reserved names} +\entry{name space}{5}{name space} \entry{feature test macros}{7}{feature test macros} \entry{BSD compatibility library.}{8}{BSD compatibility library.} \entry{error reporting}{15}{error reporting} \entry{reporting errors}{15}{reporting errors} \entry{error codes}{15}{error codes} \entry{status codes}{15}{status codes} -\entry{program name}{27}{program name} -\entry{name of running program}{27}{name of running program} -\entry{memory allocation}{29}{memory allocation} -\entry{storage allocation}{29}{storage allocation} -\entry{page frame}{29}{page frame} -\entry{frame, real memory}{29}{frame, real memory} -\entry{swap space}{29}{swap space} -\entry{page, virtual memory}{29}{page, virtual memory} -\entry{page fault}{29}{page fault} -\entry{paging}{29}{paging} -\entry{executable}{30}{executable} -\entry{literals}{30}{literals} -\entry{constants}{30}{constants} -\entry{memory mapped I/O}{30}{memory mapped I/O} -\entry{memory mapped file}{30}{memory mapped file} -\entry{files, accessing}{30}{files, accessing} -\entry{execing a program}{30}{execing a program} -\entry{freeing memory}{30}{freeing memory} -\entry{exiting a program}{30}{exiting a program} -\entry{static memory allocation}{31}{static memory allocation} -\entry{static storage class}{31}{static storage class} -\entry{automatic memory allocation}{31}{automatic memory allocation} -\entry{automatic storage class}{31}{automatic storage class} -\entry{dynamic memory allocation}{31}{dynamic memory allocation} -\entry{dynamic memory allocation}{31}{dynamic memory allocation} -\entry{unconstrained memory allocation}{32}{unconstrained memory allocation} -\entry{malloc function}{32}{\code {malloc} function} -\entry{heap, dynamic allocation from}{32}{heap, dynamic allocation from} -\entry{allocation of memory with malloc}{32}{allocation of memory with \code {malloc}} -\entry{freeing memory allocated with malloc}{33}{freeing memory allocated with \code {malloc}} -\entry{heap, freeing memory from}{33}{heap, freeing memory from} -\entry{changing the size of a block (malloc)}{34}{changing the size of a block (\code {malloc})} -\entry{efficiency and malloc}{36}{efficiency and \code {malloc}} -\entry{page boundary}{36}{page boundary} -\entry{alignment (with malloc)}{36}{alignment (with \code {malloc})} -\entry{heap consistency checking}{37}{heap consistency checking} -\entry{consistency checking, of heap}{37}{consistency checking, of heap} -\entry{allocation hooks, for malloc}{39}{allocation hooks, for \code {malloc}} -\entry{allocation statistics}{42}{allocation statistics} -\entry{allocation debugging}{44}{allocation debugging} -\entry{malloc debugger}{44}{malloc debugger} -\entry{obstacks}{48}{obstacks} -\entry{allocation (obstacks)}{50}{allocation (obstacks)} -\entry{freeing (obstacks)}{51}{freeing (obstacks)} -\entry{macros}{51}{macros} -\entry{growing objects (in obstacks)}{52}{growing objects (in obstacks)} -\entry{changing the size of a block (obstacks)}{52}{changing the size of a block (obstacks)} -\entry{shrinking objects}{53}{shrinking objects} -\entry{efficiency and obstacks}{53}{efficiency and obstacks} -\entry{obstack status}{55}{obstack status} -\entry{status of obstack}{55}{status of obstack} -\entry{alignment (in obstacks)}{56}{alignment (in obstacks)} -\entry{efficiency of chunks}{56}{efficiency of chunks} -\entry{chunks}{56}{chunks} -\entry{automatic freeing}{58}{automatic freeing} -\entry{alloca function}{58}{\code {alloca} function} -\entry{automatic storage with variable size}{58}{automatic storage with variable size} -\entry{longjmp}{60}{longjmp} -\entry{alloca disadvantages}{60}{\code {alloca} disadvantages} -\entry{disadvantages of alloca}{60}{disadvantages of \code {alloca}} -\entry{variable-sized arrays}{60}{variable-sized arrays} -\entry{locking pages}{61}{locking pages} -\entry{memory lock}{61}{memory lock} -\entry{paging}{61}{paging} -\entry{realtime processing}{62}{realtime processing} -\entry{speed of execution}{62}{speed of execution} -\entry{copy-on-write page fault}{63}{copy-on-write page fault} -\entry{page fault, copy-on-write}{63}{page fault, copy-on-write} +\entry{program name}{28}{program name} +\entry{name of running program}{28}{name of running program} +\entry{memory allocation}{31}{memory allocation} +\entry{storage allocation}{31}{storage allocation} +\entry{page frame}{31}{page frame} +\entry{frame, real memory}{31}{frame, real memory} +\entry{swap space}{31}{swap space} +\entry{page, virtual memory}{31}{page, virtual memory} +\entry{page fault}{31}{page fault} +\entry{paging}{31}{paging} +\entry{executable}{32}{executable} +\entry{literals}{32}{literals} +\entry{constants}{32}{constants} +\entry{memory mapped I/O}{32}{memory mapped I/O} +\entry{memory mapped file}{32}{memory mapped file} +\entry{files, accessing}{32}{files, accessing} +\entry{execing a program}{32}{execing a program} +\entry{freeing memory}{32}{freeing memory} +\entry{exiting a program}{32}{exiting a program} +\entry{static memory allocation}{33}{static memory allocation} +\entry{static storage class}{33}{static storage class} +\entry{automatic memory allocation}{33}{automatic memory allocation} +\entry{automatic storage class}{33}{automatic storage class} +\entry{dynamic memory allocation}{33}{dynamic memory allocation} +\entry{dynamic memory allocation}{33}{dynamic memory allocation} +\entry{unconstrained memory allocation}{34}{unconstrained memory allocation} +\entry{malloc function}{34}{\code {malloc} function} +\entry{heap, dynamic allocation from}{34}{heap, dynamic allocation from} +\entry{allocation of memory with malloc}{34}{allocation of memory with \code {malloc}} +\entry{freeing memory allocated with malloc}{35}{freeing memory allocated with \code {malloc}} +\entry{heap, freeing memory from}{35}{heap, freeing memory from} +\entry{changing the size of a block (malloc)}{36}{changing the size of a block (\code {malloc})} +\entry{efficiency and malloc}{38}{efficiency and \code {malloc}} +\entry{page boundary}{38}{page boundary} +\entry{alignment (with malloc)}{38}{alignment (with \code {malloc})} +\entry{heap consistency checking}{39}{heap consistency checking} +\entry{consistency checking, of heap}{39}{consistency checking, of heap} +\entry{allocation hooks, for malloc}{41}{allocation hooks, for \code {malloc}} +\entry{allocation statistics}{44}{allocation statistics} +\entry{allocation debugging}{46}{allocation debugging} +\entry{malloc debugger}{46}{malloc debugger} +\entry{obstacks}{49}{obstacks} +\entry{allocation (obstacks)}{51}{allocation (obstacks)} +\entry{freeing (obstacks)}{52}{freeing (obstacks)} +\entry{macros}{53}{macros} +\entry{growing objects (in obstacks)}{53}{growing objects (in obstacks)} +\entry{changing the size of a block (obstacks)}{53}{changing the size of a block (obstacks)} +\entry{shrinking objects}{55}{shrinking objects} +\entry{efficiency and obstacks}{55}{efficiency and obstacks} +\entry{obstack status}{57}{obstack status} +\entry{status of obstack}{57}{status of obstack} +\entry{alignment (in obstacks)}{57}{alignment (in obstacks)} +\entry{efficiency of chunks}{58}{efficiency of chunks} +\entry{chunks}{58}{chunks} +\entry{automatic freeing}{60}{automatic freeing} +\entry{alloca function}{60}{\code {alloca} function} +\entry{automatic storage with variable size}{60}{automatic storage with variable size} +\entry{longjmp}{61}{longjmp} +\entry{alloca disadvantages}{61}{\code {alloca} disadvantages} +\entry{disadvantages of alloca}{61}{disadvantages of \code {alloca}} +\entry{variable-sized arrays}{62}{variable-sized arrays} +\entry{locking pages}{63}{locking pages} +\entry{memory lock}{63}{memory lock} +\entry{paging}{63}{paging} +\entry{realtime processing}{63}{realtime processing} +\entry{speed of execution}{63}{speed of execution} +\entry{copy-on-write page fault}{64}{copy-on-write page fault} +\entry{page fault, copy-on-write}{64}{page fault, copy-on-write} \entry{character testing}{67}{character testing} \entry{classification of characters}{67}{classification of characters} \entry{predicates on characters}{67}{predicates on characters} @@ -105,8 +105,8 @@ \entry{lower-case character}{67}{lower-case character} \entry{upper-case character}{67}{upper-case character} \entry{alphabetic character}{67}{alphabetic character} -\entry{digit character}{67}{digit character} -\entry{decimal digit character}{67}{decimal digit character} +\entry{digit character}{68}{digit character} +\entry{decimal digit character}{68}{decimal digit character} \entry{alphanumeric character}{68}{alphanumeric character} \entry{hexadecimal digit character}{68}{hexadecimal digit character} \entry{punctuation character}{68}{punctuation character} @@ -115,21 +115,21 @@ \entry{graphic character}{68}{graphic character} \entry{printing character}{68}{printing character} \entry{control character}{68}{control character} -\entry{ASCII character}{68}{ASCII character} +\entry{ASCII character}{69}{ASCII character} \entry{character case conversion}{69}{character case conversion} \entry{case conversion of characters}{69}{case conversion of characters} \entry{converting case of characters}{69}{converting case of characters} \entry{alphanumeric character}{70}{alphanumeric character} -\entry{alphabetic character}{70}{alphabetic character} +\entry{alphabetic character}{71}{alphabetic character} \entry{control character}{71}{control character} \entry{digit character}{71}{digit character} \entry{graphic character}{71}{graphic character} -\entry{lower-case character}{71}{lower-case character} -\entry{printing character}{71}{printing character} +\entry{lower-case character}{72}{lower-case character} +\entry{printing character}{72}{printing character} \entry{punctuation character}{72}{punctuation character} \entry{whitespace character}{72}{whitespace character} -\entry{upper-case character}{72}{upper-case character} -\entry{hexadecimal digit character}{72}{hexadecimal digit character} +\entry{upper-case character}{73}{upper-case character} +\entry{hexadecimal digit character}{73}{hexadecimal digit character} \entry{blank character}{73}{blank character} \entry{string, representation of}{77}{string, representation of} \entry{string}{77}{string} @@ -147,8 +147,879 @@ \entry{string concatenation functions}{79}{string concatenation functions} \entry{{\_}{\_}va{\_}copy}{83}{__va_copy} \entry{va{\_}copy}{83}{va_copy} -\entry{comparing strings and arrays}{87}{comparing strings and arrays} -\entry{string comparison functions}{87}{string comparison functions} -\entry{array comparison functions}{87}{array comparison functions} -\entry{predicates on strings}{87}{predicates on strings} -\entry{predicates on arrays}{87}{predicates on arrays} +\entry{comparing strings and arrays}{86}{comparing strings and arrays} +\entry{string comparison functions}{86}{string comparison functions} +\entry{array comparison functions}{86}{array comparison functions} +\entry{predicates on strings}{86}{predicates on strings} +\entry{predicates on arrays}{86}{predicates on arrays} +\entry{collating strings}{89}{collating strings} +\entry{string collation functions}{89}{string collation functions} +\entry{converting string to collation order}{90}{converting string to collation order} +\entry{search functions (for strings)}{92}{search functions (for strings)} +\entry{string search functions}{92}{string search functions} +\entry{tokenizing strings}{95}{tokenizing strings} +\entry{breaking a string into tokens}{95}{breaking a string into tokens} +\entry{parsing tokens from a string}{95}{parsing tokens from a string} +\entry{encryption}{99}{encryption} +\entry{Rot13}{99}{Rot13} +\entry{argz vectors (string vectors)}{101}{argz vectors (string vectors)} +\entry{string vectors, null-character separated}{101}{string vectors, null-character separated} +\entry{argument vectors, null-character separated}{101}{argument vectors, null-character separated} +\entry{envz vectors (environment vectors)}{101}{envz vectors (environment vectors)} +\entry{environment vectors, null-character separated}{101}{environment vectors, null-character separated} +\entry{internal representation}{105}{internal representation} +\entry{wide character}{105}{wide character} +\entry{Unicode}{105}{Unicode} +\entry{ISO 10646}{105}{ISO 10646} +\entry{UCS-2}{105}{UCS-2} +\entry{UCS-4}{105}{UCS-4} +\entry{UTF-8}{105}{UTF-8} +\entry{UTF-16}{105}{UTF-16} +\entry{multibyte character}{107}{multibyte character} +\entry{EBCDIC}{107}{EBCDIC} +\entry{ISO 2022}{107}{ISO 2022} +\entry{EUC}{108}{EUC} +\entry{SJIS}{108}{SJIS} +\entry{ISO 6937}{108}{ISO 6937} +\entry{UTF-8}{108}{UTF-8} +\entry{UTF-7}{108}{UTF-7} +\entry{stateful}{110}{stateful} +\entry{shift state}{111}{shift state} +\entry{stateful}{113}{stateful} +\entry{stateful}{119}{stateful} +\entry{stateful}{129}{stateful} +\entry{stateful}{132}{stateful} +\entry{triangulation}{135}{triangulation} +\entry{ISO-2022-JP}{135}{ISO-2022-JP} +\entry{EUC-JP}{135}{EUC-JP} +\entry{stateful}{144}{stateful} +\entry{internationalization}{149}{internationalization} +\entry{locales}{149}{locales} +\entry{combining locales}{150}{combining locales} +\entry{categories for locales}{150}{categories for locales} +\entry{locale categories}{150}{locale categories} +\entry{changing the locale}{151}{changing the locale} +\entry{locale, changing}{151}{locale, changing} +\entry{monetary value formatting}{154}{monetary value formatting} +\entry{numeric value formatting}{154}{numeric value formatting} +\entry{decimal-point separator}{154}{decimal-point separator} +\entry{grouping of digits}{154}{grouping of digits} +\entry{currency symbols}{155}{currency symbols} +\entry{NLSPATH environment variable}{168}{NLSPATH environment variable} +\entry{LC{\_}ALL environment variable}{169}{LC_ALL environment variable} +\entry{LC{\_}MESSAGES environment variable}{169}{LC_MESSAGES environment variable} +\entry{LANG environment variable}{169}{LANG environment variable} +\entry{gencat}{172}{gencat} +\entry{sgettext}{186}{sgettext} +\entry{sgettext}{186}{sgettext} +\entry{Comparison Function}{191}{Comparison Function} +\entry{search function (for arrays)}{191}{search function (for arrays)} +\entry{binary search function (for arrays)}{191}{binary search function (for arrays)} +\entry{array search function}{191}{array search function} +\entry{sort function (for arrays)}{192}{sort function (for arrays)} +\entry{quick sort function (for arrays)}{192}{quick sort function (for arrays)} +\entry{array sort function}{192}{array sort function} +\entry{stable sorting}{192}{stable sorting} +\entry{Kermit the frog}{195}{Kermit the frog} +\entry{globbing}{202}{globbing} +\entry{word expansion}{212}{word expansion} +\entry{expansion of shell words}{212}{expansion of shell words} +\entry{tilde expansion}{213}{tilde expansion} +\entry{variable substitution}{213}{variable substitution} +\entry{substitution of variables and commands}{213}{substitution of variables and commands} +\entry{command substitution}{213}{command substitution} +\entry{arithmetic expansion}{213}{arithmetic expansion} +\entry{field splitting}{213}{field splitting} +\entry{wildcard expansion}{213}{wildcard expansion} +\entry{quote removal}{213}{quote removal} +\entry{removal of quotes}{213}{removal of quotes} +\entry{opening a file}{219}{opening a file} +\entry{file position}{220}{file position} +\entry{sequential-access files}{220}{sequential-access files} +\entry{random-access files}{220}{random-access files} +\entry{append-access files}{221}{append-access files} +\entry{file name}{221}{file name} +\entry{directory}{221}{directory} +\entry{link}{221}{link} +\entry{directory entry}{221}{directory entry} +\entry{file name component}{221}{file name component} +\entry{file name resolution}{222}{file name resolution} +\entry{root directory}{222}{root directory} +\entry{absolute file name}{222}{absolute file name} +\entry{relative file name}{222}{relative file name} +\entry{parent directory}{222}{parent directory} +\entry{file name errors}{222}{file name errors} +\entry{usual file name errors}{222}{usual file name errors} +\entry{file pointer}{225}{file pointer} +\entry{standard streams}{225}{standard streams} +\entry{streams, standard}{225}{streams, standard} +\entry{standard input stream}{225}{standard input stream} +\entry{standard output stream}{225}{standard output stream} +\entry{standard error stream}{226}{standard error stream} +\entry{opening a stream}{226}{opening a stream} +\entry{stream orientation}{227}{stream orientation} +\entry{orientation, stream}{227}{orientation, stream} +\entry{closing a stream}{229}{closing a stream} +\entry{writing to a stream, by characters}{229}{writing to a stream, by characters} +\entry{reading from a stream, by characters}{231}{reading from a stream, by characters} +\entry{peeking at input}{233}{peeking at input} +\entry{unreading characters}{233}{unreading characters} +\entry{pushing input back}{233}{pushing input back} +\entry{binary I/O to a stream}{235}{binary I/O to a stream} +\entry{block I/O to a stream}{235}{block I/O to a stream} +\entry{reading from a stream, by blocks}{235}{reading from a stream, by blocks} +\entry{writing to a stream, by blocks}{235}{writing to a stream, by blocks} +\entry{format string, for printf}{236}{format string, for \code {printf}} +\entry{template, for printf}{236}{template, for \code {printf}} +\entry{formatted output to a stream}{236}{formatted output to a stream} +\entry{writing to a stream, formatted}{236}{writing to a stream, formatted} +\entry{conversion specifications (printf)}{236}{conversion specifications (\code {printf})} +\entry{flag character (printf)}{238}{flag character (\code {printf})} +\entry{minimum field width (printf)}{238}{minimum field width (\code {printf})} +\entry{precision (printf)}{238}{precision (\code {printf})} +\entry{type modifier character (printf)}{238}{type modifier character (\code {printf})} +\entry{output conversions, for printf}{238}{output conversions, for \code {printf}} +\entry{parsing a template string}{248}{parsing a template string} +\entry{customizing printf}{251}{customizing \code {printf}} +\entry{defining new printf conversions}{251}{defining new \code {printf} conversions} +\entry{extending printf}{251}{extending \code {printf}} +\entry{formatted input from a stream}{257}{formatted input from a stream} +\entry{reading from a stream, formatted}{257}{reading from a stream, formatted} +\entry{format string, for scanf}{257}{format string, for \code {scanf}} +\entry{template, for scanf}{257}{template, for \code {scanf}} +\entry{conversion specifications (scanf)}{258}{conversion specifications (\code {scanf})} +\entry{matching failure, in scanf}{258}{matching failure, in \code {scanf}} +\entry{flag character (scanf)}{259}{flag character (\code {scanf})} +\entry{maximum field width (scanf)}{259}{maximum field width (\code {scanf})} +\entry{type modifier character (scanf)}{259}{type modifier character (\code {scanf})} +\entry{input conversions, for scanf}{259}{input conversions, for \code {scanf}} +\entry{end of file, on a stream}{265}{end of file, on a stream} +\entry{text stream}{266}{text stream} +\entry{binary stream}{266}{binary stream} +\entry{lines (in a text file)}{267}{lines (in a text file)} +\entry{file positioning on a stream}{267}{file positioning on a stream} +\entry{positioning a stream}{267}{positioning a stream} +\entry{seeking on a stream}{267}{seeking on a stream} +\entry{buffering of streams}{271}{buffering of streams} +\entry{unbuffered stream}{272}{unbuffered stream} +\entry{line buffered stream}{272}{line buffered stream} +\entry{fully buffered stream}{272}{fully buffered stream} +\entry{flushing a stream}{272}{flushing a stream} +\entry{buffering, controlling}{273}{buffering, controlling} +\entry{stream, for I/O to a string}{275}{stream, for I/O to a string} +\entry{string stream}{275}{string stream} +\entry{custom streams}{278}{custom streams} +\entry{programming your own streams}{278}{programming your own streams} +\entry{cookie, for custom stream}{278}{cookie, for custom stream} +\entry{hook functions (of custom streams)}{279}{hook functions (of custom streams)} +\entry{formatted messages}{280}{formatted messages} +\entry{severity class}{281}{severity class} +\entry{severity class}{282}{severity class} +\entry{opening a file descriptor}{285}{opening a file descriptor} +\entry{closing a file descriptor}{285}{closing a file descriptor} +\entry{reading from a file descriptor}{288}{reading from a file descriptor} +\entry{end-of-file, on a file descriptor}{288}{end-of-file, on a file descriptor} +\entry{writing to a file descriptor}{290}{writing to a file descriptor} +\entry{file positioning on a file descriptor}{292}{file positioning on a file descriptor} +\entry{positioning a file descriptor}{292}{positioning a file descriptor} +\entry{seeking on a file descriptor}{292}{seeking on a file descriptor} +\entry{sparse files}{293}{sparse files} +\entry{holes in files}{293}{holes in files} +\entry{streams, and file descriptors}{295}{streams, and file descriptors} +\entry{converting file descriptor to stream}{295}{converting file descriptor to stream} +\entry{extracting file descriptor from stream}{295}{extracting file descriptor from stream} +\entry{standard file descriptors}{295}{standard file descriptors} +\entry{file descriptors, standard}{295}{file descriptors, standard} +\entry{standard input file descriptor}{295}{standard input file descriptor} +\entry{standard output file descriptor}{295}{standard output file descriptor} +\entry{standard error file descriptor}{295}{standard error file descriptor} +\entry{channels}{295}{channels} +\entry{streams and descriptors}{295}{streams and descriptors} +\entry{descriptors and streams}{295}{descriptors and streams} +\entry{mixing descriptors and streams}{295}{mixing descriptors and streams} +\entry{linked channels}{296}{linked channels} +\entry{cleaning up a stream}{296}{cleaning up a stream} +\entry{independent channels}{296}{independent channels} +\entry{scatter-gather}{297}{scatter-gather} +\entry{waiting for input or output}{301}{waiting for input or output} +\entry{multiplexing input}{301}{multiplexing input} +\entry{input from multiple files}{301}{input from multiple files} +\entry{file descriptor sets, for select}{302}{file descriptor sets, for \code {select}} +\entry{synchronizing}{304}{synchronizing} +\entry{synchronizing}{313}{synchronizing} +\entry{control operations on files}{317}{control operations on files} +\entry{fcntl function}{317}{\code {fcntl} function} +\entry{duplicating file descriptors}{318}{duplicating file descriptors} +\entry{redirecting input and output}{318}{redirecting input and output} +\entry{file descriptor flags}{320}{file descriptor flags} +\entry{close-on-exec (file descriptor flag)}{320}{close-on-exec (file descriptor flag)} +\entry{file status flags}{321}{file status flags} +\entry{file name translation flags}{322}{file name translation flags} +\entry{flags, file name translation}{322}{flags, file name translation} +\entry{open-time action flags}{322}{open-time action flags} +\entry{flags, open-time action}{322}{flags, open-time action} +\entry{create on open (file status flag)}{323}{create on open (file status flag)} +\entry{non-blocking open}{323}{non-blocking open} +\entry{controlling terminal, setting}{323}{controlling terminal, setting} +\entry{symbolic link, opening}{323}{symbolic link, opening} +\entry{file locks}{326}{file locks} +\entry{record locking}{326}{record locking} +\entry{exclusive lock}{326}{exclusive lock} +\entry{write lock}{326}{write lock} +\entry{shared lock}{326}{shared lock} +\entry{read lock}{326}{read lock} +\entry{interrupt-driven input}{329}{interrupt-driven input} +\entry{generic i/o control operations}{330}{generic i/o control operations} +\entry{IOCTLs}{330}{IOCTLs} +\entry{current working directory}{333}{current working directory} +\entry{working directory}{333}{working directory} +\entry{change working directory}{333}{change working directory} +\entry{accessing directories}{334}{accessing directories} +\entry{reading from a directory}{334}{reading from a directory} +\entry{directories, accessing}{334}{directories, accessing} +\entry{directory stream}{334}{directory stream} +\entry{directory hierarchy}{341}{directory hierarchy} +\entry{hierarchy, directory}{341}{hierarchy, directory} +\entry{tree, directory}{341}{tree, directory} +\entry{hard link}{345}{hard link} +\entry{link, hard}{345}{link, hard} +\entry{multiple names for one file}{345}{multiple names for one file} +\entry{file names, multiple}{345}{file names, multiple} +\entry{soft link}{346}{soft link} +\entry{link, soft}{346}{link, soft} +\entry{symbolic link}{346}{symbolic link} +\entry{link, symbolic}{346}{link, symbolic} +\entry{deleting a file}{347}{deleting a file} +\entry{removing a file}{347}{removing a file} +\entry{unlinking a file}{347}{unlinking a file} +\entry{directories, deleting}{348}{directories, deleting} +\entry{deleting a directory}{348}{deleting a directory} +\entry{renaming a file}{349}{renaming a file} +\entry{creating a directory}{350}{creating a directory} +\entry{directories, creating}{350}{directories, creating} +\entry{status of a file}{351}{status of a file} +\entry{attributes of a file}{351}{attributes of a file} +\entry{file attributes}{351}{file attributes} +\entry{inode number}{354}{inode number} +\entry{file owner}{358}{file owner} +\entry{owner of a file}{358}{owner of a file} +\entry{group owner of a file}{358}{group owner of a file} +\entry{file permission bits}{359}{file permission bits} +\entry{sticky bit}{360}{sticky bit} +\entry{permission to access a file}{361}{permission to access a file} +\entry{access permission for a file}{361}{access permission for a file} +\entry{file access permission}{361}{file access permission} +\entry{file creation mask}{361}{file creation mask} +\entry{umask}{361}{umask} +\entry{testing access permission}{363}{testing access permission} +\entry{access, testing for}{363}{access, testing for} +\entry{setuid programs and file access}{363}{setuid programs and file access} +\entry{file access time}{364}{file access time} +\entry{file modification time}{364}{file modification time} +\entry{file attribute modification time}{364}{file attribute modification time} +\entry{creating special files}{368}{creating special files} +\entry{special files}{368}{special files} +\entry{TMPDIR environment variable}{371}{TMPDIR environment variable} +\entry{pipe}{373}{pipe} +\entry{FIFO special file}{373}{FIFO special file} +\entry{creating a pipe}{373}{creating a pipe} +\entry{opening a pipe}{373}{opening a pipe} +\entry{interprocess communication, with pipes}{373}{interprocess communication, with pipes} +\entry{creating a pipe to a subprocess}{375}{creating a pipe to a subprocess} +\entry{pipe to a subprocess}{375}{pipe to a subprocess} +\entry{filtering i/o through subprocess}{375}{filtering i/o through subprocess} +\entry{creating a FIFO special file}{376}{creating a FIFO special file} +\entry{interprocess communication, with FIFO}{376}{interprocess communication, with FIFO} +\entry{socket}{379}{socket} +\entry{interprocess communication, with sockets}{379}{interprocess communication, with sockets} +\entry{communication style (of a socket)}{379}{communication style (of a socket)} +\entry{style of communication (of a socket)}{379}{style of communication (of a socket)} +\entry{packet}{379}{packet} +\entry{byte stream}{379}{byte stream} +\entry{stream (sockets)}{379}{stream (sockets)} +\entry{loss of data on sockets}{379}{loss of data on sockets} +\entry{data loss on sockets}{379}{data loss on sockets} +\entry{namespace (of socket)}{379}{namespace (of socket)} +\entry{domain (of socket)}{379}{domain (of socket)} +\entry{socket namespace}{379}{socket namespace} +\entry{socket domain}{379}{socket domain} +\entry{network protocol}{379}{network protocol} +\entry{protocol (of socket)}{379}{protocol (of socket)} +\entry{socket protocol}{379}{socket protocol} +\entry{protocol family}{379}{protocol family} +\entry{address of socket}{381}{address of socket} +\entry{name of socket}{381}{name of socket} +\entry{binding a socket address}{381}{binding a socket address} +\entry{socket address (name) binding}{381}{socket address (name) binding} +\entry{local namespace, for sockets}{385}{local namespace, for sockets} +\entry{Internet namespace, for sockets}{387}{Internet namespace, for sockets} +\entry{host address, Internet}{389}{host address, Internet} +\entry{Internet host address}{389}{Internet host address} +\entry{network number}{389}{network number} +\entry{local network address number}{389}{local network address number} +\entry{standard dot notation, for Internet addresses}{389}{standard dot notation, for Internet addresses} +\entry{dot notation, for Internet addresses}{389}{dot notation, for Internet addresses} +\entry{hosts database}{393}{hosts database} +\entry{converting host name to address}{393}{converting host name to address} +\entry{converting host address to name}{393}{converting host address to name} +\entry{port number}{396}{port number} +\entry{services database}{397}{services database} +\entry{converting service name to port number}{397}{converting service name to port number} +\entry{converting port number to service name}{397}{converting port number to service name} +\entry{byte order conversion, for socket}{398}{byte order conversion, for socket} +\entry{converting byte order}{398}{converting byte order} +\entry{big-endian}{398}{big-endian} +\entry{little-endian}{398}{little-endian} +\entry{network byte order}{398}{network byte order} +\entry{protocols database}{399}{protocols database} +\entry{TCP (Internet protocol)}{399}{TCP (Internet protocol)} +\entry{creating a socket}{402}{creating a socket} +\entry{socket, creating}{402}{socket, creating} +\entry{opening a socket}{402}{opening a socket} +\entry{socket, closing}{403}{socket, closing} +\entry{closing a socket}{403}{closing a socket} +\entry{shutting down a socket}{403}{shutting down a socket} +\entry{socket shutdown}{403}{socket shutdown} +\entry{creating a socket pair}{403}{creating a socket pair} +\entry{socket pair}{403}{socket pair} +\entry{opening a socket pair}{403}{opening a socket pair} +\entry{connection}{404}{connection} +\entry{client}{404}{client} +\entry{server}{404}{server} +\entry{connecting a socket}{404}{connecting a socket} +\entry{socket, connecting}{404}{socket, connecting} +\entry{socket, initiating a connection}{404}{socket, initiating a connection} +\entry{socket, client actions}{404}{socket, client actions} +\entry{listening (sockets)}{406}{listening (sockets)} +\entry{sockets, server actions}{406}{sockets, server actions} +\entry{sockets, listening}{406}{sockets, listening} +\entry{sockets, accepting connections}{406}{sockets, accepting connections} +\entry{accepting connections}{406}{accepting connections} +\entry{reading from a socket}{408}{reading from a socket} +\entry{writing to a socket}{408}{writing to a socket} +\entry{out-of-band data}{414}{out-of-band data} +\entry{high-priority data}{414}{high-priority data} +\entry{urgent socket condition}{414}{urgent socket condition} +\entry{datagram socket}{417}{datagram socket} +\entry{sending a datagram}{417}{sending a datagram} +\entry{transmitting datagrams}{417}{transmitting datagrams} +\entry{datagrams, transmitting}{417}{datagrams, transmitting} +\entry{receiving datagrams}{417}{receiving datagrams} +\entry{socket options}{422}{socket options} +\entry{level, for socket options}{422}{level, for socket options} +\entry{socket option level}{422}{socket option level} +\entry{networks database}{424}{networks database} +\entry{converting network number to network name}{424}{converting network number to network name} +\entry{converting network name to network number}{424}{converting network name to network number} +\entry{terminal identification}{427}{terminal identification} +\entry{identifying terminals}{427}{identifying terminals} +\entry{terminal input queue}{428}{terminal input queue} +\entry{typeahead buffer}{428}{typeahead buffer} +\entry{terminal output queue}{428}{terminal output queue} +\entry{canonical input processing}{428}{canonical input processing} +\entry{noncanonical input processing}{428}{noncanonical input processing} +\entry{terminal mode data types}{429}{terminal mode data types} +\entry{terminal mode functions}{430}{terminal mode functions} +\entry{parity checking}{432}{parity checking} +\entry{break condition, detecting}{433}{break condition, detecting} +\entry{modem status lines}{435}{modem status lines} +\entry{carrier detect}{435}{carrier detect} +\entry{modem disconnect}{435}{modem disconnect} +\entry{echo of terminal input}{437}{echo of terminal input} +\entry{interactive signals, from terminal}{438}{interactive signals, from terminal} +\entry{line speed}{439}{line speed} +\entry{baud rate}{439}{baud rate} +\entry{terminal line speed}{439}{terminal line speed} +\entry{terminal line speed}{439}{terminal line speed} +\entry{EOF character}{441}{EOF character} +\entry{EOL character}{441}{EOL character} +\entry{EOL2 character}{441}{EOL2 character} +\entry{ERASE character}{442}{ERASE character} +\entry{WERASE character}{442}{WERASE character} +\entry{KILL character}{442}{KILL character} +\entry{REPRINT character}{442}{REPRINT character} +\entry{INTR character}{443}{INTR character} +\entry{interrupt character}{443}{interrupt character} +\entry{QUIT character}{443}{QUIT character} +\entry{SUSP character}{443}{SUSP character} +\entry{suspend character}{443}{suspend character} +\entry{DSUSP character}{443}{DSUSP character} +\entry{delayed suspend character}{443}{delayed suspend character} +\entry{START character}{444}{START character} +\entry{STOP character}{444}{STOP character} +\entry{LNEXT character}{444}{LNEXT character} +\entry{DISCARD character}{444}{DISCARD character} +\entry{STATUS character}{445}{STATUS character} +\entry{MIN termios slot}{445}{MIN termios slot} +\entry{TIME termios slot}{445}{TIME termios slot} +\entry{terminal modes, BSD}{446}{terminal modes, BSD} +\entry{terminal line control functions}{447}{terminal line control functions} +\entry{break condition, generating}{447}{break condition, generating} +\entry{flushing terminal output queue}{447}{flushing terminal output queue} +\entry{terminal output queue, flushing}{447}{terminal output queue, flushing} +\entry{clearing terminal input queue}{448}{clearing terminal input queue} +\entry{terminal input queue, clearing}{448}{terminal input queue, clearing} +\entry{flow control, terminal}{448}{flow control, terminal} +\entry{terminal flow control}{448}{terminal flow control} +\entry{pseudo-terminals}{450}{pseudo-terminals} +\entry{allocating pseudo-terminals}{451}{allocating pseudo-terminals} +\entry{opening a pseudo-terminal pair}{453}{opening a pseudo-terminal pair} +\entry{constants}{463}{constants} +\entry{mathematical constants}{463}{mathematical constants} +\entry{trigonometric functions}{464}{trigonometric functions} +\entry{pi (trigonometric constant)}{464}{pi (trigonometric constant)} +\entry{complex trigonometric functions}{465}{complex trigonometric functions} +\entry{inverse trigonometric functions}{466}{inverse trigonometric functions} +\entry{inverse complex trigonometric functions}{466}{inverse complex trigonometric functions} +\entry{exponentiation functions}{467}{exponentiation functions} +\entry{power functions}{467}{power functions} +\entry{logarithm functions}{467}{logarithm functions} +\entry{square root function}{469}{square root function} +\entry{cube root function}{469}{cube root function} +\entry{complex exponentiation functions}{470}{complex exponentiation functions} +\entry{complex logarithm functions}{470}{complex logarithm functions} +\entry{hyperbolic functions}{471}{hyperbolic functions} +\entry{hyperbolic functions}{471}{hyperbolic functions} +\entry{inverse hyperbolic functions}{472}{inverse hyperbolic functions} +\entry{inverse complex hyperbolic functions}{472}{inverse complex hyperbolic functions} +\entry{special functions}{473}{special functions} +\entry{Bessel functions}{473}{Bessel functions} +\entry{gamma function}{473}{gamma function} +\entry{math errors}{475}{math errors} +\entry{ulps}{475}{ulps} +\entry{random numbers}{481}{random numbers} +\entry{pseudo-random numbers}{481}{pseudo-random numbers} +\entry{seed (for random numbers)}{481}{seed (for random numbers)} +\entry{Optimization}{488}{Optimization} +\entry{integer}{489}{integer} +\entry{signedness}{489}{signedness} +\entry{maximum possible integer}{490}{maximum possible integer} +\entry{mininum possible integer}{490}{mininum possible integer} +\entry{integer division functions}{490}{integer division functions} +\entry{floating point}{492}{floating point} +\entry{IEEE 754}{492}{IEEE 754} +\entry{IEEE floating point}{492}{IEEE floating point} +\entry{floating-point classes}{492}{floating-point classes} +\entry{classes, floating-point}{492}{classes, floating-point} +\entry{exception}{494}{exception} +\entry{signal}{494}{signal} +\entry{zero divide}{494}{zero divide} +\entry{division by zero}{494}{division by zero} +\entry{inexact exception}{494}{inexact exception} +\entry{invalid exception}{494}{invalid exception} +\entry{overflow exception}{494}{overflow exception} +\entry{underflow exception}{494}{underflow exception} +\entry{infinity}{496}{infinity} +\entry{not a number}{496}{not a number} +\entry{NaN}{496}{NaN} +\entry{errors, mathematical}{499}{errors, mathematical} +\entry{domain error}{499}{domain error} +\entry{range error}{499}{range error} +\entry{absolute value functions}{503}{absolute value functions} +\entry{normalization functions (floating-point)}{504}{normalization functions (floating-point)} +\entry{converting floats to integers}{505}{converting floats to integers} +\entry{FP arithmetic}{508}{FP arithmetic} +\entry{NaN}{509}{NaN} +\entry{unordered comparison}{509}{unordered comparison} +\entry{minimum}{510}{minimum} +\entry{maximum}{510}{maximum} +\entry{positive difference}{510}{positive difference} +\entry{multiply-add}{510}{multiply-add} +\entry{butterfly}{510}{butterfly} +\entry{complex numbers}{511}{complex numbers} +\entry{project complex numbers}{511}{project complex numbers} +\entry{conjugate complex numbers}{511}{conjugate complex numbers} +\entry{decompose complex numbers}{511}{decompose complex numbers} +\entry{parsing numbers (in formatted input)}{512}{parsing numbers (in formatted input)} +\entry{converting strings to numbers}{512}{converting strings to numbers} +\entry{number syntax, parsing}{512}{number syntax, parsing} +\entry{syntax, for reading numbers}{512}{syntax, for reading numbers} +\entry{parsing numbers and locales}{515}{parsing numbers and locales} +\entry{locales, parsing numbers and}{515}{locales, parsing numbers and} +\entry{gcvt{\_}r}{518}{gcvt_r} +\entry{time}{521}{time} +\entry{calendar time}{521}{calendar time} +\entry{date}{521}{date} +\entry{interval}{521}{interval} +\entry{elapsed time}{521}{elapsed time} +\entry{time, elapsed}{521}{time, elapsed} +\entry{period of time}{521}{period of time} +\entry{CPU time}{521}{CPU time} +\entry{processor time}{521}{processor time} +\entry{elapsed time}{521}{elapsed time} +\entry{timeval}{522}{timeval} +\entry{timespec}{522}{timespec} +\entry{CPU time}{523}{CPU time} +\entry{clock ticks}{523}{clock ticks} +\entry{ticks, clock}{523}{ticks, clock} +\entry{processor time}{524}{processor time} +\entry{CPU time}{524}{CPU time} +\entry{child process}{525}{child process} +\entry{simple time}{525}{simple time} +\entry{high-resolution time}{525}{high-resolution time} +\entry{local time}{525}{local time} +\entry{broken-down time}{525}{broken-down time} +\entry{Gregorian calendar}{525}{Gregorian calendar} +\entry{calendar, Gregorian}{525}{calendar, Gregorian} +\entry{epoch}{526}{epoch} +\entry{broken-down time}{528}{broken-down time} +\entry{calendar time and broken-down time}{528}{calendar time and broken-down time} +\entry{leap second}{529}{leap second} +\entry{Daylight Saving Time}{529}{Daylight Saving Time} +\entry{summer time}{529}{summer time} +\entry{time, high precision}{531}{time, high precision} +\entry{clock, high accuracy}{531}{clock, high accuracy} +\entry{time zone}{547}{time zone} +\entry{time zone database}{548}{time zone database} +\entry{setting an alarm}{550}{setting an alarm} +\entry{interval timer, setting}{550}{interval timer, setting} +\entry{alarms, setting}{550}{alarms, setting} +\entry{timers, setting}{550}{timers, setting} +\entry{real-time timer}{550}{real-time timer} +\entry{timer, real-time}{550}{timer, real-time} +\entry{virtual timer}{550}{virtual timer} +\entry{timer, virtual}{550}{timer, virtual} +\entry{profiling timer}{551}{profiling timer} +\entry{timer, profiling}{551}{timer, profiling} +\entry{resource limits}{557}{resource limits} +\entry{limits on resource usage}{557}{limits on resource usage} +\entry{usage limits}{557}{usage limits} +\entry{limit}{557}{limit} +\entry{current limit}{557}{current limit} +\entry{soft limit}{557}{soft limit} +\entry{maximum limit}{557}{maximum limit} +\entry{hard limit}{557}{hard limit} +\entry{process priority}{561}{process priority} +\entry{cpu priority}{561}{cpu priority} +\entry{priority of a process}{561}{priority of a process} +\entry{absolute priority}{562}{absolute priority} +\entry{priority, absolute}{562}{priority, absolute} +\entry{realtime CPU scheduling}{562}{realtime CPU scheduling} +\entry{ready to run}{562}{ready to run} +\entry{preemptive scheduling}{562}{preemptive scheduling} +\entry{runnable process}{562}{runnable process} +\entry{scheduling, traditional}{567}{scheduling, traditional} +\entry{non-local exits}{571}{non-local exits} +\entry{long jumps}{571}{long jumps} +\entry{signal}{575}{signal} +\entry{generation of signals}{576}{generation of signals} +\entry{delivery of signals}{576}{delivery of signals} +\entry{pending signals}{576}{pending signals} +\entry{blocked signals}{576}{blocked signals} +\entry{specified action (for a signal)}{576}{specified action (for a signal)} +\entry{default action (for a signal)}{576}{default action (for a signal)} +\entry{signal action}{576}{signal action} +\entry{catching signals}{576}{catching signals} +\entry{signal names}{577}{signal names} +\entry{names of signals}{577}{names of signals} +\entry{signal number}{577}{signal number} +\entry{program error signals}{577}{program error signals} +\entry{exception}{578}{exception} +\entry{floating-point exception}{578}{floating-point exception} +\entry{illegal instruction}{579}{illegal instruction} +\entry{segmentation violation}{579}{segmentation violation} +\entry{bus error}{579}{bus error} +\entry{abort signal}{580}{abort signal} +\entry{program termination signals}{580}{program termination signals} +\entry{termination signal}{580}{termination signal} +\entry{interrupt signal}{580}{interrupt signal} +\entry{quit signal}{581}{quit signal} +\entry{quit signal}{581}{quit signal} +\entry{kill signal}{581}{kill signal} +\entry{hangup signal}{581}{hangup signal} +\entry{alarm signal}{582}{alarm signal} +\entry{virtual time alarm signal}{582}{virtual time alarm signal} +\entry{profiling alarm signal}{582}{profiling alarm signal} +\entry{input available signal}{582}{input available signal} +\entry{output possible signal}{582}{output possible signal} +\entry{urgent data signal}{582}{urgent data signal} +\entry{job control signals}{582}{job control signals} +\entry{child process signal}{582}{child process signal} +\entry{continue signal}{583}{continue signal} +\entry{stop signal}{583}{stop signal} +\entry{interactive stop signal}{583}{interactive stop signal} +\entry{terminal input signal}{583}{terminal input signal} +\entry{terminal output signal}{584}{terminal output signal} +\entry{pipe signal}{584}{pipe signal} +\entry{broken pipe signal}{584}{broken pipe signal} +\entry{lost resource signal}{584}{lost resource signal} +\entry{user signals}{585}{user signals} +\entry{signal messages}{585}{signal messages} +\entry{signal actions}{586}{signal actions} +\entry{establishing a handler}{586}{establishing a handler} +\entry{signal function}{586}{\code {signal} function} +\entry{default action for a signal}{587}{default action for a signal} +\entry{ignore action for a signal}{587}{ignore action for a signal} +\entry{sigaction function}{588}{\code {sigaction} function} +\entry{signal flags}{591}{signal flags} +\entry{flags for sigaction}{591}{flags for \code {sigaction}} +\entry{sigaction flags}{591}{\code {sigaction} flags} +\entry{initial signal actions}{592}{initial signal actions} +\entry{signal handler function}{592}{signal handler function} +\entry{non-local exit, from signal handler}{595}{non-local exit, from signal handler} +\entry{race conditions, relating to signals}{596}{race conditions, relating to signals} +\entry{handling multiple signals}{597}{handling multiple signals} +\entry{successive signals}{597}{successive signals} +\entry{merging of signals}{597}{merging of signals} +\entry{restrictions on signal handler functions}{599}{restrictions on signal handler functions} +\entry{volatile declarations}{600}{\code {volatile} declarations} +\entry{reentrant functions}{600}{reentrant functions} +\entry{EINTR, and restarting interrupted primitives}{604}{EINTR, and restarting interrupted primitives} +\entry{restarting interrupted primitives}{604}{restarting interrupted primitives} +\entry{interrupting primitives}{604}{interrupting primitives} +\entry{primitives, interrupting}{604}{primitives, interrupting} +\entry{sending signals}{604}{sending signals} +\entry{raising signals}{604}{raising signals} +\entry{signals, generating}{604}{signals, generating} +\entry{killing a process}{605}{killing a process} +\entry{interprocess communication, with signals}{607}{interprocess communication, with signals} +\entry{blocking signals}{608}{blocking signals} +\entry{signal set}{609}{signal set} +\entry{signal mask}{610}{signal mask} +\entry{process signal mask}{610}{process signal mask} +\entry{blocking signals, in a handler}{612}{blocking signals, in a handler} +\entry{pending signals, checking for}{613}{pending signals, checking for} +\entry{blocked signals, checking for}{613}{blocked signals, checking for} +\entry{checking for pending signals}{613}{checking for pending signals} +\entry{timing error in signal handling}{615}{timing error in signal handling} +\entry{waiting for a signal}{615}{waiting for a signal} +\entry{pause function}{615}{\code {pause} function} +\entry{process}{623}{process} +\entry{program}{623}{program} +\entry{address space}{623}{address space} +\entry{thread of control}{623}{thread of control} +\entry{program arguments}{623}{program arguments} +\entry{command line arguments}{623}{command line arguments} +\entry{arguments, to program}{623}{arguments, to program} +\entry{program startup}{623}{program startup} +\entry{startup of program}{623}{startup of program} +\entry{invocation of program}{623}{invocation of program} +\entry{main function}{623}{\code {main} function} +\entry{argc (program argument count)}{623}{argc (program argument count)} +\entry{argv (program argument vector)}{623}{argv (program argument vector)} +\entry{program argument syntax}{624}{program argument syntax} +\entry{syntax, for program arguments}{624}{syntax, for program arguments} +\entry{command argument syntax}{624}{command argument syntax} +\entry{long-named options}{624}{long-named options} +\entry{program arguments, parsing}{625}{program arguments, parsing} +\entry{command arguments, parsing}{625}{command arguments, parsing} +\entry{parsing program arguments}{625}{parsing program arguments} +\entry{argp (program argument parser)}{632}{argp (program argument parser)} +\entry{argument parsing with argp}{632}{argument parsing with argp} +\entry{option parsing with argp}{632}{option parsing with argp} +\entry{argp parser functions}{636}{argp parser functions} +\entry{usage messages, in argp}{639}{usage messages, in argp} +\entry{syntax error messages, in argp}{639}{syntax error messages, in argp} +\entry{error messages, in argp}{640}{error messages, in argp} +\entry{ARGP{\_}HELP{\_}FMT environment variable}{655}{ARGP_HELP_FMT environment variable} +\entry{environment variable}{658}{environment variable} +\entry{environment}{658}{environment} +\entry{environment access}{658}{environment access} +\entry{environment representation}{658}{environment representation} +\entry{standard environment variables}{660}{standard environment variables} +\entry{HOME environment variable}{660}{\code {HOME} environment variable} +\entry{home directory}{660}{home directory} +\entry{LOGNAME environment variable}{660}{\code {LOGNAME} environment variable} +\entry{PATH environment variable}{660}{\code {PATH} environment variable} +\entry{TERM environment variable}{661}{\code {TERM} environment variable} +\entry{TZ environment variable}{661}{\code {TZ} environment variable} +\entry{LANG environment variable}{661}{\code {LANG} environment variable} +\entry{LC{\_}ALL environment variable}{661}{\code {LC_ALL} environment variable} +\entry{LC{\_}COLLATE environment variable}{661}{\code {LC_COLLATE} environment variable} +\entry{LC{\_}CTYPE environment variable}{661}{\code {LC_CTYPE} environment variable} +\entry{LC{\_}MESSAGES environment variable}{661}{\code {LC_MESSAGES} environment variable} +\entry{LC{\_}MONETARY environment variable}{661}{\code {LC_MONETARY} environment variable} +\entry{LC{\_}NUMERIC environment variable}{661}{\code {LC_NUMERIC} environment variable} +\entry{LC{\_}TIME environment variable}{661}{\code {LC_TIME} environment variable} +\entry{NLSPATH environment variable}{661}{\code {NLSPATH} environment variable} +\entry{{\_}POSIX{\_}OPTION{\_}ORDER environment variable.}{662}{\code {_POSIX_OPTION_ORDER} environment variable.} +\entry{system call}{662}{system call} +\entry{kernel call}{662}{kernel call} +\entry{system call number}{662}{system call number} +\entry{errno}{662}{errno} +\entry{program termination}{663}{program termination} +\entry{process termination}{663}{process termination} +\entry{exit status value}{663}{exit status value} +\entry{exit status}{664}{exit status} +\entry{aborting a program}{666}{aborting a program} +\entry{process}{669}{process} +\entry{child process}{669}{child process} +\entry{parent process}{669}{parent process} +\entry{running a command}{669}{running a command} +\entry{process ID}{670}{process ID} +\entry{process lifetime}{670}{process lifetime} +\entry{creating a process}{670}{creating a process} +\entry{forking a process}{670}{forking a process} +\entry{child process}{670}{child process} +\entry{parent process}{670}{parent process} +\entry{process image}{670}{process image} +\entry{executing a file}{672}{executing a file} +\entry{exec functions}{672}{\code {exec} functions} +\entry{process completion}{674}{process completion} +\entry{waiting for completion of child process}{674}{waiting for completion of child process} +\entry{testing exit status of child process}{674}{testing exit status of child process} +\entry{process groups}{681}{process groups} +\entry{job control}{681}{job control} +\entry{job}{681}{job} +\entry{session}{681}{session} +\entry{shell}{681}{shell} +\entry{session}{681}{session} +\entry{session leader}{681}{session leader} +\entry{controlling terminal}{681}{controlling terminal} +\entry{foreground job}{681}{foreground job} +\entry{background job}{681}{background job} +\entry{stopped job}{682}{stopped job} +\entry{job control is optional}{682}{job control is optional} +\entry{controlling process}{682}{controlling process} +\entry{controlling terminal, access to}{682}{controlling terminal, access to} +\entry{SIGTTIN, from background job}{682}{\code {SIGTTIN}, from background job} +\entry{SIGTTOU, from background job}{683}{\code {SIGTTOU}, from background job} +\entry{orphaned process group}{683}{orphaned process group} +\entry{job control, enabling}{685}{job control, enabling} +\entry{subshell}{685}{subshell} +\entry{job control, enabling}{685}{job control, enabling} +\entry{launching jobs}{687}{launching jobs} +\entry{process group leader}{687}{process group leader} +\entry{process group ID}{687}{process group ID} +\entry{race conditions, relating to job control}{687}{race conditions, relating to job control} +\entry{foreground job, launching}{690}{foreground job, launching} +\entry{background job, launching}{691}{background job, launching} +\entry{stopped jobs, detecting}{691}{stopped jobs, detecting} +\entry{terminated jobs, detecting}{691}{terminated jobs, detecting} +\entry{SIGCHLD, handling of}{692}{\code {SIGCHLD}, handling of} +\entry{stopped jobs, continuing}{694}{stopped jobs, continuing} +\entry{process group functions}{696}{process group functions} +\entry{job control functions}{696}{job control functions} +\entry{controlling terminal, determining}{696}{controlling terminal, determining} +\entry{BSD compatibility library}{697}{BSD compatibility library} +\entry{Name Service Switch}{701}{Name Service Switch} +\entry{NSS}{701}{NSS} +\entry{databases}{701}{databases} +\entry{ethers}{701}{ethers} +\entry{group}{701}{group} +\entry{hosts}{701}{hosts} +\entry{netgroup}{701}{netgroup} +\entry{networks}{701}{networks} +\entry{protocols}{701}{protocols} +\entry{passwd}{701}{passwd} +\entry{rpc}{701}{rpc} +\entry{services}{701}{services} +\entry{shadow}{701}{shadow} +\entry{/etc/nsswitch.conf}{702}{\file {/etc/nsswitch.conf}} +\entry{nsswitch.conf}{702}{\file {nsswitch.conf}} +\entry{DNS server unavailable}{703}{DNS server unavailable} +\entry{nisplus, and completeness}{703}{nisplus, and completeness} +\entry{nisplus, and booting}{703}{nisplus, and booting} +\entry{bootstrapping, and services}{703}{bootstrapping, and services} +\entry{default value, and NSS}{704}{default value, and NSS} +\entry{optimizing NSS}{704}{optimizing NSS} +\entry{reentrant NSS functions}{705}{reentrant NSS functions} +\entry{login name}{711}{login name} +\entry{user name}{711}{user name} +\entry{user ID}{711}{user ID} +\entry{group name}{711}{group name} +\entry{group ID}{711}{group ID} +\entry{persona}{711}{persona} +\entry{effective user ID}{711}{effective user ID} +\entry{effective group ID}{711}{effective group ID} +\entry{supplementary group IDs}{711}{supplementary group IDs} +\entry{real user ID}{711}{real user ID} +\entry{real group ID}{711}{real group ID} +\entry{setuid programs}{712}{\code {setuid} programs} +\entry{saved set-user-ID}{712}{saved set-user-ID} +\entry{saved set-group-ID}{712}{saved set-group-ID} +\entry{{\_}POSIX{\_}SAVED{\_}IDS}{712}{\code {_POSIX_SAVED_IDS}} +\entry{login name, determining}{720}{login name, determining} +\entry{user ID, determining}{720}{user ID, determining} +\entry{user accounting database}{721}{user accounting database} +\entry{user database}{729}{user database} +\entry{password database}{729}{password database} +\entry{converting user ID to user name}{729}{converting user ID to user name} +\entry{converting user name to user ID}{729}{converting user name to user ID} +\entry{scanning the user list}{730}{scanning the user list} +\entry{group database}{732}{group database} +\entry{converting group name to group ID}{732}{converting group name to group ID} +\entry{converting group ID to group name}{732}{converting group ID to group name} +\entry{scanning the group list}{733}{scanning the group list} +\entry{Netgroup}{735}{Netgroup} +\entry{host name}{739}{host name} +\entry{DNS}{739}{DNS} +\entry{Domain Name System}{739}{Domain Name System} +\entry{hostname}{739}{hostname} +\entry{domain name}{739}{domain name} +\entry{FQDN}{739}{FQDN} +\entry{YP}{739}{YP} +\entry{NIS}{739}{NIS} +\entry{NIS domain name}{739}{NIS domain name} +\entry{YP domain name}{739}{YP domain name} +\entry{/etc/hostname}{740}{/etc/hostname} +\entry{NIS domain name}{740}{NIS domain name} +\entry{YP domain name}{740}{YP domain name} +\entry{NIS domain name}{740}{NIS domain name} +\entry{YP domain name}{740}{YP domain name} +\entry{POSIX capacity limits}{755}{POSIX capacity limits} +\entry{limits, POSIX}{755}{limits, POSIX} +\entry{capacity limits, POSIX}{755}{capacity limits, POSIX} +\entry{limits, program argument size}{755}{limits, program argument size} +\entry{limits, number of processes}{755}{limits, number of processes} +\entry{limits, number of open files}{755}{limits, number of open files} +\entry{limits, time zone name length}{755}{limits, time zone name length} +\entry{limits, number of supplementary group IDs}{756}{limits, number of supplementary group IDs} +\entry{POSIX optional features}{756}{POSIX optional features} +\entry{optional POSIX features}{756}{optional POSIX features} +\entry{limits, link count of files}{767}{limits, link count of files} +\entry{limits, terminal input queue}{768}{limits, terminal input queue} +\entry{limits, file name length}{768}{limits, file name length} +\entry{limits, pipe buffer size}{768}{limits, pipe buffer size} +\entry{consistency checking}{807}{consistency checking} +\entry{impossible events}{807}{impossible events} +\entry{assertions}{807}{assertions} +\entry{variable number of arguments}{808}{variable number of arguments} +\entry{variadic functions}{808}{variadic functions} +\entry{optional arguments}{808}{optional arguments} +\entry{function prototypes (variadic)}{809}{function prototypes (variadic)} +\entry{prototypes for variadic functions}{809}{prototypes for variadic functions} +\entry{variadic function prototypes}{809}{variadic function prototypes} +\entry{variadic function argument access}{810}{variadic function argument access} +\entry{arguments (variadic functions)}{810}{arguments (variadic functions)} +\entry{number of arguments passed}{810}{number of arguments passed} +\entry{how many arguments}{810}{how many arguments} +\entry{arguments, how many}{810}{arguments, how many} +\entry{variadic functions, calling}{811}{variadic functions, calling} +\entry{calling variadic functions}{811}{calling variadic functions} +\entry{declaring variadic functions}{811}{declaring variadic functions} +\entry{default argument promotions}{811}{default argument promotions} +\entry{argument promotion}{811}{argument promotion} +\entry{null pointer constant}{814}{null pointer constant} +\entry{integer type width}{816}{integer type width} +\entry{width of integer type}{816}{width of integer type} +\entry{type measurements, integer}{816}{type measurements, integer} +\entry{integer type range}{816}{integer type range} +\entry{range of integer type}{816}{range of integer type} +\entry{limits, integer types}{816}{limits, integer types} +\entry{floating type measurements}{818}{floating type measurements} +\entry{measurements of floating types}{818}{measurements of floating types} +\entry{type measurements, floating}{818}{type measurements, floating} +\entry{limits, floating types}{818}{limits, floating types} +\entry{sign (of floating point number)}{818}{sign (of floating point number)} +\entry{base (of floating point number)}{818}{base (of floating point number)} +\entry{radix (of floating point number)}{818}{radix (of floating point number)} +\entry{exponent (of floating point number)}{818}{exponent (of floating point number)} +\entry{bias (of floating point number exponent)}{818}{bias (of floating point number exponent)} +\entry{mantissa (of floating point number)}{818}{mantissa (of floating point number)} +\entry{significand (of floating point number)}{818}{significand (of floating point number)} +\entry{precision (of floating point number)}{818}{precision (of floating point number)} +\entry{hidden bit (of floating point number mantissa)}{818}{hidden bit (of floating point number mantissa)} +\entry{normalized floating point number}{819}{normalized floating point number} +\entry{IEEE floating point representation}{822}{IEEE floating point representation} +\entry{floating point, IEEE}{822}{floating point, IEEE} +\entry{configuring}{925}{configuring} +\entry{compiling}{925}{compiling} +\entry{installing}{927}{installing} +\entry{installation tools}{928}{installation tools} +\entry{tools, for installing library}{928}{tools, for installing library} +\entry{configurations, all supported}{930}{configurations, all supported} +\entry{upgrading from libc5}{931}{upgrading from libc5} +\entry{kernel header files}{931}{kernel header files} +\entry{reporting bugs}{931}{reporting bugs} +\entry{bugs, reporting}{931}{bugs, reporting} diff -adurpN glibc-2.2/manual/libc.cps glibc-2.2.1/manual/libc.cps --- glibc-2.2/manual/libc.cps Fri Jun 30 23:40:47 2000 +++ glibc-2.2.1/manual/libc.cps Sun Jan 7 09:11:17 2001 @@ -1,31 +1,31 @@ \initial {/} -\entry {/etc/hostname}{742} -\entry {\file {/etc/nsswitch.conf}}{704} +\entry {/etc/hostname}{740} +\entry {\file {/etc/nsswitch.conf}}{702} \initial {{\_}} \entry {__va_copy}{83} -\entry {\code {_POSIX_OPTION_ORDER} environment variable.}{663} -\entry {\code {_POSIX_SAVED_IDS}}{714} +\entry {\code {_POSIX_OPTION_ORDER} environment variable.}{662} +\entry {\code {_POSIX_SAVED_IDS}}{712} \initial {4} \entry {4.\var {n} BSD Unix}{3} \initial {A} -\entry {abort signal}{582} -\entry {aborting a program}{668} -\entry {absolute file name}{224} -\entry {absolute priority}{564} -\entry {absolute value functions}{505} -\entry {accepting connections}{408} -\entry {access permission for a file}{362} -\entry {access, testing for}{364} -\entry {accessing directories}{336} -\entry {address of socket}{383} -\entry {address space}{625} -\entry {alarm signal}{584} -\entry {alarms, setting}{552} +\entry {abort signal}{580} +\entry {aborting a program}{666} +\entry {absolute file name}{222} +\entry {absolute priority}{562} +\entry {absolute value functions}{503} +\entry {accepting connections}{406} +\entry {access permission for a file}{361} +\entry {access, testing for}{363} +\entry {accessing directories}{334} +\entry {address of socket}{381} +\entry {address space}{623} +\entry {alarm signal}{582} +\entry {alarms, setting}{550} \entry {alignment (in obstacks)}{57} \entry {alignment (with \code {malloc})}{38} \entry {\code {alloca} disadvantages}{61} \entry {\code {alloca} function}{60} -\entry {allocating pseudo-terminals}{453} +\entry {allocating pseudo-terminals}{451} \entry {allocation (obstacks)}{51} \entry {allocation debugging}{46} \entry {allocation hooks, for \code {malloc}}{41} @@ -34,408 +34,408 @@ \entry {allocation statistics}{44} \entry {alphabetic character}{67, 71} \entry {alphanumeric character}{68, 70} -\entry {append-access files}{223} -\entry {argc (program argument count)}{625} -\entry {argp (program argument parser)}{634} -\entry {argp parser functions}{638} -\entry {ARGP_HELP_FMT environment variable}{656} -\entry {argument parsing with argp}{634} -\entry {argument promotion}{813} -\entry {argument vectors, null-character separated}{100} -\entry {arguments (variadic functions)}{812} -\entry {arguments, how many}{812} -\entry {arguments, to program}{625} -\entry {argv (program argument vector)}{625} -\entry {argz vectors (string vectors)}{100} -\entry {arithmetic expansion}{215} +\entry {append-access files}{221} +\entry {argc (program argument count)}{623} +\entry {argp (program argument parser)}{632} +\entry {argp parser functions}{636} +\entry {ARGP_HELP_FMT environment variable}{655} +\entry {argument parsing with argp}{632} +\entry {argument promotion}{811} +\entry {argument vectors, null-character separated}{101} +\entry {arguments (variadic functions)}{810} +\entry {arguments, how many}{810} +\entry {arguments, to program}{623} +\entry {argv (program argument vector)}{623} +\entry {argz vectors (string vectors)}{101} +\entry {arithmetic expansion}{213} \entry {array comparison functions}{86} \entry {array copy functions}{79} -\entry {array search function}{193} -\entry {array sort function}{194} +\entry {array search function}{191} +\entry {array sort function}{192} \entry {ASCII character}{69} -\entry {assertions}{809} -\entry {attributes of a file}{352} +\entry {assertions}{807} +\entry {attributes of a file}{351} \entry {automatic freeing}{60} \entry {automatic memory allocation}{33} \entry {automatic storage class}{33} \entry {automatic storage with variable size}{60} \initial {B} -\entry {background job}{683} -\entry {background job, launching}{693} -\entry {base (of floating point number)}{820} -\entry {baud rate}{441} +\entry {background job}{681} +\entry {background job, launching}{691} +\entry {base (of floating point number)}{818} +\entry {baud rate}{439} \entry {Berkeley Unix}{3} -\entry {Bessel functions}{475} -\entry {bias (of floating point number exponent)}{820} -\entry {big-endian}{400} -\entry {binary I/O to a stream}{237} -\entry {binary search function (for arrays)}{193} -\entry {binary stream}{268} -\entry {binding a socket address}{383} +\entry {Bessel functions}{473} +\entry {bias (of floating point number exponent)}{818} +\entry {big-endian}{398} +\entry {binary I/O to a stream}{235} +\entry {binary search function (for arrays)}{191} +\entry {binary stream}{266} +\entry {binding a socket address}{381} \entry {blank character}{68, 73} -\entry {block I/O to a stream}{237} -\entry {blocked signals}{578} -\entry {blocked signals, checking for}{615} -\entry {blocking signals}{610} -\entry {blocking signals, in a handler}{614} -\entry {bootstrapping, and services}{705} -\entry {break condition, detecting}{435} -\entry {break condition, generating}{449} +\entry {block I/O to a stream}{235} +\entry {blocked signals}{576} +\entry {blocked signals, checking for}{613} +\entry {blocking signals}{608} +\entry {blocking signals, in a handler}{612} +\entry {bootstrapping, and services}{703} +\entry {break condition, detecting}{433} +\entry {break condition, generating}{447} \entry {breaking a string into tokens}{95} -\entry {broken pipe signal}{586} -\entry {broken-down time}{527, 530} -\entry {BSD compatibility library}{699} +\entry {broken pipe signal}{584} +\entry {broken-down time}{525, 528} +\entry {BSD compatibility library}{697} \entry {BSD compatibility library.}{8} \entry {BSD Unix}{3} -\entry {buffering of streams}{273} -\entry {buffering, controlling}{274} -\entry {bugs, reporting}{933} -\entry {bus error}{581} -\entry {butterfly}{512} -\entry {byte order conversion, for socket}{400} -\entry {byte stream}{381} +\entry {buffering of streams}{271} +\entry {buffering, controlling}{273} +\entry {bugs, reporting}{931} +\entry {bus error}{579} +\entry {butterfly}{510} +\entry {byte order conversion, for socket}{398} +\entry {byte stream}{379} \initial {C} -\entry {calendar time}{523} -\entry {calendar time and broken-down time}{530} -\entry {calendar, Gregorian}{527} -\entry {calling variadic functions}{813} -\entry {canonical input processing}{430} -\entry {capacity limits, POSIX}{757} -\entry {carrier detect}{437} +\entry {calendar time}{521} +\entry {calendar time and broken-down time}{528} +\entry {calendar, Gregorian}{525} +\entry {calling variadic functions}{811} +\entry {canonical input processing}{428} +\entry {capacity limits, POSIX}{755} +\entry {carrier detect}{435} \entry {case conversion of characters}{69} -\entry {catching signals}{578} +\entry {catching signals}{576} \entry {categories for locales}{150} -\entry {change working directory}{335} +\entry {change working directory}{333} \entry {changing the locale}{151} \entry {changing the size of a block (\code {malloc})}{36} \entry {changing the size of a block (obstacks)}{53} -\entry {channels}{297} +\entry {channels}{295} \entry {character case conversion}{69} \entry {character predicates}{67} \entry {character testing}{67} -\entry {checking for pending signals}{615} -\entry {child process}{527, 671, 672} -\entry {child process signal}{584} +\entry {checking for pending signals}{613} +\entry {child process}{525, 669, 670} +\entry {child process signal}{582} \entry {chunks}{58} -\entry {classes, floating-point}{494} +\entry {classes, floating-point}{492} \entry {classification of characters}{67} -\entry {cleaning up a stream}{298} -\entry {clearing terminal input queue}{450} -\entry {client}{406} -\entry {clock ticks}{525} -\entry {clock, high accuracy}{533} -\entry {close-on-exec (file descriptor flag)}{322} -\entry {closing a file descriptor}{287} -\entry {closing a socket}{405} -\entry {closing a stream}{231} +\entry {cleaning up a stream}{296} +\entry {clearing terminal input queue}{448} +\entry {client}{404} +\entry {clock ticks}{523} +\entry {clock, high accuracy}{531} +\entry {close-on-exec (file descriptor flag)}{320} +\entry {closing a file descriptor}{285} +\entry {closing a socket}{403} +\entry {closing a stream}{229} \entry {collating strings}{89} \entry {combining locales}{150} -\entry {command argument syntax}{626} -\entry {command arguments, parsing}{627} -\entry {command line arguments}{625} -\entry {command substitution}{215} -\entry {communication style (of a socket)}{381} +\entry {command argument syntax}{624} +\entry {command arguments, parsing}{625} +\entry {command line arguments}{623} +\entry {command substitution}{213} +\entry {communication style (of a socket)}{379} \entry {comparing strings and arrays}{86} -\entry {Comparison Function}{193} -\entry {compiling}{927} -\entry {complex exponentiation functions}{472} -\entry {complex logarithm functions}{472} -\entry {complex numbers}{513} -\entry {complex trigonometric functions}{467} +\entry {Comparison Function}{191} +\entry {compiling}{925} +\entry {complex exponentiation functions}{470} +\entry {complex logarithm functions}{470} +\entry {complex numbers}{511} +\entry {complex trigonometric functions}{465} \entry {concatenating strings}{79} -\entry {configurations, all supported}{932} -\entry {configuring}{927} -\entry {conjugate complex numbers}{513} -\entry {connecting a socket}{406} -\entry {connection}{406} -\entry {consistency checking}{809} +\entry {configurations, all supported}{930} +\entry {configuring}{925} +\entry {conjugate complex numbers}{511} +\entry {connecting a socket}{404} +\entry {connection}{404} +\entry {consistency checking}{807} \entry {consistency checking, of heap}{39} -\entry {constants}{32, 465} -\entry {continue signal}{585} +\entry {constants}{32, 463} +\entry {continue signal}{583} \entry {control character}{68, 71} -\entry {control operations on files}{319} -\entry {controlling process}{684} -\entry {controlling terminal}{683} -\entry {controlling terminal, access to}{684} -\entry {controlling terminal, determining}{698} -\entry {controlling terminal, setting}{325} -\entry {conversion specifications (\code {printf})}{238} -\entry {conversion specifications (\code {scanf})}{259} -\entry {converting byte order}{400} +\entry {control operations on files}{317} +\entry {controlling process}{682} +\entry {controlling terminal}{681} +\entry {controlling terminal, access to}{682} +\entry {controlling terminal, determining}{696} +\entry {controlling terminal, setting}{323} +\entry {conversion specifications (\code {printf})}{236} +\entry {conversion specifications (\code {scanf})}{258} +\entry {converting byte order}{398} \entry {converting case of characters}{69} -\entry {converting file descriptor to stream}{297} -\entry {converting floats to integers}{507} -\entry {converting group ID to group name}{734} -\entry {converting group name to group ID}{734} -\entry {converting host address to name}{395} -\entry {converting host name to address}{395} -\entry {converting network name to network number}{426} -\entry {converting network number to network name}{426} -\entry {converting port number to service name}{399} -\entry {converting service name to port number}{399} +\entry {converting file descriptor to stream}{295} +\entry {converting floats to integers}{505} +\entry {converting group ID to group name}{732} +\entry {converting group name to group ID}{732} +\entry {converting host address to name}{393} +\entry {converting host name to address}{393} +\entry {converting network name to network number}{424} +\entry {converting network number to network name}{424} +\entry {converting port number to service name}{397} +\entry {converting service name to port number}{397} \entry {converting string to collation order}{90} -\entry {converting strings to numbers}{514} -\entry {converting user ID to user name}{731} -\entry {converting user name to user ID}{731} -\entry {cookie, for custom stream}{279} +\entry {converting strings to numbers}{512} +\entry {converting user ID to user name}{729} +\entry {converting user name to user ID}{729} +\entry {cookie, for custom stream}{278} \entry {copy-on-write page fault}{64} \entry {copying strings and arrays}{79} -\entry {cpu priority}{563} -\entry {CPU time}{523, 525, 526} -\entry {create on open (file status flag)}{325} -\entry {creating a directory}{351} -\entry {creating a FIFO special file}{378} -\entry {creating a pipe}{375} -\entry {creating a pipe to a subprocess}{377} -\entry {creating a process}{672} -\entry {creating a socket}{404} -\entry {creating a socket pair}{405} -\entry {creating special files}{369} -\entry {cube root function}{471} +\entry {cpu priority}{561} +\entry {CPU time}{521, 523, 524} +\entry {create on open (file status flag)}{323} +\entry {creating a directory}{350} +\entry {creating a FIFO special file}{376} +\entry {creating a pipe}{373} +\entry {creating a pipe to a subprocess}{375} +\entry {creating a process}{670} +\entry {creating a socket}{402} +\entry {creating a socket pair}{403} +\entry {creating special files}{368} +\entry {cube root function}{469} \entry {currency symbols}{155} -\entry {current limit}{559} -\entry {current working directory}{335} -\entry {custom streams}{279} -\entry {customizing \code {printf}}{253} +\entry {current limit}{557} +\entry {current working directory}{333} +\entry {custom streams}{278} +\entry {customizing \code {printf}}{251} \initial {D} -\entry {data loss on sockets}{381} -\entry {databases}{703} -\entry {datagram socket}{419} -\entry {datagrams, transmitting}{419} -\entry {date}{523} -\entry {Daylight Saving Time}{531} +\entry {data loss on sockets}{379} +\entry {databases}{701} +\entry {datagram socket}{417} +\entry {datagrams, transmitting}{417} +\entry {date}{521} +\entry {Daylight Saving Time}{529} \entry {decimal digit character}{68} \entry {decimal-point separator}{154} \entry {declaration (compared to definition)}{4} -\entry {declaring variadic functions}{813} -\entry {decompose complex numbers}{513} -\entry {default action (for a signal)}{578} -\entry {default action for a signal}{589} -\entry {default argument promotions}{813} -\entry {default value, and NSS}{706} -\entry {defining new \code {printf} conversions}{253} +\entry {declaring variadic functions}{811} +\entry {decompose complex numbers}{511} +\entry {default action (for a signal)}{576} +\entry {default action for a signal}{587} +\entry {default argument promotions}{811} +\entry {default value, and NSS}{704} +\entry {defining new \code {printf} conversions}{251} \entry {definition (compared to declaration)}{4} -\entry {delayed suspend character}{445} -\entry {deleting a directory}{350} -\entry {deleting a file}{349} -\entry {delivery of signals}{578} -\entry {descriptors and streams}{297} +\entry {delayed suspend character}{443} +\entry {deleting a directory}{348} +\entry {deleting a file}{347} +\entry {delivery of signals}{576} +\entry {descriptors and streams}{295} \entry {digit character}{68, 71} -\entry {directories, accessing}{336} -\entry {directories, creating}{351} -\entry {directories, deleting}{350} -\entry {directory}{223} -\entry {directory entry}{223} -\entry {directory hierarchy}{343} -\entry {directory stream}{336} +\entry {directories, accessing}{334} +\entry {directories, creating}{350} +\entry {directories, deleting}{348} +\entry {directory}{221} +\entry {directory entry}{221} +\entry {directory hierarchy}{341} +\entry {directory stream}{334} \entry {disadvantages of \code {alloca}}{61} -\entry {DISCARD character}{446} -\entry {division by zero}{496} -\entry {DNS}{741} -\entry {DNS server unavailable}{705} -\entry {domain (of socket)}{381} -\entry {domain error}{501} -\entry {domain name}{741} -\entry {Domain Name System}{741} -\entry {dot notation, for Internet addresses}{391} -\entry {DSUSP character}{445} -\entry {duplicating file descriptors}{320} +\entry {DISCARD character}{444} +\entry {division by zero}{494} +\entry {DNS}{739} +\entry {DNS server unavailable}{703} +\entry {domain (of socket)}{379} +\entry {domain error}{499} +\entry {domain name}{739} +\entry {Domain Name System}{739} +\entry {dot notation, for Internet addresses}{389} +\entry {DSUSP character}{443} +\entry {duplicating file descriptors}{318} \entry {dynamic memory allocation}{33} \initial {E} \entry {EBCDIC}{107} -\entry {echo of terminal input}{439} -\entry {effective group ID}{713} -\entry {effective user ID}{713} +\entry {echo of terminal input}{437} +\entry {effective group ID}{711} +\entry {effective user ID}{711} \entry {efficiency and \code {malloc}}{38} \entry {efficiency and obstacks}{55} \entry {efficiency of chunks}{58} -\entry {EINTR, and restarting interrupted primitives}{606} -\entry {elapsed time}{523} -\entry {encryption}{97} -\entry {end of file, on a stream}{267} -\entry {end-of-file, on a file descriptor}{290} -\entry {environment}{660} -\entry {environment access}{660} -\entry {environment representation}{660} -\entry {environment variable}{660} -\entry {environment vectors, null-character separated}{100} -\entry {envz vectors (environment vectors)}{100} -\entry {EOF character}{443} -\entry {EOL character}{443} -\entry {EOL2 character}{443} -\entry {epoch}{528} -\entry {ERASE character}{444} -\entry {errno}{664} +\entry {EINTR, and restarting interrupted primitives}{604} +\entry {elapsed time}{521} +\entry {encryption}{99} +\entry {end of file, on a stream}{265} +\entry {end-of-file, on a file descriptor}{288} +\entry {environment}{658} +\entry {environment access}{658} +\entry {environment representation}{658} +\entry {environment variable}{658} +\entry {environment vectors, null-character separated}{101} +\entry {envz vectors (environment vectors)}{101} +\entry {EOF character}{441} +\entry {EOL character}{441} +\entry {EOL2 character}{441} +\entry {epoch}{526} +\entry {ERASE character}{442} +\entry {errno}{662} \entry {error codes}{15} -\entry {error messages, in argp}{641} +\entry {error messages, in argp}{640} \entry {error reporting}{15} -\entry {errors, mathematical}{501} -\entry {establishing a handler}{588} -\entry {ethers}{703} -\entry {EUC}{107} +\entry {errors, mathematical}{499} +\entry {establishing a handler}{586} +\entry {ethers}{701} +\entry {EUC}{108} \entry {EUC-JP}{135} -\entry {exception}{496, 580} -\entry {exclusive lock}{328} -\entry {\code {exec} functions}{674} +\entry {exception}{494, 578} +\entry {exclusive lock}{326} +\entry {\code {exec} functions}{672} \entry {execing a program}{32} \entry {executable}{32} -\entry {executing a file}{674} -\entry {exit status}{666} -\entry {exit status value}{665} +\entry {executing a file}{672} +\entry {exit status}{664} +\entry {exit status value}{663} \entry {exiting a program}{32} -\entry {expansion of shell words}{214} -\entry {exponent (of floating point number)}{820} -\entry {exponentiation functions}{469} -\entry {extending \code {printf}}{253} -\entry {extracting file descriptor from stream}{297} +\entry {expansion of shell words}{212} +\entry {exponent (of floating point number)}{818} +\entry {exponentiation functions}{467} +\entry {extending \code {printf}}{251} +\entry {extracting file descriptor from stream}{295} \initial {F} -\entry {\code {fcntl} function}{319} +\entry {\code {fcntl} function}{317} \entry {feature test macros}{7} -\entry {field splitting}{215} -\entry {FIFO special file}{375} -\entry {file access permission}{362} -\entry {file access time}{366} -\entry {file attribute modification time}{366} -\entry {file attributes}{352} -\entry {file creation mask}{362} -\entry {file descriptor flags}{322} -\entry {file descriptor sets, for \code {select}}{304} -\entry {file descriptors, standard}{297} -\entry {file locks}{328} -\entry {file modification time}{366} -\entry {file name}{223} -\entry {file name component}{223} -\entry {file name errors}{224} -\entry {file name resolution}{224} -\entry {file name translation flags}{324} -\entry {file names, multiple}{347} -\entry {file owner}{359} -\entry {file permission bits}{360} -\entry {file pointer}{227} -\entry {file position}{222} -\entry {file positioning on a file descriptor}{294} -\entry {file positioning on a stream}{269} -\entry {file status flags}{323} +\entry {field splitting}{213} +\entry {FIFO special file}{373} +\entry {file access permission}{361} +\entry {file access time}{364} +\entry {file attribute modification time}{364} +\entry {file attributes}{351} +\entry {file creation mask}{361} +\entry {file descriptor flags}{320} +\entry {file descriptor sets, for \code {select}}{302} +\entry {file descriptors, standard}{295} +\entry {file locks}{326} +\entry {file modification time}{364} +\entry {file name}{221} +\entry {file name component}{221} +\entry {file name errors}{222} +\entry {file name resolution}{222} +\entry {file name translation flags}{322} +\entry {file names, multiple}{345} +\entry {file owner}{358} +\entry {file permission bits}{359} +\entry {file pointer}{225} +\entry {file position}{220} +\entry {file positioning on a file descriptor}{292} +\entry {file positioning on a stream}{267} +\entry {file status flags}{321} \entry {files, accessing}{32} -\entry {filtering i/o through subprocess}{377} -\entry {flag character (\code {printf})}{240} -\entry {flag character (\code {scanf})}{260} -\entry {flags for \code {sigaction}}{593} -\entry {flags, file name translation}{324} -\entry {flags, open-time action}{324} -\entry {floating point}{494} -\entry {floating point, IEEE}{824} -\entry {floating type measurements}{820} -\entry {floating-point classes}{494} -\entry {floating-point exception}{580} -\entry {flow control, terminal}{450} -\entry {flushing a stream}{274} -\entry {flushing terminal output queue}{449} -\entry {foreground job}{683} -\entry {foreground job, launching}{692} -\entry {forking a process}{672} -\entry {format string, for \code {printf}}{238} -\entry {format string, for \code {scanf}}{259} -\entry {formatted input from a stream}{259} -\entry {formatted messages}{281} -\entry {formatted output to a stream}{238} -\entry {FP arithmetic}{510} -\entry {FQDN}{741} +\entry {filtering i/o through subprocess}{375} +\entry {flag character (\code {printf})}{238} +\entry {flag character (\code {scanf})}{259} +\entry {flags for \code {sigaction}}{591} +\entry {flags, file name translation}{322} +\entry {flags, open-time action}{322} +\entry {floating point}{492} +\entry {floating point, IEEE}{822} +\entry {floating type measurements}{818} +\entry {floating-point classes}{492} +\entry {floating-point exception}{578} +\entry {flow control, terminal}{448} +\entry {flushing a stream}{272} +\entry {flushing terminal output queue}{447} +\entry {foreground job}{681} +\entry {foreground job, launching}{690} +\entry {forking a process}{670} +\entry {format string, for \code {printf}}{236} +\entry {format string, for \code {scanf}}{257} +\entry {formatted input from a stream}{257} +\entry {formatted messages}{280} +\entry {formatted output to a stream}{236} +\entry {FP arithmetic}{508} +\entry {FQDN}{739} \entry {frame, real memory}{31} \entry {freeing (obstacks)}{52} \entry {freeing memory}{32} \entry {freeing memory allocated with \code {malloc}}{35} -\entry {fully buffered stream}{273} -\entry {function prototypes (variadic)}{811} +\entry {fully buffered stream}{272} +\entry {function prototypes (variadic)}{809} \initial {G} -\entry {gamma function}{475} -\entry {gcvt_r}{520} +\entry {gamma function}{473} +\entry {gcvt_r}{518} \entry {gencat}{172} -\entry {generation of signals}{578} -\entry {generic i/o control operations}{332} -\entry {globbing}{204} +\entry {generation of signals}{576} +\entry {generic i/o control operations}{330} +\entry {globbing}{202} \entry {graphic character}{68, 71} -\entry {Gregorian calendar}{527} -\entry {group}{703} -\entry {group database}{734} -\entry {group ID}{713} -\entry {group name}{713} -\entry {group owner of a file}{359} +\entry {Gregorian calendar}{525} +\entry {group}{701} +\entry {group database}{732} +\entry {group ID}{711} +\entry {group name}{711} +\entry {group owner of a file}{358} \entry {grouping of digits}{154} \entry {growing objects (in obstacks)}{53} \initial {H} -\entry {handling multiple signals}{599} -\entry {hangup signal}{583} -\entry {hard limit}{559} -\entry {hard link}{347} +\entry {handling multiple signals}{597} +\entry {hangup signal}{581} +\entry {hard limit}{557} +\entry {hard link}{345} \entry {header files}{4} \entry {heap consistency checking}{39} \entry {heap, dynamic allocation from}{34} \entry {heap, freeing memory from}{35} \entry {hexadecimal digit character}{68, 73} -\entry {hidden bit (of floating point number mantissa)}{820} -\entry {hierarchy, directory}{343} -\entry {high-priority data}{416} -\entry {high-resolution time}{527} -\entry {holes in files}{295} -\entry {home directory}{662} -\entry {\code {HOME} environment variable}{662} -\entry {hook functions (of custom streams)}{280} -\entry {host address, Internet}{391} -\entry {host name}{741} -\entry {hostname}{741} -\entry {hosts}{703} -\entry {hosts database}{395} -\entry {how many arguments}{812} -\entry {hyperbolic functions}{473} +\entry {hidden bit (of floating point number mantissa)}{818} +\entry {hierarchy, directory}{341} +\entry {high-priority data}{414} +\entry {high-resolution time}{525} +\entry {holes in files}{293} +\entry {home directory}{660} +\entry {\code {HOME} environment variable}{660} +\entry {hook functions (of custom streams)}{279} +\entry {host address, Internet}{389} +\entry {host name}{739} +\entry {hostname}{739} +\entry {hosts}{701} +\entry {hosts database}{393} +\entry {how many arguments}{810} +\entry {hyperbolic functions}{471} \initial {I} -\entry {identifying terminals}{429} -\entry {IEEE 754}{494} -\entry {IEEE floating point}{494} -\entry {IEEE floating point representation}{824} +\entry {identifying terminals}{427} +\entry {IEEE 754}{492} +\entry {IEEE floating point}{492} +\entry {IEEE floating point representation}{822} \entry {IEEE Std 1003.1}{2} \entry {IEEE Std 1003.2}{2} -\entry {ignore action for a signal}{589} -\entry {illegal instruction}{581} -\entry {impossible events}{809} -\entry {independent channels}{298} -\entry {inexact exception}{496} -\entry {infinity}{498} -\entry {initial signal actions}{594} -\entry {inode number}{355} -\entry {input available signal}{584} -\entry {input conversions, for \code {scanf}}{261} -\entry {input from multiple files}{303} -\entry {installation tools}{930} -\entry {installing}{929} -\entry {integer}{491} -\entry {integer division functions}{492} -\entry {integer type range}{818} -\entry {integer type width}{818} -\entry {interactive signals, from terminal}{440} -\entry {interactive stop signal}{585} +\entry {ignore action for a signal}{587} +\entry {illegal instruction}{579} +\entry {impossible events}{807} +\entry {independent channels}{296} +\entry {inexact exception}{494} +\entry {infinity}{496} +\entry {initial signal actions}{592} +\entry {inode number}{354} +\entry {input available signal}{582} +\entry {input conversions, for \code {scanf}}{259} +\entry {input from multiple files}{301} +\entry {installation tools}{928} +\entry {installing}{927} +\entry {integer}{489} +\entry {integer division functions}{490} +\entry {integer type range}{816} +\entry {integer type width}{816} +\entry {interactive signals, from terminal}{438} +\entry {interactive stop signal}{583} \entry {internal representation}{105} \entry {internationalization}{149} -\entry {Internet host address}{391} -\entry {Internet namespace, for sockets}{389} -\entry {interprocess communication, with FIFO}{378} -\entry {interprocess communication, with pipes}{375} -\entry {interprocess communication, with signals}{609} -\entry {interprocess communication, with sockets}{381} -\entry {interrupt character}{445} -\entry {interrupt signal}{582} -\entry {interrupt-driven input}{331} -\entry {interrupting primitives}{606} -\entry {interval}{523} -\entry {interval timer, setting}{552} -\entry {INTR character}{445} -\entry {invalid exception}{496} -\entry {inverse complex hyperbolic functions}{474} -\entry {inverse complex trigonometric functions}{468} -\entry {inverse hyperbolic functions}{474} -\entry {inverse trigonometric functions}{468} -\entry {invocation of program}{625} -\entry {IOCTLs}{332} +\entry {Internet host address}{389} +\entry {Internet namespace, for sockets}{387} +\entry {interprocess communication, with FIFO}{376} +\entry {interprocess communication, with pipes}{373} +\entry {interprocess communication, with signals}{607} +\entry {interprocess communication, with sockets}{379} +\entry {interrupt character}{443} +\entry {interrupt signal}{580} +\entry {interrupt-driven input}{329} +\entry {interrupting primitives}{604} +\entry {interval}{521} +\entry {interval timer, setting}{550} +\entry {INTR character}{443} +\entry {invalid exception}{494} +\entry {inverse complex hyperbolic functions}{472} +\entry {inverse complex trigonometric functions}{466} +\entry {inverse hyperbolic functions}{472} +\entry {inverse trigonometric functions}{466} +\entry {invocation of program}{623} +\entry {IOCTLs}{330} \entry {ISO 10646}{105} \entry {ISO 2022}{107} \entry {ISO 6937}{108} @@ -444,419 +444,419 @@ \entry {ISO/IEC 9945-1}{2} \entry {ISO/IEC 9945-2}{2} \initial {J} -\entry {job}{683} -\entry {job control}{683} -\entry {job control functions}{698} -\entry {job control is optional}{684} -\entry {job control signals}{584} -\entry {job control, enabling}{687} +\entry {job}{681} +\entry {job control}{681} +\entry {job control functions}{696} +\entry {job control is optional}{682} +\entry {job control signals}{582} +\entry {job control, enabling}{685} \initial {K} -\entry {Kermit the frog}{197} -\entry {kernel call}{663} -\entry {kernel header files}{933} -\entry {KILL character}{444} -\entry {kill signal}{583} -\entry {killing a process}{607} +\entry {Kermit the frog}{195} +\entry {kernel call}{662} +\entry {kernel header files}{931} +\entry {KILL character}{442} +\entry {kill signal}{581} +\entry {killing a process}{605} \initial {L} \entry {LANG environment variable}{169} -\entry {\code {LANG} environment variable}{663} -\entry {launching jobs}{689} +\entry {\code {LANG} environment variable}{661} +\entry {launching jobs}{687} \entry {LC_ALL environment variable}{169} -\entry {\code {LC_ALL} environment variable}{663} -\entry {\code {LC_COLLATE} environment variable}{663} -\entry {\code {LC_CTYPE} environment variable}{663} +\entry {\code {LC_ALL} environment variable}{661} +\entry {\code {LC_COLLATE} environment variable}{661} +\entry {\code {LC_CTYPE} environment variable}{661} \entry {LC_MESSAGES environment variable}{169} -\entry {\code {LC_MESSAGES} environment variable}{663} -\entry {\code {LC_MONETARY} environment variable}{663} -\entry {\code {LC_NUMERIC} environment variable}{663} -\entry {\code {LC_TIME} environment variable}{663} -\entry {leap second}{531} +\entry {\code {LC_MESSAGES} environment variable}{661} +\entry {\code {LC_MONETARY} environment variable}{661} +\entry {\code {LC_NUMERIC} environment variable}{661} +\entry {\code {LC_TIME} environment variable}{661} +\entry {leap second}{529} \entry {length of string}{77} -\entry {level, for socket options}{424} +\entry {level, for socket options}{422} \entry {library}{1} -\entry {limit}{559} -\entry {limits on resource usage}{559} -\entry {limits, file name length}{770} -\entry {limits, floating types}{820} -\entry {limits, integer types}{818} -\entry {limits, link count of files}{769} -\entry {limits, number of open files}{757} -\entry {limits, number of processes}{757} -\entry {limits, number of supplementary group IDs}{758} -\entry {limits, pipe buffer size}{770} -\entry {limits, POSIX}{757} -\entry {limits, program argument size}{757} -\entry {limits, terminal input queue}{770} -\entry {limits, time zone name length}{757} -\entry {line buffered stream}{273} -\entry {line speed}{441} -\entry {lines (in a text file)}{268} -\entry {link}{223} -\entry {link, hard}{347} -\entry {link, soft}{348} -\entry {link, symbolic}{348} -\entry {linked channels}{298} -\entry {listening (sockets)}{408} +\entry {limit}{557} +\entry {limits on resource usage}{557} +\entry {limits, file name length}{768} +\entry {limits, floating types}{818} +\entry {limits, integer types}{816} +\entry {limits, link count of files}{767} +\entry {limits, number of open files}{755} +\entry {limits, number of processes}{755} +\entry {limits, number of supplementary group IDs}{756} +\entry {limits, pipe buffer size}{768} +\entry {limits, POSIX}{755} +\entry {limits, program argument size}{755} +\entry {limits, terminal input queue}{768} +\entry {limits, time zone name length}{755} +\entry {line buffered stream}{272} +\entry {line speed}{439} +\entry {lines (in a text file)}{267} +\entry {link}{221} +\entry {link, hard}{345} +\entry {link, soft}{346} +\entry {link, symbolic}{346} +\entry {linked channels}{296} +\entry {listening (sockets)}{406} \entry {literals}{32} -\entry {little-endian}{400} -\entry {LNEXT character}{446} -\entry {local namespace, for sockets}{387} -\entry {local network address number}{391} -\entry {local time}{527} +\entry {little-endian}{398} +\entry {LNEXT character}{444} +\entry {local namespace, for sockets}{385} +\entry {local network address number}{389} +\entry {local time}{525} \entry {locale categories}{150} \entry {locale, changing}{151} \entry {locales}{149} -\entry {locales, parsing numbers and}{517} +\entry {locales, parsing numbers and}{515} \entry {locking pages}{63} -\entry {logarithm functions}{469} -\entry {login name}{713} -\entry {login name, determining}{722} -\entry {\code {LOGNAME} environment variable}{662} -\entry {long jumps}{573} -\entry {long-named options}{626} +\entry {logarithm functions}{467} +\entry {login name}{711} +\entry {login name, determining}{720} +\entry {\code {LOGNAME} environment variable}{660} +\entry {long jumps}{571} +\entry {long-named options}{624} \entry {longjmp}{61} -\entry {loss of data on sockets}{381} -\entry {lost resource signal}{586} +\entry {loss of data on sockets}{379} +\entry {lost resource signal}{584} \entry {lower-case character}{67, 72} \initial {M} \entry {macros}{53} -\entry {\code {main} function}{625} +\entry {\code {main} function}{623} \entry {malloc debugger}{46} \entry {\code {malloc} function}{34} -\entry {mantissa (of floating point number)}{820} -\entry {matching failure, in \code {scanf}}{259} -\entry {math errors}{477} -\entry {mathematical constants}{465} -\entry {maximum}{512} -\entry {maximum field width (\code {scanf})}{261} -\entry {maximum limit}{559} -\entry {maximum possible integer}{492} -\entry {measurements of floating types}{820} +\entry {mantissa (of floating point number)}{818} +\entry {matching failure, in \code {scanf}}{258} +\entry {math errors}{475} +\entry {mathematical constants}{463} +\entry {maximum}{510} +\entry {maximum field width (\code {scanf})}{259} +\entry {maximum limit}{557} +\entry {maximum possible integer}{490} +\entry {measurements of floating types}{818} \entry {memory allocation}{31} \entry {memory lock}{63} \entry {memory mapped file}{32} \entry {memory mapped I/O}{32} -\entry {merging of signals}{599} -\entry {MIN termios slot}{447} -\entry {minimum}{512} -\entry {minimum field width (\code {printf})}{240} -\entry {mininum possible integer}{492} -\entry {mixing descriptors and streams}{297} -\entry {modem disconnect}{437} -\entry {modem status lines}{437} +\entry {merging of signals}{597} +\entry {MIN termios slot}{445} +\entry {minimum}{510} +\entry {minimum field width (\code {printf})}{238} +\entry {mininum possible integer}{490} +\entry {mixing descriptors and streams}{295} +\entry {modem disconnect}{435} +\entry {modem status lines}{435} \entry {monetary value formatting}{154} \entry {multibyte character}{107} -\entry {multiple names for one file}{347} -\entry {multiplexing input}{303} -\entry {multiply-add}{512} +\entry {multiple names for one file}{345} +\entry {multiplexing input}{301} +\entry {multiply-add}{510} \initial {N} \entry {name of running program}{28} -\entry {name of socket}{383} -\entry {Name Service Switch}{703} +\entry {name of socket}{381} +\entry {Name Service Switch}{701} \entry {name space}{5} -\entry {names of signals}{579} -\entry {namespace (of socket)}{381} -\entry {NaN}{498, 511} -\entry {netgroup}{703} -\entry {Netgroup}{737} -\entry {network byte order}{400} -\entry {network number}{391} -\entry {network protocol}{381} -\entry {networks}{703} -\entry {networks database}{426} -\entry {NIS}{741} -\entry {NIS domain name}{741, 742} -\entry {nisplus, and booting}{705} -\entry {nisplus, and completeness}{705} +\entry {names of signals}{577} +\entry {namespace (of socket)}{379} +\entry {NaN}{496, 509} +\entry {netgroup}{701} +\entry {Netgroup}{735} +\entry {network byte order}{398} +\entry {network number}{389} +\entry {network protocol}{379} +\entry {networks}{701} +\entry {networks database}{424} +\entry {NIS}{739} +\entry {NIS domain name}{739, 740} +\entry {nisplus, and booting}{703} +\entry {nisplus, and completeness}{703} \entry {NLSPATH environment variable}{168} -\entry {\code {NLSPATH} environment variable}{663} -\entry {non-blocking open}{325} -\entry {non-local exit, from signal handler}{597} -\entry {non-local exits}{573} -\entry {noncanonical input processing}{430} -\entry {normalization functions (floating-point)}{506} -\entry {normalized floating point number}{821} -\entry {not a number}{498} -\entry {NSS}{703} -\entry {\file {nsswitch.conf}}{704} +\entry {\code {NLSPATH} environment variable}{661} +\entry {non-blocking open}{323} +\entry {non-local exit, from signal handler}{595} +\entry {non-local exits}{571} +\entry {noncanonical input processing}{428} +\entry {normalization functions (floating-point)}{504} +\entry {normalized floating point number}{819} +\entry {not a number}{496} +\entry {NSS}{701} +\entry {\file {nsswitch.conf}}{702} \entry {null character}{77} -\entry {null pointer constant}{816} -\entry {number of arguments passed}{812} -\entry {number syntax, parsing}{514} +\entry {null pointer constant}{814} +\entry {number of arguments passed}{810} +\entry {number syntax, parsing}{512} \entry {numeric value formatting}{154} \initial {O} \entry {obstack status}{57} \entry {obstacks}{49} -\entry {open-time action flags}{324} -\entry {opening a file}{221} -\entry {opening a file descriptor}{287} -\entry {opening a pipe}{375} -\entry {opening a pseudo-terminal pair}{455} -\entry {opening a socket}{404} -\entry {opening a socket pair}{405} -\entry {opening a stream}{228} -\entry {Optimization}{489} -\entry {optimizing NSS}{706} -\entry {option parsing with argp}{634} -\entry {optional arguments}{810} -\entry {optional POSIX features}{758} -\entry {orientation, stream}{229} -\entry {orphaned process group}{685} -\entry {out-of-band data}{416} -\entry {output conversions, for \code {printf}}{240} -\entry {output possible signal}{584} -\entry {overflow exception}{496} -\entry {owner of a file}{359} +\entry {open-time action flags}{322} +\entry {opening a file}{219} +\entry {opening a file descriptor}{285} +\entry {opening a pipe}{373} +\entry {opening a pseudo-terminal pair}{453} +\entry {opening a socket}{402} +\entry {opening a socket pair}{403} +\entry {opening a stream}{226} +\entry {Optimization}{488} +\entry {optimizing NSS}{704} +\entry {option parsing with argp}{632} +\entry {optional arguments}{808} +\entry {optional POSIX features}{756} +\entry {orientation, stream}{227} +\entry {orphaned process group}{683} +\entry {out-of-band data}{414} +\entry {output conversions, for \code {printf}}{238} +\entry {output possible signal}{582} +\entry {overflow exception}{494} +\entry {owner of a file}{358} \initial {P} -\entry {packet}{381} +\entry {packet}{379} \entry {page boundary}{38} \entry {page fault}{31} \entry {page fault, copy-on-write}{64} \entry {page frame}{31} \entry {page, virtual memory}{31} \entry {paging}{31, 63} -\entry {parent directory}{224} -\entry {parent process}{671, 672} -\entry {parity checking}{434} -\entry {parsing a template string}{250} -\entry {parsing numbers (in formatted input)}{514} -\entry {parsing numbers and locales}{517} -\entry {parsing program arguments}{627} +\entry {parent directory}{222} +\entry {parent process}{669, 670} +\entry {parity checking}{432} +\entry {parsing a template string}{248} +\entry {parsing numbers (in formatted input)}{512} +\entry {parsing numbers and locales}{515} +\entry {parsing program arguments}{625} \entry {parsing tokens from a string}{95} -\entry {passwd}{703} -\entry {password database}{731} -\entry {\code {PATH} environment variable}{662} -\entry {\code {pause} function}{617} -\entry {peeking at input}{235} -\entry {pending signals}{578} -\entry {pending signals, checking for}{615} -\entry {period of time}{523} -\entry {permission to access a file}{362} -\entry {persona}{713} -\entry {pi (trigonometric constant)}{466} -\entry {pipe}{375} -\entry {pipe signal}{586} -\entry {pipe to a subprocess}{377} -\entry {port number}{399} -\entry {positioning a file descriptor}{294} -\entry {positioning a stream}{269} -\entry {positive difference}{512} +\entry {passwd}{701} +\entry {password database}{729} +\entry {\code {PATH} environment variable}{660} +\entry {\code {pause} function}{615} +\entry {peeking at input}{233} +\entry {pending signals}{576} +\entry {pending signals, checking for}{613} +\entry {period of time}{521} +\entry {permission to access a file}{361} +\entry {persona}{711} +\entry {pi (trigonometric constant)}{464} +\entry {pipe}{373} +\entry {pipe signal}{584} +\entry {pipe to a subprocess}{375} +\entry {port number}{396} +\entry {positioning a file descriptor}{292} +\entry {positioning a stream}{267} +\entry {positive difference}{510} \entry {POSIX}{2} -\entry {POSIX capacity limits}{757} -\entry {POSIX optional features}{758} +\entry {POSIX capacity limits}{755} +\entry {POSIX optional features}{756} \entry {POSIX.1}{2} \entry {POSIX.2}{2} -\entry {power functions}{469} -\entry {precision (of floating point number)}{820} -\entry {precision (\code {printf})}{240} +\entry {power functions}{467} +\entry {precision (of floating point number)}{818} +\entry {precision (\code {printf})}{238} \entry {predicates on arrays}{86} \entry {predicates on characters}{67} \entry {predicates on strings}{86} -\entry {preemptive scheduling}{564} -\entry {primitives, interrupting}{606} +\entry {preemptive scheduling}{562} +\entry {primitives, interrupting}{604} \entry {printing character}{68, 72} -\entry {priority of a process}{563} -\entry {priority, absolute}{564} -\entry {process}{625, 671} -\entry {process completion}{676} -\entry {process group functions}{698} -\entry {process group ID}{689} -\entry {process group leader}{689} -\entry {process groups}{683} -\entry {process ID}{672} -\entry {process image}{672} -\entry {process lifetime}{672} -\entry {process priority}{563} -\entry {process signal mask}{612} -\entry {process termination}{665} -\entry {processor time}{523, 526} -\entry {profiling alarm signal}{584} -\entry {profiling timer}{553} -\entry {program}{625} -\entry {program argument syntax}{626} -\entry {program arguments}{625} -\entry {program arguments, parsing}{627} -\entry {program error signals}{579} +\entry {priority of a process}{561} +\entry {priority, absolute}{562} +\entry {process}{623, 669} +\entry {process completion}{674} +\entry {process group functions}{696} +\entry {process group ID}{687} +\entry {process group leader}{687} +\entry {process groups}{681} +\entry {process ID}{670} +\entry {process image}{670} +\entry {process lifetime}{670} +\entry {process priority}{561} +\entry {process signal mask}{610} +\entry {process termination}{663} +\entry {processor time}{521, 524} +\entry {profiling alarm signal}{582} +\entry {profiling timer}{551} +\entry {program}{623} +\entry {program argument syntax}{624} +\entry {program arguments}{623} +\entry {program arguments, parsing}{625} +\entry {program error signals}{577} \entry {program name}{28} -\entry {program startup}{625} -\entry {program termination}{665} -\entry {program termination signals}{582} -\entry {programming your own streams}{279} -\entry {project complex numbers}{513} -\entry {protocol (of socket)}{381} -\entry {protocol family}{381} -\entry {protocols}{703} -\entry {protocols database}{401} -\entry {prototypes for variadic functions}{811} -\entry {pseudo-random numbers}{483} -\entry {pseudo-terminals}{452} +\entry {program startup}{623} +\entry {program termination}{663} +\entry {program termination signals}{580} +\entry {programming your own streams}{278} +\entry {project complex numbers}{511} +\entry {protocol (of socket)}{379} +\entry {protocol family}{379} +\entry {protocols}{701} +\entry {protocols database}{399} +\entry {prototypes for variadic functions}{809} +\entry {pseudo-random numbers}{481} +\entry {pseudo-terminals}{450} \entry {punctuation character}{68, 72} -\entry {pushing input back}{235} +\entry {pushing input back}{233} \initial {Q} -\entry {quick sort function (for arrays)}{194} -\entry {QUIT character}{445} -\entry {quit signal}{583} -\entry {quote removal}{215} +\entry {quick sort function (for arrays)}{192} +\entry {QUIT character}{443} +\entry {quit signal}{581} +\entry {quote removal}{213} \initial {R} -\entry {race conditions, relating to job control}{689} -\entry {race conditions, relating to signals}{598} -\entry {radix (of floating point number)}{820} -\entry {raising signals}{606} -\entry {random numbers}{483} -\entry {random-access files}{222} -\entry {range error}{501} -\entry {range of integer type}{818} -\entry {read lock}{328} -\entry {reading from a directory}{336} -\entry {reading from a file descriptor}{290} -\entry {reading from a socket}{410} -\entry {reading from a stream, by blocks}{237} -\entry {reading from a stream, by characters}{233} -\entry {reading from a stream, formatted}{259} -\entry {ready to run}{564} -\entry {real group ID}{713} -\entry {real user ID}{713} -\entry {real-time timer}{552} -\entry {realtime CPU scheduling}{564} +\entry {race conditions, relating to job control}{687} +\entry {race conditions, relating to signals}{596} +\entry {radix (of floating point number)}{818} +\entry {raising signals}{604} +\entry {random numbers}{481} +\entry {random-access files}{220} +\entry {range error}{499} +\entry {range of integer type}{816} +\entry {read lock}{326} +\entry {reading from a directory}{334} +\entry {reading from a file descriptor}{288} +\entry {reading from a socket}{408} +\entry {reading from a stream, by blocks}{235} +\entry {reading from a stream, by characters}{231} +\entry {reading from a stream, formatted}{257} +\entry {ready to run}{562} +\entry {real group ID}{711} +\entry {real user ID}{711} +\entry {real-time timer}{550} +\entry {realtime CPU scheduling}{562} \entry {realtime processing}{63} -\entry {receiving datagrams}{419} -\entry {record locking}{328} -\entry {redirecting input and output}{320} -\entry {reentrant functions}{602} -\entry {reentrant NSS functions}{707} -\entry {relative file name}{224} -\entry {removal of quotes}{215} -\entry {removing a file}{349} +\entry {receiving datagrams}{417} +\entry {record locking}{326} +\entry {redirecting input and output}{318} +\entry {reentrant functions}{600} +\entry {reentrant NSS functions}{705} +\entry {relative file name}{222} +\entry {removal of quotes}{213} +\entry {removing a file}{347} \entry {removing macros that shadow functions}{5} -\entry {renaming a file}{350} -\entry {reporting bugs}{933} +\entry {renaming a file}{349} +\entry {reporting bugs}{931} \entry {reporting errors}{15} -\entry {REPRINT character}{444} +\entry {REPRINT character}{442} \entry {reserved names}{5} -\entry {resource limits}{559} -\entry {restarting interrupted primitives}{606} -\entry {restrictions on signal handler functions}{601} -\entry {root directory}{224} -\entry {Rot13}{98} -\entry {rpc}{703} -\entry {runnable process}{564} -\entry {running a command}{671} +\entry {resource limits}{557} +\entry {restarting interrupted primitives}{604} +\entry {restrictions on signal handler functions}{599} +\entry {root directory}{222} +\entry {Rot13}{99} +\entry {rpc}{701} +\entry {runnable process}{562} +\entry {running a command}{669} \initial {S} -\entry {saved set-group-ID}{714} -\entry {saved set-user-ID}{714} -\entry {scanning the group list}{735} -\entry {scanning the user list}{732} -\entry {scatter-gather}{299} -\entry {scheduling, traditional}{569} -\entry {search function (for arrays)}{193} +\entry {saved set-group-ID}{712} +\entry {saved set-user-ID}{712} +\entry {scanning the group list}{733} +\entry {scanning the user list}{730} +\entry {scatter-gather}{297} +\entry {scheduling, traditional}{567} +\entry {search function (for arrays)}{191} \entry {search functions (for strings)}{92} -\entry {seed (for random numbers)}{483} -\entry {seeking on a file descriptor}{294} -\entry {seeking on a stream}{269} -\entry {segmentation violation}{581} -\entry {sending a datagram}{419} -\entry {sending signals}{606} -\entry {sequential-access files}{222} -\entry {server}{406} -\entry {services}{703} -\entry {services database}{399} -\entry {session}{683} -\entry {session leader}{683} -\entry {setting an alarm}{552} -\entry {\code {setuid} programs}{714} -\entry {setuid programs and file access}{364} -\entry {severity class}{283, 284} -\entry {sgettext}{186, 187} -\entry {shadow}{703} +\entry {seed (for random numbers)}{481} +\entry {seeking on a file descriptor}{292} +\entry {seeking on a stream}{267} +\entry {segmentation violation}{579} +\entry {sending a datagram}{417} +\entry {sending signals}{604} +\entry {sequential-access files}{220} +\entry {server}{404} +\entry {services}{701} +\entry {services database}{397} +\entry {session}{681} +\entry {session leader}{681} +\entry {setting an alarm}{550} +\entry {\code {setuid} programs}{712} +\entry {setuid programs and file access}{363} +\entry {severity class}{281, 282} +\entry {sgettext}{186} +\entry {shadow}{701} \entry {shadowing functions with macros}{5} -\entry {shared lock}{328} -\entry {shell}{683} -\entry {shift state}{110} +\entry {shared lock}{326} +\entry {shell}{681} +\entry {shift state}{111} \entry {shrinking objects}{55} -\entry {shutting down a socket}{405} -\entry {\code {sigaction} flags}{593} -\entry {\code {sigaction} function}{590} -\entry {\code {SIGCHLD}, handling of}{694} -\entry {sign (of floating point number)}{820} -\entry {signal}{496, 577} -\entry {signal action}{578} -\entry {signal actions}{588} -\entry {signal flags}{593} -\entry {\code {signal} function}{588} -\entry {signal handler function}{594} -\entry {signal mask}{612} -\entry {signal messages}{587} -\entry {signal names}{579} -\entry {signal number}{579} -\entry {signal set}{611} -\entry {signals, generating}{606} -\entry {signedness}{491} -\entry {significand (of floating point number)}{820} -\entry {\code {SIGTTIN}, from background job}{684} -\entry {\code {SIGTTOU}, from background job}{685} -\entry {simple time}{527} +\entry {shutting down a socket}{403} +\entry {\code {sigaction} flags}{591} +\entry {\code {sigaction} function}{588} +\entry {\code {SIGCHLD}, handling of}{692} +\entry {sign (of floating point number)}{818} +\entry {signal}{494, 575} +\entry {signal action}{576} +\entry {signal actions}{586} +\entry {signal flags}{591} +\entry {\code {signal} function}{586} +\entry {signal handler function}{592} +\entry {signal mask}{610} +\entry {signal messages}{585} +\entry {signal names}{577} +\entry {signal number}{577} +\entry {signal set}{609} +\entry {signals, generating}{604} +\entry {signedness}{489} +\entry {significand (of floating point number)}{818} +\entry {\code {SIGTTIN}, from background job}{682} +\entry {\code {SIGTTOU}, from background job}{683} +\entry {simple time}{525} \entry {size of string}{77} -\entry {SJIS}{107} -\entry {socket}{381} -\entry {socket address (name) binding}{383} -\entry {socket domain}{381} -\entry {socket namespace}{381} -\entry {socket option level}{424} -\entry {socket options}{424} -\entry {socket pair}{405} -\entry {socket protocol}{381} -\entry {socket shutdown}{405} -\entry {socket, client actions}{406} -\entry {socket, closing}{405} -\entry {socket, connecting}{406} -\entry {socket, creating}{404} -\entry {socket, initiating a connection}{406} -\entry {sockets, accepting connections}{408} -\entry {sockets, listening}{408} -\entry {sockets, server actions}{408} -\entry {soft limit}{559} -\entry {soft link}{348} -\entry {sort function (for arrays)}{194} -\entry {sparse files}{295} -\entry {special files}{369} -\entry {special functions}{475} -\entry {specified action (for a signal)}{578} +\entry {SJIS}{108} +\entry {socket}{379} +\entry {socket address (name) binding}{381} +\entry {socket domain}{379} +\entry {socket namespace}{379} +\entry {socket option level}{422} +\entry {socket options}{422} +\entry {socket pair}{403} +\entry {socket protocol}{379} +\entry {socket shutdown}{403} +\entry {socket, client actions}{404} +\entry {socket, closing}{403} +\entry {socket, connecting}{404} +\entry {socket, creating}{402} +\entry {socket, initiating a connection}{404} +\entry {sockets, accepting connections}{406} +\entry {sockets, listening}{406} +\entry {sockets, server actions}{406} +\entry {soft limit}{557} +\entry {soft link}{346} +\entry {sort function (for arrays)}{192} +\entry {sparse files}{293} +\entry {special files}{368} +\entry {special functions}{473} +\entry {specified action (for a signal)}{576} \entry {speed of execution}{63} -\entry {square root function}{471} -\entry {stable sorting}{194} -\entry {standard dot notation, for Internet addresses}{391} -\entry {standard environment variables}{662} -\entry {standard error file descriptor}{297} -\entry {standard error stream}{228} -\entry {standard file descriptors}{297} -\entry {standard input file descriptor}{297} -\entry {standard input stream}{227} -\entry {standard output file descriptor}{297} -\entry {standard output stream}{227} -\entry {standard streams}{227} +\entry {square root function}{469} +\entry {stable sorting}{192} +\entry {standard dot notation, for Internet addresses}{389} +\entry {standard environment variables}{660} +\entry {standard error file descriptor}{295} +\entry {standard error stream}{226} +\entry {standard file descriptors}{295} +\entry {standard input file descriptor}{295} +\entry {standard input stream}{225} +\entry {standard output file descriptor}{295} +\entry {standard output stream}{225} +\entry {standard streams}{225} \entry {standards}{1} -\entry {START character}{446} -\entry {startup of program}{625} -\entry {stateful}{110, 113, 118, 129, 132, 144} +\entry {START character}{444} +\entry {startup of program}{623} +\entry {stateful}{110, 113, 119, 129, 132, 144} \entry {static memory allocation}{33} \entry {static storage class}{33} -\entry {STATUS character}{447} +\entry {STATUS character}{445} \entry {status codes}{15} -\entry {status of a file}{352} +\entry {status of a file}{351} \entry {status of obstack}{57} -\entry {sticky bit}{361} -\entry {STOP character}{446} -\entry {stop signal}{585} -\entry {stopped job}{684} -\entry {stopped jobs, continuing}{696} -\entry {stopped jobs, detecting}{693} +\entry {sticky bit}{360} +\entry {STOP character}{444} +\entry {stop signal}{583} +\entry {stopped job}{682} +\entry {stopped jobs, continuing}{694} +\entry {stopped jobs, detecting}{691} \entry {storage allocation}{31} -\entry {stream (sockets)}{381} -\entry {stream orientation}{229} -\entry {stream, for I/O to a string}{276} -\entry {streams and descriptors}{297} -\entry {streams, and file descriptors}{297} -\entry {streams, standard}{227} +\entry {stream (sockets)}{379} +\entry {stream orientation}{227} +\entry {stream, for I/O to a string}{275} +\entry {streams and descriptors}{295} +\entry {streams, and file descriptors}{295} +\entry {streams, standard}{225} \entry {string}{77} \entry {string allocation}{77} \entry {string collation functions}{89} @@ -866,142 +866,143 @@ \entry {string length}{77} \entry {string literal}{77} \entry {string search functions}{92} -\entry {string stream}{276} -\entry {string vectors, null-character separated}{100} +\entry {string stream}{275} +\entry {string vectors, null-character separated}{101} \entry {string, representation of}{77} -\entry {style of communication (of a socket)}{381} -\entry {subshell}{687} -\entry {substitution of variables and commands}{215} -\entry {successive signals}{599} -\entry {summer time}{531} +\entry {style of communication (of a socket)}{379} +\entry {subshell}{685} +\entry {substitution of variables and commands}{213} +\entry {successive signals}{597} +\entry {summer time}{529} \entry {SunOS}{3} -\entry {supplementary group IDs}{713} -\entry {SUSP character}{445} -\entry {suspend character}{445} +\entry {supplementary group IDs}{711} +\entry {SUSP character}{443} +\entry {suspend character}{443} \entry {SVID}{3} \entry {swap space}{31} -\entry {symbolic link}{348} -\entry {symbolic link, opening}{325} -\entry {synchronizing}{306, 315} -\entry {syntax error messages, in argp}{641} -\entry {syntax, for program arguments}{626} -\entry {syntax, for reading numbers}{514} -\entry {system call}{663} -\entry {system call number}{664} +\entry {symbolic link}{346} +\entry {symbolic link, opening}{323} +\entry {synchronizing}{304, 313} +\entry {syntax error messages, in argp}{639} +\entry {syntax, for program arguments}{624} +\entry {syntax, for reading numbers}{512} +\entry {system call}{662} +\entry {system call number}{662} \entry {System V Unix}{3} \initial {T} -\entry {TCP (Internet protocol)}{401} -\entry {template, for \code {printf}}{238} -\entry {template, for \code {scanf}}{259} -\entry {\code {TERM} environment variable}{662} -\entry {terminal flow control}{450} -\entry {terminal identification}{429} -\entry {terminal input queue}{430} -\entry {terminal input queue, clearing}{450} -\entry {terminal input signal}{585} -\entry {terminal line control functions}{449} -\entry {terminal line speed}{441} -\entry {terminal mode data types}{431} -\entry {terminal mode functions}{432} -\entry {terminal modes, BSD}{448} -\entry {terminal output queue}{430} -\entry {terminal output queue, flushing}{449} -\entry {terminal output signal}{586} -\entry {terminated jobs, detecting}{693} -\entry {termination signal}{582} -\entry {testing access permission}{364} -\entry {testing exit status of child process}{676} -\entry {text stream}{268} -\entry {thread of control}{625} -\entry {ticks, clock}{525} -\entry {tilde expansion}{215} -\entry {time}{523} -\entry {TIME termios slot}{447} -\entry {time zone}{549} -\entry {time zone database}{550} -\entry {time, elapsed}{523} -\entry {time, high precision}{533} -\entry {timer, profiling}{553} -\entry {timer, real-time}{552} -\entry {timer, virtual}{552} -\entry {timers, setting}{552} -\entry {timespec}{524} -\entry {timeval}{524} -\entry {timing error in signal handling}{617} -\entry {TMPDIR environment variable}{372} +\entry {TCP (Internet protocol)}{399} +\entry {template, for \code {printf}}{236} +\entry {template, for \code {scanf}}{257} +\entry {\code {TERM} environment variable}{661} +\entry {terminal flow control}{448} +\entry {terminal identification}{427} +\entry {terminal input queue}{428} +\entry {terminal input queue, clearing}{448} +\entry {terminal input signal}{583} +\entry {terminal line control functions}{447} +\entry {terminal line speed}{439} +\entry {terminal mode data types}{429} +\entry {terminal mode functions}{430} +\entry {terminal modes, BSD}{446} +\entry {terminal output queue}{428} +\entry {terminal output queue, flushing}{447} +\entry {terminal output signal}{584} +\entry {terminated jobs, detecting}{691} +\entry {termination signal}{580} +\entry {testing access permission}{363} +\entry {testing exit status of child process}{674} +\entry {text stream}{266} +\entry {thread of control}{623} +\entry {ticks, clock}{523} +\entry {tilde expansion}{213} +\entry {time}{521} +\entry {TIME termios slot}{445} +\entry {time zone}{547} +\entry {time zone database}{548} +\entry {time, elapsed}{521} +\entry {time, high precision}{531} +\entry {timer, profiling}{551} +\entry {timer, real-time}{550} +\entry {timer, virtual}{550} +\entry {timers, setting}{550} +\entry {timespec}{522} +\entry {timeval}{522} +\entry {timing error in signal handling}{615} +\entry {TMPDIR environment variable}{371} \entry {tokenizing strings}{95} -\entry {tools, for installing library}{930} -\entry {transmitting datagrams}{419} -\entry {tree, directory}{343} +\entry {tools, for installing library}{928} +\entry {transmitting datagrams}{417} +\entry {tree, directory}{341} \entry {triangulation}{135} -\entry {trigonometric functions}{466} -\entry {type measurements, floating}{820} -\entry {type measurements, integer}{818} -\entry {type modifier character (\code {printf})}{240} -\entry {type modifier character (\code {scanf})}{261} -\entry {typeahead buffer}{430} -\entry {\code {TZ} environment variable}{663} +\entry {trigonometric functions}{464} +\entry {type measurements, floating}{818} +\entry {type measurements, integer}{816} +\entry {type modifier character (\code {printf})}{238} +\entry {type modifier character (\code {scanf})}{259} +\entry {typeahead buffer}{428} +\entry {\code {TZ} environment variable}{661} \initial {U} -\entry {UCS2}{105} -\entry {UCS4}{105} -\entry {ulps}{477} -\entry {umask}{362} -\entry {unbuffered stream}{273} +\entry {UCS-2}{105} +\entry {UCS-4}{105} +\entry {ulps}{475} +\entry {umask}{361} +\entry {unbuffered stream}{272} \entry {unconstrained memory allocation}{34} \entry {undefining macros that shadow functions}{5} -\entry {underflow exception}{496} +\entry {underflow exception}{494} \entry {Unicode}{105} \entry {Unix, Berkeley}{3} \entry {Unix, System V}{3} -\entry {unlinking a file}{349} -\entry {unordered comparison}{511} -\entry {unreading characters}{235} -\entry {upgrading from libc5}{933} +\entry {unlinking a file}{347} +\entry {unordered comparison}{509} +\entry {unreading characters}{233} +\entry {upgrading from libc5}{931} \entry {upper-case character}{67, 73} -\entry {urgent data signal}{584} -\entry {urgent socket condition}{416} -\entry {usage limits}{559} -\entry {usage messages, in argp}{641} -\entry {user accounting database}{723} -\entry {user database}{731} -\entry {user ID}{713} -\entry {user ID, determining}{722} -\entry {user name}{713} -\entry {user signals}{587} -\entry {usual file name errors}{224} +\entry {urgent data signal}{582} +\entry {urgent socket condition}{414} +\entry {usage limits}{557} +\entry {usage messages, in argp}{639} +\entry {user accounting database}{721} +\entry {user database}{729} +\entry {user ID}{711} +\entry {user ID, determining}{720} +\entry {user name}{711} +\entry {user signals}{585} +\entry {usual file name errors}{222} +\entry {UTF-16}{105} \entry {UTF-7}{108} -\entry {UTF-8}{108} +\entry {UTF-8}{105, 108} \initial {V} \entry {va_copy}{83} -\entry {variable number of arguments}{810} -\entry {variable substitution}{215} +\entry {variable number of arguments}{808} +\entry {variable substitution}{213} \entry {variable-sized arrays}{62} -\entry {variadic function argument access}{812} -\entry {variadic function prototypes}{811} -\entry {variadic functions}{810} -\entry {variadic functions, calling}{813} -\entry {virtual time alarm signal}{584} -\entry {virtual timer}{552} -\entry {\code {volatile} declarations}{602} +\entry {variadic function argument access}{810} +\entry {variadic function prototypes}{809} +\entry {variadic functions}{808} +\entry {variadic functions, calling}{811} +\entry {virtual time alarm signal}{582} +\entry {virtual timer}{550} +\entry {\code {volatile} declarations}{600} \initial {W} -\entry {waiting for a signal}{617} -\entry {waiting for completion of child process}{676} -\entry {waiting for input or output}{303} -\entry {WERASE character}{444} +\entry {waiting for a signal}{615} +\entry {waiting for completion of child process}{674} +\entry {waiting for input or output}{301} +\entry {WERASE character}{442} \entry {whitespace character}{68, 72} \entry {wide character}{105} -\entry {width of integer type}{818} -\entry {wildcard expansion}{215} -\entry {word expansion}{214} -\entry {working directory}{335} -\entry {write lock}{328} -\entry {writing to a file descriptor}{292} -\entry {writing to a socket}{410} -\entry {writing to a stream, by blocks}{237} -\entry {writing to a stream, by characters}{231} -\entry {writing to a stream, formatted}{238} +\entry {width of integer type}{816} +\entry {wildcard expansion}{213} +\entry {word expansion}{212} +\entry {working directory}{333} +\entry {write lock}{326} +\entry {writing to a file descriptor}{290} +\entry {writing to a socket}{408} +\entry {writing to a stream, by blocks}{235} +\entry {writing to a stream, by characters}{229} +\entry {writing to a stream, formatted}{236} \initial {Y} -\entry {YP}{741} -\entry {YP domain name}{741, 742} +\entry {YP}{739} +\entry {YP domain name}{739, 740} \initial {Z} -\entry {zero divide}{496} +\entry {zero divide}{494} diff -adurpN glibc-2.2/manual/libc.fn glibc-2.2.1/manual/libc.fn --- glibc-2.2/manual/libc.fn Thu Sep 7 12:04:42 2000 +++ glibc-2.2.1/manual/libc.fn Sun Jan 7 09:11:50 2001 @@ -1,52 +1,52 @@ -\entry{strerror}{26}{\code {strerror}} -\entry{strerror{\_}r}{26}{\code {strerror_r}} +\entry{strerror}{27}{\code {strerror}} +\entry{strerror{\_}r}{27}{\code {strerror_r}} \entry{perror}{27}{\code {perror}} -\entry{malloc}{32}{\code {malloc}} -\entry{free}{34}{\code {free}} -\entry{cfree}{34}{\code {cfree}} -\entry{realloc}{34}{\code {realloc}} -\entry{calloc}{35}{\code {calloc}} -\entry{memalign}{36}{\code {memalign}} -\entry{posix{\_}memalign}{36}{\code {posix_memalign}} -\entry{valloc}{37}{\code {valloc}} -\entry{mallopt}{37}{\code {mallopt}} -\entry{mcheck}{38}{\code {mcheck}} -\entry{mprobe}{38}{\code {mprobe}} -\entry{mallinfo}{43}{\code {mallinfo}} -\entry{mtrace}{44}{\code {mtrace}} -\entry{muntrace}{44}{\code {muntrace}} -\entry{obstack{\_}chunk{\_}alloc}{49}{\code {obstack_chunk_alloc}} -\entry{obstack{\_}chunk{\_}free}{49}{\code {obstack_chunk_free}} -\entry{obstack{\_}init}{49}{\code {obstack_init}} -\entry{obstack{\_}alloc}{50}{\code {obstack_alloc}} -\entry{obstack{\_}copy}{50}{\code {obstack_copy}} -\entry{obstack{\_}copy0}{50}{\code {obstack_copy0}} -\entry{obstack{\_}free}{51}{\code {obstack_free}} -\entry{obstack{\_}blank}{52}{\code {obstack_blank}} -\entry{obstack{\_}grow}{52}{\code {obstack_grow}} -\entry{obstack{\_}grow0}{52}{\code {obstack_grow0}} -\entry{obstack{\_}1grow}{53}{\code {obstack_1grow}} -\entry{obstack{\_}ptr{\_}grow}{53}{\code {obstack_ptr_grow}} -\entry{obstack{\_}int{\_}grow}{53}{\code {obstack_int_grow}} -\entry{obstack{\_}finish}{53}{\code {obstack_finish}} -\entry{obstack{\_}object{\_}size}{53}{\code {obstack_object_size}} -\entry{obstack{\_}room}{54}{\code {obstack_room}} -\entry{obstack{\_}1grow{\_}fast}{54}{\code {obstack_1grow_fast}} -\entry{obstack{\_}ptr{\_}grow{\_}fast}{54}{\code {obstack_ptr_grow_fast}} -\entry{obstack{\_}int{\_}grow{\_}fast}{54}{\code {obstack_int_grow_fast}} -\entry{obstack{\_}blank{\_}fast}{54}{\code {obstack_blank_fast}} -\entry{obstack{\_}base}{55}{\code {obstack_base}} -\entry{obstack{\_}next{\_}free}{55}{\code {obstack_next_free}} +\entry{malloc}{34}{\code {malloc}} +\entry{free}{35}{\code {free}} +\entry{cfree}{36}{\code {cfree}} +\entry{realloc}{36}{\code {realloc}} +\entry{calloc}{37}{\code {calloc}} +\entry{memalign}{38}{\code {memalign}} +\entry{posix{\_}memalign}{38}{\code {posix_memalign}} +\entry{valloc}{39}{\code {valloc}} +\entry{mallopt}{39}{\code {mallopt}} +\entry{mcheck}{39}{\code {mcheck}} +\entry{mprobe}{40}{\code {mprobe}} +\entry{mallinfo}{45}{\code {mallinfo}} +\entry{mtrace}{46}{\code {mtrace}} +\entry{muntrace}{46}{\code {muntrace}} +\entry{obstack{\_}chunk{\_}alloc}{50}{\code {obstack_chunk_alloc}} +\entry{obstack{\_}chunk{\_}free}{50}{\code {obstack_chunk_free}} +\entry{obstack{\_}init}{51}{\code {obstack_init}} +\entry{obstack{\_}alloc}{51}{\code {obstack_alloc}} +\entry{obstack{\_}copy}{52}{\code {obstack_copy}} +\entry{obstack{\_}copy0}{52}{\code {obstack_copy0}} +\entry{obstack{\_}free}{52}{\code {obstack_free}} +\entry{obstack{\_}blank}{54}{\code {obstack_blank}} +\entry{obstack{\_}grow}{54}{\code {obstack_grow}} +\entry{obstack{\_}grow0}{54}{\code {obstack_grow0}} +\entry{obstack{\_}1grow}{54}{\code {obstack_1grow}} +\entry{obstack{\_}ptr{\_}grow}{54}{\code {obstack_ptr_grow}} +\entry{obstack{\_}int{\_}grow}{54}{\code {obstack_int_grow}} +\entry{obstack{\_}finish}{54}{\code {obstack_finish}} \entry{obstack{\_}object{\_}size}{55}{\code {obstack_object_size}} -\entry{obstack{\_}alignment{\_}mask}{56}{\code {obstack_alignment_mask}} -\entry{obstack{\_}chunk{\_}size}{57}{\code {obstack_chunk_size}} -\entry{alloca}{59}{\code {alloca}} -\entry{brk}{61}{\code {brk}} -\entry{sbrk}{61}{\code {sbrk}} -\entry{mlock}{63}{\code {mlock}} -\entry{munlock}{64}{\code {munlock}} -\entry{mlockall}{64}{\code {mlockall}} -\entry{munlockall}{65}{\code {munlockall}} +\entry{obstack{\_}room}{55}{\code {obstack_room}} +\entry{obstack{\_}1grow{\_}fast}{55}{\code {obstack_1grow_fast}} +\entry{obstack{\_}ptr{\_}grow{\_}fast}{56}{\code {obstack_ptr_grow_fast}} +\entry{obstack{\_}int{\_}grow{\_}fast}{56}{\code {obstack_int_grow_fast}} +\entry{obstack{\_}blank{\_}fast}{56}{\code {obstack_blank_fast}} +\entry{obstack{\_}base}{57}{\code {obstack_base}} +\entry{obstack{\_}next{\_}free}{57}{\code {obstack_next_free}} +\entry{obstack{\_}object{\_}size}{57}{\code {obstack_object_size}} +\entry{obstack{\_}alignment{\_}mask}{57}{\code {obstack_alignment_mask}} +\entry{obstack{\_}chunk{\_}size}{58}{\code {obstack_chunk_size}} +\entry{alloca}{60}{\code {alloca}} +\entry{brk}{62}{\code {brk}} +\entry{sbrk}{63}{\code {sbrk}} +\entry{mlock}{64}{\code {mlock}} +\entry{munlock}{65}{\code {munlock}} +\entry{mlockall}{65}{\code {mlockall}} +\entry{munlockall}{66}{\code {munlockall}} \entry{islower}{67}{\code {islower}} \entry{isupper}{67}{\code {isupper}} \entry{isalpha}{67}{\code {isalpha}} @@ -58,8 +58,8 @@ \entry{isblank}{68}{\code {isblank}} \entry{isgraph}{68}{\code {isgraph}} \entry{isprint}{68}{\code {isprint}} -\entry{iscntrl}{68}{\code {iscntrl}} -\entry{isascii}{68}{\code {isascii}} +\entry{iscntrl}{69}{\code {iscntrl}} +\entry{isascii}{69}{\code {isascii}} \entry{tolower}{69}{\code {tolower}} \entry{toupper}{69}{\code {toupper}} \entry{toascii}{69}{\code {toascii}} @@ -67,30 +67,30 @@ \entry{{\_}toupper}{69}{\code {_toupper}} \entry{wctype}{70}{\code {wctype}} \entry{iswctype}{70}{\code {iswctype}} -\entry{iswalnum}{70}{\code {iswalnum}} -\entry{iswalpha}{70}{\code {iswalpha}} +\entry{iswalnum}{71}{\code {iswalnum}} +\entry{iswalpha}{71}{\code {iswalpha}} \entry{iswcntrl}{71}{\code {iswcntrl}} \entry{iswdigit}{71}{\code {iswdigit}} -\entry{iswgraph}{71}{\code {iswgraph}} -\entry{iswlower}{71}{\code {iswlower}} +\entry{iswgraph}{72}{\code {iswgraph}} +\entry{iswlower}{72}{\code {iswlower}} \entry{iswprint}{72}{\code {iswprint}} \entry{iswpunct}{72}{\code {iswpunct}} \entry{iswspace}{72}{\code {iswspace}} -\entry{iswupper}{72}{\code {iswupper}} -\entry{iswxdigit}{72}{\code {iswxdigit}} +\entry{iswupper}{73}{\code {iswupper}} +\entry{iswxdigit}{73}{\code {iswxdigit}} \entry{iswblank}{73}{\code {iswblank}} \entry{wctrans}{74}{\code {wctrans}} -\entry{towctrans}{74}{\code {towctrans}} -\entry{towlower}{74}{\code {towlower}} -\entry{towupper}{74}{\code {towupper}} +\entry{towctrans}{75}{\code {towctrans}} +\entry{towlower}{75}{\code {towlower}} +\entry{towupper}{75}{\code {towupper}} \entry{strlen}{78}{\code {strlen}} \entry{strnlen}{79}{\code {strnlen}} \entry{memcpy}{80}{\code {memcpy}} \entry{mempcpy}{80}{\code {mempcpy}} \entry{memmove}{80}{\code {memmove}} \entry{memccpy}{80}{\code {memccpy}} -\entry{memset}{81}{\code {memset}} -\entry{strcpy}{81}{\code {strcpy}} +\entry{memset}{80}{\code {memset}} +\entry{strcpy}{80}{\code {strcpy}} \entry{strncpy}{81}{\code {strncpy}} \entry{strdup}{81}{\code {strdup}} \entry{strndup}{81}{\code {strndup}} @@ -99,7 +99,1120 @@ \entry{strdupa}{82}{\code {strdupa}} \entry{strndupa}{83}{\code {strndupa}} \entry{strcat}{83}{\code {strcat}} -\entry{strncat}{86}{\code {strncat}} +\entry{strncat}{85}{\code {strncat}} \entry{bcopy}{86}{\code {bcopy}} \entry{bzero}{86}{\code {bzero}} \entry{memcmp}{87}{\code {memcmp}} +\entry{strcmp}{87}{\code {strcmp}} +\entry{strcasecmp}{87}{\code {strcasecmp}} +\entry{strncasecmp}{88}{\code {strncasecmp}} +\entry{strncmp}{88}{\code {strncmp}} +\entry{strverscmp}{88}{\code {strverscmp}} +\entry{bcmp}{89}{\code {bcmp}} +\entry{strcoll}{90}{\code {strcoll}} +\entry{strxfrm}{90}{\code {strxfrm}} +\entry{memchr}{92}{\code {memchr}} +\entry{memrchr}{92}{\code {memrchr}} +\entry{strchr}{92}{\code {strchr}} +\entry{strchrnul}{93}{\code {strchrnul}} +\entry{strrchr}{93}{\code {strrchr}} +\entry{strstr}{93}{\code {strstr}} +\entry{strcasestr}{93}{\code {strcasestr}} +\entry{memmem}{94}{\code {memmem}} +\entry{strspn}{94}{\code {strspn}} +\entry{strcspn}{94}{\code {strcspn}} +\entry{strpbrk}{94}{\code {strpbrk}} +\entry{index}{94}{\code {index}} +\entry{rindex}{95}{\code {rindex}} +\entry{strtok}{95}{\code {strtok}} +\entry{strtok{\_}r}{96}{\code {strtok_r}} +\entry{strsep}{96}{\code {strsep}} +\entry{basename}{97}{\code {basename}} +\entry{basename}{98}{\code {basename}} +\entry{dirname}{98}{\code {dirname}} +\entry{strfry}{98}{\code {strfry}} +\entry{memfrob}{99}{\code {memfrob}} +\entry{l64a}{99}{\code {l64a}} +\entry{a64l}{101}{\code {a64l}} +\entry{argz{\_}create}{102}{\code {argz_create}} +\entry{argz{\_}create{\_}sep}{102}{\code {argz_create_sep}} +\entry{argz{\_}count}{102}{\code {argz_count}} +\entry{argz{\_}extract}{102}{\code {argz_extract}} +\entry{argz{\_}stringify}{102}{\code {argz_stringify}} +\entry{argz{\_}add}{102}{\code {argz_add}} +\entry{argz{\_}add{\_}sep}{102}{\code {argz_add_sep}} +\entry{argz{\_}append}{103}{\code {argz_append}} +\entry{argz{\_}delete}{103}{\code {argz_delete}} +\entry{argz{\_}insert}{103}{\code {argz_insert}} +\entry{argz{\_}next}{103}{\code {argz_next}} +\entry{argz{\_}replace}{103}{\code {argz_replace}} +\entry{envz{\_}entry}{104}{\code {envz_entry}} +\entry{envz{\_}get}{104}{\code {envz_get}} +\entry{envz{\_}add}{104}{\code {envz_add}} +\entry{envz{\_}merge}{104}{\code {envz_merge}} +\entry{envz{\_}strip}{104}{\code {envz_strip}} +\entry{mbsinit}{111}{\code {mbsinit}} +\entry{btowc}{112}{\code {btowc}} +\entry{wctob}{113}{\code {wctob}} +\entry{mbrtowc}{113}{\code {mbrtowc}} +\entry{mbrlen}{114}{\code {mbrlen}} +\entry{wcrtomb}{116}{\code {wcrtomb}} +\entry{mbsrtowcs}{118}{\code {mbsrtowcs}} +\entry{wcsrtombs}{119}{\code {wcsrtombs}} +\entry{mbsnrtowcs}{120}{\code {mbsnrtowcs}} +\entry{wcsnrtombs}{120}{\code {wcsnrtombs}} +\entry{mbtowc}{123}{\code {mbtowc}} +\entry{wctomb}{123}{\code {wctomb}} +\entry{mblen}{124}{\code {mblen}} +\entry{mbstowcs}{124}{\code {mbstowcs}} +\entry{wcstombs}{125}{\code {wcstombs}} +\entry{iconv{\_}open}{128}{\code {iconv_open}} +\entry{iconv{\_}close}{129}{\code {iconv_close}} +\entry{iconv}{129}{\code {iconv}} +\entry{setlocale}{151}{\code {setlocale}} +\entry{localeconv}{154}{\code {localeconv}} +\entry{nl{\_}langinfo}{157}{\code {nl_langinfo}} +\entry{strfmon}{163}{\code {strfmon}} +\entry{catopen}{167}{\code {catopen}} +\entry{catgets}{170}{\code {catgets}} +\entry{catclose}{170}{\code {catclose}} +\entry{gettext}{177}{\code {gettext}} +\entry{dgettext}{178}{\code {dgettext}} +\entry{dcgettext}{178}{\code {dcgettext}} +\entry{textdomain}{180}{\code {textdomain}} +\entry{bindtextdomain}{180}{\code {bindtextdomain}} +\entry{ngettext}{182}{\code {ngettext}} +\entry{dngettext}{182}{\code {dngettext}} +\entry{dcngettext}{182}{\code {dcngettext}} +\entry{bind{\_}textdomain{\_}codeset}{185}{\code {bind_textdomain_codeset}} +\entry{lfind}{191}{\code {lfind}} +\entry{lsearch}{192}{\code {lsearch}} +\entry{bsearch}{192}{\code {bsearch}} +\entry{qsort}{192}{\code {qsort}} +\entry{hcreate}{196}{\code {hcreate}} +\entry{hdestroy}{196}{\code {hdestroy}} +\entry{hsearch}{197}{\code {hsearch}} +\entry{hcreate{\_}r}{197}{\code {hcreate_r}} +\entry{hdestroy{\_}r}{198}{\code {hdestroy_r}} +\entry{hsearch{\_}r}{198}{\code {hsearch_r}} +\entry{tsearch}{198}{\code {tsearch}} +\entry{tfind}{199}{\code {tfind}} +\entry{tdelete}{199}{\code {tdelete}} +\entry{tdestroy}{199}{\code {tdestroy}} +\entry{twalk}{200}{\code {twalk}} +\entry{fnmatch}{201}{\code {fnmatch}} +\entry{glob}{203}{\code {glob}} +\entry{globfree}{207}{\code {globfree}} +\entry{regcomp}{208}{\code {regcomp}} +\entry{regexec}{209}{\code {regexec}} +\entry{regfree}{212}{\code {regfree}} +\entry{regerror}{212}{\code {regerror}} +\entry{wordexp}{214}{\code {wordexp}} +\entry{wordfree}{214}{\code {wordfree}} +\entry{fopen}{226}{\code {fopen}} +\entry{fopen64}{227}{\code {fopen64}} +\entry{freopen}{228}{\code {freopen}} +\entry{freopen64}{228}{\code {freopen64}} +\entry{fclose}{229}{\code {fclose}} +\entry{fcloseall}{229}{\code {fcloseall}} +\entry{fputc}{230}{\code {fputc}} +\entry{putc}{230}{\code {putc}} +\entry{putchar}{230}{\code {putchar}} +\entry{fputs}{230}{\code {fputs}} +\entry{puts}{230}{\code {puts}} +\entry{putw}{230}{\code {putw}} +\entry{fgetc}{231}{\code {fgetc}} +\entry{getc}{231}{\code {getc}} +\entry{getchar}{231}{\code {getchar}} +\entry{getw}{232}{\code {getw}} +\entry{getline}{232}{\code {getline}} +\entry{getdelim}{233}{\code {getdelim}} +\entry{fgets}{233}{\code {fgets}} +\entry{gets}{233}{\code {gets}} +\entry{ungetc}{234}{\code {ungetc}} +\entry{fread}{235}{\code {fread}} +\entry{fwrite}{236}{\code {fwrite}} +\entry{printf}{244}{\code {printf}} +\entry{fprintf}{244}{\code {fprintf}} +\entry{sprintf}{244}{\code {sprintf}} +\entry{snprintf}{245}{\code {snprintf}} +\entry{asprintf}{246}{\code {asprintf}} +\entry{obstack{\_}printf}{246}{\code {obstack_printf}} +\entry{vprintf}{247}{\code {vprintf}} +\entry{vfprintf}{247}{\code {vfprintf}} +\entry{vsprintf}{247}{\code {vsprintf}} +\entry{vsnprintf}{247}{\code {vsnprintf}} +\entry{vasprintf}{248}{\code {vasprintf}} +\entry{obstack{\_}vprintf}{248}{\code {obstack_vprintf}} +\entry{parse{\_}printf{\_}format}{249}{\code {parse_printf_format}} +\entry{register{\_}printf{\_}function}{252}{\code {register_printf_function}} +\entry{printf{\_}size}{256}{\code {printf_size}} +\entry{printf{\_}size{\_}info}{257}{\code {printf_size_info}} +\entry{scanf}{264}{\code {scanf}} +\entry{fscanf}{264}{\code {fscanf}} +\entry{sscanf}{264}{\code {sscanf}} +\entry{vscanf}{265}{\code {vscanf}} +\entry{vfscanf}{265}{\code {vfscanf}} +\entry{vsscanf}{265}{\code {vsscanf}} +\entry{feof}{265}{\code {feof}} +\entry{ferror}{266}{\code {ferror}} +\entry{clearerr}{266}{\code {clearerr}} +\entry{ftell}{267}{\code {ftell}} +\entry{ftello}{268}{\code {ftello}} +\entry{ftello64}{268}{\code {ftello64}} +\entry{fseek}{268}{\code {fseek}} +\entry{fseeko}{268}{\code {fseeko}} +\entry{fseeko64}{269}{\code {fseeko64}} +\entry{rewind}{269}{\code {rewind}} +\entry{fgetpos}{271}{\code {fgetpos}} +\entry{fgetpos64}{271}{\code {fgetpos64}} +\entry{fsetpos}{271}{\code {fsetpos}} +\entry{fsetpos64}{271}{\code {fsetpos64}} +\entry{fflush}{273}{\code {fflush}} +\entry{setvbuf}{273}{\code {setvbuf}} +\entry{setbuf}{274}{\code {setbuf}} +\entry{setbuffer}{274}{\code {setbuffer}} +\entry{setlinebuf}{274}{\code {setlinebuf}} +\entry{fmemopen}{275}{\code {fmemopen}} +\entry{open{\_}memstream}{276}{\code {open_memstream}} +\entry{open{\_}obstack{\_}stream}{277}{\code {open_obstack_stream}} +\entry{fopencookie}{278}{\code {fopencookie}} +\entry{fmtmsg}{280}{\code {fmtmsg}} +\entry{addseverity}{283}{\code {addseverity}} +\entry{open}{285}{\code {open}} +\entry{open64}{286}{\code {open64}} +\entry{creat}{286}{\code {creat}} +\entry{creat64}{287}{\code {creat64}} +\entry{close}{287}{\code {close}} +\entry{read}{288}{\code {read}} +\entry{pread}{289}{\code {pread}} +\entry{pread64}{289}{\code {pread64}} +\entry{write}{290}{\code {write}} +\entry{pwrite}{291}{\code {pwrite}} +\entry{pwrite64}{292}{\code {pwrite64}} +\entry{lseek}{292}{\code {lseek}} +\entry{lseek64}{293}{\code {lseek64}} +\entry{fdopen}{295}{\code {fdopen}} +\entry{fileno}{295}{\code {fileno}} +\entry{fclean}{297}{\code {fclean}} +\entry{readv}{298}{\code {readv}} +\entry{writev}{298}{\code {writev}} +\entry{mmap}{299}{\code {mmap}} +\entry{munmap}{300}{\code {munmap}} +\entry{msync}{300}{\code {msync}} +\entry{mremap}{301}{\code {mremap}} +\entry{FD{\_}ZERO}{302}{\code {FD_ZERO}} +\entry{FD{\_}SET}{302}{\code {FD_SET}} +\entry{FD{\_}CLR}{302}{\code {FD_CLR}} +\entry{FD{\_}ISSET}{302}{\code {FD_ISSET}} +\entry{select}{302}{\code {select}} +\entry{sync}{304}{\code {sync}} +\entry{fsync}{305}{\code {fsync}} +\entry{fdatasync}{305}{\code {fdatasync}} +\entry{aio{\_}read}{308}{\code {aio_read}} +\entry{aio{\_}read64}{309}{\code {aio_read64}} +\entry{aio{\_}write}{309}{\code {aio_write}} +\entry{aio{\_}write64}{310}{\code {aio_write64}} +\entry{lio{\_}listio}{310}{\code {lio_listio}} +\entry{lio{\_}listio64}{312}{\code {lio_listio64}} +\entry{aio{\_}error}{312}{\code {aio_error}} +\entry{aio{\_}error64}{312}{\code {aio_error64}} +\entry{aio{\_}return}{313}{\code {aio_return}} +\entry{aio{\_}return64}{313}{\code {aio_return64}} +\entry{aio{\_}fsync}{313}{\code {aio_fsync}} +\entry{aio{\_}fsync64}{314}{\code {aio_fsync64}} +\entry{aio{\_}suspend}{314}{\code {aio_suspend}} +\entry{aio{\_}suspend64}{315}{\code {aio_suspend64}} +\entry{aio{\_}cancel}{315}{\code {aio_cancel}} +\entry{aio{\_}cancel64}{316}{\code {aio_cancel64}} +\entry{aio{\_}init}{317}{\code {aio_init}} +\entry{fcntl}{317}{\code {fcntl}} +\entry{dup}{318}{\code {dup}} +\entry{dup2}{318}{\code {dup2}} +\entry{ioctl}{331}{\code {ioctl}} +\entry{getcwd}{333}{\code {getcwd}} +\entry{getwd}{334}{\code {getwd}} +\entry{chdir}{334}{\code {chdir}} +\entry{IFTODT}{335}{\code {IFTODT}} +\entry{DTTOIF}{336}{\code {DTTOIF}} +\entry{opendir}{336}{\code {opendir}} +\entry{readdir}{337}{\code {readdir}} +\entry{readdir{\_}r}{337}{\code {readdir_r}} +\entry{readdir64}{338}{\code {readdir64}} +\entry{readdir64{\_}r}{338}{\code {readdir64_r}} +\entry{closedir}{338}{\code {closedir}} +\entry{rewinddir}{339}{\code {rewinddir}} +\entry{telldir}{339}{\code {telldir}} +\entry{seekdir}{339}{\code {seekdir}} +\entry{scandir}{339}{\code {scandir}} +\entry{alphasort}{340}{\code {alphasort}} +\entry{versionsort}{340}{\code {versionsort}} +\entry{scandir64}{340}{\code {scandir64}} +\entry{alphasort64}{340}{\code {alphasort64}} +\entry{versionsort64}{340}{\code {versionsort64}} +\entry{ftw}{343}{\code {ftw}} +\entry{ftw64}{344}{\code {ftw64}} +\entry{nftw}{344}{\code {nftw}} +\entry{nftw64}{345}{\code {nftw64}} +\entry{link}{345}{\code {link}} +\entry{symlink}{347}{\code {symlink}} +\entry{readlink}{347}{\code {readlink}} +\entry{unlink}{348}{\code {unlink}} +\entry{rmdir}{348}{\code {rmdir}} +\entry{remove}{348}{\code {remove}} +\entry{rename}{349}{\code {rename}} +\entry{mkdir}{350}{\code {mkdir}} +\entry{stat}{355}{\code {stat}} +\entry{stat64}{355}{\code {stat64}} +\entry{fstat}{355}{\code {fstat}} +\entry{fstat64}{355}{\code {fstat64}} +\entry{lstat}{356}{\code {lstat}} +\entry{lstat64}{356}{\code {lstat64}} +\entry{S{\_}ISDIR}{356}{\code {S_ISDIR}} +\entry{S{\_}ISCHR}{356}{\code {S_ISCHR}} +\entry{S{\_}ISBLK}{356}{\code {S_ISBLK}} +\entry{S{\_}ISREG}{356}{\code {S_ISREG}} +\entry{S{\_}ISFIFO}{356}{\code {S_ISFIFO}} +\entry{S{\_}ISLNK}{357}{\code {S_ISLNK}} +\entry{S{\_}ISSOCK}{357}{\code {S_ISSOCK}} +\entry{S{\_}TYPEISMQ}{357}{\code {S_TYPEISMQ}} +\entry{S{\_}TYPEISSEM}{357}{\code {S_TYPEISSEM}} +\entry{S{\_}TYPEISSHM}{357}{\code {S_TYPEISSHM}} +\entry{chown}{358}{\code {chown}} +\entry{fchown}{358}{\code {fchown}} +\entry{chmod}{361}{\code {chmod}} +\entry{umask}{361}{\code {umask}} +\entry{getumask}{362}{\code {getumask}} +\entry{chmod}{362}{\code {chmod}} +\entry{fchmod}{362}{\code {fchmod}} +\entry{access}{363}{\code {access}} +\entry{utime}{365}{\code {utime}} +\entry{utimes}{365}{\code {utimes}} +\entry{truncate}{366}{\code {truncate}} +\entry{truncate64}{366}{\code {truncate64}} +\entry{ftruncate}{367}{\code {ftruncate}} +\entry{ftruncate64}{367}{\code {ftruncate64}} +\entry{mknod}{368}{\code {mknod}} +\entry{tmpfile}{369}{\code {tmpfile}} +\entry{tmpfile64}{369}{\code {tmpfile64}} +\entry{tmpnam}{369}{\code {tmpnam}} +\entry{tmpnam{\_}r}{370}{\code {tmpnam_r}} +\entry{tempnam}{370}{\code {tempnam}} +\entry{mktemp}{371}{\code {mktemp}} +\entry{mkstemp}{371}{\code {mkstemp}} +\entry{mkdtemp}{371}{\code {mkdtemp}} +\entry{pipe}{373}{\code {pipe}} +\entry{popen}{375}{\code {popen}} +\entry{pclose}{375}{\code {pclose}} +\entry{mkfifo}{377}{\code {mkfifo}} +\entry{bind}{383}{\code {bind}} +\entry{getsockname}{383}{\code {getsockname}} +\entry{if{\_}nametoindex}{384}{\code {if_nametoindex}} +\entry{if{\_}indextoname}{384}{\code {if_indextoname}} +\entry{if{\_}nameindex}{384}{\code {if_nameindex}} +\entry{if{\_}freenameindex}{385}{\code {if_freenameindex}} +\entry{SUN{\_}LEN}{386}{\code {SUN_LEN}} +\entry{inet{\_}aton}{392}{\code {inet_aton}} +\entry{inet{\_}addr}{392}{\code {inet_addr}} +\entry{inet{\_}network}{392}{\code {inet_network}} +\entry{inet{\_}ntoa}{392}{\code {inet_ntoa}} +\entry{inet{\_}makeaddr}{392}{\code {inet_makeaddr}} +\entry{inet{\_}lnaof}{392}{\code {inet_lnaof}} +\entry{inet{\_}netof}{392}{\code {inet_netof}} +\entry{inet{\_}pton}{393}{\code {inet_pton}} +\entry{inet{\_}ntop}{393}{\code {inet_ntop}} +\entry{gethostbyname}{394}{\code {gethostbyname}} +\entry{gethostbyname2}{394}{\code {gethostbyname2}} +\entry{gethostbyaddr}{394}{\code {gethostbyaddr}} +\entry{gethostbyname{\_}r}{395}{\code {gethostbyname_r}} +\entry{gethostbyname2{\_}r}{396}{\code {gethostbyname2_r}} +\entry{gethostbyaddr{\_}r}{396}{\code {gethostbyaddr_r}} +\entry{sethostent}{396}{\code {sethostent}} +\entry{gethostent}{396}{\code {gethostent}} +\entry{endhostent}{396}{\code {endhostent}} +\entry{getservbyname}{398}{\code {getservbyname}} +\entry{getservbyport}{398}{\code {getservbyport}} +\entry{setservent}{398}{\code {setservent}} +\entry{getservent}{398}{\code {getservent}} +\entry{endservent}{398}{\code {endservent}} +\entry{htons}{399}{\code {htons}} +\entry{ntohs}{399}{\code {ntohs}} +\entry{htonl}{399}{\code {htonl}} +\entry{ntohl}{399}{\code {ntohl}} +\entry{getprotobyname}{400}{\code {getprotobyname}} +\entry{getprotobynumber}{400}{\code {getprotobynumber}} +\entry{setprotoent}{400}{\code {setprotoent}} +\entry{getprotoent}{400}{\code {getprotoent}} +\entry{endprotoent}{400}{\code {endprotoent}} +\entry{socket}{402}{\code {socket}} +\entry{shutdown}{403}{\code {shutdown}} +\entry{socketpair}{404}{\code {socketpair}} +\entry{connect}{405}{\code {connect}} +\entry{listen}{406}{\code {listen}} +\entry{accept}{407}{\code {accept}} +\entry{getpeername}{407}{\code {getpeername}} +\entry{send}{408}{\code {send}} +\entry{recv}{409}{\code {recv}} +\entry{sendto}{417}{\code {sendto}} +\entry{recvfrom}{418}{\code {recvfrom}} +\entry{getsockopt}{422}{\code {getsockopt}} +\entry{setsockopt}{423}{\code {setsockopt}} +\entry{getnetbyname}{425}{\code {getnetbyname}} +\entry{getnetbyaddr}{425}{\code {getnetbyaddr}} +\entry{setnetent}{425}{\code {setnetent}} +\entry{getnetent}{425}{\code {getnetent}} +\entry{endnetent}{425}{\code {endnetent}} +\entry{isatty}{427}{\code {isatty}} +\entry{ttyname}{427}{\code {ttyname}} +\entry{ttyname{\_}r}{427}{\code {ttyname_r}} +\entry{tcgetattr}{430}{\code {tcgetattr}} +\entry{tcsetattr}{430}{\code {tcsetattr}} +\entry{cfgetospeed}{440}{\code {cfgetospeed}} +\entry{cfgetispeed}{440}{\code {cfgetispeed}} +\entry{cfsetospeed}{440}{\code {cfsetospeed}} +\entry{cfsetispeed}{440}{\code {cfsetispeed}} +\entry{cfsetspeed}{440}{\code {cfsetspeed}} +\entry{cfmakeraw}{446}{\code {cfmakeraw}} +\entry{gtty}{447}{\code {gtty}} +\entry{stty}{447}{\code {stty}} +\entry{tcsendbreak}{447}{\code {tcsendbreak}} +\entry{tcdrain}{448}{\code {tcdrain}} +\entry{tcflush}{448}{\code {tcflush}} +\entry{tcflow}{448}{\code {tcflow}} +\entry{getpt}{451}{\code {getpt}} +\entry{grantpt}{451}{\code {grantpt}} +\entry{unlockpt}{451}{\code {unlockpt}} +\entry{ptsname}{452}{\code {ptsname}} +\entry{ptsname{\_}r}{452}{\code {ptsname_r}} +\entry{openpty}{453}{\code {openpty}} +\entry{forkpty}{453}{\code {forkpty}} +\entry{openlog}{456}{\code {openlog}} +\entry{syslog}{457}{\code {syslog}} +\entry{vsyslog}{460}{\code {vsyslog}} +\entry{closelog}{460}{\code {closelog}} +\entry{setlogmask}{460}{\code {setlogmask}} +\entry{sin}{464}{\code {sin}} +\entry{sinf}{464}{\code {sinf}} +\entry{sinl}{464}{\code {sinl}} +\entry{cos}{464}{\code {cos}} +\entry{cosf}{464}{\code {cosf}} +\entry{cosl}{464}{\code {cosl}} +\entry{tan}{464}{\code {tan}} +\entry{tanf}{464}{\code {tanf}} +\entry{tanl}{464}{\code {tanl}} +\entry{sincos}{465}{\code {sincos}} +\entry{sincosf}{465}{\code {sincosf}} +\entry{sincosl}{465}{\code {sincosl}} +\entry{csin}{465}{\code {csin}} +\entry{csinf}{465}{\code {csinf}} +\entry{csinl}{465}{\code {csinl}} +\entry{ccos}{465}{\code {ccos}} +\entry{ccosf}{465}{\code {ccosf}} +\entry{ccosl}{465}{\code {ccosl}} +\entry{ctan}{465}{\code {ctan}} +\entry{ctanf}{465}{\code {ctanf}} +\entry{ctanl}{465}{\code {ctanl}} +\entry{asin}{466}{\code {asin}} +\entry{asinf}{466}{\code {asinf}} +\entry{asinl}{466}{\code {asinl}} +\entry{acos}{466}{\code {acos}} +\entry{acosf}{466}{\code {acosf}} +\entry{acosl}{466}{\code {acosl}} +\entry{atan}{466}{\code {atan}} +\entry{atanf}{466}{\code {atanf}} +\entry{atanl}{466}{\code {atanl}} +\entry{atan2}{466}{\code {atan2}} +\entry{atan2f}{466}{\code {atan2f}} +\entry{atan2l}{466}{\code {atan2l}} +\entry{casin}{467}{\code {casin}} +\entry{casinf}{467}{\code {casinf}} +\entry{casinl}{467}{\code {casinl}} +\entry{cacos}{467}{\code {cacos}} +\entry{cacosf}{467}{\code {cacosf}} +\entry{cacosl}{467}{\code {cacosl}} +\entry{catan}{467}{\code {catan}} +\entry{catanf}{467}{\code {catanf}} +\entry{catanl}{467}{\code {catanl}} +\entry{exp}{467}{\code {exp}} +\entry{expf}{467}{\code {expf}} +\entry{expl}{467}{\code {expl}} +\entry{exp2}{467}{\code {exp2}} +\entry{exp2f}{467}{\code {exp2f}} +\entry{exp2l}{467}{\code {exp2l}} +\entry{exp10}{467}{\code {exp10}} +\entry{exp10f}{467}{\code {exp10f}} +\entry{exp10l}{467}{\code {exp10l}} +\entry{pow10}{467}{\code {pow10}} +\entry{pow10f}{467}{\code {pow10f}} +\entry{pow10l}{467}{\code {pow10l}} +\entry{log}{468}{\code {log}} +\entry{logf}{468}{\code {logf}} +\entry{logl}{468}{\code {logl}} +\entry{log10}{468}{\code {log10}} +\entry{log10f}{468}{\code {log10f}} +\entry{log10l}{468}{\code {log10l}} +\entry{log2}{468}{\code {log2}} +\entry{log2f}{468}{\code {log2f}} +\entry{log2l}{468}{\code {log2l}} +\entry{logb}{468}{\code {logb}} +\entry{logbf}{468}{\code {logbf}} +\entry{logbl}{468}{\code {logbl}} +\entry{ilogb}{468}{\code {ilogb}} +\entry{ilogbf}{468}{\code {ilogbf}} +\entry{ilogbl}{468}{\code {ilogbl}} +\entry{pow}{469}{\code {pow}} +\entry{powf}{469}{\code {powf}} +\entry{powl}{469}{\code {powl}} +\entry{sqrt}{469}{\code {sqrt}} +\entry{sqrtf}{469}{\code {sqrtf}} +\entry{sqrtl}{469}{\code {sqrtl}} +\entry{cbrt}{469}{\code {cbrt}} +\entry{cbrtf}{469}{\code {cbrtf}} +\entry{cbrtl}{469}{\code {cbrtl}} +\entry{hypot}{469}{\code {hypot}} +\entry{hypotf}{469}{\code {hypotf}} +\entry{hypotl}{469}{\code {hypotl}} +\entry{expm1}{470}{\code {expm1}} +\entry{expm1f}{470}{\code {expm1f}} +\entry{expm1l}{470}{\code {expm1l}} +\entry{log1p}{470}{\code {log1p}} +\entry{log1pf}{470}{\code {log1pf}} +\entry{log1pl}{470}{\code {log1pl}} +\entry{cexp}{470}{\code {cexp}} +\entry{cexpf}{470}{\code {cexpf}} +\entry{cexpl}{470}{\code {cexpl}} +\entry{clog}{470}{\code {clog}} +\entry{clogf}{470}{\code {clogf}} +\entry{clogl}{470}{\code {clogl}} +\entry{clog10}{470}{\code {clog10}} +\entry{clog10f}{470}{\code {clog10f}} +\entry{clog10l}{470}{\code {clog10l}} +\entry{csqrt}{471}{\code {csqrt}} +\entry{csqrtf}{471}{\code {csqrtf}} +\entry{csqrtl}{471}{\code {csqrtl}} +\entry{cpow}{471}{\code {cpow}} +\entry{cpowf}{471}{\code {cpowf}} +\entry{cpowl}{471}{\code {cpowl}} +\entry{sinh}{471}{\code {sinh}} +\entry{sinhf}{471}{\code {sinhf}} +\entry{sinhl}{471}{\code {sinhl}} +\entry{cosh}{471}{\code {cosh}} +\entry{coshf}{471}{\code {coshf}} +\entry{coshl}{471}{\code {coshl}} +\entry{tanh}{471}{\code {tanh}} +\entry{tanhf}{471}{\code {tanhf}} +\entry{tanhl}{471}{\code {tanhl}} +\entry{csinh}{471}{\code {csinh}} +\entry{csinhf}{471}{\code {csinhf}} +\entry{csinhl}{471}{\code {csinhl}} +\entry{ccosh}{472}{\code {ccosh}} +\entry{ccoshf}{472}{\code {ccoshf}} +\entry{ccoshl}{472}{\code {ccoshl}} +\entry{ctanh}{472}{\code {ctanh}} +\entry{ctanhf}{472}{\code {ctanhf}} +\entry{ctanhl}{472}{\code {ctanhl}} +\entry{asinh}{472}{\code {asinh}} +\entry{asinhf}{472}{\code {asinhf}} +\entry{asinhl}{472}{\code {asinhl}} +\entry{acosh}{472}{\code {acosh}} +\entry{acoshf}{472}{\code {acoshf}} +\entry{acoshl}{472}{\code {acoshl}} +\entry{atanh}{472}{\code {atanh}} +\entry{atanhf}{472}{\code {atanhf}} +\entry{atanhl}{472}{\code {atanhl}} +\entry{casinh}{472}{\code {casinh}} +\entry{casinhf}{472}{\code {casinhf}} +\entry{casinhl}{472}{\code {casinhl}} +\entry{cacosh}{472}{\code {cacosh}} +\entry{cacoshf}{472}{\code {cacoshf}} +\entry{cacoshl}{472}{\code {cacoshl}} +\entry{catanh}{473}{\code {catanh}} +\entry{catanhf}{473}{\code {catanhf}} +\entry{catanhl}{473}{\code {catanhl}} +\entry{erf}{473}{\code {erf}} +\entry{erff}{473}{\code {erff}} +\entry{erfl}{473}{\code {erfl}} +\entry{erfc}{473}{\code {erfc}} +\entry{erfcf}{473}{\code {erfcf}} +\entry{erfcl}{473}{\code {erfcl}} +\entry{lgamma}{473}{\code {lgamma}} +\entry{lgammaf}{473}{\code {lgammaf}} +\entry{lgammal}{473}{\code {lgammal}} +\entry{lgamma{\_}r}{474}{\code {lgamma_r}} +\entry{lgammaf{\_}r}{474}{\code {lgammaf_r}} +\entry{lgammal{\_}r}{474}{\code {lgammal_r}} +\entry{gamma}{474}{\code {gamma}} +\entry{gammaf}{474}{\code {gammaf}} +\entry{gammal}{474}{\code {gammal}} +\entry{tgamma}{474}{\code {tgamma}} +\entry{tgammaf}{474}{\code {tgammaf}} +\entry{tgammal}{474}{\code {tgammal}} +\entry{j0}{474}{\code {j0}} +\entry{j0f}{474}{\code {j0f}} +\entry{j0l}{474}{\code {j0l}} +\entry{j1}{474}{\code {j1}} +\entry{j1f}{474}{\code {j1f}} +\entry{j1l}{474}{\code {j1l}} +\entry{jn}{474}{\code {jn}} +\entry{jnf}{474}{\code {jnf}} +\entry{jnl}{474}{\code {jnl}} +\entry{y0}{474}{\code {y0}} +\entry{y0f}{474}{\code {y0f}} +\entry{y0l}{474}{\code {y0l}} +\entry{y1}{475}{\code {y1}} +\entry{y1f}{475}{\code {y1f}} +\entry{y1l}{475}{\code {y1l}} +\entry{yn}{475}{\code {yn}} +\entry{ynf}{475}{\code {ynf}} +\entry{ynl}{475}{\code {ynl}} +\entry{rand}{482}{\code {rand}} +\entry{srand}{482}{\code {srand}} +\entry{rand{\_}r}{482}{\code {rand_r}} +\entry{random}{482}{\code {random}} +\entry{srandom}{483}{\code {srandom}} +\entry{initstate}{483}{\code {initstate}} +\entry{setstate}{483}{\code {setstate}} +\entry{drand48}{483}{\code {drand48}} +\entry{erand48}{484}{\code {erand48}} +\entry{lrand48}{484}{\code {lrand48}} +\entry{nrand48}{484}{\code {nrand48}} +\entry{mrand48}{484}{\code {mrand48}} +\entry{jrand48}{484}{\code {jrand48}} +\entry{srand48}{484}{\code {srand48}} +\entry{seed48}{485}{\code {seed48}} +\entry{lcong48}{485}{\code {lcong48}} +\entry{drand48{\_}r}{485}{\code {drand48_r}} +\entry{erand48{\_}r}{486}{\code {erand48_r}} +\entry{lrand48{\_}r}{486}{\code {lrand48_r}} +\entry{nrand48{\_}r}{486}{\code {nrand48_r}} +\entry{mrand48{\_}r}{486}{\code {mrand48_r}} +\entry{jrand48{\_}r}{486}{\code {jrand48_r}} +\entry{srand48{\_}r}{487}{\code {srand48_r}} +\entry{seed48{\_}r}{487}{\code {seed48_r}} +\entry{lcong48{\_}r}{487}{\code {lcong48_r}} +\entry{div}{491}{\code {div}} +\entry{ldiv}{491}{\code {ldiv}} +\entry{lldiv}{491}{\code {lldiv}} +\entry{imaxdiv}{492}{\code {imaxdiv}} +\entry{fpclassify}{492}{\code {fpclassify}} +\entry{isfinite}{493}{\code {isfinite}} +\entry{isnormal}{493}{\code {isnormal}} +\entry{isnan}{493}{\code {isnan}} +\entry{isinf}{493}{\code {isinf}} +\entry{isinff}{493}{\code {isinff}} +\entry{isinfl}{493}{\code {isinfl}} +\entry{isnan}{494}{\code {isnan}} +\entry{isnanf}{494}{\code {isnanf}} +\entry{isnanl}{494}{\code {isnanl}} +\entry{finite}{494}{\code {finite}} +\entry{finitef}{494}{\code {finitef}} +\entry{finitel}{494}{\code {finitel}} +\entry{infnan}{494}{\code {infnan}} +\entry{matherr}{494}{\code {matherr}} +\entry{feclearexcept}{497}{\code {feclearexcept}} +\entry{feraiseexcept}{498}{\code {feraiseexcept}} +\entry{fetestexcept}{498}{\code {fetestexcept}} +\entry{fegetexceptflag}{498}{\code {fegetexceptflag}} +\entry{fesetexceptflag}{498}{\code {fesetexceptflag}} +\entry{fegetround}{500}{\code {fegetround}} +\entry{fesetround}{501}{\code {fesetround}} +\entry{fegetenv}{501}{\code {fegetenv}} +\entry{feholdexcept}{501}{\code {feholdexcept}} +\entry{fesetenv}{502}{\code {fesetenv}} +\entry{feupdateenv}{502}{\code {feupdateenv}} +\entry{feenableexcept}{502}{\code {feenableexcept}} +\entry{fedisableexcept}{502}{\code {fedisableexcept}} +\entry{fegetexcept}{502}{\code {fegetexcept}} +\entry{abs}{503}{\code {abs}} +\entry{labs}{503}{\code {labs}} +\entry{llabs}{503}{\code {llabs}} +\entry{imaxabs}{503}{\code {imaxabs}} +\entry{fabs}{503}{\code {fabs}} +\entry{fabsf}{503}{\code {fabsf}} +\entry{fabsl}{503}{\code {fabsl}} +\entry{cabs}{503}{\code {cabs}} +\entry{cabsf}{503}{\code {cabsf}} +\entry{cabsl}{503}{\code {cabsl}} +\entry{frexp}{504}{\code {frexp}} +\entry{frexpf}{504}{\code {frexpf}} +\entry{frexpl}{504}{\code {frexpl}} +\entry{ldexp}{504}{\code {ldexp}} +\entry{ldexpf}{504}{\code {ldexpf}} +\entry{ldexpl}{504}{\code {ldexpl}} +\entry{logb}{504}{\code {logb}} +\entry{logbf}{504}{\code {logbf}} +\entry{logbl}{504}{\code {logbl}} +\entry{scalb}{505}{\code {scalb}} +\entry{scalbf}{505}{\code {scalbf}} +\entry{scalbl}{505}{\code {scalbl}} +\entry{scalbn}{505}{\code {scalbn}} +\entry{scalbnf}{505}{\code {scalbnf}} +\entry{scalbnl}{505}{\code {scalbnl}} +\entry{scalbln}{505}{\code {scalbln}} +\entry{scalblnf}{505}{\code {scalblnf}} +\entry{scalblnl}{505}{\code {scalblnl}} +\entry{significand}{505}{\code {significand}} +\entry{significandf}{505}{\code {significandf}} +\entry{significandl}{505}{\code {significandl}} +\entry{ceil}{505}{\code {ceil}} +\entry{ceilf}{505}{\code {ceilf}} +\entry{ceill}{505}{\code {ceill}} +\entry{floor}{505}{\code {floor}} +\entry{floorf}{505}{\code {floorf}} +\entry{floorl}{505}{\code {floorl}} +\entry{trunc}{506}{\code {trunc}} +\entry{truncf}{506}{\code {truncf}} +\entry{truncl}{506}{\code {truncl}} +\entry{rint}{506}{\code {rint}} +\entry{rintf}{506}{\code {rintf}} +\entry{rintl}{506}{\code {rintl}} +\entry{nearbyint}{506}{\code {nearbyint}} +\entry{nearbyintf}{506}{\code {nearbyintf}} +\entry{nearbyintl}{506}{\code {nearbyintl}} +\entry{round}{506}{\code {round}} +\entry{roundf}{506}{\code {roundf}} +\entry{roundl}{506}{\code {roundl}} +\entry{lrint}{506}{\code {lrint}} +\entry{lrintf}{506}{\code {lrintf}} +\entry{lrintl}{506}{\code {lrintl}} +\entry{llrint}{506}{\code {llrint}} +\entry{llrintf}{506}{\code {llrintf}} +\entry{llrintl}{506}{\code {llrintl}} +\entry{lround}{506}{\code {lround}} +\entry{lroundf}{506}{\code {lroundf}} +\entry{lroundl}{506}{\code {lroundl}} +\entry{llround}{507}{\code {llround}} +\entry{llroundf}{507}{\code {llroundf}} +\entry{llroundl}{507}{\code {llroundl}} +\entry{modf}{507}{\code {modf}} +\entry{modff}{507}{\code {modff}} +\entry{modfl}{507}{\code {modfl}} +\entry{fmod}{507}{\code {fmod}} +\entry{fmodf}{507}{\code {fmodf}} +\entry{fmodl}{507}{\code {fmodl}} +\entry{drem}{507}{\code {drem}} +\entry{dremf}{507}{\code {dremf}} +\entry{dreml}{507}{\code {dreml}} +\entry{remainder}{508}{\code {remainder}} +\entry{remainderf}{508}{\code {remainderf}} +\entry{remainderl}{508}{\code {remainderl}} +\entry{copysign}{508}{\code {copysign}} +\entry{copysignf}{508}{\code {copysignf}} +\entry{copysignl}{508}{\code {copysignl}} +\entry{signbit}{508}{\code {signbit}} +\entry{nextafter}{508}{\code {nextafter}} +\entry{nextafterf}{508}{\code {nextafterf}} +\entry{nextafterl}{508}{\code {nextafterl}} +\entry{nexttoward}{508}{\code {nexttoward}} +\entry{nexttowardf}{508}{\code {nexttowardf}} +\entry{nexttowardl}{508}{\code {nexttowardl}} +\entry{nan}{509}{\code {nan}} +\entry{nanf}{509}{\code {nanf}} +\entry{nanl}{509}{\code {nanl}} +\entry{isgreater}{509}{\code {isgreater}} +\entry{isgreaterequal}{509}{\code {isgreaterequal}} +\entry{isless}{509}{\code {isless}} +\entry{islessequal}{509}{\code {islessequal}} +\entry{islessgreater}{509}{\code {islessgreater}} +\entry{isunordered}{510}{\code {isunordered}} +\entry{fmin}{510}{\code {fmin}} +\entry{fminf}{510}{\code {fminf}} +\entry{fminl}{510}{\code {fminl}} +\entry{fmax}{510}{\code {fmax}} +\entry{fmaxf}{510}{\code {fmaxf}} +\entry{fmaxl}{510}{\code {fmaxl}} +\entry{fdim}{510}{\code {fdim}} +\entry{fdimf}{510}{\code {fdimf}} +\entry{fdiml}{510}{\code {fdiml}} +\entry{fma}{510}{\code {fma}} +\entry{fmaf}{510}{\code {fmaf}} +\entry{fmal}{510}{\code {fmal}} +\entry{creal}{512}{\code {creal}} +\entry{crealf}{512}{\code {crealf}} +\entry{creall}{512}{\code {creall}} +\entry{cimag}{512}{\code {cimag}} +\entry{cimagf}{512}{\code {cimagf}} +\entry{cimagl}{512}{\code {cimagl}} +\entry{conj}{512}{\code {conj}} +\entry{conjf}{512}{\code {conjf}} +\entry{conjl}{512}{\code {conjl}} +\entry{carg}{512}{\code {carg}} +\entry{cargf}{512}{\code {cargf}} +\entry{cargl}{512}{\code {cargl}} +\entry{cproj}{512}{\code {cproj}} +\entry{cprojf}{512}{\code {cprojf}} +\entry{cprojl}{512}{\code {cprojl}} +\entry{strtol}{513}{\code {strtol}} +\entry{strtoul}{513}{\code {strtoul}} +\entry{strtoll}{514}{\code {strtoll}} +\entry{strtoq}{514}{\code {strtoq}} +\entry{strtoull}{514}{\code {strtoull}} +\entry{strtouq}{514}{\code {strtouq}} +\entry{strtoimax}{514}{\code {strtoimax}} +\entry{strtoumax}{514}{\code {strtoumax}} +\entry{atol}{514}{\code {atol}} +\entry{atoi}{515}{\code {atoi}} +\entry{atoll}{515}{\code {atoll}} +\entry{strtol{\_}l}{515}{\code {strtol_l}} +\entry{strtoul{\_}l}{515}{\code {strtoul_l}} +\entry{strtoll{\_}l}{515}{\code {strtoll_l}} +\entry{strtoull{\_}l}{515}{\code {strtoull_l}} +\entry{strtod}{516}{\code {strtod}} +\entry{strtof}{517}{\code {strtof}} +\entry{strtold}{517}{\code {strtold}} +\entry{atof}{517}{\code {atof}} +\entry{ecvt}{517}{\code {ecvt}} +\entry{fcvt}{518}{\code {fcvt}} +\entry{gcvt}{518}{\code {gcvt}} +\entry{qecvt}{518}{\code {qecvt}} +\entry{qfcvt}{518}{\code {qfcvt}} +\entry{qgcvt}{518}{\code {qgcvt}} +\entry{ecvt{\_}r}{518}{\code {ecvt_r}} +\entry{fcvt{\_}r}{519}{\code {fcvt_r}} +\entry{qecvt{\_}r}{519}{\code {qecvt_r}} +\entry{qfcvt{\_}r}{519}{\code {qfcvt_r}} +\entry{difftime}{521}{\code {difftime}} +\entry{clock}{524}{\code {clock}} +\entry{times}{525}{\code {times}} +\entry{time}{526}{\code {time}} +\entry{stime}{526}{\code {stime}} +\entry{gettimeofday}{527}{\code {gettimeofday}} +\entry{settimeofday}{527}{\code {settimeofday}} +\entry{adjtime}{528}{\code {adjtime}} +\entry{adjtimex}{528}{\code {adjtimex}} +\entry{localtime}{530}{\code {localtime}} +\entry{localtime{\_}r}{530}{\code {localtime_r}} +\entry{gmtime}{530}{\code {gmtime}} +\entry{gmtime{\_}r}{530}{\code {gmtime_r}} +\entry{mktime}{530}{\code {mktime}} +\entry{timelocal}{531}{\code {timelocal}} +\entry{timegm}{531}{\code {timegm}} +\entry{ntp{\_}gettime}{532}{\code {ntp_gettime}} +\entry{ntp{\_}adjtime}{534}{\code {ntp_adjtime}} +\entry{asctime}{534}{\code {asctime}} +\entry{asctime{\_}r}{534}{\code {asctime_r}} +\entry{ctime}{535}{\code {ctime}} +\entry{ctime{\_}r}{535}{\code {ctime_r}} +\entry{strftime}{535}{\code {strftime}} +\entry{wcsftime}{539}{\code {wcsftime}} +\entry{strptime}{540}{\code {strptime}} +\entry{getdate}{545}{\code {getdate}} +\entry{getdate{\_}r}{546}{\code {getdate_r}} +\entry{tzset}{549}{\code {tzset}} +\entry{setitimer}{551}{\code {setitimer}} +\entry{getitimer}{551}{\code {getitimer}} +\entry{ITIMER{\_}REAL}{552}{\code {ITIMER_REAL}} +\entry{ITIMER{\_}VIRTUAL}{552}{\code {ITIMER_VIRTUAL}} +\entry{ITIMER{\_}PROF}{552}{\code {ITIMER_PROF}} +\entry{alarm}{552}{\code {alarm}} +\entry{sleep}{553}{\code {sleep}} +\entry{nanosleep}{553}{\code {nanosleep}} +\entry{getrusage}{555}{\code {getrusage}} +\entry{vtimes}{556}{\code {vtimes}} +\entry{getrlimit}{558}{\code {getrlimit}} +\entry{getrlimit64}{558}{\code {getrlimit64}} +\entry{setrlimit}{558}{\code {setrlimit}} +\entry{setrlimit64}{558}{\code {setrlimit64}} +\entry{ulimit}{560}{\code {ulimit}} +\entry{vlimit}{561}{\code {vlimit}} +\entry{sched{\_}setscheduler}{565}{\code {sched_setscheduler}} +\entry{sched{\_}getscheduler}{565}{\code {sched_getscheduler}} +\entry{sched{\_}setparam}{566}{\code {sched_setparam}} +\entry{sched{\_}getparam}{566}{\code {sched_getparam}} +\entry{sched{\_}get{\_}priority{\_}min}{566}{\code {sched_get_priority_min}} +\entry{sched{\_}set{\_}priority{\_}max}{566}{\code {sched_set_priority_max}} +\entry{sched{\_}rr{\_}get{\_}interval}{566}{\code {sched_rr_get_interval}} +\entry{(void)}{567}{\code {(void)}} +\entry{getpriority}{569}{\code {getpriority}} +\entry{setpriority}{569}{\code {setpriority}} +\entry{nice}{570}{\code {nice}} +\entry{setjmp}{572}{\code {setjmp}} +\entry{longjmp}{573}{\code {longjmp}} +\entry{sigsetjmp}{574}{\code {sigsetjmp}} +\entry{siglongjmp}{574}{\code {siglongjmp}} +\entry{strsignal}{585}{\code {strsignal}} +\entry{psignal}{586}{\code {psignal}} +\entry{signal}{586}{\code {signal}} +\entry{sysv{\_}signal}{588}{\code {sysv_signal}} +\entry{ssignal}{588}{\code {ssignal}} +\entry{sigaction}{589}{\code {sigaction}} +\entry{TEMP{\_}FAILURE{\_}RETRY}{603}{\code {TEMP_FAILURE_RETRY}} +\entry{raise}{604}{\code {raise}} +\entry{gsignal}{604}{\code {gsignal}} +\entry{kill}{605}{\code {kill}} +\entry{killpg}{606}{\code {killpg}} +\entry{sigemptyset}{610}{\code {sigemptyset}} +\entry{sigfillset}{610}{\code {sigfillset}} +\entry{sigaddset}{610}{\code {sigaddset}} +\entry{sigdelset}{610}{\code {sigdelset}} +\entry{sigismember}{610}{\code {sigismember}} +\entry{sigprocmask}{610}{\code {sigprocmask}} +\entry{sigpending}{613}{\code {sigpending}} +\entry{pause}{615}{\code {pause}} +\entry{sigsuspend}{617}{\code {sigsuspend}} +\entry{sigaltstack}{619}{\code {sigaltstack}} +\entry{sigstack}{619}{\code {sigstack}} +\entry{sigvec}{621}{\code {sigvec}} +\entry{siginterrupt}{621}{\code {siginterrupt}} +\entry{sigmask}{621}{\code {sigmask}} +\entry{sigblock}{621}{\code {sigblock}} +\entry{sigsetmask}{621}{\code {sigsetmask}} +\entry{sigpause}{621}{\code {sigpause}} +\entry{main}{623}{\code {main}} +\entry{getopt}{625}{\code {getopt}} +\entry{getopt{\_}long}{629}{\code {getopt_long}} +\entry{argp{\_}parse}{632}{\code {argp_parse}} +\entry{argp{\_}usage}{639}{\code {argp_usage}} +\entry{argp{\_}error}{640}{\code {argp_error}} +\entry{argp{\_}failure}{640}{\code {argp_failure}} +\entry{argp{\_}state{\_}help}{640}{\code {argp_state_help}} +\entry{argp{\_}help}{645}{\code {argp_help}} +\entry{getsubopt}{656}{\code {getsubopt}} +\entry{getenv}{658}{\code {getenv}} +\entry{putenv}{659}{\code {putenv}} +\entry{setenv}{659}{\code {setenv}} +\entry{unsetenv}{659}{\code {unsetenv}} +\entry{clearenv}{659}{\code {clearenv}} +\entry{int}{662}{\code {int}} +\entry{exit}{663}{\code {exit}} +\entry{atexit}{665}{\code {atexit}} +\entry{on{\_}exit}{665}{\code {on_exit}} +\entry{abort}{666}{\code {abort}} +\entry{{\_}exit}{666}{\code {_exit}} +\entry{{\_}Exit}{666}{\code {_Exit}} +\entry{system}{669}{\code {system}} +\entry{getpid}{670}{\code {getpid}} +\entry{getppid}{670}{\code {getppid}} +\entry{fork}{671}{\code {fork}} +\entry{vfork}{671}{\code {vfork}} +\entry{execv}{672}{\code {execv}} +\entry{execl}{672}{\code {execl}} +\entry{execve}{672}{\code {execve}} +\entry{execle}{672}{\code {execle}} +\entry{execvp}{673}{\code {execvp}} +\entry{execlp}{673}{\code {execlp}} +\entry{waitpid}{674}{\code {waitpid}} +\entry{wait}{676}{\code {wait}} +\entry{wait4}{676}{\code {wait4}} +\entry{WIFEXITED}{677}{\code {WIFEXITED}} +\entry{WEXITSTATUS}{677}{\code {WEXITSTATUS}} +\entry{WIFSIGNALED}{677}{\code {WIFSIGNALED}} +\entry{WTERMSIG}{677}{\code {WTERMSIG}} +\entry{WCOREDUMP}{677}{\code {WCOREDUMP}} +\entry{WIFSTOPPED}{678}{\code {WIFSTOPPED}} +\entry{WSTOPSIG}{678}{\code {WSTOPSIG}} +\entry{wait3}{678}{\code {wait3}} +\entry{ctermid}{696}{\code {ctermid}} +\entry{setsid}{697}{\code {setsid}} +\entry{getsid}{697}{\code {getsid}} +\entry{getpgrp}{697}{\code {getpgrp}} +\entry{getpgrp}{697}{\code {getpgrp}} +\entry{getpgid}{697}{\code {getpgid}} +\entry{setpgid}{698}{\code {setpgid}} +\entry{setpgrp}{698}{\code {setpgrp}} +\entry{tcgetpgrp}{698}{\code {tcgetpgrp}} +\entry{tcsetpgrp}{699}{\code {tcsetpgrp}} +\entry{tcgetsid}{699}{\code {tcgetsid}} +\entry{success}{703}{\code {success}} +\entry{notfound}{703}{\code {notfound}} +\entry{unavail}{703}{\code {unavail}} +\entry{tryagain}{703}{\code {tryagain}} +\entry{NSS{\_}STATUS{\_}TRYAGAIN}{706}{\code {NSS_STATUS_TRYAGAIN}} +\entry{NSS{\_}STATUS{\_}UNAVAIL}{706}{\code {NSS_STATUS_UNAVAIL}} +\entry{NSS{\_}STATUS{\_}NOTFOUND}{706}{\code {NSS_STATUS_NOTFOUND}} +\entry{NSS{\_}STATUS{\_}SUCCESS}{706}{\code {NSS_STATUS_SUCCESS}} +\entry{getuid}{713}{\code {getuid}} +\entry{getgid}{713}{\code {getgid}} +\entry{geteuid}{713}{\code {geteuid}} +\entry{getegid}{713}{\code {getegid}} +\entry{getgroups}{713}{\code {getgroups}} +\entry{seteuid}{714}{\code {seteuid}} +\entry{setuid}{714}{\code {setuid}} +\entry{setreuid}{715}{\code {setreuid}} +\entry{setegid}{715}{\code {setegid}} +\entry{setgid}{715}{\code {setgid}} +\entry{setregid}{715}{\code {setregid}} +\entry{setgroups}{716}{\code {setgroups}} +\entry{initgroups}{716}{\code {initgroups}} +\entry{getlogin}{720}{\code {getlogin}} +\entry{cuserid}{720}{\code {cuserid}} +\entry{setutent}{723}{\code {setutent}} +\entry{getutent}{723}{\code {getutent}} +\entry{endutent}{723}{\code {endutent}} +\entry{getutid}{723}{\code {getutid}} +\entry{getutline}{724}{\code {getutline}} +\entry{pututline}{724}{\code {pututline}} +\entry{getutent{\_}r}{724}{\code {getutent_r}} +\entry{getutid{\_}r}{724}{\code {getutid_r}} +\entry{getutline{\_}r}{725}{\code {getutline_r}} +\entry{utmpname}{725}{\code {utmpname}} +\entry{updwtmp}{725}{\code {updwtmp}} +\entry{setutxent}{727}{\code {setutxent}} +\entry{getutxent}{727}{\code {getutxent}} +\entry{endutxent}{727}{\code {endutxent}} +\entry{getutxid}{727}{\code {getutxid}} +\entry{getutxline}{727}{\code {getutxline}} +\entry{pututxline}{727}{\code {pututxline}} +\entry{utmpxname}{727}{\code {utmpxname}} +\entry{getutmp}{728}{\code {getutmp}} +\entry{getutmpx}{728}{\code {getutmpx}} +\entry{login{\_}tty}{728}{\code {login_tty}} +\entry{login}{728}{\code {login}} +\entry{logout}{728}{\code {logout}} +\entry{logwtmp}{728}{\code {logwtmp}} +\entry{getpwuid}{729}{\code {getpwuid}} +\entry{getpwuid{\_}r}{730}{\code {getpwuid_r}} +\entry{getpwnam}{730}{\code {getpwnam}} +\entry{getpwnam{\_}r}{730}{\code {getpwnam_r}} +\entry{fgetpwent}{730}{\code {fgetpwent}} +\entry{fgetpwent{\_}r}{730}{\code {fgetpwent_r}} +\entry{setpwent}{731}{\code {setpwent}} +\entry{getpwent}{731}{\code {getpwent}} +\entry{getpwent{\_}r}{731}{\code {getpwent_r}} +\entry{endpwent}{731}{\code {endpwent}} +\entry{putpwent}{731}{\code {putpwent}} +\entry{getgrgid}{732}{\code {getgrgid}} +\entry{getgrgid{\_}r}{732}{\code {getgrgid_r}} +\entry{getgrnam}{733}{\code {getgrnam}} +\entry{getgrnam{\_}r}{733}{\code {getgrnam_r}} +\entry{fgetgrent}{733}{\code {fgetgrent}} +\entry{fgetgrent{\_}r}{733}{\code {fgetgrent_r}} +\entry{setgrent}{733}{\code {setgrent}} +\entry{getgrent}{734}{\code {getgrent}} +\entry{getgrent{\_}r}{734}{\code {getgrent_r}} +\entry{endgrent}{734}{\code {endgrent}} +\entry{setnetgrent}{736}{\code {setnetgrent}} +\entry{getnetgrent}{736}{\code {getnetgrent}} +\entry{getnetgrent{\_}r}{737}{\code {getnetgrent_r}} +\entry{endnetgrent}{737}{\code {endnetgrent}} +\entry{innetgr}{737}{\code {innetgr}} +\entry{gethostname}{739}{\code {gethostname}} +\entry{sethostname}{740}{\code {sethostname}} +\entry{getdomainnname}{740}{\code {getdomainnname}} +\entry{setdomainnname}{740}{\code {setdomainnname}} +\entry{gethostid}{740}{\code {gethostid}} +\entry{sethostid}{741}{\code {sethostid}} +\entry{uname}{742}{\code {uname}} +\entry{setfsent}{744}{\code {setfsent}} +\entry{endfsent}{744}{\code {endfsent}} +\entry{getfsent}{745}{\code {getfsent}} +\entry{getfsspec}{745}{\code {getfsspec}} +\entry{getfsfile}{745}{\code {getfsfile}} +\entry{setmntent}{747}{\code {setmntent}} +\entry{endmntent}{747}{\code {endmntent}} +\entry{getmntent}{747}{\code {getmntent}} +\entry{getmntent{\_}r}{748}{\code {getmntent_r}} +\entry{addmntent}{748}{\code {addmntent}} +\entry{hasmntopt}{748}{\code {hasmntopt}} +\entry{mount}{749}{\code {mount}} +\entry{umount2}{752}{\code {umount2}} +\entry{umount}{752}{\code {umount}} +\entry{sysctl}{753}{\code {sysctl}} +\entry{getloadavg}{754}{\code {getloadavg}} +\entry{sysconf}{758}{\code {sysconf}} +\entry{pathconf}{770}{\code {pathconf}} +\entry{fpathconf}{771}{\code {fpathconf}} +\entry{confstr}{773}{\code {confstr}} +\entry{getpass}{778}{\code {getpass}} +\entry{crypt}{779}{\code {crypt}} +\entry{crypt{\_}r}{781}{\code {crypt_r}} +\entry{setkey}{781}{\code {setkey}} +\entry{encrypt}{782}{\code {encrypt}} +\entry{setkey{\_}r}{782}{\code {setkey_r}} +\entry{encrypt{\_}r}{782}{\code {encrypt_r}} +\entry{ecb{\_}crypt}{782}{\code {ecb_crypt}} +\entry{DES{\_}ENCRYPT}{782}{\code {DES_ENCRYPT}} +\entry{DES{\_}DECRYPT}{782}{\code {DES_DECRYPT}} +\entry{DES{\_}HW}{782}{\code {DES_HW}} +\entry{DES{\_}SW}{782}{\code {DES_SW}} +\entry{DESERR{\_}NONE}{783}{\code {DESERR_NONE}} +\entry{DESERR{\_}NOHWDEVICE}{783}{\code {DESERR_NOHWDEVICE}} +\entry{DESERR{\_}HWERROR}{783}{\code {DESERR_HWERROR}} +\entry{DESERR{\_}BADPARAM}{783}{\code {DESERR_BADPARAM}} +\entry{DES{\_}FAILED}{783}{\code {DES_FAILED}} +\entry{cbc{\_}crypt}{783}{\code {cbc_crypt}} +\entry{des{\_}setparity}{783}{\code {des_setparity}} +\entry{pthread{\_}create}{785}{\code {pthread_create}} +\entry{pthread{\_}exit}{785}{\code {pthread_exit}} +\entry{pthread{\_}cancel}{786}{\code {pthread_cancel}} +\entry{pthread{\_}join}{786}{\code {pthread_join}} +\entry{pthread{\_}attr{\_}init}{786}{\code {pthread_attr_init}} +\entry{pthread{\_}attr{\_}destroy}{787}{\code {pthread_attr_destroy}} +\entry{pthread{\_}attr{\_}setdetachstate}{787}{\code {pthread_attr_setdetachstate}} +\entry{pthread{\_}attr{\_}setguardsize}{787}{\code {pthread_attr_setguardsize}} +\entry{pthread{\_}attr{\_}setinheritsched}{787}{\code {pthread_attr_setinheritsched}} +\entry{pthread{\_}attr{\_}setschedparam}{787}{\code {pthread_attr_setschedparam}} +\entry{pthread{\_}attr{\_}setschedpolicy}{787}{\code {pthread_attr_setschedpolicy}} +\entry{pthread{\_}attr{\_}setscope}{787}{\code {pthread_attr_setscope}} +\entry{pthread{\_}attr{\_}setstack}{787}{\code {pthread_attr_setstack}} +\entry{pthread{\_}attr{\_}setstackaddr}{787}{\code {pthread_attr_setstackaddr}} +\entry{pthread{\_}attr{\_}setstacksize}{787}{\code {pthread_attr_setstacksize}} +\entry{pthread{\_}attr{\_}setattr}{787}{\code {pthread_attr_setattr}} +\entry{pthread{\_}attr{\_}getdetachstate}{787}{\code {pthread_attr_getdetachstate}} +\entry{pthread{\_}attr{\_}getguardsize}{787}{\code {pthread_attr_getguardsize}} +\entry{pthread{\_}attr{\_}getinheritsched}{787}{\code {pthread_attr_getinheritsched}} +\entry{pthread{\_}attr{\_}getschedparam}{787}{\code {pthread_attr_getschedparam}} +\entry{pthread{\_}attr{\_}getschedpolicy}{787}{\code {pthread_attr_getschedpolicy}} +\entry{pthread{\_}attr{\_}getscope}{787}{\code {pthread_attr_getscope}} +\entry{pthread{\_}attr{\_}getstack}{787}{\code {pthread_attr_getstack}} +\entry{pthread{\_}attr{\_}getstackaddr}{787}{\code {pthread_attr_getstackaddr}} +\entry{pthread{\_}attr{\_}getstacksize}{787}{\code {pthread_attr_getstacksize}} +\entry{pthread{\_}attr{\_}getattr}{787}{\code {pthread_attr_getattr}} +\entry{pthread{\_}setcancelstate}{789}{\code {pthread_setcancelstate}} +\entry{pthread{\_}setcanceltype}{790}{\code {pthread_setcanceltype}} +\entry{pthread{\_}testcancel}{790}{\code {pthread_testcancel}} +\entry{pthread{\_}cleanup{\_}push}{791}{\code {pthread_cleanup_push}} +\entry{pthread{\_}cleanup{\_}pop}{791}{\code {pthread_cleanup_pop}} +\entry{pthread{\_}cleanup{\_}push{\_}defer{\_}np}{791}{\code {pthread_cleanup_push_defer_np}} +\entry{pthread{\_}cleanup{\_}pop{\_}restore{\_}np}{791}{\code {pthread_cleanup_pop_restore_np}} +\entry{pthread{\_}mutex{\_}init}{792}{\code {pthread_mutex_init}} +\entry{pthread{\_}mutex{\_}lock}{793}{\code {pthread_mutex_lock}} +\entry{pthread{\_}mutex{\_}trylock}{793}{\code {pthread_mutex_trylock}} +\entry{pthread{\_}mutex{\_}timedlock}{793}{\code {pthread_mutex_timedlock}} +\entry{pthread{\_}mutex{\_}unlock}{793}{\code {pthread_mutex_unlock}} +\entry{pthread{\_}mutex{\_}destroy}{794}{\code {pthread_mutex_destroy}} +\entry{pthread{\_}mutexattr{\_}init}{794}{\code {pthread_mutexattr_init}} +\entry{pthread{\_}mutexattr{\_}destroy}{794}{\code {pthread_mutexattr_destroy}} +\entry{pthread{\_}mutexattr{\_}settype}{795}{\code {pthread_mutexattr_settype}} +\entry{pthread{\_}mutexattr{\_}gettype}{795}{\code {pthread_mutexattr_gettype}} +\entry{pthread{\_}cond{\_}init}{795}{\code {pthread_cond_init}} +\entry{pthread{\_}cond{\_}signal}{796}{\code {pthread_cond_signal}} +\entry{pthread{\_}cond{\_}broadcast}{796}{\code {pthread_cond_broadcast}} +\entry{pthread{\_}cond{\_}wait}{796}{\code {pthread_cond_wait}} +\entry{pthread{\_}cond{\_}timedwait}{796}{\code {pthread_cond_timedwait}} +\entry{pthread{\_}cond{\_}destroy}{796}{\code {pthread_cond_destroy}} +\entry{pthread{\_}condattr{\_}init}{798}{\code {pthread_condattr_init}} +\entry{pthread{\_}condattr{\_}destroy}{798}{\code {pthread_condattr_destroy}} +\entry{sem{\_}init}{798}{\code {sem_init}} +\entry{sem{\_}destroy}{798}{\code {sem_destroy}} +\entry{sem{\_}wait}{799}{\code {sem_wait}} +\entry{sem{\_}trywait}{799}{\code {sem_trywait}} +\entry{sem{\_}post}{799}{\code {sem_post}} +\entry{sem{\_}getvalue}{799}{\code {sem_getvalue}} +\entry{pthread{\_}key{\_}create}{799}{\code {pthread_key_create}} +\entry{pthread{\_}key{\_}delete}{800}{\code {pthread_key_delete}} +\entry{pthread{\_}setspecific}{800}{\code {pthread_setspecific}} +\entry{pthread{\_}getspecific}{800}{\code {pthread_getspecific}} +\entry{pthread{\_}sigmask}{801}{\code {pthread_sigmask}} +\entry{pthread{\_}kill}{801}{\code {pthread_kill}} +\entry{sigwait}{802}{\code {sigwait}} +\entry{pthread{\_}atfork}{803}{\code {pthread_atfork}} +\entry{pthread{\_}self}{804}{\code {pthread_self}} +\entry{pthread{\_}equal}{804}{\code {pthread_equal}} +\entry{pthread{\_}detach}{805}{\code {pthread_detach}} +\entry{pthread{\_}kill{\_}other{\_}threads{\_}np}{805}{\code {pthread_kill_other_threads_np}} +\entry{pthread{\_}once}{805}{\code {pthread_once}} +\entry{pthread{\_}setschedparam}{806}{\code {pthread_setschedparam}} +\entry{pthread{\_}getschedparam}{806}{\code {pthread_getschedparam}} +\entry{pthread{\_}setconcurrency}{806}{\code {pthread_setconcurrency}} +\entry{pthread{\_}getconcurrency}{806}{\code {pthread_getconcurrency}} +\entry{assert}{807}{\code {assert}} +\entry{assert{\_}perror}{808}{\code {assert_perror}} +\entry{va{\_}start}{812}{\code {va_start}} +\entry{va{\_}arg}{812}{\code {va_arg}} +\entry{va{\_}end}{812}{\code {va_end}} +\entry{{\_}{\_}va{\_}copy}{812}{\code {__va_copy}} +\entry{va{\_}alist}{814}{\code {va_alist}} +\entry{va{\_}dcl}{814}{\code {va_dcl}} +\entry{va{\_}start}{814}{\code {va_start}} +\entry{offsetof}{823}{\code {offsetof}} diff -adurpN glibc-2.2/manual/libc.fns glibc-2.2.1/manual/libc.fns --- glibc-2.2/manual/libc.fns Fri Jun 30 23:40:47 2000 +++ glibc-2.2.1/manual/libc.fns Sun Jan 7 09:11:17 2001 @@ -1,559 +1,562 @@ \initial {(} -\entry {\code {(void)}}{569} +\entry {\code {(void)}}{567} \initial {{\_}} -\entry {\code {__va_copy}}{814} -\entry {\code {_exit}}{668} -\entry {\code {_Exit}}{668} +\entry {\code {__va_copy}}{812} +\entry {\code {_exit}}{666} +\entry {\code {_Exit}}{666} \entry {\code {_tolower}}{69} \entry {\code {_toupper}}{69} \initial {A} -\entry {\code {a64l}}{99} -\entry {\code {abort}}{668} -\entry {\code {abs}}{505} -\entry {\code {accept}}{409} -\entry {\code {access}}{365} -\entry {\code {acos}}{468} -\entry {\code {acosf}}{468} -\entry {\code {acosh}}{474} -\entry {\code {acoshf}}{474} -\entry {\code {acoshl}}{474} -\entry {\code {acosl}}{468} -\entry {\code {addmntent}}{750} -\entry {\code {addseverity}}{284} -\entry {\code {adjtime}}{530} -\entry {\code {adjtimex}}{530} -\entry {\code {aio_cancel}}{317} -\entry {\code {aio_cancel64}}{318} -\entry {\code {aio_error}}{314} -\entry {\code {aio_error64}}{314} -\entry {\code {aio_fsync}}{315} -\entry {\code {aio_fsync64}}{316} -\entry {\code {aio_init}}{319} -\entry {\code {aio_read}}{310} -\entry {\code {aio_read64}}{311} -\entry {\code {aio_return}}{315} -\entry {\code {aio_return64}}{315} -\entry {\code {aio_suspend}}{316} -\entry {\code {aio_suspend64}}{317} -\entry {\code {aio_write}}{311} -\entry {\code {aio_write64}}{312} -\entry {\code {alarm}}{554} +\entry {\code {a64l}}{101} +\entry {\code {abort}}{666} +\entry {\code {abs}}{503} +\entry {\code {accept}}{407} +\entry {\code {access}}{363} +\entry {\code {acos}}{466} +\entry {\code {acosf}}{466} +\entry {\code {acosh}}{472} +\entry {\code {acoshf}}{472} +\entry {\code {acoshl}}{472} +\entry {\code {acosl}}{466} +\entry {\code {addmntent}}{748} +\entry {\code {addseverity}}{283} +\entry {\code {adjtime}}{528} +\entry {\code {adjtimex}}{528} +\entry {\code {aio_cancel}}{315} +\entry {\code {aio_cancel64}}{316} +\entry {\code {aio_error}}{312} +\entry {\code {aio_error64}}{312} +\entry {\code {aio_fsync}}{313} +\entry {\code {aio_fsync64}}{314} +\entry {\code {aio_init}}{317} +\entry {\code {aio_read}}{308} +\entry {\code {aio_read64}}{309} +\entry {\code {aio_return}}{313} +\entry {\code {aio_return64}}{313} +\entry {\code {aio_suspend}}{314} +\entry {\code {aio_suspend64}}{315} +\entry {\code {aio_write}}{309} +\entry {\code {aio_write64}}{310} +\entry {\code {alarm}}{552} \entry {\code {alloca}}{60} -\entry {\code {alphasort}}{341} -\entry {\code {alphasort64}}{342} -\entry {\code {argp_error}}{641} -\entry {\code {argp_failure}}{641} -\entry {\code {argp_help}}{646} -\entry {\code {argp_parse}}{634} -\entry {\code {argp_state_help}}{642} -\entry {\code {argp_usage}}{641} -\entry {\code {argz_add}}{101} -\entry {\code {argz_add_sep}}{101} -\entry {\code {argz_append}}{101} -\entry {\code {argz_count}}{101} -\entry {\code {argz_create}}{100} -\entry {\code {argz_create_sep}}{101} -\entry {\code {argz_delete}}{101} -\entry {\code {argz_extract}}{101} -\entry {\code {argz_insert}}{102} -\entry {\code {argz_next}}{102} -\entry {\code {argz_replace}}{102} -\entry {\code {argz_stringify}}{101} -\entry {\code {asctime}}{536} -\entry {\code {asctime_r}}{536} -\entry {\code {asin}}{468} -\entry {\code {asinf}}{468} -\entry {\code {asinh}}{474} -\entry {\code {asinhf}}{474} -\entry {\code {asinhl}}{474} -\entry {\code {asinl}}{468} -\entry {\code {asprintf}}{248} -\entry {\code {assert}}{809} -\entry {\code {assert_perror}}{810} -\entry {\code {atan}}{468} -\entry {\code {atan2}}{468} -\entry {\code {atan2f}}{468} -\entry {\code {atan2l}}{468} -\entry {\code {atanf}}{468} -\entry {\code {atanh}}{474} -\entry {\code {atanhf}}{474} -\entry {\code {atanhl}}{474} -\entry {\code {atanl}}{468} -\entry {\code {atexit}}{667} -\entry {\code {atof}}{519} -\entry {\code {atoi}}{517} -\entry {\code {atol}}{516} -\entry {\code {atoll}}{517} +\entry {\code {alphasort}}{340} +\entry {\code {alphasort64}}{340} +\entry {\code {argp_error}}{640} +\entry {\code {argp_failure}}{640} +\entry {\code {argp_help}}{645} +\entry {\code {argp_parse}}{632} +\entry {\code {argp_state_help}}{640} +\entry {\code {argp_usage}}{639} +\entry {\code {argz_add}}{102} +\entry {\code {argz_add_sep}}{102} +\entry {\code {argz_append}}{103} +\entry {\code {argz_count}}{102} +\entry {\code {argz_create}}{102} +\entry {\code {argz_create_sep}}{102} +\entry {\code {argz_delete}}{103} +\entry {\code {argz_extract}}{102} +\entry {\code {argz_insert}}{103} +\entry {\code {argz_next}}{103} +\entry {\code {argz_replace}}{103} +\entry {\code {argz_stringify}}{102} +\entry {\code {asctime}}{534} +\entry {\code {asctime_r}}{534} +\entry {\code {asin}}{466} +\entry {\code {asinf}}{466} +\entry {\code {asinh}}{472} +\entry {\code {asinhf}}{472} +\entry {\code {asinhl}}{472} +\entry {\code {asinl}}{466} +\entry {\code {asprintf}}{246} +\entry {\code {assert}}{807} +\entry {\code {assert_perror}}{808} +\entry {\code {atan}}{466} +\entry {\code {atan2}}{466} +\entry {\code {atan2f}}{466} +\entry {\code {atan2l}}{466} +\entry {\code {atanf}}{466} +\entry {\code {atanh}}{472} +\entry {\code {atanhf}}{472} +\entry {\code {atanhl}}{472} +\entry {\code {atanl}}{466} +\entry {\code {atexit}}{665} +\entry {\code {atof}}{517} +\entry {\code {atoi}}{515} +\entry {\code {atol}}{514} +\entry {\code {atoll}}{515} \initial {B} +\entry {\code {basename}}{97, 98} \entry {\code {bcmp}}{89} \entry {\code {bcopy}}{86} -\entry {\code {bind}}{385} +\entry {\code {bind}}{383} \entry {\code {bind_textdomain_codeset}}{185} \entry {\code {bindtextdomain}}{180} \entry {\code {brk}}{62} -\entry {\code {bsearch}}{194} +\entry {\code {bsearch}}{192} \entry {\code {btowc}}{112} \entry {\code {bzero}}{86} \initial {C} -\entry {\code {cabs}}{505} -\entry {\code {cabsf}}{505} -\entry {\code {cabsl}}{505} -\entry {\code {cacos}}{469} -\entry {\code {cacosf}}{469} -\entry {\code {cacosh}}{474} -\entry {\code {cacoshf}}{474} -\entry {\code {cacoshl}}{474} -\entry {\code {cacosl}}{469} +\entry {\code {cabs}}{503} +\entry {\code {cabsf}}{503} +\entry {\code {cabsl}}{503} +\entry {\code {cacos}}{467} +\entry {\code {cacosf}}{467} +\entry {\code {cacosh}}{472} +\entry {\code {cacoshf}}{472} +\entry {\code {cacoshl}}{472} +\entry {\code {cacosl}}{467} \entry {\code {calloc}}{37} -\entry {\code {carg}}{514} -\entry {\code {cargf}}{514} -\entry {\code {cargl}}{514} -\entry {\code {casin}}{469} -\entry {\code {casinf}}{469} -\entry {\code {casinh}}{474} -\entry {\code {casinhf}}{474} -\entry {\code {casinhl}}{474} -\entry {\code {casinl}}{469} -\entry {\code {catan}}{469} -\entry {\code {catanf}}{469} -\entry {\code {catanh}}{475} -\entry {\code {catanhf}}{475} -\entry {\code {catanhl}}{475} -\entry {\code {catanl}}{469} +\entry {\code {carg}}{512} +\entry {\code {cargf}}{512} +\entry {\code {cargl}}{512} +\entry {\code {casin}}{467} +\entry {\code {casinf}}{467} +\entry {\code {casinh}}{472} +\entry {\code {casinhf}}{472} +\entry {\code {casinhl}}{472} +\entry {\code {casinl}}{467} +\entry {\code {catan}}{467} +\entry {\code {catanf}}{467} +\entry {\code {catanh}}{473} +\entry {\code {catanhf}}{473} +\entry {\code {catanhl}}{473} +\entry {\code {catanl}}{467} \entry {\code {catclose}}{170} \entry {\code {catgets}}{170} \entry {\code {catopen}}{167} -\entry {\code {cbc_crypt}}{785} -\entry {\code {cbrt}}{471} -\entry {\code {cbrtf}}{471} -\entry {\code {cbrtl}}{471} -\entry {\code {ccos}}{467} -\entry {\code {ccosf}}{467} -\entry {\code {ccosh}}{474} -\entry {\code {ccoshf}}{474} -\entry {\code {ccoshl}}{474} -\entry {\code {ccosl}}{467} -\entry {\code {ceil}}{507} -\entry {\code {ceilf}}{507} -\entry {\code {ceill}}{507} -\entry {\code {cexp}}{472} -\entry {\code {cexpf}}{472} -\entry {\code {cexpl}}{472} -\entry {\code {cfgetispeed}}{442} -\entry {\code {cfgetospeed}}{442} -\entry {\code {cfmakeraw}}{448} +\entry {\code {cbc_crypt}}{783} +\entry {\code {cbrt}}{469} +\entry {\code {cbrtf}}{469} +\entry {\code {cbrtl}}{469} +\entry {\code {ccos}}{465} +\entry {\code {ccosf}}{465} +\entry {\code {ccosh}}{472} +\entry {\code {ccoshf}}{472} +\entry {\code {ccoshl}}{472} +\entry {\code {ccosl}}{465} +\entry {\code {ceil}}{505} +\entry {\code {ceilf}}{505} +\entry {\code {ceill}}{505} +\entry {\code {cexp}}{470} +\entry {\code {cexpf}}{470} +\entry {\code {cexpl}}{470} +\entry {\code {cfgetispeed}}{440} +\entry {\code {cfgetospeed}}{440} +\entry {\code {cfmakeraw}}{446} \entry {\code {cfree}}{36} -\entry {\code {cfsetispeed}}{442} -\entry {\code {cfsetospeed}}{442} -\entry {\code {cfsetspeed}}{442} -\entry {\code {chdir}}{336} -\entry {\code {chmod}}{363} -\entry {\code {chown}}{360} -\entry {\code {cimag}}{514} -\entry {\code {cimagf}}{514} -\entry {\code {cimagl}}{514} -\entry {\code {clearenv}}{661} -\entry {\code {clearerr}}{267} -\entry {\code {clock}}{526} -\entry {\code {clog}}{472} -\entry {\code {clog10}}{472} -\entry {\code {clog10f}}{472} -\entry {\code {clog10l}}{472} -\entry {\code {clogf}}{472} -\entry {\code {clogl}}{472} -\entry {\code {close}}{289} -\entry {\code {closedir}}{339} -\entry {\code {closelog}}{462} -\entry {\code {confstr}}{775} -\entry {\code {conj}}{514} -\entry {\code {conjf}}{514} -\entry {\code {conjl}}{514} -\entry {\code {connect}}{407} -\entry {\code {copysign}}{510} -\entry {\code {copysignf}}{510} -\entry {\code {copysignl}}{510} -\entry {\code {cos}}{466} -\entry {\code {cosf}}{466} -\entry {\code {cosh}}{473} -\entry {\code {coshf}}{473} -\entry {\code {coshl}}{473} -\entry {\code {cosl}}{466} -\entry {\code {cpow}}{473} -\entry {\code {cpowf}}{473} -\entry {\code {cpowl}}{473} -\entry {\code {cproj}}{514} -\entry {\code {cprojf}}{514} -\entry {\code {cprojl}}{514} -\entry {\code {creal}}{514} -\entry {\code {crealf}}{514} -\entry {\code {creall}}{514} -\entry {\code {creat}}{288} -\entry {\code {creat64}}{289} -\entry {\code {crypt}}{781} -\entry {\code {crypt_r}}{783} -\entry {\code {csin}}{467} -\entry {\code {csinf}}{467} -\entry {\code {csinh}}{473} -\entry {\code {csinhf}}{473} -\entry {\code {csinhl}}{473} -\entry {\code {csinl}}{467} -\entry {\code {csqrt}}{473} -\entry {\code {csqrtf}}{473} -\entry {\code {csqrtl}}{473} -\entry {\code {ctan}}{467} -\entry {\code {ctanf}}{467} -\entry {\code {ctanh}}{474} -\entry {\code {ctanhf}}{474} -\entry {\code {ctanhl}}{474} -\entry {\code {ctanl}}{467} -\entry {\code {ctermid}}{698} -\entry {\code {ctime}}{537} -\entry {\code {ctime_r}}{537} -\entry {\code {cuserid}}{722} +\entry {\code {cfsetispeed}}{440} +\entry {\code {cfsetospeed}}{440} +\entry {\code {cfsetspeed}}{440} +\entry {\code {chdir}}{334} +\entry {\code {chmod}}{361, 362} +\entry {\code {chown}}{358} +\entry {\code {cimag}}{512} +\entry {\code {cimagf}}{512} +\entry {\code {cimagl}}{512} +\entry {\code {clearenv}}{659} +\entry {\code {clearerr}}{266} +\entry {\code {clock}}{524} +\entry {\code {clog}}{470} +\entry {\code {clog10}}{470} +\entry {\code {clog10f}}{470} +\entry {\code {clog10l}}{470} +\entry {\code {clogf}}{470} +\entry {\code {clogl}}{470} +\entry {\code {close}}{287} +\entry {\code {closedir}}{338} +\entry {\code {closelog}}{460} +\entry {\code {confstr}}{773} +\entry {\code {conj}}{512} +\entry {\code {conjf}}{512} +\entry {\code {conjl}}{512} +\entry {\code {connect}}{405} +\entry {\code {copysign}}{508} +\entry {\code {copysignf}}{508} +\entry {\code {copysignl}}{508} +\entry {\code {cos}}{464} +\entry {\code {cosf}}{464} +\entry {\code {cosh}}{471} +\entry {\code {coshf}}{471} +\entry {\code {coshl}}{471} +\entry {\code {cosl}}{464} +\entry {\code {cpow}}{471} +\entry {\code {cpowf}}{471} +\entry {\code {cpowl}}{471} +\entry {\code {cproj}}{512} +\entry {\code {cprojf}}{512} +\entry {\code {cprojl}}{512} +\entry {\code {creal}}{512} +\entry {\code {crealf}}{512} +\entry {\code {creall}}{512} +\entry {\code {creat}}{286} +\entry {\code {creat64}}{287} +\entry {\code {crypt}}{779} +\entry {\code {crypt_r}}{781} +\entry {\code {csin}}{465} +\entry {\code {csinf}}{465} +\entry {\code {csinh}}{471} +\entry {\code {csinhf}}{471} +\entry {\code {csinhl}}{471} +\entry {\code {csinl}}{465} +\entry {\code {csqrt}}{471} +\entry {\code {csqrtf}}{471} +\entry {\code {csqrtl}}{471} +\entry {\code {ctan}}{465} +\entry {\code {ctanf}}{465} +\entry {\code {ctanh}}{472} +\entry {\code {ctanhf}}{472} +\entry {\code {ctanhl}}{472} +\entry {\code {ctanl}}{465} +\entry {\code {ctermid}}{696} +\entry {\code {ctime}}{535} +\entry {\code {ctime_r}}{535} +\entry {\code {cuserid}}{720} \initial {D} \entry {\code {dcgettext}}{178} \entry {\code {dcngettext}}{182} -\entry {\code {DES_DECRYPT}}{784} -\entry {\code {DES_ENCRYPT}}{784} -\entry {\code {DES_FAILED}}{785} -\entry {\code {DES_HW}}{784} -\entry {\code {des_setparity}}{785} -\entry {\code {DES_SW}}{784} -\entry {\code {DESERR_BADPARAM}}{785} -\entry {\code {DESERR_HWERROR}}{785} -\entry {\code {DESERR_NOHWDEVICE}}{785} -\entry {\code {DESERR_NONE}}{785} +\entry {\code {DES_DECRYPT}}{782} +\entry {\code {DES_ENCRYPT}}{782} +\entry {\code {DES_FAILED}}{783} +\entry {\code {DES_HW}}{782} +\entry {\code {des_setparity}}{783} +\entry {\code {DES_SW}}{782} +\entry {\code {DESERR_BADPARAM}}{783} +\entry {\code {DESERR_HWERROR}}{783} +\entry {\code {DESERR_NOHWDEVICE}}{783} +\entry {\code {DESERR_NONE}}{783} \entry {\code {dgettext}}{178} -\entry {\code {difftime}}{523} -\entry {\code {div}}{493} +\entry {\code {difftime}}{521} +\entry {\code {dirname}}{98} +\entry {\code {div}}{491} \entry {\code {dngettext}}{182} -\entry {\code {drand48}}{485} -\entry {\code {drand48_r}}{487} -\entry {\code {drem}}{509} -\entry {\code {dremf}}{509} -\entry {\code {dreml}}{509} -\entry {\code {DTTOIF}}{338} -\entry {\code {dup}}{320} -\entry {\code {dup2}}{320} +\entry {\code {drand48}}{483} +\entry {\code {drand48_r}}{485} +\entry {\code {drem}}{507} +\entry {\code {dremf}}{507} +\entry {\code {dreml}}{507} +\entry {\code {DTTOIF}}{336} +\entry {\code {dup}}{318} +\entry {\code {dup2}}{318} \initial {E} -\entry {\code {ecb_crypt}}{784} -\entry {\code {ecvt}}{519} -\entry {\code {ecvt_r}}{520} -\entry {\code {encrypt}}{784} -\entry {\code {encrypt_r}}{784} -\entry {\code {endfsent}}{746} -\entry {\code {endgrent}}{736} -\entry {\code {endhostent}}{398} -\entry {\code {endmntent}}{749} -\entry {\code {endnetent}}{427} -\entry {\code {endnetgrent}}{739} -\entry {\code {endprotoent}}{403} -\entry {\code {endpwent}}{733} -\entry {\code {endservent}}{400} -\entry {\code {endutent}}{725} -\entry {\code {endutxent}}{729} -\entry {\code {envz_add}}{103} -\entry {\code {envz_entry}}{103} -\entry {\code {envz_get}}{103} -\entry {\code {envz_merge}}{103} -\entry {\code {envz_strip}}{103} -\entry {\code {erand48}}{486} -\entry {\code {erand48_r}}{488} -\entry {\code {erf}}{475} -\entry {\code {erfc}}{475} -\entry {\code {erfcf}}{475} -\entry {\code {erfcl}}{475} -\entry {\code {erff}}{475} -\entry {\code {erfl}}{475} -\entry {\code {execl}}{674} -\entry {\code {execle}}{674} -\entry {\code {execlp}}{675} -\entry {\code {execv}}{674} -\entry {\code {execve}}{674} -\entry {\code {execvp}}{675} -\entry {\code {exit}}{665} -\entry {\code {exp}}{469} -\entry {\code {exp10}}{469} -\entry {\code {exp10f}}{469} -\entry {\code {exp10l}}{469} -\entry {\code {exp2}}{469} -\entry {\code {exp2f}}{469} -\entry {\code {exp2l}}{469} -\entry {\code {expf}}{469} -\entry {\code {expl}}{469} -\entry {\code {expm1}}{472} -\entry {\code {expm1f}}{472} -\entry {\code {expm1l}}{472} +\entry {\code {ecb_crypt}}{782} +\entry {\code {ecvt}}{517} +\entry {\code {ecvt_r}}{518} +\entry {\code {encrypt}}{782} +\entry {\code {encrypt_r}}{782} +\entry {\code {endfsent}}{744} +\entry {\code {endgrent}}{734} +\entry {\code {endhostent}}{396} +\entry {\code {endmntent}}{747} +\entry {\code {endnetent}}{425} +\entry {\code {endnetgrent}}{737} +\entry {\code {endprotoent}}{400} +\entry {\code {endpwent}}{731} +\entry {\code {endservent}}{398} +\entry {\code {endutent}}{723} +\entry {\code {endutxent}}{727} +\entry {\code {envz_add}}{104} +\entry {\code {envz_entry}}{104} +\entry {\code {envz_get}}{104} +\entry {\code {envz_merge}}{104} +\entry {\code {envz_strip}}{104} +\entry {\code {erand48}}{484} +\entry {\code {erand48_r}}{486} +\entry {\code {erf}}{473} +\entry {\code {erfc}}{473} +\entry {\code {erfcf}}{473} +\entry {\code {erfcl}}{473} +\entry {\code {erff}}{473} +\entry {\code {erfl}}{473} +\entry {\code {execl}}{672} +\entry {\code {execle}}{672} +\entry {\code {execlp}}{673} +\entry {\code {execv}}{672} +\entry {\code {execve}}{672} +\entry {\code {execvp}}{673} +\entry {\code {exit}}{663} +\entry {\code {exp}}{467} +\entry {\code {exp10}}{467} +\entry {\code {exp10f}}{467} +\entry {\code {exp10l}}{467} +\entry {\code {exp2}}{467} +\entry {\code {exp2f}}{467} +\entry {\code {exp2l}}{467} +\entry {\code {expf}}{467} +\entry {\code {expl}}{467} +\entry {\code {expm1}}{470} +\entry {\code {expm1f}}{470} +\entry {\code {expm1l}}{470} \initial {F} -\entry {\code {fabs}}{505} -\entry {\code {fabsf}}{505} -\entry {\code {fabsl}}{505} -\entry {\code {fchmod}}{364} -\entry {\code {fchown}}{360} -\entry {\code {fclean}}{299} -\entry {\code {fclose}}{231} -\entry {\code {fcloseall}}{231} -\entry {\code {fcntl}}{319} -\entry {\code {fcvt}}{520} -\entry {\code {fcvt_r}}{521} -\entry {\code {FD_CLR}}{304} -\entry {\code {FD_ISSET}}{304} -\entry {\code {FD_SET}}{304} -\entry {\code {FD_ZERO}}{304} -\entry {\code {fdatasync}}{307} -\entry {\code {fdim}}{512} -\entry {\code {fdimf}}{512} -\entry {\code {fdiml}}{512} -\entry {\code {fdopen}}{297} -\entry {\code {feclearexcept}}{499} -\entry {\code {fedisableexcept}}{504} -\entry {\code {feenableexcept}}{504} -\entry {\code {fegetenv}}{503} -\entry {\code {fegetexcept}}{504} -\entry {\code {fegetexceptflag}}{500} -\entry {\code {fegetround}}{502} -\entry {\code {feholdexcept}}{503} -\entry {\code {feof}}{267} -\entry {\code {feraiseexcept}}{500} -\entry {\code {ferror}}{267} -\entry {\code {fesetenv}}{504} -\entry {\code {fesetexceptflag}}{500} -\entry {\code {fesetround}}{503} -\entry {\code {fetestexcept}}{500} -\entry {\code {feupdateenv}}{504} -\entry {\code {fflush}}{274} -\entry {\code {fgetc}}{233} -\entry {\code {fgetgrent}}{735} -\entry {\code {fgetgrent_r}}{735} -\entry {\code {fgetpos}}{272} -\entry {\code {fgetpos64}}{272} -\entry {\code {fgetpwent}}{732} -\entry {\code {fgetpwent_r}}{732} -\entry {\code {fgets}}{235} -\entry {\code {fileno}}{297} -\entry {\code {finite}}{496} -\entry {\code {finitef}}{496} -\entry {\code {finitel}}{496} -\entry {\code {floor}}{507} -\entry {\code {floorf}}{507} -\entry {\code {floorl}}{507} -\entry {\code {fma}}{512} -\entry {\code {fmaf}}{512} -\entry {\code {fmal}}{512} -\entry {\code {fmax}}{512} -\entry {\code {fmaxf}}{512} -\entry {\code {fmaxl}}{512} -\entry {\code {fmemopen}}{276} -\entry {\code {fmin}}{512} -\entry {\code {fminf}}{512} -\entry {\code {fminl}}{512} -\entry {\code {fmod}}{509} -\entry {\code {fmodf}}{509} -\entry {\code {fmodl}}{509} -\entry {\code {fmtmsg}}{282} -\entry {\code {fnmatch}}{203} -\entry {\code {fopen}}{228} -\entry {\code {fopen64}}{229} -\entry {\code {fopencookie}}{280} -\entry {\code {fork}}{673} -\entry {\code {forkpty}}{455} -\entry {\code {fpathconf}}{773} -\entry {\code {fpclassify}}{494} -\entry {\code {fprintf}}{246} -\entry {\code {fputc}}{232} -\entry {\code {fputs}}{232} -\entry {\code {fread}}{237} +\entry {\code {fabs}}{503} +\entry {\code {fabsf}}{503} +\entry {\code {fabsl}}{503} +\entry {\code {fchmod}}{362} +\entry {\code {fchown}}{358} +\entry {\code {fclean}}{297} +\entry {\code {fclose}}{229} +\entry {\code {fcloseall}}{229} +\entry {\code {fcntl}}{317} +\entry {\code {fcvt}}{518} +\entry {\code {fcvt_r}}{519} +\entry {\code {FD_CLR}}{302} +\entry {\code {FD_ISSET}}{302} +\entry {\code {FD_SET}}{302} +\entry {\code {FD_ZERO}}{302} +\entry {\code {fdatasync}}{305} +\entry {\code {fdim}}{510} +\entry {\code {fdimf}}{510} +\entry {\code {fdiml}}{510} +\entry {\code {fdopen}}{295} +\entry {\code {feclearexcept}}{497} +\entry {\code {fedisableexcept}}{502} +\entry {\code {feenableexcept}}{502} +\entry {\code {fegetenv}}{501} +\entry {\code {fegetexcept}}{502} +\entry {\code {fegetexceptflag}}{498} +\entry {\code {fegetround}}{500} +\entry {\code {feholdexcept}}{501} +\entry {\code {feof}}{265} +\entry {\code {feraiseexcept}}{498} +\entry {\code {ferror}}{266} +\entry {\code {fesetenv}}{502} +\entry {\code {fesetexceptflag}}{498} +\entry {\code {fesetround}}{501} +\entry {\code {fetestexcept}}{498} +\entry {\code {feupdateenv}}{502} +\entry {\code {fflush}}{273} +\entry {\code {fgetc}}{231} +\entry {\code {fgetgrent}}{733} +\entry {\code {fgetgrent_r}}{733} +\entry {\code {fgetpos}}{271} +\entry {\code {fgetpos64}}{271} +\entry {\code {fgetpwent}}{730} +\entry {\code {fgetpwent_r}}{730} +\entry {\code {fgets}}{233} +\entry {\code {fileno}}{295} +\entry {\code {finite}}{494} +\entry {\code {finitef}}{494} +\entry {\code {finitel}}{494} +\entry {\code {floor}}{505} +\entry {\code {floorf}}{505} +\entry {\code {floorl}}{505} +\entry {\code {fma}}{510} +\entry {\code {fmaf}}{510} +\entry {\code {fmal}}{510} +\entry {\code {fmax}}{510} +\entry {\code {fmaxf}}{510} +\entry {\code {fmaxl}}{510} +\entry {\code {fmemopen}}{275} +\entry {\code {fmin}}{510} +\entry {\code {fminf}}{510} +\entry {\code {fminl}}{510} +\entry {\code {fmod}}{507} +\entry {\code {fmodf}}{507} +\entry {\code {fmodl}}{507} +\entry {\code {fmtmsg}}{280} +\entry {\code {fnmatch}}{201} +\entry {\code {fopen}}{226} +\entry {\code {fopen64}}{227} +\entry {\code {fopencookie}}{278} +\entry {\code {fork}}{671} +\entry {\code {forkpty}}{453} +\entry {\code {fpathconf}}{771} +\entry {\code {fpclassify}}{492} +\entry {\code {fprintf}}{244} +\entry {\code {fputc}}{230} +\entry {\code {fputs}}{230} +\entry {\code {fread}}{235} \entry {\code {free}}{35} -\entry {\code {freopen}}{230} -\entry {\code {freopen64}}{230} -\entry {\code {frexp}}{506} -\entry {\code {frexpf}}{506} -\entry {\code {frexpl}}{506} -\entry {\code {fscanf}}{266} -\entry {\code {fseek}}{270} -\entry {\code {fseeko}}{270} -\entry {\code {fseeko64}}{270} -\entry {\code {fsetpos}}{272} -\entry {\code {fsetpos64}}{273} -\entry {\code {fstat}}{357} -\entry {\code {fstat64}}{357} -\entry {\code {fsync}}{307} -\entry {\code {ftell}}{269} -\entry {\code {ftello}}{269} -\entry {\code {ftello64}}{269} -\entry {\code {ftruncate}}{368} -\entry {\code {ftruncate64}}{369} -\entry {\code {ftw}}{345} -\entry {\code {ftw64}}{345} -\entry {\code {fwrite}}{238} +\entry {\code {freopen}}{228} +\entry {\code {freopen64}}{228} +\entry {\code {frexp}}{504} +\entry {\code {frexpf}}{504} +\entry {\code {frexpl}}{504} +\entry {\code {fscanf}}{264} +\entry {\code {fseek}}{268} +\entry {\code {fseeko}}{268} +\entry {\code {fseeko64}}{269} +\entry {\code {fsetpos}}{271} +\entry {\code {fsetpos64}}{271} +\entry {\code {fstat}}{355} +\entry {\code {fstat64}}{355} +\entry {\code {fsync}}{305} +\entry {\code {ftell}}{267} +\entry {\code {ftello}}{268} +\entry {\code {ftello64}}{268} +\entry {\code {ftruncate}}{367} +\entry {\code {ftruncate64}}{367} +\entry {\code {ftw}}{343} +\entry {\code {ftw64}}{344} +\entry {\code {fwrite}}{236} \initial {G} -\entry {\code {gamma}}{476} -\entry {\code {gammaf}}{476} -\entry {\code {gammal}}{476} -\entry {\code {gcvt}}{520} -\entry {\code {getc}}{233} -\entry {\code {getchar}}{233} -\entry {\code {getcwd}}{335} -\entry {\code {getdate}}{547} -\entry {\code {getdate_r}}{548} -\entry {\code {getdelim}}{235} -\entry {\code {getdomainnname}}{742} -\entry {\code {getegid}}{715} -\entry {\code {getenv}}{660} -\entry {\code {geteuid}}{715} -\entry {\code {getfsent}}{747} -\entry {\code {getfsfile}}{747} -\entry {\code {getfsspec}}{747} -\entry {\code {getgid}}{715} -\entry {\code {getgrent}}{736} -\entry {\code {getgrent_r}}{736} -\entry {\code {getgrgid}}{734} -\entry {\code {getgrgid_r}}{734} -\entry {\code {getgrnam}}{735} -\entry {\code {getgrnam_r}}{735} -\entry {\code {getgroups}}{715} -\entry {\code {gethostbyaddr}}{396} -\entry {\code {gethostbyaddr_r}}{398} -\entry {\code {gethostbyname}}{396} -\entry {\code {gethostbyname_r}}{397} -\entry {\code {gethostbyname2}}{396} -\entry {\code {gethostbyname2_r}}{398} -\entry {\code {gethostent}}{398} -\entry {\code {gethostid}}{742} -\entry {\code {gethostname}}{741} -\entry {\code {getitimer}}{553} -\entry {\code {getline}}{234} -\entry {\code {getlogin}}{722} -\entry {\code {getmntent}}{749} -\entry {\code {getmntent_r}}{750} -\entry {\code {getnetbyaddr}}{427} -\entry {\code {getnetbyname}}{427} -\entry {\code {getnetent}}{427} -\entry {\code {getnetgrent}}{738} -\entry {\code {getnetgrent_r}}{739} -\entry {\code {getopt}}{627} -\entry {\code {getopt_long}}{631} -\entry {\code {getpass}}{780} -\entry {\code {getpeername}}{409} -\entry {\code {getpgid}}{699} -\entry {\code {getpgrp}}{699} -\entry {\code {getpid}}{672} -\entry {\code {getppid}}{672} -\entry {\code {getpriority}}{571} -\entry {\code {getprotobyname}}{402} -\entry {\code {getprotobynumber}}{402} -\entry {\code {getprotoent}}{402} -\entry {\code {getpt}}{453} -\entry {\code {getpwent}}{733} -\entry {\code {getpwent_r}}{733} -\entry {\code {getpwnam}}{732} -\entry {\code {getpwnam_r}}{732} -\entry {\code {getpwuid}}{731} -\entry {\code {getpwuid_r}}{732} -\entry {\code {getrlimit}}{560} -\entry {\code {getrlimit64}}{560} -\entry {\code {getrusage}}{557} -\entry {\code {gets}}{235} -\entry {\code {getservbyname}}{400} -\entry {\code {getservbyport}}{400} -\entry {\code {getservent}}{400} -\entry {\code {getsid}}{699} -\entry {\code {getsockname}}{385} -\entry {\code {getsockopt}}{424} -\entry {\code {getsubopt}}{657} +\entry {\code {gamma}}{474} +\entry {\code {gammaf}}{474} +\entry {\code {gammal}}{474} +\entry {\code {gcvt}}{518} +\entry {\code {getc}}{231} +\entry {\code {getchar}}{231} +\entry {\code {getcwd}}{333} +\entry {\code {getdate}}{545} +\entry {\code {getdate_r}}{546} +\entry {\code {getdelim}}{233} +\entry {\code {getdomainnname}}{740} +\entry {\code {getegid}}{713} +\entry {\code {getenv}}{658} +\entry {\code {geteuid}}{713} +\entry {\code {getfsent}}{745} +\entry {\code {getfsfile}}{745} +\entry {\code {getfsspec}}{745} +\entry {\code {getgid}}{713} +\entry {\code {getgrent}}{734} +\entry {\code {getgrent_r}}{734} +\entry {\code {getgrgid}}{732} +\entry {\code {getgrgid_r}}{732} +\entry {\code {getgrnam}}{733} +\entry {\code {getgrnam_r}}{733} +\entry {\code {getgroups}}{713} +\entry {\code {gethostbyaddr}}{394} +\entry {\code {gethostbyaddr_r}}{396} +\entry {\code {gethostbyname}}{394} +\entry {\code {gethostbyname_r}}{395} +\entry {\code {gethostbyname2}}{394} +\entry {\code {gethostbyname2_r}}{396} +\entry {\code {gethostent}}{396} +\entry {\code {gethostid}}{740} +\entry {\code {gethostname}}{739} +\entry {\code {getitimer}}{551} +\entry {\code {getline}}{232} +\entry {\code {getloadavg}}{754} +\entry {\code {getlogin}}{720} +\entry {\code {getmntent}}{747} +\entry {\code {getmntent_r}}{748} +\entry {\code {getnetbyaddr}}{425} +\entry {\code {getnetbyname}}{425} +\entry {\code {getnetent}}{425} +\entry {\code {getnetgrent}}{736} +\entry {\code {getnetgrent_r}}{737} +\entry {\code {getopt}}{625} +\entry {\code {getopt_long}}{629} +\entry {\code {getpass}}{778} +\entry {\code {getpeername}}{407} +\entry {\code {getpgid}}{697} +\entry {\code {getpgrp}}{697} +\entry {\code {getpid}}{670} +\entry {\code {getppid}}{670} +\entry {\code {getpriority}}{569} +\entry {\code {getprotobyname}}{400} +\entry {\code {getprotobynumber}}{400} +\entry {\code {getprotoent}}{400} +\entry {\code {getpt}}{451} +\entry {\code {getpwent}}{731} +\entry {\code {getpwent_r}}{731} +\entry {\code {getpwnam}}{730} +\entry {\code {getpwnam_r}}{730} +\entry {\code {getpwuid}}{729} +\entry {\code {getpwuid_r}}{730} +\entry {\code {getrlimit}}{558} +\entry {\code {getrlimit64}}{558} +\entry {\code {getrusage}}{555} +\entry {\code {gets}}{233} +\entry {\code {getservbyname}}{398} +\entry {\code {getservbyport}}{398} +\entry {\code {getservent}}{398} +\entry {\code {getsid}}{697} +\entry {\code {getsockname}}{383} +\entry {\code {getsockopt}}{422} +\entry {\code {getsubopt}}{656} \entry {\code {gettext}}{177} -\entry {\code {gettimeofday}}{529} -\entry {\code {getuid}}{715} -\entry {\code {getumask}}{363} -\entry {\code {getutent}}{725} -\entry {\code {getutent_r}}{726} -\entry {\code {getutid}}{725} -\entry {\code {getutid_r}}{726} -\entry {\code {getutline}}{726} -\entry {\code {getutline_r}}{727} -\entry {\code {getutmp}}{730} -\entry {\code {getutmpx}}{730} -\entry {\code {getutxent}}{729} -\entry {\code {getutxid}}{729} -\entry {\code {getutxline}}{729} -\entry {\code {getw}}{234} -\entry {\code {getwd}}{336} -\entry {\code {glob}}{205} -\entry {\code {globfree}}{209} -\entry {\code {gmtime}}{532} -\entry {\code {gmtime_r}}{532} -\entry {\code {grantpt}}{453} -\entry {\code {gsignal}}{606} -\entry {\code {gtty}}{449} +\entry {\code {gettimeofday}}{527} +\entry {\code {getuid}}{713} +\entry {\code {getumask}}{362} +\entry {\code {getutent}}{723} +\entry {\code {getutent_r}}{724} +\entry {\code {getutid}}{723} +\entry {\code {getutid_r}}{724} +\entry {\code {getutline}}{724} +\entry {\code {getutline_r}}{725} +\entry {\code {getutmp}}{728} +\entry {\code {getutmpx}}{728} +\entry {\code {getutxent}}{727} +\entry {\code {getutxid}}{727} +\entry {\code {getutxline}}{727} +\entry {\code {getw}}{232} +\entry {\code {getwd}}{334} +\entry {\code {glob}}{203} +\entry {\code {globfree}}{207} +\entry {\code {gmtime}}{530} +\entry {\code {gmtime_r}}{530} +\entry {\code {grantpt}}{451} +\entry {\code {gsignal}}{604} +\entry {\code {gtty}}{447} \initial {H} -\entry {\code {hasmntopt}}{750} -\entry {\code {hcreate}}{198} -\entry {\code {hcreate_r}}{199} -\entry {\code {hdestroy}}{198} -\entry {\code {hdestroy_r}}{200} -\entry {\code {hsearch}}{199} -\entry {\code {hsearch_r}}{200} -\entry {\code {htonl}}{401} -\entry {\code {htons}}{401} -\entry {\code {hypot}}{471} -\entry {\code {hypotf}}{471} -\entry {\code {hypotl}}{471} +\entry {\code {hasmntopt}}{748} +\entry {\code {hcreate}}{196} +\entry {\code {hcreate_r}}{197} +\entry {\code {hdestroy}}{196} +\entry {\code {hdestroy_r}}{198} +\entry {\code {hsearch}}{197} +\entry {\code {hsearch_r}}{198} +\entry {\code {htonl}}{399} +\entry {\code {htons}}{399} +\entry {\code {hypot}}{469} +\entry {\code {hypotf}}{469} +\entry {\code {hypotl}}{469} \initial {I} \entry {\code {iconv}}{129} -\entry {\code {iconv_close}}{128} -\entry {\code {iconv_open}}{127} -\entry {\code {if_freenameindex}}{387} -\entry {\code {if_indextoname}}{386} -\entry {\code {if_nameindex}}{386} -\entry {\code {if_nametoindex}}{386} -\entry {\code {IFTODT}}{337} -\entry {\code {ilogb}}{470} -\entry {\code {ilogbf}}{470} -\entry {\code {ilogbl}}{470} -\entry {\code {imaxabs}}{505} -\entry {\code {imaxdiv}}{494} +\entry {\code {iconv_close}}{129} +\entry {\code {iconv_open}}{128} +\entry {\code {if_freenameindex}}{385} +\entry {\code {if_indextoname}}{384} +\entry {\code {if_nameindex}}{384} +\entry {\code {if_nametoindex}}{384} +\entry {\code {IFTODT}}{335} +\entry {\code {ilogb}}{468} +\entry {\code {ilogbf}}{468} +\entry {\code {ilogbl}}{468} +\entry {\code {imaxabs}}{503} +\entry {\code {imaxdiv}}{492} \entry {\code {index}}{94} -\entry {\code {inet_addr}}{394} -\entry {\code {inet_aton}}{394} -\entry {\code {inet_lnaof}}{394} -\entry {\code {inet_makeaddr}}{394} -\entry {\code {inet_netof}}{395} -\entry {\code {inet_network}}{394} -\entry {\code {inet_ntoa}}{394} -\entry {\code {inet_ntop}}{395} -\entry {\code {inet_pton}}{395} -\entry {\code {infnan}}{496} -\entry {\code {initgroups}}{718} -\entry {\code {initstate}}{485} -\entry {\code {innetgr}}{739} -\entry {\code {int}}{664} -\entry {\code {ioctl}}{333} +\entry {\code {inet_addr}}{392} +\entry {\code {inet_aton}}{392} +\entry {\code {inet_lnaof}}{392} +\entry {\code {inet_makeaddr}}{392} +\entry {\code {inet_netof}}{392} +\entry {\code {inet_network}}{392} +\entry {\code {inet_ntoa}}{392} +\entry {\code {inet_ntop}}{393} +\entry {\code {inet_pton}}{393} +\entry {\code {infnan}}{494} +\entry {\code {initgroups}}{716} +\entry {\code {initstate}}{483} +\entry {\code {innetgr}}{737} +\entry {\code {int}}{662} +\entry {\code {ioctl}}{331} \entry {\code {isalnum}}{68} \entry {\code {isalpha}}{67} \entry {\code {isascii}}{69} -\entry {\code {isatty}}{429} +\entry {\code {isatty}}{427} \entry {\code {isblank}}{68} \entry {\code {iscntrl}}{69} \entry {\code {isdigit}}{68} -\entry {\code {isfinite}}{495} +\entry {\code {isfinite}}{493} \entry {\code {isgraph}}{68} -\entry {\code {isgreater}}{511} -\entry {\code {isgreaterequal}}{511} -\entry {\code {isinf}}{495} -\entry {\code {isinff}}{495} -\entry {\code {isinfl}}{495} -\entry {\code {isless}}{511} -\entry {\code {islessequal}}{511} -\entry {\code {islessgreater}}{511} +\entry {\code {isgreater}}{509} +\entry {\code {isgreaterequal}}{509} +\entry {\code {isinf}}{493} +\entry {\code {isinff}}{493} +\entry {\code {isinfl}}{493} +\entry {\code {isless}}{509} +\entry {\code {islessequal}}{509} +\entry {\code {islessgreater}}{509} \entry {\code {islower}}{67} -\entry {\code {isnan}}{495, 496} -\entry {\code {isnanf}}{496} -\entry {\code {isnanl}}{496} -\entry {\code {isnormal}}{495} +\entry {\code {isnan}}{493, 494} +\entry {\code {isnanf}}{494} +\entry {\code {isnanl}}{494} +\entry {\code {isnormal}}{493} \entry {\code {isprint}}{68} \entry {\code {ispunct}}{68} \entry {\code {isspace}}{68} -\entry {\code {isunordered}}{512} +\entry {\code {isunordered}}{510} \entry {\code {isupper}}{67} \entry {\code {iswalnum}}{71} \entry {\code {iswalpha}}{71} @@ -569,94 +572,94 @@ \entry {\code {iswupper}}{73} \entry {\code {iswxdigit}}{73} \entry {\code {isxdigit}}{68} -\entry {\code {ITIMER_PROF}}{554} -\entry {\code {ITIMER_REAL}}{554} -\entry {\code {ITIMER_VIRTUAL}}{554} +\entry {\code {ITIMER_PROF}}{552} +\entry {\code {ITIMER_REAL}}{552} +\entry {\code {ITIMER_VIRTUAL}}{552} \initial {J} -\entry {\code {j0}}{476} -\entry {\code {j0f}}{476} -\entry {\code {j0l}}{476} -\entry {\code {j1}}{476} -\entry {\code {j1f}}{476} -\entry {\code {j1l}}{476} -\entry {\code {jn}}{476} -\entry {\code {jnf}}{476} -\entry {\code {jnl}}{476} -\entry {\code {jrand48}}{486} -\entry {\code {jrand48_r}}{488} +\entry {\code {j0}}{474} +\entry {\code {j0f}}{474} +\entry {\code {j0l}}{474} +\entry {\code {j1}}{474} +\entry {\code {j1f}}{474} +\entry {\code {j1l}}{474} +\entry {\code {jn}}{474} +\entry {\code {jnf}}{474} +\entry {\code {jnl}}{474} +\entry {\code {jrand48}}{484} +\entry {\code {jrand48_r}}{486} \initial {K} -\entry {\code {kill}}{607} -\entry {\code {killpg}}{608} +\entry {\code {kill}}{605} +\entry {\code {killpg}}{606} \initial {L} -\entry {\code {l64a}}{98} -\entry {\code {labs}}{505} -\entry {\code {lcong48}}{487} -\entry {\code {lcong48_r}}{489} -\entry {\code {ldexp}}{506} -\entry {\code {ldexpf}}{506} -\entry {\code {ldexpl}}{506} -\entry {\code {ldiv}}{493} -\entry {\code {lfind}}{193} -\entry {\code {lgamma}}{475} -\entry {\code {lgamma_r}}{476} -\entry {\code {lgammaf}}{475} -\entry {\code {lgammaf_r}}{476} -\entry {\code {lgammal}}{475} -\entry {\code {lgammal_r}}{476} -\entry {\code {link}}{347} -\entry {\code {lio_listio}}{312} -\entry {\code {lio_listio64}}{314} -\entry {\code {listen}}{408} -\entry {\code {llabs}}{505} -\entry {\code {lldiv}}{493} -\entry {\code {llrint}}{508} -\entry {\code {llrintf}}{508} -\entry {\code {llrintl}}{508} -\entry {\code {llround}}{509} -\entry {\code {llroundf}}{509} -\entry {\code {llroundl}}{509} +\entry {\code {l64a}}{99} +\entry {\code {labs}}{503} +\entry {\code {lcong48}}{485} +\entry {\code {lcong48_r}}{487} +\entry {\code {ldexp}}{504} +\entry {\code {ldexpf}}{504} +\entry {\code {ldexpl}}{504} +\entry {\code {ldiv}}{491} +\entry {\code {lfind}}{191} +\entry {\code {lgamma}}{473} +\entry {\code {lgamma_r}}{474} +\entry {\code {lgammaf}}{473} +\entry {\code {lgammaf_r}}{474} +\entry {\code {lgammal}}{473} +\entry {\code {lgammal_r}}{474} +\entry {\code {link}}{345} +\entry {\code {lio_listio}}{310} +\entry {\code {lio_listio64}}{312} +\entry {\code {listen}}{406} +\entry {\code {llabs}}{503} +\entry {\code {lldiv}}{491} +\entry {\code {llrint}}{506} +\entry {\code {llrintf}}{506} +\entry {\code {llrintl}}{506} +\entry {\code {llround}}{507} +\entry {\code {llroundf}}{507} +\entry {\code {llroundl}}{507} \entry {\code {localeconv}}{154} -\entry {\code {localtime}}{532} -\entry {\code {localtime_r}}{532} -\entry {\code {log}}{470} -\entry {\code {log10}}{470} -\entry {\code {log10f}}{470} -\entry {\code {log10l}}{470} -\entry {\code {log1p}}{472} -\entry {\code {log1pf}}{472} -\entry {\code {log1pl}}{472} -\entry {\code {log2}}{470} -\entry {\code {log2f}}{470} -\entry {\code {log2l}}{470} -\entry {\code {logb}}{470, 506} -\entry {\code {logbf}}{470, 506} -\entry {\code {logbl}}{470, 506} -\entry {\code {logf}}{470} -\entry {\code {login}}{730} -\entry {\code {login_tty}}{730} -\entry {\code {logl}}{470} -\entry {\code {logout}}{730} -\entry {\code {logwtmp}}{730} -\entry {\code {longjmp}}{575} -\entry {\code {lrand48}}{486} -\entry {\code {lrand48_r}}{488} -\entry {\code {lrint}}{508} -\entry {\code {lrintf}}{508} -\entry {\code {lrintl}}{508} -\entry {\code {lround}}{508} -\entry {\code {lroundf}}{508} -\entry {\code {lroundl}}{508} -\entry {\code {lsearch}}{194} -\entry {\code {lseek}}{294} -\entry {\code {lseek64}}{295} -\entry {\code {lstat}}{357} -\entry {\code {lstat64}}{357} +\entry {\code {localtime}}{530} +\entry {\code {localtime_r}}{530} +\entry {\code {log}}{468} +\entry {\code {log10}}{468} +\entry {\code {log10f}}{468} +\entry {\code {log10l}}{468} +\entry {\code {log1p}}{470} +\entry {\code {log1pf}}{470} +\entry {\code {log1pl}}{470} +\entry {\code {log2}}{468} +\entry {\code {log2f}}{468} +\entry {\code {log2l}}{468} +\entry {\code {logb}}{468, 504} +\entry {\code {logbf}}{468, 504} +\entry {\code {logbl}}{468, 504} +\entry {\code {logf}}{468} +\entry {\code {login}}{728} +\entry {\code {login_tty}}{728} +\entry {\code {logl}}{468} +\entry {\code {logout}}{728} +\entry {\code {logwtmp}}{728} +\entry {\code {longjmp}}{573} +\entry {\code {lrand48}}{484} +\entry {\code {lrand48_r}}{486} +\entry {\code {lrint}}{506} +\entry {\code {lrintf}}{506} +\entry {\code {lrintl}}{506} +\entry {\code {lround}}{506} +\entry {\code {lroundf}}{506} +\entry {\code {lroundl}}{506} +\entry {\code {lsearch}}{192} +\entry {\code {lseek}}{292} +\entry {\code {lseek64}}{293} +\entry {\code {lstat}}{356} +\entry {\code {lstat64}}{356} \initial {M} -\entry {\code {main}}{625} +\entry {\code {main}}{623} \entry {\code {mallinfo}}{45} \entry {\code {malloc}}{34} \entry {\code {mallopt}}{39} -\entry {\code {matherr}}{496} +\entry {\code {matherr}}{494} \entry {\code {mblen}}{124} \entry {\code {mbrlen}}{114} \entry {\code {mbrtowc}}{113} @@ -671,66 +674,66 @@ \entry {\code {memchr}}{92} \entry {\code {memcmp}}{87} \entry {\code {memcpy}}{80} -\entry {\code {memfrob}}{98} +\entry {\code {memfrob}}{99} \entry {\code {memmem}}{94} \entry {\code {memmove}}{80} \entry {\code {mempcpy}}{80} \entry {\code {memrchr}}{92} \entry {\code {memset}}{80} -\entry {\code {mkdir}}{351} -\entry {\code {mkdtemp}}{373} -\entry {\code {mkfifo}}{378} -\entry {\code {mknod}}{370} -\entry {\code {mkstemp}}{372} -\entry {\code {mktemp}}{372} -\entry {\code {mktime}}{532} +\entry {\code {mkdir}}{350} +\entry {\code {mkdtemp}}{371} +\entry {\code {mkfifo}}{377} +\entry {\code {mknod}}{368} +\entry {\code {mkstemp}}{371} +\entry {\code {mktemp}}{371} +\entry {\code {mktime}}{530} \entry {\code {mlock}}{64} \entry {\code {mlockall}}{65} -\entry {\code {mmap}}{301} -\entry {\code {modf}}{509} -\entry {\code {modff}}{509} -\entry {\code {modfl}}{509} -\entry {\code {mount}}{751} +\entry {\code {mmap}}{299} +\entry {\code {modf}}{507} +\entry {\code {modff}}{507} +\entry {\code {modfl}}{507} +\entry {\code {mount}}{749} \entry {\code {mprobe}}{40} -\entry {\code {mrand48}}{486} -\entry {\code {mrand48_r}}{488} -\entry {\code {mremap}}{303} -\entry {\code {msync}}{302} +\entry {\code {mrand48}}{484} +\entry {\code {mrand48_r}}{486} +\entry {\code {mremap}}{301} +\entry {\code {msync}}{300} \entry {\code {mtrace}}{46} \entry {\code {munlock}}{65} \entry {\code {munlockall}}{66} -\entry {\code {munmap}}{302} +\entry {\code {munmap}}{300} \entry {\code {muntrace}}{46} \initial {N} -\entry {\code {nan}}{511} -\entry {\code {nanf}}{511} -\entry {\code {nanl}}{511} -\entry {\code {nanosleep}}{555} -\entry {\code {nearbyint}}{508} -\entry {\code {nearbyintf}}{508} -\entry {\code {nearbyintl}}{508} -\entry {\code {nextafter}}{510} -\entry {\code {nextafterf}}{510} -\entry {\code {nextafterl}}{510} -\entry {\code {nexttoward}}{510} -\entry {\code {nexttowardf}}{510} -\entry {\code {nexttowardl}}{510} -\entry {\code {nftw}}{346} -\entry {\code {nftw64}}{346} +\entry {\code {nan}}{509} +\entry {\code {nanf}}{509} +\entry {\code {nanl}}{509} +\entry {\code {nanosleep}}{553} +\entry {\code {nearbyint}}{506} +\entry {\code {nearbyintf}}{506} +\entry {\code {nearbyintl}}{506} +\entry {\code {nextafter}}{508} +\entry {\code {nextafterf}}{508} +\entry {\code {nextafterl}}{508} +\entry {\code {nexttoward}}{508} +\entry {\code {nexttowardf}}{508} +\entry {\code {nexttowardl}}{508} +\entry {\code {nftw}}{344} +\entry {\code {nftw64}}{345} \entry {\code {ngettext}}{182} -\entry {\code {nice}}{572} -\entry {\code {nl_langinfo}}{158} -\entry {\code {notfound}}{705} -\entry {\code {nrand48}}{486} -\entry {\code {nrand48_r}}{488} -\entry {\code {NSS_STATUS_NOTFOUND}}{708} -\entry {\code {NSS_STATUS_SUCCESS}}{708} -\entry {\code {NSS_STATUS_TRYAGAIN}}{708} -\entry {\code {NSS_STATUS_UNAVAIL}}{708} -\entry {\code {ntohl}}{401} -\entry {\code {ntohs}}{401} -\entry {\code {ntp_adjtime}}{536} -\entry {\code {ntp_gettime}}{534} +\entry {\code {nice}}{570} +\entry {\code {nl_langinfo}}{157} +\entry {\code {notfound}}{703} +\entry {\code {nrand48}}{484} +\entry {\code {nrand48_r}}{486} +\entry {\code {NSS_STATUS_NOTFOUND}}{706} +\entry {\code {NSS_STATUS_SUCCESS}}{706} +\entry {\code {NSS_STATUS_TRYAGAIN}}{706} +\entry {\code {NSS_STATUS_UNAVAIL}}{706} +\entry {\code {ntohl}}{399} +\entry {\code {ntohs}}{399} +\entry {\code {ntp_adjtime}}{534} +\entry {\code {ntp_gettime}}{532} \initial {O} \entry {\code {obstack_1grow}}{54} \entry {\code {obstack_1grow_fast}}{55} @@ -753,284 +756,298 @@ \entry {\code {obstack_int_grow_fast}}{56} \entry {\code {obstack_next_free}}{57} \entry {\code {obstack_object_size}}{55, 57} -\entry {\code {obstack_printf}}{248} +\entry {\code {obstack_printf}}{246} \entry {\code {obstack_ptr_grow}}{54} \entry {\code {obstack_ptr_grow_fast}}{56} \entry {\code {obstack_room}}{55} -\entry {\code {obstack_vprintf}}{249} -\entry {\code {offsetof}}{825} -\entry {\code {on_exit}}{667} -\entry {\code {open}}{287} -\entry {\code {open_memstream}}{277} -\entry {\code {open_obstack_stream}}{278} -\entry {\code {open64}}{288} -\entry {\code {opendir}}{338} -\entry {\code {openlog}}{458} -\entry {\code {openpty}}{455} +\entry {\code {obstack_vprintf}}{248} +\entry {\code {offsetof}}{823} +\entry {\code {on_exit}}{665} +\entry {\code {open}}{285} +\entry {\code {open_memstream}}{276} +\entry {\code {open_obstack_stream}}{277} +\entry {\code {open64}}{286} +\entry {\code {opendir}}{336} +\entry {\code {openlog}}{456} +\entry {\code {openpty}}{453} \initial {P} -\entry {\code {parse_printf_format}}{250} -\entry {\code {pathconf}}{772} -\entry {\code {pause}}{617} -\entry {\code {pclose}}{377} +\entry {\code {parse_printf_format}}{249} +\entry {\code {pathconf}}{770} +\entry {\code {pause}}{615} +\entry {\code {pclose}}{375} \entry {\code {perror}}{27} -\entry {\code {pipe}}{375} -\entry {\code {popen}}{377} +\entry {\code {pipe}}{373} +\entry {\code {popen}}{375} \entry {\code {posix_memalign}}{38} -\entry {\code {pow}}{471} -\entry {\code {pow10}}{469} -\entry {\code {pow10f}}{469} -\entry {\code {pow10l}}{469} -\entry {\code {powf}}{471} -\entry {\code {powl}}{471} -\entry {\code {pread}}{291} -\entry {\code {pread64}}{291} -\entry {\code {printf}}{246} -\entry {\code {printf_size}}{258} -\entry {\code {printf_size_info}}{259} -\entry {\code {psignal}}{588} -\entry {\code {pthread_atfork}}{804} -\entry {\code {pthread_attr_destroy}}{789} -\entry {\code {pthread_attr_get\var {attr}}}{789} -\entry {\code {pthread_attr_getinheritsched}}{789} -\entry {\code {pthread_attr_getschedparam}}{789} -\entry {\code {pthread_attr_getschedpolicy}}{789} -\entry {\code {pthread_attr_getscope}}{789} -\entry {\code {pthread_attr_init}}{788} -\entry {\code {pthread_attr_set\var {attr}}}{789} -\entry {\code {pthread_attr_setinheritsched}}{789} -\entry {\code {pthread_attr_setschedparam}}{789} -\entry {\code {pthread_attr_setschedpolicy}}{789} -\entry {\code {pthread_attr_setscope}}{789} -\entry {\code {pthread_cancel}}{788} -\entry {\code {pthread_cleanup_pop}}{792} -\entry {\code {pthread_cleanup_pop_restore_np}}{793} -\entry {\code {pthread_cleanup_push}}{792} -\entry {\code {pthread_cleanup_push_defer_np}}{793} -\entry {\code {pthread_cond_broadcast}}{797} -\entry {\code {pthread_cond_destroy}}{798} -\entry {\code {pthread_cond_init}}{797} -\entry {\code {pthread_cond_signal}}{797} -\entry {\code {pthread_cond_timedwait}}{797} -\entry {\code {pthread_cond_wait}}{797} -\entry {\code {pthread_condattr_destroy}}{799} -\entry {\code {pthread_condattr_init}}{799} -\entry {\code {pthread_create}}{787} -\entry {\code {pthread_detach}}{806} -\entry {\code {pthread_equal}}{806} -\entry {\code {pthread_exit}}{787} -\entry {\code {pthread_getschedparam}}{807} -\entry {\code {pthread_getspecific}}{801} -\entry {\code {pthread_join}}{788} -\entry {\code {pthread_key_create}}{801} -\entry {\code {pthread_key_delete}}{801} -\entry {\code {pthread_kill}}{803} -\entry {\code {pthread_kill_other_threads_np}}{806} -\entry {\code {pthread_mutex_destroy}}{795} -\entry {\code {pthread_mutex_init}}{794} -\entry {\code {pthread_mutex_lock}}{794} -\entry {\code {pthread_mutex_timedlock}}{794} -\entry {\code {pthread_mutex_trylock}}{794} -\entry {\code {pthread_mutex_unlock}}{795} -\entry {\code {pthread_mutexattr_destroy}}{796} -\entry {\code {pthread_mutexattr_getkind_np}}{796} -\entry {\code {pthread_mutexattr_init}}{795} -\entry {\code {pthread_mutexattr_setkind_np}}{796} -\entry {\code {pthread_once}}{807} -\entry {\code {pthread_self}}{806} -\entry {\code {pthread_setcancelstate}}{791} -\entry {\code {pthread_setcanceltype}}{791} -\entry {\code {pthread_setschedparam}}{807} -\entry {\code {pthread_setspecific}}{801} -\entry {\code {pthread_sigmask}}{802} -\entry {\code {pthread_testcancel}}{791} -\entry {\code {ptsname}}{454} -\entry {\code {ptsname_r}}{454} -\entry {\code {putc}}{232} -\entry {\code {putchar}}{232} -\entry {\code {putenv}}{660} -\entry {\code {putpwent}}{733} -\entry {\code {puts}}{232} -\entry {\code {pututline}}{726} -\entry {\code {pututxline}}{729} -\entry {\code {putw}}{232} -\entry {\code {pwrite}}{293} -\entry {\code {pwrite64}}{294} +\entry {\code {pow}}{469} +\entry {\code {pow10}}{467} +\entry {\code {pow10f}}{467} +\entry {\code {pow10l}}{467} +\entry {\code {powf}}{469} +\entry {\code {powl}}{469} +\entry {\code {pread}}{289} +\entry {\code {pread64}}{289} +\entry {\code {printf}}{244} +\entry {\code {printf_size}}{256} +\entry {\code {printf_size_info}}{257} +\entry {\code {psignal}}{586} +\entry {\code {pthread_atfork}}{803} +\entry {\code {pthread_attr_destroy}}{787} +\entry {\code {pthread_attr_getattr}}{787} +\entry {\code {pthread_attr_getdetachstate}}{787} +\entry {\code {pthread_attr_getguardsize}}{787} +\entry {\code {pthread_attr_getinheritsched}}{787} +\entry {\code {pthread_attr_getschedparam}}{787} +\entry {\code {pthread_attr_getschedpolicy}}{787} +\entry {\code {pthread_attr_getscope}}{787} +\entry {\code {pthread_attr_getstack}}{787} +\entry {\code {pthread_attr_getstackaddr}}{787} +\entry {\code {pthread_attr_getstacksize}}{787} +\entry {\code {pthread_attr_init}}{786} +\entry {\code {pthread_attr_setattr}}{787} +\entry {\code {pthread_attr_setdetachstate}}{787} +\entry {\code {pthread_attr_setguardsize}}{787} +\entry {\code {pthread_attr_setinheritsched}}{787} +\entry {\code {pthread_attr_setschedparam}}{787} +\entry {\code {pthread_attr_setschedpolicy}}{787} +\entry {\code {pthread_attr_setscope}}{787} +\entry {\code {pthread_attr_setstack}}{787} +\entry {\code {pthread_attr_setstackaddr}}{787} +\entry {\code {pthread_attr_setstacksize}}{787} +\entry {\code {pthread_cancel}}{786} +\entry {\code {pthread_cleanup_pop}}{791} +\entry {\code {pthread_cleanup_pop_restore_np}}{791} +\entry {\code {pthread_cleanup_push}}{791} +\entry {\code {pthread_cleanup_push_defer_np}}{791} +\entry {\code {pthread_cond_broadcast}}{796} +\entry {\code {pthread_cond_destroy}}{796} +\entry {\code {pthread_cond_init}}{795} +\entry {\code {pthread_cond_signal}}{796} +\entry {\code {pthread_cond_timedwait}}{796} +\entry {\code {pthread_cond_wait}}{796} +\entry {\code {pthread_condattr_destroy}}{798} +\entry {\code {pthread_condattr_init}}{798} +\entry {\code {pthread_create}}{785} +\entry {\code {pthread_detach}}{805} +\entry {\code {pthread_equal}}{804} +\entry {\code {pthread_exit}}{785} +\entry {\code {pthread_getconcurrency}}{806} +\entry {\code {pthread_getschedparam}}{806} +\entry {\code {pthread_getspecific}}{800} +\entry {\code {pthread_join}}{786} +\entry {\code {pthread_key_create}}{799} +\entry {\code {pthread_key_delete}}{800} +\entry {\code {pthread_kill}}{801} +\entry {\code {pthread_kill_other_threads_np}}{805} +\entry {\code {pthread_mutex_destroy}}{794} +\entry {\code {pthread_mutex_init}}{792} +\entry {\code {pthread_mutex_lock}}{793} +\entry {\code {pthread_mutex_timedlock}}{793} +\entry {\code {pthread_mutex_trylock}}{793} +\entry {\code {pthread_mutex_unlock}}{793} +\entry {\code {pthread_mutexattr_destroy}}{794} +\entry {\code {pthread_mutexattr_gettype}}{795} +\entry {\code {pthread_mutexattr_init}}{794} +\entry {\code {pthread_mutexattr_settype}}{795} +\entry {\code {pthread_once}}{805} +\entry {\code {pthread_self}}{804} +\entry {\code {pthread_setcancelstate}}{789} +\entry {\code {pthread_setcanceltype}}{790} +\entry {\code {pthread_setconcurrency}}{806} +\entry {\code {pthread_setschedparam}}{806} +\entry {\code {pthread_setspecific}}{800} +\entry {\code {pthread_sigmask}}{801} +\entry {\code {pthread_testcancel}}{790} +\entry {\code {ptsname}}{452} +\entry {\code {ptsname_r}}{452} +\entry {\code {putc}}{230} +\entry {\code {putchar}}{230} +\entry {\code {putenv}}{659} +\entry {\code {putpwent}}{731} +\entry {\code {puts}}{230} +\entry {\code {pututline}}{724} +\entry {\code {pututxline}}{727} +\entry {\code {putw}}{230} +\entry {\code {pwrite}}{291} +\entry {\code {pwrite64}}{292} \initial {Q} -\entry {\code {qecvt}}{520} -\entry {\code {qecvt_r}}{521} -\entry {\code {qfcvt}}{520} -\entry {\code {qfcvt_r}}{521} -\entry {\code {qgcvt}}{520} -\entry {\code {qsort}}{194} +\entry {\code {qecvt}}{518} +\entry {\code {qecvt_r}}{519} +\entry {\code {qfcvt}}{518} +\entry {\code {qfcvt_r}}{519} +\entry {\code {qgcvt}}{518} +\entry {\code {qsort}}{192} \initial {R} -\entry {\code {raise}}{606} -\entry {\code {rand}}{484} -\entry {\code {rand_r}}{484} -\entry {\code {random}}{484} -\entry {\code {read}}{290} -\entry {\code {readdir}}{339} -\entry {\code {readdir_r}}{339} -\entry {\code {readlink}}{348} -\entry {\code {readv}}{300} +\entry {\code {raise}}{604} +\entry {\code {rand}}{482} +\entry {\code {rand_r}}{482} +\entry {\code {random}}{482} +\entry {\code {read}}{288} +\entry {\code {readdir}}{337} +\entry {\code {readdir_r}}{337} +\entry {\code {readdir64}}{338} +\entry {\code {readdir64_r}}{338} +\entry {\code {readlink}}{347} +\entry {\code {readv}}{298} \entry {\code {realloc}}{36} -\entry {\code {recv}}{411} -\entry {\code {recvfrom}}{420} -\entry {\code {regcomp}}{210} -\entry {\code {regerror}}{214} -\entry {\code {regexec}}{211} -\entry {\code {regfree}}{214} -\entry {\code {register_printf_function}}{254} -\entry {\code {remainder}}{510} -\entry {\code {remainderf}}{510} -\entry {\code {remainderl}}{510} -\entry {\code {remove}}{350} -\entry {\code {rename}}{350} -\entry {\code {rewind}}{271} -\entry {\code {rewinddir}}{340} +\entry {\code {recv}}{409} +\entry {\code {recvfrom}}{418} +\entry {\code {regcomp}}{208} +\entry {\code {regerror}}{212} +\entry {\code {regexec}}{209} +\entry {\code {regfree}}{212} +\entry {\code {register_printf_function}}{252} +\entry {\code {remainder}}{508} +\entry {\code {remainderf}}{508} +\entry {\code {remainderl}}{508} +\entry {\code {remove}}{348} +\entry {\code {rename}}{349} +\entry {\code {rewind}}{269} +\entry {\code {rewinddir}}{339} \entry {\code {rindex}}{95} -\entry {\code {rint}}{508} -\entry {\code {rintf}}{508} -\entry {\code {rintl}}{508} -\entry {\code {rmdir}}{350} -\entry {\code {round}}{508} -\entry {\code {roundf}}{508} -\entry {\code {roundl}}{508} +\entry {\code {rint}}{506} +\entry {\code {rintf}}{506} +\entry {\code {rintl}}{506} +\entry {\code {rmdir}}{348} +\entry {\code {round}}{506} +\entry {\code {roundf}}{506} +\entry {\code {roundl}}{506} \initial {S} -\entry {\code {S_ISBLK}}{358} -\entry {\code {S_ISCHR}}{358} -\entry {\code {S_ISDIR}}{358} -\entry {\code {S_ISFIFO}}{358} -\entry {\code {S_ISLNK}}{358} -\entry {\code {S_ISREG}}{358} -\entry {\code {S_ISSOCK}}{358} -\entry {\code {S_TYPEISMQ}}{359} -\entry {\code {S_TYPEISSEM}}{359} -\entry {\code {S_TYPEISSHM}}{359} +\entry {\code {S_ISBLK}}{356} +\entry {\code {S_ISCHR}}{356} +\entry {\code {S_ISDIR}}{356} +\entry {\code {S_ISFIFO}}{356} +\entry {\code {S_ISLNK}}{357} +\entry {\code {S_ISREG}}{356} +\entry {\code {S_ISSOCK}}{357} +\entry {\code {S_TYPEISMQ}}{357} +\entry {\code {S_TYPEISSEM}}{357} +\entry {\code {S_TYPEISSHM}}{357} \entry {\code {sbrk}}{63} -\entry {\code {scalb}}{507} -\entry {\code {scalbf}}{507} -\entry {\code {scalbl}}{507} -\entry {\code {scalbln}}{507} -\entry {\code {scalblnf}}{507} -\entry {\code {scalblnl}}{507} -\entry {\code {scalbn}}{507} -\entry {\code {scalbnf}}{507} -\entry {\code {scalbnl}}{507} -\entry {\code {scandir}}{341} -\entry {\code {scandir64}}{341} -\entry {\code {scanf}}{266} -\entry {\code {sched_get_priority_min}}{568} -\entry {\code {sched_getparam}}{568} -\entry {\code {sched_getscheduler}}{567} -\entry {\code {sched_rr_get_interval}}{568} -\entry {\code {sched_set_priority_max}}{568} -\entry {\code {sched_setparam}}{568} -\entry {\code {sched_setscheduler}}{567} -\entry {\code {seed48}}{487} -\entry {\code {seed48_r}}{489} -\entry {\code {seekdir}}{340} -\entry {\code {select}}{304} -\entry {\code {sem_destroy}}{800} -\entry {\code {sem_getvalue}}{800} -\entry {\code {sem_init}}{799} -\entry {\code {sem_post}}{800} -\entry {\code {sem_trywait}}{800} -\entry {\code {sem_wait}}{800} -\entry {\code {send}}{410} -\entry {\code {sendto}}{419} -\entry {\code {setbuf}}{275} -\entry {\code {setbuffer}}{276} -\entry {\code {setdomainnname}}{742} -\entry {\code {setegid}}{717} -\entry {\code {setenv}}{661} -\entry {\code {seteuid}}{716} -\entry {\code {setfsent}}{746} -\entry {\code {setgid}}{717} -\entry {\code {setgrent}}{735} -\entry {\code {setgroups}}{718} -\entry {\code {sethostent}}{398} -\entry {\code {sethostid}}{743} -\entry {\code {sethostname}}{742} -\entry {\code {setitimer}}{553} -\entry {\code {setjmp}}{574} -\entry {\code {setkey}}{783} -\entry {\code {setkey_r}}{784} -\entry {\code {setlinebuf}}{276} +\entry {\code {scalb}}{505} +\entry {\code {scalbf}}{505} +\entry {\code {scalbl}}{505} +\entry {\code {scalbln}}{505} +\entry {\code {scalblnf}}{505} +\entry {\code {scalblnl}}{505} +\entry {\code {scalbn}}{505} +\entry {\code {scalbnf}}{505} +\entry {\code {scalbnl}}{505} +\entry {\code {scandir}}{339} +\entry {\code {scandir64}}{340} +\entry {\code {scanf}}{264} +\entry {\code {sched_get_priority_min}}{566} +\entry {\code {sched_getparam}}{566} +\entry {\code {sched_getscheduler}}{565} +\entry {\code {sched_rr_get_interval}}{566} +\entry {\code {sched_set_priority_max}}{566} +\entry {\code {sched_setparam}}{566} +\entry {\code {sched_setscheduler}}{565} +\entry {\code {seed48}}{485} +\entry {\code {seed48_r}}{487} +\entry {\code {seekdir}}{339} +\entry {\code {select}}{302} +\entry {\code {sem_destroy}}{798} +\entry {\code {sem_getvalue}}{799} +\entry {\code {sem_init}}{798} +\entry {\code {sem_post}}{799} +\entry {\code {sem_trywait}}{799} +\entry {\code {sem_wait}}{799} +\entry {\code {send}}{408} +\entry {\code {sendto}}{417} +\entry {\code {setbuf}}{274} +\entry {\code {setbuffer}}{274} +\entry {\code {setdomainnname}}{740} +\entry {\code {setegid}}{715} +\entry {\code {setenv}}{659} +\entry {\code {seteuid}}{714} +\entry {\code {setfsent}}{744} +\entry {\code {setgid}}{715} +\entry {\code {setgrent}}{733} +\entry {\code {setgroups}}{716} +\entry {\code {sethostent}}{396} +\entry {\code {sethostid}}{741} +\entry {\code {sethostname}}{740} +\entry {\code {setitimer}}{551} +\entry {\code {setjmp}}{572} +\entry {\code {setkey}}{781} +\entry {\code {setkey_r}}{782} +\entry {\code {setlinebuf}}{274} \entry {\code {setlocale}}{151} -\entry {\code {setlogmask}}{462} -\entry {\code {setmntent}}{749} -\entry {\code {setnetent}}{427} -\entry {\code {setnetgrent}}{738} -\entry {\code {setpgid}}{700} -\entry {\code {setpgrp}}{700} -\entry {\code {setpriority}}{571} -\entry {\code {setprotoent}}{402} -\entry {\code {setpwent}}{733} -\entry {\code {setregid}}{717} -\entry {\code {setreuid}}{717} -\entry {\code {setrlimit}}{560} -\entry {\code {setrlimit64}}{560} -\entry {\code {setservent}}{400} -\entry {\code {setsid}}{699} -\entry {\code {setsockopt}}{425} -\entry {\code {setstate}}{485} -\entry {\code {settimeofday}}{529} -\entry {\code {setuid}}{716} -\entry {\code {setutent}}{725} -\entry {\code {setutxent}}{729} -\entry {\code {setvbuf}}{274} -\entry {\code {shutdown}}{405} -\entry {\code {sigaction}}{591} -\entry {\code {sigaddset}}{612} -\entry {\code {sigaltstack}}{621} -\entry {\code {sigblock}}{623} -\entry {\code {sigdelset}}{612} -\entry {\code {sigemptyset}}{612} -\entry {\code {sigfillset}}{612} -\entry {\code {siginterrupt}}{623} -\entry {\code {sigismember}}{612} -\entry {\code {siglongjmp}}{576} -\entry {\code {sigmask}}{623} -\entry {\code {signal}}{588} -\entry {\code {signbit}}{510} -\entry {\code {significand}}{507} -\entry {\code {significandf}}{507} -\entry {\code {significandl}}{507} -\entry {\code {sigpause}}{623} -\entry {\code {sigpending}}{615} -\entry {\code {sigprocmask}}{612} -\entry {\code {sigsetjmp}}{576} -\entry {\code {sigsetmask}}{623} -\entry {\code {sigstack}}{621} -\entry {\code {sigsuspend}}{619} -\entry {\code {sigvec}}{623} -\entry {\code {sigwait}}{803} -\entry {\code {sin}}{466} -\entry {\code {sincos}}{467} -\entry {\code {sincosf}}{467} -\entry {\code {sincosl}}{467} -\entry {\code {sinf}}{466} -\entry {\code {sinh}}{473} -\entry {\code {sinhf}}{473} -\entry {\code {sinhl}}{473} -\entry {\code {sinl}}{466} -\entry {\code {sleep}}{555} -\entry {\code {snprintf}}{247} -\entry {\code {socket}}{404} -\entry {\code {socketpair}}{406} -\entry {\code {sprintf}}{246} -\entry {\code {sqrt}}{471} -\entry {\code {sqrtf}}{471} -\entry {\code {sqrtl}}{471} -\entry {\code {srand}}{484} -\entry {\code {srand48}}{486} -\entry {\code {srand48_r}}{489} -\entry {\code {srandom}}{485} -\entry {\code {sscanf}}{266} -\entry {\code {ssignal}}{590} -\entry {\code {stat}}{356} -\entry {\code {stat64}}{356} -\entry {\code {stime}}{528} +\entry {\code {setlogmask}}{460} +\entry {\code {setmntent}}{747} +\entry {\code {setnetent}}{425} +\entry {\code {setnetgrent}}{736} +\entry {\code {setpgid}}{698} +\entry {\code {setpgrp}}{698} +\entry {\code {setpriority}}{569} +\entry {\code {setprotoent}}{400} +\entry {\code {setpwent}}{731} +\entry {\code {setregid}}{715} +\entry {\code {setreuid}}{715} +\entry {\code {setrlimit}}{558} +\entry {\code {setrlimit64}}{558} +\entry {\code {setservent}}{398} +\entry {\code {setsid}}{697} +\entry {\code {setsockopt}}{423} +\entry {\code {setstate}}{483} +\entry {\code {settimeofday}}{527} +\entry {\code {setuid}}{714} +\entry {\code {setutent}}{723} +\entry {\code {setutxent}}{727} +\entry {\code {setvbuf}}{273} +\entry {\code {shutdown}}{403} +\entry {\code {sigaction}}{589} +\entry {\code {sigaddset}}{610} +\entry {\code {sigaltstack}}{619} +\entry {\code {sigblock}}{621} +\entry {\code {sigdelset}}{610} +\entry {\code {sigemptyset}}{610} +\entry {\code {sigfillset}}{610} +\entry {\code {siginterrupt}}{621} +\entry {\code {sigismember}}{610} +\entry {\code {siglongjmp}}{574} +\entry {\code {sigmask}}{621} +\entry {\code {signal}}{586} +\entry {\code {signbit}}{508} +\entry {\code {significand}}{505} +\entry {\code {significandf}}{505} +\entry {\code {significandl}}{505} +\entry {\code {sigpause}}{621} +\entry {\code {sigpending}}{613} +\entry {\code {sigprocmask}}{610} +\entry {\code {sigsetjmp}}{574} +\entry {\code {sigsetmask}}{621} +\entry {\code {sigstack}}{619} +\entry {\code {sigsuspend}}{617} +\entry {\code {sigvec}}{621} +\entry {\code {sigwait}}{802} +\entry {\code {sin}}{464} +\entry {\code {sincos}}{465} +\entry {\code {sincosf}}{465} +\entry {\code {sincosl}}{465} +\entry {\code {sinf}}{464} +\entry {\code {sinh}}{471} +\entry {\code {sinhf}}{471} +\entry {\code {sinhl}}{471} +\entry {\code {sinl}}{464} +\entry {\code {sleep}}{553} +\entry {\code {snprintf}}{245} +\entry {\code {socket}}{402} +\entry {\code {socketpair}}{404} +\entry {\code {sprintf}}{244} +\entry {\code {sqrt}}{469} +\entry {\code {sqrtf}}{469} +\entry {\code {sqrtl}}{469} +\entry {\code {srand}}{482} +\entry {\code {srand48}}{484} +\entry {\code {srand48_r}}{487} +\entry {\code {srandom}}{483} +\entry {\code {sscanf}}{264} +\entry {\code {ssignal}}{588} +\entry {\code {stat}}{355} +\entry {\code {stat64}}{355} +\entry {\code {stime}}{526} \entry {\code {stpcpy}}{81} \entry {\code {stpncpy}}{82} \entry {\code {strcasecmp}}{87} @@ -1047,8 +1064,8 @@ \entry {\code {strerror}}{27} \entry {\code {strerror_r}}{27} \entry {\code {strfmon}}{163} -\entry {\code {strfry}}{97} -\entry {\code {strftime}}{537} +\entry {\code {strfry}}{98} +\entry {\code {strftime}}{535} \entry {\code {strlen}}{78} \entry {\code {strncasecmp}}{88} \entry {\code {strncat}}{85} @@ -1058,137 +1075,137 @@ \entry {\code {strndupa}}{83} \entry {\code {strnlen}}{79} \entry {\code {strpbrk}}{94} -\entry {\code {strptime}}{542} +\entry {\code {strptime}}{540} \entry {\code {strrchr}}{93} \entry {\code {strsep}}{96} -\entry {\code {strsignal}}{587} +\entry {\code {strsignal}}{585} \entry {\code {strspn}}{94} \entry {\code {strstr}}{93} -\entry {\code {strtod}}{518} -\entry {\code {strtof}}{519} -\entry {\code {strtoimax}}{516} +\entry {\code {strtod}}{516} +\entry {\code {strtof}}{517} +\entry {\code {strtoimax}}{514} \entry {\code {strtok}}{95} \entry {\code {strtok_r}}{96} -\entry {\code {strtol}}{515} -\entry {\code {strtol_l}}{517} -\entry {\code {strtold}}{519} -\entry {\code {strtoll}}{516} -\entry {\code {strtoll_l}}{517} -\entry {\code {strtoq}}{516} -\entry {\code {strtoul}}{515} -\entry {\code {strtoul_l}}{517} -\entry {\code {strtoull}}{516} -\entry {\code {strtoull_l}}{517} -\entry {\code {strtoumax}}{516} -\entry {\code {strtouq}}{516} +\entry {\code {strtol}}{513} +\entry {\code {strtol_l}}{515} +\entry {\code {strtold}}{517} +\entry {\code {strtoll}}{514} +\entry {\code {strtoll_l}}{515} +\entry {\code {strtoq}}{514} +\entry {\code {strtoul}}{513} +\entry {\code {strtoul_l}}{515} +\entry {\code {strtoull}}{514} +\entry {\code {strtoull_l}}{515} +\entry {\code {strtoumax}}{514} +\entry {\code {strtouq}}{514} \entry {\code {strverscmp}}{88} \entry {\code {strxfrm}}{90} -\entry {\code {stty}}{449} -\entry {\code {success}}{705} -\entry {\code {SUN_LEN}}{388} -\entry {\code {symlink}}{348} -\entry {\code {sync}}{306} -\entry {\code {sysconf}}{760} -\entry {\code {sysctl}}{755} -\entry {\code {syslog}}{459} -\entry {\code {system}}{671} -\entry {\code {sysv_signal}}{590} +\entry {\code {stty}}{447} +\entry {\code {success}}{703} +\entry {\code {SUN_LEN}}{386} +\entry {\code {symlink}}{347} +\entry {\code {sync}}{304} +\entry {\code {sysconf}}{758} +\entry {\code {sysctl}}{753} +\entry {\code {syslog}}{457} +\entry {\code {system}}{669} +\entry {\code {sysv_signal}}{588} \initial {T} -\entry {\code {tan}}{466} -\entry {\code {tanf}}{466} -\entry {\code {tanh}}{473} -\entry {\code {tanhf}}{473} -\entry {\code {tanhl}}{473} -\entry {\code {tanl}}{466} -\entry {\code {tcdrain}}{450} -\entry {\code {tcflow}}{450} -\entry {\code {tcflush}}{450} -\entry {\code {tcgetattr}}{432} -\entry {\code {tcgetpgrp}}{700} -\entry {\code {tcgetsid}}{701} -\entry {\code {tcsendbreak}}{449} -\entry {\code {tcsetattr}}{432} -\entry {\code {tcsetpgrp}}{701} -\entry {\code {tdelete}}{201} -\entry {\code {tdestroy}}{201} -\entry {\code {telldir}}{340} -\entry {\code {TEMP_FAILURE_RETRY}}{605} -\entry {\code {tempnam}}{371} +\entry {\code {tan}}{464} +\entry {\code {tanf}}{464} +\entry {\code {tanh}}{471} +\entry {\code {tanhf}}{471} +\entry {\code {tanhl}}{471} +\entry {\code {tanl}}{464} +\entry {\code {tcdrain}}{448} +\entry {\code {tcflow}}{448} +\entry {\code {tcflush}}{448} +\entry {\code {tcgetattr}}{430} +\entry {\code {tcgetpgrp}}{698} +\entry {\code {tcgetsid}}{699} +\entry {\code {tcsendbreak}}{447} +\entry {\code {tcsetattr}}{430} +\entry {\code {tcsetpgrp}}{699} +\entry {\code {tdelete}}{199} +\entry {\code {tdestroy}}{199} +\entry {\code {telldir}}{339} +\entry {\code {TEMP_FAILURE_RETRY}}{603} +\entry {\code {tempnam}}{370} \entry {\code {textdomain}}{180} -\entry {\code {tfind}}{201} -\entry {\code {tgamma}}{476} -\entry {\code {tgammaf}}{476} -\entry {\code {tgammal}}{476} -\entry {\code {time}}{528} -\entry {\code {timegm}}{533} -\entry {\code {timelocal}}{533} -\entry {\code {times}}{527} -\entry {\code {tmpfile}}{370} -\entry {\code {tmpfile64}}{370} -\entry {\code {tmpnam}}{371} -\entry {\code {tmpnam_r}}{371} +\entry {\code {tfind}}{199} +\entry {\code {tgamma}}{474} +\entry {\code {tgammaf}}{474} +\entry {\code {tgammal}}{474} +\entry {\code {time}}{526} +\entry {\code {timegm}}{531} +\entry {\code {timelocal}}{531} +\entry {\code {times}}{525} +\entry {\code {tmpfile}}{369} +\entry {\code {tmpfile64}}{369} +\entry {\code {tmpnam}}{369} +\entry {\code {tmpnam_r}}{370} \entry {\code {toascii}}{69} \entry {\code {tolower}}{69} \entry {\code {toupper}}{69} \entry {\code {towctrans}}{75} \entry {\code {towlower}}{75} \entry {\code {towupper}}{75} -\entry {\code {trunc}}{508} -\entry {\code {truncate}}{367} -\entry {\code {truncate64}}{368} -\entry {\code {truncf}}{508} -\entry {\code {truncl}}{508} -\entry {\code {tryagain}}{705} -\entry {\code {tsearch}}{200} -\entry {\code {ttyname}}{429} -\entry {\code {ttyname_r}}{429} -\entry {\code {twalk}}{202} -\entry {\code {tzset}}{551} +\entry {\code {trunc}}{506} +\entry {\code {truncate}}{366} +\entry {\code {truncate64}}{366} +\entry {\code {truncf}}{506} +\entry {\code {truncl}}{506} +\entry {\code {tryagain}}{703} +\entry {\code {tsearch}}{198} +\entry {\code {ttyname}}{427} +\entry {\code {ttyname_r}}{427} +\entry {\code {twalk}}{200} +\entry {\code {tzset}}{549} \initial {U} -\entry {\code {ulimit}}{562} -\entry {\code {umask}}{363} -\entry {\code {umount}}{754} -\entry {\code {umount2}}{754} -\entry {\code {uname}}{744} -\entry {\code {unavail}}{705} -\entry {\code {ungetc}}{236} -\entry {\code {unlink}}{349} -\entry {\code {unlockpt}}{453} -\entry {\code {unsetenv}}{661} -\entry {\code {updwtmp}}{727} -\entry {\code {utime}}{366} -\entry {\code {utimes}}{367} -\entry {\code {utmpname}}{727} -\entry {\code {utmpxname}}{729} +\entry {\code {ulimit}}{560} +\entry {\code {umask}}{361} +\entry {\code {umount}}{752} +\entry {\code {umount2}}{752} +\entry {\code {uname}}{742} +\entry {\code {unavail}}{703} +\entry {\code {ungetc}}{234} +\entry {\code {unlink}}{348} +\entry {\code {unlockpt}}{451} +\entry {\code {unsetenv}}{659} +\entry {\code {updwtmp}}{725} +\entry {\code {utime}}{365} +\entry {\code {utimes}}{365} +\entry {\code {utmpname}}{725} +\entry {\code {utmpxname}}{727} \initial {V} -\entry {\code {va_alist}}{816} -\entry {\code {va_arg}}{814} -\entry {\code {va_dcl}}{816} -\entry {\code {va_end}}{814} -\entry {\code {va_start}}{814, 816} +\entry {\code {va_alist}}{814} +\entry {\code {va_arg}}{812} +\entry {\code {va_dcl}}{814} +\entry {\code {va_end}}{812} +\entry {\code {va_start}}{812, 814} \entry {\code {valloc}}{39} -\entry {\code {vasprintf}}{249} -\entry {\code {versionsort}}{341} -\entry {\code {versionsort64}}{342} -\entry {\code {vfork}}{673} -\entry {\code {vfprintf}}{249} -\entry {\code {vfscanf}}{266} -\entry {\code {vlimit}}{563} -\entry {\code {vprintf}}{249} -\entry {\code {vscanf}}{266} -\entry {\code {vsnprintf}}{249} -\entry {\code {vsprintf}}{249} -\entry {\code {vsscanf}}{266} -\entry {\code {vsyslog}}{462} -\entry {\code {vtimes}}{558} +\entry {\code {vasprintf}}{248} +\entry {\code {versionsort}}{340} +\entry {\code {versionsort64}}{340} +\entry {\code {vfork}}{671} +\entry {\code {vfprintf}}{247} +\entry {\code {vfscanf}}{265} +\entry {\code {vlimit}}{561} +\entry {\code {vprintf}}{247} +\entry {\code {vscanf}}{265} +\entry {\code {vsnprintf}}{247} +\entry {\code {vsprintf}}{247} +\entry {\code {vsscanf}}{265} +\entry {\code {vsyslog}}{460} +\entry {\code {vtimes}}{556} \initial {W} -\entry {\code {wait}}{678} -\entry {\code {wait3}}{680} -\entry {\code {wait4}}{678} -\entry {\code {waitpid}}{676} -\entry {\code {WCOREDUMP}}{679} -\entry {\code {wcrtomb}}{115} -\entry {\code {wcsftime}}{541} +\entry {\code {wait}}{676} +\entry {\code {wait3}}{678} +\entry {\code {wait4}}{676} +\entry {\code {waitpid}}{674} +\entry {\code {WCOREDUMP}}{677} +\entry {\code {wcrtomb}}{116} +\entry {\code {wcsftime}}{539} \entry {\code {wcsnrtombs}}{120} \entry {\code {wcsrtombs}}{119} \entry {\code {wcstombs}}{125} @@ -1196,23 +1213,23 @@ \entry {\code {wctomb}}{123} \entry {\code {wctrans}}{74} \entry {\code {wctype}}{70} -\entry {\code {WEXITSTATUS}}{679} -\entry {\code {WIFEXITED}}{679} -\entry {\code {WIFSIGNALED}}{679} -\entry {\code {WIFSTOPPED}}{680} -\entry {\code {wordexp}}{216} -\entry {\code {wordfree}}{216} -\entry {\code {write}}{292} -\entry {\code {writev}}{300} -\entry {\code {WSTOPSIG}}{680} -\entry {\code {WTERMSIG}}{679} +\entry {\code {WEXITSTATUS}}{677} +\entry {\code {WIFEXITED}}{677} +\entry {\code {WIFSIGNALED}}{677} +\entry {\code {WIFSTOPPED}}{678} +\entry {\code {wordexp}}{214} +\entry {\code {wordfree}}{214} +\entry {\code {write}}{290} +\entry {\code {writev}}{298} +\entry {\code {WSTOPSIG}}{678} +\entry {\code {WTERMSIG}}{677} \initial {Y} -\entry {\code {y0}}{476} -\entry {\code {y0f}}{476} -\entry {\code {y0l}}{476} -\entry {\code {y1}}{477} -\entry {\code {y1f}}{477} -\entry {\code {y1l}}{477} -\entry {\code {yn}}{477} -\entry {\code {ynf}}{477} -\entry {\code {ynl}}{477} +\entry {\code {y0}}{474} +\entry {\code {y0f}}{474} +\entry {\code {y0l}}{474} +\entry {\code {y1}}{475} +\entry {\code {y1f}}{475} +\entry {\code {y1l}}{475} +\entry {\code {yn}}{475} +\entry {\code {ynf}}{475} +\entry {\code {ynl}}{475} diff -adurpN glibc-2.2/manual/libc.info glibc-2.2.1/manual/libc.info --- glibc-2.2/manual/libc.info Fri Jun 30 23:38:29 2000 +++ glibc-2.2.1/manual/libc.info Sun Jan 7 09:09:09 2001 @@ -34,763 +34,764 @@ accuracy by the Foundation.  Indirect: libc.info-1: 1298 -libc.info-2: 60549 -libc.info-3: 105647 -libc.info-4: 155020 -libc.info-5: 204753 -libc.info-6: 254525 -libc.info-7: 303524 -libc.info-8: 341935 -libc.info-9: 386236 -libc.info-10: 406769 -libc.info-11: 453514 -libc.info-12: 496052 -libc.info-13: 538382 -libc.info-14: 584781 -libc.info-15: 632911 -libc.info-16: 680245 -libc.info-17: 729276 -libc.info-18: 778958 -libc.info-19: 828515 -libc.info-20: 872468 -libc.info-21: 916234 -libc.info-22: 965793 -libc.info-23: 1014519 -libc.info-24: 1063376 -libc.info-25: 1113181 -libc.info-26: 1160797 -libc.info-27: 1209715 -libc.info-28: 1257107 -libc.info-29: 1306466 -libc.info-30: 1346721 -libc.info-31: 1394112 -libc.info-32: 1443401 -libc.info-33: 1480701 -libc.info-34: 1527182 -libc.info-35: 1575996 -libc.info-36: 1624078 -libc.info-37: 1673108 -libc.info-38: 1722965 -libc.info-39: 1772315 -libc.info-40: 1821653 -libc.info-41: 1869036 -libc.info-42: 1916318 -libc.info-43: 1958964 -libc.info-44: 2002846 -libc.info-45: 2052456 -libc.info-46: 2099447 -libc.info-47: 2148421 -libc.info-48: 2198135 -libc.info-49: 2220120 -libc.info-50: 2410831 -libc.info-51: 2456055 -libc.info-52: 2500265 -libc.info-53: 2561954 -libc.info-54: 2569563 -libc.info-55: 2643668 -libc.info-56: 2695238 +libc.info-2: 60613 +libc.info-3: 105711 +libc.info-4: 155084 +libc.info-5: 205071 +libc.info-6: 254834 +libc.info-7: 295752 +libc.info-8: 345220 +libc.info-9: 389453 +libc.info-10: 409990 +libc.info-11: 456746 +libc.info-12: 498746 +libc.info-13: 540467 +libc.info-14: 587427 +libc.info-15: 635559 +libc.info-16: 682893 +libc.info-17: 732278 +libc.info-18: 782138 +libc.info-19: 831695 +libc.info-20: 875648 +libc.info-21: 919414 +libc.info-22: 968973 +libc.info-23: 1017560 +libc.info-24: 1061746 +libc.info-25: 1110829 +libc.info-26: 1160195 +libc.info-27: 1208853 +libc.info-28: 1258817 +libc.info-29: 1308060 +libc.info-30: 1352173 +libc.info-31: 1399564 +libc.info-32: 1448884 +libc.info-33: 1486184 +libc.info-34: 1532665 +libc.info-35: 1581479 +libc.info-36: 1629553 +libc.info-37: 1678583 +libc.info-38: 1728442 +libc.info-39: 1778438 +libc.info-40: 1827867 +libc.info-41: 1875250 +libc.info-42: 1922532 +libc.info-43: 1965178 +libc.info-44: 2009124 +libc.info-45: 2056030 +libc.info-46: 2104481 +libc.info-47: 2150238 +libc.info-48: 2199162 +libc.info-49: 2229995 +libc.info-50: 2421553 +libc.info-51: 2466919 +libc.info-52: 2511129 +libc.info-53: 2572880 +libc.info-54: 2580489 +libc.info-55: 2655669 +libc.info-56: 2707239  Tag Table: (Indirect) Node: Top1298 -Node: Introduction60549 -Node: Getting Started61898 -Node: Standards and Portability63358 -Node: ISO C64806 -Node: POSIX66323 -Node: Berkeley Unix68064 -Node: SVID68832 -Node: XPG69833 -Node: Using the Library70774 -Node: Header Files71497 -Node: Macro Definitions75449 -Node: Reserved Names77794 -Node: Feature Test Macros82477 -Node: Roadmap to the Manual93235 -Node: Error Reporting100519 -Node: Checking for Errors101436 -Node: Error Codes105647 -Node: Error Messages124664 -Node: Memory130361 -Node: Memory Concepts131218 -Node: Memory Allocation136886 -Node: Memory Allocation and C137775 -Node: Unconstrained Allocation141324 -Node: Basic Allocation142744 -Node: Malloc Examples144446 -Node: Freeing after Malloc146415 -Node: Changing Block Size148230 -Node: Allocating Cleared Space150833 -Node: Efficiency and Malloc151841 -Node: Aligned Memory Blocks152940 -Node: Malloc Tunable Parameters155020 -Node: Heap Consistency Checking156682 -Node: Hooks for Malloc161783 -Node: Statistics of Malloc167766 -Node: Summary of Malloc169724 -Node: Allocation Debugging171848 -Node: Tracing malloc172951 -Node: Using the Memory Debugger174802 -Node: Tips for the Memory Debugger176688 -Node: Interpreting the traces178016 -Node: Obstacks181551 -Node: Creating Obstacks183165 -Node: Preparing for Obstacks185064 -Node: Allocation in an Obstack187810 -Node: Freeing Obstack Objects190218 -Node: Obstack Functions191553 -Node: Growing Objects193783 -Node: Extra Fast Growing198029 -Node: Status of an Obstack201648 -Node: Obstacks Data Alignment203067 -Node: Obstack Chunks204753 -Node: Summary of Obstacks207109 -Node: Variable Size Automatic210523 -Node: Alloca Example212049 -Node: Advantages of Alloca213170 -Node: Disadvantages of Alloca215059 -Node: GNU C Variable-Size Arrays215803 -Node: Resizing the Data Segment216961 -Node: Locking Pages219050 -Node: Why Lock Pages219812 -Node: Locked Memory Details221439 -Node: Page Lock Functions223695 -Node: Character Handling229558 -Node: Classification of Characters231014 -Node: Case Conversion234858 -Node: Classification of Wide Characters236748 -Node: Using Wide Char Classes244493 -Node: Wide Character Case Conversion246804 -Node: String and Array Utilities249520 -Node: Representation of Strings251584 -Node: String/Array Conventions254525 -Node: String Length256357 -Node: Copying and Concatenation258347 -Node: String/Array Comparison274605 -Node: Collation Functions282021 -Node: Search Functions289016 -Node: Finding Tokens in a String295443 -Node: strfry302494 -Node: Trivial Encryption303524 -Node: Encode Binary Data304982 -Node: Argz and Envz Vectors309632 -Node: Argz Functions310232 -Node: Envz Functions316795 -Node: Character Set Handling319845 -Node: Extended Char Intro321008 -Node: Charset Function Overview333159 -Node: Restartable multibyte conversion334173 -Node: Selecting the Conversion336285 -Node: Keeping the state338701 -Node: Converting a Character341935 -Node: Converting Strings358074 -Node: Multibyte Conversion Example368127 -Node: Non-reentrant Conversion371113 -Node: Non-reentrant Character Conversion372748 -Node: Non-reentrant String Conversion377450 -Node: Shift State380445 -Node: Generic Charset Conversion383108 -Node: Generic Conversion Interface386236 -Node: iconv Examples396104 -Node: Other iconv Implementations401436 -Node: glibc iconv Implementation406769 -Node: Locales446164 -Node: Effects of Locale447764 -Node: Choosing Locale449699 -Node: Locale Categories451073 -Node: Setting the Locale453514 -Node: Standard Locales457804 -Node: Locale Information459093 -Node: The Lame Way to Locale Data460810 -Node: General Numeric462681 -Node: Currency Symbol465608 -Node: Sign of Money Amount470220 -Node: The Elegant and Fast Way472516 -Node: Formatting Numbers483315 -Node: Message Translation492708 -Node: Message catalogs a la X/Open494754 -Node: The catgets Functions496052 -Node: The message catalog files505075 -Node: The gencat program511825 -Node: Common Usage514959 -Node: The Uniforum approach522085 -Node: Message catalogs with gettext523579 -Node: Translation with gettext524614 -Node: Locating gettext catalog531519 -Node: Advanced gettext functions538382 -Node: Charset conversion in gettext548107 -Node: GUI program problems550468 -Node: Using gettextized software556000 -Node: Helper programs for gettext564330 -Node: Searching and Sorting566094 -Node: Comparison Functions567009 -Node: Array Search Function568227 -Node: Array Sort Function571571 -Node: Search/Sort Example573703 -Node: Hash Search Function577182 -Node: Tree Search Function584781 -Node: Pattern Matching591694 -Node: Wildcard Matching592496 -Node: Globbing595374 -Node: Calling Glob596238 -Node: Flags for Globbing601704 -Node: More Flags for Globbing605234 -Node: Regular Expressions611190 -Node: POSIX Regexp Compilation612174 -Node: Flags for POSIX Regexps616289 -Node: Matching POSIX Regexps617196 -Node: Regexp Subexpressions619357 -Node: Subexpression Complications621411 -Node: Regexp Cleanup623774 -Node: Word Expansion626100 -Node: Expansion Stages627455 -Node: Calling Wordexp628948 -Node: Flags for Wordexp632911 -Node: Wordexp Example634864 -Node: Tilde Expansion636660 -Node: Variable Substitution637732 -Node: I/O Overview641847 -Node: I/O Concepts643361 -Node: Streams and File Descriptors644506 -Node: File Position647597 -Node: File Names649731 -Node: Directories650617 -Node: File Name Resolution652354 -Node: File Name Errors655283 -Node: File Name Portability656823 -Node: I/O on Streams658815 -Node: Streams660888 -Node: Standard Streams662229 -Node: Opening Streams663895 -Node: Closing Streams672182 -Node: Simple Output674733 -Node: Character Input677136 -Node: Line Input680245 -Node: Unreading685233 -Node: Unreading Idea686042 -Node: How Unread686868 -Node: Block Input/Output689366 -Node: Formatted Output691595 -Node: Formatted Output Basics693362 -Node: Output Conversion Syntax695855 -Node: Table of Output Conversions700877 -Node: Integer Conversions703676 -Node: Floating-Point Conversions709005 -Node: Other Output Conversions714803 -Node: Formatted Output Functions717963 -Node: Dynamic Output722105 -Node: Variable Arguments Output723742 -Node: Parsing a Template String729276 -Node: Example of Parsing733107 -Node: Customizing Printf735395 -Node: Registering New Conversions737314 -Node: Conversion Specifier Options739309 -Node: Defining the Output Handler743146 -Node: Printf Extension Example745607 -Node: Predefined Printf Handlers748010 -Node: Formatted Input751654 -Node: Formatted Input Basics752733 -Node: Input Conversion Syntax755413 -Node: Table of Input Conversions758776 -Node: Numeric Input Conversions761073 -Node: String Input Conversions765313 -Node: Dynamic String Input769407 -Node: Other Input Conversions770597 -Node: Formatted Input Functions772243 -Node: Variable Arguments Input773808 -Node: EOF and Errors775435 -Node: Error Recovery777398 -Node: Binary Streams778958 -Node: File Positioning781482 -Node: Portable Positioning788515 -Node: Stream Buffering794050 -Node: Buffering Concepts795649 -Node: Flushing Buffers797012 -Node: Controlling Buffering798508 -Node: Other Kinds of Streams802943 -Node: String Streams804232 -Node: Obstack Streams808370 -Node: Custom Streams810421 -Node: Streams and Cookies811138 -Node: Hook Functions814208 -Node: Formatted Messages816594 -Node: Printing Formatted Messages817259 -Node: Adding Severity Classes823704 -Node: Example825311 -Node: Low-Level I/O828515 -Node: Opening and Closing Files831523 -Node: I/O Primitives839503 -Node: File Position Primitive853604 -Node: Descriptors and Streams860919 -Node: Stream/Descriptor Precautions863339 -Node: Linked Channels864545 -Node: Independent Channels865773 -Node: Cleaning Streams867676 -Node: Scatter-Gather869879 -Node: Memory-mapped I/O872468 -Node: Waiting for I/O881002 -Node: Synchronizing I/O888745 -Node: Asynchronous I/O892179 -Node: Asynchronous Reads/Writes900222 -Node: Status of AIO Operations912664 -Node: Synchronizing AIO Operations916234 -Node: Cancel AIO Operations922634 -Node: Configuration of AIO926105 -Node: Control Operations928201 -Node: Duplicating Descriptors930893 -Node: Descriptor Flags935153 -Node: File Status Flags938555 -Node: Access Modes940009 -Node: Open-time Flags942298 -Node: Operating Modes947015 -Node: Getting File Status Flags949781 -Node: File Locks952388 -Node: Interrupt Input961285 -Node: IOCTLs963717 -Node: File System Interface965793 -Node: Working Directory967322 -Node: Accessing Directories971028 -Node: Directory Entries972455 -Node: Opening a Directory975293 -Node: Reading/Closing Directory976985 -Node: Simple Directory Lister980042 -Node: Random Access Directory981061 -Node: Scanning Directory Content982563 -Node: Simple Directory Lister Mark II987020 -Node: Working with Directory Trees988130 -Node: Hard Links999673 -Node: Symbolic Links1002472 -Node: Deleting Files1006241 -Node: Renaming Files1009161 -Node: Creating Directories1012766 -Node: File Attributes1014519 -Node: Attribute Meanings1016043 -Node: Reading Attributes1025269 -Node: Testing File Type1029340 -Node: File Owner1033493 -Node: Permission Bits1037147 -Node: Access Permission1042467 -Node: Setting Permissions1043609 -Node: Testing File Access1048816 -Node: File Times1052480 -Node: File Size1056952 -Node: Making Special Files1063376 -Node: Temporary Files1065053 -Node: Pipes and FIFOs1073762 -Node: Creating a Pipe1075345 -Node: Pipe to a Subprocess1078632 -Node: FIFO Special Files1081473 -Node: Pipe Atomicity1083046 -Node: Sockets1083929 -Node: Socket Concepts1085967 -Node: Communication Styles1090207 -Node: Socket Addresses1092058 -Node: Address Formats1094095 -Node: Setting Address1097296 -Node: Reading Address1099018 -Node: Interface Naming1100779 -Node: Local Namespace1103186 -Node: Local Namespace Concepts1103846 -Node: Local Namespace Details1105434 -Node: Local Socket Example1107381 -Node: Internet Namespace1108807 -Node: Internet Address Formats1111030 -Node: Host Addresses1113181 -Node: Abstract Host Addresses1114349 -Node: Host Address Data Type1118867 -Node: Host Address Functions1121990 -Node: Host Names1126342 -Node: Ports1135613 -Node: Services Database1137651 -Node: Byte Order1140475 -Node: Protocols Database1142783 -Node: Inet Example1146325 -Node: Misc Namespaces1148335 -Node: Open/Close Sockets1149081 -Node: Creating a Socket1149579 -Node: Closing a Socket1151263 -Node: Socket Pairs1152789 -Node: Connections1154800 -Node: Connecting1155894 -Node: Listening1158722 -Node: Accepting Connections1160797 -Node: Who is Connected1163928 -Node: Transferring Data1165027 -Node: Sending Data1166133 -Node: Receiving Data1168652 -Node: Socket Data Options1170388 -Node: Byte Stream Example1171251 -Node: Server Example1173308 -Node: Out-of-Band Data1177325 -Node: Datagrams1183238 -Node: Sending Datagrams1184267 -Node: Receiving Datagrams1186194 -Node: Datagram Example1188264 -Node: Example Receiver1190278 -Node: Inetd1192843 -Node: Inetd Servers1193652 -Node: Configuring Inetd1194894 -Node: Socket Options1197563 -Node: Socket Option Functions1198271 -Node: Socket-Level Options1199828 -Node: Networks Database1203458 -Node: Low-Level Terminal Interface1206342 -Node: Is It a Terminal1207812 -Node: I/O Queues1209715 -Node: Canonical or Not1211673 -Node: Terminal Modes1213520 -Node: Mode Data Types1215089 -Node: Mode Functions1216917 -Node: Setting Modes1220849 -Node: Input Modes1222837 -Node: Output Modes1228104 -Node: Control Modes1229717 -Node: Local Modes1233807 -Node: Line Speed1240121 -Node: Special Characters1244298 -Node: Editing Characters1246212 -Node: Signal Characters1250553 -Node: Start/Stop Characters1253422 -Node: Other Special1255293 -Node: Noncanonical Input1257107 -Node: BSD Terminal Modes1261920 -Node: Line Control1263392 -Node: Noncanon Example1268108 -Node: Pseudo-Terminals1270328 -Node: Allocation1271240 -Node: Pseudo-Terminal Pairs1276031 -Node: Syslog1278550 -Node: Overview of Syslog1279499 -Node: Submitting Syslog Messages1283683 -Node: openlog1284501 -Node: syslog; vsyslog1287857 -Node: closelog1292058 -Node: setlogmask1292701 -Node: Syslog Example1294544 -Node: Mathematics1295200 -Node: Mathematical Constants1296922 -Node: Trig Functions1298929 -Node: Inverse Trig Functions1302664 -Node: Exponents and Logarithms1306466 -Node: Hyperbolic Functions1314658 -Node: Special Functions1318698 -Node: Errors in Math Functions1323236 -Node: Pseudo-Random Numbers1340365 -Node: ISO Random1342607 -Node: BSD Random1344539 -Node: SVID Random1346721 -Node: FP Function Optimizations1359913 -Node: Arithmetic1362000 -Node: Integers1363279 -Node: Integer Division1366295 -Node: Floating Point Numbers1369980 -Node: Floating Point Classes1371722 -Node: Floating Point Errors1376123 -Node: FP Exceptions1376620 -Node: Infinity and NaN1380981 -Node: Status bit operations1384055 -Node: Math Error Reporting1388197 -Node: Rounding1390523 -Node: Control Functions1394112 -Node: Arithmetic Functions1398903 -Node: Absolute Value1399771 -Node: Normalization Functions1401832 -Node: Rounding Functions1405906 -Node: Remainder Functions1410288 -Node: FP Bit Twiddling1412432 -Node: FP Comparison Functions1415544 -Node: Misc FP Arithmetic1418257 -Node: Complex Numbers1420999 -Node: Operations on Complex1422704 -Node: Parsing of Numbers1425048 -Node: Parsing of Integers1425740 -Node: Parsing of Floats1433805 -Node: System V Number Conversion1438085 -Node: Date and Time1443401 -Node: Time Basics1444129 -Node: Elapsed Time1446009 -Node: Processor And CPU Time1449561 -Node: CPU Time1451433 -Node: Processor Time1453206 -Node: Calendar Time1455606 -Node: Simple Calendar Time1457539 -Node: High-Resolution Calendar1459944 -Node: Broken-down Time1465306 -Node: High Accuracy Clock1473265 -Node: Formatting Calendar Time1480701 -Node: Parsing Date and Time1496013 -Node: Low-Level Time String Parsing1496856 -Node: General Time String Parsing1509875 -Node: TZ Variable1517198 -Node: Time Zone Functions1523242 -Node: Time Functions Example1526082 -Node: Setting an Alarm1527182 -Node: Sleeping1532429 -Node: Resource Usage And Limitation1537033 -Node: Resource Usage1537571 -Node: Limits on Resources1543153 -Node: Priority1552371 -Node: Absolute Priority1554708 -Node: Realtime Scheduling1559804 -Node: Basic Scheduling Functions1563252 -Node: Traditional Scheduling1571181 -Node: Traditional Scheduling Intro1571734 -Node: Traditional Scheduling Functions1575996 -Node: Non-Local Exits1579658 -Node: Non-Local Intro1580294 -Node: Non-Local Details1584025 -Node: Non-Local Exits and Signals1587101 -Node: Signal Handling1588572 -Node: Concepts of Signals1590606 -Node: Kinds of Signals1591170 -Node: Signal Generation1592567 -Node: Delivery of Signal1594834 -Node: Standard Signals1597690 -Node: Program Error Signals1599283 -Node: Termination Signals1606741 -Node: Alarm Signals1610579 -Node: Asynchronous I/O Signals1611819 -Node: Job Control Signals1613010 -Node: Operation Error Signals1617613 -Node: Miscellaneous Signals1619552 -Node: Signal Messages1621247 -Node: Signal Actions1623133 -Node: Basic Signal Handling1624078 -Node: Advanced Signal Handling1630153 -Node: Signal and Sigaction1633109 -Node: Sigaction Function Example1634861 -Node: Flags for Sigaction1637177 -Node: Initial Signal Actions1639555 -Node: Defining Handlers1640938 -Node: Handler Returns1643123 -Node: Termination in Handler1645173 -Node: Longjmp in Handler1646596 -Node: Signals in Handler1648691 -Node: Merged Signals1650811 -Node: Nonreentrancy1656524 -Node: Atomic Data Access1661930 -Node: Non-atomic Example1662977 -Node: Atomic Types1664748 -Node: Atomic Usage1665767 -Node: Interrupted Primitives1667237 -Node: Generating Signals1670537 -Node: Signaling Yourself1671130 -Node: Signaling Another Process1673108 -Node: Permission for kill1676484 -Node: Kill Example1678280 -Node: Blocking Signals1680624 -Node: Why Block1682396 -Node: Signal Sets1683933 -Node: Process Signal Mask1686959 -Node: Testing for Delivery1689967 -Node: Blocking for Handler1691217 -Node: Checking for Pending Signals1693636 -Node: Remembering a Signal1695648 -Node: Waiting for a Signal1699202 -Node: Using Pause1699747 -Node: Pause Problems1701373 -Node: Sigsuspend1703097 -Node: Signal Stack1705808 -Node: BSD Signal Handling1711145 -Node: BSD Handler1712419 -Node: Blocking in BSD1714853 -Node: Program Basics1716307 -Node: Program Arguments1718291 -Node: Argument Syntax1720288 -Node: Parsing Program Arguments1722965 -Node: Getopt1724070 -Node: Using Getopt1724708 -Node: Example of Getopt1728828 -Node: Getopt Long Options1731552 -Node: Getopt Long Option Example1735654 -Node: Argp1738525 -Node: Argp Global Variables1741880 -Node: Argp Parsers1743902 -Node: Argp Option Vectors1747021 -Node: Argp Option Flags1750258 -Node: Argp Parser Functions1752276 -Node: Argp Special Keys1754978 -Node: Argp Helper Functions1760138 -Node: Argp Parsing State1763199 -Node: Argp Children1766720 -Node: Argp Flags1768781 -Node: Argp Help Filtering1771098 -Node: Argp Help Filter Keys1772315 -Node: Argp Help1773189 -Node: Argp Help Flags1774378 -Node: Argp Examples1776674 -Node: Argp Example 11777144 -Node: Argp Example 21777948 -Node: Argp Example 31780892 -Node: Argp Example 41787941 -Node: Argp User Customization1795646 -Node: Suboptions1797259 -Node: Suboptions Example1799201 -Node: Environment Variables1801370 -Node: Environment Access1803235 -Node: Standard Environment1807956 -Node: System Calls1812132 -Node: Program Termination1815688 -Node: Normal Termination1816897 -Node: Exit Status1818294 -Node: Cleanups on Exit1821653 -Node: Aborting a Program1823470 -Node: Termination Internals1824369 -Node: Processes1826549 -Node: Running a Command1828571 -Node: Process Creation Concepts1830597 -Node: Process Identification1832607 -Node: Creating a Process1833531 -Node: Executing a File1837154 -Node: Process Completion1844292 -Node: Process Completion Status1850558 -Node: BSD Wait Functions1852202 -Node: Process Creation Example1854070 -Node: Job Control1856320 -Node: Concepts of Job Control1857600 -Node: Job Control is Optional1860957 -Node: Controlling Terminal1862007 -Node: Access to the Terminal1862914 -Node: Orphaned Process Groups1864518 -Node: Implementing a Shell1865510 -Node: Data Structures1866393 -Node: Initializing the Shell1869036 -Node: Launching Jobs1872772 -Node: Foreground and Background1880225 -Node: Stopped and Terminated Jobs1883329 -Node: Continuing Stopped Jobs1888511 -Node: Missing Pieces1890138 -Node: Functions for Job Control1891762 -Node: Identifying the Terminal1892242 -Node: Process Group Functions1893816 -Node: Terminal Access Functions1898827 -Node: Name Service Switch1902304 -Node: NSS Basics1903635 -Node: NSS Configuration File1905231 -Node: Services in the NSS configuration1906929 -Node: Actions in the NSS configuration1908210 -Node: Notes on NSS Configuration File1911371 -Node: NSS Module Internals1913248 -Node: NSS Module Names1913944 -Node: NSS Modules Interface1916318 -Node: Extending NSS1921119 -Node: Adding another Service to NSS1922050 -Node: NSS Module Function Internals1924281 -Node: Users and Groups1929187 -Node: User and Group IDs1931798 -Node: Process Persona1932706 -Node: Why Change Persona1934391 -Node: How Change Persona1936272 -Node: Reading Persona1938159 -Node: Setting User ID1940429 -Node: Setting Groups1943292 -Node: Enable/Disable Setuid1947394 -Node: Setuid Program Example1949428 -Node: Tips for Setuid1952882 -Node: Who Logged In1955399 -Node: User Accounting Database1957780 -Node: Manipulating the Database1958964 -Node: XPG Functions1971292 -Node: Logging In and Out1975707 -Node: User Database1977823 -Node: User Data Structure1978485 -Node: Lookup User1979742 -Node: Scanning All Users1982306 -Node: Writing a User Entry1985260 -Node: Group Database1986159 -Node: Group Data Structure1986735 -Node: Lookup Group1987498 -Node: Scanning All Groups1989999 -Node: Database Example1993029 -Node: Netgroup Database1995226 -Node: Netgroup Data1995637 -Node: Lookup Netgroup1997167 -Node: Netgroup Membership2000585 -Node: System Management2001915 -Node: Host Identification2002846 -Node: Platform Type2009326 -Node: Filesystem Handling2012631 -Node: Mount Information2014131 -Node: fstab2016113 -Node: mtab2021929 -Node: Other Mount Information2031224 -Node: Mount-Unmount-Remount2031738 -Node: System Parameters2041712 -Node: System Configuration2047245 -Node: General Limits2048817 -Node: System Options2052456 -Node: Version Supported2055788 -Node: Sysconf2057625 -Node: Sysconf Definition2058261 -Node: Constants for Sysconf2058933 -Node: Examples of Sysconf2071541 -Node: Minimums2072534 -Node: Limits for Files2075245 -Node: Options for Files2078247 -Node: File Minimums2080540 -Node: Pathconf2082319 -Node: Utility Limits2085273 -Node: Utility Minimums2087203 -Node: String Parameters2088955 -Node: Cryptographic Functions2092863 -Node: Legal Problems2094985 -Node: getpass2097268 -Node: crypt2099447 -Node: DES Encryption2104453 -Node: POSIX Threads2111024 -Node: Basic Thread Operations2112634 -Node: Thread Attributes2117220 -Node: Cancellation2122514 -Node: Cleanup Handlers2126566 -Node: Mutexes2131704 -Node: Condition Variables2141045 -Node: POSIX Semaphores2148421 -Node: Thread-Specific Data2152303 -Node: Threads and Signal Handling2156936 -Node: Threads and Fork2160626 -Node: Streams and Fork2166053 -Node: Miscellaneous Thread Functions2168215 -Node: Language Features2174018 -Node: Consistency Checking2174942 -Node: Variadic Functions2179486 -Node: Why Variadic2180558 -Node: How Variadic2182523 -Node: Variadic Prototypes2183812 -Node: Receiving Arguments2184953 -Node: How Many Arguments2187624 -Node: Calling Variadics2189287 -Node: Argument Macros2191387 -Node: Variadic Example2194223 -Node: Old Varargs2195375 -Node: Null Pointer Constant2197050 -Node: Important Data Types2198135 -Node: Data Type Measurements2200701 -Node: Width of Type2201558 -Node: Range of Type2202464 -Node: Floating Type Macros2205732 -Node: Floating Point Concepts2206992 -Node: Floating Point Parameters2210720 -Node: IEEE Floating Point2217672 -Node: Structure Measurement2219425 -Node: Library Summary2220120 -Node: Installation2410831 -Node: Configuring and compiling2412502 -Node: Running make install2421446 -Node: Tools for Compilation2425480 -Node: Supported Configurations2429391 -Node: Linux2431389 -Node: Reporting Bugs2433535 -Node: Maintenance2436366 -Node: Source Layout2436749 -Node: Porting2440682 -Node: Hierarchy Conventions2448983 -Node: Porting to Unix2454040 -Node: Contributors2456055 -Node: Copying2473368 -Node: Concept Index2500265 -Node: Type Index2561954 -Node: Function Index2569563 -Node: Variable Index2643668 -Node: File Index2695238 +Node: Introduction60613 +Node: Getting Started61962 +Node: Standards and Portability63422 +Node: ISO C64870 +Node: POSIX66387 +Node: Berkeley Unix68128 +Node: SVID68896 +Node: XPG69897 +Node: Using the Library70838 +Node: Header Files71561 +Node: Macro Definitions75513 +Node: Reserved Names77858 +Node: Feature Test Macros82541 +Node: Roadmap to the Manual93299 +Node: Error Reporting100583 +Node: Checking for Errors101500 +Node: Error Codes105711 +Node: Error Messages124728 +Node: Memory130425 +Node: Memory Concepts131282 +Node: Memory Allocation136950 +Node: Memory Allocation and C137839 +Node: Unconstrained Allocation141388 +Node: Basic Allocation142808 +Node: Malloc Examples144510 +Node: Freeing after Malloc146479 +Node: Changing Block Size148294 +Node: Allocating Cleared Space150897 +Node: Efficiency and Malloc151905 +Node: Aligned Memory Blocks153004 +Node: Malloc Tunable Parameters155084 +Node: Heap Consistency Checking156746 +Node: Hooks for Malloc161847 +Node: Statistics of Malloc168046 +Node: Summary of Malloc170004 +Node: Allocation Debugging172166 +Node: Tracing malloc173269 +Node: Using the Memory Debugger175120 +Node: Tips for the Memory Debugger177006 +Node: Interpreting the traces178334 +Node: Obstacks181869 +Node: Creating Obstacks183483 +Node: Preparing for Obstacks185382 +Node: Allocation in an Obstack188128 +Node: Freeing Obstack Objects190536 +Node: Obstack Functions191871 +Node: Growing Objects194101 +Node: Extra Fast Growing198347 +Node: Status of an Obstack201966 +Node: Obstacks Data Alignment203385 +Node: Obstack Chunks205071 +Node: Summary of Obstacks207427 +Node: Variable Size Automatic210841 +Node: Alloca Example212367 +Node: Advantages of Alloca213488 +Node: Disadvantages of Alloca215377 +Node: GNU C Variable-Size Arrays216121 +Node: Resizing the Data Segment217279 +Node: Locking Pages219368 +Node: Why Lock Pages220130 +Node: Locked Memory Details221757 +Node: Page Lock Functions224013 +Node: Character Handling229876 +Node: Classification of Characters231332 +Node: Case Conversion235176 +Node: Classification of Wide Characters237066 +Node: Using Wide Char Classes244802 +Node: Wide Character Case Conversion247113 +Node: String and Array Utilities249829 +Node: Representation of Strings251893 +Node: String/Array Conventions254834 +Node: String Length256666 +Node: Copying and Concatenation258656 +Node: String/Array Comparison274914 +Node: Collation Functions282330 +Node: Search Functions289325 +Node: Finding Tokens in a String295752 +Node: strfry304978 +Node: Trivial Encryption306008 +Node: Encode Binary Data307466 +Node: Argz and Envz Vectors312116 +Node: Argz Functions312716 +Node: Envz Functions319279 +Node: Character Set Handling322329 +Node: Extended Char Intro323482 +Node: Charset Function Overview336470 +Node: Restartable multibyte conversion337475 +Node: Selecting the Conversion339587 +Node: Keeping the state342004 +Node: Converting a Character345220 +Node: Converting Strings361322 +Node: Multibyte Conversion Example371361 +Node: Non-reentrant Conversion374347 +Node: Non-reentrant Character Conversion375973 +Node: Non-reentrant String Conversion380675 +Node: Shift State383661 +Node: Generic Charset Conversion386324 +Node: Generic Conversion Interface389453 +Node: iconv Examples399321 +Node: Other iconv Implementations404656 +Node: glibc iconv Implementation409990 +Node: Locales449396 +Node: Effects of Locale450996 +Node: Choosing Locale452931 +Node: Locale Categories454305 +Node: Setting the Locale456746 +Node: Standard Locales461036 +Node: Locale Information462325 +Node: The Lame Way to Locale Data464042 +Node: General Numeric465913 +Node: Currency Symbol468892 +Node: Sign of Money Amount473080 +Node: The Elegant and Fast Way475210 +Node: Formatting Numbers486009 +Node: Message Translation495402 +Node: Message catalogs a la X/Open497448 +Node: The catgets Functions498746 +Node: The message catalog files507769 +Node: The gencat program514519 +Node: Common Usage517653 +Node: The Uniforum approach524779 +Node: Message catalogs with gettext526273 +Node: Translation with gettext527308 +Node: Locating gettext catalog533604 +Node: Advanced gettext functions540467 +Node: Charset conversion in gettext550254 +Node: GUI program problems552743 +Node: Using gettextized software558277 +Node: Helper programs for gettext566976 +Node: Searching and Sorting568740 +Node: Comparison Functions569655 +Node: Array Search Function570873 +Node: Array Sort Function574217 +Node: Search/Sort Example576349 +Node: Hash Search Function579828 +Node: Tree Search Function587427 +Node: Pattern Matching594342 +Node: Wildcard Matching595144 +Node: Globbing598022 +Node: Calling Glob598886 +Node: Flags for Globbing604352 +Node: More Flags for Globbing607882 +Node: Regular Expressions613838 +Node: POSIX Regexp Compilation614822 +Node: Flags for POSIX Regexps618937 +Node: Matching POSIX Regexps619844 +Node: Regexp Subexpressions622005 +Node: Subexpression Complications624059 +Node: Regexp Cleanup626422 +Node: Word Expansion628748 +Node: Expansion Stages630103 +Node: Calling Wordexp631596 +Node: Flags for Wordexp635559 +Node: Wordexp Example637512 +Node: Tilde Expansion639308 +Node: Variable Substitution640380 +Node: I/O Overview644495 +Node: I/O Concepts646009 +Node: Streams and File Descriptors647154 +Node: File Position650245 +Node: File Names652379 +Node: Directories653265 +Node: File Name Resolution655002 +Node: File Name Errors657931 +Node: File Name Portability659471 +Node: I/O on Streams661463 +Node: Streams663536 +Node: Standard Streams664877 +Node: Opening Streams666543 +Node: Closing Streams674830 +Node: Simple Output677381 +Node: Character Input679784 +Node: Line Input682893 +Node: Unreading687904 +Node: Unreading Idea688713 +Node: How Unread689539 +Node: Block Input/Output692037 +Node: Formatted Output694266 +Node: Formatted Output Basics696033 +Node: Output Conversion Syntax698526 +Node: Table of Output Conversions703548 +Node: Integer Conversions706347 +Node: Floating-Point Conversions711676 +Node: Other Output Conversions717474 +Node: Formatted Output Functions720634 +Node: Dynamic Output724887 +Node: Variable Arguments Output726744 +Node: Parsing a Template String732278 +Node: Example of Parsing736109 +Node: Customizing Printf738397 +Node: Registering New Conversions740316 +Node: Conversion Specifier Options742489 +Node: Defining the Output Handler746326 +Node: Printf Extension Example748787 +Node: Predefined Printf Handlers751190 +Node: Formatted Input754834 +Node: Formatted Input Basics755913 +Node: Input Conversion Syntax758593 +Node: Table of Input Conversions761956 +Node: Numeric Input Conversions764253 +Node: String Input Conversions768493 +Node: Dynamic String Input772587 +Node: Other Input Conversions773777 +Node: Formatted Input Functions775423 +Node: Variable Arguments Input776988 +Node: EOF and Errors778615 +Node: Error Recovery780578 +Node: Binary Streams782138 +Node: File Positioning784662 +Node: Portable Positioning791695 +Node: Stream Buffering797230 +Node: Buffering Concepts798829 +Node: Flushing Buffers800192 +Node: Controlling Buffering801688 +Node: Other Kinds of Streams806123 +Node: String Streams807412 +Node: Obstack Streams811550 +Node: Custom Streams813601 +Node: Streams and Cookies814318 +Node: Hook Functions817388 +Node: Formatted Messages819774 +Node: Printing Formatted Messages820439 +Node: Adding Severity Classes826884 +Node: Example828491 +Node: Low-Level I/O831695 +Node: Opening and Closing Files834703 +Node: I/O Primitives842683 +Node: File Position Primitive856784 +Node: Descriptors and Streams864099 +Node: Stream/Descriptor Precautions866519 +Node: Linked Channels867725 +Node: Independent Channels868953 +Node: Cleaning Streams870856 +Node: Scatter-Gather873059 +Node: Memory-mapped I/O875648 +Node: Waiting for I/O884182 +Node: Synchronizing I/O891925 +Node: Asynchronous I/O895359 +Node: Asynchronous Reads/Writes903402 +Node: Status of AIO Operations915844 +Node: Synchronizing AIO Operations919414 +Node: Cancel AIO Operations925814 +Node: Configuration of AIO929285 +Node: Control Operations931381 +Node: Duplicating Descriptors934073 +Node: Descriptor Flags938333 +Node: File Status Flags941735 +Node: Access Modes943189 +Node: Open-time Flags945478 +Node: Operating Modes950195 +Node: Getting File Status Flags952961 +Node: File Locks955568 +Node: Interrupt Input964465 +Node: IOCTLs966897 +Node: File System Interface968973 +Node: Working Directory970502 +Node: Accessing Directories974208 +Node: Directory Entries975635 +Node: Opening a Directory978473 +Node: Reading/Closing Directory980165 +Node: Simple Directory Lister984836 +Node: Random Access Directory985855 +Node: Scanning Directory Content987357 +Node: Simple Directory Lister Mark II991814 +Node: Working with Directory Trees992924 +Node: Hard Links1004467 +Node: Symbolic Links1007266 +Node: Deleting Files1011035 +Node: Renaming Files1013955 +Node: Creating Directories1017560 +Node: File Attributes1019313 +Node: Attribute Meanings1020837 +Node: Reading Attributes1030063 +Node: Testing File Type1034134 +Node: File Owner1038287 +Node: Permission Bits1041941 +Node: Access Permission1047261 +Node: Setting Permissions1048403 +Node: Testing File Access1053610 +Node: File Times1057274 +Node: File Size1061746 +Node: Making Special Files1068170 +Node: Temporary Files1069847 +Node: Pipes and FIFOs1079068 +Node: Creating a Pipe1080651 +Node: Pipe to a Subprocess1083938 +Node: FIFO Special Files1086939 +Node: Pipe Atomicity1088512 +Node: Sockets1089395 +Node: Socket Concepts1091433 +Node: Communication Styles1095673 +Node: Socket Addresses1097524 +Node: Address Formats1099561 +Node: Setting Address1102762 +Node: Reading Address1104484 +Node: Interface Naming1106245 +Node: Local Namespace1108652 +Node: Local Namespace Concepts1109312 +Node: Local Namespace Details1110829 +Node: Local Socket Example1112776 +Node: Internet Namespace1114202 +Node: Internet Address Formats1116425 +Node: Host Addresses1118576 +Node: Abstract Host Addresses1119744 +Node: Host Address Data Type1124262 +Node: Host Address Functions1127385 +Node: Host Names1131737 +Node: Ports1141008 +Node: Services Database1143046 +Node: Byte Order1145870 +Node: Protocols Database1148178 +Node: Inet Example1151720 +Node: Misc Namespaces1153730 +Node: Open/Close Sockets1154476 +Node: Creating a Socket1154974 +Node: Closing a Socket1156658 +Node: Socket Pairs1158184 +Node: Connections1160195 +Node: Connecting1161289 +Node: Listening1164117 +Node: Accepting Connections1166192 +Node: Who is Connected1169323 +Node: Transferring Data1170422 +Node: Sending Data1171528 +Node: Receiving Data1174047 +Node: Socket Data Options1175783 +Node: Byte Stream Example1176646 +Node: Server Example1178703 +Node: Out-of-Band Data1182720 +Node: Datagrams1188633 +Node: Sending Datagrams1189662 +Node: Receiving Datagrams1191589 +Node: Datagram Example1193659 +Node: Example Receiver1195673 +Node: Inetd1198238 +Node: Inetd Servers1199047 +Node: Configuring Inetd1200289 +Node: Socket Options1202958 +Node: Socket Option Functions1203666 +Node: Socket-Level Options1205223 +Node: Networks Database1208853 +Node: Low-Level Terminal Interface1211737 +Node: Is It a Terminal1213207 +Node: I/O Queues1215110 +Node: Canonical or Not1217068 +Node: Terminal Modes1218915 +Node: Mode Data Types1220484 +Node: Mode Functions1222312 +Node: Setting Modes1226244 +Node: Input Modes1228232 +Node: Output Modes1233499 +Node: Control Modes1235112 +Node: Local Modes1239202 +Node: Line Speed1245516 +Node: Special Characters1249693 +Node: Editing Characters1251607 +Node: Signal Characters1255948 +Node: Start/Stop Characters1258817 +Node: Other Special1260688 +Node: Noncanonical Input1262502 +Node: BSD Terminal Modes1267315 +Node: Line Control1268787 +Node: Noncanon Example1273503 +Node: Pseudo-Terminals1275723 +Node: Allocation1276635 +Node: Pseudo-Terminal Pairs1281427 +Node: Syslog1283946 +Node: Overview of Syslog1284895 +Node: Submitting Syslog Messages1289079 +Node: openlog1289897 +Node: syslog; vsyslog1293253 +Node: closelog1297454 +Node: setlogmask1298097 +Node: Syslog Example1299940 +Node: Mathematics1300596 +Node: Mathematical Constants1302318 +Node: Trig Functions1304325 +Node: Inverse Trig Functions1308060 +Node: Exponents and Logarithms1311862 +Node: Hyperbolic Functions1320054 +Node: Special Functions1324094 +Node: Errors in Math Functions1328632 +Node: Pseudo-Random Numbers1345761 +Node: ISO Random1348003 +Node: BSD Random1349935 +Node: SVID Random1352173 +Node: FP Function Optimizations1365365 +Node: Arithmetic1367452 +Node: Integers1368731 +Node: Integer Division1371747 +Node: Floating Point Numbers1375432 +Node: Floating Point Classes1377174 +Node: Floating Point Errors1381575 +Node: FP Exceptions1382072 +Node: Infinity and NaN1386433 +Node: Status bit operations1389507 +Node: Math Error Reporting1393649 +Node: Rounding1395975 +Node: Control Functions1399564 +Node: Arithmetic Functions1404386 +Node: Absolute Value1405254 +Node: Normalization Functions1407315 +Node: Rounding Functions1411389 +Node: Remainder Functions1415771 +Node: FP Bit Twiddling1417915 +Node: FP Comparison Functions1421027 +Node: Misc FP Arithmetic1423740 +Node: Complex Numbers1426482 +Node: Operations on Complex1428187 +Node: Parsing of Numbers1430531 +Node: Parsing of Integers1431223 +Node: Parsing of Floats1439288 +Node: System V Number Conversion1443568 +Node: Date and Time1448884 +Node: Time Basics1449612 +Node: Elapsed Time1451492 +Node: Processor And CPU Time1455044 +Node: CPU Time1456916 +Node: Processor Time1458689 +Node: Calendar Time1461089 +Node: Simple Calendar Time1463022 +Node: High-Resolution Calendar1465427 +Node: Broken-down Time1470789 +Node: High Accuracy Clock1478748 +Node: Formatting Calendar Time1486184 +Node: Parsing Date and Time1501496 +Node: Low-Level Time String Parsing1502339 +Node: General Time String Parsing1515358 +Node: TZ Variable1522681 +Node: Time Zone Functions1528725 +Node: Time Functions Example1531565 +Node: Setting an Alarm1532665 +Node: Sleeping1537912 +Node: Resource Usage And Limitation1542516 +Node: Resource Usage1543054 +Node: Limits on Resources1548636 +Node: Priority1557854 +Node: Absolute Priority1560191 +Node: Realtime Scheduling1565287 +Node: Basic Scheduling Functions1568735 +Node: Traditional Scheduling1576664 +Node: Traditional Scheduling Intro1577217 +Node: Traditional Scheduling Functions1581479 +Node: Non-Local Exits1585141 +Node: Non-Local Intro1585777 +Node: Non-Local Details1589508 +Node: Non-Local Exits and Signals1592584 +Node: Signal Handling1594055 +Node: Concepts of Signals1596089 +Node: Kinds of Signals1596653 +Node: Signal Generation1598050 +Node: Delivery of Signal1600317 +Node: Standard Signals1603173 +Node: Program Error Signals1604766 +Node: Termination Signals1612224 +Node: Alarm Signals1616062 +Node: Asynchronous I/O Signals1617294 +Node: Job Control Signals1618485 +Node: Operation Error Signals1623088 +Node: Miscellaneous Signals1625027 +Node: Signal Messages1626722 +Node: Signal Actions1628608 +Node: Basic Signal Handling1629553 +Node: Advanced Signal Handling1635628 +Node: Signal and Sigaction1638584 +Node: Sigaction Function Example1640336 +Node: Flags for Sigaction1642652 +Node: Initial Signal Actions1645030 +Node: Defining Handlers1646413 +Node: Handler Returns1648598 +Node: Termination in Handler1650648 +Node: Longjmp in Handler1652071 +Node: Signals in Handler1654166 +Node: Merged Signals1656286 +Node: Nonreentrancy1661999 +Node: Atomic Data Access1667405 +Node: Non-atomic Example1668452 +Node: Atomic Types1670223 +Node: Atomic Usage1671242 +Node: Interrupted Primitives1672712 +Node: Generating Signals1676012 +Node: Signaling Yourself1676605 +Node: Signaling Another Process1678583 +Node: Permission for kill1681959 +Node: Kill Example1683755 +Node: Blocking Signals1686099 +Node: Why Block1687871 +Node: Signal Sets1689408 +Node: Process Signal Mask1692434 +Node: Testing for Delivery1695442 +Node: Blocking for Handler1696692 +Node: Checking for Pending Signals1699111 +Node: Remembering a Signal1701123 +Node: Waiting for a Signal1704677 +Node: Using Pause1705222 +Node: Pause Problems1706848 +Node: Sigsuspend1708572 +Node: Signal Stack1711283 +Node: BSD Signal Handling1716620 +Node: BSD Handler1717894 +Node: Blocking in BSD1720328 +Node: Program Basics1721782 +Node: Program Arguments1723766 +Node: Argument Syntax1725765 +Node: Parsing Program Arguments1728442 +Node: Getopt1729547 +Node: Using Getopt1730185 +Node: Example of Getopt1734305 +Node: Getopt Long Options1737029 +Node: Getopt Long Option Example1741131 +Node: Argp1744252 +Node: Argp Global Variables1747607 +Node: Argp Parsers1749629 +Node: Argp Option Vectors1752976 +Node: Argp Option Flags1756213 +Node: Argp Parser Functions1758231 +Node: Argp Special Keys1760933 +Node: Argp Helper Functions1766261 +Node: Argp Parsing State1769322 +Node: Argp Children1772843 +Node: Argp Flags1774904 +Node: Argp Help Filtering1777221 +Node: Argp Help Filter Keys1778438 +Node: Argp Help1779312 +Node: Argp Help Flags1780501 +Node: Argp Examples1782797 +Node: Argp Example 11783267 +Node: Argp Example 21784071 +Node: Argp Example 31787015 +Node: Argp Example 41794064 +Node: Argp User Customization1801769 +Node: Suboptions1803382 +Node: Suboptions Example1805324 +Node: Environment Variables1807493 +Node: Environment Access1809358 +Node: Standard Environment1814170 +Node: System Calls1818346 +Node: Program Termination1821902 +Node: Normal Termination1823111 +Node: Exit Status1824508 +Node: Cleanups on Exit1827867 +Node: Aborting a Program1829684 +Node: Termination Internals1830583 +Node: Processes1832763 +Node: Running a Command1834785 +Node: Process Creation Concepts1836811 +Node: Process Identification1838821 +Node: Creating a Process1839745 +Node: Executing a File1843368 +Node: Process Completion1850506 +Node: Process Completion Status1856772 +Node: BSD Wait Functions1858416 +Node: Process Creation Example1860284 +Node: Job Control1862534 +Node: Concepts of Job Control1863814 +Node: Job Control is Optional1867171 +Node: Controlling Terminal1868221 +Node: Access to the Terminal1869128 +Node: Orphaned Process Groups1870732 +Node: Implementing a Shell1871724 +Node: Data Structures1872607 +Node: Initializing the Shell1875250 +Node: Launching Jobs1878986 +Node: Foreground and Background1886439 +Node: Stopped and Terminated Jobs1889543 +Node: Continuing Stopped Jobs1894725 +Node: Missing Pieces1896352 +Node: Functions for Job Control1897976 +Node: Identifying the Terminal1898456 +Node: Process Group Functions1900030 +Node: Terminal Access Functions1905041 +Node: Name Service Switch1908518 +Node: NSS Basics1909849 +Node: NSS Configuration File1911445 +Node: Services in the NSS configuration1913143 +Node: Actions in the NSS configuration1914424 +Node: Notes on NSS Configuration File1917585 +Node: NSS Module Internals1919462 +Node: NSS Module Names1920158 +Node: NSS Modules Interface1922532 +Node: Extending NSS1927333 +Node: Adding another Service to NSS1928264 +Node: NSS Module Function Internals1930495 +Node: Users and Groups1935401 +Node: User and Group IDs1938012 +Node: Process Persona1938920 +Node: Why Change Persona1940605 +Node: How Change Persona1942486 +Node: Reading Persona1944373 +Node: Setting User ID1946643 +Node: Setting Groups1949506 +Node: Enable/Disable Setuid1953608 +Node: Setuid Program Example1955642 +Node: Tips for Setuid1959096 +Node: Who Logged In1961613 +Node: User Accounting Database1963994 +Node: Manipulating the Database1965178 +Node: XPG Functions1977506 +Node: Logging In and Out1981921 +Node: User Database1984037 +Node: User Data Structure1984699 +Node: Lookup User1985956 +Node: Scanning All Users1988520 +Node: Writing a User Entry1991474 +Node: Group Database1992373 +Node: Group Data Structure1992949 +Node: Lookup Group1993712 +Node: Scanning All Groups1996213 +Node: Database Example1999243 +Node: Netgroup Database2001440 +Node: Netgroup Data2001851 +Node: Lookup Netgroup2003381 +Node: Netgroup Membership2006799 +Node: System Management2008129 +Node: Host Identification2009124 +Node: Platform Type2015604 +Node: Filesystem Handling2018909 +Node: Mount Information2020409 +Node: fstab2022391 +Node: mtab2028207 +Node: Other Mount Information2037502 +Node: Mount-Unmount-Remount2038016 +Node: System Parameters2047990 +Node: Load Average2053544 +Node: System Configuration2054458 +Node: General Limits2056030 +Node: System Options2059669 +Node: Version Supported2063001 +Node: Sysconf2064838 +Node: Sysconf Definition2065474 +Node: Constants for Sysconf2066146 +Node: Examples of Sysconf2078754 +Node: Minimums2079747 +Node: Limits for Files2082458 +Node: Options for Files2085460 +Node: File Minimums2087753 +Node: Pathconf2089532 +Node: Utility Limits2092486 +Node: Utility Minimums2094416 +Node: String Parameters2096168 +Node: Cryptographic Functions2100076 +Node: Legal Problems2102198 +Node: getpass2104481 +Node: crypt2106660 +Node: DES Encryption2111666 +Node: POSIX Threads2118237 +Node: Basic Thread Operations2119847 +Node: Thread Attributes2124433 +Node: Cancellation2131390 +Node: Cleanup Handlers2135442 +Node: Mutexes2140580 +Node: Condition Variables2150238 +Node: POSIX Semaphores2157614 +Node: Thread-Specific Data2161496 +Node: Threads and Signal Handling2166129 +Node: Threads and Fork2169819 +Node: Streams and Fork2175246 +Node: Miscellaneous Thread Functions2177408 +Node: Language Features2183893 +Node: Consistency Checking2184817 +Node: Variadic Functions2189361 +Node: Why Variadic2190433 +Node: How Variadic2192398 +Node: Variadic Prototypes2193687 +Node: Receiving Arguments2194828 +Node: How Many Arguments2197499 +Node: Calling Variadics2199162 +Node: Argument Macros2201262 +Node: Variadic Example2204098 +Node: Old Varargs2205250 +Node: Null Pointer Constant2206925 +Node: Important Data Types2208010 +Node: Data Type Measurements2210576 +Node: Width of Type2211433 +Node: Range of Type2212339 +Node: Floating Type Macros2215607 +Node: Floating Point Concepts2216867 +Node: Floating Point Parameters2220595 +Node: IEEE Floating Point2227547 +Node: Structure Measurement2229300 +Node: Library Summary2229995 +Node: Installation2421553 +Node: Configuring and compiling2423242 +Node: Running make install2432547 +Node: Tools for Compilation2436605 +Node: Supported Configurations2440086 +Node: Linux2442253 +Node: Reporting Bugs2444399 +Node: Maintenance2447230 +Node: Source Layout2447613 +Node: Porting2451546 +Node: Hierarchy Conventions2459847 +Node: Porting to Unix2464904 +Node: Contributors2466919 +Node: Copying2484232 +Node: Concept Index2511129 +Node: Type Index2572880 +Node: Function Index2580489 +Node: Variable Index2655669 +Node: File Index2707239  End Tag Table diff -adurpN glibc-2.2/manual/libc.info-1 glibc-2.2.1/manual/libc.info-1 --- glibc-2.2/manual/libc.info-1 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-1 Sun Jan 7 09:09:09 2001 @@ -1188,6 +1188,7 @@ System Management machine type * Filesystem Handling:: Controlling/querying mounts * System Parameters:: Getting and setting various system parameters +* Load Average:: Getting the system load average Filesystem Handling diff -adurpN glibc-2.2/manual/libc.info-10 glibc-2.2.1/manual/libc.info-10 --- glibc-2.2/manual/libc.info-10 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-10 Sun Jan 7 09:09:09 2001 @@ -74,9 +74,9 @@ sets `errno' to `EINVAL' this really mea directly or indirectly, to perform the wanted conversion. This is achieved by providing for each character set a conversion -from and to UCS4 encoded ISO 10646. Using ISO 10646 as an intermediate -representation it is possible to "triangulate", i.e., converting with -an intermediate representation. +from and to UCS-4 encoded ISO 10646. Using ISO 10646 as an +intermediate representation it is possible to "triangulate", i.e., +converting with an intermediate representation. There is no inherent requirement to provide a conversion to ISO 10646 for a new character set and it is also possible to provide @@ -194,15 +194,15 @@ ending with `//'. There often is a char mentioned. From the discussion above and the chosen name it should have become clear that this is the name for the representation used in the intermediate step of the triangulation. We have said that this is -UCS4 but actually it is not quite right. The UCS4 specification also -includes the specification of the byte ordering used. Since a UCS4 +UCS-4 but actually it is not quite right. The UCS-4 specification also +includes the specification of the byte ordering used. Since a UCS-4 value consists of four bytes a stored value is effected by byte -ordering. The internal representation is *not* the same as UCS4 in +ordering. The internal representation is *not* the same as UCS-4 in case the byte ordering of the processor (or at least the running -process) is not the same as the one required for UCS4. This is done +process) is not the same as the one required for UCS-4. This is done for performance reasons as one does not want to perform unnecessary byte-swapping operations if one is not interested in actually seeing -the result in UCS4. To avoid trouble with endianess the internal +the result in UCS-4. To avoid trouble with endianess the internal representation consistently is named `INTERNAL' even on big-endian systems where the representations are identical. @@ -549,23 +549,24 @@ function and these define the interface. `__max_' elements of the step data object. A single ISO-2022-JP character can consist of one to four bytes. Therefore the `MIN_NEEDED_FROM' and `MAX_NEEDED_FROM' macros are defined this - way. The output is always the `INTERNAL' character set (aka UCS4) - and therefore each character consists of exactly four bytes. For - the conversion from `INTERNAL' to ISO-2022-JP we have to take into - account that escape sequences might be necessary to switch the - character sets. Therefore the `__max_needed_to' element for this - direction gets assigned `MAX_NEEDED_FROM + 2'. This takes into - account the two bytes needed for the escape sequences to single - the switching. The asymmetry in the maximum values for the two - directions can be explained easily: when reading ISO-2022-JP text - escape sequences can be handled alone. I.e., it is not necessary - to process a real character since the effect of the escape - sequence can be recorded in the state information. The situation - is different for the other direction. Since it is in general not - known which character comes next one cannot emit escape sequences - to change the state in advance. This means the escape sequences - which have to be emitted together with the next character. - Therefore one needs more room then only for the character itself. + way. The output is always the `INTERNAL' character set (aka + UCS-4) and therefore each character consists of exactly four + bytes. For the conversion from `INTERNAL' to ISO-2022-JP we have + to take into account that escape sequences might be necessary to + switch the character sets. Therefore the `__max_needed_to' + element for this direction gets assigned `MAX_NEEDED_FROM + 2'. + This takes into account the two bytes needed for the escape + sequences to single the switching. The asymmetry in the maximum + values for the two directions can be explained easily: when + reading ISO-2022-JP text escape sequences can be handled alone. + I.e., it is not necessary to process a real character since the + effect of the escape sequence can be recorded in the state + information. The situation is different for the other direction. + Since it is in general not known which character comes next one + cannot emit escape sequences to change the state in advance. This + means the escape sequences which have to be emitted together with + the next character. Therefore one needs more room then only for + the character itself. The possible return values of the initialization function are: @@ -727,7 +728,7 @@ the conversion function. All input was consumed and there is room left in the output buffer. - `__GCONV_OUTPUT_FULL' + `__GCONV_FULL_OUTPUT' No more room in the output buffer. In case this is not the last step this value is propagated down from the call of the next conversion function in the chain. diff -adurpN glibc-2.2/manual/libc.info-11 glibc-2.2.1/manual/libc.info-11 --- glibc-2.2/manual/libc.info-11 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-11 Sun Jan 7 09:09:09 2001 @@ -284,24 +284,23 @@ others. either `thousands_sep' or `mon_thousands_sep' to separate the digit groups. - Each string is made up of decimal numbers separated by semicolons. - Successive numbers (from left to right) give the sizes of - successive groups (from right to left, starting at the decimal - point). The last number in the string is used over and over for - all the remaining groups. - - If the last integer is `-1', it means that there is no more + Each member of these strings is to be interpreted as an integer + value of type `char'. Successive numbers (from left to right) + give the sizes of successive groups (from right to left, starting + at the decimal point.) The last member is either `0', in which + case the previous member is used over and over again for all the + remaining groups, or `CHAR_MAX', in which case there is no more grouping--or, put another way, any remaining digits form one large group without separators. - For example, if `grouping' is `"4;3;2"', the correct grouping for - the number `123456787654321' is `12', `34', `56', `78', `765', + For example, if `grouping' is `"\04\03\02"', the correct grouping + for the number `123456787654321' is `12', `34', `56', `78', `765', `4321'. This uses a group of 4 digits at the end, preceded by a group of 3 digits, preceded by groups of 2 digits (as many as needed). With a separator of `,', the number would be printed as `12,34,56,78,765,4321'. - A value of `"3"' indicates repeated groups of three digits, as + A value of `"\03"' indicates repeated groups of three digits, as normally used in the U.S. In the standard `C' locale, both `grouping' and `mon_grouping' @@ -367,58 +366,49 @@ assumed to be in Canadian dollars. `char p_cs_precedes' `char n_cs_precedes' - These members are `1' if the `currency_symbol' string should - precede the value of a monetary amount, or `0' if the string should - follow the value. The `p_cs_precedes' member applies to positive - amounts (or zero), and the `n_cs_precedes' member applies to - negative amounts. +`char int_p_cs_precedes' +`char int_n_cs_precedes' + These members are `1' if the `currency_symbol' or + `int_curr_symbol' strings should precede the value of a monetary + amount, or `0' if the strings should follow the value. The + `p_cs_precedes' and `int_p_cs_precedes' members apply to positive + amounts (or zero), and the `n_cs_precedes' and `int_n_cs_precedes' + members apply to negative amounts. - In the standard `C' locale, both of these members have a value of + In the standard `C' locale, all of these members have a value of `CHAR_MAX', meaning "unspecified". The ISO standard doesn't say what to do when you find this value. We recommend printing the currency symbol before the amount, which is right for most countries. In other words, treat all nonzero values alike in these members. - The POSIX standard says that these two members apply to the - `int_curr_symbol' as well as the `currency_symbol'. The ISO C - standard seems to imply that they should apply only to the - `currency_symbol'--so the `int_curr_symbol' should always precede - the amount. - - We can only guess which of these (if either) matches the usual - conventions for printing international currency symbols. Our - guess is that they should always precede the amount. If we find - out a reliable answer, we will put it here. + The members with the `int_' prefix apply to the `int_curr_symbol' + while the other two apply to `currency_symbol'. `char p_sep_by_space' `char n_sep_by_space' +`char int_p_sep_by_space' +`char int_n_sep_by_space' These members are `1' if a space should appear between the - `currency_symbol' string and the amount, or `0' if no space should - appear. The `p_sep_by_space' member applies to positive amounts - (or zero), and the `n_sep_by_space' member applies to negative - amounts. + `currency_symbol' or `int_curr_symbol' strings and the amount, or + `0' if no space should appear. The `p_sep_by_space' and + `int_p_sep_by_space' members apply to positive amounts (or zero), + and the `n_sep_by_space' and `int_n_sep_by_space' members apply to + negative amounts. - In the standard `C' locale, both of these members have a value of + In the standard `C' locale, all of these members have a value of `CHAR_MAX', meaning "unspecified". The ISO standard doesn't say what you should do when you find this value; we suggest you treat it as 1 (print a space). In other words, treat all nonzero values alike in these members. - These members apply only to `currency_symbol'. When you use - `int_curr_symbol', you never print an additional space, because - `int_curr_symbol' itself contains the appropriate separator. - - The POSIX standard says that these two members apply to the - `int_curr_symbol' as well as the `currency_symbol'. However, an - example in the ISO C standard clearly implies that they should - apply only to the `currency_symbol'--that the `int_curr_symbol' - contains any appropriate separator, so you should never print an - additional space. - - Based on what we know now, we recommend you ignore these members - when printing international currency symbols, and print no extra - space. + The members with the `int_' prefix apply to the `int_curr_symbol' + while the other two apply to `currency_symbol'. There is one + specialty with the `int_curr_symbol', though. Since all legal + values contain a space at the end the string one either printf + this space (if the currency symbol must appear in front and must + be separated) or one has to avoid printing this character at all + (especially when at the end of the string).  File: libc.info, Node: Sign of Money Amount, Prev: Currency Symbol, Up: The Lame Way to Locale Data @@ -446,6 +436,8 @@ the sign (if any) of a monetary value. `char p_sign_posn' `char n_sign_posn' +`char int_p_sign_posn' +`char int_n_sign_posn' These members are small integers that indicate how to position the sign for nonnegative and negative monetary quantities, respectively. (The string used by the sign is what was specified @@ -476,11 +468,8 @@ the sign (if any) of a monetary value. `CHAR_MAX'. We recommend you print the sign after the currency symbol. - It is not clear whether you should let these members apply to the -international currency format or not. POSIX says you should, but -intuition plus the examples in the ISO C standard suggest you should -not. We hope that someone who knows the conventions for formatting -monetary quantities well will tell us what we should recommend. + The members with the `int_' prefix apply to the `int_curr_symbol' + while the other two apply to `currency_symbol'.  File: libc.info, Node: The Elegant and Fast Way, Prev: The Lame Way to Locale Data, Up: Locale Information diff -adurpN glibc-2.2/manual/libc.info-12 glibc-2.2.1/manual/libc.info-12 --- glibc-2.2/manual/libc.info-12 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-12 Sun Jan 7 09:09:09 2001 @@ -628,7 +628,7 @@ The Uniforum approach to Message Transla translation in the Uniforum group. There never was a real standard defined but still the interface was used in Sun's operation systems. Since this approach fits better in the development process of free -software it is also used throughout the GNU package and the GNU +software it is also used throughout the GNU project and the GNU `gettext' package provides support for this outside the GNU C Library. The code of the `libintl' from GNU `gettext' is the same as the code @@ -735,7 +735,7 @@ part of the C library they can be found comparing the argument string with the result. But it is normally the task of the user to react on missing catalogs. The program cannot guess when a message catalog is really necessary since for - a user who s peaks the language the program was developed in does + a user who speaks the language the program was developed in does not need any translation. The remaining two functions to access the message catalog add some @@ -797,19 +797,8 @@ information. case that the MSGID argument is a constant string. So it is worth to optimize this case. Thinking shortly about this one will realize that as long as no new message catalog is loaded the translation of a message -will not change. I.e., the algorithm to determine the translation is -deterministic. - - Exactly this is what the optimizations implemented in the -`libintl.h' header will use. Whenever a program is compiler with the -GNU C compiler, optimization is selected and the MSGID argument to -`gettext', `dgettext' or `dcgettext' is a constant string the actual -function call will only be done the first time the message is used and -then always only if any new message catalog was loaded and so the -result of the translation lookup might be different. See the -`libintl.h' header file for details. For the user it is only important -to know that the result is always the same, independent of the compiler -or compiler options in use. +will not change. This optimization is actually implemented by the +`gettext', `dgettext' and `dcgettext' functions.  File: libc.info, Node: Locating gettext catalog, Next: Advanced gettext functions, Prev: Translation with gettext, Up: Message catalogs with gettext diff -adurpN glibc-2.2/manual/libc.info-13 glibc-2.2.1/manual/libc.info-13 --- glibc-2.2/manual/libc.info-13 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-13 Sun Jan 7 09:09:09 2001 @@ -193,7 +193,7 @@ Only one form: Turkish Two forms, singular used for one only - This is the form used in most existing programs sine it is what + This is the form used in most existing programs since it is what English is using. A header entry would look like this: nplurals=2; plural=n != 1 @@ -207,7 +207,7 @@ Two forms, singular used for one only Danish, Dutch, English, German, Norwegian, Swedish Finno-Ugric family - Finnish + Estonian, Finnish Latin/Greek family Greek @@ -242,15 +242,15 @@ Three forms, special cases for one and t Celtic Gaeilge -Three forms, special case for one and all numbers ending in 2, 3, or 4 +Three forms, special cases for numbers ending in 1 and 2, 3, 4, except those ending in 1[1-4] The header entry would look like this: - nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 ? 1 : 2 + nplurals=3; plural=n%100/10==1 ? 2 : n%10==1 ? 0 : (n+9)%10>3 ? 2 : 1 Languages with this property include: Slavic family - Russian + Czech, Russian, Slovak Three forms, special case for one and some numbers ending in 2, 3, or 4 The header entry would look like this: @@ -310,6 +310,8 @@ MSGIDs be US-ASCII strings. const char *CODESET) The `bind_textdomain_codeset' function can be used to specify the output character set for message catalogs for domain DOMAINNAME. + The CODESET argument must be a valid codeset name which can be used + for the `iconv_open' function, or a null pointer. If the CODESET parameter is the null pointer, `bind_textdomain_codeset' returns the currently selected codeset @@ -333,8 +335,8 @@ File: libc.info, Node: GUI program prob How to use `gettext' in GUI programs .................................... - One place where the `gettext' functions if used normally have big -programs is within programs with graphical user interfaces (GUIs). The + One place where the `gettext' functions, if used normally, have big +problems is within programs with graphical user interfaces (GUIs). The problem is that many of the strings which have to be translated are very short. They have to appear in pull-down menus which restricts the length. But strings which are not containing entire sentences or at @@ -540,15 +542,21 @@ A limit piece of example code should sho to work: { + setlocale (LC_ALL, ""); textdomain ("test-package"); bindtextdomain ("test-package", "/usr/local/share/locale"); puts (gettext ("Hello, world!")); } - At the program start the default domain is `messages'. The -`textdomain' call changes this to `test-package'. The `bindtextdomain' -call specifies that the message catalogs for the domain `test-package' -can be found below the directory `/usr/local/share/locale'. + At the program start the default domain is `messages', and the +default locale is "C". The `setlocale' call sets the locale according +to the user's environment variables; remember that correct functioning +of `gettext' relies on the correct setting of the `LC_MESSAGES' locale +(for looking up the message catalog) and of the `LC_CTYPE' locale (for +the character set conversion). The `textdomain' call changes the +default domain to `test-package'. The `bindtextdomain' call specifies +that the message catalogs for the domain `test-package' can be found +below the directory `/usr/local/share/locale'. If now the user set in her/his environment the variable `LANGUAGE' to `de' the `gettext' function will try to use the translations from @@ -573,7 +581,7 @@ of the environment variable. It can spl and by leaving out the only or the other part it can construct new values. This happens of course in a predictable way. To understand this one must know the format of the environment variable value. There -are to more or less standardized forms: +are two more or less standardized forms: *X/Open Format* `language[_territory[.codeset]][@modifier]' diff -adurpN glibc-2.2/manual/libc.info-14 glibc-2.2.1/manual/libc.info-14 --- glibc-2.2/manual/libc.info-14 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-14 Sun Jan 7 09:09:09 2001 @@ -145,11 +145,11 @@ is an enumeration type. The current node is an internal node and the function is called before the first child was processed. - `endorder' + `postorder' The current node is an internal node and the function is called after the first child was processed. - `postorder' + `endorder' The current node is an internal node and the function is called after the second child was processed. @@ -157,7 +157,7 @@ is an enumeration type. The current node is a leaf. - Function: void twalk (const void *ROOT, __action_fn_t ACTION) - For each node in the tree with a node pointed to by ROOT the + For each node in the tree with a node pointed to by ROOT, the `twalk' function calls the function provided by the parameter ACTION. For leaf nodes the function is called exactly once with VALUE set to `leaf'. For internal nodes the function is called @@ -168,10 +168,10 @@ is an enumeration type. root node. Since the functions used for the ACTION parameter to `twalk' must - not modify the tree data it is safe to run `twalk' is more than - one thread at the same time working on the same tree. It is also + not modify the tree data, it is safe to run `twalk' in more than + one thread at the same time, working on the same tree. It is also safe to call `tfind' in parallel. Functions which modify the tree - must not be used. Otherwise the behaviour is undefined. + must not be used, otherwise the behaviour is undefined.  File: libc.info, Node: Pattern Matching, Next: I/O Overview, Prev: Searching and Sorting, Up: Top diff -adurpN glibc-2.2/manual/libc.info-16 glibc-2.2.1/manual/libc.info-16 --- glibc-2.2/manual/libc.info-16 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-16 Sun Jan 7 09:09:09 2001 @@ -81,8 +81,8 @@ of a specified delimiter character. read lines from a stream. The alternative standard functions are unreliable. - If an error occurs or end of file is reached, `getline' returns - `-1'. + If an error occurs or end of file is reached without any bytes + read, `getline' returns `-1'. - Function: ssize_t getdelim (char **LINEPTR, size_t *N, int DELIMITER, FILE *STREAM) @@ -997,7 +997,10 @@ way to make sure you have all the right char *buffer = (char *) xmalloc (size); int nchars; - /* Try to print in the allocated space. */ + if (buffer == NULL) + return NULL; + + /* Try to print in the allocated space. */ nchars = snprintf (buffer, size, "value of %s is %s", name, value); @@ -1007,9 +1010,10 @@ way to make sure you have all the right how much space is needed. */ buffer = (char *) xrealloc (buffer, nchars + 1); - /* Try again. */ - snprintf (buffer, size, "value of %s is %s", - name, value); + if (buffer != NULL) + /* Try again. */ + snprintf (buffer, size, "value of %s is %s", + name, value); } /* The last call worked, return the string. */ return buffer; @@ -1040,6 +1044,10 @@ results in dynamically allocated memory. the address of a `char *' object, and `asprintf' stores a pointer to the newly allocated string at that location. + The return value is the number of characters allocated for the + buffer, or less than zero if an error occured. Usually this means + that the buffer could not be allocated. + Here is how to use `asprintf' to get the same result as the `snprintf' example, but more easily: @@ -1049,7 +1057,8 @@ results in dynamically allocated memory. make_message (char *name, char *value) { char *result; - asprintf (&result, "value of %s is %s", name, value); + if (asprintf (&result, "value of %s is %s", name, value) < 0) + return NULL; return result; } diff -adurpN glibc-2.2/manual/libc.info-17 glibc-2.2.1/manual/libc.info-17 --- glibc-2.2/manual/libc.info-17 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-17 Sun Jan 7 09:09:09 2001 @@ -259,11 +259,13 @@ Registering New Conversions - Function: int register_printf_function (int SPEC, printf_function HANDLER-FUNCTION, printf_arginfo_function ARGINFO-FUNCTION) This function defines the conversion specifier character SPEC. - Thus, if SPEC is `'z'', it defines the conversion `%z'. You can + Thus, if SPEC is `'Y'', it defines the conversion `%Y'. You can redefine the built-in conversions like `%s', but flag characters like `#' and type modifiers like `l' can never be used as conversions; calling `register_printf_function' for those - characters has no effect. + characters has no effect. It is advisable not to use lowercase + letters, since the ISO C standard warns that additional lowercase + letters may be standardized in future editions of the standard. The HANDLER-FUNCTION is the function called by `printf' and friends when this conversion appears in a template string. *Note diff -adurpN glibc-2.2/manual/libc.info-19 glibc-2.2.1/manual/libc.info-19 --- glibc-2.2/manual/libc.info-19 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-19 Sun Jan 7 09:09:09 2001 @@ -634,7 +634,7 @@ what it means. the new position are filled with zeros. Extending the file in this way can create a "hole": the blocks of zeros are not actually allocated on disk, so the file takes up less space than it appears - so; it is then called a "sparse file". + to; it is then called a "sparse file". If the file position cannot be changed, or the operation is in some way invalid, `lseek' returns a value of -1. The following diff -adurpN glibc-2.2/manual/libc.info-22 glibc-2.2.1/manual/libc.info-22 --- glibc-2.2/manual/libc.info-22 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-22 Sun Jan 7 09:09:09 2001 @@ -369,6 +369,42 @@ symbols are declared in the header file even on systems without the `d_reclen' member one could use multiple threads by using external locking. + It is also important to look at the definition of the `struct + dirent' type. Simply passing a pointer to an object of this type + for the second parameter of `readdir_r' might not be enough. Some + systems don't define the `d_name' element sufficiently long. In + this case the user has to provide additional space. There must be + room for at least `NAME_MAX + 1' characters in the `d_name' array. + Code to call `readdir_r' could look like this: + + union + { + struct dirent d; + char b[offsetof (struct dirent, d_name) + NAME_MAX + 1]; + } u; + + if (readdir_r (dir, &u.d, &res) == 0) + ... + + To support large filesystems on 32-bit machines there are LFS +variants of the last two functions. + + - Function: struct dirent64 * readdir64 (DIR *DIRSTREAM) + The `readdir64' function is just like the `readdir' function + except that it returns a pointer to a record of type `struct + dirent64'. Some of the members of this data type (notably `d_ino') + might have a different size to allow large filesystems. + + In all other aspects this function is equivalent to `readdir'. + + - Function: int readdir64_r (DIR *DIRSTREAM, struct dirent64 *ENTRY, + struct dirent64 **RESULT) + The `readdir64_r' function is equivalent to the `readdir_r' + function except that it takes parameters of base type `struct + dirent64' instead of `struct dirent' in the second and third + position. The same precautions mentioned in the documentation of + `readdir_r' also apply here. + - Function: int closedir (DIR *DIRSTREAM) This function closes the directory stream DIRSTREAM. It returns `0' on success and `-1' on failure. @@ -1161,53 +1197,4 @@ Renaming Files `EXDEV' The two file names NEWNAME and OLDNAME are on different file systems. - - -File: libc.info, Node: Creating Directories, Next: File Attributes, Prev: Renaming Files, Up: File System Interface - -Creating Directories -==================== - - Directories are created with the `mkdir' function. (There is also a -shell command `mkdir' which does the same thing.) - - - Function: int mkdir (const char *FILENAME, mode_t MODE) - The `mkdir' function creates a new, empty directory with name - FILENAME. - - The argument MODE specifies the file permissions for the new - directory file. *Note Permission Bits::, for more information - about this. - - A return value of `0' indicates successful completion, and `-1' - indicates failure. In addition to the usual file name syntax - errors (*note File Name Errors::.), the following `errno' error - conditions are defined for this function: - - `EACCES' - Write permission is denied for the parent directory in which - the new directory is to be added. - - `EEXIST' - A file named FILENAME already exists. - - `EMLINK' - The parent directory has too many links (entries). - - Well-designed file systems never report this error, because - they permit more links than your disk could possibly hold. - However, you must still take account of the possibility of - this error, as it could result from network access to a file - system on another machine. - - `ENOSPC' - The file system doesn't have enough room to create the new - directory. - - `EROFS' - The parent directory of the directory being created is on a - read-only file system and cannot be modified. - - To use this function, your program should include the header file - `sys/stat.h'. diff -adurpN glibc-2.2/manual/libc.info-23 glibc-2.2.1/manual/libc.info-23 --- glibc-2.2/manual/libc.info-23 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-23 Sun Jan 7 09:09:09 2001 @@ -32,6 +32,55 @@ entitled "GNU Library General Public Lic accuracy by the Foundation.  +File: libc.info, Node: Creating Directories, Next: File Attributes, Prev: Renaming Files, Up: File System Interface + +Creating Directories +==================== + + Directories are created with the `mkdir' function. (There is also a +shell command `mkdir' which does the same thing.) + + - Function: int mkdir (const char *FILENAME, mode_t MODE) + The `mkdir' function creates a new, empty directory with name + FILENAME. + + The argument MODE specifies the file permissions for the new + directory file. *Note Permission Bits::, for more information + about this. + + A return value of `0' indicates successful completion, and `-1' + indicates failure. In addition to the usual file name syntax + errors (*note File Name Errors::.), the following `errno' error + conditions are defined for this function: + + `EACCES' + Write permission is denied for the parent directory in which + the new directory is to be added. + + `EEXIST' + A file named FILENAME already exists. + + `EMLINK' + The parent directory has too many links (entries). + + Well-designed file systems never report this error, because + they permit more links than your disk could possibly hold. + However, you must still take account of the possibility of + this error, as it could result from network access to a file + system on another machine. + + `ENOSPC' + The file system doesn't have enough room to create the new + directory. + + `EROFS' + The parent directory of the directory being created is on a + read-only file system and cannot be modified. + + To use this function, your program should include the header file + `sys/stat.h'. + + File: libc.info, Node: File Attributes, Next: Making Special Files, Prev: Creating Directories, Up: File System Interface File Attributes @@ -1052,178 +1101,4 @@ in the header file `sys/time.h'. The return values and error conditions are the same as for the `utime' function. - - -File: libc.info, Node: File Size, Prev: File Times, Up: File Attributes - -File Size ---------- - - Normally file sizes are maintained automatically. A file begins -with a size of 0 and is automatically extended when data is written past -its end. It is also possible to empty a file completely by an `open' -or `fopen' call. - - However, sometimes it is necessary to *reduce* the size of a file. -This can be done with the `truncate' and `ftruncate' functions. They -were introduced in BSD Unix. `ftruncate' was later added to POSIX.1. - - Some systems allow you to extend a file (creating holes) with these -functions. This is useful when using memory-mapped I/O (*note -Memory-mapped I/O::.), where files are not automatically extended. -However, it is not portable but must be implemented if `mmap' allows -mapping of files (i.e., `_POSIX_MAPPED_FILES' is defined). - - Using these functions on anything other than a regular file gives -*undefined* results. On many systems, such a call will appear to -succeed, without actually accomplishing anything. - - - Function: int truncate (const char *FILENAME, off_t LENGTH) - The `truncate' function changes the size of FILENAME to LENGTH. - If LENGTH is shorter than the previous length, data at the end - will be lost. The file must be writable by the user to perform - this operation. - - If LENGTH is longer, holes will be added to the end. However, some - systems do not support this feature and will leave the file - unchanged. - - When the source file is compiled with `_FILE_OFFSET_BITS == 64' the - `truncate' function is in fact `truncate64' and the type `off_t' - has 64 bits which makes it possible to handle files up to 2^63 - bytes in length. - - The return value is 0 for success, or -1 for an error. In - addition to the usual file name errors, the following errors may - occur: - - `EACCES' - The file is a directory or not writable. - - `EINVAL' - LENGTH is negative. - - `EFBIG' - The operation would extend the file beyond the limits of the - operating system. - - `EIO' - A hardware I/O error occurred. - - `EPERM' - The file is "append-only" or "immutable". - - `EINTR' - The operation was interrupted by a signal. - - - - Function: int truncate64 (const char *NAME, off64_t LENGTH) - This function is similar to the `truncate' function. The - difference is that the LENGTH argument is 64 bits wide even on 32 - bits machines, which allows the handling of files with sizes up to - 2^63 bytes. - - When the source file is compiled with `_FILE_OFFSET_BITS == 64' on - a 32 bits machine this function is actually available under the - name `truncate' and so transparently replaces the 32 bits - interface. - - - Function: int ftruncate (int FD, off_t LENGTH) - This is like `truncate', but it works on a file descriptor FD for - an opened file instead of a file name to identify the object. The - file must be opened for writing to successfully carry out the - operation. - - The POSIX standard leaves it implementation defined what happens - if the specified new LENGTH of the file is bigger than the - original size. The `ftruncate' function might simply leave the - file alone and do nothing or it can increase the size to the - desired size. In this later case the extended area should be - zero-filled. So using `ftruncate' is no reliable way to increase - the file size but if it is possible it is probably the fastest - way. The function also operates on POSIX shared memory segments - if these are implemented by the system. - - `ftruncate' is especially useful in combination with `mmap'. - Since the mapped region must have a fixed size one cannot enlarge - the file by writing something beyond the last mapped page. - Instead one has to enlarge the file itself and then remap the file - with the new size. The example below shows how this works. - - When the source file is compiled with `_FILE_OFFSET_BITS == 64' the - `ftruncate' function is in fact `ftruncate64' and the type `off_t' - has 64 bits which makes it possible to handle files up to 2^63 - bytes in length. - - The return value is 0 for success, or -1 for an error. The - following errors may occur: - - `EBADF' - FD does not correspond to an open file. - - `EACCES' - FD is a directory or not open for writing. - - `EINVAL' - LENGTH is negative. - - `EFBIG' - The operation would extend the file beyond the limits of the - operating system. - - `EIO' - A hardware I/O error occurred. - - `EPERM' - The file is "append-only" or "immutable". - - `EINTR' - The operation was interrupted by a signal. - - - - Function: int ftruncate64 (int ID, off64_t LENGTH) - This function is similar to the `ftruncate' function. The - difference is that the LENGTH argument is 64 bits wide even on 32 - bits machines which allows the handling of files with sizes up to - 2^63 bytes. - - When the source file is compiled with `_FILE_OFFSET_BITS == 64' on - a 32 bits machine this function is actually available under the - name `ftruncate' and so transparently replaces the 32 bits - interface. - - As announced here is a little example of how to use `ftruncate' in -combination with `mmap': - - int fd; - void *start; - size_t len; - - int - add (off_t at, void *block, size_t size) - { - if (at + size > len) - { - /* Resize the file and remap. */ - size_t ps = sysconf (_SC_PAGESIZE); - size_t ns = (at + size + ps - 1) & ~(ps - 1); - void *np; - if (ftruncate (fd, ns) < 0) - return -1; - np = mmap (NULL, ns, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); - if (np == MAP_FAILED) - return -1; - start = np; - len = ns; - } - memcpy ((char *) start + at, block, size); - return 0; - } - - The function `add' writes a block of memory at an arbitrary position -in the file. If the current size of the file is too small it is -extended. Note the it is extended by a round number of pages. This is -a requirement of `mmap'. The program has to keep track of the real -size, and when it has finished a final `ftruncate' call should set the -real size of the file. diff -adurpN glibc-2.2/manual/libc.info-24 glibc-2.2.1/manual/libc.info-24 --- glibc-2.2/manual/libc.info-24 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-24 Sun Jan 7 09:09:09 2001 @@ -32,6 +32,180 @@ entitled "GNU Library General Public Lic accuracy by the Foundation.  +File: libc.info, Node: File Size, Prev: File Times, Up: File Attributes + +File Size +--------- + + Normally file sizes are maintained automatically. A file begins +with a size of 0 and is automatically extended when data is written past +its end. It is also possible to empty a file completely by an `open' +or `fopen' call. + + However, sometimes it is necessary to *reduce* the size of a file. +This can be done with the `truncate' and `ftruncate' functions. They +were introduced in BSD Unix. `ftruncate' was later added to POSIX.1. + + Some systems allow you to extend a file (creating holes) with these +functions. This is useful when using memory-mapped I/O (*note +Memory-mapped I/O::.), where files are not automatically extended. +However, it is not portable but must be implemented if `mmap' allows +mapping of files (i.e., `_POSIX_MAPPED_FILES' is defined). + + Using these functions on anything other than a regular file gives +*undefined* results. On many systems, such a call will appear to +succeed, without actually accomplishing anything. + + - Function: int truncate (const char *FILENAME, off_t LENGTH) + The `truncate' function changes the size of FILENAME to LENGTH. + If LENGTH is shorter than the previous length, data at the end + will be lost. The file must be writable by the user to perform + this operation. + + If LENGTH is longer, holes will be added to the end. However, some + systems do not support this feature and will leave the file + unchanged. + + When the source file is compiled with `_FILE_OFFSET_BITS == 64' the + `truncate' function is in fact `truncate64' and the type `off_t' + has 64 bits which makes it possible to handle files up to 2^63 + bytes in length. + + The return value is 0 for success, or -1 for an error. In + addition to the usual file name errors, the following errors may + occur: + + `EACCES' + The file is a directory or not writable. + + `EINVAL' + LENGTH is negative. + + `EFBIG' + The operation would extend the file beyond the limits of the + operating system. + + `EIO' + A hardware I/O error occurred. + + `EPERM' + The file is "append-only" or "immutable". + + `EINTR' + The operation was interrupted by a signal. + + + - Function: int truncate64 (const char *NAME, off64_t LENGTH) + This function is similar to the `truncate' function. The + difference is that the LENGTH argument is 64 bits wide even on 32 + bits machines, which allows the handling of files with sizes up to + 2^63 bytes. + + When the source file is compiled with `_FILE_OFFSET_BITS == 64' on + a 32 bits machine this function is actually available under the + name `truncate' and so transparently replaces the 32 bits + interface. + + - Function: int ftruncate (int FD, off_t LENGTH) + This is like `truncate', but it works on a file descriptor FD for + an opened file instead of a file name to identify the object. The + file must be opened for writing to successfully carry out the + operation. + + The POSIX standard leaves it implementation defined what happens + if the specified new LENGTH of the file is bigger than the + original size. The `ftruncate' function might simply leave the + file alone and do nothing or it can increase the size to the + desired size. In this later case the extended area should be + zero-filled. So using `ftruncate' is no reliable way to increase + the file size but if it is possible it is probably the fastest + way. The function also operates on POSIX shared memory segments + if these are implemented by the system. + + `ftruncate' is especially useful in combination with `mmap'. + Since the mapped region must have a fixed size one cannot enlarge + the file by writing something beyond the last mapped page. + Instead one has to enlarge the file itself and then remap the file + with the new size. The example below shows how this works. + + When the source file is compiled with `_FILE_OFFSET_BITS == 64' the + `ftruncate' function is in fact `ftruncate64' and the type `off_t' + has 64 bits which makes it possible to handle files up to 2^63 + bytes in length. + + The return value is 0 for success, or -1 for an error. The + following errors may occur: + + `EBADF' + FD does not correspond to an open file. + + `EACCES' + FD is a directory or not open for writing. + + `EINVAL' + LENGTH is negative. + + `EFBIG' + The operation would extend the file beyond the limits of the + operating system. + + `EIO' + A hardware I/O error occurred. + + `EPERM' + The file is "append-only" or "immutable". + + `EINTR' + The operation was interrupted by a signal. + + + - Function: int ftruncate64 (int ID, off64_t LENGTH) + This function is similar to the `ftruncate' function. The + difference is that the LENGTH argument is 64 bits wide even on 32 + bits machines which allows the handling of files with sizes up to + 2^63 bytes. + + When the source file is compiled with `_FILE_OFFSET_BITS == 64' on + a 32 bits machine this function is actually available under the + name `ftruncate' and so transparently replaces the 32 bits + interface. + + As announced here is a little example of how to use `ftruncate' in +combination with `mmap': + + int fd; + void *start; + size_t len; + + int + add (off_t at, void *block, size_t size) + { + if (at + size > len) + { + /* Resize the file and remap. */ + size_t ps = sysconf (_SC_PAGESIZE); + size_t ns = (at + size + ps - 1) & ~(ps - 1); + void *np; + if (ftruncate (fd, ns) < 0) + return -1; + np = mmap (NULL, ns, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); + if (np == MAP_FAILED) + return -1; + start = np; + len = ns; + } + memcpy ((char *) start + at, block, size); + return 0; + } + + The function `add' writes a block of memory at an arbitrary position +in the file. If the current size of the file is too small it is +extended. Note the it is extended by a round number of pages. This is +a requirement of `mmap'. The program has to keep track of the real +size, and when it has finished a final `ftruncate' call should set the +real size of the file. + + File: libc.info, Node: Making Special Files, Next: Temporary Files, Prev: File Attributes, Up: File System Interface Making Special Files @@ -139,7 +313,7 @@ pointer to a static buffer. same name using `tmpnam', leading to a possible security hole. The implementation generates names which can hardly be predicted, but when opening the file you should use the `O_EXCL' flag. Using - `tmpfile' is a safe way to avoid this problem. + `tmpfile' or `mkstemp' is a safe way to avoid this problem. - Function: char * tmpnam_r (char *RESULT) This function is nearly identical to the `tmpnam' function, except @@ -148,6 +322,9 @@ pointer to a static buffer. This guarantees reentrancy because the non-reentrant situation of `tmpnam' cannot happen here. + *Warning*: This function has the same security problems as + `tmpnam'. + - Macro: int L_tmpnam The value of this macro is an integer constant expression that represents the minimum size of a string large enough to hold a @@ -191,6 +368,13 @@ pointer to a static buffer. This function is defined for SVID compatibility. + *Warning:* Between the time the pathname is constructed and the + file is created another process might have created a file with the + same name using `tempnam', leading to a possible security hole. + The implementation generates names which can hardly be predicted, + but when opening the file you should use the `O_EXCL' flag. Using + `tmpfile' or `mkstemp' is a safe way to avoid this problem. + - SVID Macro: char * P_tmpdir This macro is the name of the default directory for temporary files. @@ -476,11 +660,16 @@ output through another program, in this output = popen ("more", "w"); if (!output) { - fprintf (stderr, "Could not run more.\n"); + fprintf (stderr, + "incorrect parameters or too many files.\n"); return EXIT_FAILURE; } write_data (output); - pclose (output); + if (pclose (output) != 0) + { + fprintf (stderr, + "Could not run more or other error.\n"); + } return EXIT_SUCCESS; } @@ -1021,8 +1210,7 @@ Local Namespace Concepts In the local namespace socket addresses are file names. You can specify any file name you want as the address of the socket, but you -must have write permission on the directory containing it. In order to -connect to a socket you must have read permission for it. It's common +must have write permission on the directory containing it. It's common to put these files in the `/tmp' directory. One peculiarity of the local namespace is that the name is only used @@ -1046,220 +1234,4 @@ this; see *Note Deleting Files::. The local namespace supports just one protocol for any communication style; it is protocol number `0'. - - -File: libc.info, Node: Local Namespace Details, Next: Local Socket Example, Prev: Local Namespace Concepts, Up: Local Namespace - -Details of Local Namespace --------------------------- - - To create a socket in the local namespace, use the constant -`PF_LOCAL' as the NAMESPACE argument to `socket' or `socketpair'. This -constant is defined in `sys/socket.h'. - - - Macro: int PF_LOCAL - This designates the local namespace, in which socket addresses are - local names, and its associated family of protocols. `PF_Local' - is the macro used by Posix.1g. - - - Macro: int PF_UNIX - This is a synonym for `PF_LOCAL', for compatibility's sake. - - - Macro: int PF_FILE - This is a synonym for `PF_LOCAL', for compatibility's sake. - - The structure for specifying socket names in the local namespace is -defined in the header file `sys/un.h': - - - Data Type: struct sockaddr_un - This structure is used to specify local namespace socket - addresses. It has the following members: - - `short int sun_family' - This identifies the address family or format of the socket - address. You should store the value `AF_LOCAL' to designate - the local namespace. *Note Socket Addresses::. - - `char sun_path[108]' - This is the file name to use. - - *Incomplete:* Why is 108 a magic number? RMS suggests making - this a zero-length array and tweaking the following example - to use `alloca' to allocate an appropriate amount of storage - based on the length of the filename. - - You should compute the LENGTH parameter for a socket address in the -local namespace as the sum of the size of the `sun_family' component -and the string length (*not* the allocation size!) of the file name -string. This can be done using the macro `SUN_LEN': - - - Macro: int SUN_LEN (*struct sockaddr_un ** PTR) - The macro computes the length of socket address in the local - namespace. - - -File: libc.info, Node: Local Socket Example, Prev: Local Namespace Details, Up: Local Namespace - -Example of Local-Namespace Sockets ----------------------------------- - - Here is an example showing how to create and name a socket in the -local namespace. - - #include - #include - #include - #include - #include - #include - - int - make_named_socket (const char *filename) - { - struct sockaddr_un name; - int sock; - size_t size; - - /* Create the socket. */ - sock = socket (PF_LOCAL, SOCK_DGRAM, 0); - if (sock < 0) - { - perror ("socket"); - exit (EXIT_FAILURE); - } - - /* Bind a name to the socket. */ - name.sun_family = AF_LOCAL; - strncpy (name.sun_path, filename, sizeof (name.sun_path)); - - /* The size of the address is - the offset of the start of the filename, - plus its length, - plus one for the terminating null byte. - Alternatively you can just do: - size = SUN_LEN (&name); - */ - size = (offsetof (struct sockaddr_un, sun_path) - + strlen (name.sun_path) + 1); - - if (bind (sock, (struct sockaddr *) &name, size) < 0) - { - perror ("bind"); - exit (EXIT_FAILURE); - } - - return sock; - } - - -File: libc.info, Node: Internet Namespace, Next: Misc Namespaces, Prev: Local Namespace, Up: Sockets - -The Internet Namespace -====================== - - This section describes the details of the protocols and socket naming -conventions used in the Internet namespace. - - Originally the Internet namespace used only IP version 4 (IPv4). -With the growing number of hosts on the Internet, a new protocol with a -larger address space was necessary: IP version 6 (IPv6). IPv6 -introduces 128-bit addresses (IPv4 has 32-bit addresses) and other -features, and will eventually replace IPv4. - - To create a socket in the IPv4 Internet namespace, use the symbolic -name `PF_INET' of this namespace as the NAMESPACE argument to `socket' -or `socketpair'. For IPv6 addresses you need the macro `PF_INET6'. -These macros are defined in `sys/socket.h'. - - - Macro: int PF_INET - This designates the IPv4 Internet namespace and associated family - of protocols. - - - Macro: int PF_INET6 - This designates the IPv6 Internet namespace and associated family - of protocols. - - A socket address for the Internet namespace includes the following -components: - - * The address of the machine you want to connect to. Internet - addresses can be specified in several ways; these are discussed in - *Note Internet Address Formats::, *Note Host Addresses:: and *Note - Host Names::. - - * A port number for that machine. *Note Ports::. - - You must ensure that the address and port number are represented in a -canonical format called "network byte order". *Note Byte Order::, for -information about this. - -* Menu: - -* Internet Address Formats:: How socket addresses are specified in the - Internet namespace. -* Host Addresses:: All about host addresses of Internet host. -* Protocols Database:: Referring to protocols by name. -* Ports:: Internet port numbers. -* Services Database:: Ports may have symbolic names. -* Byte Order:: Different hosts may use different byte - ordering conventions; you need to - canonicalize host address and port number. -* Inet Example:: Putting it all together. - - -File: libc.info, Node: Internet Address Formats, Next: Host Addresses, Up: Internet Namespace - -Internet Socket Address Formats -------------------------------- - - In the Internet namespace, for both IPv4 (`AF_INET') and IPv6 -(`AF_INET6'), a socket address consists of a host address and a port on -that host. In addition, the protocol you choose serves effectively as -a part of the address because local port numbers are meaningful only -within a particular protocol. - - The data types for representing socket addresses in the Internet -namespace are defined in the header file `netinet/in.h'. - - - Data Type: struct sockaddr_in - This is the data type used to represent socket addresses in the - Internet namespace. It has the following members: - - `sa_family_t sin_family' - This identifies the address family or format of the socket - address. You should store the value `AF_INET' in this member. - *Note Socket Addresses::. - - `struct in_addr sin_addr' - This is the Internet address of the host machine. *Note Host - Addresses::, and *Note Host Names::, for how to get a value - to store here. - - `unsigned short int sin_port' - This is the port number. *Note Ports::. - - When you call `bind' or `getsockname', you should specify `sizeof -(struct sockaddr_in)' as the LENGTH parameter if you are using an IPv4 -Internet namespace socket address. - - - Data Type: struct sockaddr_in6 - This is the data type used to represent socket addresses in the - IPv6 namespace. It has the following members: - - `sa_family_t sin6_family' - This identifies the address family or format of the socket - address. You should store the value of `AF_INET6' in this - member. *Note Socket Addresses::. - - `struct in6_addr sin6_addr' - This is the IPv6 address of the host machine. *Note Host - Addresses::, and *Note Host Names::, for how to get a value - to store here. - - `uint32_t sin6_flowinfo' - This is a currently unimplemented field. - - `uint16_t sin6_port' - This is the port number. *Note Ports::. - diff -adurpN glibc-2.2/manual/libc.info-25 glibc-2.2.1/manual/libc.info-25 --- glibc-2.2/manual/libc.info-25 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-25 Sun Jan 7 09:09:09 2001 @@ -32,6 +32,222 @@ entitled "GNU Library General Public Lic accuracy by the Foundation.  +File: libc.info, Node: Local Namespace Details, Next: Local Socket Example, Prev: Local Namespace Concepts, Up: Local Namespace + +Details of Local Namespace +-------------------------- + + To create a socket in the local namespace, use the constant +`PF_LOCAL' as the NAMESPACE argument to `socket' or `socketpair'. This +constant is defined in `sys/socket.h'. + + - Macro: int PF_LOCAL + This designates the local namespace, in which socket addresses are + local names, and its associated family of protocols. `PF_Local' + is the macro used by Posix.1g. + + - Macro: int PF_UNIX + This is a synonym for `PF_LOCAL', for compatibility's sake. + + - Macro: int PF_FILE + This is a synonym for `PF_LOCAL', for compatibility's sake. + + The structure for specifying socket names in the local namespace is +defined in the header file `sys/un.h': + + - Data Type: struct sockaddr_un + This structure is used to specify local namespace socket + addresses. It has the following members: + + `short int sun_family' + This identifies the address family or format of the socket + address. You should store the value `AF_LOCAL' to designate + the local namespace. *Note Socket Addresses::. + + `char sun_path[108]' + This is the file name to use. + + *Incomplete:* Why is 108 a magic number? RMS suggests making + this a zero-length array and tweaking the following example + to use `alloca' to allocate an appropriate amount of storage + based on the length of the filename. + + You should compute the LENGTH parameter for a socket address in the +local namespace as the sum of the size of the `sun_family' component +and the string length (*not* the allocation size!) of the file name +string. This can be done using the macro `SUN_LEN': + + - Macro: int SUN_LEN (*struct sockaddr_un ** PTR) + The macro computes the length of socket address in the local + namespace. + + +File: libc.info, Node: Local Socket Example, Prev: Local Namespace Details, Up: Local Namespace + +Example of Local-Namespace Sockets +---------------------------------- + + Here is an example showing how to create and name a socket in the +local namespace. + + #include + #include + #include + #include + #include + #include + + int + make_named_socket (const char *filename) + { + struct sockaddr_un name; + int sock; + size_t size; + + /* Create the socket. */ + sock = socket (PF_LOCAL, SOCK_DGRAM, 0); + if (sock < 0) + { + perror ("socket"); + exit (EXIT_FAILURE); + } + + /* Bind a name to the socket. */ + name.sun_family = AF_LOCAL; + strncpy (name.sun_path, filename, sizeof (name.sun_path)); + + /* The size of the address is + the offset of the start of the filename, + plus its length, + plus one for the terminating null byte. + Alternatively you can just do: + size = SUN_LEN (&name); + */ + size = (offsetof (struct sockaddr_un, sun_path) + + strlen (name.sun_path) + 1); + + if (bind (sock, (struct sockaddr *) &name, size) < 0) + { + perror ("bind"); + exit (EXIT_FAILURE); + } + + return sock; + } + + +File: libc.info, Node: Internet Namespace, Next: Misc Namespaces, Prev: Local Namespace, Up: Sockets + +The Internet Namespace +====================== + + This section describes the details of the protocols and socket naming +conventions used in the Internet namespace. + + Originally the Internet namespace used only IP version 4 (IPv4). +With the growing number of hosts on the Internet, a new protocol with a +larger address space was necessary: IP version 6 (IPv6). IPv6 +introduces 128-bit addresses (IPv4 has 32-bit addresses) and other +features, and will eventually replace IPv4. + + To create a socket in the IPv4 Internet namespace, use the symbolic +name `PF_INET' of this namespace as the NAMESPACE argument to `socket' +or `socketpair'. For IPv6 addresses you need the macro `PF_INET6'. +These macros are defined in `sys/socket.h'. + + - Macro: int PF_INET + This designates the IPv4 Internet namespace and associated family + of protocols. + + - Macro: int PF_INET6 + This designates the IPv6 Internet namespace and associated family + of protocols. + + A socket address for the Internet namespace includes the following +components: + + * The address of the machine you want to connect to. Internet + addresses can be specified in several ways; these are discussed in + *Note Internet Address Formats::, *Note Host Addresses:: and *Note + Host Names::. + + * A port number for that machine. *Note Ports::. + + You must ensure that the address and port number are represented in a +canonical format called "network byte order". *Note Byte Order::, for +information about this. + +* Menu: + +* Internet Address Formats:: How socket addresses are specified in the + Internet namespace. +* Host Addresses:: All about host addresses of Internet host. +* Protocols Database:: Referring to protocols by name. +* Ports:: Internet port numbers. +* Services Database:: Ports may have symbolic names. +* Byte Order:: Different hosts may use different byte + ordering conventions; you need to + canonicalize host address and port number. +* Inet Example:: Putting it all together. + + +File: libc.info, Node: Internet Address Formats, Next: Host Addresses, Up: Internet Namespace + +Internet Socket Address Formats +------------------------------- + + In the Internet namespace, for both IPv4 (`AF_INET') and IPv6 +(`AF_INET6'), a socket address consists of a host address and a port on +that host. In addition, the protocol you choose serves effectively as +a part of the address because local port numbers are meaningful only +within a particular protocol. + + The data types for representing socket addresses in the Internet +namespace are defined in the header file `netinet/in.h'. + + - Data Type: struct sockaddr_in + This is the data type used to represent socket addresses in the + Internet namespace. It has the following members: + + `sa_family_t sin_family' + This identifies the address family or format of the socket + address. You should store the value `AF_INET' in this member. + *Note Socket Addresses::. + + `struct in_addr sin_addr' + This is the Internet address of the host machine. *Note Host + Addresses::, and *Note Host Names::, for how to get a value + to store here. + + `unsigned short int sin_port' + This is the port number. *Note Ports::. + + When you call `bind' or `getsockname', you should specify `sizeof +(struct sockaddr_in)' as the LENGTH parameter if you are using an IPv4 +Internet namespace socket address. + + - Data Type: struct sockaddr_in6 + This is the data type used to represent socket addresses in the + IPv6 namespace. It has the following members: + + `sa_family_t sin6_family' + This identifies the address family or format of the socket + address. You should store the value of `AF_INET6' in this + member. *Note Socket Addresses::. + + `struct in6_addr sin6_addr' + This is the IPv6 address of the host machine. *Note Host + Addresses::, and *Note Host Names::, for how to get a value + to store here. + + `uint32_t sin6_flowinfo' + This is a currently unimplemented field. + + `uint16_t sin6_port' + This is the port number. *Note Ports::. + + + File: libc.info, Node: Host Addresses, Next: Protocols Database, Prev: Internet Address Formats, Up: Internet Namespace Host Addresses @@ -1023,154 +1239,4 @@ FIFOs::.). `EOPNOTSUPP' The specified protocol does not support the creation of socket pairs. - - -File: libc.info, Node: Connections, Next: Datagrams, Prev: Open/Close Sockets, Up: Sockets - -Using Sockets with Connections -============================== - - The most common communication styles involve making a connection to a -particular other socket, and then exchanging data with that socket over -and over. Making a connection is asymmetric; one side (the "client") -acts to request a connection, while the other side (the "server") makes -a socket and waits for the connection request. - -* Menu: - -* Connecting:: What the client program must do. -* Listening:: How a server program waits for requests. -* Accepting Connections:: What the server does when it gets a request. -* Who is Connected:: Getting the address of the - other side of a connection. -* Transferring Data:: How to send and receive data. -* Byte Stream Example:: An example program: a client for communicating - over a byte stream socket in the Internet namespace. -* Server Example:: A corresponding server program. -* Out-of-Band Data:: This is an advanced feature. - - -File: libc.info, Node: Connecting, Next: Listening, Up: Connections - -Making a Connection -------------------- - - In making a connection, the client makes a connection while the -server waits for and accepts the connection. Here we discuss what the -client program must do with the `connect' function, which is declared in -`sys/socket.h'. - - - Function: int connect (int SOCKET, struct sockaddr *ADDR, socklen_t - LENGTH) - The `connect' function initiates a connection from the socket with - file descriptor SOCKET to the socket whose address is specified by - the ADDR and LENGTH arguments. (This socket is typically on - another machine, and it must be already set up as a server.) - *Note Socket Addresses::, for information about how these - arguments are interpreted. - - Normally, `connect' waits until the server responds to the request - before it returns. You can set nonblocking mode on the socket - SOCKET to make `connect' return immediately without waiting for - the response. *Note File Status Flags::, for information about - nonblocking mode. - - The normal return value from `connect' is `0'. If an error - occurs, `connect' returns `-1'. The following `errno' error - conditions are defined for this function: - - `EBADF' - The socket SOCKET is not a valid file descriptor. - - `ENOTSOCK' - File descriptor SOCKET is not a socket. - - `EADDRNOTAVAIL' - The specified address is not available on the remote machine. - - `EAFNOSUPPORT' - The namespace of the ADDR is not supported by this socket. - - `EISCONN' - The socket SOCKET is already connected. - - `ETIMEDOUT' - The attempt to establish the connection timed out. - - `ECONNREFUSED' - The server has actively refused to establish the connection. - - `ENETUNREACH' - The network of the given ADDR isn't reachable from this host. - - `EADDRINUSE' - The socket address of the given ADDR is already in use. - - `EINPROGRESS' - The socket SOCKET is non-blocking and the connection could - not be established immediately. You can determine when the - connection is completely established with `select'; *note - Waiting for I/O::.. Another `connect' call on the same - socket, before the connection is completely established, will - fail with `EALREADY'. - - `EALREADY' - The socket SOCKET is non-blocking and already has a pending - connection in progress (see `EINPROGRESS' above). - - This function is defined as a cancellation point in multi-threaded - programs, so one has to be prepared for this and make sure that - allocated resources (like memory, files descriptors, semaphores or - whatever) are freed even if the thread is canceled. - - -File: libc.info, Node: Listening, Next: Accepting Connections, Prev: Connecting, Up: Connections - -Listening for Connections -------------------------- - - Now let us consider what the server process must do to accept -connections on a socket. First it must use the `listen' function to -enable connection requests on the socket, and then accept each incoming -connection with a call to `accept' (*note Accepting Connections::.). -Once connection requests are enabled on a server socket, the `select' -function reports when the socket has a connection ready to be accepted -(*note Waiting for I/O::.). - - The `listen' function is not allowed for sockets using -connectionless communication styles. - - You can write a network server that does not even start running -until a connection to it is requested. *Note Inetd Servers::. - - In the Internet namespace, there are no special protection mechanisms -for controlling access to a port; any process on any machine can make a -connection to your server. If you want to restrict access to your -server, make it examine the addresses associated with connection -requests or implement some other handshaking or identification protocol. - - In the local namespace, the ordinary file protection bits control -who has access to connect to the socket. - - - Function: int listen (int SOCKET, unsigned int N) - The `listen' function enables the socket SOCKET to accept - connections, thus making it a server socket. - - The argument N specifies the length of the queue for pending - connections. When the queue fills, new clients attempting to - connect fail with `ECONNREFUSED' until the server calls `accept' to - accept a connection from the queue. - - The `listen' function returns `0' on success and `-1' on failure. - The following `errno' error conditions are defined for this - function: - - `EBADF' - The argument SOCKET is not a valid file descriptor. - - `ENOTSOCK' - The argument SOCKET is not a socket. - - `EOPNOTSUPP' - The socket SOCKET does not support this operation. diff -adurpN glibc-2.2/manual/libc.info-26 glibc-2.2.1/manual/libc.info-26 --- glibc-2.2/manual/libc.info-26 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-26 Sun Jan 7 09:09:09 2001 @@ -32,6 +32,156 @@ entitled "GNU Library General Public Lic accuracy by the Foundation.  +File: libc.info, Node: Connections, Next: Datagrams, Prev: Open/Close Sockets, Up: Sockets + +Using Sockets with Connections +============================== + + The most common communication styles involve making a connection to a +particular other socket, and then exchanging data with that socket over +and over. Making a connection is asymmetric; one side (the "client") +acts to request a connection, while the other side (the "server") makes +a socket and waits for the connection request. + +* Menu: + +* Connecting:: What the client program must do. +* Listening:: How a server program waits for requests. +* Accepting Connections:: What the server does when it gets a request. +* Who is Connected:: Getting the address of the + other side of a connection. +* Transferring Data:: How to send and receive data. +* Byte Stream Example:: An example program: a client for communicating + over a byte stream socket in the Internet namespace. +* Server Example:: A corresponding server program. +* Out-of-Band Data:: This is an advanced feature. + + +File: libc.info, Node: Connecting, Next: Listening, Up: Connections + +Making a Connection +------------------- + + In making a connection, the client makes a connection while the +server waits for and accepts the connection. Here we discuss what the +client program must do with the `connect' function, which is declared in +`sys/socket.h'. + + - Function: int connect (int SOCKET, struct sockaddr *ADDR, socklen_t + LENGTH) + The `connect' function initiates a connection from the socket with + file descriptor SOCKET to the socket whose address is specified by + the ADDR and LENGTH arguments. (This socket is typically on + another machine, and it must be already set up as a server.) + *Note Socket Addresses::, for information about how these + arguments are interpreted. + + Normally, `connect' waits until the server responds to the request + before it returns. You can set nonblocking mode on the socket + SOCKET to make `connect' return immediately without waiting for + the response. *Note File Status Flags::, for information about + nonblocking mode. + + The normal return value from `connect' is `0'. If an error + occurs, `connect' returns `-1'. The following `errno' error + conditions are defined for this function: + + `EBADF' + The socket SOCKET is not a valid file descriptor. + + `ENOTSOCK' + File descriptor SOCKET is not a socket. + + `EADDRNOTAVAIL' + The specified address is not available on the remote machine. + + `EAFNOSUPPORT' + The namespace of the ADDR is not supported by this socket. + + `EISCONN' + The socket SOCKET is already connected. + + `ETIMEDOUT' + The attempt to establish the connection timed out. + + `ECONNREFUSED' + The server has actively refused to establish the connection. + + `ENETUNREACH' + The network of the given ADDR isn't reachable from this host. + + `EADDRINUSE' + The socket address of the given ADDR is already in use. + + `EINPROGRESS' + The socket SOCKET is non-blocking and the connection could + not be established immediately. You can determine when the + connection is completely established with `select'; *note + Waiting for I/O::.. Another `connect' call on the same + socket, before the connection is completely established, will + fail with `EALREADY'. + + `EALREADY' + The socket SOCKET is non-blocking and already has a pending + connection in progress (see `EINPROGRESS' above). + + This function is defined as a cancellation point in multi-threaded + programs, so one has to be prepared for this and make sure that + allocated resources (like memory, files descriptors, semaphores or + whatever) are freed even if the thread is canceled. + + +File: libc.info, Node: Listening, Next: Accepting Connections, Prev: Connecting, Up: Connections + +Listening for Connections +------------------------- + + Now let us consider what the server process must do to accept +connections on a socket. First it must use the `listen' function to +enable connection requests on the socket, and then accept each incoming +connection with a call to `accept' (*note Accepting Connections::.). +Once connection requests are enabled on a server socket, the `select' +function reports when the socket has a connection ready to be accepted +(*note Waiting for I/O::.). + + The `listen' function is not allowed for sockets using +connectionless communication styles. + + You can write a network server that does not even start running +until a connection to it is requested. *Note Inetd Servers::. + + In the Internet namespace, there are no special protection mechanisms +for controlling access to a port; any process on any machine can make a +connection to your server. If you want to restrict access to your +server, make it examine the addresses associated with connection +requests or implement some other handshaking or identification protocol. + + In the local namespace, the ordinary file protection bits control +who has access to connect to the socket. + + - Function: int listen (int SOCKET, unsigned int N) + The `listen' function enables the socket SOCKET to accept + connections, thus making it a server socket. + + The argument N specifies the length of the queue for pending + connections. When the queue fills, new clients attempting to + connect fail with `ECONNREFUSED' until the server calls `accept' to + accept a connection from the queue. + + The `listen' function returns `0' on success and `-1' on failure. + The following `errno' error conditions are defined for this + function: + + `EBADF' + The argument SOCKET is not a valid file descriptor. + + `ENOTSOCK' + The argument SOCKET is not a socket. + + `EOPNOTSUPP' + The socket SOCKET does not support this operation. + + File: libc.info, Node: Accepting Connections, Next: Who is Connected, Prev: Listening, Up: Connections Accepting Connections @@ -1177,152 +1327,4 @@ header file `sys/socket.h'. This option can be used with `getsockopt' only. It is used to reset the error status of the socket. The value is an `int', which represents the previous error status. - - -File: libc.info, Node: Networks Database, Prev: Socket Options, Up: Sockets - -Networks Database -================= - - Many systems come with a database that records a list of networks -known to the system developer. This is usually kept either in the file -`/etc/networks' or in an equivalent from a name server. This data base -is useful for routing programs such as `route', but it is not useful -for programs that simply communicate over the network. We provide -functions to access this database, which are declared in `netdb.h'. - - - Data Type: struct netent - This data type is used to represent information about entries in - the networks database. It has the following members: - - `char *n_name' - This is the "official" name of the network. - - `char **n_aliases' - These are alternative names for the network, represented as a - vector of strings. A null pointer terminates the array. - - `int n_addrtype' - This is the type of the network number; this is always equal - to `AF_INET' for Internet networks. - - `unsigned long int n_net' - This is the network number. Network numbers are returned in - host byte order; see *Note Byte Order::. - - Use the `getnetbyname' or `getnetbyaddr' functions to search the -networks database for information about a specific network. The -information is returned in a statically-allocated structure; you must -copy the information if you need to save it. - - - Function: struct netent * getnetbyname (const char *NAME) - The `getnetbyname' function returns information about the network - named NAME. It returns a null pointer if there is no such network. - - - Function: struct netent * getnetbyaddr (unsigned long int NET, int - TYPE) - The `getnetbyaddr' function returns information about the network - of type TYPE with number NET. You should specify a value of - `AF_INET' for the TYPE argument for Internet networks. - - `getnetbyaddr' returns a null pointer if there is no such network. - - You can also scan the networks database using `setnetent', -`getnetent' and `endnetent'. Be careful when using these functions -because they are not reentrant. - - - Function: void setnetent (int STAYOPEN) - This function opens and rewinds the networks database. - - If the STAYOPEN argument is nonzero, this sets a flag so that - subsequent calls to `getnetbyname' or `getnetbyaddr' will not - close the database (as they usually would). This makes for more - efficiency if you call those functions several times, by avoiding - reopening the database for each call. - - - Function: struct netent * getnetent (void) - This function returns the next entry in the networks database. It - returns a null pointer if there are no more entries. - - - Function: void endnetent (void) - This function closes the networks database. - - -File: libc.info, Node: Low-Level Terminal Interface, Next: Syslog, Prev: Sockets, Up: Top - -Low-Level Terminal Interface -**************************** - - This chapter describes functions that are specific to terminal -devices. You can use these functions to do things like turn off input -echoing; set serial line characteristics such as line speed and flow -control; and change which characters are used for end-of-file, -command-line editing, sending signals, and similar control functions. - - Most of the functions in this chapter operate on file descriptors. -*Note Low-Level I/O::, for more information about what a file -descriptor is and how to open a file descriptor for a terminal device. - -* Menu: - -* Is It a Terminal:: How to determine if a file is a terminal - device, and what its name is. -* I/O Queues:: About flow control and typeahead. -* Canonical or Not:: Two basic styles of input processing. -* Terminal Modes:: How to examine and modify flags controlling - details of terminal I/O: echoing, - signals, editing. Posix. -* BSD Terminal Modes:: BSD compatible terminal mode setting -* Line Control:: Sending break sequences, clearing - terminal buffers ... -* Noncanon Example:: How to read single characters without echo. -* Pseudo-Terminals:: How to open a pseudo-terminal. - - -File: libc.info, Node: Is It a Terminal, Next: I/O Queues, Up: Low-Level Terminal Interface - -Identifying Terminals -===================== - - The functions described in this chapter only work on files that -correspond to terminal devices. You can find out whether a file -descriptor is associated with a terminal by using the `isatty' function. - - Prototypes for the functions in this section are declared in the -header file `unistd.h'. - - - Function: int isatty (int FILEDES) - This function returns `1' if FILEDES is a file descriptor - associated with an open terminal device, and 0 otherwise. - - If a file descriptor is associated with a terminal, you can get its -associated file name using the `ttyname' function. See also the -`ctermid' function, described in *Note Identifying the Terminal::. - - - Function: char * ttyname (int FILEDES) - If the file descriptor FILEDES is associated with a terminal - device, the `ttyname' function returns a pointer to a - statically-allocated, null-terminated string containing the file - name of the terminal file. The value is a null pointer if the - file descriptor isn't associated with a terminal, or the file name - cannot be determined. - - - Function: int ttyname_r (int FILEDES, char *BUF, size_t LEN) - The `ttyname_r' function is similar to the `ttyname' function - except that it places its result into the user-specified buffer - starting at BUF with length LEN. - - The normal return value from `ttyname_r' is 0. Otherwise an error - number is returned to indicate the error. The following `errno' - error conditions are defined for this function: - - `EBADF' - The FILEDES argument is not a valid file descriptor. - - `ENOTTY' - The FILEDES is not associated with a terminal. - - `ERANGE' - The buffer length LEN is too small to store the string to be - returned. diff -adurpN glibc-2.2/manual/libc.info-27 glibc-2.2.1/manual/libc.info-27 --- glibc-2.2/manual/libc.info-27 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-27 Sun Jan 7 09:09:09 2001 @@ -32,6 +32,154 @@ entitled "GNU Library General Public Lic accuracy by the Foundation.  +File: libc.info, Node: Networks Database, Prev: Socket Options, Up: Sockets + +Networks Database +================= + + Many systems come with a database that records a list of networks +known to the system developer. This is usually kept either in the file +`/etc/networks' or in an equivalent from a name server. This data base +is useful for routing programs such as `route', but it is not useful +for programs that simply communicate over the network. We provide +functions to access this database, which are declared in `netdb.h'. + + - Data Type: struct netent + This data type is used to represent information about entries in + the networks database. It has the following members: + + `char *n_name' + This is the "official" name of the network. + + `char **n_aliases' + These are alternative names for the network, represented as a + vector of strings. A null pointer terminates the array. + + `int n_addrtype' + This is the type of the network number; this is always equal + to `AF_INET' for Internet networks. + + `unsigned long int n_net' + This is the network number. Network numbers are returned in + host byte order; see *Note Byte Order::. + + Use the `getnetbyname' or `getnetbyaddr' functions to search the +networks database for information about a specific network. The +information is returned in a statically-allocated structure; you must +copy the information if you need to save it. + + - Function: struct netent * getnetbyname (const char *NAME) + The `getnetbyname' function returns information about the network + named NAME. It returns a null pointer if there is no such network. + + - Function: struct netent * getnetbyaddr (unsigned long int NET, int + TYPE) + The `getnetbyaddr' function returns information about the network + of type TYPE with number NET. You should specify a value of + `AF_INET' for the TYPE argument for Internet networks. + + `getnetbyaddr' returns a null pointer if there is no such network. + + You can also scan the networks database using `setnetent', +`getnetent' and `endnetent'. Be careful when using these functions +because they are not reentrant. + + - Function: void setnetent (int STAYOPEN) + This function opens and rewinds the networks database. + + If the STAYOPEN argument is nonzero, this sets a flag so that + subsequent calls to `getnetbyname' or `getnetbyaddr' will not + close the database (as they usually would). This makes for more + efficiency if you call those functions several times, by avoiding + reopening the database for each call. + + - Function: struct netent * getnetent (void) + This function returns the next entry in the networks database. It + returns a null pointer if there are no more entries. + + - Function: void endnetent (void) + This function closes the networks database. + + +File: libc.info, Node: Low-Level Terminal Interface, Next: Syslog, Prev: Sockets, Up: Top + +Low-Level Terminal Interface +**************************** + + This chapter describes functions that are specific to terminal +devices. You can use these functions to do things like turn off input +echoing; set serial line characteristics such as line speed and flow +control; and change which characters are used for end-of-file, +command-line editing, sending signals, and similar control functions. + + Most of the functions in this chapter operate on file descriptors. +*Note Low-Level I/O::, for more information about what a file +descriptor is and how to open a file descriptor for a terminal device. + +* Menu: + +* Is It a Terminal:: How to determine if a file is a terminal + device, and what its name is. +* I/O Queues:: About flow control and typeahead. +* Canonical or Not:: Two basic styles of input processing. +* Terminal Modes:: How to examine and modify flags controlling + details of terminal I/O: echoing, + signals, editing. Posix. +* BSD Terminal Modes:: BSD compatible terminal mode setting +* Line Control:: Sending break sequences, clearing + terminal buffers ... +* Noncanon Example:: How to read single characters without echo. +* Pseudo-Terminals:: How to open a pseudo-terminal. + + +File: libc.info, Node: Is It a Terminal, Next: I/O Queues, Up: Low-Level Terminal Interface + +Identifying Terminals +===================== + + The functions described in this chapter only work on files that +correspond to terminal devices. You can find out whether a file +descriptor is associated with a terminal by using the `isatty' function. + + Prototypes for the functions in this section are declared in the +header file `unistd.h'. + + - Function: int isatty (int FILEDES) + This function returns `1' if FILEDES is a file descriptor + associated with an open terminal device, and 0 otherwise. + + If a file descriptor is associated with a terminal, you can get its +associated file name using the `ttyname' function. See also the +`ctermid' function, described in *Note Identifying the Terminal::. + + - Function: char * ttyname (int FILEDES) + If the file descriptor FILEDES is associated with a terminal + device, the `ttyname' function returns a pointer to a + statically-allocated, null-terminated string containing the file + name of the terminal file. The value is a null pointer if the + file descriptor isn't associated with a terminal, or the file name + cannot be determined. + + - Function: int ttyname_r (int FILEDES, char *BUF, size_t LEN) + The `ttyname_r' function is similar to the `ttyname' function + except that it places its result into the user-specified buffer + starting at BUF with length LEN. + + The normal return value from `ttyname_r' is 0. Otherwise an error + number is returned to indicate the error. The following `errno' + error conditions are defined for this function: + + `EBADF' + The FILEDES argument is not a valid file descriptor. + + `ENOTTY' + The FILEDES is not associated with a terminal. + + `ERANGE' + The buffer length LEN is too small to store the string to be + returned. + + File: libc.info, Node: I/O Queues, Next: Canonical or Not, Prev: Is It a Terminal, Up: Low-Level Terminal Interface I/O Queues @@ -1066,91 +1214,4 @@ Another Process::. *Note Signal Handling::, for more information about signals. Typically, the DSUSP character is `C-y'. - - -File: libc.info, Node: Start/Stop Characters, Next: Other Special, Prev: Signal Characters, Up: Special Characters - -Special Characters for Flow Control -................................... - - These special characters may be active in either canonical or -noncanonical input mode, but their use is controlled by the flags -`IXON' and `IXOFF' (*note Input Modes::.). - - - Macro: int VSTART - This is the subscript for the START character in the special - control character array. `TERMIOS.c_cc[VSTART]' holds the - character itself. - - The START character is used to support the `IXON' and `IXOFF' - input modes. If `IXON' is set, receiving a START character resumes - suspended output; the START character itself is discarded. If - `IXANY' is set, receiving any character at all resumes suspended - output; the resuming character is not discarded unless it is the - START character. `IXOFF' is set, the system may also transmit - START characters to the terminal. - - The usual value for the START character is `C-q'. You may not be - able to change this value--the hardware may insist on using `C-q' - regardless of what you specify. - - - Macro: int VSTOP - This is the subscript for the STOP character in the special control - character array. `TERMIOS.c_cc[VSTOP]' holds the character itself. - - The STOP character is used to support the `IXON' and `IXOFF' input - modes. If `IXON' is set, receiving a STOP character causes output - to be suspended; the STOP character itself is discarded. If - `IXOFF' is set, the system may also transmit STOP characters to the - terminal, to prevent the input queue from overflowing. - - The usual value for the STOP character is `C-s'. You may not be - able to change this value--the hardware may insist on using `C-s' - regardless of what you specify. - - -File: libc.info, Node: Other Special, Prev: Start/Stop Characters, Up: Special Characters - -Other Special Characters -........................ - - These special characters exist only in BSD systems and the GNU -system. - - - Macro: int VLNEXT - This is the subscript for the LNEXT character in the special - control character array. `TERMIOS.c_cc[VLNEXT]' holds the - character itself. - - The LNEXT character is recognized only when `IEXTEN' is set, but in - both canonical and noncanonical mode. It disables any special - significance of the next character the user types. Even if the - character would normally perform some editing function or generate - a signal, it is read as a plain character. This is the analogue - of the `C-q' command in Emacs. "LNEXT" stands for "literal next." - - The LNEXT character is usually `C-v'. - - - Macro: int VDISCARD - This is the subscript for the DISCARD character in the special - control character array. `TERMIOS.c_cc[VDISCARD]' holds the - character itself. - - The DISCARD character is recognized only when `IEXTEN' is set, but - in both canonical and noncanonical mode. Its effect is to toggle - the discard-output flag. When this flag is set, all program - output is discarded. Setting the flag also discards all output - currently in the output buffer. Typing any other character resets - the flag. - - - Macro: int VSTATUS - This is the subscript for the STATUS character in the special - control character array. `TERMIOS.c_cc[VSTATUS]' holds the - character itself. - - The STATUS character's effect is to print out a status message - about how the current process is running. - - The STATUS character is recognized only in canonical mode, and - only if `NOKERNINFO' is not set. diff -adurpN glibc-2.2/manual/libc.info-28 glibc-2.2.1/manual/libc.info-28 --- glibc-2.2/manual/libc.info-28 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-28 Sun Jan 7 09:09:09 2001 @@ -32,6 +32,93 @@ entitled "GNU Library General Public Lic accuracy by the Foundation.  +File: libc.info, Node: Start/Stop Characters, Next: Other Special, Prev: Signal Characters, Up: Special Characters + +Special Characters for Flow Control +................................... + + These special characters may be active in either canonical or +noncanonical input mode, but their use is controlled by the flags +`IXON' and `IXOFF' (*note Input Modes::.). + + - Macro: int VSTART + This is the subscript for the START character in the special + control character array. `TERMIOS.c_cc[VSTART]' holds the + character itself. + + The START character is used to support the `IXON' and `IXOFF' + input modes. If `IXON' is set, receiving a START character resumes + suspended output; the START character itself is discarded. If + `IXANY' is set, receiving any character at all resumes suspended + output; the resuming character is not discarded unless it is the + START character. `IXOFF' is set, the system may also transmit + START characters to the terminal. + + The usual value for the START character is `C-q'. You may not be + able to change this value--the hardware may insist on using `C-q' + regardless of what you specify. + + - Macro: int VSTOP + This is the subscript for the STOP character in the special control + character array. `TERMIOS.c_cc[VSTOP]' holds the character itself. + + The STOP character is used to support the `IXON' and `IXOFF' input + modes. If `IXON' is set, receiving a STOP character causes output + to be suspended; the STOP character itself is discarded. If + `IXOFF' is set, the system may also transmit STOP characters to the + terminal, to prevent the input queue from overflowing. + + The usual value for the STOP character is `C-s'. You may not be + able to change this value--the hardware may insist on using `C-s' + regardless of what you specify. + + +File: libc.info, Node: Other Special, Prev: Start/Stop Characters, Up: Special Characters + +Other Special Characters +........................ + + These special characters exist only in BSD systems and the GNU +system. + + - Macro: int VLNEXT + This is the subscript for the LNEXT character in the special + control character array. `TERMIOS.c_cc[VLNEXT]' holds the + character itself. + + The LNEXT character is recognized only when `IEXTEN' is set, but in + both canonical and noncanonical mode. It disables any special + significance of the next character the user types. Even if the + character would normally perform some editing function or generate + a signal, it is read as a plain character. This is the analogue + of the `C-q' command in Emacs. "LNEXT" stands for "literal next." + + The LNEXT character is usually `C-v'. + + - Macro: int VDISCARD + This is the subscript for the DISCARD character in the special + control character array. `TERMIOS.c_cc[VDISCARD]' holds the + character itself. + + The DISCARD character is recognized only when `IEXTEN' is set, but + in both canonical and noncanonical mode. Its effect is to toggle + the discard-output flag. When this flag is set, all program + output is discarded. Setting the flag also discards all output + currently in the output buffer. Typing any other character resets + the flag. + + - Macro: int VSTATUS + This is the subscript for the STATUS character in the special + control character array. `TERMIOS.c_cc[VSTATUS]' holds the + character itself. + + The STATUS character's effect is to print out a status message + about how the current process is running. + + The STATUS character is recognized only in canonical mode, and + only if `NOKERNINFO' is not set. + + File: libc.info, Node: Noncanonical Input, Prev: Special Characters, Up: Terminal Modes Noncanonical Input @@ -510,7 +597,7 @@ example: open_pty_pair (int *amaster, int *aslave) { int master, slave; - char *name + char *name; master = getpt (); if (master < 0) @@ -1264,90 +1351,4 @@ are bugs in the implementation.) The complex tangent has poles at pi/2 + 2n, where n is an integer. `ctan' may signal overflow if Z is too close to a pole. - - -File: libc.info, Node: Inverse Trig Functions, Next: Exponents and Logarithms, Prev: Trig Functions, Up: Mathematics - -Inverse Trigonometric Functions -=============================== - - These are the usual arc sine, arc cosine and arc tangent functions, -which are the inverses of the sine, cosine and tangent functions -respectively. - - - Function: double asin (double X) - - Function: float asinf (float X) - - Function: long double asinl (long double X) - These functions compute the arc sine of X--that is, the value whose - sine is X. The value is in units of radians. Mathematically, - there are infinitely many such values; the one actually returned - is the one between `-pi/2' and `pi/2' (inclusive). - - The arc sine function is defined mathematically only over the - domain `-1' to `1'. If X is outside the domain, `asin' signals a - domain error. - - - Function: double acos (double X) - - Function: float acosf (float X) - - Function: long double acosl (long double X) - These functions compute the arc cosine of X--that is, the value - whose cosine is X. The value is in units of radians. - Mathematically, there are infinitely many such values; the one - actually returned is the one between `0' and `pi' (inclusive). - - The arc cosine function is defined mathematically only over the - domain `-1' to `1'. If X is outside the domain, `acos' signals a - domain error. - - - Function: double atan (double X) - - Function: float atanf (float X) - - Function: long double atanl (long double X) - These functions compute the arc tangent of X--that is, the value - whose tangent is X. The value is in units of radians. - Mathematically, there are infinitely many such values; the one - actually returned is the one between `-pi/2' and `pi/2' - (inclusive). - - - Function: double atan2 (double Y, double X) - - Function: float atan2f (float Y, float X) - - Function: long double atan2l (long double Y, long double X) - This function computes the arc tangent of Y/X, but the signs of - both arguments are used to determine the quadrant of the result, - and X is permitted to be zero. The return value is given in - radians and is in the range `-pi' to `pi', inclusive. - - If X and Y are coordinates of a point in the plane, `atan2' - returns the signed angle between the line from the origin to that - point and the x-axis. Thus, `atan2' is useful for converting - Cartesian coordinates to polar coordinates. (To compute the - radial coordinate, use `hypot'; see *Note Exponents and - Logarithms::.) - - If both X and Y are zero, `atan2' returns zero. - - ISO C99 defines complex versions of the inverse trig functions. - - - Function: complex double casin (complex double Z) - - Function: complex float casinf (complex float Z) - - Function: complex long double casinl (complex long double Z) - These functions compute the complex arc sine of Z--that is, the - value whose sine is Z. The value returned is in radians. - - Unlike the real-valued functions, `casin' is defined for all - values of Z. - - - Function: complex double cacos (complex double Z) - - Function: complex float cacosf (complex float Z) - - Function: complex long double cacosl (complex long double Z) - These functions compute the complex arc cosine of Z--that is, the - value whose cosine is Z. The value returned is in radians. - - Unlike the real-valued functions, `cacos' is defined for all - values of Z. - - - Function: complex double catan (complex double Z) - - Function: complex float catanf (complex float Z) - - Function: complex long double catanl (complex long double Z) - These functions compute the complex arc tangent of Z--that is, the - value whose tangent is Z. The value is in units of radians. diff -adurpN glibc-2.2/manual/libc.info-29 glibc-2.2.1/manual/libc.info-29 --- glibc-2.2/manual/libc.info-29 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-29 Sun Jan 7 09:09:09 2001 @@ -32,6 +32,92 @@ entitled "GNU Library General Public Lic accuracy by the Foundation.  +File: libc.info, Node: Inverse Trig Functions, Next: Exponents and Logarithms, Prev: Trig Functions, Up: Mathematics + +Inverse Trigonometric Functions +=============================== + + These are the usual arc sine, arc cosine and arc tangent functions, +which are the inverses of the sine, cosine and tangent functions +respectively. + + - Function: double asin (double X) + - Function: float asinf (float X) + - Function: long double asinl (long double X) + These functions compute the arc sine of X--that is, the value whose + sine is X. The value is in units of radians. Mathematically, + there are infinitely many such values; the one actually returned + is the one between `-pi/2' and `pi/2' (inclusive). + + The arc sine function is defined mathematically only over the + domain `-1' to `1'. If X is outside the domain, `asin' signals a + domain error. + + - Function: double acos (double X) + - Function: float acosf (float X) + - Function: long double acosl (long double X) + These functions compute the arc cosine of X--that is, the value + whose cosine is X. The value is in units of radians. + Mathematically, there are infinitely many such values; the one + actually returned is the one between `0' and `pi' (inclusive). + + The arc cosine function is defined mathematically only over the + domain `-1' to `1'. If X is outside the domain, `acos' signals a + domain error. + + - Function: double atan (double X) + - Function: float atanf (float X) + - Function: long double atanl (long double X) + These functions compute the arc tangent of X--that is, the value + whose tangent is X. The value is in units of radians. + Mathematically, there are infinitely many such values; the one + actually returned is the one between `-pi/2' and `pi/2' + (inclusive). + + - Function: double atan2 (double Y, double X) + - Function: float atan2f (float Y, float X) + - Function: long double atan2l (long double Y, long double X) + This function computes the arc tangent of Y/X, but the signs of + both arguments are used to determine the quadrant of the result, + and X is permitted to be zero. The return value is given in + radians and is in the range `-pi' to `pi', inclusive. + + If X and Y are coordinates of a point in the plane, `atan2' + returns the signed angle between the line from the origin to that + point and the x-axis. Thus, `atan2' is useful for converting + Cartesian coordinates to polar coordinates. (To compute the + radial coordinate, use `hypot'; see *Note Exponents and + Logarithms::.) + + If both X and Y are zero, `atan2' returns zero. + + ISO C99 defines complex versions of the inverse trig functions. + + - Function: complex double casin (complex double Z) + - Function: complex float casinf (complex float Z) + - Function: complex long double casinl (complex long double Z) + These functions compute the complex arc sine of Z--that is, the + value whose sine is Z. The value returned is in radians. + + Unlike the real-valued functions, `casin' is defined for all + values of Z. + + - Function: complex double cacos (complex double Z) + - Function: complex float cacosf (complex float Z) + - Function: complex long double cacosl (complex long double Z) + These functions compute the complex arc cosine of Z--that is, the + value whose cosine is Z. The value returned is in radians. + + Unlike the real-valued functions, `cacos' is defined for all + values of Z. + + - Function: complex double catan (complex double Z) + - Function: complex float catanf (complex float Z) + - Function: complex long double catanl (complex long double Z) + These functions compute the complex arc tangent of Z--that is, the + value whose tangent is Z. The value is in units of radians. + + File: libc.info, Node: Exponents and Logarithms, Next: Hyperbolic Functions, Prev: Inverse Trig Functions, Up: Mathematics Exponentiation and Logarithms @@ -880,4 +966,6 @@ only. The return value is the previous value of the state information array. You can use this value later as an argument to `setstate' to restore that state. + + If the function fails the return value is `NULL'. diff -adurpN glibc-2.2/manual/libc.info-30 glibc-2.2.1/manual/libc.info-30 --- glibc-2.2/manual/libc.info-30 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-30 Sun Jan 7 09:09:09 2001 @@ -1173,8 +1173,8 @@ To change the rounding mode, use this fu - Function: int fesetround (int ROUND) Changes the currently selected rounding mode to ROUND. If ROUND does not correspond to one of the supported rounding modes nothing - is changed. `fesetround' returns a nonzero value if it changed - the rounding mode, zero if the mode is not supported. + is changed. `fesetround' returns zero if it changed the rounding + mode, a nonzero value if the mode is not supported. You should avoid changing the rounding mode if possible. It can be an expensive operation; also, some hardware requires you to compile your diff -adurpN glibc-2.2/manual/libc.info-31 glibc-2.2.1/manual/libc.info-31 --- glibc-2.2/manual/libc.info-31 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-31 Sun Jan 7 09:09:09 2001 @@ -71,11 +71,11 @@ You should not attempt to manipulate a v Store the current floating-point environment in the object pointed to by ENVP. Then clear all exception flags, and set the FPU to trap no exceptions. Not all FPUs support trapping no exceptions; - if `feholdexcept' cannot set this mode, it returns zero. If it - succeeds, it returns a nonzero value. + if `feholdexcept' cannot set this mode, it returns nonzero value. + If it succeeds, it returns zero. The functions which restore the floating-point environment can take -two kinds of arguments: +these kinds of arguments: * Pointers to `fenv_t' objects, which were initialized previously by a call to `fegetenv' or `feholdexcept'. @@ -83,7 +83,8 @@ two kinds of arguments: * The special macro `FE_DFL_ENV' which represents the floating-point environment as it was available at program start. - * Implementation defined macros with names starting with `FE_'. + * Implementation defined macros with names starting with `FE_' and + having type `fenv_t *'. If possible, the GNU C Library defines a macro `FE_NOMASK_ENV' which represents an environment where every exception raised @@ -491,7 +492,7 @@ to do these operations, which mostly inv The `nextafter' function returns the next representable neighbor of X in the direction towards Y. The size of the step between X and the result depends on the type of the result. If X = Y the - function simply returns X. If either value is `NaN', `NaN' is + function simply returns Y. If either value is `NaN', `NaN' is returned. Otherwise a value corresponding to the value of the least significant bit in the mantissa is added or subtracted, depending on the direction. `nextafter' will signal overflow or diff -adurpN glibc-2.2/manual/libc.info-35 glibc-2.2.1/manual/libc.info-35 --- glibc-2.2/manual/libc.info-35 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-35 Sun Jan 7 09:09:09 2001 @@ -854,11 +854,10 @@ handler functions in any case. abbreviation for "virtual time alarm". - Macro: int SIGPROF - This signal is typically indicates expiration of a timer that - measures both CPU time used by the current process, and CPU time - expended on behalf of the process by the system. Such a timer is - used to implement code profiling facilities, hence the name of - this signal. + This signal typically indicates expiration of a timer that measures + both CPU time used by the current process, and CPU time expended on + behalf of the process by the system. Such a timer is used to + implement code profiling facilities, hence the name of this signal.  File: libc.info, Node: Asynchronous I/O Signals, Next: Job Control Signals, Prev: Alarm Signals, Up: Standard Signals diff -adurpN glibc-2.2/manual/libc.info-37 glibc-2.2.1/manual/libc.info-37 --- glibc-2.2/manual/libc.info-37 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-37 Sun Jan 7 09:09:09 2001 @@ -1180,7 +1180,7 @@ elements, `"cat"', `"foo"' and `"bar"'. In Unix systems you can define `main' a third way, using three arguments: - int main (int ARGC, char *ARGV[], char *ENVP) + int main (int ARGC, char *ARGV[], char *ENVP[]) The first two arguments are just the same. The third argument ENVP gives the program's environment; it is the same as the value of diff -adurpN glibc-2.2/manual/libc.info-38 glibc-2.2.1/manual/libc.info-38 --- glibc-2.2/manual/libc.info-38 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-38 Sun Jan 7 09:09:09 2001 @@ -373,21 +373,21 @@ Example of Parsing Long Options with `ge static struct option long_options[] = { /* These options set a flag. */ - {"verbose", 0, &verbose_flag, 1}, - {"brief", 0, &verbose_flag, 0}, + {"verbose", no_argument, &verbose_flag, 1}, + {"brief", no_argument, &verbose_flag, 0}, /* These options don't set a flag. We distinguish them by their indices. */ - {"add", 1, 0, 0}, - {"append", 0, 0, 0}, - {"delete", 1, 0, 0}, - {"create", 0, 0, 0}, - {"file", 1, 0, 0}, + {"add", required_argument, 0, 'a'}, + {"append", no_argument, 0, 'b'}, + {"delete", required_argument, 0, 'd'}, + {"create", no_argument, 0, 'c'}, + {"file", required_argument, 0, 'f'}, {0, 0, 0, 0} }; /* `getopt_long' stores the option index here. */ int option_index = 0; - c = getopt_long (argc, argv, "abc:d:", + c = getopt_long (argc, argv, "abc:d:f:", long_options, &option_index); /* Detect the end of the options. */ @@ -422,6 +422,10 @@ Example of Parsing Long Options with `ge printf ("option -d with value `%s'\n", optarg); break; + case 'f': + printf ("option -f with value `%s'\n", optarg); + break; + case '?': /* `getopt_long' already printed an error message. */ break; @@ -616,6 +620,12 @@ Specifying Argp Parsers If non-zero, a pointer to a function to filter the output of help messages. *Note Argp Help Filtering::. + `const char *argp_domain' + If non-zero, the strings used in the argp library are + translated using the domain described by this string. + Otherwise the currently installed default domain is used. + + The `options', `parser', `args_doc', and `doc' fields are usually all that are needed. If an argp parser is defined as an initialized C variable, only the used fields need be specified in the @@ -883,7 +893,10 @@ Parser Functions::.): break; `ARGP_KEY_END' - There are no more command line arguments at all. + There are no more command line arguments at all. The parser + functions are called in different order (means children first) for + this value which allows each parser to clean up its state for the + parent. `ARGP_KEY_NO_ARGS' Because it's common to want to do some special processing if there diff -adurpN glibc-2.2/manual/libc.info-39 glibc-2.2.1/manual/libc.info-39 --- glibc-2.2/manual/libc.info-39 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-39 Sun Jan 7 09:09:09 2001 @@ -895,7 +895,8 @@ environment do not lead to errors. user should change the string after the `putenv' call this will reflect in automatically in the environment. This also requires that STRING is no automatic variable which scope is left before the - variable is removed from the environment. + variable is removed from the environment. The same applies of + course to dynamically allocated variables which are freed later. This function is part of the extended Unix interface. Since it was also available in old SVID libraries you should define either diff -adurpN glibc-2.2/manual/libc.info-4 glibc-2.2.1/manual/libc.info-4 --- glibc-2.2/manual/libc.info-4 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-4 Sun Jan 7 09:09:09 2001 @@ -200,7 +200,7 @@ allocation, for example. `malloc' uses whenever it is called. You should define this function to look like `malloc'; that is, like: - void *FUNCTION (size_t SIZE, void *CALLER) + void *FUNCTION (size_t SIZE, const void *CALLER) The value of CALLER is the return address found on the stack when the `malloc' function was called. This value allows you to trace @@ -211,7 +211,7 @@ allocation, for example. uses whenever it is called. You should define this function to look like `realloc'; that is, like: - void *FUNCTION (void *PTR, size_t SIZE, void *CALLER) + void *FUNCTION (void *PTR, size_t SIZE, const void *CALLER) The value of CALLER is the return address found on the stack when the `realloc' function was called. This value allows you to trace @@ -222,7 +222,7 @@ allocation, for example. uses whenever it is called. You should define this function to look like `free'; that is, like: - void FUNCTION (void *PTR, void *CALLER) + void FUNCTION (void *PTR, const void *CALLER) The value of CALLER is the return address found on the stack when the `free' function was called. This value allows you to trace the @@ -233,7 +233,11 @@ allocation, for example. uses whenever it is called. You should define this function to look like `memalign'; that is, like: - void *FUNCTION (size_t SIZE, size_t ALIGNMENT) + void *FUNCTION (size_t SIZE, size_t ALIGNMENT, const void *CALLER) + + The value of CALLER is the return address found on the stack when + the `memalign' function was called. This value allows you to + trace the memory consumption of the program. You must make sure that the function you install as a hook for one of these functions does not call that function recursively without @@ -271,14 +275,13 @@ right time. information every time `malloc' or `free' is called. We just assume here that `realloc' and `memalign' are not used in our program. - /* Global variables used to hold underlaying hook values. */ - static void *(*old_malloc_hook) (size_t); - static void (*old_free_hook) (void*); + /* Prototypes for __malloc_hook, __free_hook */ + #include /* Prototypes for our hooks. */ static void *my_init_hook (void); - static void *my_malloc_hook (size_t); - static void my_free_hook (void*); + static void *my_malloc_hook (size_t, const void *); + static void my_free_hook (void*, const void *); /* Override initializing hook from the C library. */ void (*__malloc_initialize_hook) (void) = my_init_hook; @@ -293,7 +296,7 @@ here that `realloc' and `memalign' are n } static void * - my_malloc_hook (size_t size) + my_malloc_hook (size_t size, const void *caller) { void *result; /* Restore all old hooks */ @@ -313,7 +316,7 @@ here that `realloc' and `memalign' are n } static void * - my_free_hook (void *ptr) + my_free_hook (void *ptr, const void *caller) { /* Restore all old hooks */ __malloc_hook = old_malloc_hook; @@ -437,16 +440,16 @@ Summary of `malloc'-Related Functions dynamically allocated memory, and to call ABORTFN when an inconsistency is found. *Note Heap Consistency Checking::. -`void *(*__malloc_hook) (size_t SIZE, void *CALLER)' +`void *(*__malloc_hook) (size_t SIZE, const void *CALLER)' A pointer to a function that `malloc' uses whenever it is called. -`void *(*__realloc_hook) (void *PTR, size_t SIZE, void *CALLER)' +`void *(*__realloc_hook) (void *PTR, size_t SIZE, const void *CALLER)' A pointer to a function that `realloc' uses whenever it is called. -`void (*__free_hook) (void *PTR, void *CALLER)' +`void (*__free_hook) (void *PTR, const void *CALLER)' A pointer to a function that `free' uses whenever it is called. -`void (*__memalign_hook) (size_t SIZE, size_t ALIGNMENT)' +`void (*__memalign_hook) (size_t SIZE, size_t ALIGNMENT, const void *CALLER)' A pointer to a function that `memalign' uses whenever it is called. `struct mallinfo mallinfo (void)' diff -adurpN glibc-2.2/manual/libc.info-43 glibc-2.2.1/manual/libc.info-43 --- glibc-2.2/manual/libc.info-43 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-43 Sun Jan 7 09:09:09 2001 @@ -1096,6 +1096,7 @@ can make changes. machine type * Filesystem Handling:: Controlling/querying mounts * System Parameters:: Getting and setting various system parameters +* Load Average:: Getting the system load average To get information on parameters of the system that are built into the system, such as the maximum length of a filename, *Note System diff -adurpN glibc-2.2/manual/libc.info-44 glibc-2.2.1/manual/libc.info-44 --- glibc-2.2/manual/libc.info-44 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-44 Sun Jan 7 09:09:09 2001 @@ -941,7 +941,7 @@ should maintain and use these separately deprecated when `umount2' is also available.  -File: libc.info, Node: System Parameters, Prev: Filesystem Handling, Up: System Management +File: libc.info, Node: System Parameters, Next: Load Average, Prev: Filesystem Handling, Up: System Management System Parameters ================= @@ -1074,6 +1074,27 @@ parameters are: * `bdflush'  +File: libc.info, Node: Load Average, Prev: System Parameters, Up: System Management + +Getting the system load average +=============================== + + This section describes the `getloadavg' function, which gets the 1, 5 +and 15 minute load averages of the system. The load average is the +number of processes in the system run queue, averaged over various +periods of time (1, 5 and 15 minutes in this case). + + The symbols used in this section are declared in the file `stdlib.h'. + + - Function: int getloadavg (double LOADAVG[], int NELEM) + This function gets the 1, 5 and 15 minute load averages of the + system. The values are placed in LOADAVG. The function will place + at most NELEM elements into the array, LOADAVG. Never are there + more than three elements returned and possibly less than NELEM. + The return value is the number of elements written to LOADAVG, or + -1 on error. + + File: libc.info, Node: System Configuration, Next: Cryptographic Functions, Prev: System Management, Up: Top System Configuration Parameters @@ -1106,88 +1127,4 @@ path for executable files (*note String * Utility Minimums:: Minimum allowable values of those limits. * String Parameters:: Getting the default search path. - - -File: libc.info, Node: General Limits, Next: System Options, Up: System Configuration - -General Capacity Limits -======================= - - The POSIX.1 and POSIX.2 standards specify a number of parameters that -describe capacity limitations of the system. These limits can be fixed -constants for a given operating system, or they can vary from machine to -machine. For example, some limit values may be configurable by the -system administrator, either at run time or by rebuilding the kernel, -and this should not require recompiling application programs. - - Each of the following limit parameters has a macro that is defined in -`limits.h' only if the system has a fixed, uniform limit for the -parameter in question. If the system allows different file systems or -files to have different limits, then the macro is undefined; use -`sysconf' to find out the limit that applies at a particular time on a -particular machine. *Note Sysconf::. - - Each of these parameters also has another macro, with a name starting -with `_POSIX', which gives the lowest value that the limit is allowed -to have on *any* POSIX system. *Note Minimums::. - - - Macro: int ARG_MAX - If defined, the unvarying maximum combined length of the ARGV and - ENVIRON arguments that can be passed to the `exec' functions. - - - Macro: int CHILD_MAX - If defined, the unvarying maximum number of processes that can - exist with the same real user ID at any one time. In BSD and GNU, - this is controlled by the `RLIMIT_NPROC' resource limit; *note - Limits on Resources::.. - - - Macro: int OPEN_MAX - If defined, the unvarying maximum number of files that a single - process can have open simultaneously. In BSD and GNU, this is - controlled by the `RLIMIT_NOFILE' resource limit; *note Limits on - Resources::.. - - - Macro: int STREAM_MAX - If defined, the unvarying maximum number of streams that a single - process can have open simultaneously. *Note Opening Streams::. - - - Macro: int TZNAME_MAX - If defined, the unvarying maximum length of a time zone name. - *Note Time Zone Functions::. - - These limit macros are always defined in `limits.h'. - - - Macro: int NGROUPS_MAX - The maximum number of supplementary group IDs that one process can - have. - - The value of this macro is actually a lower bound for the maximum. - That is, you can count on being able to have that many - supplementary group IDs, but a particular machine might let you - have even more. You can use `sysconf' to see whether a particular - machine will let you have more (*note Sysconf::.). - - - Macro: int SSIZE_MAX - The largest value that can fit in an object of type `ssize_t'. - Effectively, this is the limit on the number of bytes that can be - read or written in a single operation. - - This macro is defined in all POSIX systems because this limit is - never configurable. - - - Macro: int RE_DUP_MAX - The largest number of repetitions you are guaranteed is allowed in - the construct `\{MIN,MAX\}' in a regular expression. - - The value of this macro is actually a lower bound for the maximum. - That is, you can count on being able to have that many - repetitions, but a particular machine might let you have even - more. You can use `sysconf' to see whether a particular machine - will let you have more (*note Sysconf::.). And even the value - that `sysconf' tells you is just a lower bound--larger values - might work. - - This macro is defined in all POSIX.2 systems, because POSIX.2 says - it should always be defined even if there is no specific imposed - limit. diff -adurpN glibc-2.2/manual/libc.info-45 glibc-2.2.1/manual/libc.info-45 --- glibc-2.2/manual/libc.info-45 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-45 Sun Jan 7 09:09:09 2001 @@ -32,6 +32,90 @@ entitled "GNU Library General Public Lic accuracy by the Foundation.  +File: libc.info, Node: General Limits, Next: System Options, Up: System Configuration + +General Capacity Limits +======================= + + The POSIX.1 and POSIX.2 standards specify a number of parameters that +describe capacity limitations of the system. These limits can be fixed +constants for a given operating system, or they can vary from machine to +machine. For example, some limit values may be configurable by the +system administrator, either at run time or by rebuilding the kernel, +and this should not require recompiling application programs. + + Each of the following limit parameters has a macro that is defined in +`limits.h' only if the system has a fixed, uniform limit for the +parameter in question. If the system allows different file systems or +files to have different limits, then the macro is undefined; use +`sysconf' to find out the limit that applies at a particular time on a +particular machine. *Note Sysconf::. + + Each of these parameters also has another macro, with a name starting +with `_POSIX', which gives the lowest value that the limit is allowed +to have on *any* POSIX system. *Note Minimums::. + + - Macro: int ARG_MAX + If defined, the unvarying maximum combined length of the ARGV and + ENVIRON arguments that can be passed to the `exec' functions. + + - Macro: int CHILD_MAX + If defined, the unvarying maximum number of processes that can + exist with the same real user ID at any one time. In BSD and GNU, + this is controlled by the `RLIMIT_NPROC' resource limit; *note + Limits on Resources::.. + + - Macro: int OPEN_MAX + If defined, the unvarying maximum number of files that a single + process can have open simultaneously. In BSD and GNU, this is + controlled by the `RLIMIT_NOFILE' resource limit; *note Limits on + Resources::.. + + - Macro: int STREAM_MAX + If defined, the unvarying maximum number of streams that a single + process can have open simultaneously. *Note Opening Streams::. + + - Macro: int TZNAME_MAX + If defined, the unvarying maximum length of a time zone name. + *Note Time Zone Functions::. + + These limit macros are always defined in `limits.h'. + + - Macro: int NGROUPS_MAX + The maximum number of supplementary group IDs that one process can + have. + + The value of this macro is actually a lower bound for the maximum. + That is, you can count on being able to have that many + supplementary group IDs, but a particular machine might let you + have even more. You can use `sysconf' to see whether a particular + machine will let you have more (*note Sysconf::.). + + - Macro: int SSIZE_MAX + The largest value that can fit in an object of type `ssize_t'. + Effectively, this is the limit on the number of bytes that can be + read or written in a single operation. + + This macro is defined in all POSIX systems because this limit is + never configurable. + + - Macro: int RE_DUP_MAX + The largest number of repetitions you are guaranteed is allowed in + the construct `\{MIN,MAX\}' in a regular expression. + + The value of this macro is actually a lower bound for the maximum. + That is, you can count on being able to have that many + repetitions, but a particular machine might let you have even + more. You can use `sysconf' to see whether a particular machine + will let you have more (*note Sysconf::.). And even the value + that `sysconf' tells you is just a lower bound--larger values + might work. + + This macro is defined in all POSIX.2 systems, because POSIX.2 says + it should always be defined even if there is no specific imposed + limit. + + File: libc.info, Node: System Options, Next: Version Supported, Prev: General Limits, Up: System Configuration Overall System Options @@ -1269,65 +1353,4 @@ with the source code" to most countries. The rules in this area are continuously changing. If you know of any information in this manual that is out-of-date, please report it using the `glibcbug' script. *Note Reporting Bugs::. - - -File: libc.info, Node: getpass, Next: crypt, Prev: Legal Problems, Up: Cryptographic Functions - -Reading Passwords -================= - - When reading in a password, it is desirable to avoid displaying it on -the screen, to help keep it secret. The following function handles this -in a convenient way. - - - Function: char * getpass (const char * PROMPT) - `getpass' outputs PROMPT, then reads a string in from the terminal - without echoing it. It tries to connect to the real terminal, - `/dev/tty', if possible, to encourage users not to put plaintext - passwords in files; otherwise, it uses `stdin' and `stderr'. - `getpass' also disables the INTR, QUIT, and SUSP characters on the - terminal using the `ISIG' terminal attribute (*note Local - Modes::.). The terminal is flushed before and after `getpass', so - that characters of a mistyped password are not accidentally - visible. - - In other C libraries, `getpass' may only return the first - `PASS_MAX' bytes of a password. The GNU C library has no limit, so - `PASS_MAX' is undefined. - - The prototype for this function is in `unistd.h'. `PASS_MAX' - would be defined in `limits.h'. - - This precise set of operations may not suit all possible situations. -In this case, it is recommended that users write their own `getpass' -substitute. For instance, a very simple substitute is as follows: - - #include - #include - - ssize_t - my_getpass (char **lineptr, size_t *n, FILE *stream) - { - struct termios old, new; - int nread; - - /* Turn echoing off and fail if we can't. */ - if (tcgetattr (fileno (stream), &old) != 0) - return -1; - new = old; - new.c_lflag &= ~ECHO; - if (tcsetattr (fileno (stream), TCSAFLUSH, &new) != 0) - return -1; - - /* Read the password. */ - nread = getline (lineptr, n, stream); - - /* Restore terminal. */ - (void) tcsetattr (fileno (stream), TCSAFLUSH, &old); - - return nread; - } - - The substitute takes the same parameters as `getline' (*note Line -Input::.); the user must print any prompt desired. diff -adurpN glibc-2.2/manual/libc.info-46 glibc-2.2.1/manual/libc.info-46 --- glibc-2.2/manual/libc.info-46 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-46 Sun Jan 7 09:09:09 2001 @@ -32,6 +32,67 @@ entitled "GNU Library General Public Lic accuracy by the Foundation.  +File: libc.info, Node: getpass, Next: crypt, Prev: Legal Problems, Up: Cryptographic Functions + +Reading Passwords +================= + + When reading in a password, it is desirable to avoid displaying it on +the screen, to help keep it secret. The following function handles this +in a convenient way. + + - Function: char * getpass (const char * PROMPT) + `getpass' outputs PROMPT, then reads a string in from the terminal + without echoing it. It tries to connect to the real terminal, + `/dev/tty', if possible, to encourage users not to put plaintext + passwords in files; otherwise, it uses `stdin' and `stderr'. + `getpass' also disables the INTR, QUIT, and SUSP characters on the + terminal using the `ISIG' terminal attribute (*note Local + Modes::.). The terminal is flushed before and after `getpass', so + that characters of a mistyped password are not accidentally + visible. + + In other C libraries, `getpass' may only return the first + `PASS_MAX' bytes of a password. The GNU C library has no limit, so + `PASS_MAX' is undefined. + + The prototype for this function is in `unistd.h'. `PASS_MAX' + would be defined in `limits.h'. + + This precise set of operations may not suit all possible situations. +In this case, it is recommended that users write their own `getpass' +substitute. For instance, a very simple substitute is as follows: + + #include + #include + + ssize_t + my_getpass (char **lineptr, size_t *n, FILE *stream) + { + struct termios old, new; + int nread; + + /* Turn echoing off and fail if we can't. */ + if (tcgetattr (fileno (stream), &old) != 0) + return -1; + new = old; + new.c_lflag &= ~ECHO; + if (tcsetattr (fileno (stream), TCSAFLUSH, &new) != 0) + return -1; + + /* Read the password. */ + nread = getline (lineptr, n, stream); + + /* Restore terminal. */ + (void) tcsetattr (fileno (stream), TCSAFLUSH, &old); + + return nread; + } + + The substitute takes the same parameters as `getline' (*note Line +Input::.); the user must print any prompt desired. + + File: libc.info, Node: crypt, Next: DES Encryption, Prev: getpass, Up: Cryptographic Functions Encrypting Passwords @@ -477,7 +538,7 @@ change the attributes of the thread prev an undefined state, and you must not use it again in a call to any pthreads function until it has been reinitialized. - - Function: int pthread_attr_setATTR (pthread_attr_t *OBJ, int VALUE) + - Function: int pthread_attr_setattr (pthread_attr_t *OBJ, int VALUE) Set attribute ATTR to VALUE in the attribute object pointed to by OBJ. See below for a list of possible attributes and the values they can take. @@ -487,7 +548,7 @@ change the attributes of the thread prev `EINVAL'. Some of the functions have other failure modes; see below. - - Function: int pthread_attr_getATTR (const pthread_attr_t *OBJ, int + - Function: int pthread_attr_getattr (const pthread_attr_t *OBJ, int *VALUE) Store the current setting of ATTR in OBJ into the variable pointed to by VALUE. @@ -560,9 +621,48 @@ change the attributes of the thread prev other processes. `PTHREAD_SCOPE_PROCESS' is not supported in LinuxThreads. If you - try to set the scope to this value `pthread_attr_setscope' will + try to set the scope to this value, `pthread_attr_setscope' will fail and return `ENOTSUP'. +`stackaddr' + Provide an address for an application managed stack. The size of + the stack must be at least `PTHREAD_STACK_MIN'. + +`stacksize' + Change the size of the stack created for the thread. The value + defines the minimum stack size, in bytes. + + If the value exceeds the system's maximum stack size, or is smaller + than `PTHREAD_STACK_MIN', `pthread_attr_setstacksize' will fail + and return `EINVAL'. + +`stack' + Provide both the address and size of an application managed stack + to use for the new thread. The base of the memory area is + STACKADDR with the size of the memory area, STACKSIZE, measured in + bytes. + + If the value of STACKSIZE is less than `PTHREAD_STACK_MIN', or + greater than the system's maximum stack size, or if the value of + STACKADDR lacks the proper alignment, `pthread_attr_setstack' will + fail and return `EINVAL'. + +`guardsize' + Change the minimum size in bytes of the guard area for the thread's + stack. The default size is a single page. If this value is set, + it will be rounded up to the nearest page size. If the value is + set to 0, a guard area will not be created for this thread. The + space allocated for the guard area is used to catch stack + overflow. Therefore, when allocating large structures on the + stack, a larger guard area may be required to catch a stack + overflow. + + If the caller is managing their own stacks (if the `stackaddr' + attribute has been set), then the `guardsize' attribute is ignored. + + If the value exceeds the `stacksize', `pthread_atrr_setguardsize' + will fail and return `EINVAL'. +  File: libc.info, Node: Cancellation, Next: Cleanup Handlers, Prev: Thread Attributes, Up: POSIX Threads @@ -797,16 +897,17 @@ a signal handler may deadlock the callin If MUTEXATTR is `NULL', default attributes are used instead. The LinuxThreads implementation supports only one mutex attribute, - the MUTEX KIND, which is either "fast", "recursive", or "error - checking". The kind of a mutex determines whether it can be locked - again by a thread that already owns it. The default kind is + the MUTEX TYPE, which is either "fast", "recursive", or "error + checking". The type of a mutex determines whether it can be locked + again by a thread that already owns it. The default type is "fast". Variables of type `pthread_mutex_t' can also be initialized statically, using the constants `PTHREAD_MUTEX_INITIALIZER' (for - fast mutexes), `PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP' (for - recursive mutexes), and `PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP' - (for error checking mutexes). + timed mutexes), `PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP' (for + recursive mutexes), `PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP' (for + fast mutexes(, and `PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP' (for + error checking mutexes). `pthread_mutex_init' always returns 0. @@ -818,12 +919,12 @@ a signal handler may deadlock the callin the calling thread until the mutex is unlocked. If the mutex is already locked by the calling thread, the behavior - of `pthread_mutex_lock' depends on the kind of the mutex. If the - mutex is of the "fast" kind, the calling thread is suspended. It + of `pthread_mutex_lock' depends on the type of the mutex. If the + mutex is of the "fast" type, the calling thread is suspended. It will remain suspended forever, because no other thread can unlock - the mutex. If the mutex is of the "error checking" kind, + the mutex. If the mutex is of the "error checking" type, `pthread_mutex_lock' returns immediately with the error code - `EDEADLK'. If the mutex is of the "recursive" kind, + `EDEADLK'. If the mutex is of the "recursive" type, `pthread_mutex_lock' succeeds and returns immediately, recording the number of times the calling thread has locked the mutex. An equal number of `pthread_mutex_unlock' operations must be @@ -858,9 +959,9 @@ a signal handler may deadlock the callin - Function: int pthread_mutex_unlock (pthread_mutex_t *MUTEX) `pthread_mutex_unlock' unlocks the given mutex. The mutex is assumed to be locked and owned by the calling thread on entrance to - `pthread_mutex_unlock'. If the mutex is of the "fast" kind, + `pthread_mutex_unlock'. If the mutex is of the "fast" type, `pthread_mutex_unlock' always returns it to the unlocked state. If - it is of the "recursive" kind, it decrements the locking count of + it is of the "recursive" type, it decrements the locking count of the mutex (number of `pthread_mutex_lock' operations performed on it by the calling thread), and only when this count reaches zero is the mutex actually unlocked. @@ -920,218 +1021,48 @@ all attributes set to their default valu This function always returns 0. - LinuxThreads supports only one mutex attribute: the mutex kind, -which is either `PTHREAD_MUTEX_FAST_NP' for "fast" mutexes, -`PTHREAD_MUTEX_RECURSIVE_NP' for "recursive" mutexes, or + LinuxThreads supports only one mutex attribute: the mutex type, +which is either `PTHREAD_MUTEX_ADAPTIVE_NP' for "fast" mutexes, +`PTHREAD_MUTEX_RECURSIVE_NP' for "recursive" mutexes, +`PTHREAD_MUTEX_TIMED_NP' for "timed" mutexes, or `PTHREAD_MUTEX_ERRORCHECK_NP' for "error checking" mutexes. As the `NP' suffix indicates, this is a non-portable extension to the POSIX standard and should not be employed in portable programs. - The mutex kind determines what happens if a thread attempts to lock a + The mutex type determines what happens if a thread attempts to lock a mutex it already owns with `pthread_mutex_lock'. If the mutex is of the -"fast" kind, `pthread_mutex_lock' simply suspends the calling thread -forever. If the mutex is of the "error checking" kind, +"fast" type, `pthread_mutex_lock' simply suspends the calling thread +forever. If the mutex is of the "error checking" type, `pthread_mutex_lock' returns immediately with the error code `EDEADLK'. -If the mutex is of the "recursive" kind, the call to +If the mutex is of the "recursive" type, the call to `pthread_mutex_lock' returns immediately with a success return code. The number of times the thread owning the mutex has locked it is recorded in the mutex. The owning thread must call `pthread_mutex_unlock' the same number of times before the mutex returns to the unlocked state. - The default mutex kind is "fast", that is, `PTHREAD_MUTEX_FAST_NP'. - - - Function: int pthread_mutexattr_setkind_np (pthread_mutexattr_t - *ATTR, int KIND) - `pthread_mutexattr_setkind_np' sets the mutex kind attribute in - ATTR to the value specified by KIND. - - If KIND is not `PTHREAD_MUTEX_FAST_NP', - `PTHREAD_MUTEX_RECURSIVE_NP', or `PTHREAD_MUTEX_ERRORCHECK_NP', - this function will return `EINVAL' and leave ATTR unchanged. - - - Function: int pthread_mutexattr_getkind_np (const - pthread_mutexattr_t *ATTR, int *KIND) - `pthread_mutexattr_getkind_np' retrieves the current value of the - mutex kind attribute in ATTR and stores it in the location pointed - to by KIND. - - This function always returns 0. - - -File: libc.info, Node: Condition Variables, Next: POSIX Semaphores, Prev: Mutexes, Up: POSIX Threads - -Condition Variables -=================== - - A condition (short for "condition variable") is a synchronization -device that allows threads to suspend execution until some predicate on -shared data is satisfied. The basic operations on conditions are: signal -the condition (when the predicate becomes true), and wait for the -condition, suspending the thread execution until another thread signals -the condition. - - A condition variable must always be associated with a mutex, to avoid -the race condition where a thread prepares to wait on a condition -variable and another thread signals the condition just before the first -thread actually waits on it. - - - Function: int pthread_cond_init (pthread_cond_t *COND, - pthread_condattr_t *cond_ATTR) - `pthread_cond_init' initializes the condition variable COND, using - the condition attributes specified in COND_ATTR, or default - attributes if COND_ATTR is `NULL'. The LinuxThreads implementation - supports no attributes for conditions, hence the COND_ATTR - parameter is actually ignored. - - Variables of type `pthread_cond_t' can also be initialized - statically, using the constant `PTHREAD_COND_INITIALIZER'. - - This function always returns 0. - - - Function: int pthread_cond_signal (pthread_cond_t *COND) - `pthread_cond_signal' restarts one of the threads that are waiting - on the condition variable COND. If no threads are waiting on COND, - nothing happens. If several threads are waiting on COND, exactly - one is restarted, but it is not specified which. + The default mutex type is "timed", that is, `PTHREAD_MUTEX_TIMED_NP'. - This function always returns 0. + - Function: int pthread_mutexattr_settype (pthread_mutexattr_t *ATTR, + int TYPE) + `pthread_mutexattr_settype' sets the mutex type attribute in ATTR + to the value specified by TYPE. - - Function: int pthread_cond_broadcast (pthread_cond_t *COND) - `pthread_cond_broadcast' restarts all the threads that are waiting - on the condition variable COND. Nothing happens if no threads are - waiting on COND. + If TYPE is not `PTHREAD_MUTEX_ADAPTIVE_NP', + `PTHREAD_MUTEX_RECURSIVE_NP', `PTHREAD_MUTEX_TIMED_NP', or + `PTHREAD_MUTEX_ERRORCHECK_NP', this function will return `EINVAL' + and leave ATTR unchanged. - This function always returns 0. + The standard Unix98 identifiers `PTHREAD_MUTEX_DEFAULT', + `PTHREAD_MUTEX_NORMAL', `PTHREAD_MUTEX_RECURSIVE', and + `PTHREAD_MUTEX_ERRORCHECK' are also permitted. - - Function: int pthread_cond_wait (pthread_cond_t *COND, - pthread_mutex_t *MUTEX) - `pthread_cond_wait' atomically unlocks the MUTEX (as per - `pthread_unlock_mutex') and waits for the condition variable COND - to be signaled. The thread execution is suspended and does not - consume any CPU time until the condition variable is signaled. The - MUTEX must be locked by the calling thread on entrance to - `pthread_cond_wait'. Before returning to the calling thread, - `pthread_cond_wait' re-acquires MUTEX (as per - `pthread_lock_mutex'). - Unlocking the mutex and suspending on the condition variable is - done atomically. Thus, if all threads always acquire the mutex - before signaling the condition, this guarantees that the condition - cannot be signaled (and thus ignored) between the time a thread - locks the mutex and the time it waits on the condition variable. + - Function: int pthread_mutexattr_gettype (const pthread_mutexattr_t + *ATTR, int *TYPE) + `pthread_mutexattr_gettype' retrieves the current value of the + mutex type attribute in ATTR and stores it in the location pointed + to by TYPE. This function always returns 0. - - - Function: int pthread_cond_timedwait (pthread_cond_t *COND, - pthread_mutex_t *MUTEX, const struct timespec *ABSTIME) - `pthread_cond_timedwait' atomically unlocks MUTEX and waits on - COND, as `pthread_cond_wait' does, but it also bounds the duration - of the wait. If COND has not been signaled before time ABSTIME, - the mutex MUTEX is re-acquired and `pthread_cond_timedwait' - returns the error code `ETIMEDOUT'. The wait can also be - interrupted by a signal; in that case `pthread_cond_timedwait' - returns `EINTR'. - - The ABSTIME parameter specifies an absolute time, with the same - origin as `time' and `gettimeofday': an ABSTIME of 0 corresponds - to 00:00:00 GMT, January 1, 1970. - - - Function: int pthread_cond_destroy (pthread_cond_t *COND) - `pthread_cond_destroy' destroys the condition variable COND, - freeing the resources it might hold. If any threads are waiting - on the condition variable, `pthread_cond_destroy' leaves COND - untouched and returns `EBUSY'. Otherwise it returns 0, and COND - must not be used again until it is reinitialized. - - In the LinuxThreads implementation, no resources are associated - with condition variables, so `pthread_cond_destroy' actually does - nothing. - - `pthread_cond_wait' and `pthread_cond_timedwait' are cancellation -points. If a thread is cancelled while suspended in one of these -functions, the thread immediately resumes execution, relocks the mutex -specified by MUTEX, and finally executes the cancellation. -Consequently, cleanup handlers are assured that MUTEX is locked when -they are called. - - It is not safe to call the condition variable functions from a signal -handler. In particular, calling `pthread_cond_signal' or -`pthread_cond_broadcast' from a signal handler may deadlock the calling -thread. - - Consider two shared variables X and Y, protected by the mutex MUT, -and a condition variable COND that is to be signaled whenever X becomes -greater than Y. - - int x,y; - pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER; - pthread_cond_t cond = PTHREAD_COND_INITIALIZER; - - Waiting until X is greater than Y is performed as follows: - - pthread_mutex_lock(&mut); - while (x <= y) { - pthread_cond_wait(&cond, &mut); - } - /* operate on x and y */ - pthread_mutex_unlock(&mut); - - Modifications on X and Y that may cause X to become greater than Y -should signal the condition if needed: - - pthread_mutex_lock(&mut); - /* modify x and y */ - if (x > y) pthread_cond_broadcast(&cond); - pthread_mutex_unlock(&mut); - - If it can be proved that at most one waiting thread needs to be waken -up (for instance, if there are only two threads communicating through X -and Y), `pthread_cond_signal' can be used as a slightly more efficient -alternative to `pthread_cond_broadcast'. In doubt, use -`pthread_cond_broadcast'. - - To wait for X to becomes greater than Y with a timeout of 5 seconds, -do: - - struct timeval now; - struct timespec timeout; - int retcode; - - pthread_mutex_lock(&mut); - gettimeofday(&now); - timeout.tv_sec = now.tv_sec + 5; - timeout.tv_nsec = now.tv_usec * 1000; - retcode = 0; - while (x <= y && retcode != ETIMEDOUT) { - retcode = pthread_cond_timedwait(&cond, &mut, &timeout); - } - if (retcode == ETIMEDOUT) { - /* timeout occurred */ - } else { - /* operate on x and y */ - } - pthread_mutex_unlock(&mut); - - Condition attributes can be specified at condition creation time, by -passing a condition attribute object as second argument to -`pthread_cond_init'. Passing `NULL' is equivalent to passing a -condition attribute object with all attributes set to their default -values. - - The LinuxThreads implementation supports no attributes for -conditions. The functions on condition attributes are included only for -compliance with the POSIX standard. - - - Function: int pthread_condattr_init (pthread_condattr_t *ATTR) - - Function: int pthread_condattr_destroy (pthread_condattr_t *ATTR) - `pthread_condattr_init' initializes the condition attribute object - ATTR and fills it with default values for the attributes. - `pthread_condattr_destroy' destroys the condition attribute object - ATTR. - - Both functions do nothing in the LinuxThreads implementation. - - `pthread_condattr_init' and `pthread_condattr_destroy' always - return 0. diff -adurpN glibc-2.2/manual/libc.info-47 glibc-2.2.1/manual/libc.info-47 --- glibc-2.2/manual/libc.info-47 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-47 Sun Jan 7 09:09:09 2001 @@ -32,6 +32,183 @@ entitled "GNU Library General Public Lic accuracy by the Foundation.  +File: libc.info, Node: Condition Variables, Next: POSIX Semaphores, Prev: Mutexes, Up: POSIX Threads + +Condition Variables +=================== + + A condition (short for "condition variable") is a synchronization +device that allows threads to suspend execution until some predicate on +shared data is satisfied. The basic operations on conditions are: signal +the condition (when the predicate becomes true), and wait for the +condition, suspending the thread execution until another thread signals +the condition. + + A condition variable must always be associated with a mutex, to avoid +the race condition where a thread prepares to wait on a condition +variable and another thread signals the condition just before the first +thread actually waits on it. + + - Function: int pthread_cond_init (pthread_cond_t *COND, + pthread_condattr_t *cond_ATTR) + `pthread_cond_init' initializes the condition variable COND, using + the condition attributes specified in COND_ATTR, or default + attributes if COND_ATTR is `NULL'. The LinuxThreads implementation + supports no attributes for conditions, hence the COND_ATTR + parameter is actually ignored. + + Variables of type `pthread_cond_t' can also be initialized + statically, using the constant `PTHREAD_COND_INITIALIZER'. + + This function always returns 0. + + - Function: int pthread_cond_signal (pthread_cond_t *COND) + `pthread_cond_signal' restarts one of the threads that are waiting + on the condition variable COND. If no threads are waiting on COND, + nothing happens. If several threads are waiting on COND, exactly + one is restarted, but it is not specified which. + + This function always returns 0. + + - Function: int pthread_cond_broadcast (pthread_cond_t *COND) + `pthread_cond_broadcast' restarts all the threads that are waiting + on the condition variable COND. Nothing happens if no threads are + waiting on COND. + + This function always returns 0. + + - Function: int pthread_cond_wait (pthread_cond_t *COND, + pthread_mutex_t *MUTEX) + `pthread_cond_wait' atomically unlocks the MUTEX (as per + `pthread_unlock_mutex') and waits for the condition variable COND + to be signaled. The thread execution is suspended and does not + consume any CPU time until the condition variable is signaled. The + MUTEX must be locked by the calling thread on entrance to + `pthread_cond_wait'. Before returning to the calling thread, + `pthread_cond_wait' re-acquires MUTEX (as per + `pthread_lock_mutex'). + + Unlocking the mutex and suspending on the condition variable is + done atomically. Thus, if all threads always acquire the mutex + before signaling the condition, this guarantees that the condition + cannot be signaled (and thus ignored) between the time a thread + locks the mutex and the time it waits on the condition variable. + + This function always returns 0. + + - Function: int pthread_cond_timedwait (pthread_cond_t *COND, + pthread_mutex_t *MUTEX, const struct timespec *ABSTIME) + `pthread_cond_timedwait' atomically unlocks MUTEX and waits on + COND, as `pthread_cond_wait' does, but it also bounds the duration + of the wait. If COND has not been signaled before time ABSTIME, + the mutex MUTEX is re-acquired and `pthread_cond_timedwait' + returns the error code `ETIMEDOUT'. The wait can also be + interrupted by a signal; in that case `pthread_cond_timedwait' + returns `EINTR'. + + The ABSTIME parameter specifies an absolute time, with the same + origin as `time' and `gettimeofday': an ABSTIME of 0 corresponds + to 00:00:00 GMT, January 1, 1970. + + - Function: int pthread_cond_destroy (pthread_cond_t *COND) + `pthread_cond_destroy' destroys the condition variable COND, + freeing the resources it might hold. If any threads are waiting + on the condition variable, `pthread_cond_destroy' leaves COND + untouched and returns `EBUSY'. Otherwise it returns 0, and COND + must not be used again until it is reinitialized. + + In the LinuxThreads implementation, no resources are associated + with condition variables, so `pthread_cond_destroy' actually does + nothing. + + `pthread_cond_wait' and `pthread_cond_timedwait' are cancellation +points. If a thread is cancelled while suspended in one of these +functions, the thread immediately resumes execution, relocks the mutex +specified by MUTEX, and finally executes the cancellation. +Consequently, cleanup handlers are assured that MUTEX is locked when +they are called. + + It is not safe to call the condition variable functions from a signal +handler. In particular, calling `pthread_cond_signal' or +`pthread_cond_broadcast' from a signal handler may deadlock the calling +thread. + + Consider two shared variables X and Y, protected by the mutex MUT, +and a condition variable COND that is to be signaled whenever X becomes +greater than Y. + + int x,y; + pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER; + pthread_cond_t cond = PTHREAD_COND_INITIALIZER; + + Waiting until X is greater than Y is performed as follows: + + pthread_mutex_lock(&mut); + while (x <= y) { + pthread_cond_wait(&cond, &mut); + } + /* operate on x and y */ + pthread_mutex_unlock(&mut); + + Modifications on X and Y that may cause X to become greater than Y +should signal the condition if needed: + + pthread_mutex_lock(&mut); + /* modify x and y */ + if (x > y) pthread_cond_broadcast(&cond); + pthread_mutex_unlock(&mut); + + If it can be proved that at most one waiting thread needs to be waken +up (for instance, if there are only two threads communicating through X +and Y), `pthread_cond_signal' can be used as a slightly more efficient +alternative to `pthread_cond_broadcast'. In doubt, use +`pthread_cond_broadcast'. + + To wait for X to becomes greater than Y with a timeout of 5 seconds, +do: + + struct timeval now; + struct timespec timeout; + int retcode; + + pthread_mutex_lock(&mut); + gettimeofday(&now); + timeout.tv_sec = now.tv_sec + 5; + timeout.tv_nsec = now.tv_usec * 1000; + retcode = 0; + while (x <= y && retcode != ETIMEDOUT) { + retcode = pthread_cond_timedwait(&cond, &mut, &timeout); + } + if (retcode == ETIMEDOUT) { + /* timeout occurred */ + } else { + /* operate on x and y */ + } + pthread_mutex_unlock(&mut); + + Condition attributes can be specified at condition creation time, by +passing a condition attribute object as second argument to +`pthread_cond_init'. Passing `NULL' is equivalent to passing a +condition attribute object with all attributes set to their default +values. + + The LinuxThreads implementation supports no attributes for +conditions. The functions on condition attributes are included only for +compliance with the POSIX standard. + + - Function: int pthread_condattr_init (pthread_condattr_t *ATTR) + - Function: int pthread_condattr_destroy (pthread_condattr_t *ATTR) + `pthread_condattr_init' initializes the condition attribute object + ATTR and fills it with default values for the attributes. + `pthread_condattr_destroy' destroys the condition attribute object + ATTR. + + Both functions do nothing in the LinuxThreads implementation. + + `pthread_condattr_init' and `pthread_condattr_destroy' always + return 0. + + File: libc.info, Node: POSIX Semaphores, Next: Thread-Specific Data, Prev: Condition Variables, Up: POSIX Threads POSIX Semaphores @@ -589,6 +766,19 @@ Miscellaneous Thread Functions POLICY or PARAM point outside the process memory space. + - Function: int pthread_setconcurrency (int LEVEL) + `pthread_setconcurrency' is unused in LinuxThreads due to the lack + of a mapping of user threads to kernel threads. It exists for + source compatibility. It does store the value LEVEL so that it + can be returned by a subsequent call to `pthread_getconcurrency'. + It takes no other action however. + + - Function: int pthread_getconcurrency () + `pthread_getconcurrency' is unused in LinuxThreads due to the lack + of a mapping of user threads to kernel threads. It exists for + source compatibility. However, it will return the value that was + set by the last call to `pthread_setconcurrency'. +  File: libc.info, Node: Language Features, Next: Library Summary, Prev: POSIX Threads, Up: Top @@ -930,236 +1120,4 @@ arbitrary number of pointer arguments, a end of the argument list. (This assumes that a null pointer isn't otherwise meaningful to the function.) The `execl' function works in just this way; see *Note Executing a File::. - - -File: libc.info, Node: Calling Variadics, Next: Argument Macros, Prev: How Many Arguments, Up: How Variadic - -Calling Variadic Functions -.......................... - - You don't have to do anything special to call a variadic function. -Just put the arguments (required arguments, followed by optional ones) -inside parentheses, separated by commas, as usual. But you must declare -the function with a prototype and know how the argument values are -converted. - - In principle, functions that are *defined* to be variadic must also -be *declared* to be variadic using a function prototype whenever you -call them. (*Note Variadic Prototypes::, for how.) This is because -some C compilers use a different calling convention to pass the same set -of argument values to a function depending on whether that function -takes variable arguments or fixed arguments. - - In practice, the GNU C compiler always passes a given set of argument -types in the same way regardless of whether they are optional or -required. So, as long as the argument types are self-promoting, you can -safely omit declaring them. Usually it is a good idea to declare the -argument types for variadic functions, and indeed for all functions. -But there are a few functions which it is extremely convenient not to -have to declare as variadic--for example, `open' and `printf'. - - Since the prototype doesn't specify types for optional arguments, in -a call to a variadic function the "default argument promotions" are -performed on the optional argument values. This means the objects of -type `char' or `short int' (whether signed or not) are promoted to -either `int' or `unsigned int', as appropriate; and that objects of -type `float' are promoted to type `double'. So, if the caller passes a -`char' as an optional argument, it is promoted to an `int', and the -function can access it with `va_arg (AP, int)'. - - Conversion of the required arguments is controlled by the function -prototype in the usual way: the argument expression is converted to the -declared argument type as if it were being assigned to a variable of -that type. - - -File: libc.info, Node: Argument Macros, Next: Old Varargs, Prev: Calling Variadics, Up: How Variadic - -Argument Access Macros -...................... - - Here are descriptions of the macros used to retrieve variable -arguments. These macros are defined in the header file `stdarg.h'. - - - Data Type: va_list - The type `va_list' is used for argument pointer variables. - - - Macro: void va_start (va_list AP, LAST-REQUIRED) - This macro initializes the argument pointer variable AP to point - to the first of the optional arguments of the current function; - LAST-REQUIRED must be the last required argument to the function. - - *Note Old Varargs::, for an alternate definition of `va_start' - found in the header file `varargs.h'. - - - Macro: TYPE va_arg (va_list AP, TYPE) - The `va_arg' macro returns the value of the next optional argument, - and modifies the value of AP to point to the subsequent argument. - Thus, successive uses of `va_arg' return successive optional - arguments. - - The type of the value returned by `va_arg' is TYPE as specified in - the call. TYPE must be a self-promoting type (not `char' or - `short int' or `float') that matches the type of the actual - argument. - - - Macro: void va_end (va_list AP) - This ends the use of AP. After a `va_end' call, further `va_arg' - calls with the same AP may not work. You should invoke `va_end' - before returning from the function in which `va_start' was invoked - with the same AP argument. - - In the GNU C library, `va_end' does nothing, and you need not ever - use it except for reasons of portability. - - - Sometimes it is necessary to parse the list of parameters more than -once or one wants to remember a certain position in the parameter list. -To do this, one will have to make a copy of the current value of the -argument. But `va_list' is an opaque type and one cannot necessarily -assign the value of one variable of type `va_list' to another variable -of the same type. - - - Macro: void __va_copy (va_list DEST, va_list SRC) - The `__va_copy' macro allows copying of objects of type `va_list' - even if this is not an integral type. The argument pointer in - DEST is initialized to point to the same argument as the pointer - in SRC. - - This macro is a GNU extension but it will hopefully also be - available in the next update of the ISO C standard. - - If you want to use `__va_copy' you should always be prepared for the -possibility that this macro will not be available. On architectures -where a simple assignment is invalid, hopefully `__va_copy' *will* be -available, so one should always write something like this: - - { - va_list ap, save; - ... - #ifdef __va_copy - __va_copy (save, ap); - #else - save = ap; - #endif - ... - } - - -File: libc.info, Node: Variadic Example, Prev: How Variadic, Up: Variadic Functions - -Example of a Variadic Function ------------------------------- - - Here is a complete sample function that accepts a variable number of -arguments. The first argument to the function is the count of remaining -arguments, which are added up and the result returned. While trivial, -this function is sufficient to illustrate how to use the variable -arguments facility. - - #include - #include - - int - add_em_up (int count,...) - { - va_list ap; - int i, sum; - - va_start (ap, count); /* Initialize the argument list. */ - - sum = 0; - for (i = 0; i < count; i++) - sum += va_arg (ap, int); /* Get the next argument value. */ - - va_end (ap); /* Clean up. */ - return sum; - } - - int - main (void) - { - /* This call prints 16. */ - printf ("%d\n", add_em_up (3, 5, 5, 6)); - - /* This call prints 55. */ - printf ("%d\n", add_em_up (10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)); - - return 0; - } - - -File: libc.info, Node: Old Varargs, Prev: Argument Macros, Up: How Variadic - -Old-Style Variadic Functions -............................ - - Before ISO C, programmers used a slightly different facility for -writing variadic functions. The GNU C compiler still supports it; -currently, it is more portable than the ISO C facility, since support -for ISO C is still not universal. The header file which defines the -old-fashioned variadic facility is called `varargs.h'. - - Using `varargs.h' is almost the same as using `stdarg.h'. There is -no difference in how you call a variadic function; see *Note Calling -Variadics::. The only difference is in how you define them. First of -all, you must use old-style non-prototype syntax, like this: - - tree - build (va_alist) - va_dcl - { - - Secondly, you must give `va_start' only one argument, like this: - - va_list p; - va_start (p); - - These are the special macros used for defining old-style variadic -functions: - - - Macro: va_alist - This macro stands for the argument name list required in a variadic - function. - - - Macro: va_dcl - This macro declares the implicit argument or arguments for a - variadic function. - - - Macro: void va_start (va_list AP) - This macro, as defined in `varargs.h', initializes the argument - pointer variable AP to point to the first argument of the current - function. - - The other argument macros, `va_arg' and `va_end', are the same in -`varargs.h' as in `stdarg.h'; see *Note Argument Macros::, for details. - - It does not work to include both `varargs.h' and `stdarg.h' in the -same compilation; they define `va_start' in conflicting ways. - - -File: libc.info, Node: Null Pointer Constant, Next: Important Data Types, Prev: Variadic Functions, Up: Language Features - -Null Pointer Constant -===================== - - The null pointer constant is guaranteed not to point to any real -object. You can assign it to any pointer variable since it has type -`void *'. The preferred way to write a null pointer constant is with -`NULL'. - - - Macro: void * NULL - This is a null pointer constant. - - You can also use `0' or `(void *)0' as a null pointer constant, but -using `NULL' is cleaner because it makes the purpose of the constant -more evident. - - If you use the null pointer constant as a function argument, then for -complete portability you should make sure that the function has a -prototype declaration. Otherwise, if the target machine has two -different pointer representations, the compiler won't know which -representation to use for that argument. You can avoid the problem by -explicitly casting the constant to the proper pointer type, but we -recommend instead adding a prototype for the function you are calling. diff -adurpN glibc-2.2/manual/libc.info-48 glibc-2.2.1/manual/libc.info-48 --- glibc-2.2/manual/libc.info-48 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-48 Sun Jan 7 09:09:09 2001 @@ -32,6 +32,238 @@ entitled "GNU Library General Public Lic accuracy by the Foundation.  +File: libc.info, Node: Calling Variadics, Next: Argument Macros, Prev: How Many Arguments, Up: How Variadic + +Calling Variadic Functions +.......................... + + You don't have to do anything special to call a variadic function. +Just put the arguments (required arguments, followed by optional ones) +inside parentheses, separated by commas, as usual. But you must declare +the function with a prototype and know how the argument values are +converted. + + In principle, functions that are *defined* to be variadic must also +be *declared* to be variadic using a function prototype whenever you +call them. (*Note Variadic Prototypes::, for how.) This is because +some C compilers use a different calling convention to pass the same set +of argument values to a function depending on whether that function +takes variable arguments or fixed arguments. + + In practice, the GNU C compiler always passes a given set of argument +types in the same way regardless of whether they are optional or +required. So, as long as the argument types are self-promoting, you can +safely omit declaring them. Usually it is a good idea to declare the +argument types for variadic functions, and indeed for all functions. +But there are a few functions which it is extremely convenient not to +have to declare as variadic--for example, `open' and `printf'. + + Since the prototype doesn't specify types for optional arguments, in +a call to a variadic function the "default argument promotions" are +performed on the optional argument values. This means the objects of +type `char' or `short int' (whether signed or not) are promoted to +either `int' or `unsigned int', as appropriate; and that objects of +type `float' are promoted to type `double'. So, if the caller passes a +`char' as an optional argument, it is promoted to an `int', and the +function can access it with `va_arg (AP, int)'. + + Conversion of the required arguments is controlled by the function +prototype in the usual way: the argument expression is converted to the +declared argument type as if it were being assigned to a variable of +that type. + + +File: libc.info, Node: Argument Macros, Next: Old Varargs, Prev: Calling Variadics, Up: How Variadic + +Argument Access Macros +...................... + + Here are descriptions of the macros used to retrieve variable +arguments. These macros are defined in the header file `stdarg.h'. + + - Data Type: va_list + The type `va_list' is used for argument pointer variables. + + - Macro: void va_start (va_list AP, LAST-REQUIRED) + This macro initializes the argument pointer variable AP to point + to the first of the optional arguments of the current function; + LAST-REQUIRED must be the last required argument to the function. + + *Note Old Varargs::, for an alternate definition of `va_start' + found in the header file `varargs.h'. + + - Macro: TYPE va_arg (va_list AP, TYPE) + The `va_arg' macro returns the value of the next optional argument, + and modifies the value of AP to point to the subsequent argument. + Thus, successive uses of `va_arg' return successive optional + arguments. + + The type of the value returned by `va_arg' is TYPE as specified in + the call. TYPE must be a self-promoting type (not `char' or + `short int' or `float') that matches the type of the actual + argument. + + - Macro: void va_end (va_list AP) + This ends the use of AP. After a `va_end' call, further `va_arg' + calls with the same AP may not work. You should invoke `va_end' + before returning from the function in which `va_start' was invoked + with the same AP argument. + + In the GNU C library, `va_end' does nothing, and you need not ever + use it except for reasons of portability. + + + Sometimes it is necessary to parse the list of parameters more than +once or one wants to remember a certain position in the parameter list. +To do this, one will have to make a copy of the current value of the +argument. But `va_list' is an opaque type and one cannot necessarily +assign the value of one variable of type `va_list' to another variable +of the same type. + + - Macro: void __va_copy (va_list DEST, va_list SRC) + The `__va_copy' macro allows copying of objects of type `va_list' + even if this is not an integral type. The argument pointer in + DEST is initialized to point to the same argument as the pointer + in SRC. + + This macro is a GNU extension but it will hopefully also be + available in the next update of the ISO C standard. + + If you want to use `__va_copy' you should always be prepared for the +possibility that this macro will not be available. On architectures +where a simple assignment is invalid, hopefully `__va_copy' *will* be +available, so one should always write something like this: + + { + va_list ap, save; + ... + #ifdef __va_copy + __va_copy (save, ap); + #else + save = ap; + #endif + ... + } + + +File: libc.info, Node: Variadic Example, Prev: How Variadic, Up: Variadic Functions + +Example of a Variadic Function +------------------------------ + + Here is a complete sample function that accepts a variable number of +arguments. The first argument to the function is the count of remaining +arguments, which are added up and the result returned. While trivial, +this function is sufficient to illustrate how to use the variable +arguments facility. + + #include + #include + + int + add_em_up (int count,...) + { + va_list ap; + int i, sum; + + va_start (ap, count); /* Initialize the argument list. */ + + sum = 0; + for (i = 0; i < count; i++) + sum += va_arg (ap, int); /* Get the next argument value. */ + + va_end (ap); /* Clean up. */ + return sum; + } + + int + main (void) + { + /* This call prints 16. */ + printf ("%d\n", add_em_up (3, 5, 5, 6)); + + /* This call prints 55. */ + printf ("%d\n", add_em_up (10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)); + + return 0; + } + + +File: libc.info, Node: Old Varargs, Prev: Argument Macros, Up: How Variadic + +Old-Style Variadic Functions +............................ + + Before ISO C, programmers used a slightly different facility for +writing variadic functions. The GNU C compiler still supports it; +currently, it is more portable than the ISO C facility, since support +for ISO C is still not universal. The header file which defines the +old-fashioned variadic facility is called `varargs.h'. + + Using `varargs.h' is almost the same as using `stdarg.h'. There is +no difference in how you call a variadic function; see *Note Calling +Variadics::. The only difference is in how you define them. First of +all, you must use old-style non-prototype syntax, like this: + + tree + build (va_alist) + va_dcl + { + + Secondly, you must give `va_start' only one argument, like this: + + va_list p; + va_start (p); + + These are the special macros used for defining old-style variadic +functions: + + - Macro: va_alist + This macro stands for the argument name list required in a variadic + function. + + - Macro: va_dcl + This macro declares the implicit argument or arguments for a + variadic function. + + - Macro: void va_start (va_list AP) + This macro, as defined in `varargs.h', initializes the argument + pointer variable AP to point to the first argument of the current + function. + + The other argument macros, `va_arg' and `va_end', are the same in +`varargs.h' as in `stdarg.h'; see *Note Argument Macros::, for details. + + It does not work to include both `varargs.h' and `stdarg.h' in the +same compilation; they define `va_start' in conflicting ways. + + +File: libc.info, Node: Null Pointer Constant, Next: Important Data Types, Prev: Variadic Functions, Up: Language Features + +Null Pointer Constant +===================== + + The null pointer constant is guaranteed not to point to any real +object. You can assign it to any pointer variable since it has type +`void *'. The preferred way to write a null pointer constant is with +`NULL'. + + - Macro: void * NULL + This is a null pointer constant. + + You can also use `0' or `(void *)0' as a null pointer constant, but +using `NULL' is cleaner because it makes the purpose of the constant +more evident. + + If you use the null pointer constant as a function argument, then for +complete portability you should make sure that the function has a +prototype declaration. Otherwise, if the target machine has two +different pointer representations, the compiler won't know which +representation to use for that argument. You can avoid the problem by +explicitly casting the constant to the proper pointer type, but we +recommend instead adding a prototype for the function you are calling. + + File: libc.info, Node: Important Data Types, Next: Data Type Measurements, Prev: Null Pointer Constant, Up: Language Features Important Data Types diff -adurpN glibc-2.2/manual/libc.info-49 glibc-2.2.1/manual/libc.info-49 --- glibc-2.2/manual/libc.info-49 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-49 Sun Jan 7 09:09:09 2001 @@ -439,6 +439,12 @@ how to use it. `B9600' `termios.h' (POSIX.1): *Note Line Speed::. +`char * basename (char *PATH)' + `libgen.h' (XPG): *Note Finding Tokens in a String::. + +`char * basename (const char *FILENAME)' + `string.h' (GNU): *Note Finding Tokens in a String::. + `int BC_BASE_MAX' `limits.h' (POSIX.2): *Note Utility Limits::. @@ -1024,6 +1030,9 @@ how to use it. `DIR' `dirent.h' (POSIX.1): *Note Opening a Directory::. +`char * dirname (char *PATH)' + `libgen.h' (XPG): *Note Finding Tokens in a String::. + `div_t div (int NUMERATOR, int DENOMINATOR)' `stdlib.h' (ISO): *Note Integer Division::. @@ -1496,7 +1505,8 @@ how to use it. `envz.h' (GNU): *Note Envz Functions::. `int ENXIO' - `errno.h' (POSIX.1: Device not configured): *Note Error Codes::. + `errno.h' (POSIX.1: No such device or address): *Note Error + Codes::. `int EOF' `stdio.h' (ISO): *Note EOF and Errors::. @@ -2337,6 +2347,9 @@ how to use it. `ssize_t getline (char **LINEPTR, size_t *N, FILE *STREAM)' `stdio.h' (GNU): *Note Line Input::. +`int getloadavg (double LOADAVG[], int NELEM)' + `stdlib.h' (BSD): *Note Load Average::. + `char * getlogin (void)' `unistd.h' (POSIX.1): *Note Who Logged In::. @@ -4112,13 +4125,13 @@ how to use it. `int pthread_attr_destroy (pthread_attr_t *ATTR)' `pthread.h' (POSIX): *Note Thread Attributes::. -`int pthread_attr_getATTR (const pthread_attr_t *OBJ, int *VALUE)' +`int pthread_attr_getattr (const pthread_attr_t *OBJ, int *VALUE)' `pthread.h' (POSIX): *Note Thread Attributes::. `int pthread_attr_init (pthread_attr_t *ATTR)' `pthread.h' (POSIX): *Note Thread Attributes::. -`int pthread_attr_setATTR (pthread_attr_t *OBJ, int VALUE)' +`int pthread_attr_setattr (pthread_attr_t *OBJ, int VALUE)' `pthread.h' (POSIX): *Note Thread Attributes::. `int pthread_cancel (pthread_t THREAD)' @@ -4169,6 +4182,9 @@ how to use it. `void pthread_exit (void *RETVAL)' `pthread.h' (POSIX): *Note Basic Thread Operations::. +`int pthread_getconcurrency ()' + `pthread.h' (POSIX): *Note Miscellaneous Thread Functions::. + `int pthread_getschedparam (pthread_t target_THREAD, int *POLICY, struct sched_param *PARAM)' `pthread.h' (POSIX): *Note Miscellaneous Thread Functions::. @@ -4193,14 +4209,14 @@ how to use it. `int pthread_mutexattr_destroy (pthread_mutexattr_t *ATTR)' `pthread.h' (POSIX): *Note Mutexes::. -`int pthread_mutexattr_getkind_np (const pthread_mutexattr_t *ATTR, int *KIND)' - `pthread.h' (GNU): *Note Mutexes::. +`int pthread_mutexattr_gettype (const pthread_mutexattr_t *ATTR, int *TYPE)' + `pthread.h' (POSIX): *Note Mutexes::. `int pthread_mutexattr_init (pthread_mutexattr_t *ATTR)' `pthread.h' (POSIX): *Note Mutexes::. -`int pthread_mutexattr_setkind_np (pthread_mutexattr_t *ATTR, int KIND)' - `pthread.h' (GNU): *Note Mutexes::. +`int pthread_mutexattr_settype (pthread_mutexattr_t *ATTR, int TYPE)' + `pthread.h' (POSIX): *Note Mutexes::. `int pthread_mutex_destroy (pthread_mutex_t *MUTEX)' `pthread.h' (POSIX): *Note Mutexes::. @@ -4232,6 +4248,9 @@ how to use it. `int pthread_setcanceltype (int TYPE, int *OLDTYPE)' `pthread.h' (POSIX): *Note Cancellation::. +`int pthread_setconcurrency (int LEVEL)' + `pthread.h' (POSIX): *Note Miscellaneous Thread Functions::. + `int pthread_setschedparam (pthread_t target_THREAD, int POLICY, const struct sched_param *PARAM)' `pthread.h' (POSIX): *Note Miscellaneous Thread Functions::. @@ -4324,6 +4343,12 @@ how to use it. `struct dirent * readdir (DIR *DIRSTREAM)' `dirent.h' (POSIX.1): *Note Reading/Closing Directory::. + +`struct dirent64 * readdir64 (DIR *DIRSTREAM)' + `dirent.h' (LFS): *Note Reading/Closing Directory::. + +`int readdir64_r (DIR *DIRSTREAM, struct dirent64 *ENTRY, struct dirent64 **RESULT)' + `dirent.h' (LFS): *Note Reading/Closing Directory::. `int readdir_r (DIR *DIRSTREAM, struct dirent *ENTRY, struct dirent **RESULT)' `dirent.h' (GNU): *Note Reading/Closing Directory::. diff -adurpN glibc-2.2/manual/libc.info-5 glibc-2.2.1/manual/libc.info-5 --- glibc-2.2/manual/libc.info-5 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-5 Sun Jan 7 09:09:09 2001 @@ -828,8 +828,8 @@ File: libc.info, Node: Classification o Character class determination for wide characters ================================================= - The second amendment to ISO C89 defines functions to classify wide -characters. Although the original ISO C89 standard already defined the + Amendment 1 to ISO C90 defines functions to classify wide +characters. Although the original ISO C90 standard already defined the type `wchar_t', no functions operating on them were defined. The general design of the classification functions for wide diff -adurpN glibc-2.2/manual/libc.info-50 glibc-2.2.1/manual/libc.info-50 --- glibc-2.2/manual/libc.info-50 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-50 Sun Jan 7 09:09:09 2001 @@ -46,9 +46,9 @@ installation. It is updated more freque separate tarfiles which you unpack into the top level of the source tree. Then you give `configure' the `--enable-add-ons' option to activate them, and they will be compiled into the library. As of the -2.1 release, two important components of glibc are distributed as -"official" add-ons. Unless you are doing an unusual installation, you -should get them both. +2.2 release, one important component of glibc is distributed as +"official" add-ons: the linuxthreads add-on. Unless you are doing an +unusual installation, you should get this. Support for POSIX threads is maintained by someone else, so it's in a separate package. It is only available for Linux systems, but this will @@ -76,7 +76,7 @@ Configuring and compiling GNU Libc GNU libc can be compiled in the source directory, but we strongly advise to build it in a separate build directory. For example, if you -have unpacked the glibc sources in `/src/gnu/glibc-2.1.0', create a +have unpacked the glibc sources in `/src/gnu/glibc-2.2.0', create a directory `/src/gnu/glibc-build' to put the object files in. This allows removing the whole build directory in case an error occurs, which is the safest way to get a fresh start and should always be done. @@ -84,7 +84,7 @@ which is the safest way to get a fresh s From your object directory, run the shell script `configure' found at the top level of the source tree. In the scenario above, you'd type - $ ../glibc-2.1.0/configure ARGS... + $ ../glibc-2.2.0/configure ARGS... Please note that even if you're building in a separate build directory, the compilation needs to modify a few files in the source @@ -135,6 +135,13 @@ will be used, and CFLAGS sets optimizati add-ons that you *do* want used, like this: `--enable-add-ons=linuxthreads' +`--enable-kernel=VERSION' + This option is currently only useful on Linux systems. The + VERSION parameter should have the form X.Y.Z and describes the + smallest version of the Linux kernel the generated library is + expected to support. The higher the VERSION number is, the less + compatibility code is added, and the faster the code gets. + `--with-binutils=DIRECTORY' Use the binutils (assembler and linker) in `DIRECTORY', not the ones the C compiler would default to. You could use this option if @@ -259,12 +266,12 @@ Installing the C Library ======================== To install the library and its header files, and the Info files of -the manual, type `make install'. This will build things if necessary, -before installing them. However, you should still compile everything -first. If you are installing glibc as your primary C library, we -recommend that you shut the system down to single-user mode first, and -reboot afterward. This minimizes the risk of breaking things when the -library changes out from underneath. +the manual, type `env LANGUAGE=C LC_ALL=C make install'. This will +build things if necessary, before installing them. However, you should +still compile everything first. If you are installing glibc as your +primary C library, we recommend that you shut the system down to +single-user mode first, and reboot afterward. This minimizes the risk +of breaking things when the library changes out from underneath. If you're upgrading from Linux libc5 or some other C library, you need to replace the `/usr/include' with a fresh directory before @@ -338,33 +345,26 @@ Recommended Tools for Compilation We recommend installing the following GNU tools before attempting to build the GNU C library: - * GNU `make' 3.75 + * GNU `make' 3.79 or newer You need the latest version of GNU `make'. Modifying the GNU C Library to work with other `make' programs would be so difficult that we recommend you port GNU `make' instead. *Really.* We - recommend version GNU `make' version 3.75 or 3.77. All earlier - versions have severe bugs or lack features. Version 3.76 is known - to have bugs which only show up in big projects like GNU `libc'. - Version 3.76.1 seems OK but some people have reported problems. + recommend version GNU `make' version 3.79. All earlier versions + have severe bugs or lack features. - * EGCS 1.1.1, 1.1 or 1.0.3, or GCC 2.8.1, 2.95 or newer + * GCC 2.95 or newer The GNU C library can only be compiled with the GNU C compiler - family. As of the 2.1 release, EGCS 1.0.3 or higher is required. - GCC 2.8.1 can also be used (but see the FAQ for reasons why you - might not want to). Earlier versions simply are too buggy. As of - this writing, GCC 2.95.2 is the compiler we advise to use. + family. As of the 2.2 release, GCC 2.95.2 or higher is required. + As of this writing, GCC 2.95.2 is the compiler we advise to use. You can use whatever compiler you like to compile programs that use GNU libc, but be aware that both GCC 2.7 and 2.8 have bugs in their floating-point support that may be triggered by the math library. - On Alpha machines you need at least EGCS 1.1.1. Earlier versions - don't work reliably. - - For PPC you might need some patches even on top of the last EGCS + For PPC you might need some patches even on top of the last GCC version. See the FAQ. * GNU `binutils' 2.9.1, 2.9.1.0.16, or later 2.9.1.0.x release @@ -432,19 +432,27 @@ Supported Configurations The GNU C Library currently supports configurations that match the following patterns: - alpha-*-linux + alpha*-*-linux arm-*-linux - arm-*-linuxaout - arm-*-none + hppa-*-linux iX86-*-gnu iX86-*-linux + ia64-*-linux m68k-*-linux + mips*-*-linux powerpc-*-linux + s390-*-linux sparc-*-linux sparc64-*-linux - Former releases of this library (version 1.09.1 and perhaps earlier -versions) used to run on the following configurations: + Former releases of this library (version 2.1 and/or 2.0) used to run +on the following configurations: + + arm-*-linuxaout + arm-*-none + + Very early releases (version 1.09.1 and perhaps earlier versions) +used to run on the following configurations: alpha-dec-osf1 alpha-*-linuxecoff diff -adurpN glibc-2.2/manual/libc.info-52 glibc-2.2.1/manual/libc.info-52 --- glibc-2.2/manual/libc.info-52 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-52 Sun Jan 7 09:09:09 2001 @@ -991,8 +991,8 @@ Concept Index * type modifier character (scanf): Input Conversion Syntax. * typeahead buffer: I/O Queues. * TZ environment variable: Standard Environment. -* UCS2: Extended Char Intro. -* UCS4: Extended Char Intro. +* UCS-2: Extended Char Intro. +* UCS-4: Extended Char Intro. * ulps: Errors in Math Functions. * umask: Setting Permissions. * unbuffered stream: Buffering Concepts. @@ -1019,6 +1019,7 @@ Concept Index * user name: User and Group IDs. * user signals: Miscellaneous Signals. * usual file name errors: File Name Errors. +* UTF-16: Extended Char Intro. * UTF-7: Extended Char Intro. * UTF-8: Extended Char Intro. * va_copy: Copying and Concatenation. diff -adurpN glibc-2.2/manual/libc.info-54 glibc-2.2.1/manual/libc.info-54 --- glibc-2.2/manual/libc.info-54 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-54 Sun Jan 7 09:09:09 2001 @@ -122,6 +122,7 @@ Function and Macro Index * atoi: Parsing of Integers. * atol: Parsing of Integers. * atoll: Parsing of Integers. +* basename: Finding Tokens in a String. * bcmp: String/Array Comparison. * bcopy: Copying and Concatenation. * bind: Setting Address. @@ -260,6 +261,7 @@ Function and Macro Index * DESERR_NONE: DES Encryption. * dgettext: Translation with gettext. * difftime: Elapsed Time. +* dirname: Finding Tokens in a String. * div: Integer Division. * dngettext: Advanced gettext functions. * drand48: SVID Random. @@ -455,6 +457,7 @@ Function and Macro Index * gethostname: Host Identification. * getitimer: Setting an Alarm. * getline: Line Input. +* getloadavg: Load Average. * getlogin: Who Logged In. * getmntent: mtab. * getmntent_r: mtab. @@ -817,17 +820,27 @@ Function and Macro Index * psignal: Signal Messages. * pthread_atfork: Threads and Fork. * pthread_attr_destroy: Thread Attributes. -* pthread_attr_get: Thread Attributes. +* pthread_attr_getattr: Thread Attributes. +* pthread_attr_getdetachstate: Thread Attributes. +* pthread_attr_getguardsize: Thread Attributes. * pthread_attr_getinheritsched: Thread Attributes. * pthread_attr_getschedparam: Thread Attributes. * pthread_attr_getschedpolicy: Thread Attributes. * pthread_attr_getscope: Thread Attributes. +* pthread_attr_getstack: Thread Attributes. +* pthread_attr_getstackaddr: Thread Attributes. +* pthread_attr_getstacksize: Thread Attributes. * pthread_attr_init: Thread Attributes. -* pthread_attr_set: Thread Attributes. +* pthread_attr_setattr: Thread Attributes. +* pthread_attr_setdetachstate: Thread Attributes. +* pthread_attr_setguardsize: Thread Attributes. * pthread_attr_setinheritsched: Thread Attributes. * pthread_attr_setschedparam: Thread Attributes. * pthread_attr_setschedpolicy: Thread Attributes. * pthread_attr_setscope: Thread Attributes. +* pthread_attr_setstack: Thread Attributes. +* pthread_attr_setstackaddr: Thread Attributes. +* pthread_attr_setstacksize: Thread Attributes. * pthread_cancel: Basic Thread Operations. * pthread_cleanup_pop: Cleanup Handlers. * pthread_cleanup_pop_restore_np: Cleanup Handlers. @@ -845,6 +858,7 @@ Function and Macro Index * pthread_detach: Miscellaneous Thread Functions. * pthread_equal: Miscellaneous Thread Functions. * pthread_exit: Basic Thread Operations. +* pthread_getconcurrency: Miscellaneous Thread Functions. * pthread_getschedparam: Miscellaneous Thread Functions. * pthread_getspecific: Thread-Specific Data. * pthread_join: Basic Thread Operations. @@ -859,13 +873,14 @@ Function and Macro Index * pthread_mutex_trylock: Mutexes. * pthread_mutex_unlock: Mutexes. * pthread_mutexattr_destroy: Mutexes. -* pthread_mutexattr_getkind_np: Mutexes. +* pthread_mutexattr_gettype: Mutexes. * pthread_mutexattr_init: Mutexes. -* pthread_mutexattr_setkind_np: Mutexes. +* pthread_mutexattr_settype: Mutexes. * pthread_once: Miscellaneous Thread Functions. * pthread_self: Miscellaneous Thread Functions. * pthread_setcancelstate: Cancellation. * pthread_setcanceltype: Cancellation. +* pthread_setconcurrency: Miscellaneous Thread Functions. * pthread_setschedparam: Miscellaneous Thread Functions. * pthread_setspecific: Thread-Specific Data. * pthread_sigmask: Threads and Signal Handling. @@ -894,6 +909,8 @@ Function and Macro Index * random: BSD Random. * read: I/O Primitives. * readdir: Reading/Closing Directory. +* readdir64: Reading/Closing Directory. +* readdir64_r: Reading/Closing Directory. * readdir_r: Reading/Closing Directory. * readlink: Symbolic Links. * readv: Scatter-Gather. diff -adurpN glibc-2.2/manual/libc.info-6 glibc-2.2.1/manual/libc.info-6 --- glibc-2.2/manual/libc.info-6 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-6 Sun Jan 7 09:09:09 2001 @@ -1030,179 +1030,3 @@ Compatibility String Search Functions ISO C while `rindex' is a BSD invention which never was available on System V derived systems. - -File: libc.info, Node: Finding Tokens in a String, Next: strfry, Prev: Search Functions, Up: String and Array Utilities - -Finding Tokens in a String -========================== - - It's fairly common for programs to have a need to do some simple -kinds of lexical analysis and parsing, such as splitting a command -string up into tokens. You can do this with the `strtok' function, -declared in the header file `string.h'. - - - Function: char * strtok (char *NEWSTRING, const char *DELIMITERS) - A string can be split into tokens by making a series of calls to - the function `strtok'. - - The string to be split up is passed as the NEWSTRING argument on - the first call only. The `strtok' function uses this to set up - some internal state information. Subsequent calls to get - additional tokens from the same string are indicated by passing a - null pointer as the NEWSTRING argument. Calling `strtok' with - another non-null NEWSTRING argument reinitializes the state - information. It is guaranteed that no other library function ever - calls `strtok' behind your back (which would mess up this internal - state information). - - The DELIMITERS argument is a string that specifies a set of - delimiters that may surround the token being extracted. All the - initial characters that are members of this set are discarded. - The first character that is *not* a member of this set of - delimiters marks the beginning of the next token. The end of the - token is found by looking for the next character that is a member - of the delimiter set. This character in the original string - NEWSTRING is overwritten by a null character, and the pointer to - the beginning of the token in NEWSTRING is returned. - - On the next call to `strtok', the searching begins at the next - character beyond the one that marked the end of the previous token. - Note that the set of delimiters DELIMITERS do not have to be the - same on every call in a series of calls to `strtok'. - - If the end of the string NEWSTRING is reached, or if the remainder - of string consists only of delimiter characters, `strtok' returns - a null pointer. - - *Warning:* Since `strtok' alters the string it is parsing, you -should always copy the string to a temporary buffer before parsing it -with `strtok'. If you allow `strtok' to modify a string that came from -another part of your program, you are asking for trouble; that string -might be used for other purposes after `strtok' has modified it, and it -would not have the expected value. - - The string that you are operating on might even be a constant. Then -when `strtok' tries to modify it, your program will get a fatal signal -for writing in read-only memory. *Note Program Error Signals::. Even -if the operation of `strtok' would not require a modification of the -string (e.g., if there is exactly one token) the string can (and in the -GNU libc case will) be modified. - - This is a special case of a general principle: if a part of a program -does not have as its purpose the modification of a certain data -structure, then it is error-prone to modify the data structure -temporarily. - - The function `strtok' is not reentrant. *Note Nonreentrancy::, for -a discussion of where and why reentrancy is important. - - Here is a simple example showing the use of `strtok'. - - #include - #include - - ... - - const char string[] = "words separated by spaces -- and, punctuation!"; - const char delimiters[] = " .,;:!-"; - char *token, *cp; - - ... - - cp = strdupa (string); /* Make writable copy. */ - token = strtok (cp, delimiters); /* token => "words" */ - token = strtok (NULL, delimiters); /* token => "separated" */ - token = strtok (NULL, delimiters); /* token => "by" */ - token = strtok (NULL, delimiters); /* token => "spaces" */ - token = strtok (NULL, delimiters); /* token => "and" */ - token = strtok (NULL, delimiters); /* token => "punctuation" */ - token = strtok (NULL, delimiters); /* token => NULL */ - - The GNU C library contains two more functions for tokenizing a string -which overcome the limitation of non-reentrancy. - - - Function: char * strtok_r (char *NEWSTRING, const char *DELIMITERS, - char **SAVE_PTR) - Just like `strtok', this function splits the string into several - tokens which can be accessed by successive calls to `strtok_r'. - The difference is that the information about the next token is - stored in the space pointed to by the third argument, SAVE_PTR, - which is a pointer to a string pointer. Calling `strtok_r' with a - null pointer for NEWSTRING and leaving SAVE_PTR between the calls - unchanged does the job without hindering reentrancy. - - This function is defined in POSIX.1 and can be found on many - systems which support multi-threading. - - - Function: char * strsep (char **STRING_PTR, const char *DELIMITER) - This function has a similar functionality as `strtok_r' with the - NEWSTRING argument replaced by the SAVE_PTR argument. The - initialization of the moving pointer has to be done by the user. - Successive calls to `strsep' move the pointer along the tokens - separated by DELIMITER, returning the address of the next token - and updating STRING_PTR to point to the beginning of the next - token. - - One difference between `strsep' and `strtok_r' is that if the - input string contains more than one character from DELIMITER in a - row `strsep' returns an empty string for each pair of characters - from DELIMITER. This means that a program normally should test - for `strsep' returning an empty string before processing it. - - This function was introduced in 4.3BSD and therefore is widely - available. - - Here is how the above example looks like when `strsep' is used. - - #include - #include - - ... - - const char string[] = "words separated by spaces -- and, punctuation!"; - const char delimiters[] = " .,;:!-"; - char *running; - char *token; - - ... - - running = strdupa (string); - token = strsep (&running, delimiters); /* token => "words" */ - token = strsep (&running, delimiters); /* token => "separated" */ - token = strsep (&running, delimiters); /* token => "by" */ - token = strsep (&running, delimiters); /* token => "spaces" */ - token = strsep (&running, delimiters); /* token => "" */ - token = strsep (&running, delimiters); /* token => "" */ - token = strsep (&running, delimiters); /* token => "" */ - token = strsep (&running, delimiters); /* token => "and" */ - token = strsep (&running, delimiters); /* token => "" */ - token = strsep (&running, delimiters); /* token => "punctuation" */ - token = strsep (&running, delimiters); /* token => "" */ - token = strsep (&running, delimiters); /* token => NULL */ - - -File: libc.info, Node: strfry, Next: Trivial Encryption, Prev: Finding Tokens in a String, Up: String and Array Utilities - -strfry -====== - - The function below addresses the perennial programming quandary: -"How do I take good data in string form and painlessly turn it into -garbage?" This is actually a fairly simple task for C programmers who -do not use the GNU C library string functions, but for programs based -on the GNU C library, the `strfry' function is the preferred method for -destroying string data. - - The prototype for this function is in `string.h'. - - - Function: char * strfry (char *STRING) - `strfry' creates a pseudorandom anagram of a string, replacing the - input with the anagram in place. For each position in the string, - `strfry' swaps it with a position in the string selected at random - (from a uniform distribution). The two positions may be the same. - - The return value of `strfry' is always STRING. - - *Portability Note:* This function is unique to the GNU C library. - - diff -adurpN glibc-2.2/manual/libc.info-7 glibc-2.2.1/manual/libc.info-7 --- glibc-2.2/manual/libc.info-7 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-7 Sun Jan 7 09:09:09 2001 @@ -32,6 +32,249 @@ entitled "GNU Library General Public Lic accuracy by the Foundation.  +File: libc.info, Node: Finding Tokens in a String, Next: strfry, Prev: Search Functions, Up: String and Array Utilities + +Finding Tokens in a String +========================== + + It's fairly common for programs to have a need to do some simple +kinds of lexical analysis and parsing, such as splitting a command +string up into tokens. You can do this with the `strtok' function, +declared in the header file `string.h'. + + - Function: char * strtok (char *NEWSTRING, const char *DELIMITERS) + A string can be split into tokens by making a series of calls to + the function `strtok'. + + The string to be split up is passed as the NEWSTRING argument on + the first call only. The `strtok' function uses this to set up + some internal state information. Subsequent calls to get + additional tokens from the same string are indicated by passing a + null pointer as the NEWSTRING argument. Calling `strtok' with + another non-null NEWSTRING argument reinitializes the state + information. It is guaranteed that no other library function ever + calls `strtok' behind your back (which would mess up this internal + state information). + + The DELIMITERS argument is a string that specifies a set of + delimiters that may surround the token being extracted. All the + initial characters that are members of this set are discarded. + The first character that is *not* a member of this set of + delimiters marks the beginning of the next token. The end of the + token is found by looking for the next character that is a member + of the delimiter set. This character in the original string + NEWSTRING is overwritten by a null character, and the pointer to + the beginning of the token in NEWSTRING is returned. + + On the next call to `strtok', the searching begins at the next + character beyond the one that marked the end of the previous token. + Note that the set of delimiters DELIMITERS do not have to be the + same on every call in a series of calls to `strtok'. + + If the end of the string NEWSTRING is reached, or if the remainder + of string consists only of delimiter characters, `strtok' returns + a null pointer. + + *Warning:* Since `strtok' alters the string it is parsing, you +should always copy the string to a temporary buffer before parsing it +with `strtok'. If you allow `strtok' to modify a string that came from +another part of your program, you are asking for trouble; that string +might be used for other purposes after `strtok' has modified it, and it +would not have the expected value. + + The string that you are operating on might even be a constant. Then +when `strtok' tries to modify it, your program will get a fatal signal +for writing in read-only memory. *Note Program Error Signals::. Even +if the operation of `strtok' would not require a modification of the +string (e.g., if there is exactly one token) the string can (and in the +GNU libc case will) be modified. + + This is a special case of a general principle: if a part of a program +does not have as its purpose the modification of a certain data +structure, then it is error-prone to modify the data structure +temporarily. + + The function `strtok' is not reentrant. *Note Nonreentrancy::, for +a discussion of where and why reentrancy is important. + + Here is a simple example showing the use of `strtok'. + + #include + #include + + ... + + const char string[] = "words separated by spaces -- and, punctuation!"; + const char delimiters[] = " .,;:!-"; + char *token, *cp; + + ... + + cp = strdupa (string); /* Make writable copy. */ + token = strtok (cp, delimiters); /* token => "words" */ + token = strtok (NULL, delimiters); /* token => "separated" */ + token = strtok (NULL, delimiters); /* token => "by" */ + token = strtok (NULL, delimiters); /* token => "spaces" */ + token = strtok (NULL, delimiters); /* token => "and" */ + token = strtok (NULL, delimiters); /* token => "punctuation" */ + token = strtok (NULL, delimiters); /* token => NULL */ + + The GNU C library contains two more functions for tokenizing a string +which overcome the limitation of non-reentrancy. + + - Function: char * strtok_r (char *NEWSTRING, const char *DELIMITERS, + char **SAVE_PTR) + Just like `strtok', this function splits the string into several + tokens which can be accessed by successive calls to `strtok_r'. + The difference is that the information about the next token is + stored in the space pointed to by the third argument, SAVE_PTR, + which is a pointer to a string pointer. Calling `strtok_r' with a + null pointer for NEWSTRING and leaving SAVE_PTR between the calls + unchanged does the job without hindering reentrancy. + + This function is defined in POSIX.1 and can be found on many + systems which support multi-threading. + + - Function: char * strsep (char **STRING_PTR, const char *DELIMITER) + This function has a similar functionality as `strtok_r' with the + NEWSTRING argument replaced by the SAVE_PTR argument. The + initialization of the moving pointer has to be done by the user. + Successive calls to `strsep' move the pointer along the tokens + separated by DELIMITER, returning the address of the next token + and updating STRING_PTR to point to the beginning of the next + token. + + One difference between `strsep' and `strtok_r' is that if the + input string contains more than one character from DELIMITER in a + row `strsep' returns an empty string for each pair of characters + from DELIMITER. This means that a program normally should test + for `strsep' returning an empty string before processing it. + + This function was introduced in 4.3BSD and therefore is widely + available. + + Here is how the above example looks like when `strsep' is used. + + #include + #include + + ... + + const char string[] = "words separated by spaces -- and, punctuation!"; + const char delimiters[] = " .,;:!-"; + char *running; + char *token; + + ... + + running = strdupa (string); + token = strsep (&running, delimiters); /* token => "words" */ + token = strsep (&running, delimiters); /* token => "separated" */ + token = strsep (&running, delimiters); /* token => "by" */ + token = strsep (&running, delimiters); /* token => "spaces" */ + token = strsep (&running, delimiters); /* token => "" */ + token = strsep (&running, delimiters); /* token => "" */ + token = strsep (&running, delimiters); /* token => "" */ + token = strsep (&running, delimiters); /* token => "and" */ + token = strsep (&running, delimiters); /* token => "" */ + token = strsep (&running, delimiters); /* token => "punctuation" */ + token = strsep (&running, delimiters); /* token => "" */ + token = strsep (&running, delimiters); /* token => NULL */ + + - Function: char * basename (const char *FILENAME) + The GNU version of the `basename' function returns the last + component of the path in FILENAME. This function is the prefered + usage, since it does not modify the argument, FILENAME, and + respects trailing slashes. The prototype for `basename' can be + found in `string.h'. Note, this function is overriden by the XPG + version, if `libgen.h' is included. + + Example of using GNU `basename': + + #include + + int + main (int argc, char *argv[]) + { + char *prog = basename (argv[0]); + + if (argc < 2) + { + fprintf (stderr, "Usage %s \n", prog); + exit (1); + } + + ... + } + + *Portability Note:* This function may produce different results on + different systems. + + + - Function: char * basename (char *PATH) + This is the standard XPG defined `basename'. It is similar in + spirit to the GNU version, but may modify the PATH by removing + trailing '/' characters. If the PATH is made up entirely of '/' + characters, then "/" will be returned. Also, if PATH is `NULL' or + an empty string, then "." is returned. The prototype for the XPG + version can be found in `libgen.h'. + + Example of using XPG `basename': + + #include + + int + main (int argc, char *argv[]) + { + char *prog; + char *path = strdupa (argv[0]); + + prog = basename (path); + + if (argc < 2) + { + fprintf (stderr, "Usage %s \n", prog); + exit (1); + } + + ... + + } + + - Function: char * dirname (char *PATH) + The `dirname' function is the compliment to the XPG version of + `basename'. It returns the parent directory of the file specified + by PATH. If PATH is `NULL', an empty string, or contains no '/' + characters, then "." is returned. The prototype for this function + can be found in `libgen.h'. + + +File: libc.info, Node: strfry, Next: Trivial Encryption, Prev: Finding Tokens in a String, Up: String and Array Utilities + +strfry +====== + + The function below addresses the perennial programming quandary: +"How do I take good data in string form and painlessly turn it into +garbage?" This is actually a fairly simple task for C programmers who +do not use the GNU C library string functions, but for programs based +on the GNU C library, the `strfry' function is the preferred method for +destroying string data. + + The prototype for this function is in `string.h'. + + - Function: char * strfry (char *STRING) + `strfry' creates a pseudorandom anagram of a string, replacing the + input with the anagram in place. For each position in the string, + `strfry' swaps it with a position in the string selected at random + (from a uniform distribution). The two positions may be the same. + + The return value of `strfry' is always STRING. + + *Portability Note:* This function is unique to the GNU C library. + + + File: libc.info, Node: Trivial Encryption, Next: Encode Binary Data, Prev: strfry, Up: String and Array Utilities Trivial Encryption @@ -412,7 +655,7 @@ character. The limitations of this appr more people grappled with non-Roman character sets, where not all the characters that make up a language's character set can be represented by 2^8 choices. This chapter shows the functionality which was added -to the C library to correctly support multiple character sets. +to the C library to support multiple character sets. * Menu: @@ -444,13 +687,13 @@ through whatever communication channel. representations include files lying in a directory that are going to be read and parsed. - Traditionally there was no difference between the two + Traditionally there has been no difference between the two representations. It was equally comfortable and useful to use the same -one-byte representation internally and externally. This changes with -more and larger character sets. +single-byte representation internally and externally. This changes +with more and larger character sets. One of the problems to overcome with the internal representation is -handling text which is externally encoded using different character +handling text that is externally encoded using different character sets. Assume a program which reads two texts and compares them using some metric. The comparison can be usefully done only if the texts are internally kept in a common format. @@ -463,11 +706,24 @@ four bytes seem not to be necessary). As shown in some other part of this manual, there exists a completely new family of functions which can handle texts of this kind -in memory. The most commonly used character set for such internal wide -character representations are Unicode and ISO 10646. The former is a -subset of the latter and used when wide characters are chosen to by 2 -bytes (= 16 bits) wide. The standard names of the encodings used in -these cases are UCS2 (= 16 bits) and UCS4 (= 32 bits). +in memory. The most commonly used character sets for such internal +wide character representations are Unicode and ISO 10646 (also known as +UCS for Universal Character Set). Unicode was originally planned as a +16-bit character set, whereas ISO 10646 was designed to be a 31-bit +large code space. The two standards are practically identical. They +have the same character repertoire and code table, but Unicode specifies +added semantics. At the moment, only characters in the first `0x10000' +code positions (the so-called Basic Multilingual Plane, BMP) have been +assigned, but the assignment of more specialized characters outside this +16-bit space is already in progress. A number of encodings have been +defined for Unicode and ISO 10646 characters: UCS-2 is a 16-bit word +that can only represent characters from the BMP, UCS-4 is a 32-bit word +than can represent any Unicode and ISO 10646 character, UTF-8 is an +ASCII compatible encoding where ASCII characters are represented by +ASCII bytes and non-ASCII characters by sequences of 2-6 non-ASCII +bytes, and finally UTF-16 is an extension of UCS-2 in which pairs of +certain UCS-2 words can be used to encode non-BMP characters up to +`0x10ffff'. To represent wide characters the `char' type is not suitable. For this reason the ISO C standard introduces a new type which is designed @@ -483,18 +739,19 @@ functions which take a single wide chara The ISO C90 standard, where this type was introduced, does not say anything specific about the representation. It only requires that - this type is capable to store all elements of the basic character - set. Therefore it would be legitimate to define `wchar_t' as - `char'. This might make sense for embedded systems. + this type is capable of storing all elements of the basic + character set. Therefore it would be legitimate to define + `wchar_t' as `char'. This might make sense for embedded systems. But for GNU systems this type is always 32 bits wide. It is - therefore capable to represent all UCS4 value therefore covering - all of ISO 10646. Some Unix systems define `wchar_t' as a 16 bit - type and thereby follow Unicode very strictly. This is perfectly - fine with the standard but it also means that to represent all - characters from Unicode and ISO 10646 one has to use surrogate - character which is in fact a multi-wide-character encoding. But - this contradicts the purpose of the `wchar_t' type. + therefore capable of representing all UCS-4 values and therefore + covering all of ISO 10646. Some Unix systems define `wchar_t' as + a 16-bit type and thereby follow Unicode very strictly. This is + perfectly fine with the standard but it also means that to + represent all characters from Unicode and ISO 10646 one has to use + UTF-16 surrogate characters which is in fact a + multi-wide-character encoding. But this contradicts the purpose + of the `wchar_t' type. - Data type: wint_t `wint_t' is a data type used for parameters and variables which @@ -505,8 +762,8 @@ functions which take a single wide chara defined as `char' the type `wint_t' must be defined as `int' due to the parameter promotion. - This type is defined in `wchar.h' and got introduced in the second - amendment to ISO C90. + This type is defined in `wchar.h' and got introduced in + Amendment 1 to ISO C90. As there are for the `char' data type there also exist macros specifying the minimum and maximum value representable in an object of @@ -516,13 +773,13 @@ type `wchar_t'. The macro `WCHAR_MIN' evaluates to the minimum value representable by an object of type `wint_t'. - This macro got introduced in the second amendment to ISO C90. + This macro got introduced in Amendment 1 to ISO C90. - Macro: wint_t WCHAR_MAX - The macro `WCHAR_MIN' evaluates to the maximum value representable + The macro `WCHAR_MAX' evaluates to the maximum value representable by an object of type `wint_t'. - This macro got introduced in the second amendment to ISO C90. + This macro got introduced in Amendment 1 to ISO C90. Another special wide character value is the equivalent to `EOF'. @@ -551,8 +808,8 @@ type `wchar_t'. ... } - This macro was introduced in the second amendment to ISO C90 and is - defined in `wchar.h'. + This macro was introduced in Amendment 1 to ISO C90 and is defined + in `wchar.h'. These internal representations present problems when it comes to storing and transmittal, since a single wide character consists of more @@ -565,22 +822,22 @@ characters often require more storage sp oriented character set. For all the above reasons, an external encoding which is different -from the internal encoding is often used if the latter is UCS2 or UCS4. -The external encoding is byte-based and can be chosen appropriately for -the environment and for the texts to be handled. There exist a variety -of different character sets which can be used for this external -encoding. Information which will not be exhaustively presented -here-instead, a description of the major groups will suffice. All of -the ASCII-based character sets [_bkoz_: do you mean Roman character -sets? If not, what do you mean here?] fulfill one requirement: they are -"filesystem safe". This means that the character `'/'' is used in the -encoding *only* to represent itself. Things are a bit different for -character sets like EBCDIC (Extended Binary Coded Decimal Interchange -Code, a character set family used by IBM) but if the operation system -does not understand EBCDIC directly the parameters to system calls have -to be converted first anyhow. +from the internal encoding is often used if the latter is UCS-2 or +UCS-4. The external encoding is byte-based and can be chosen +appropriately for the environment and for the texts to be handled. +There exist a variety of different character sets which can be used for +this external encoding. Information which will not be exhaustively +presented here-instead, a description of the major groups will suffice. +All of the ASCII-based character sets [_bkoz_: do you mean Roman +character sets? If not, what do you mean here?] fulfill one +requirement: they are "filesystem safe". This means that the character +`'/'' is used in the encoding *only* to represent itself. Things are a +bit different for character sets like EBCDIC (Extended Binary Coded +Decimal Interchange Code, a character set family used by IBM) but if the +operation system does not understand EBCDIC directly the parameters to +system calls have to be converted first anyhow. - * The simplest character sets are one-byte character sets. There + * The simplest character sets are single-byte character sets. There can be only up to 256 characters (for 8 bit character sets) which is not sufficient to cover all languages but might be sufficient to handle a specific text. Another reason to choose this is @@ -602,7 +859,7 @@ to be converted first anyhow. the byte sequence of a character one can interpret a text correctly. Examples of character sets using this policy are the various EUC character sets (used by Sun's operations systems, - EUC-JP, EUC-KR, EUC-TW, and EUC-CN) or SJIS (Shift JIS, a Japanese + EUC-JP, EUC-KR, EUC-TW, and EUC-CN) or SJIS (Shift-JIS, a Japanese encoding). But there are also character sets using a state which is valid for @@ -617,24 +874,25 @@ to be converted first anyhow. characters to get the desired result. E.g., the byte sequence `0xc2 0x61' (non-spacing acute accent, following by lower-case `a') to get the "small a with acute" character. To get the acute - accent character on its on one has to write `0xc2 0x20' (the + accent character on its own, one has to write `0xc2 0x20' (the non-spacing acute followed by a space). - This type of characters sets is quite frequently used in embedded - systems such as video text. + This type of character set is used in some embedded systems such as + teletex. - * Instead of converting the Unicode or ISO 10646 text used internally - it is often also sufficient to simply use an encoding different - than UCS2/UCS4. The Unicode and ISO 10646 standards even specify - such an encoding: UTF-8. This encoding is able to represent all - of ISO 10464 31 bits in a byte string of length one to seven. + * Instead of converting the Unicode or ISO 10646 text used + internally, it is often also sufficient to simply use an encoding + different than UCS-2/UCS-4. The Unicode and ISO 10646 standards + even specify such an encoding: UTF-8. This encoding is able to + represent all of ISO 10464 31 bits in a byte string of length one + to six. There were a few other attempts to encode ISO 10646 such as UTF-7 but UTF-8 is today the only encoding which should be used. In - fact, UTF-8 will hopefully soon be the only external which has to - be supported. It proves to be universally usable and the only - disadvantage is that it favor Roman languages very much by making - the byte string representation of other scripts (Cyrillic, Greek, + fact, UTF-8 will hopefully soon be the only external encoding that + has to be supported. It proves to be universally usable and the + only disadvantage is that it favors Roman languages by making the + byte string representation of other scripts (Cyrillic, Greek, Asian scripts) longer than necessary if using a specific character set for these scripts. Methods like the Unicode compression scheme can alleviate these problems. @@ -657,15 +915,15 @@ adequately are a thing of the past. One final comment about the choice of the wide character representation is necessary at this point. We have said above that the -natural choice is using Unicode or ISO 10646. This is not specified in -any standard, though. The ISO C standard does not specify anything -specific about the `wchar_t' type. There might be systems where the -developers decided differently. Therefore one should as much as -possible avoid making assumption about the wide character representation -although GNU systems will always work as described above. If the -programmer uses only the functions provided by the C library to handle -wide character strings there should not be any compatibility problems -with other systems. +natural choice is using Unicode or ISO 10646. This is not required, +but at least encouraged, by the ISO C standard. The standard defines +at least a macro `__STDC_ISO_10646__' that is only defined on systems +where the `wchar_t' type encodes ISO 10646 characters. If this symbol +is not defined one should as much as possible avoid making assumption +about the wide character representation. If the programmer uses only +the functions provided by the C library to handle wide character +strings there should not be any compatibility problems with other +systems.  File: libc.info, Node: Charset Function Overview, Next: Restartable multibyte conversion, Prev: Extended Char Intro, Up: Character Set Handling @@ -686,8 +944,8 @@ developing libraries (as opposed to appl The second family of functions got introduced in the early Unix standards (XPG2) and is still part of the latest and greatest Unix standard: Unix 98. It is also the most powerful and useful set of -functions. But we will start with the functions defined in the second -amendment to ISO C90. +functions. But we will start with the functions defined in Amendment 1 +to ISO C90.  File: libc.info, Node: Restartable multibyte conversion, Next: Non-reentrant Conversion, Prev: Charset Function Overview, Up: Character Set Handling @@ -742,7 +1000,7 @@ Selecting the conversion and its propert the functions we are about to describe. Each locale uses its own character set (given as an argument to `localedef') and this is the one assumed as the external multibyte encoding. The wide character -character set always is UCS4, at least on GNU systems. +character set always is UCS-4, at least on GNU systems. A characteristic of each multibyte character set is the maximum number of bytes which can be necessary to represent one character. This @@ -807,8 +1065,8 @@ the functions to another. about the "shift state" needed from one call to a conversion function to another. - This type is defined in `wchar.h'. It got introduced in the second - amendment to ISO C90. + This type is defined in `wchar.h'. It got introduced in + Amendment 1 to ISO C90. To use objects of this type the programmer has to define such objects (normally as local variables on the stack) and pass a pointer to the @@ -840,8 +1098,8 @@ sequence points. Communication protocol object is in the initial state the return value is nonzero. Otherwise it is zero. - This function was introduced in the second amendment to ISO C90 and - is declared in `wchar.h'. + This function was introduced in Amendment 1 to ISO C90 and is + declared in `wchar.h'. Code using this function often looks similar to this: diff -adurpN glibc-2.2/manual/libc.info-8 glibc-2.2.1/manual/libc.info-8 --- glibc-2.2/manual/libc.info-8 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-8 Sun Jan 7 09:09:09 2001 @@ -61,8 +61,8 @@ to 127. which the state information is taken and the function also does not use any static state. - This function was introduced in the second amendment of ISO C90 and - is declared in `wchar.h'. + This function was introduced in Amendment 1 to ISO C90 and is + declared in `wchar.h'. Despite the limitation that the single byte value always is interpreted in the initial state this function is actually useful most @@ -103,8 +103,8 @@ There also is a function for the convers the return value of this function is this character. Otherwise the return value is `EOF'. - This function was introduced in the second amendment of ISO C90 and - is declared in `wchar.h'. + This function was introduced in Amendment 1 to ISO C90 and is + declared in `wchar.h'. There are more general functions to convert single character from multibyte representation to wide characters and vice versa. These @@ -147,8 +147,8 @@ and they also do not require it to be in returns `(size_t) -1'. The conversion state is afterwards undefined. - This function was introduced in the second amendment to ISO C90 and - is declared in `wchar.h'. + This function was introduced in Amendment 1 to ISO C90 and is + declared in `wchar.h'. Using this function is straight forward. A function which copies a multibyte string into a wide character string while at the same time @@ -164,8 +164,9 @@ checking, and leaks sometimes memory): wchar_t *wcp = result; wchar_t tmp[1]; mbstate_t state; - memset (&state, '\0', sizeof (state)); size_t nbytes; + + memset (&state, '\0', sizeof (state)); while ((nbytes = mbrtowc (tmp, s, len, &state)) > 0) { if (nbytes >= (size_t) -2) @@ -220,8 +221,8 @@ the work. the object pointed to by PS. If PS is a null pointer, a state object local to `mbrlen' is used. - This function was introduced in the second amendment to ISO C90 and - is declared in `wchar.h'. + This function was introduced in Amendment 1 to ISO C90 and is + declared in `wchar.h'. The tentative reader now will of course note that `mbrlen' can be implemented as @@ -313,8 +314,8 @@ before doing the work twice. single character. So the caller has to make sure that there is enough space available, otherwise buffer overruns can occur. - This function was introduced in the second amendment to ISO C and - is declared in `wchar.h'. + This function was introduced in Amendment 1 to ISO C90 and is + declared in `wchar.h'. Using this function is as easy as using `mbrtowc'. The following example appends a wide character string to a multibyte character string. @@ -442,8 +443,8 @@ which can help in some important situati (if the NUL byte in the input string was reached) or the address of the byte following the last converted multibyte character. - This function was introduced in the second amendment to ISO C and - is declared in `wchar.h'. + This function was introduced in Amendment 1 to ISO C90 and is + declared in `wchar.h'. The definition of this function has one limitation which has to be understood. The requirement that DST has to be a NUL terminated string @@ -519,8 +520,8 @@ the line length and passing this length conversion. The state is the initial shift state in case the terminating NUL wide character was converted. - This function was introduced in the second amendment to ISO C and - is declared in `wchar.h'. + This function was introduced in Amendment 1 to ISO C90 and is + declared in `wchar.h'. The restriction mentions above for the `mbsrtowcs' function applies also here. There is no possibility to directly control the number of @@ -690,10 +691,11 @@ File: libc.info, Node: Non-reentrant Co Non-reentrant Conversion Function ================================= - The functions described in the last chapter are defined in the second -amendment to ISO C90. But the original ISO C90 standard also contained -functions for character set conversion. The reason that they are not -described in the first place is that they are almost entirely useless. + The functions described in the last chapter are defined in +Amendment 1 to ISO C90. But the original ISO C90 standard also +contained functions for character set conversion. The reason that they +are not described in the first place is that they are almost entirely +useless. The problem is that all the functions for conversion defined in ISO C90 use a local state. This implies that multiple conversions at @@ -822,8 +824,8 @@ Non-reentrant Conversion of Strings For convenience reasons the ISO C90 standard defines also functions to convert entire strings instead of single characters. These functions -suffer from the same problems as their reentrant counterparts from the -second amendment to ISO C90; see *Note Converting Strings::. +suffer from the same problems as their reentrant counterparts from +Amendment 1 to ISO C90; see *Note Converting Strings::. - Function: size_t mbstowcs (wchar_t *WSTRING, const char *STRING, size_t SIZE) @@ -959,7 +961,7 @@ common that they operate on character se specified by the functions. The multibyte encoding used is specified by the currently selected locale for the `LC_CTYPE' category. The wide character set is fixed by the implementation (in the case of GNU C -library it always is UCS4 encoded ISO 10646. +library it always is UCS-4 encoded ISO 10646. This has of course several problems when it comes to general character conversion: diff -adurpN glibc-2.2/manual/libc.info-9 glibc-2.2.1/manual/libc.info-9 --- glibc-2.2/manual/libc.info-9 Fri Jun 30 23:38:28 2000 +++ glibc-2.2.1/manual/libc.info-9 Sun Jan 7 09:09:09 2001 @@ -256,12 +256,12 @@ then we run into the problems discussed int result = 0; iconv_t cd; - cd = iconv_open ("UCS4", charset); + cd = iconv_open ("UCS-4", charset); if (cd == (iconv_t) -1) { /* Something went wrong. */ if (errno == EINVAL) - error (0, 0, "conversion from `%s' to `UCS4' no available", + error (0, 0, "conversion from '%s' to 'UCS-4' not available", charset); else perror ("iconv_open"); @@ -460,7 +460,7 @@ will succeed but how to find B? Unfortunately, the answer is: there is no general solution. On some systems guessing might help. On those systems most character sets can -convert to and from UTF8 encoded ISO 10646 or Unicode text. Beside +convert to and from UTF-8 encoded ISO 10646 or Unicode text. Beside this only some very system-specific methods can help. Since the conversion functions come from loadable modules and these modules must be stored somewhere in the filesystem, one *could* try to find them and diff -adurpN glibc-2.2/manual/libc.pg glibc-2.2.1/manual/libc.pg --- glibc-2.2/manual/libc.pg Thu Sep 7 12:04:42 2000 +++ glibc-2.2.1/manual/libc.pg Sun Jan 7 09:11:50 2001 @@ -14,25 +14,23 @@ \entry{errno.h}{15}{\code {errno.h}} \entry{errno.h}{16}{\code {errno.h}} \entry{errno.h}{16}{\code {errno.h}} -\entry{stdlib.h}{32}{\code {stdlib.h}} -\entry{stdlib.h}{33}{\code {stdlib.h}} \entry{stdlib.h}{34}{\code {stdlib.h}} \entry{stdlib.h}{35}{\code {stdlib.h}} \entry{stdlib.h}{36}{\code {stdlib.h}} -\entry{malloc.h}{37}{\code {malloc.h}} -\entry{mcheck.h}{37}{\code {mcheck.h}} +\entry{stdlib.h}{37}{\code {stdlib.h}} +\entry{stdlib.h}{38}{\code {stdlib.h}} \entry{malloc.h}{39}{\code {malloc.h}} -\entry{malloc.h}{42}{\code {malloc.h}} -\entry{obstack.h}{48}{\code {obstack.h}} -\entry{stdlib.h}{58}{\code {stdlib.h}} +\entry{mcheck.h}{39}{\code {mcheck.h}} +\entry{malloc.h}{41}{\code {malloc.h}} +\entry{malloc.h}{44}{\code {malloc.h}} +\entry{obstack.h}{50}{\code {obstack.h}} +\entry{stdlib.h}{60}{\code {stdlib.h}} \entry{ctype.h}{67}{\code {ctype.h}} \entry{ctype.h}{67}{\code {ctype.h}} \entry{ctype.h}{69}{\code {ctype.h}} \entry{wctype.h}{70}{\code {wctype.h}} \entry{wctype.h}{70}{\code {wctype.h}} \entry{wctype.h}{70}{\code {wctype.h}} -\entry{wctype.h}{70}{\code {wctype.h}} -\entry{wctype.h}{71}{\code {wctype.h}} \entry{wctype.h}{71}{\code {wctype.h}} \entry{wctype.h}{71}{\code {wctype.h}} \entry{wctype.h}{71}{\code {wctype.h}} @@ -42,11 +40,240 @@ \entry{wctype.h}{72}{\code {wctype.h}} \entry{wctype.h}{72}{\code {wctype.h}} \entry{wctype.h}{72}{\code {wctype.h}} -\entry{wctype.h}{74}{\code {wctype.h}} -\entry{wctype.h}{74}{\code {wctype.h}} +\entry{wctype.h}{73}{\code {wctype.h}} +\entry{wctype.h}{73}{\code {wctype.h}} \entry{wctype.h}{74}{\code {wctype.h}} \entry{wctype.h}{74}{\code {wctype.h}} \entry{wctype.h}{75}{\code {wctype.h}} +\entry{wctype.h}{75}{\code {wctype.h}} +\entry{wctype.h}{75}{\code {wctype.h}} \entry{string.h}{78}{\code {string.h}} \entry{string.h}{79}{\code {string.h}} \entry{string.h}{87}{\code {string.h}} +\entry{string.h}{89}{\code {string.h}} +\entry{string.h}{92}{\code {string.h}} +\entry{string.h}{95}{\code {string.h}} +\entry{string.h}{99}{\code {string.h}} +\entry{argz.h}{102}{\code {argz.h}} +\entry{envz.h}{104}{\code {envz.h}} +\entry{wchar.h}{106}{\code {wchar.h}} +\entry{wchar.h}{107}{\code {wchar.h}} +\entry{limits.h}{110}{\code {limits.h}} +\entry{stdlib.h}{110}{\code {stdlib.h}} +\entry{wchar.h}{111}{\code {wchar.h}} +\entry{wchar.h}{111}{\code {wchar.h}} +\entry{wchar.h}{112}{\code {wchar.h}} +\entry{wchar.h}{113}{\code {wchar.h}} +\entry{wchar.h}{113}{\code {wchar.h}} +\entry{wchar.h}{115}{\code {wchar.h}} +\entry{wchar.h}{116}{\code {wchar.h}} +\entry{wchar.h}{118}{\code {wchar.h}} +\entry{wchar.h}{119}{\code {wchar.h}} +\entry{stdlib.h}{124}{\code {stdlib.h}} +\entry{iconv.h}{128}{\code {iconv.h}} +\entry{iconv.h}{129}{\code {iconv.h}} +\entry{iconv.h}{130}{\code {iconv.h}} +\entry{gconv.h}{137}{\code {gconv.h}} +\entry{locale.h}{151}{\code {locale.h}} +\entry{locale.h}{154}{\code {locale.h}} +\entry{stdlib.h}{192}{\code {stdlib.h}} +\entry{stdlib.h}{192}{\code {stdlib.h}} +\entry{fnmatch.h}{201}{\code {fnmatch.h}} +\entry{stdio.h}{225}{\code {stdio.h}} +\entry{stdio.h}{225}{\code {stdio.h}} +\entry{stdio.h}{226}{\code {stdio.h}} +\entry{stdio.h}{229}{\code {stdio.h}} +\entry{stdio.h}{231}{\code {stdio.h}} +\entry{stdio.h}{235}{\code {stdio.h}} +\entry{stdio.h}{244}{\code {stdio.h}} +\entry{stdio.h}{247}{\code {stdio.h}} +\entry{printf.h}{252}{\code {printf.h}} +\entry{printf.h}{252}{\code {printf.h}} +\entry{stdio.h}{264}{\code {stdio.h}} +\entry{stdio.h}{265}{\code {stdio.h}} +\entry{stdio.h}{267}{\code {stdio.h}} +\entry{stdio.h}{270}{\code {stdio.h}} +\entry{stdio.h}{272}{\code {stdio.h}} +\entry{stdio.h}{273}{\code {stdio.h}} +\entry{stdio.h}{275}{\code {stdio.h}} +\entry{stdio.h}{278}{\code {stdio.h}} +\entry{unistd.h}{285}{\code {unistd.h}} +\entry{fcntl.h}{285}{\code {fcntl.h}} +\entry{unistd.h}{288}{\code {unistd.h}} +\entry{stdio.h}{295}{\code {stdio.h}} +\entry{unistd.h}{295}{\code {unistd.h}} +\entry{sys/types.h}{302}{\code {sys/types.h}} +\entry{fcntl.h}{317}{\code {fcntl.h}} +\entry{unistd.h}{318}{\code {unistd.h}} +\entry{fcntl.h}{318}{\code {fcntl.h}} +\entry{fcntl.h}{320}{\code {fcntl.h}} +\entry{fcntl.h}{321}{\code {fcntl.h}} +\entry{fcntl.h}{327}{\code {fcntl.h}} +\entry{fcntl.h}{329}{\code {fcntl.h}} +\entry{cd}{333}{\code {cd}} +\entry{unistd.h}{333}{\code {unistd.h}} +\entry{dirent.h}{335}{\code {dirent.h}} +\entry{dirent.h}{336}{\code {dirent.h}} +\entry{dirent.h}{336}{\code {dirent.h}} +\entry{dirent.h}{339}{\code {dirent.h}} +\entry{unistd.h}{345}{\code {unistd.h}} +\entry{unistd.h}{346}{\code {unistd.h}} +\entry{unistd.h}{348}{\code {unistd.h}} +\entry{unistd.h}{348}{\code {unistd.h}} +\entry{stdio.h}{348}{\code {stdio.h}} +\entry{mkdir}{350}{\code {mkdir}} +\entry{sys/stat.h}{350}{\code {sys/stat.h}} +\entry{ls}{350}{\code {ls}} +\entry{sys/stat.h}{351}{\code {sys/stat.h}} +\entry{sys/stat.h}{356}{\code {sys/stat.h}} +\entry{chown}{358}{\code {chown}} +\entry{chgrp}{358}{\code {chgrp}} +\entry{unistd.h}{358}{\code {unistd.h}} +\entry{sys/stat.h}{359}{\code {sys/stat.h}} +\entry{umask}{361}{\code {umask}} +\entry{sys/stat.h}{361}{\code {sys/stat.h}} +\entry{unistd.h}{363}{\code {unistd.h}} +\entry{unistd.h}{364}{\code {unistd.h}} +\entry{time.h}{364}{\code {time.h}} +\entry{utime.h}{364}{\code {utime.h}} +\entry{sys/time.h}{365}{\code {sys/time.h}} +\entry{sys/stat.h}{368}{\code {sys/stat.h}} +\entry{stdio.h}{369}{\code {stdio.h}} +\entry{unistd.h}{373}{\code {unistd.h}} +\entry{sys/stat.h}{377}{\code {sys/stat.h}} +\entry{sys/socket.h}{380}{\code {sys/socket.h}} +\entry{sys/socket.h}{382}{\code {sys/socket.h}} +\entry{sys/socket.h}{383}{\code {sys/socket.h}} +\entry{sys/socket.h}{383}{\code {sys/socket.h}} +\entry{sys/socket.h}{385}{\code {sys/socket.h}} +\entry{sys/un.h}{385}{\code {sys/un.h}} +\entry{sys/socket.h}{387}{\code {sys/socket.h}} +\entry{netinet/in.h}{388}{\code {netinet/in.h}} +\entry{netinet/in.h}{390}{\code {netinet/in.h}} +\entry{arpa/inet.h}{391}{\code {arpa/inet.h}} +\entry{/etc/hosts}{393}{\code {/etc/hosts}} +\entry{netdb.h}{393}{\code {netdb.h}} +\entry{netinet/in.h}{397}{\code {netinet/in.h}} +\entry{/etc/services}{397}{\code {/etc/services}} +\entry{netdb.h}{397}{\code {netdb.h}} +\entry{netinet/in.h}{399}{\code {netinet/in.h}} +\entry{/etc/protocols}{399}{\code {/etc/protocols}} +\entry{netdb.h}{399}{\code {netdb.h}} +\entry{sys/socket.h}{402}{\code {sys/socket.h}} +\entry{sys/socket.h}{403}{\code {sys/socket.h}} +\entry{sys/socket.h}{403}{\code {sys/socket.h}} +\entry{sys/socket.h}{408}{\code {sys/socket.h}} +\entry{sys/socket.h}{409}{\code {sys/socket.h}} +\entry{sys/socket.h}{410}{\code {sys/socket.h}} +\entry{sys/socket.h}{417}{\code {sys/socket.h}} +\entry{sys/socket.h}{422}{\code {sys/socket.h}} +\entry{sys/socket.h}{423}{\code {sys/socket.h}} +\entry{/etc/networks}{424}{\code {/etc/networks}} +\entry{netdb.h}{424}{\code {netdb.h}} +\entry{unistd.h}{427}{\code {unistd.h}} +\entry{termios.h}{429}{\code {termios.h}} +\entry{stdlib.h}{451}{\code {stdlib.h}} +\entry{math.h}{463}{\code {math.h}} +\entry{complex.h}{463}{\code {complex.h}} +\entry{stdlib.h}{482}{\code {stdlib.h}} +\entry{stdlib.h}{482}{\code {stdlib.h}} +\entry{stdint.h}{489}{\code {stdint.h}} +\entry{stdlib.h}{490}{\code {stdlib.h}} +\entry{math.h}{492}{\code {math.h}} +\entry{math.h}{503}{\code {math.h}} +\entry{stdlib.h}{503}{\code {stdlib.h}} +\entry{math.h}{504}{\code {math.h}} +\entry{math.h}{505}{\code {math.h}} +\entry{complex.h}{511}{\code {complex.h}} +\entry{complex.h}{511}{\code {complex.h}} +\entry{stdlib.h}{512}{\code {stdlib.h}} +\entry{stdlib.h}{516}{\code {stdlib.h}} +\entry{time.h}{523}{\code {time.h}} +\entry{sys/times.h}{524}{\code {sys/times.h}} +\entry{time.h}{526}{\code {time.h}} +\entry{sys/time.h}{526}{\code {sys/time.h}} +\entry{sys/timex.h}{531}{\code {sys/timex.h}} +\entry{time.h}{534}{\code {time.h}} +\entry{time.h}{547}{\code {time.h}} +\entry{/etc/localtime}{548}{\code {/etc/localtime}} +\entry{localtime}{548}{\code {localtime}} +\entry{/share/lib/zoneinfo}{548}{\code {/share/lib/zoneinfo}} +\entry{zoneinfo}{548}{\code {zoneinfo}} +\entry{unistd.h}{551}{\code {unistd.h}} +\entry{sys/time.h}{551}{\code {sys/time.h}} +\entry{sys/resource.h}{555}{\code {sys/resource.h}} +\entry{sys/vtimes.h}{556}{\code {sys/vtimes.h}} +\entry{sys/resource.h}{558}{\code {sys/resource.h}} +\entry{ulimit.h}{560}{\code {ulimit.h}} +\entry{sys/vlimit.h}{561}{\code {sys/vlimit.h}} +\entry{sys/resource.h}{568}{\code {sys/resource.h}} +\entry{setjmp.h}{572}{\code {setjmp.h}} +\entry{setjmp.h}{573}{\code {setjmp.h}} +\entry{signal.h}{577}{\code {signal.h}} +\entry{kill}{580}{\code {kill}} +\entry{string.h}{586}{\code {string.h}} +\entry{stdio.h}{586}{\code {stdio.h}} +\entry{signal.h}{586}{\code {signal.h}} +\entry{signal.h}{588}{\code {signal.h}} +\entry{signal.h}{591}{\code {signal.h}} +\entry{signal.h}{604}{\code {signal.h}} +\entry{signal.h}{605}{\code {signal.h}} +\entry{signal.h}{609}{\code {signal.h}} +\entry{signal.h}{610}{\code {signal.h}} +\entry{signal.h}{613}{\code {signal.h}} +\entry{signal.h}{620}{\code {signal.h}} +\entry{unistd.h}{625}{\code {unistd.h}} +\entry{argp.h}{632}{\code {argp.h}} +\entry{stdlib.h}{658}{\code {stdlib.h}} +\entry{stdlib.h}{664}{\code {stdlib.h}} +\entry{stdlib.h}{666}{\code {stdlib.h}} +\entry{unistd.h}{666}{\code {unistd.h}} +\entry{sh}{669}{\code {sh}} +\entry{stdlib.h}{669}{\code {stdlib.h}} +\entry{sys/types.h}{670}{\code {sys/types.h}} +\entry{unistd.h}{670}{\code {unistd.h}} +\entry{unistd.h}{671}{\code {unistd.h}} +\entry{unistd.h}{672}{\code {unistd.h}} +\entry{sys/wait.h}{674}{\code {sys/wait.h}} +\entry{sys/wait.h}{677}{\code {sys/wait.h}} +\entry{sys/wait.h}{678}{\code {sys/wait.h}} +\entry{stdio.h}{696}{\code {stdio.h}} +\entry{unistd.h}{696}{\code {unistd.h}} +\entry{sys/types.h}{696}{\code {sys/types.h}} +\entry{-lbsd-compat}{697}{\code {-lbsd-compat}} +\entry{bsd-compat}{697}{\code {bsd-compat}} +\entry{unistd.h}{698}{\code {unistd.h}} +\entry{sys/types.h}{698}{\code {sys/types.h}} +\entry{unistd.h}{713}{\code {unistd.h}} +\entry{sys/types.h}{713}{\code {sys/types.h}} +\entry{unistd.h}{714}{\code {unistd.h}} +\entry{sys/types.h}{714}{\code {sys/types.h}} +\entry{unistd.h}{715}{\code {unistd.h}} +\entry{sys/types.h}{715}{\code {sys/types.h}} +\entry{grp.h}{716}{\code {grp.h}} +\entry{stdio.h}{720}{\code {stdio.h}} +\entry{unistd.h}{720}{\code {unistd.h}} +\entry{utmp.h}{721}{\code {utmp.h}} +\entry{utmpx.h}{726}{\code {utmpx.h}} +\entry{utmp.h}{728}{\code {utmp.h}} +\entry{/etc/passwd}{729}{\code {/etc/passwd}} +\entry{pwd.h}{729}{\code {pwd.h}} +\entry{/etc/group}{732}{\code {/etc/group}} +\entry{grp.h}{732}{\code {grp.h}} +\entry{hostname}{739}{\code {hostname}} +\entry{hostid}{739}{\code {hostid}} +\entry{unistd.h}{739}{\code {unistd.h}} +\entry{sys/param.h}{740}{\code {sys/param.h}} +\entry{sys/utsname.h}{741}{\code {sys/utsname.h}} +\entry{limits.h}{755}{\code {limits.h}} +\entry{unistd.h}{756}{\code {unistd.h}} +\entry{limits.h}{767}{\code {limits.h}} +\entry{unistd.h}{769}{\code {unistd.h}} +\entry{unistd.h}{769}{\code {unistd.h}} +\entry{assert.h}{807}{\code {assert.h}} +\entry{stdarg.h}{810}{\code {stdarg.h}} +\entry{stdarg.h}{812}{\code {stdarg.h}} +\entry{varargs.h}{814}{\code {varargs.h}} +\entry{stddef.h}{815}{\code {stddef.h}} +\entry{limits.h}{816}{\code {limits.h}} +\entry{float.h}{819}{\code {float.h}} diff -adurpN glibc-2.2/manual/libc.pgs glibc-2.2.1/manual/libc.pgs --- glibc-2.2/manual/libc.pgs Fri Jun 30 23:40:47 2000 +++ glibc-2.2.1/manual/libc.pgs Sun Jan 7 09:11:17 2001 @@ -1,102 +1,102 @@ \initial {-} -\entry {\code {-lbsd-compat}}{8, 699} +\entry {\code {-lbsd-compat}}{8, 697} \initial {/} -\entry {\code {/etc/group}}{734} -\entry {\code {/etc/hosts}}{395} -\entry {\code {/etc/localtime}}{550} -\entry {\code {/etc/networks}}{426} -\entry {\code {/etc/passwd}}{731} -\entry {\code {/etc/protocols}}{401} -\entry {\code {/etc/services}}{399} -\entry {\code {/share/lib/zoneinfo}}{550} +\entry {\code {/etc/group}}{732} +\entry {\code {/etc/hosts}}{393} +\entry {\code {/etc/localtime}}{548} +\entry {\code {/etc/networks}}{424} +\entry {\code {/etc/passwd}}{729} +\entry {\code {/etc/protocols}}{399} +\entry {\code {/etc/services}}{397} +\entry {\code {/share/lib/zoneinfo}}{548} \initial {A} -\entry {\code {argp.h}}{634} -\entry {\code {argz.h}}{100} -\entry {\code {arpa/inet.h}}{394} -\entry {\code {assert.h}}{809} +\entry {\code {argp.h}}{632} +\entry {\code {argz.h}}{102} +\entry {\code {arpa/inet.h}}{391} +\entry {\code {assert.h}}{807} \initial {B} -\entry {\code {bsd-compat}}{8, 699} +\entry {\code {bsd-compat}}{8, 697} \initial {C} -\entry {\code {cd}}{335} -\entry {\code {chgrp}}{359} -\entry {\code {chown}}{359} -\entry {\code {complex.h}}{465, 513} +\entry {\code {cd}}{333} +\entry {\code {chgrp}}{358} +\entry {\code {chown}}{358} +\entry {\code {complex.h}}{463, 511} \entry {\code {ctype.h}}{67, 69} \initial {D} -\entry {\code {dirent.h}}{7, 337, 338, 340} +\entry {\code {dirent.h}}{7, 335, 336, 339} \initial {E} -\entry {\code {envz.h}}{103} +\entry {\code {envz.h}}{104} \entry {\code {errno.h}}{15, 16} \initial {F} -\entry {\code {fcntl.h}}{7, 287, 319, 320, 322, 323, 329, 331} -\entry {\code {float.h}}{821} -\entry {\code {fnmatch.h}}{203} +\entry {\code {fcntl.h}}{7, 285, 317, 318, 320, 321, 327, 329} +\entry {\code {float.h}}{819} +\entry {\code {fnmatch.h}}{201} \initial {G} \entry {\code {gcc}}{2} \entry {\code {gconv.h}}{137} -\entry {\code {grp.h}}{7, 718, 734} +\entry {\code {grp.h}}{7, 716, 732} \initial {H} -\entry {\code {hostid}}{741} -\entry {\code {hostname}}{741} +\entry {\code {hostid}}{739} +\entry {\code {hostname}}{739} \initial {I} \entry {\code {iconv.h}}{128, 129, 130} \initial {K} -\entry {\code {kill}}{582} +\entry {\code {kill}}{580} \initial {L} -\entry {\code {limits.h}}{7, 110, 757, 769, 818} +\entry {\code {limits.h}}{7, 110, 755, 767, 816} \entry {\code {locale.h}}{151, 154} -\entry {\code {localtime}}{550} -\entry {\code {ls}}{352} +\entry {\code {localtime}}{548} +\entry {\code {ls}}{350} \initial {M} \entry {\code {malloc.h}}{39, 41, 44} -\entry {\code {math.h}}{465, 494, 505, 506, 507} +\entry {\code {math.h}}{463, 492, 503, 504, 505} \entry {\code {mcheck.h}}{39} -\entry {\code {mkdir}}{351} +\entry {\code {mkdir}}{350} \initial {N} -\entry {\code {netdb.h}}{395, 399, 402, 426} -\entry {\code {netinet/in.h}}{390, 393, 399, 401} +\entry {\code {netdb.h}}{393, 397, 399, 424} +\entry {\code {netinet/in.h}}{388, 390, 397, 399} \initial {O} \entry {\code {obstack.h}}{50} \initial {P} -\entry {\code {printf.h}}{253, 254} -\entry {\code {pwd.h}}{7, 731} +\entry {\code {printf.h}}{252} +\entry {\code {pwd.h}}{7, 729} \initial {S} -\entry {\code {setjmp.h}}{574, 575} -\entry {\code {sh}}{671} -\entry {\code {signal.h}}{7, 579, 588, 590, 593, 606, 607, 611, 612, 615, 622} -\entry {\code {stdarg.h}}{812, 814} -\entry {\code {stddef.h}}{817} -\entry {\code {stdint.h}}{491} -\entry {\code {stdio.h}}{227, 228, 231, 233, 237, 246, 249, 266, 267, 269, 272, 274, 276, 279, 297, 350, 370, 588, 698, 722} -\entry {\code {stdlib.h}}{34, 35, 36, 37, 38, 60, 110, 124, 194, 453, 484, 492, 505, 514, 518, 660, 666, 668, 671} -\entry {\code {string.h}}{78, 79, 87, 89, 92, 95, 98, 588} -\entry {\code {sys/param.h}}{742} -\entry {\code {sys/resource.h}}{557, 560, 570} -\entry {\code {sys/socket.h}}{382, 384, 385, 387, 389, 404, 405, 410, 411, 412, 419, 424, 425} -\entry {\code {sys/stat.h}}{7, 352, 358, 360, 363, 369, 378} -\entry {\code {sys/time.h}}{367, 528, 553} -\entry {\code {sys/times.h}}{7, 526} -\entry {\code {sys/timex.h}}{533} -\entry {\code {sys/types.h}}{304, 672, 698, 700, 715, 716, 717} -\entry {\code {sys/un.h}}{388} -\entry {\code {sys/utsname.h}}{743} -\entry {\code {sys/vlimit.h}}{563} -\entry {\code {sys/vtimes.h}}{558} -\entry {\code {sys/wait.h}}{676, 679, 680} +\entry {\code {setjmp.h}}{572, 573} +\entry {\code {sh}}{669} +\entry {\code {signal.h}}{7, 577, 586, 588, 591, 604, 605, 609, 610, 613, 620} +\entry {\code {stdarg.h}}{810, 812} +\entry {\code {stddef.h}}{815} +\entry {\code {stdint.h}}{489} +\entry {\code {stdio.h}}{225, 226, 229, 231, 235, 244, 247, 264, 265, 267, 270, 272, 273, 275, 278, 295, 348, 369, 586, 696, 720} +\entry {\code {stdlib.h}}{34, 35, 36, 37, 38, 60, 110, 124, 192, 451, 482, 490, 503, 512, 516, 658, 664, 666, 669} +\entry {\code {string.h}}{78, 79, 87, 89, 92, 95, 99, 586} +\entry {\code {sys/param.h}}{740} +\entry {\code {sys/resource.h}}{555, 558, 568} +\entry {\code {sys/socket.h}}{380, 382, 383, 385, 387, 402, 403, 408, 409, 410, 417, 422, 423} +\entry {\code {sys/stat.h}}{7, 350, 351, 356, 359, 361, 368, 377} +\entry {\code {sys/time.h}}{365, 526, 551} +\entry {\code {sys/times.h}}{7, 524} +\entry {\code {sys/timex.h}}{531} +\entry {\code {sys/types.h}}{302, 670, 696, 698, 713, 714, 715} +\entry {\code {sys/un.h}}{385} +\entry {\code {sys/utsname.h}}{741} +\entry {\code {sys/vlimit.h}}{561} +\entry {\code {sys/vtimes.h}}{556} +\entry {\code {sys/wait.h}}{674, 677, 678} \initial {T} -\entry {\code {termios.h}}{7, 431} -\entry {\code {time.h}}{366, 525, 528, 536, 549} +\entry {\code {termios.h}}{7, 429} +\entry {\code {time.h}}{364, 523, 526, 534, 547} \initial {U} -\entry {\code {ulimit.h}}{562} -\entry {\code {umask}}{363} -\entry {\code {unistd.h}}{287, 290, 297, 320, 335, 347, 348, 349, 350, 359, 365, 375, 429, 553, 627, 668, 672, 673, 674, 698, 700, 715, 716, 717, 722, 741, 758, 771} -\entry {\code {utime.h}}{366} -\entry {\code {utmp.h}}{723, 730} -\entry {\code {utmpx.h}}{728} +\entry {\code {ulimit.h}}{560} +\entry {\code {umask}}{361} +\entry {\code {unistd.h}}{285, 288, 295, 318, 333, 345, 346, 348, 358, 363, 364, 373, 427, 551, 625, 666, 670, 671, 672, 696, 698, 713, 714, 715, 720, 739, 756, 769} +\entry {\code {utime.h}}{364} +\entry {\code {utmp.h}}{721, 728} +\entry {\code {utmpx.h}}{726} \initial {V} -\entry {\code {varargs.h}}{816} +\entry {\code {varargs.h}}{814} \initial {W} -\entry {\code {wchar.h}}{106, 107, 110, 111, 112, 113, 115, 116, 118, 119} +\entry {\code {wchar.h}}{106, 107, 111, 112, 113, 115, 116, 118, 119} \entry {\code {wctype.h}}{70, 71, 72, 73, 74, 75} \initial {Z} -\entry {\code {zoneinfo}}{550} +\entry {\code {zoneinfo}}{548} diff -adurpN glibc-2.2/manual/libc.tp glibc-2.2.1/manual/libc.tp --- glibc-2.2/manual/libc.tp Thu Sep 7 12:04:42 2000 +++ glibc-2.2.1/manual/libc.tp Sun Jan 7 09:11:50 2001 @@ -1,5 +1,124 @@ -\entry{enum mcheck{\_}status}{38}{\code {enum mcheck_status}} -\entry{struct mallinfo}{42}{\code {struct mallinfo}} -\entry{struct obstack}{48}{\code {struct obstack}} +\entry{enum mcheck{\_}status}{40}{\code {enum mcheck_status}} +\entry{struct mallinfo}{44}{\code {struct mallinfo}} +\entry{struct obstack}{50}{\code {struct obstack}} \entry{wctype{\_}t}{70}{\code {wctype_t}} \entry{wctrans{\_}t}{74}{\code {wctrans_t}} +\entry{wchar{\_}t}{106}{\code {wchar_t}} +\entry{wint{\_}t}{106}{\code {wint_t}} +\entry{mbstate{\_}t}{111}{\code {mbstate_t}} +\entry{iconv{\_}t}{127}{\code {iconv_t}} +\entry{struct {\_}{\_}gconv{\_}step}{137}{\code {struct __gconv_step}} +\entry{struct {\_}{\_}gconv{\_}step{\_}data}{138}{\code {struct __gconv_step_data}} +\entry{struct lconv}{154}{\code {struct lconv}} +\entry{comparison{\_}fn{\_}t}{191}{\code {comparison_fn_t}} +\entry{struct ENTRY}{197}{\code {struct ENTRY}} +\entry{VISIT}{200}{\code {VISIT}} +\entry{glob{\_}t}{202}{\code {glob_t}} +\entry{regex{\_}t}{207}{\code {regex_t}} +\entry{regmatch{\_}t}{210}{\code {regmatch_t}} +\entry{regoff{\_}t}{210}{\code {regoff_t}} +\entry{wordexp{\_}t}{213}{\code {wordexp_t}} +\entry{FILE}{225}{\code {FILE}} +\entry{struct printf{\_}info}{252}{\code {struct printf_info}} +\entry{printf{\_}function}{254}{\code {printf_function}} +\entry{printf{\_}arginfo{\_}function}{254}{\code {printf_arginfo_function}} +\entry{fpos{\_}t}{270}{\code {fpos_t}} +\entry{fpos64{\_}t}{270}{\code {fpos64_t}} +\entry{cookie{\_}io{\_}functions{\_}t}{278}{\code {cookie_io_functions_t}} +\entry{cookie{\_}read{\_}function}{279}{\code {cookie_read_function}} +\entry{cookie{\_}write{\_}function}{279}{\code {cookie_write_function}} +\entry{cookie{\_}seek{\_}function}{279}{\code {cookie_seek_function}} +\entry{cookie{\_}close{\_}function}{279}{\code {cookie_close_function}} +\entry{ssize{\_}t}{288}{\code {ssize_t}} +\entry{off{\_}t}{294}{\code {off_t}} +\entry{off64{\_}t}{294}{\code {off64_t}} +\entry{struct iovec}{297}{\code {struct iovec}} +\entry{fd{\_}set}{302}{\code {fd_set}} +\entry{struct aiocb}{306}{\code {struct aiocb}} +\entry{struct aiocb64}{307}{\code {struct aiocb64}} +\entry{struct aioinit}{316}{\code {struct aioinit}} +\entry{struct flock}{327}{\code {struct flock}} +\entry{struct dirent}{335}{\code {struct dirent}} +\entry{DIR}{336}{\code {DIR}} +\entry{{\_}{\_}ftw{\_}func{\_}t}{342}{\code {__ftw_func_t}} +\entry{{\_}{\_}ftw64{\_}func{\_}t}{342}{\code {__ftw64_func_t}} +\entry{{\_}{\_}nftw{\_}func{\_}t}{342}{\code {__nftw_func_t}} +\entry{{\_}{\_}nftw64{\_}func{\_}t}{343}{\code {__nftw64_func_t}} +\entry{struct FTW}{343}{\code {struct FTW}} +\entry{struct stat}{351}{\code {struct stat}} +\entry{struct stat64}{352}{\code {struct stat64}} +\entry{mode{\_}t}{354}{\code {mode_t}} +\entry{ino{\_}t}{354}{\code {ino_t}} +\entry{ino64{\_}t}{354}{\code {ino64_t}} +\entry{dev{\_}t}{354}{\code {dev_t}} +\entry{nlink{\_}t}{354}{\code {nlink_t}} +\entry{blkcnt{\_}t}{354}{\code {blkcnt_t}} +\entry{blkcnt64{\_}t}{354}{\code {blkcnt64_t}} +\entry{struct utimbuf}{365}{\code {struct utimbuf}} +\entry{struct sockaddr}{382}{\code {struct sockaddr}} +\entry{struct if{\_}nameindex}{384}{\code {struct if_nameindex}} +\entry{struct sockaddr{\_}un}{386}{\code {struct sockaddr_un}} +\entry{struct sockaddr{\_}in}{388}{\code {struct sockaddr_in}} +\entry{struct sockaddr{\_}in6}{388}{\code {struct sockaddr_in6}} +\entry{struct in{\_}addr}{391}{\code {struct in_addr}} +\entry{struct in6{\_}addr}{391}{\code {struct in6_addr}} +\entry{struct hostent}{393}{\code {struct hostent}} +\entry{struct servent}{397}{\code {struct servent}} +\entry{struct protoent}{400}{\code {struct protoent}} +\entry{struct linger}{424}{\code {struct linger}} +\entry{struct netent}{424}{\code {struct netent}} +\entry{struct termios}{429}{\code {struct termios}} +\entry{tcflag{\_}t}{430}{\code {tcflag_t}} +\entry{cc{\_}t}{430}{\code {cc_t}} +\entry{speed{\_}t}{440}{\code {speed_t}} +\entry{struct sgttyb}{447}{\code {struct sgttyb}} +\entry{div{\_}t}{490}{\code {div_t}} +\entry{ldiv{\_}t}{491}{\code {ldiv_t}} +\entry{lldiv{\_}t}{491}{\code {lldiv_t}} +\entry{imaxdiv{\_}t}{491}{\code {imaxdiv_t}} +\entry{struct timeval}{522}{\code {struct timeval}} +\entry{struct timespec}{522}{\code {struct timespec}} +\entry{clock{\_}t}{524}{\code {clock_t}} +\entry{struct tms}{524}{\code {struct tms}} +\entry{time{\_}t}{526}{\code {time_t}} +\entry{struct timezone}{527}{\code {struct timezone}} +\entry{struct tm}{529}{\code {struct tm}} +\entry{struct ntptimeval}{531}{\code {struct ntptimeval}} +\entry{struct ntptimeval}{531}{\code {struct ntptimeval}} +\entry{struct timex}{532}{\code {struct timex}} +\entry{struct timex}{532}{\code {struct timex}} +\entry{struct itimerval}{551}{\code {struct itimerval}} +\entry{struct rusage}{555}{\code {struct rusage}} +\entry{struct vtimes}{557}{\code {struct vtimes}} +\entry{struct rlimit}{558}{\code {struct rlimit}} +\entry{struct rlimit64}{559}{\code {struct rlimit64}} +\entry{struct sched{\_}param}{565}{\code {struct sched_param}} +\entry{jmp{\_}buf}{572}{\code {jmp_buf}} +\entry{sigjmp{\_}buf}{573}{\code {sigjmp_buf}} +\entry{sighandler{\_}t}{586}{\code {sighandler_t}} +\entry{struct sigaction}{589}{\code {struct sigaction}} +\entry{sig{\_}atomic{\_}t}{602}{\code {sig_atomic_t}} +\entry{sigset{\_}t}{609}{\code {sigset_t}} +\entry{struct sigaltstack}{618}{\code {struct sigaltstack}} +\entry{struct sigstack}{619}{\code {struct sigstack}} +\entry{struct sigvec}{620}{\code {struct sigvec}} +\entry{struct option}{628}{\code {struct option}} +\entry{struct argp}{633}{\code {struct argp}} +\entry{struct argp{\_}option}{634}{\code {struct argp_option}} +\entry{struct argp{\_}state}{641}{\code {struct argp_state}} +\entry{struct argp{\_}child}{642}{\code {struct argp_child}} +\entry{pid{\_}t}{670}{\code {pid_t}} +\entry{union wait}{678}{\code {union wait}} +\entry{uid{\_}t}{713}{\code {uid_t}} +\entry{gid{\_}t}{713}{\code {gid_t}} +\entry{struct exit{\_}status}{721}{\code {struct exit_status}} +\entry{struct utmp}{721}{\code {struct utmp}} +\entry{struct utmpx}{726}{\code {struct utmpx}} +\entry{struct passwd}{729}{\code {struct passwd}} +\entry{struct group}{732}{\code {struct group}} +\entry{struct utsname}{741}{\code {struct utsname}} +\entry{struct fstab}{743}{\code {struct fstab}} +\entry{struct mntent}{745}{\code {struct mntent}} +\entry{va{\_}list}{812}{\code {va_list}} +\entry{ptrdiff{\_}t}{815}{\code {ptrdiff_t}} +\entry{size{\_}t}{815}{\code {size_t}} diff -adurpN glibc-2.2/manual/libc.tps glibc-2.2.1/manual/libc.tps --- glibc-2.2/manual/libc.tps Fri Jun 30 23:40:47 2000 +++ glibc-2.2.1/manual/libc.tps Sun Jan 7 09:11:17 2001 @@ -1,142 +1,142 @@ \initial {{\_}} -\entry {\code {__ftw_func_t}}{343} -\entry {\code {__ftw64_func_t}}{344} -\entry {\code {__nftw_func_t}}{344} -\entry {\code {__nftw64_func_t}}{344} +\entry {\code {__ftw_func_t}}{342} +\entry {\code {__ftw64_func_t}}{342} +\entry {\code {__nftw_func_t}}{342} +\entry {\code {__nftw64_func_t}}{343} \initial {B} -\entry {\code {blkcnt_t}}{356} -\entry {\code {blkcnt64_t}}{356} +\entry {\code {blkcnt_t}}{354} +\entry {\code {blkcnt64_t}}{354} \initial {C} -\entry {\code {cc_t}}{432} -\entry {\code {clock_t}}{526} -\entry {\code {comparison_fn_t}}{193} -\entry {\code {cookie_close_function}}{281} -\entry {\code {cookie_io_functions_t}}{279} -\entry {\code {cookie_read_function}}{281} -\entry {\code {cookie_seek_function}}{281} -\entry {\code {cookie_write_function}}{281} +\entry {\code {cc_t}}{430} +\entry {\code {clock_t}}{524} +\entry {\code {comparison_fn_t}}{191} +\entry {\code {cookie_close_function}}{279} +\entry {\code {cookie_io_functions_t}}{278} +\entry {\code {cookie_read_function}}{279} +\entry {\code {cookie_seek_function}}{279} +\entry {\code {cookie_write_function}}{279} \initial {D} -\entry {\code {dev_t}}{355} -\entry {\code {DIR}}{338} -\entry {\code {div_t}}{492} +\entry {\code {dev_t}}{354} +\entry {\code {DIR}}{336} +\entry {\code {div_t}}{490} \initial {E} \entry {\code {enum mcheck_status}}{40} \initial {F} -\entry {\code {fd_set}}{304} -\entry {\code {FILE}}{227} -\entry {\code {fpos_t}}{272} -\entry {\code {fpos64_t}}{272} +\entry {\code {fd_set}}{302} +\entry {\code {FILE}}{225} +\entry {\code {fpos_t}}{270} +\entry {\code {fpos64_t}}{270} \initial {G} -\entry {\code {gid_t}}{715} -\entry {\code {glob_t}}{204} +\entry {\code {gid_t}}{713} +\entry {\code {glob_t}}{202} \initial {I} \entry {\code {iconv_t}}{127} -\entry {\code {imaxdiv_t}}{493} -\entry {\code {ino_t}}{355} -\entry {\code {ino64_t}}{355} +\entry {\code {imaxdiv_t}}{491} +\entry {\code {ino_t}}{354} +\entry {\code {ino64_t}}{354} \initial {J} -\entry {\code {jmp_buf}}{574} +\entry {\code {jmp_buf}}{572} \initial {L} -\entry {\code {ldiv_t}}{493} -\entry {\code {lldiv_t}}{493} +\entry {\code {ldiv_t}}{491} +\entry {\code {lldiv_t}}{491} \initial {M} -\entry {\code {mbstate_t}}{110} -\entry {\code {mode_t}}{355} +\entry {\code {mbstate_t}}{111} +\entry {\code {mode_t}}{354} \initial {N} -\entry {\code {nlink_t}}{356} +\entry {\code {nlink_t}}{354} \initial {O} -\entry {\code {off_t}}{296} -\entry {\code {off64_t}}{296} +\entry {\code {off_t}}{294} +\entry {\code {off64_t}}{294} \initial {P} -\entry {\code {pid_t}}{672} -\entry {\code {printf_arginfo_function}}{256} -\entry {\code {printf_function}}{256} -\entry {\code {ptrdiff_t}}{817} +\entry {\code {pid_t}}{670} +\entry {\code {printf_arginfo_function}}{254} +\entry {\code {printf_function}}{254} +\entry {\code {ptrdiff_t}}{815} \initial {R} -\entry {\code {regex_t}}{209} -\entry {\code {regmatch_t}}{212} -\entry {\code {regoff_t}}{212} +\entry {\code {regex_t}}{207} +\entry {\code {regmatch_t}}{210} +\entry {\code {regoff_t}}{210} \initial {S} -\entry {\code {sig_atomic_t}}{604} -\entry {\code {sighandler_t}}{588} -\entry {\code {sigjmp_buf}}{575} -\entry {\code {sigset_t}}{611} -\entry {\code {size_t}}{817} -\entry {\code {speed_t}}{442} -\entry {\code {ssize_t}}{290} +\entry {\code {sig_atomic_t}}{602} +\entry {\code {sighandler_t}}{586} +\entry {\code {sigjmp_buf}}{573} +\entry {\code {sigset_t}}{609} +\entry {\code {size_t}}{815} +\entry {\code {speed_t}}{440} +\entry {\code {ssize_t}}{288} \entry {\code {struct __gconv_step}}{137} \entry {\code {struct __gconv_step_data}}{138} -\entry {\code {struct aiocb}}{308} -\entry {\code {struct aiocb64}}{309} -\entry {\code {struct aioinit}}{318} -\entry {\code {struct argp}}{635} -\entry {\code {struct argp_child}}{644} -\entry {\code {struct argp_option}}{636} -\entry {\code {struct argp_state}}{642} -\entry {\code {struct dirent}}{337} -\entry {\code {struct ENTRY}}{199} -\entry {\code {struct exit_status}}{723} -\entry {\code {struct flock}}{329} -\entry {\code {struct fstab}}{745} -\entry {\code {struct FTW}}{344} -\entry {\code {struct group}}{734} -\entry {\code {struct hostent}}{395} -\entry {\code {struct if_nameindex}}{386} -\entry {\code {struct in_addr}}{393} -\entry {\code {struct in6_addr}}{393} -\entry {\code {struct iovec}}{299} -\entry {\code {struct itimerval}}{553} +\entry {\code {struct aiocb}}{306} +\entry {\code {struct aiocb64}}{307} +\entry {\code {struct aioinit}}{316} +\entry {\code {struct argp}}{633} +\entry {\code {struct argp_child}}{642} +\entry {\code {struct argp_option}}{634} +\entry {\code {struct argp_state}}{641} +\entry {\code {struct dirent}}{335} +\entry {\code {struct ENTRY}}{197} +\entry {\code {struct exit_status}}{721} +\entry {\code {struct flock}}{327} +\entry {\code {struct fstab}}{743} +\entry {\code {struct FTW}}{343} +\entry {\code {struct group}}{732} +\entry {\code {struct hostent}}{393} +\entry {\code {struct if_nameindex}}{384} +\entry {\code {struct in_addr}}{391} +\entry {\code {struct in6_addr}}{391} +\entry {\code {struct iovec}}{297} +\entry {\code {struct itimerval}}{551} \entry {\code {struct lconv}}{154} -\entry {\code {struct linger}}{426} +\entry {\code {struct linger}}{424} \entry {\code {struct mallinfo}}{44} -\entry {\code {struct mntent}}{747} -\entry {\code {struct netent}}{426} -\entry {\code {struct ntptimeval}}{533} +\entry {\code {struct mntent}}{745} +\entry {\code {struct netent}}{424} +\entry {\code {struct ntptimeval}}{531} \entry {\code {struct obstack}}{50} -\entry {\code {struct option}}{630} -\entry {\code {struct passwd}}{731} -\entry {\code {struct printf_info}}{254} -\entry {\code {struct protoent}}{402} -\entry {\code {struct rlimit}}{560} -\entry {\code {struct rlimit64}}{561} -\entry {\code {struct rusage}}{557} -\entry {\code {struct sched_param}}{567} -\entry {\code {struct servent}}{399} -\entry {\code {struct sgttyb}}{449} -\entry {\code {struct sigaction}}{591} -\entry {\code {struct sigaltstack}}{620} -\entry {\code {struct sigstack}}{621} -\entry {\code {struct sigvec}}{622} -\entry {\code {struct sockaddr}}{384} -\entry {\code {struct sockaddr_in}}{390} -\entry {\code {struct sockaddr_in6}}{390} -\entry {\code {struct sockaddr_un}}{388} -\entry {\code {struct stat}}{352} -\entry {\code {struct stat64}}{354} -\entry {\code {struct termios}}{431} -\entry {\code {struct timespec}}{524} -\entry {\code {struct timeval}}{524} -\entry {\code {struct timex}}{534} -\entry {\code {struct timezone}}{529} -\entry {\code {struct tm}}{531} -\entry {\code {struct tms}}{526} -\entry {\code {struct utimbuf}}{366} -\entry {\code {struct utmp}}{723} -\entry {\code {struct utmpx}}{728} -\entry {\code {struct utsname}}{743} -\entry {\code {struct vtimes}}{559} +\entry {\code {struct option}}{628} +\entry {\code {struct passwd}}{729} +\entry {\code {struct printf_info}}{252} +\entry {\code {struct protoent}}{400} +\entry {\code {struct rlimit}}{558} +\entry {\code {struct rlimit64}}{559} +\entry {\code {struct rusage}}{555} +\entry {\code {struct sched_param}}{565} +\entry {\code {struct servent}}{397} +\entry {\code {struct sgttyb}}{447} +\entry {\code {struct sigaction}}{589} +\entry {\code {struct sigaltstack}}{618} +\entry {\code {struct sigstack}}{619} +\entry {\code {struct sigvec}}{620} +\entry {\code {struct sockaddr}}{382} +\entry {\code {struct sockaddr_in}}{388} +\entry {\code {struct sockaddr_in6}}{388} +\entry {\code {struct sockaddr_un}}{386} +\entry {\code {struct stat}}{351} +\entry {\code {struct stat64}}{352} +\entry {\code {struct termios}}{429} +\entry {\code {struct timespec}}{522} +\entry {\code {struct timeval}}{522} +\entry {\code {struct timex}}{532} +\entry {\code {struct timezone}}{527} +\entry {\code {struct tm}}{529} +\entry {\code {struct tms}}{524} +\entry {\code {struct utimbuf}}{365} +\entry {\code {struct utmp}}{721} +\entry {\code {struct utmpx}}{726} +\entry {\code {struct utsname}}{741} +\entry {\code {struct vtimes}}{557} \initial {T} -\entry {\code {tcflag_t}}{432} -\entry {\code {time_t}}{528} +\entry {\code {tcflag_t}}{430} +\entry {\code {time_t}}{526} \initial {U} -\entry {\code {uid_t}}{715} -\entry {\code {union wait}}{680} +\entry {\code {uid_t}}{713} +\entry {\code {union wait}}{678} \initial {V} -\entry {\code {va_list}}{814} -\entry {\code {VISIT}}{202} +\entry {\code {va_list}}{812} +\entry {\code {VISIT}}{200} \initial {W} -\entry {\code {wchar_t}}{105} +\entry {\code {wchar_t}}{106} \entry {\code {wctrans_t}}{74} \entry {\code {wctype_t}}{70} \entry {\code {wint_t}}{106} -\entry {\code {wordexp_t}}{215} +\entry {\code {wordexp_t}}{213} diff -adurpN glibc-2.2/manual/libc.vr glibc-2.2.1/manual/libc.vr --- glibc-2.2/manual/libc.vr Thu Sep 7 12:04:42 2000 +++ glibc-2.2.1/manual/libc.vr Sun Jan 7 09:11:50 2001 @@ -1,13 +1,13 @@ -\entry{{\_}POSIX{\_}SOURCE}{8}{\code {_POSIX_SOURCE}} +\entry{{\_}POSIX{\_}SOURCE}{7}{\code {_POSIX_SOURCE}} \entry{{\_}POSIX{\_}C{\_}SOURCE}{8}{\code {_POSIX_C_SOURCE}} \entry{{\_}BSD{\_}SOURCE}{8}{\code {_BSD_SOURCE}} \entry{{\_}SVID{\_}SOURCE}{8}{\code {_SVID_SOURCE}} -\entry{{\_}XOPEN{\_}SOURCE}{9}{\code {_XOPEN_SOURCE}} -\entry{{\_}XOPEN{\_}SOURCE{\_}EXTENDED}{9}{\code {_XOPEN_SOURCE_EXTENDED}} +\entry{{\_}XOPEN{\_}SOURCE}{8}{\code {_XOPEN_SOURCE}} +\entry{{\_}XOPEN{\_}SOURCE{\_}EXTENDED}{8}{\code {_XOPEN_SOURCE_EXTENDED}} \entry{{\_}LARGEFILE{\_}SOURCE}{9}{\code {_LARGEFILE_SOURCE}} \entry{{\_}LARGEFILE64{\_}SOURCE}{9}{\code {_LARGEFILE64_SOURCE}} \entry{{\_}FILE{\_}OFFSET{\_}BITS}{9}{\code {_FILE_OFFSET_BITS}} -\entry{{\_}ISOC99{\_}SOURCE}{10}{\code {_ISOC99_SOURCE}} +\entry{{\_}ISOC99{\_}SOURCE}{9}{\code {_ISOC99_SOURCE}} \entry{{\_}GNU{\_}SOURCE}{10}{\code {_GNU_SOURCE}} \entry{{\_}REENTRANT}{10}{\code {_REENTRANT}} \entry{{\_}THREAD{\_}SAFE}{10}{\code {_THREAD_SAFE}} @@ -56,7 +56,7 @@ \entry{ENOPROTOOPT}{20}{\code {ENOPROTOOPT}} \entry{EPROTONOSUPPORT}{20}{\code {EPROTONOSUPPORT}} \entry{ESOCKTNOSUPPORT}{20}{\code {ESOCKTNOSUPPORT}} -\entry{EOPNOTSUPP}{20}{\code {EOPNOTSUPP}} +\entry{EOPNOTSUPP}{21}{\code {EOPNOTSUPP}} \entry{EPFNOSUPPORT}{21}{\code {EPFNOSUPPORT}} \entry{EAFNOSUPPORT}{21}{\code {EAFNOSUPPORT}} \entry{EADDRINUSE}{21}{\code {EADDRINUSE}} @@ -68,7 +68,7 @@ \entry{ECONNRESET}{21}{\code {ECONNRESET}} \entry{ENOBUFS}{21}{\code {ENOBUFS}} \entry{EISCONN}{21}{\code {EISCONN}} -\entry{ENOTCONN}{21}{\code {ENOTCONN}} +\entry{ENOTCONN}{22}{\code {ENOTCONN}} \entry{EDESTADDRREQ}{22}{\code {EDESTADDRREQ}} \entry{ESHUTDOWN}{22}{\code {ESHUTDOWN}} \entry{ETOOMANYREFS}{22}{\code {ETOOMANYREFS}} @@ -79,9 +79,9 @@ \entry{EHOSTDOWN}{22}{\code {EHOSTDOWN}} \entry{EHOSTUNREACH}{22}{\code {EHOSTUNREACH}} \entry{ENOTEMPTY}{22}{\code {ENOTEMPTY}} -\entry{EPROCLIM}{22}{\code {EPROCLIM}} -\entry{EUSERS}{22}{\code {EUSERS}} -\entry{EDQUOT}{22}{\code {EDQUOT}} +\entry{EPROCLIM}{23}{\code {EPROCLIM}} +\entry{EUSERS}{23}{\code {EUSERS}} +\entry{EDQUOT}{23}{\code {EDQUOT}} \entry{ESTALE}{23}{\code {ESTALE}} \entry{EREMOTE}{23}{\code {EREMOTE}} \entry{EBADRPC}{23}{\code {EBADRPC}} @@ -91,9 +91,9 @@ \entry{EPROCUNAVAIL}{23}{\code {EPROCUNAVAIL}} \entry{ENOLCK}{23}{\code {ENOLCK}} \entry{EFTYPE}{23}{\code {EFTYPE}} -\entry{EAUTH}{23}{\code {EAUTH}} -\entry{ENEEDAUTH}{23}{\code {ENEEDAUTH}} -\entry{ENOSYS}{23}{\code {ENOSYS}} +\entry{EAUTH}{24}{\code {EAUTH}} +\entry{ENEEDAUTH}{24}{\code {ENEEDAUTH}} +\entry{ENOSYS}{24}{\code {ENOSYS}} \entry{ENOTSUP}{24}{\code {ENOTSUP}} \entry{EILSEQ}{24}{\code {EILSEQ}} \entry{EBACKGROUND}{24}{\code {EBACKGROUND}} @@ -101,14 +101,14 @@ \entry{ED}{24}{\code {ED}} \entry{EGREGIOUS}{24}{\code {EGREGIOUS}} \entry{EIEIO}{24}{\code {EIEIO}} -\entry{EGRATUITOUS}{24}{\code {EGRATUITOUS}} -\entry{EBADMSG}{24}{\code {EBADMSG}} -\entry{EIDRM}{24}{\code {EIDRM}} -\entry{EMULTIHOP}{24}{\code {EMULTIHOP}} -\entry{ENODATA}{24}{\code {ENODATA}} -\entry{ENOLINK}{24}{\code {ENOLINK}} -\entry{ENOMSG}{24}{\code {ENOMSG}} -\entry{ENOSR}{24}{\code {ENOSR}} +\entry{EGRATUITOUS}{25}{\code {EGRATUITOUS}} +\entry{EBADMSG}{25}{\code {EBADMSG}} +\entry{EIDRM}{25}{\code {EIDRM}} +\entry{EMULTIHOP}{25}{\code {EMULTIHOP}} +\entry{ENODATA}{25}{\code {ENODATA}} +\entry{ENOLINK}{25}{\code {ENOLINK}} +\entry{ENOMSG}{25}{\code {ENOMSG}} +\entry{ENOSR}{25}{\code {ENOSR}} \entry{ENOSTR}{25}{\code {ENOSTR}} \entry{EOVERFLOW}{25}{\code {EOVERFLOW}} \entry{EPROTO}{25}{\code {EPROTO}} @@ -124,22 +124,22 @@ \entry{EL2HLT}{25}{\code {EL2HLT}} \entry{EBADE}{25}{\code {EBADE}} \entry{EBADR}{25}{\code {EBADR}} -\entry{EXFULL}{25}{\code {EXFULL}} -\entry{ENOANO}{25}{\code {ENOANO}} -\entry{EBADRQC}{25}{\code {EBADRQC}} -\entry{EBADSLT}{25}{\code {EBADSLT}} -\entry{EDEADLOCK}{25}{\code {EDEADLOCK}} -\entry{EBFONT}{25}{\code {EBFONT}} -\entry{ENONET}{25}{\code {ENONET}} -\entry{ENOPKG}{25}{\code {ENOPKG}} -\entry{EADV}{25}{\code {EADV}} -\entry{ESRMNT}{25}{\code {ESRMNT}} -\entry{ECOMM}{25}{\code {ECOMM}} -\entry{EDOTDOT}{25}{\code {EDOTDOT}} -\entry{ENOTUNIQ}{25}{\code {ENOTUNIQ}} -\entry{EBADFD}{25}{\code {EBADFD}} -\entry{EREMCHG}{25}{\code {EREMCHG}} -\entry{ELIBACC}{25}{\code {ELIBACC}} +\entry{EXFULL}{26}{\code {EXFULL}} +\entry{ENOANO}{26}{\code {ENOANO}} +\entry{EBADRQC}{26}{\code {EBADRQC}} +\entry{EBADSLT}{26}{\code {EBADSLT}} +\entry{EDEADLOCK}{26}{\code {EDEADLOCK}} +\entry{EBFONT}{26}{\code {EBFONT}} +\entry{ENONET}{26}{\code {ENONET}} +\entry{ENOPKG}{26}{\code {ENOPKG}} +\entry{EADV}{26}{\code {EADV}} +\entry{ESRMNT}{26}{\code {ESRMNT}} +\entry{ECOMM}{26}{\code {ECOMM}} +\entry{EDOTDOT}{26}{\code {EDOTDOT}} +\entry{ENOTUNIQ}{26}{\code {ENOTUNIQ}} +\entry{EBADFD}{26}{\code {EBADFD}} +\entry{EREMCHG}{26}{\code {EREMCHG}} +\entry{ELIBACC}{26}{\code {ELIBACC}} \entry{ELIBBAD}{26}{\code {ELIBBAD}} \entry{ELIBSCN}{26}{\code {ELIBSCN}} \entry{ELIBMAX}{26}{\code {ELIBMAX}} @@ -152,11 +152,712 @@ \entry{EREMOTEIO}{26}{\code {EREMOTEIO}} \entry{ENOMEDIUM}{26}{\code {ENOMEDIUM}} \entry{EMEDIUMTYPE}{26}{\code {EMEDIUMTYPE}} -\entry{program{\_}invocation{\_}name}{27}{\code {program_invocation_name}} -\entry{program{\_}invocation{\_}short{\_}name}{27}{\code {program_invocation_short_name}} -\entry{{\_}{\_}malloc{\_}hook}{39}{\code {__malloc_hook}} -\entry{{\_}{\_}realloc{\_}hook}{40}{\code {__realloc_hook}} -\entry{{\_}{\_}free{\_}hook}{40}{\code {__free_hook}} -\entry{{\_}{\_}memalign{\_}hook}{40}{\code {__memalign_hook}} -\entry{{\_}{\_}malloc{\_}initialize{\_}hook}{40}{\code {__malloc_initialize_hook}} -\entry{obstack{\_}alloc{\_}failed{\_}handler}{49}{\code {obstack_alloc_failed_handler}} +\entry{program{\_}invocation{\_}name}{28}{\code {program_invocation_name}} +\entry{program{\_}invocation{\_}short{\_}name}{28}{\code {program_invocation_short_name}} +\entry{{\_}{\_}malloc{\_}hook}{41}{\code {__malloc_hook}} +\entry{{\_}{\_}realloc{\_}hook}{41}{\code {__realloc_hook}} +\entry{{\_}{\_}free{\_}hook}{42}{\code {__free_hook}} +\entry{{\_}{\_}memalign{\_}hook}{42}{\code {__memalign_hook}} +\entry{{\_}{\_}malloc{\_}initialize{\_}hook}{42}{\code {__malloc_initialize_hook}} +\entry{obstack{\_}alloc{\_}failed{\_}handler}{51}{\code {obstack_alloc_failed_handler}} +\entry{WCHAR{\_}MIN}{106}{\code {WCHAR_MIN}} +\entry{WCHAR{\_}MAX}{106}{\code {WCHAR_MAX}} +\entry{WEOF}{107}{\code {WEOF}} +\entry{MB{\_}LEN{\_}MAX}{110}{\code {MB_LEN_MAX}} +\entry{MB{\_}CUR{\_}MAX}{110}{\code {MB_CUR_MAX}} +\entry{(*{\_}{\_}gconv{\_}init{\_}fct)}{140}{\code {(*__gconv_init_fct)}} +\entry{(*{\_}{\_}gconv{\_}end{\_}fct)}{143}{\code {(*__gconv_end_fct)}} +\entry{(*{\_}{\_}gconv{\_}fct)}{143}{\code {(*__gconv_fct)}} +\entry{LC{\_}COLLATE}{150}{\code {LC_COLLATE}} +\entry{LC{\_}CTYPE}{150}{\code {LC_CTYPE}} +\entry{LC{\_}MONETARY}{150}{\code {LC_MONETARY}} +\entry{LC{\_}NUMERIC}{150}{\code {LC_NUMERIC}} +\entry{LC{\_}TIME}{150}{\code {LC_TIME}} +\entry{LC{\_}MESSAGES}{150}{\code {LC_MESSAGES}} +\entry{LC{\_}ALL}{151}{\code {LC_ALL}} +\entry{LANG}{151}{\code {LANG}} +\entry{LANGUAGE}{151}{\code {LANGUAGE}} +\entry{ABDAY{\_}1}{158}{\code {ABDAY_1}} +\entry{ABDAY{\_}2}{158}{\code {ABDAY_2}} +\entry{ABDAY{\_}3}{158}{\code {ABDAY_3}} +\entry{ABDAY{\_}4}{158}{\code {ABDAY_4}} +\entry{ABDAY{\_}5}{158}{\code {ABDAY_5}} +\entry{ABDAY{\_}6}{158}{\code {ABDAY_6}} +\entry{ABDAY{\_}7}{158}{\code {ABDAY_7}} +\entry{DAY{\_}1}{158}{\code {DAY_1}} +\entry{DAY{\_}2}{158}{\code {DAY_2}} +\entry{DAY{\_}3}{158}{\code {DAY_3}} +\entry{DAY{\_}4}{158}{\code {DAY_4}} +\entry{DAY{\_}5}{158}{\code {DAY_5}} +\entry{DAY{\_}6}{158}{\code {DAY_6}} +\entry{DAY{\_}7}{158}{\code {DAY_7}} +\entry{ABMON{\_}1}{158}{\code {ABMON_1}} +\entry{ABMON{\_}2}{158}{\code {ABMON_2}} +\entry{ABMON{\_}3}{158}{\code {ABMON_3}} +\entry{ABMON{\_}4}{158}{\code {ABMON_4}} +\entry{ABMON{\_}5}{158}{\code {ABMON_5}} +\entry{ABMON{\_}6}{158}{\code {ABMON_6}} +\entry{ABMON{\_}7}{158}{\code {ABMON_7}} +\entry{ABMON{\_}8}{158}{\code {ABMON_8}} +\entry{ABMON{\_}9}{158}{\code {ABMON_9}} +\entry{ABMON{\_}10}{158}{\code {ABMON_10}} +\entry{ABMON{\_}11}{158}{\code {ABMON_11}} +\entry{ABMON{\_}12}{158}{\code {ABMON_12}} +\entry{MON{\_}1}{158}{\code {MON_1}} +\entry{MON{\_}2}{159}{\code {MON_2}} +\entry{MON{\_}3}{159}{\code {MON_3}} +\entry{MON{\_}4}{159}{\code {MON_4}} +\entry{MON{\_}5}{159}{\code {MON_5}} +\entry{MON{\_}6}{159}{\code {MON_6}} +\entry{MON{\_}7}{159}{\code {MON_7}} +\entry{MON{\_}8}{159}{\code {MON_8}} +\entry{MON{\_}9}{159}{\code {MON_9}} +\entry{MON{\_}10}{159}{\code {MON_10}} +\entry{MON{\_}11}{159}{\code {MON_11}} +\entry{MON{\_}12}{159}{\code {MON_12}} +\entry{AM{\_}STR}{159}{\code {AM_STR}} +\entry{PM{\_}STR}{159}{\code {PM_STR}} +\entry{D{\_}T{\_}FMT}{159}{\code {D_T_FMT}} +\entry{D{\_}FMT}{159}{\code {D_FMT}} +\entry{T{\_}FMT}{159}{\code {T_FMT}} +\entry{T{\_}FMT{\_}AMPM}{159}{\code {T_FMT_AMPM}} +\entry{ERA}{159}{\code {ERA}} +\entry{ERA{\_}YEAR}{159}{\code {ERA_YEAR}} +\entry{ERA{\_}D{\_}T{\_}FMT}{160}{\code {ERA_D_T_FMT}} +\entry{ERA{\_}D{\_}FMT}{160}{\code {ERA_D_FMT}} +\entry{ERA{\_}T{\_}FMT}{160}{\code {ERA_T_FMT}} +\entry{ALT{\_}DIGITS}{160}{\code {ALT_DIGITS}} +\entry{INT{\_}CURR{\_}SYMBOL}{160}{\code {INT_CURR_SYMBOL}} +\entry{CURRENCY{\_}SYMBOL}{160}{\code {CURRENCY_SYMBOL}} +\entry{CRNCYSTR}{160}{\code {CRNCYSTR}} +\entry{MON{\_}DECIMAL{\_}POINT}{160}{\code {MON_DECIMAL_POINT}} +\entry{MON{\_}THOUSANDS{\_}SEP}{160}{\code {MON_THOUSANDS_SEP}} +\entry{MON{\_}GROUPING}{160}{\code {MON_GROUPING}} +\entry{POSITIVE{\_}SIGN}{160}{\code {POSITIVE_SIGN}} +\entry{NEGATIVE{\_}SIGN}{160}{\code {NEGATIVE_SIGN}} +\entry{INT{\_}FRAC{\_}DIGITS}{160}{\code {INT_FRAC_DIGITS}} +\entry{FRAC{\_}DIGITS}{161}{\code {FRAC_DIGITS}} +\entry{P{\_}CS{\_}PRECEDES}{161}{\code {P_CS_PRECEDES}} +\entry{P{\_}SEP{\_}BY{\_}SPACE}{161}{\code {P_SEP_BY_SPACE}} +\entry{N{\_}CS{\_}PRECEDES}{161}{\code {N_CS_PRECEDES}} +\entry{N{\_}SEP{\_}BY{\_}SPACE}{161}{\code {N_SEP_BY_SPACE}} +\entry{P{\_}SIGN{\_}POSN}{161}{\code {P_SIGN_POSN}} +\entry{N{\_}SIGN{\_}POSN}{161}{\code {N_SIGN_POSN}} +\entry{DECIMAL{\_}POINT}{161}{\code {DECIMAL_POINT}} +\entry{RADIXCHAR}{161}{\code {RADIXCHAR}} +\entry{THOUSANDS{\_}SEP}{161}{\code {THOUSANDS_SEP}} +\entry{THOUSEP}{161}{\code {THOUSEP}} +\entry{GROUPING}{161}{\code {GROUPING}} +\entry{YESEXPR}{161}{\code {YESEXPR}} +\entry{NOEXPR}{161}{\code {NOEXPR}} +\entry{YESSTR}{161}{\code {YESSTR}} +\entry{NOSTR}{162}{\code {NOSTR}} +\entry{stdin}{225}{\code {stdin}} +\entry{stdout}{225}{\code {stdout}} +\entry{stderr}{225}{\code {stderr}} +\entry{FOPEN{\_}MAX}{228}{\code {FOPEN_MAX}} +\entry{NL{\_}ARGMAX}{237}{\code {NL_ARGMAX}} +\entry{PA{\_}FLAG{\_}MASK}{249}{\code {PA_FLAG_MASK}} +\entry{PA{\_}INT}{249}{\code {PA_INT}} +\entry{PA{\_}CHAR}{249}{\code {PA_CHAR}} +\entry{PA{\_}STRING}{249}{\code {PA_STRING}} +\entry{PA{\_}POINTER}{249}{\code {PA_POINTER}} +\entry{PA{\_}FLOAT}{249}{\code {PA_FLOAT}} +\entry{PA{\_}DOUBLE}{249}{\code {PA_DOUBLE}} +\entry{PA{\_}LAST}{249}{\code {PA_LAST}} +\entry{PA{\_}FLAG{\_}PTR}{249}{\code {PA_FLAG_PTR}} +\entry{PA{\_}FLAG{\_}SHORT}{250}{\code {PA_FLAG_SHORT}} +\entry{PA{\_}FLAG{\_}LONG}{250}{\code {PA_FLAG_LONG}} +\entry{PA{\_}FLAG{\_}LONG{\_}LONG}{250}{\code {PA_FLAG_LONG_LONG}} +\entry{PA{\_}FLAG{\_}LONG{\_}DOUBLE}{250}{\code {PA_FLAG_LONG_DOUBLE}} +\entry{EOF}{265}{\code {EOF}} +\entry{SEEK{\_}SET}{269}{\code {SEEK_SET}} +\entry{SEEK{\_}CUR}{269}{\code {SEEK_CUR}} +\entry{SEEK{\_}END}{269}{\code {SEEK_END}} +\entry{L{\_}SET}{269}{\code {L_SET}} +\entry{L{\_}INCR}{269}{\code {L_INCR}} +\entry{L{\_}XTND}{269}{\code {L_XTND}} +\entry{{\_}IOFBF}{273}{\code {_IOFBF}} +\entry{{\_}IOLBF}{273}{\code {_IOLBF}} +\entry{{\_}IONBF}{274}{\code {_IONBF}} +\entry{BUFSIZ}{274}{\code {BUFSIZ}} +\entry{MM{\_}PRINT}{280}{\code {MM_PRINT}} +\entry{MM{\_}CONSOLE}{280}{\code {MM_CONSOLE}} +\entry{MM{\_}HARD}{280}{\code {MM_HARD}} +\entry{MM{\_}SOFT}{280}{\code {MM_SOFT}} +\entry{MM{\_}FIRM}{280}{\code {MM_FIRM}} +\entry{MM{\_}APPL}{280}{\code {MM_APPL}} +\entry{MM{\_}UTIL}{280}{\code {MM_UTIL}} +\entry{MM{\_}OPSYS}{280}{\code {MM_OPSYS}} +\entry{MM{\_}RECOVER}{280}{\code {MM_RECOVER}} +\entry{MM{\_}NRECOV}{280}{\code {MM_NRECOV}} +\entry{MM{\_}NULLLBL}{281}{\code {MM_NULLLBL}} +\entry{MM{\_}NULLSEV}{281}{\code {MM_NULLSEV}} +\entry{MM{\_}NULLMC}{281}{\code {MM_NULLMC}} +\entry{MM{\_}NULLTXT}{281}{\code {MM_NULLTXT}} +\entry{MM{\_}NULLACT}{281}{\code {MM_NULLACT}} +\entry{MM{\_}NULLTAG}{281}{\code {MM_NULLTAG}} +\entry{MM{\_}NOSEV}{281}{\code {MM_NOSEV}} +\entry{MM{\_}HALT}{281}{\code {MM_HALT}} +\entry{MM{\_}ERROR}{281}{\code {MM_ERROR}} +\entry{MM{\_}WARNING}{281}{\code {MM_WARNING}} +\entry{MM{\_}INFO}{281}{\code {MM_INFO}} +\entry{STDIN{\_}FILENO}{295}{\code {STDIN_FILENO}} +\entry{STDOUT{\_}FILENO}{295}{\code {STDOUT_FILENO}} +\entry{STDERR{\_}FILENO}{295}{\code {STDERR_FILENO}} +\entry{PROT{\_}READ}{299}{\code {PROT_READ}} +\entry{PROT{\_}WRITE}{299}{\code {PROT_WRITE}} +\entry{PROT{\_}EXEC}{299}{\code {PROT_EXEC}} +\entry{MAP{\_}PRIVATE}{299}{\code {MAP_PRIVATE}} +\entry{MAP{\_}SHARED}{299}{\code {MAP_SHARED}} +\entry{MAP{\_}FIXED}{299}{\code {MAP_FIXED}} +\entry{MAP{\_}ANONYMOUS}{299}{\code {MAP_ANONYMOUS}} +\entry{MAP{\_}ANON}{299}{\code {MAP_ANON}} +\entry{MS{\_}SYNC}{300}{\code {MS_SYNC}} +\entry{MS{\_}ASYNC}{301}{\code {MS_ASYNC}} +\entry{FD{\_}SETSIZE}{302}{\code {FD_SETSIZE}} +\entry{LIO{\_}READ}{307}{\code {LIO_READ}} +\entry{LIO{\_}WRITE}{307}{\code {LIO_WRITE}} +\entry{LIO{\_}NOP}{307}{\code {LIO_NOP}} +\entry{F{\_}DUPFD}{319}{\code {F_DUPFD}} +\entry{F{\_}GETFD}{320}{\code {F_GETFD}} +\entry{F{\_}SETFD}{320}{\code {F_SETFD}} +\entry{FD{\_}CLOEXEC}{320}{\code {FD_CLOEXEC}} +\entry{O{\_}RDONLY}{321}{\code {O_RDONLY}} +\entry{O{\_}WRONLY}{321}{\code {O_WRONLY}} +\entry{O{\_}RDWR}{322}{\code {O_RDWR}} +\entry{O{\_}READ}{322}{\code {O_READ}} +\entry{O{\_}WRITE}{322}{\code {O_WRITE}} +\entry{O{\_}EXEC}{322}{\code {O_EXEC}} +\entry{O{\_}ACCMODE}{322}{\code {O_ACCMODE}} +\entry{O{\_}CREAT}{323}{\code {O_CREAT}} +\entry{O{\_}EXCL}{323}{\code {O_EXCL}} +\entry{O{\_}NONBLOCK}{323}{\code {O_NONBLOCK}} +\entry{O{\_}NOCTTY}{323}{\code {O_NOCTTY}} +\entry{O{\_}IGNORE{\_}CTTY}{323}{\code {O_IGNORE_CTTY}} +\entry{O{\_}NOLINK}{323}{\code {O_NOLINK}} +\entry{O{\_}NOTRANS}{323}{\code {O_NOTRANS}} +\entry{O{\_}TRUNC}{324}{\code {O_TRUNC}} +\entry{O{\_}SHLOCK}{324}{\code {O_SHLOCK}} +\entry{O{\_}EXLOCK}{324}{\code {O_EXLOCK}} +\entry{O{\_}APPEND}{324}{\code {O_APPEND}} +\entry{O{\_}NONBLOCK}{324}{\code {O_NONBLOCK}} +\entry{O{\_}NDELAY}{325}{\code {O_NDELAY}} +\entry{O{\_}ASYNC}{325}{\code {O_ASYNC}} +\entry{O{\_}FSYNC}{325}{\code {O_FSYNC}} +\entry{O{\_}SYNC}{325}{\code {O_SYNC}} +\entry{O{\_}NOATIME}{325}{\code {O_NOATIME}} +\entry{F{\_}GETFL}{325}{\code {F_GETFL}} +\entry{F{\_}SETFL}{325}{\code {F_SETFL}} +\entry{F{\_}GETLK}{327}{\code {F_GETLK}} +\entry{F{\_}SETLK}{328}{\code {F_SETLK}} +\entry{F{\_}SETLKW}{328}{\code {F_SETLKW}} +\entry{F{\_}RDLCK}{329}{\code {F_RDLCK}} +\entry{F{\_}WRLCK}{329}{\code {F_WRLCK}} +\entry{F{\_}UNLCK}{329}{\code {F_UNLCK}} +\entry{F{\_}GETOWN}{330}{\code {F_GETOWN}} +\entry{F{\_}SETOWN}{330}{\code {F_SETOWN}} +\entry{FTW{\_}F}{342}{\code {FTW_F}} +\entry{FTW{\_}D}{342}{\code {FTW_D}} +\entry{FTW{\_}NS}{342}{\code {FTW_NS}} +\entry{FTW{\_}DNR}{342}{\code {FTW_DNR}} +\entry{FTW{\_}SL}{342}{\code {FTW_SL}} +\entry{FTW{\_}DP}{342}{\code {FTW_DP}} +\entry{FTW{\_}SLN}{342}{\code {FTW_SLN}} +\entry{FTW{\_}PHYS}{344}{\code {FTW_PHYS}} +\entry{FTW{\_}MOUNT}{344}{\code {FTW_MOUNT}} +\entry{FTW{\_}CHDIR}{345}{\code {FTW_CHDIR}} +\entry{FTW{\_}DEPTH}{345}{\code {FTW_DEPTH}} +\entry{S{\_}IFMT}{357}{\code {S_IFMT}} +\entry{S{\_}IFDIR}{357}{\code {S_IFDIR}} +\entry{S{\_}IFCHR}{357}{\code {S_IFCHR}} +\entry{S{\_}IFBLK}{357}{\code {S_IFBLK}} +\entry{S{\_}IFREG}{357}{\code {S_IFREG}} +\entry{S{\_}IFLNK}{357}{\code {S_IFLNK}} +\entry{S{\_}IFSOCK}{357}{\code {S_IFSOCK}} +\entry{S{\_}IFIFO}{357}{\code {S_IFIFO}} +\entry{S{\_}IRUSR}{359}{\code {S_IRUSR}} +\entry{S{\_}IREAD}{359}{\code {S_IREAD}} +\entry{S{\_}IWUSR}{359}{\code {S_IWUSR}} +\entry{S{\_}IWRITE}{359}{\code {S_IWRITE}} +\entry{S{\_}IXUSR}{359}{\code {S_IXUSR}} +\entry{S{\_}IEXEC}{359}{\code {S_IEXEC}} +\entry{S{\_}IRWXU}{359}{\code {S_IRWXU}} +\entry{S{\_}IRGRP}{359}{\code {S_IRGRP}} +\entry{S{\_}IWGRP}{359}{\code {S_IWGRP}} +\entry{S{\_}IXGRP}{359}{\code {S_IXGRP}} +\entry{S{\_}IRWXG}{359}{\code {S_IRWXG}} +\entry{S{\_}IROTH}{359}{\code {S_IROTH}} +\entry{S{\_}IWOTH}{359}{\code {S_IWOTH}} +\entry{S{\_}IXOTH}{359}{\code {S_IXOTH}} +\entry{S{\_}IRWXO}{359}{\code {S_IRWXO}} +\entry{S{\_}ISUID}{359}{\code {S_ISUID}} +\entry{S{\_}ISGID}{360}{\code {S_ISGID}} +\entry{S{\_}ISVTX}{360}{\code {S_ISVTX}} +\entry{R{\_}OK}{364}{\code {R_OK}} +\entry{W{\_}OK}{364}{\code {W_OK}} +\entry{X{\_}OK}{364}{\code {X_OK}} +\entry{F{\_}OK}{364}{\code {F_OK}} +\entry{L{\_}tmpnam}{370}{\code {L_tmpnam}} +\entry{TMP{\_}MAX}{370}{\code {TMP_MAX}} +\entry{P{\_}tmpdir}{371}{\code {P_tmpdir}} +\entry{SOCK{\_}STREAM}{380}{\code {SOCK_STREAM}} +\entry{SOCK{\_}DGRAM}{380}{\code {SOCK_DGRAM}} +\entry{SOCK{\_}RAW}{381}{\code {SOCK_RAW}} +\entry{AF{\_}LOCAL}{382}{\code {AF_LOCAL}} +\entry{AF{\_}UNIX}{382}{\code {AF_UNIX}} +\entry{AF{\_}FILE}{382}{\code {AF_FILE}} +\entry{AF{\_}INET}{382}{\code {AF_INET}} +\entry{AF{\_}UNSPEC}{382}{\code {AF_UNSPEC}} +\entry{IFNAMSIZ}{384}{\code {IFNAMSIZ}} +\entry{PF{\_}LOCAL}{385}{\code {PF_LOCAL}} +\entry{PF{\_}UNIX}{385}{\code {PF_UNIX}} +\entry{PF{\_}FILE}{385}{\code {PF_FILE}} +\entry{PF{\_}INET}{387}{\code {PF_INET}} +\entry{PF{\_}INET6}{387}{\code {PF_INET6}} +\entry{INADDR{\_}LOOPBACK}{391}{\code {INADDR_LOOPBACK}} +\entry{INADDR{\_}ANY}{391}{\code {INADDR_ANY}} +\entry{INADDR{\_}BROADCAST}{391}{\code {INADDR_BROADCAST}} +\entry{INADDR{\_}NONE}{391}{\code {INADDR_NONE}} +\entry{in6addr{\_}loopback}{391}{\code {in6addr_loopback}} +\entry{in6addr{\_}any}{391}{\code {in6addr_any}} +\entry{h{\_}errno}{394}{\code {h_errno}} +\entry{HOST{\_}NOT{\_}FOUND}{394}{\code {HOST_NOT_FOUND}} +\entry{TRY{\_}AGAIN}{394}{\code {TRY_AGAIN}} +\entry{NO{\_}RECOVERY}{395}{\code {NO_RECOVERY}} +\entry{NO{\_}ADDRESS}{395}{\code {NO_ADDRESS}} +\entry{IPPORT{\_}RESERVED}{397}{\code {IPPORT_RESERVED}} +\entry{IPPORT{\_}USERRESERVED}{397}{\code {IPPORT_USERRESERVED}} +\entry{PF{\_}NS}{402}{\code {PF_NS}} +\entry{PF{\_}ISO}{402}{\code {PF_ISO}} +\entry{PF{\_}CCITT}{402}{\code {PF_CCITT}} +\entry{PF{\_}IMPLINK}{402}{\code {PF_IMPLINK}} +\entry{PF{\_}ROUTE}{402}{\code {PF_ROUTE}} +\entry{MSG{\_}OOB}{410}{\code {MSG_OOB}} +\entry{MSG{\_}PEEK}{410}{\code {MSG_PEEK}} +\entry{MSG{\_}DONTROUTE}{410}{\code {MSG_DONTROUTE}} +\entry{SOL{\_}SOCKET}{423}{\code {SOL_SOCKET}} +\entry{NCCS}{430}{\code {NCCS}} +\entry{TCSANOW}{430}{\code {TCSANOW}} +\entry{TCSADRAIN}{430}{\code {TCSADRAIN}} +\entry{TCSAFLUSH}{430}{\code {TCSAFLUSH}} +\entry{TCSASOFT}{430}{\code {TCSASOFT}} +\entry{INPCK}{432}{\code {INPCK}} +\entry{IGNPAR}{433}{\code {IGNPAR}} +\entry{PARMRK}{433}{\code {PARMRK}} +\entry{ISTRIP}{433}{\code {ISTRIP}} +\entry{IGNBRK}{433}{\code {IGNBRK}} +\entry{BRKINT}{433}{\code {BRKINT}} +\entry{IGNCR}{433}{\code {IGNCR}} +\entry{ICRNL}{433}{\code {ICRNL}} +\entry{INLCR}{433}{\code {INLCR}} +\entry{IXOFF}{434}{\code {IXOFF}} +\entry{IXON}{434}{\code {IXON}} +\entry{IXANY}{434}{\code {IXANY}} +\entry{IMAXBEL}{434}{\code {IMAXBEL}} +\entry{OPOST}{434}{\code {OPOST}} +\entry{ONLCR}{435}{\code {ONLCR}} +\entry{OXTABS}{435}{\code {OXTABS}} +\entry{ONOEOT}{435}{\code {ONOEOT}} +\entry{CLOCAL}{435}{\code {CLOCAL}} +\entry{HUPCL}{435}{\code {HUPCL}} +\entry{CREAD}{435}{\code {CREAD}} +\entry{CSTOPB}{435}{\code {CSTOPB}} +\entry{PARENB}{436}{\code {PARENB}} +\entry{PARODD}{436}{\code {PARODD}} +\entry{CSIZE}{436}{\code {CSIZE}} +\entry{CS5}{436}{\code {CS5}} +\entry{CS6}{436}{\code {CS6}} +\entry{CS7}{436}{\code {CS7}} +\entry{CS8}{436}{\code {CS8}} +\entry{CCTS{\_}OFLOW}{436}{\code {CCTS_OFLOW}} +\entry{CRTS{\_}IFLOW}{436}{\code {CRTS_IFLOW}} +\entry{MDMBUF}{436}{\code {MDMBUF}} +\entry{CIGNORE}{436}{\code {CIGNORE}} +\entry{ICANON}{437}{\code {ICANON}} +\entry{ECHO}{437}{\code {ECHO}} +\entry{ECHOE}{437}{\code {ECHOE}} +\entry{ECHOPRT}{437}{\code {ECHOPRT}} +\entry{ECHOK}{437}{\code {ECHOK}} +\entry{ECHOKE}{438}{\code {ECHOKE}} +\entry{ECHONL}{438}{\code {ECHONL}} +\entry{ECHOCTL}{438}{\code {ECHOCTL}} +\entry{ISIG}{438}{\code {ISIG}} +\entry{IEXTEN}{438}{\code {IEXTEN}} +\entry{NOFLSH}{438}{\code {NOFLSH}} +\entry{TOSTOP}{438}{\code {TOSTOP}} +\entry{ALTWERASE}{439}{\code {ALTWERASE}} +\entry{FLUSHO}{439}{\code {FLUSHO}} +\entry{NOKERNINFO}{439}{\code {NOKERNINFO}} +\entry{PENDIN}{439}{\code {PENDIN}} +\entry{B0}{440}{\code {B0}} +\entry{B50}{440}{\code {B50}} +\entry{B75}{440}{\code {B75}} +\entry{B110}{440}{\code {B110}} +\entry{B134}{440}{\code {B134}} +\entry{B150}{440}{\code {B150}} +\entry{B200}{440}{\code {B200}} +\entry{B300}{440}{\code {B300}} +\entry{B600}{440}{\code {B600}} +\entry{B1200}{440}{\code {B1200}} +\entry{B1800}{440}{\code {B1800}} +\entry{B2400}{440}{\code {B2400}} +\entry{B4800}{440}{\code {B4800}} +\entry{B9600}{440}{\code {B9600}} +\entry{B19200}{440}{\code {B19200}} +\entry{B38400}{440}{\code {B38400}} +\entry{B57600}{440}{\code {B57600}} +\entry{B115200}{440}{\code {B115200}} +\entry{B230400}{440}{\code {B230400}} +\entry{B460800}{440}{\code {B460800}} +\entry{EXTA}{440}{\code {EXTA}} +\entry{EXTB}{440}{\code {EXTB}} +\entry{{\_}POSIX{\_}VDISABLE}{441}{\code {_POSIX_VDISABLE}} +\entry{VEOF}{441}{\code {VEOF}} +\entry{VEOL}{441}{\code {VEOL}} +\entry{VEOL2}{441}{\code {VEOL2}} +\entry{VERASE}{442}{\code {VERASE}} +\entry{VWERASE}{442}{\code {VWERASE}} +\entry{VKILL}{442}{\code {VKILL}} +\entry{VREPRINT}{442}{\code {VREPRINT}} +\entry{VINTR}{443}{\code {VINTR}} +\entry{VQUIT}{443}{\code {VQUIT}} +\entry{VSUSP}{443}{\code {VSUSP}} +\entry{VDSUSP}{443}{\code {VDSUSP}} +\entry{VSTART}{444}{\code {VSTART}} +\entry{VSTOP}{444}{\code {VSTOP}} +\entry{VLNEXT}{444}{\code {VLNEXT}} +\entry{VDISCARD}{444}{\code {VDISCARD}} +\entry{VSTATUS}{445}{\code {VSTATUS}} +\entry{VMIN}{445}{\code {VMIN}} +\entry{VTIME}{445}{\code {VTIME}} +\entry{TCIFLUSH}{448}{\code {TCIFLUSH}} +\entry{TCOFLUSH}{448}{\code {TCOFLUSH}} +\entry{TCIOFLUSH}{448}{\code {TCIOFLUSH}} +\entry{TCOOFF}{449}{\code {TCOOFF}} +\entry{TCOON}{449}{\code {TCOON}} +\entry{TCIOFF}{449}{\code {TCIOFF}} +\entry{TCION}{449}{\code {TCION}} +\entry{EBADF}{449}{\code {EBADF}} +\entry{ENOTTY}{449}{\code {ENOTTY}} +\entry{EINVAL}{449}{\code {EINVAL}} +\entry{M{\_}E}{463}{\code {M_E}} +\entry{M{\_}LOG2E}{463}{\code {M_LOG2E}} +\entry{M{\_}LOG10E}{463}{\code {M_LOG10E}} +\entry{M{\_}LN2}{463}{\code {M_LN2}} +\entry{M{\_}LN10}{463}{\code {M_LN10}} +\entry{M{\_}PI}{463}{\code {M_PI}} +\entry{M{\_}PI{\_}2}{463}{\code {M_PI_2}} +\entry{M{\_}PI{\_}4}{463}{\code {M_PI_4}} +\entry{M{\_}1{\_}PI}{463}{\code {M_1_PI}} +\entry{M{\_}2{\_}PI}{463}{\code {M_2_PI}} +\entry{M{\_}2{\_}SQRTPI}{463}{\code {M_2_SQRTPI}} +\entry{M{\_}SQRT2}{463}{\code {M_SQRT2}} +\entry{M{\_}SQRT1{\_}2}{463}{\code {M_SQRT1_2}} +\entry{PI}{464}{\code {PI}} +\entry{FP{\_}ILOGB0}{468}{\code {FP_ILOGB0}} +\entry{FP{\_}ILOGBNAN}{468}{\code {FP_ILOGBNAN}} +\entry{signgam}{473}{\code {signgam}} +\entry{RAND{\_}MAX}{482}{\code {RAND_MAX}} +\entry{FP{\_}NAN}{492}{\code {FP_NAN}} +\entry{FP{\_}INFINITE}{493}{\code {FP_INFINITE}} +\entry{FP{\_}ZERO}{493}{\code {FP_ZERO}} +\entry{FP{\_}SUBNORMAL}{493}{\code {FP_SUBNORMAL}} +\entry{FP{\_}NORMAL}{493}{\code {FP_NORMAL}} +\entry{INFINITY}{496}{\code {INFINITY}} +\entry{NAN}{497}{\code {NAN}} +\entry{FE{\_}INEXACT}{497}{\code {FE_INEXACT}} +\entry{FE{\_}DIVBYZERO}{497}{\code {FE_DIVBYZERO}} +\entry{FE{\_}UNDERFLOW}{497}{\code {FE_UNDERFLOW}} +\entry{FE{\_}OVERFLOW}{497}{\code {FE_OVERFLOW}} +\entry{FE{\_}INVALID}{497}{\code {FE_INVALID}} +\entry{HUGE{\_}VAL}{499}{\code {HUGE_VAL}} +\entry{HUGE{\_}VALF}{499}{\code {HUGE_VALF}} +\entry{HUGE{\_}VALL}{499}{\code {HUGE_VALL}} +\entry{FE{\_}TONEAREST}{500}{\code {FE_TONEAREST}} +\entry{FE{\_}UPWARD}{500}{\code {FE_UPWARD}} +\entry{FE{\_}DOWNWARD}{500}{\code {FE_DOWNWARD}} +\entry{FE{\_}TOWARDZERO}{500}{\code {FE_TOWARDZERO}} +\entry{FE{\_}DFL{\_}ENV}{501}{\code {FE_DFL_ENV}} +\entry{FE{\_}NOMASK{\_}ENV}{502}{\code {FE_NOMASK_ENV}} +\entry{FP{\_}FAST{\_}FMA}{511}{\code {FP_FAST_FMA}} +\entry{{\_}Complex{\_}I}{511}{\code {_Complex_I}} +\entry{I}{511}{\code {I}} +\entry{CLOCKS{\_}PER{\_}SEC}{524}{\code {CLOCKS_PER_SEC}} +\entry{CLK{\_}TCK}{524}{\code {CLK_TCK}} +\entry{getdate{\_}err}{544}{\code {getdate_err}} +\entry{tzname}{549}{\code {tzname}} +\entry{timezone}{549}{\code {timezone}} +\entry{daylight}{549}{\code {daylight}} +\entry{RLIMIT{\_}CPU}{559}{\code {RLIMIT_CPU}} +\entry{RLIMIT{\_}FSIZE}{559}{\code {RLIMIT_FSIZE}} +\entry{RLIMIT{\_}DATA}{559}{\code {RLIMIT_DATA}} +\entry{RLIMIT{\_}STACK}{559}{\code {RLIMIT_STACK}} +\entry{RLIMIT{\_}CORE}{559}{\code {RLIMIT_CORE}} +\entry{RLIMIT{\_}RSS}{559}{\code {RLIMIT_RSS}} +\entry{RLIMIT{\_}NOFILE}{560}{\code {RLIMIT_NOFILE}} +\entry{RLIMIT{\_}OFILE}{560}{\code {RLIMIT_OFILE}} +\entry{RLIMIT{\_}AS}{560}{\code {RLIMIT_AS}} +\entry{RLIM{\_}NLIMITS}{560}{\code {RLIM_NLIMITS}} +\entry{RLIM{\_}INFINITY}{560}{\code {RLIM_INFINITY}} +\entry{PRIO{\_}MIN}{569}{\code {PRIO_MIN}} +\entry{PRIO{\_}MAX}{569}{\code {PRIO_MAX}} +\entry{PRIO{\_}PROCESS}{569}{\code {PRIO_PROCESS}} +\entry{PRIO{\_}PGRP}{569}{\code {PRIO_PGRP}} +\entry{PRIO{\_}USER}{569}{\code {PRIO_USER}} +\entry{NSIG}{577}{\code {NSIG}} +\entry{COREFILE}{578}{\code {COREFILE}} +\entry{SIGFPE}{578}{\code {SIGFPE}} +\entry{FPE{\_}INTOVF{\_}TRAP}{578}{\code {FPE_INTOVF_TRAP}} +\entry{FPE{\_}INTDIV{\_}TRAP}{578}{\code {FPE_INTDIV_TRAP}} +\entry{FPE{\_}SUBRNG{\_}TRAP}{578}{\code {FPE_SUBRNG_TRAP}} +\entry{FPE{\_}FLTOVF{\_}TRAP}{579}{\code {FPE_FLTOVF_TRAP}} +\entry{FPE{\_}FLTDIV{\_}TRAP}{579}{\code {FPE_FLTDIV_TRAP}} +\entry{FPE{\_}FLTUND{\_}TRAP}{579}{\code {FPE_FLTUND_TRAP}} +\entry{FPE{\_}DECOVF{\_}TRAP}{579}{\code {FPE_DECOVF_TRAP}} +\entry{SIGILL}{579}{\code {SIGILL}} +\entry{SIGSEGV}{579}{\code {SIGSEGV}} +\entry{SIGBUS}{579}{\code {SIGBUS}} +\entry{SIGABRT}{580}{\code {SIGABRT}} +\entry{SIGIOT}{580}{\code {SIGIOT}} +\entry{SIGTRAP}{580}{\code {SIGTRAP}} +\entry{SIGEMT}{580}{\code {SIGEMT}} +\entry{SIGSYS}{580}{\code {SIGSYS}} +\entry{SIGTERM}{580}{\code {SIGTERM}} +\entry{SIGINT}{580}{\code {SIGINT}} +\entry{SIGQUIT}{581}{\code {SIGQUIT}} +\entry{SIGKILL}{581}{\code {SIGKILL}} +\entry{SIGHUP}{581}{\code {SIGHUP}} +\entry{SIGALRM}{581}{\code {SIGALRM}} +\entry{SIGVTALRM}{582}{\code {SIGVTALRM}} +\entry{SIGPROF}{582}{\code {SIGPROF}} +\entry{SIGIO}{582}{\code {SIGIO}} +\entry{SIGURG}{582}{\code {SIGURG}} +\entry{SIGPOLL}{582}{\code {SIGPOLL}} +\entry{SIGCHLD}{582}{\code {SIGCHLD}} +\entry{SIGCLD}{583}{\code {SIGCLD}} +\entry{SIGCONT}{583}{\code {SIGCONT}} +\entry{SIGSTOP}{583}{\code {SIGSTOP}} +\entry{SIGTSTP}{583}{\code {SIGTSTP}} +\entry{SIGTTIN}{583}{\code {SIGTTIN}} +\entry{SIGTTOU}{583}{\code {SIGTTOU}} +\entry{SIGPIPE}{584}{\code {SIGPIPE}} +\entry{SIGLOST}{584}{\code {SIGLOST}} +\entry{SIGXCPU}{584}{\code {SIGXCPU}} +\entry{SIGXFSZ}{585}{\code {SIGXFSZ}} +\entry{SIGUSR1}{585}{\code {SIGUSR1}} +\entry{SIGUSR2}{585}{\code {SIGUSR2}} +\entry{SIGWINCH}{585}{\code {SIGWINCH}} +\entry{SIGINFO}{585}{\code {SIGINFO}} +\entry{sys{\_}siglist}{586}{\code {sys_siglist}} +\entry{SIG{\_}DFL}{587}{\code {SIG_DFL}} +\entry{SIG{\_}IGN}{587}{\code {SIG_IGN}} +\entry{SIG{\_}ERR}{588}{\code {SIG_ERR}} +\entry{SA{\_}NOCLDSTOP}{591}{\code {SA_NOCLDSTOP}} +\entry{SA{\_}ONSTACK}{591}{\code {SA_ONSTACK}} +\entry{SA{\_}RESTART}{592}{\code {SA_RESTART}} +\entry{SIG{\_}BLOCK}{610}{\code {SIG_BLOCK}} +\entry{SIG{\_}UNBLOCK}{610}{\code {SIG_UNBLOCK}} +\entry{SIG{\_}SETMASK}{610}{\code {SIG_SETMASK}} +\entry{SIGSTKSZ}{618}{\code {SIGSTKSZ}} +\entry{MINSIGSTKSZ}{618}{\code {MINSIGSTKSZ}} +\entry{SS{\_}DISABLE}{618}{\code {SS_DISABLE}} +\entry{SS{\_}ONSTACK}{618}{\code {SS_ONSTACK}} +\entry{SV{\_}ONSTACK}{620}{\code {SV_ONSTACK}} +\entry{SV{\_}INTERRUPT}{620}{\code {SV_INTERRUPT}} +\entry{SV{\_}RESETHAND}{620}{\code {SV_RESETHAND}} +\entry{opterr}{625}{\code {opterr}} +\entry{optopt}{625}{\code {optopt}} +\entry{optind}{625}{\code {optind}} +\entry{optarg}{625}{\code {optarg}} +\entry{argp{\_}program{\_}version}{633}{\code {argp_program_version}} +\entry{argp{\_}program{\_}bug{\_}address}{633}{\code {argp_program_bug_address}} +\entry{argp{\_}program{\_}version{\_}hook}{633}{\code {argp_program_version_hook}} +\entry{argp{\_}err{\_}exit{\_}status}{633}{\code {argp_err_exit_status}} +\entry{OPTION{\_}ARG{\_}OPTIONAL}{635}{\code {OPTION_ARG_OPTIONAL}} +\entry{OPTION{\_}HIDDEN}{636}{\code {OPTION_HIDDEN}} +\entry{OPTION{\_}ALIAS}{636}{\code {OPTION_ALIAS}} +\entry{OPTION{\_}DOC}{636}{\code {OPTION_DOC}} +\entry{OPTION{\_}NO{\_}USAGE}{636}{\code {OPTION_NO_USAGE}} +\entry{ARGP{\_}ERR{\_}UNKNOWN}{637}{\code {ARGP_ERR_UNKNOWN}} +\entry{ARGP{\_}KEY{\_}ARG}{637}{\code {ARGP_KEY_ARG}} +\entry{ARGP{\_}KEY{\_}ARGS}{638}{\code {ARGP_KEY_ARGS}} +\entry{ARGP{\_}KEY{\_}END}{638}{\code {ARGP_KEY_END}} +\entry{ARGP{\_}KEY{\_}NO{\_}ARGS}{638}{\code {ARGP_KEY_NO_ARGS}} +\entry{ARGP{\_}KEY{\_}INIT}{638}{\code {ARGP_KEY_INIT}} +\entry{ARGP{\_}KEY{\_}SUCCESS}{638}{\code {ARGP_KEY_SUCCESS}} +\entry{ARGP{\_}KEY{\_}ERROR}{639}{\code {ARGP_KEY_ERROR}} +\entry{ARGP{\_}KEY{\_}FINI}{639}{\code {ARGP_KEY_FINI}} +\entry{ARGP{\_}PARSE{\_}ARGV0}{643}{\code {ARGP_PARSE_ARGV0}} +\entry{ARGP{\_}NO{\_}ERRS}{643}{\code {ARGP_NO_ERRS}} +\entry{ARGP{\_}NO{\_}ARGS}{643}{\code {ARGP_NO_ARGS}} +\entry{ARGP{\_}IN{\_}ORDER}{643}{\code {ARGP_IN_ORDER}} +\entry{ARGP{\_}NO{\_}HELP}{643}{\code {ARGP_NO_HELP}} +\entry{ARGP{\_}NO{\_}EXIT}{643}{\code {ARGP_NO_EXIT}} +\entry{ARGP{\_}LONG{\_}ONLY}{643}{\code {ARGP_LONG_ONLY}} +\entry{ARGP{\_}SILENT}{643}{\code {ARGP_SILENT}} +\entry{ARGP{\_}KEY{\_}HELP{\_}PRE{\_}DOC}{644}{\code {ARGP_KEY_HELP_PRE_DOC}} +\entry{ARGP{\_}KEY{\_}HELP{\_}POST{\_}DOC}{644}{\code {ARGP_KEY_HELP_POST_DOC}} +\entry{ARGP{\_}KEY{\_}HELP{\_}HEADER}{644}{\code {ARGP_KEY_HELP_HEADER}} +\entry{ARGP{\_}KEY{\_}HELP{\_}EXTRA}{644}{\code {ARGP_KEY_HELP_EXTRA}} +\entry{ARGP{\_}KEY{\_}HELP{\_}DUP{\_}ARGS{\_}NOTE}{644}{\code {ARGP_KEY_HELP_DUP_ARGS_NOTE}} +\entry{ARGP{\_}KEY{\_}HELP{\_}ARGS{\_}DOC}{644}{\code {ARGP_KEY_HELP_ARGS_DOC}} +\entry{ARGP{\_}HELP{\_}USAGE}{645}{\code {ARGP_HELP_USAGE}} +\entry{ARGP{\_}HELP{\_}SHORT{\_}USAGE}{645}{\code {ARGP_HELP_SHORT_USAGE}} +\entry{ARGP{\_}HELP{\_}SEE}{645}{\code {ARGP_HELP_SEE}} +\entry{ARGP{\_}HELP{\_}LONG}{645}{\code {ARGP_HELP_LONG}} +\entry{ARGP{\_}HELP{\_}PRE{\_}DOC}{645}{\code {ARGP_HELP_PRE_DOC}} +\entry{ARGP{\_}HELP{\_}POST{\_}DOC}{645}{\code {ARGP_HELP_POST_DOC}} +\entry{ARGP{\_}HELP{\_}DOC}{645}{\code {ARGP_HELP_DOC}} +\entry{ARGP{\_}HELP{\_}BUG{\_}ADDR}{645}{\code {ARGP_HELP_BUG_ADDR}} +\entry{ARGP{\_}HELP{\_}LONG{\_}ONLY}{645}{\code {ARGP_HELP_LONG_ONLY}} +\entry{ARGP{\_}HELP{\_}EXIT{\_}ERR}{646}{\code {ARGP_HELP_EXIT_ERR}} +\entry{ARGP{\_}HELP{\_}EXIT{\_}OK}{646}{\code {ARGP_HELP_EXIT_OK}} +\entry{ARGP{\_}HELP{\_}STD{\_}ERR}{646}{\code {ARGP_HELP_STD_ERR}} +\entry{ARGP{\_}HELP{\_}STD{\_}USAGE}{646}{\code {ARGP_HELP_STD_USAGE}} +\entry{ARGP{\_}HELP{\_}STD{\_}HELP}{646}{\code {ARGP_HELP_STD_HELP}} +\entry{environ}{660}{\code {environ}} +\entry{EXIT{\_}SUCCESS}{665}{\code {EXIT_SUCCESS}} +\entry{EXIT{\_}FAILURE}{665}{\code {EXIT_FAILURE}} +\entry{L{\_}ctermid}{696}{\code {L_ctermid}} +\entry{aliases}{701}{\code {aliases}} +\entry{ethers}{701}{\code {ethers}} +\entry{group}{701}{\code {group}} +\entry{hosts}{701}{\code {hosts}} +\entry{netgroup}{701}{\code {netgroup}} +\entry{networks}{701}{\code {networks}} +\entry{protocols}{701}{\code {protocols}} +\entry{passwd}{701}{\code {passwd}} +\entry{rpc}{701}{\code {rpc}} +\entry{services}{701}{\code {services}} +\entry{shadow}{702}{\code {shadow}} +\entry{NSS{\_}STATUS{\_}TRYAGAIN}{706}{\code {NSS_STATUS_TRYAGAIN}} +\entry{NSS{\_}STATUS{\_}UNAVAIL}{706}{\code {NSS_STATUS_UNAVAIL}} +\entry{NSS{\_}STATUS{\_}NOTFOUND}{706}{\code {NSS_STATUS_NOTFOUND}} +\entry{NSS{\_}STATUS{\_}SUCCESS}{706}{\code {NSS_STATUS_SUCCESS}} +\entry{L{\_}cuserid}{721}{\code {L_cuserid}} +\entry{EMPTY}{722}{\code {EMPTY}} +\entry{RUN{\_}LVL}{722}{\code {RUN_LVL}} +\entry{BOOT{\_}TIME}{722}{\code {BOOT_TIME}} +\entry{OLD{\_}TIME}{722}{\code {OLD_TIME}} +\entry{NEW{\_}TIME}{722}{\code {NEW_TIME}} +\entry{INIT{\_}PROCESS}{722}{\code {INIT_PROCESS}} +\entry{LOGIN{\_}PROCESS}{722}{\code {LOGIN_PROCESS}} +\entry{USER{\_}PROCESS}{722}{\code {USER_PROCESS}} +\entry{DEAD{\_}PROCESS}{723}{\code {DEAD_PROCESS}} +\entry{ACCOUNTING}{723}{\code {ACCOUNTING}} +\entry{{\_}PATH{\_}UTMP}{725}{\code {_PATH_UTMP}} +\entry{{\_}PATH{\_}WTMP}{725}{\code {_PATH_WTMP}} +\entry{EMPTY}{726}{\code {EMPTY}} +\entry{RUN{\_}LVL}{726}{\code {RUN_LVL}} +\entry{BOOT{\_}TIME}{726}{\code {BOOT_TIME}} +\entry{OLD{\_}TIME}{727}{\code {OLD_TIME}} +\entry{NEW{\_}TIME}{727}{\code {NEW_TIME}} +\entry{INIT{\_}PROCESS}{727}{\code {INIT_PROCESS}} +\entry{LOGIN{\_}PROCESS}{727}{\code {LOGIN_PROCESS}} +\entry{USER{\_}PROCESS}{727}{\code {USER_PROCESS}} +\entry{DEAD{\_}PROCESS}{727}{\code {DEAD_PROCESS}} +\entry{{\_}PATH{\_}FSTAB}{743}{\code {_PATH_FSTAB}} +\entry{{\_}PATH{\_}MNTTAB}{743}{\code {_PATH_MNTTAB}} +\entry{FSTAB}{743}{\code {FSTAB}} +\entry{{\_}PATH{\_}MOUNTED}{743}{\code {_PATH_MOUNTED}} +\entry{FSTAB{\_}RW}{744}{\code {FSTAB_RW}} +\entry{FSTAB{\_}RQ}{744}{\code {FSTAB_RQ}} +\entry{FSTAB{\_}RO}{744}{\code {FSTAB_RO}} +\entry{FSTAB{\_}SW}{744}{\code {FSTAB_SW}} +\entry{FSTAB{\_}XX}{744}{\code {FSTAB_XX}} +\entry{MNTTYPE{\_}IGNORE}{746}{\code {MNTTYPE_IGNORE}} +\entry{MNTTYPE{\_}NFS}{746}{\code {MNTTYPE_NFS}} +\entry{MNTTYPE{\_}SWAP}{746}{\code {MNTTYPE_SWAP}} +\entry{MNTOPT{\_}DEFAULTS}{746}{\code {MNTOPT_DEFAULTS}} +\entry{MNTOPT{\_}RO}{746}{\code {MNTOPT_RO}} +\entry{MNTOPT{\_}RW}{746}{\code {MNTOPT_RW}} +\entry{MNTOPT{\_}SUID}{746}{\code {MNTOPT_SUID}} +\entry{MNTOPT{\_}NOSUID}{747}{\code {MNTOPT_NOSUID}} +\entry{MNTOPT{\_}NOAUTO}{747}{\code {MNTOPT_NOAUTO}} +\entry{ARG{\_}MAX}{755}{\code {ARG_MAX}} +\entry{CHILD{\_}MAX}{755}{\code {CHILD_MAX}} +\entry{OPEN{\_}MAX}{755}{\code {OPEN_MAX}} +\entry{STREAM{\_}MAX}{755}{\code {STREAM_MAX}} +\entry{TZNAME{\_}MAX}{755}{\code {TZNAME_MAX}} +\entry{NGROUPS{\_}MAX}{756}{\code {NGROUPS_MAX}} +\entry{SSIZE{\_}MAX}{756}{\code {SSIZE_MAX}} +\entry{RE{\_}DUP{\_}MAX}{756}{\code {RE_DUP_MAX}} +\entry{{\_}POSIX{\_}JOB{\_}CONTROL}{756}{\code {_POSIX_JOB_CONTROL}} +\entry{{\_}POSIX{\_}SAVED{\_}IDS}{756}{\code {_POSIX_SAVED_IDS}} +\entry{{\_}POSIX2{\_}C{\_}DEV}{757}{\code {_POSIX2_C_DEV}} +\entry{{\_}POSIX2{\_}FORT{\_}DEV}{757}{\code {_POSIX2_FORT_DEV}} +\entry{{\_}POSIX2{\_}FORT{\_}RUN}{757}{\code {_POSIX2_FORT_RUN}} +\entry{{\_}POSIX2{\_}LOCALEDEF}{757}{\code {_POSIX2_LOCALEDEF}} +\entry{{\_}POSIX2{\_}SW{\_}DEV}{757}{\code {_POSIX2_SW_DEV}} +\entry{{\_}POSIX{\_}VERSION}{757}{\code {_POSIX_VERSION}} +\entry{{\_}POSIX2{\_}C{\_}VERSION}{758}{\code {_POSIX2_C_VERSION}} +\entry{LINK{\_}MAX}{767}{\code {LINK_MAX}} +\entry{MAX{\_}CANON}{768}{\code {MAX_CANON}} +\entry{MAX{\_}INPUT}{768}{\code {MAX_INPUT}} +\entry{NAME{\_}MAX}{768}{\code {NAME_MAX}} +\entry{PATH{\_}MAX}{768}{\code {PATH_MAX}} +\entry{PIPE{\_}BUF}{768}{\code {PIPE_BUF}} +\entry{MAXNAMLEN}{768}{\code {MAXNAMLEN}} +\entry{FILENAME{\_}MAX}{768}{\code {FILENAME_MAX}} +\entry{{\_}POSIX{\_}CHOWN{\_}RESTRICTED}{769}{\code {_POSIX_CHOWN_RESTRICTED}} +\entry{{\_}POSIX{\_}NO{\_}TRUNC}{769}{\code {_POSIX_NO_TRUNC}} +\entry{{\_}POSIX{\_}VDISABLE}{769}{\code {_POSIX_VDISABLE}} +\entry{BC{\_}BASE{\_}MAX}{772}{\code {BC_BASE_MAX}} +\entry{BC{\_}DIM{\_}MAX}{772}{\code {BC_DIM_MAX}} +\entry{BC{\_}SCALE{\_}MAX}{772}{\code {BC_SCALE_MAX}} +\entry{BC{\_}STRING{\_}MAX}{772}{\code {BC_STRING_MAX}} +\entry{COLL{\_}WEIGHTS{\_}MAX}{772}{\code {COLL_WEIGHTS_MAX}} +\entry{EXPR{\_}NEST{\_}MAX}{772}{\code {EXPR_NEST_MAX}} +\entry{LINE{\_}MAX}{772}{\code {LINE_MAX}} +\entry{EQUIV{\_}CLASS{\_}MAX}{772}{\code {EQUIV_CLASS_MAX}} +\entry{SEM{\_}VALUE{\_}MAX}{798}{\code {SEM_VALUE_MAX}} +\entry{NDEBUG}{807}{\code {NDEBUG}} +\entry{NULL}{814}{\code {NULL}} +\entry{SCHAR{\_}MIN}{816}{\code {SCHAR_MIN}} +\entry{SCHAR{\_}MAX}{816}{\code {SCHAR_MAX}} +\entry{UCHAR{\_}MAX}{816}{\code {UCHAR_MAX}} +\entry{CHAR{\_}MIN}{816}{\code {CHAR_MIN}} +\entry{CHAR{\_}MAX}{817}{\code {CHAR_MAX}} +\entry{SHRT{\_}MIN}{817}{\code {SHRT_MIN}} +\entry{SHRT{\_}MAX}{817}{\code {SHRT_MAX}} +\entry{USHRT{\_}MAX}{817}{\code {USHRT_MAX}} +\entry{INT{\_}MIN}{817}{\code {INT_MIN}} +\entry{INT{\_}MAX}{817}{\code {INT_MAX}} +\entry{UINT{\_}MAX}{817}{\code {UINT_MAX}} +\entry{LONG{\_}MIN}{817}{\code {LONG_MIN}} +\entry{LONG{\_}MAX}{817}{\code {LONG_MAX}} +\entry{ULONG{\_}MAX}{817}{\code {ULONG_MAX}} +\entry{LONG{\_}LONG{\_}MIN}{817}{\code {LONG_LONG_MIN}} +\entry{LONG{\_}LONG{\_}MAX}{817}{\code {LONG_LONG_MAX}} +\entry{ULONG{\_}LONG{\_}MAX}{817}{\code {ULONG_LONG_MAX}} +\entry{WCHAR{\_}MAX}{817}{\code {WCHAR_MAX}} +\entry{FLT{\_}ROUNDS}{819}{\code {FLT_ROUNDS}} +\entry{FLT{\_}RADIX}{820}{\code {FLT_RADIX}} +\entry{FLT{\_}MANT{\_}DIG}{820}{\code {FLT_MANT_DIG}} +\entry{DBL{\_}MANT{\_}DIG}{820}{\code {DBL_MANT_DIG}} +\entry{LDBL{\_}MANT{\_}DIG}{820}{\code {LDBL_MANT_DIG}} +\entry{FLT{\_}DIG}{820}{\code {FLT_DIG}} +\entry{DBL{\_}DIG}{820}{\code {DBL_DIG}} +\entry{LDBL{\_}DIG}{820}{\code {LDBL_DIG}} +\entry{FLT{\_}MIN{\_}EXP}{820}{\code {FLT_MIN_EXP}} +\entry{DBL{\_}MIN{\_}EXP}{821}{\code {DBL_MIN_EXP}} +\entry{LDBL{\_}MIN{\_}EXP}{821}{\code {LDBL_MIN_EXP}} +\entry{FLT{\_}MIN{\_}10{\_}EXP}{821}{\code {FLT_MIN_10_EXP}} +\entry{DBL{\_}MIN{\_}10{\_}EXP}{821}{\code {DBL_MIN_10_EXP}} +\entry{LDBL{\_}MIN{\_}10{\_}EXP}{821}{\code {LDBL_MIN_10_EXP}} +\entry{FLT{\_}MAX{\_}EXP}{821}{\code {FLT_MAX_EXP}} +\entry{DBL{\_}MAX{\_}EXP}{821}{\code {DBL_MAX_EXP}} +\entry{LDBL{\_}MAX{\_}EXP}{821}{\code {LDBL_MAX_EXP}} +\entry{FLT{\_}MAX{\_}10{\_}EXP}{821}{\code {FLT_MAX_10_EXP}} +\entry{DBL{\_}MAX{\_}10{\_}EXP}{821}{\code {DBL_MAX_10_EXP}} +\entry{LDBL{\_}MAX{\_}10{\_}EXP}{821}{\code {LDBL_MAX_10_EXP}} +\entry{FLT{\_}MAX}{821}{\code {FLT_MAX}} +\entry{DBL{\_}MAX}{821}{\code {DBL_MAX}} +\entry{LDBL{\_}MAX}{821}{\code {LDBL_MAX}} +\entry{FLT{\_}MIN}{821}{\code {FLT_MIN}} +\entry{DBL{\_}MIN}{822}{\code {DBL_MIN}} +\entry{LDBL{\_}MIN}{822}{\code {LDBL_MIN}} +\entry{FLT{\_}EPSILON}{822}{\code {FLT_EPSILON}} +\entry{DBL{\_}EPSILON}{822}{\code {DBL_EPSILON}} +\entry{LDBL{\_}EPSILON}{822}{\code {LDBL_EPSILON}} diff -adurpN glibc-2.2/manual/libc.vrs glibc-2.2.1/manual/libc.vrs --- glibc-2.2/manual/libc.vrs Fri Jun 30 23:40:47 2000 +++ glibc-2.2.1/manual/libc.vrs Sun Jan 7 09:11:17 2001 @@ -9,34 +9,34 @@ \entry {\code {__memalign_hook}}{42} \entry {\code {__realloc_hook}}{41} \entry {\code {_BSD_SOURCE}}{8} -\entry {\code {_Complex_I}}{513} +\entry {\code {_Complex_I}}{511} \entry {\code {_FILE_OFFSET_BITS}}{9} \entry {\code {_GNU_SOURCE}}{10} -\entry {\code {_IOFBF}}{275} -\entry {\code {_IOLBF}}{275} -\entry {\code {_IONBF}}{275} +\entry {\code {_IOFBF}}{273} +\entry {\code {_IOLBF}}{273} +\entry {\code {_IONBF}}{274} \entry {\code {_ISOC99_SOURCE}}{9} \entry {\code {_LARGEFILE_SOURCE}}{9} \entry {\code {_LARGEFILE64_SOURCE}}{9} -\entry {\code {_PATH_FSTAB}}{745} -\entry {\code {_PATH_MNTTAB}}{745} -\entry {\code {_PATH_MOUNTED}}{745} -\entry {\code {_PATH_UTMP}}{727} -\entry {\code {_PATH_WTMP}}{727} +\entry {\code {_PATH_FSTAB}}{743} +\entry {\code {_PATH_MNTTAB}}{743} +\entry {\code {_PATH_MOUNTED}}{743} +\entry {\code {_PATH_UTMP}}{725} +\entry {\code {_PATH_WTMP}}{725} \entry {\code {_POSIX_C_SOURCE}}{8} -\entry {\code {_POSIX_CHOWN_RESTRICTED}}{771} -\entry {\code {_POSIX_JOB_CONTROL}}{758} -\entry {\code {_POSIX_NO_TRUNC}}{771} -\entry {\code {_POSIX_SAVED_IDS}}{758} +\entry {\code {_POSIX_CHOWN_RESTRICTED}}{769} +\entry {\code {_POSIX_JOB_CONTROL}}{756} +\entry {\code {_POSIX_NO_TRUNC}}{769} +\entry {\code {_POSIX_SAVED_IDS}}{756} \entry {\code {_POSIX_SOURCE}}{7} -\entry {\code {_POSIX_VDISABLE}}{443, 771} -\entry {\code {_POSIX_VERSION}}{759} -\entry {\code {_POSIX2_C_DEV}}{759} -\entry {\code {_POSIX2_C_VERSION}}{760} -\entry {\code {_POSIX2_FORT_DEV}}{759} -\entry {\code {_POSIX2_FORT_RUN}}{759} -\entry {\code {_POSIX2_LOCALEDEF}}{759} -\entry {\code {_POSIX2_SW_DEV}}{759} +\entry {\code {_POSIX_VDISABLE}}{441, 769} +\entry {\code {_POSIX_VERSION}}{757} +\entry {\code {_POSIX2_C_DEV}}{757} +\entry {\code {_POSIX2_C_VERSION}}{758} +\entry {\code {_POSIX2_FORT_DEV}}{757} +\entry {\code {_POSIX2_FORT_RUN}}{757} +\entry {\code {_POSIX2_LOCALEDEF}}{757} +\entry {\code {_POSIX2_SW_DEV}}{757} \entry {\code {_REENTRANT}}{10} \entry {\code {_SVID_SOURCE}}{8} \entry {\code {_THREAD_SAFE}}{10} @@ -62,106 +62,106 @@ \entry {\code {ABMON_7}}{158} \entry {\code {ABMON_8}}{158} \entry {\code {ABMON_9}}{158} -\entry {\code {ACCOUNTING}}{725} -\entry {\code {AF_FILE}}{384} -\entry {\code {AF_INET}}{384} -\entry {\code {AF_LOCAL}}{384} -\entry {\code {AF_UNIX}}{384} -\entry {\code {AF_UNSPEC}}{384} -\entry {\code {aliases}}{703} +\entry {\code {ACCOUNTING}}{723} +\entry {\code {AF_FILE}}{382} +\entry {\code {AF_INET}}{382} +\entry {\code {AF_LOCAL}}{382} +\entry {\code {AF_UNIX}}{382} +\entry {\code {AF_UNSPEC}}{382} +\entry {\code {aliases}}{701} \entry {\code {ALT_DIGITS}}{160} -\entry {\code {ALTWERASE}}{441} +\entry {\code {ALTWERASE}}{439} \entry {\code {AM_STR}}{159} -\entry {\code {ARG_MAX}}{757} -\entry {\code {argp_err_exit_status}}{635} -\entry {\code {ARGP_ERR_UNKNOWN}}{639} -\entry {\code {ARGP_HELP_BUG_ADDR}}{647} -\entry {\code {ARGP_HELP_DOC}}{647} -\entry {\code {ARGP_HELP_EXIT_ERR}}{647} -\entry {\code {ARGP_HELP_EXIT_OK}}{647} -\entry {\code {ARGP_HELP_LONG}}{647} -\entry {\code {ARGP_HELP_LONG_ONLY}}{647} -\entry {\code {ARGP_HELP_POST_DOC}}{647} -\entry {\code {ARGP_HELP_PRE_DOC}}{647} -\entry {\code {ARGP_HELP_SEE}}{647} -\entry {\code {ARGP_HELP_SHORT_USAGE}}{647} -\entry {\code {ARGP_HELP_STD_ERR}}{647} -\entry {\code {ARGP_HELP_STD_HELP}}{647} -\entry {\code {ARGP_HELP_STD_USAGE}}{647} -\entry {\code {ARGP_HELP_USAGE}}{647} -\entry {\code {ARGP_IN_ORDER}}{645} -\entry {\code {ARGP_KEY_ARG}}{639} -\entry {\code {ARGP_KEY_ARGS}}{639} -\entry {\code {ARGP_KEY_END}}{640} -\entry {\code {ARGP_KEY_ERROR}}{640} -\entry {\code {ARGP_KEY_FINI}}{640} -\entry {\code {ARGP_KEY_HELP_ARGS_DOC}}{646} -\entry {\code {ARGP_KEY_HELP_DUP_ARGS_NOTE}}{646} -\entry {\code {ARGP_KEY_HELP_EXTRA}}{646} -\entry {\code {ARGP_KEY_HELP_HEADER}}{646} -\entry {\code {ARGP_KEY_HELP_POST_DOC}}{646} -\entry {\code {ARGP_KEY_HELP_PRE_DOC}}{646} -\entry {\code {ARGP_KEY_INIT}}{640} -\entry {\code {ARGP_KEY_NO_ARGS}}{640} -\entry {\code {ARGP_KEY_SUCCESS}}{640} -\entry {\code {ARGP_LONG_ONLY}}{645} -\entry {\code {ARGP_NO_ARGS}}{645} -\entry {\code {ARGP_NO_ERRS}}{645} -\entry {\code {ARGP_NO_EXIT}}{645} -\entry {\code {ARGP_NO_HELP}}{645} -\entry {\code {ARGP_PARSE_ARGV0}}{644} -\entry {\code {argp_program_bug_address}}{635} -\entry {\code {argp_program_version}}{635} -\entry {\code {argp_program_version_hook}}{635} -\entry {\code {ARGP_SILENT}}{645} +\entry {\code {ARG_MAX}}{755} +\entry {\code {argp_err_exit_status}}{633} +\entry {\code {ARGP_ERR_UNKNOWN}}{637} +\entry {\code {ARGP_HELP_BUG_ADDR}}{645} +\entry {\code {ARGP_HELP_DOC}}{645} +\entry {\code {ARGP_HELP_EXIT_ERR}}{646} +\entry {\code {ARGP_HELP_EXIT_OK}}{646} +\entry {\code {ARGP_HELP_LONG}}{645} +\entry {\code {ARGP_HELP_LONG_ONLY}}{645} +\entry {\code {ARGP_HELP_POST_DOC}}{645} +\entry {\code {ARGP_HELP_PRE_DOC}}{645} +\entry {\code {ARGP_HELP_SEE}}{645} +\entry {\code {ARGP_HELP_SHORT_USAGE}}{645} +\entry {\code {ARGP_HELP_STD_ERR}}{646} +\entry {\code {ARGP_HELP_STD_HELP}}{646} +\entry {\code {ARGP_HELP_STD_USAGE}}{646} +\entry {\code {ARGP_HELP_USAGE}}{645} +\entry {\code {ARGP_IN_ORDER}}{643} +\entry {\code {ARGP_KEY_ARG}}{637} +\entry {\code {ARGP_KEY_ARGS}}{638} +\entry {\code {ARGP_KEY_END}}{638} +\entry {\code {ARGP_KEY_ERROR}}{639} +\entry {\code {ARGP_KEY_FINI}}{639} +\entry {\code {ARGP_KEY_HELP_ARGS_DOC}}{644} +\entry {\code {ARGP_KEY_HELP_DUP_ARGS_NOTE}}{644} +\entry {\code {ARGP_KEY_HELP_EXTRA}}{644} +\entry {\code {ARGP_KEY_HELP_HEADER}}{644} +\entry {\code {ARGP_KEY_HELP_POST_DOC}}{644} +\entry {\code {ARGP_KEY_HELP_PRE_DOC}}{644} +\entry {\code {ARGP_KEY_INIT}}{638} +\entry {\code {ARGP_KEY_NO_ARGS}}{638} +\entry {\code {ARGP_KEY_SUCCESS}}{638} +\entry {\code {ARGP_LONG_ONLY}}{643} +\entry {\code {ARGP_NO_ARGS}}{643} +\entry {\code {ARGP_NO_ERRS}}{643} +\entry {\code {ARGP_NO_EXIT}}{643} +\entry {\code {ARGP_NO_HELP}}{643} +\entry {\code {ARGP_PARSE_ARGV0}}{643} +\entry {\code {argp_program_bug_address}}{633} +\entry {\code {argp_program_version}}{633} +\entry {\code {argp_program_version_hook}}{633} +\entry {\code {ARGP_SILENT}}{643} \initial {B} -\entry {\code {B0}}{442} -\entry {\code {B110}}{442} -\entry {\code {B115200}}{442} -\entry {\code {B1200}}{442} -\entry {\code {B134}}{442} -\entry {\code {B150}}{442} -\entry {\code {B1800}}{442} -\entry {\code {B19200}}{442} -\entry {\code {B200}}{442} -\entry {\code {B230400}}{442} -\entry {\code {B2400}}{442} -\entry {\code {B300}}{442} -\entry {\code {B38400}}{442} -\entry {\code {B460800}}{442} -\entry {\code {B4800}}{442} -\entry {\code {B50}}{442} -\entry {\code {B57600}}{442} -\entry {\code {B600}}{442} -\entry {\code {B75}}{442} -\entry {\code {B9600}}{442} -\entry {\code {BC_BASE_MAX}}{774} -\entry {\code {BC_DIM_MAX}}{774} -\entry {\code {BC_SCALE_MAX}}{774} -\entry {\code {BC_STRING_MAX}}{774} -\entry {\code {BOOT_TIME}}{724, 728} -\entry {\code {BRKINT}}{435} -\entry {\code {BUFSIZ}}{275} +\entry {\code {B0}}{440} +\entry {\code {B110}}{440} +\entry {\code {B115200}}{440} +\entry {\code {B1200}}{440} +\entry {\code {B134}}{440} +\entry {\code {B150}}{440} +\entry {\code {B1800}}{440} +\entry {\code {B19200}}{440} +\entry {\code {B200}}{440} +\entry {\code {B230400}}{440} +\entry {\code {B2400}}{440} +\entry {\code {B300}}{440} +\entry {\code {B38400}}{440} +\entry {\code {B460800}}{440} +\entry {\code {B4800}}{440} +\entry {\code {B50}}{440} +\entry {\code {B57600}}{440} +\entry {\code {B600}}{440} +\entry {\code {B75}}{440} +\entry {\code {B9600}}{440} +\entry {\code {BC_BASE_MAX}}{772} +\entry {\code {BC_DIM_MAX}}{772} +\entry {\code {BC_SCALE_MAX}}{772} +\entry {\code {BC_STRING_MAX}}{772} +\entry {\code {BOOT_TIME}}{722, 726} +\entry {\code {BRKINT}}{433} +\entry {\code {BUFSIZ}}{274} \initial {C} -\entry {\code {CCTS_OFLOW}}{438} -\entry {\code {CHAR_MAX}}{819} -\entry {\code {CHAR_MIN}}{818} -\entry {\code {CHILD_MAX}}{757} -\entry {\code {CIGNORE}}{438} -\entry {\code {CLK_TCK}}{526} -\entry {\code {CLOCAL}}{437} -\entry {\code {CLOCKS_PER_SEC}}{526} -\entry {\code {COLL_WEIGHTS_MAX}}{774} -\entry {\code {COREFILE}}{580} -\entry {\code {CREAD}}{437} +\entry {\code {CCTS_OFLOW}}{436} +\entry {\code {CHAR_MAX}}{817} +\entry {\code {CHAR_MIN}}{816} +\entry {\code {CHILD_MAX}}{755} +\entry {\code {CIGNORE}}{436} +\entry {\code {CLK_TCK}}{524} +\entry {\code {CLOCAL}}{435} +\entry {\code {CLOCKS_PER_SEC}}{524} +\entry {\code {COLL_WEIGHTS_MAX}}{772} +\entry {\code {COREFILE}}{578} +\entry {\code {CREAD}}{435} \entry {\code {CRNCYSTR}}{160} -\entry {\code {CRTS_IFLOW}}{438} -\entry {\code {CS5}}{438} -\entry {\code {CS6}}{438} -\entry {\code {CS7}}{438} -\entry {\code {CS8}}{438} -\entry {\code {CSIZE}}{438} -\entry {\code {CSTOPB}}{437} +\entry {\code {CRTS_IFLOW}}{436} +\entry {\code {CS5}}{436} +\entry {\code {CS6}}{436} +\entry {\code {CS7}}{436} +\entry {\code {CS8}}{436} +\entry {\code {CSIZE}}{436} +\entry {\code {CSTOPB}}{435} \entry {\code {CURRENCY_SYMBOL}}{160} \initial {D} \entry {\code {D_FMT}}{159} @@ -173,17 +173,17 @@ \entry {\code {DAY_5}}{158} \entry {\code {DAY_6}}{158} \entry {\code {DAY_7}}{158} -\entry {\code {daylight}}{551} -\entry {\code {DBL_DIG}}{822} -\entry {\code {DBL_EPSILON}}{824} -\entry {\code {DBL_MANT_DIG}}{822} -\entry {\code {DBL_MAX}}{823} -\entry {\code {DBL_MAX_10_EXP}}{823} -\entry {\code {DBL_MAX_EXP}}{823} -\entry {\code {DBL_MIN}}{824} -\entry {\code {DBL_MIN_10_EXP}}{823} -\entry {\code {DBL_MIN_EXP}}{823} -\entry {\code {DEAD_PROCESS}}{725, 729} +\entry {\code {daylight}}{549} +\entry {\code {DBL_DIG}}{820} +\entry {\code {DBL_EPSILON}}{822} +\entry {\code {DBL_MANT_DIG}}{820} +\entry {\code {DBL_MAX}}{821} +\entry {\code {DBL_MAX_10_EXP}}{821} +\entry {\code {DBL_MAX_EXP}}{821} +\entry {\code {DBL_MIN}}{822} +\entry {\code {DBL_MIN_10_EXP}}{821} +\entry {\code {DBL_MIN_EXP}}{821} +\entry {\code {DEAD_PROCESS}}{723, 727} \entry {\code {DECIMAL_POINT}}{161} \initial {E} \entry {\code {E2BIG}}{17} @@ -197,7 +197,7 @@ \entry {\code {EAUTH}}{24} \entry {\code {EBACKGROUND}}{24} \entry {\code {EBADE}}{25} -\entry {\code {EBADF}}{17, 451} +\entry {\code {EBADF}}{17, 449} \entry {\code {EBADFD}}{26} \entry {\code {EBADMSG}}{25} \entry {\code {EBADR}}{25} @@ -207,13 +207,13 @@ \entry {\code {EBFONT}}{26} \entry {\code {EBUSY}}{17} \entry {\code {ECHILD}}{17} -\entry {\code {ECHO}}{439} -\entry {\code {ECHOCTL}}{440} -\entry {\code {ECHOE}}{439} -\entry {\code {ECHOK}}{439} -\entry {\code {ECHOKE}}{440} -\entry {\code {ECHONL}}{440} -\entry {\code {ECHOPRT}}{439} +\entry {\code {ECHO}}{437} +\entry {\code {ECHOCTL}}{438} +\entry {\code {ECHOE}}{437} +\entry {\code {ECHOK}}{437} +\entry {\code {ECHOKE}}{438} +\entry {\code {ECHONL}}{438} +\entry {\code {ECHOPRT}}{437} \entry {\code {ECHRNG}}{25} \entry {\code {ECOMM}}{26} \entry {\code {ECONNABORTED}}{21} @@ -240,7 +240,7 @@ \entry {\code {EILSEQ}}{24} \entry {\code {EINPROGRESS}}{20} \entry {\code {EINTR}}{16} -\entry {\code {EINVAL}}{18, 451} +\entry {\code {EINVAL}}{18, 449} \entry {\code {EIO}}{16} \entry {\code {EISCONN}}{21} \entry {\code {EISDIR}}{18} @@ -259,7 +259,7 @@ \entry {\code {EMEDIUMTYPE}}{26} \entry {\code {EMFILE}}{18} \entry {\code {EMLINK}}{19} -\entry {\code {EMPTY}}{724, 728} +\entry {\code {EMPTY}}{722, 726} \entry {\code {EMSGSIZE}}{20} \entry {\code {EMULTIHOP}}{25} \entry {\code {ENAMETOOLONG}}{22} @@ -295,11 +295,11 @@ \entry {\code {ENOTNAM}}{26} \entry {\code {ENOTSOCK}}{20} \entry {\code {ENOTSUP}}{24} -\entry {\code {ENOTTY}}{18, 451} +\entry {\code {ENOTTY}}{18, 449} \entry {\code {ENOTUNIQ}}{26} -\entry {\code {environ}}{661} +\entry {\code {environ}}{660} \entry {\code {ENXIO}}{17} -\entry {\code {EOF}}{267} +\entry {\code {EOF}}{265} \entry {\code {EOPNOTSUPP}}{21} \entry {\code {EOVERFLOW}}{25} \entry {\code {EPERM}}{16} @@ -312,7 +312,7 @@ \entry {\code {EPROTO}}{25} \entry {\code {EPROTONOSUPPORT}}{20} \entry {\code {EPROTOTYPE}}{20} -\entry {\code {EQUIV_CLASS_MAX}}{774} +\entry {\code {EQUIV_CLASS_MAX}}{772} \entry {\code {ERA}}{159} \entry {\code {ERA_D_FMT}}{160} \entry {\code {ERA_D_T_FMT}}{160} @@ -333,7 +333,7 @@ \entry {\code {ESRMNT}}{26} \entry {\code {ESTALE}}{23} \entry {\code {ESTRPIPE}}{26} -\entry {\code {ethers}}{703} +\entry {\code {ethers}}{701} \entry {\code {ETIME}}{25} \entry {\code {ETIMEDOUT}}{22} \entry {\code {ETOOMANYREFS}}{22} @@ -344,136 +344,136 @@ \entry {\code {EWOULDBLOCK}}{20} \entry {\code {EXDEV}}{18} \entry {\code {EXFULL}}{26} -\entry {\code {EXIT_FAILURE}}{666} -\entry {\code {EXIT_SUCCESS}}{666} -\entry {\code {EXPR_NEST_MAX}}{774} -\entry {\code {EXTA}}{442} -\entry {\code {EXTB}}{442} +\entry {\code {EXIT_FAILURE}}{665} +\entry {\code {EXIT_SUCCESS}}{665} +\entry {\code {EXPR_NEST_MAX}}{772} +\entry {\code {EXTA}}{440} +\entry {\code {EXTB}}{440} \initial {F} -\entry {\code {F_DUPFD}}{321} -\entry {\code {F_GETFD}}{322} -\entry {\code {F_GETFL}}{327} -\entry {\code {F_GETLK}}{329} -\entry {\code {F_GETOWN}}{332} -\entry {\code {F_OK}}{365} -\entry {\code {F_RDLCK}}{331} -\entry {\code {F_SETFD}}{322} -\entry {\code {F_SETFL}}{327} -\entry {\code {F_SETLK}}{330} -\entry {\code {F_SETLKW}}{330} -\entry {\code {F_SETOWN}}{332} -\entry {\code {F_UNLCK}}{331} -\entry {\code {F_WRLCK}}{331} -\entry {\code {FD_CLOEXEC}}{322} -\entry {\code {FD_SETSIZE}}{304} -\entry {\code {FE_DFL_ENV}}{503} -\entry {\code {FE_DIVBYZERO}}{499} -\entry {\code {FE_DOWNWARD}}{502} -\entry {\code {FE_INEXACT}}{499} -\entry {\code {FE_INVALID}}{499} -\entry {\code {FE_NOMASK_ENV}}{504} -\entry {\code {FE_OVERFLOW}}{499} -\entry {\code {FE_TONEAREST}}{502} -\entry {\code {FE_TOWARDZERO}}{502} -\entry {\code {FE_UNDERFLOW}}{499} -\entry {\code {FE_UPWARD}}{502} -\entry {\code {FILENAME_MAX}}{770} -\entry {\code {FLT_DIG}}{822} -\entry {\code {FLT_EPSILON}}{824} -\entry {\code {FLT_MANT_DIG}}{822} -\entry {\code {FLT_MAX}}{823} -\entry {\code {FLT_MAX_10_EXP}}{823} -\entry {\code {FLT_MAX_EXP}}{823} -\entry {\code {FLT_MIN}}{823} -\entry {\code {FLT_MIN_10_EXP}}{823} -\entry {\code {FLT_MIN_EXP}}{822} -\entry {\code {FLT_RADIX}}{822} -\entry {\code {FLT_ROUNDS}}{821} -\entry {\code {FLUSHO}}{441} -\entry {\code {FOPEN_MAX}}{230} -\entry {\code {FP_FAST_FMA}}{513} -\entry {\code {FP_ILOGB0}}{470} -\entry {\code {FP_ILOGBNAN}}{470} -\entry {\code {FP_INFINITE}}{495} -\entry {\code {FP_NAN}}{494} -\entry {\code {FP_NORMAL}}{495} -\entry {\code {FP_SUBNORMAL}}{495} -\entry {\code {FP_ZERO}}{495} -\entry {\code {FPE_DECOVF_TRAP}}{581} -\entry {\code {FPE_FLTDIV_TRAP}}{581} -\entry {\code {FPE_FLTOVF_TRAP}}{581} -\entry {\code {FPE_FLTUND_TRAP}}{581} -\entry {\code {FPE_INTDIV_TRAP}}{580} -\entry {\code {FPE_INTOVF_TRAP}}{580} -\entry {\code {FPE_SUBRNG_TRAP}}{580} +\entry {\code {F_DUPFD}}{319} +\entry {\code {F_GETFD}}{320} +\entry {\code {F_GETFL}}{325} +\entry {\code {F_GETLK}}{327} +\entry {\code {F_GETOWN}}{330} +\entry {\code {F_OK}}{364} +\entry {\code {F_RDLCK}}{329} +\entry {\code {F_SETFD}}{320} +\entry {\code {F_SETFL}}{325} +\entry {\code {F_SETLK}}{328} +\entry {\code {F_SETLKW}}{328} +\entry {\code {F_SETOWN}}{330} +\entry {\code {F_UNLCK}}{329} +\entry {\code {F_WRLCK}}{329} +\entry {\code {FD_CLOEXEC}}{320} +\entry {\code {FD_SETSIZE}}{302} +\entry {\code {FE_DFL_ENV}}{501} +\entry {\code {FE_DIVBYZERO}}{497} +\entry {\code {FE_DOWNWARD}}{500} +\entry {\code {FE_INEXACT}}{497} +\entry {\code {FE_INVALID}}{497} +\entry {\code {FE_NOMASK_ENV}}{502} +\entry {\code {FE_OVERFLOW}}{497} +\entry {\code {FE_TONEAREST}}{500} +\entry {\code {FE_TOWARDZERO}}{500} +\entry {\code {FE_UNDERFLOW}}{497} +\entry {\code {FE_UPWARD}}{500} +\entry {\code {FILENAME_MAX}}{768} +\entry {\code {FLT_DIG}}{820} +\entry {\code {FLT_EPSILON}}{822} +\entry {\code {FLT_MANT_DIG}}{820} +\entry {\code {FLT_MAX}}{821} +\entry {\code {FLT_MAX_10_EXP}}{821} +\entry {\code {FLT_MAX_EXP}}{821} +\entry {\code {FLT_MIN}}{821} +\entry {\code {FLT_MIN_10_EXP}}{821} +\entry {\code {FLT_MIN_EXP}}{820} +\entry {\code {FLT_RADIX}}{820} +\entry {\code {FLT_ROUNDS}}{819} +\entry {\code {FLUSHO}}{439} +\entry {\code {FOPEN_MAX}}{228} +\entry {\code {FP_FAST_FMA}}{511} +\entry {\code {FP_ILOGB0}}{468} +\entry {\code {FP_ILOGBNAN}}{468} +\entry {\code {FP_INFINITE}}{493} +\entry {\code {FP_NAN}}{492} +\entry {\code {FP_NORMAL}}{493} +\entry {\code {FP_SUBNORMAL}}{493} +\entry {\code {FP_ZERO}}{493} +\entry {\code {FPE_DECOVF_TRAP}}{579} +\entry {\code {FPE_FLTDIV_TRAP}}{579} +\entry {\code {FPE_FLTOVF_TRAP}}{579} +\entry {\code {FPE_FLTUND_TRAP}}{579} +\entry {\code {FPE_INTDIV_TRAP}}{578} +\entry {\code {FPE_INTOVF_TRAP}}{578} +\entry {\code {FPE_SUBRNG_TRAP}}{578} \entry {\code {FRAC_DIGITS}}{161} -\entry {\code {FSTAB}}{745} -\entry {\code {FSTAB_RO}}{746} -\entry {\code {FSTAB_RQ}}{746} -\entry {\code {FSTAB_RW}}{746} -\entry {\code {FSTAB_SW}}{746} -\entry {\code {FSTAB_XX}}{746} -\entry {\code {FTW_CHDIR}}{346} -\entry {\code {FTW_D}}{343} -\entry {\code {FTW_DEPTH}}{346} -\entry {\code {FTW_DNR}}{343} -\entry {\code {FTW_DP}}{344} -\entry {\code {FTW_F}}{343} -\entry {\code {FTW_MOUNT}}{346} -\entry {\code {FTW_NS}}{343} -\entry {\code {FTW_PHYS}}{346} -\entry {\code {FTW_SL}}{343} -\entry {\code {FTW_SLN}}{344} +\entry {\code {FSTAB}}{743} +\entry {\code {FSTAB_RO}}{744} +\entry {\code {FSTAB_RQ}}{744} +\entry {\code {FSTAB_RW}}{744} +\entry {\code {FSTAB_SW}}{744} +\entry {\code {FSTAB_XX}}{744} +\entry {\code {FTW_CHDIR}}{345} +\entry {\code {FTW_D}}{342} +\entry {\code {FTW_DEPTH}}{345} +\entry {\code {FTW_DNR}}{342} +\entry {\code {FTW_DP}}{342} +\entry {\code {FTW_F}}{342} +\entry {\code {FTW_MOUNT}}{344} +\entry {\code {FTW_NS}}{342} +\entry {\code {FTW_PHYS}}{344} +\entry {\code {FTW_SL}}{342} +\entry {\code {FTW_SLN}}{342} \initial {G} -\entry {\code {getdate_err}}{546} -\entry {\code {group}}{703} +\entry {\code {getdate_err}}{544} +\entry {\code {group}}{701} \entry {\code {GROUPING}}{161} \initial {H} -\entry {\code {h_errno}}{396} -\entry {\code {HOST_NOT_FOUND}}{397} -\entry {\code {hosts}}{703} -\entry {\code {HUGE_VAL}}{501} -\entry {\code {HUGE_VALF}}{501} -\entry {\code {HUGE_VALL}}{501} -\entry {\code {HUPCL}}{437} +\entry {\code {h_errno}}{394} +\entry {\code {HOST_NOT_FOUND}}{394} +\entry {\code {hosts}}{701} +\entry {\code {HUGE_VAL}}{499} +\entry {\code {HUGE_VALF}}{499} +\entry {\code {HUGE_VALL}}{499} +\entry {\code {HUPCL}}{435} \initial {I} -\entry {\code {I}}{513} -\entry {\code {ICANON}}{439} -\entry {\code {ICRNL}}{435} -\entry {\code {IEXTEN}}{440} -\entry {\code {IFNAMSIZ}}{386} -\entry {\code {IGNBRK}}{435} -\entry {\code {IGNCR}}{435} -\entry {\code {IGNPAR}}{435} -\entry {\code {IMAXBEL}}{436} -\entry {\code {in6addr_any}}{393} -\entry {\code {in6addr_loopback}}{393} -\entry {\code {INADDR_ANY}}{393} -\entry {\code {INADDR_BROADCAST}}{393} -\entry {\code {INADDR_LOOPBACK}}{393} -\entry {\code {INADDR_NONE}}{393} -\entry {\code {INFINITY}}{498} -\entry {\code {INIT_PROCESS}}{724, 729} -\entry {\code {INLCR}}{435} -\entry {\code {INPCK}}{434} +\entry {\code {I}}{511} +\entry {\code {ICANON}}{437} +\entry {\code {ICRNL}}{433} +\entry {\code {IEXTEN}}{438} +\entry {\code {IFNAMSIZ}}{384} +\entry {\code {IGNBRK}}{433} +\entry {\code {IGNCR}}{433} +\entry {\code {IGNPAR}}{433} +\entry {\code {IMAXBEL}}{434} +\entry {\code {in6addr_any}}{391} +\entry {\code {in6addr_loopback}}{391} +\entry {\code {INADDR_ANY}}{391} +\entry {\code {INADDR_BROADCAST}}{391} +\entry {\code {INADDR_LOOPBACK}}{391} +\entry {\code {INADDR_NONE}}{391} +\entry {\code {INFINITY}}{496} +\entry {\code {INIT_PROCESS}}{722, 727} +\entry {\code {INLCR}}{433} +\entry {\code {INPCK}}{432} \entry {\code {INT_CURR_SYMBOL}}{160} \entry {\code {INT_FRAC_DIGITS}}{160} -\entry {\code {INT_MAX}}{819} -\entry {\code {INT_MIN}}{819} -\entry {\code {IPPORT_RESERVED}}{399} -\entry {\code {IPPORT_USERRESERVED}}{399} -\entry {\code {ISIG}}{440} -\entry {\code {ISTRIP}}{435} -\entry {\code {IXANY}}{436} -\entry {\code {IXOFF}}{436} -\entry {\code {IXON}}{436} +\entry {\code {INT_MAX}}{817} +\entry {\code {INT_MIN}}{817} +\entry {\code {IPPORT_RESERVED}}{397} +\entry {\code {IPPORT_USERRESERVED}}{397} +\entry {\code {ISIG}}{438} +\entry {\code {ISTRIP}}{433} +\entry {\code {IXANY}}{434} +\entry {\code {IXOFF}}{434} +\entry {\code {IXON}}{434} \initial {L} -\entry {\code {L_ctermid}}{698} -\entry {\code {L_cuserid}}{723} -\entry {\code {L_INCR}}{271} -\entry {\code {L_SET}}{271} -\entry {\code {L_tmpnam}}{371} -\entry {\code {L_XTND}}{271} +\entry {\code {L_ctermid}}{696} +\entry {\code {L_cuserid}}{721} +\entry {\code {L_INCR}}{269} +\entry {\code {L_SET}}{269} +\entry {\code {L_tmpnam}}{370} +\entry {\code {L_XTND}}{269} \entry {\code {LANG}}{151} \entry {\code {LANGUAGE}}{151} \entry {\code {LC_ALL}}{151} @@ -483,81 +483,81 @@ \entry {\code {LC_MONETARY}}{150} \entry {\code {LC_NUMERIC}}{150} \entry {\code {LC_TIME}}{150} -\entry {\code {LDBL_DIG}}{822} -\entry {\code {LDBL_EPSILON}}{824} -\entry {\code {LDBL_MANT_DIG}}{822} -\entry {\code {LDBL_MAX}}{823} -\entry {\code {LDBL_MAX_10_EXP}}{823} -\entry {\code {LDBL_MAX_EXP}}{823} -\entry {\code {LDBL_MIN}}{824} -\entry {\code {LDBL_MIN_10_EXP}}{823} -\entry {\code {LDBL_MIN_EXP}}{823} -\entry {\code {LINE_MAX}}{774} -\entry {\code {LINK_MAX}}{769} -\entry {\code {LIO_NOP}}{309} -\entry {\code {LIO_READ}}{309} -\entry {\code {LIO_WRITE}}{309} -\entry {\code {LOGIN_PROCESS}}{724, 729} -\entry {\code {LONG_LONG_MAX}}{819} -\entry {\code {LONG_LONG_MIN}}{819} -\entry {\code {LONG_MAX}}{819} -\entry {\code {LONG_MIN}}{819} +\entry {\code {LDBL_DIG}}{820} +\entry {\code {LDBL_EPSILON}}{822} +\entry {\code {LDBL_MANT_DIG}}{820} +\entry {\code {LDBL_MAX}}{821} +\entry {\code {LDBL_MAX_10_EXP}}{821} +\entry {\code {LDBL_MAX_EXP}}{821} +\entry {\code {LDBL_MIN}}{822} +\entry {\code {LDBL_MIN_10_EXP}}{821} +\entry {\code {LDBL_MIN_EXP}}{821} +\entry {\code {LINE_MAX}}{772} +\entry {\code {LINK_MAX}}{767} +\entry {\code {LIO_NOP}}{307} +\entry {\code {LIO_READ}}{307} +\entry {\code {LIO_WRITE}}{307} +\entry {\code {LOGIN_PROCESS}}{722, 727} +\entry {\code {LONG_LONG_MAX}}{817} +\entry {\code {LONG_LONG_MIN}}{817} +\entry {\code {LONG_MAX}}{817} +\entry {\code {LONG_MIN}}{817} \initial {M} -\entry {\code {M_1_PI}}{465} -\entry {\code {M_2_PI}}{465} -\entry {\code {M_2_SQRTPI}}{465} -\entry {\code {M_E}}{465} -\entry {\code {M_LN10}}{465} -\entry {\code {M_LN2}}{465} -\entry {\code {M_LOG10E}}{465} -\entry {\code {M_LOG2E}}{465} -\entry {\code {M_PI}}{465} -\entry {\code {M_PI_2}}{465} -\entry {\code {M_PI_4}}{465} -\entry {\code {M_SQRT1_2}}{465} -\entry {\code {M_SQRT2}}{465} -\entry {\code {MAP_ANON}}{301} -\entry {\code {MAP_ANONYMOUS}}{301} -\entry {\code {MAP_FIXED}}{301} -\entry {\code {MAP_PRIVATE}}{301} -\entry {\code {MAP_SHARED}}{301} -\entry {\code {MAX_CANON}}{770} -\entry {\code {MAX_INPUT}}{770} -\entry {\code {MAXNAMLEN}}{770} +\entry {\code {M_1_PI}}{463} +\entry {\code {M_2_PI}}{463} +\entry {\code {M_2_SQRTPI}}{463} +\entry {\code {M_E}}{463} +\entry {\code {M_LN10}}{463} +\entry {\code {M_LN2}}{463} +\entry {\code {M_LOG10E}}{463} +\entry {\code {M_LOG2E}}{463} +\entry {\code {M_PI}}{463} +\entry {\code {M_PI_2}}{463} +\entry {\code {M_PI_4}}{463} +\entry {\code {M_SQRT1_2}}{463} +\entry {\code {M_SQRT2}}{463} +\entry {\code {MAP_ANON}}{299} +\entry {\code {MAP_ANONYMOUS}}{299} +\entry {\code {MAP_FIXED}}{299} +\entry {\code {MAP_PRIVATE}}{299} +\entry {\code {MAP_SHARED}}{299} +\entry {\code {MAX_CANON}}{768} +\entry {\code {MAX_INPUT}}{768} +\entry {\code {MAXNAMLEN}}{768} \entry {\code {MB_CUR_MAX}}{110} \entry {\code {MB_LEN_MAX}}{110} -\entry {\code {MDMBUF}}{438} -\entry {\code {MINSIGSTKSZ}}{620} -\entry {\code {MM_APPL}}{282} -\entry {\code {MM_CONSOLE}}{281} -\entry {\code {MM_ERROR}}{283} -\entry {\code {MM_FIRM}}{282} -\entry {\code {MM_HALT}}{283} -\entry {\code {MM_HARD}}{282} -\entry {\code {MM_INFO}}{283} -\entry {\code {MM_NOSEV}}{283} -\entry {\code {MM_NRECOV}}{282} -\entry {\code {MM_NULLACT}}{283} -\entry {\code {MM_NULLLBL}}{282} -\entry {\code {MM_NULLMC}}{282} -\entry {\code {MM_NULLSEV}}{282} -\entry {\code {MM_NULLTAG}}{283} -\entry {\code {MM_NULLTXT}}{282} -\entry {\code {MM_OPSYS}}{282} -\entry {\code {MM_PRINT}}{281} -\entry {\code {MM_RECOVER}}{282} -\entry {\code {MM_SOFT}}{282} -\entry {\code {MM_UTIL}}{282} -\entry {\code {MM_WARNING}}{283} -\entry {\code {MNTOPT_DEFAULTS}}{748} -\entry {\code {MNTOPT_NOAUTO}}{749} -\entry {\code {MNTOPT_NOSUID}}{749} -\entry {\code {MNTOPT_RO}}{748} -\entry {\code {MNTOPT_RW}}{748} -\entry {\code {MNTOPT_SUID}}{748} -\entry {\code {MNTTYPE_IGNORE}}{748} -\entry {\code {MNTTYPE_NFS}}{748} -\entry {\code {MNTTYPE_SWAP}}{748} +\entry {\code {MDMBUF}}{436} +\entry {\code {MINSIGSTKSZ}}{618} +\entry {\code {MM_APPL}}{280} +\entry {\code {MM_CONSOLE}}{280} +\entry {\code {MM_ERROR}}{281} +\entry {\code {MM_FIRM}}{280} +\entry {\code {MM_HALT}}{281} +\entry {\code {MM_HARD}}{280} +\entry {\code {MM_INFO}}{281} +\entry {\code {MM_NOSEV}}{281} +\entry {\code {MM_NRECOV}}{280} +\entry {\code {MM_NULLACT}}{281} +\entry {\code {MM_NULLLBL}}{281} +\entry {\code {MM_NULLMC}}{281} +\entry {\code {MM_NULLSEV}}{281} +\entry {\code {MM_NULLTAG}}{281} +\entry {\code {MM_NULLTXT}}{281} +\entry {\code {MM_OPSYS}}{280} +\entry {\code {MM_PRINT}}{280} +\entry {\code {MM_RECOVER}}{280} +\entry {\code {MM_SOFT}}{280} +\entry {\code {MM_UTIL}}{280} +\entry {\code {MM_WARNING}}{281} +\entry {\code {MNTOPT_DEFAULTS}}{746} +\entry {\code {MNTOPT_NOAUTO}}{747} +\entry {\code {MNTOPT_NOSUID}}{747} +\entry {\code {MNTOPT_RO}}{746} +\entry {\code {MNTOPT_RW}}{746} +\entry {\code {MNTOPT_SUID}}{746} +\entry {\code {MNTTYPE_IGNORE}}{746} +\entry {\code {MNTTYPE_NFS}}{746} +\entry {\code {MNTTYPE_SWAP}}{746} \entry {\code {MON_1}}{158} \entry {\code {MON_10}}{159} \entry {\code {MON_11}}{159} @@ -573,300 +573,300 @@ \entry {\code {MON_DECIMAL_POINT}}{160} \entry {\code {MON_GROUPING}}{160} \entry {\code {MON_THOUSANDS_SEP}}{160} -\entry {\code {MS_ASYNC}}{303} -\entry {\code {MS_SYNC}}{302} -\entry {\code {MSG_DONTROUTE}}{412} -\entry {\code {MSG_OOB}}{412} -\entry {\code {MSG_PEEK}}{412} +\entry {\code {MS_ASYNC}}{301} +\entry {\code {MS_SYNC}}{300} +\entry {\code {MSG_DONTROUTE}}{410} +\entry {\code {MSG_OOB}}{410} +\entry {\code {MSG_PEEK}}{410} \initial {N} \entry {\code {N_CS_PRECEDES}}{161} \entry {\code {N_SEP_BY_SPACE}}{161} \entry {\code {N_SIGN_POSN}}{161} -\entry {\code {NAME_MAX}}{770} -\entry {\code {NAN}}{499} -\entry {\code {NCCS}}{432} -\entry {\code {NDEBUG}}{809} +\entry {\code {NAME_MAX}}{768} +\entry {\code {NAN}}{497} +\entry {\code {NCCS}}{430} +\entry {\code {NDEBUG}}{807} \entry {\code {NEGATIVE_SIGN}}{160} -\entry {\code {netgroup}}{703} -\entry {\code {networks}}{703} -\entry {\code {NEW_TIME}}{724, 729} -\entry {\code {NGROUPS_MAX}}{758} -\entry {\code {NL_ARGMAX}}{239} -\entry {\code {NO_ADDRESS}}{397} -\entry {\code {NO_RECOVERY}}{397} +\entry {\code {netgroup}}{701} +\entry {\code {networks}}{701} +\entry {\code {NEW_TIME}}{722, 727} +\entry {\code {NGROUPS_MAX}}{756} +\entry {\code {NL_ARGMAX}}{237} +\entry {\code {NO_ADDRESS}}{395} +\entry {\code {NO_RECOVERY}}{395} \entry {\code {NOEXPR}}{161} -\entry {\code {NOFLSH}}{440} -\entry {\code {NOKERNINFO}}{441} +\entry {\code {NOFLSH}}{438} +\entry {\code {NOKERNINFO}}{439} \entry {\code {NOSTR}}{162} -\entry {\code {NSIG}}{579} -\entry {\code {NSS_STATUS_NOTFOUND}}{708} -\entry {\code {NSS_STATUS_SUCCESS}}{708} -\entry {\code {NSS_STATUS_TRYAGAIN}}{708} -\entry {\code {NSS_STATUS_UNAVAIL}}{708} -\entry {\code {NULL}}{816} +\entry {\code {NSIG}}{577} +\entry {\code {NSS_STATUS_NOTFOUND}}{706} +\entry {\code {NSS_STATUS_SUCCESS}}{706} +\entry {\code {NSS_STATUS_TRYAGAIN}}{706} +\entry {\code {NSS_STATUS_UNAVAIL}}{706} +\entry {\code {NULL}}{814} \initial {O} -\entry {\code {O_ACCMODE}}{324} -\entry {\code {O_APPEND}}{326} -\entry {\code {O_ASYNC}}{327} -\entry {\code {O_CREAT}}{325} -\entry {\code {O_EXCL}}{325} -\entry {\code {O_EXEC}}{324} -\entry {\code {O_EXLOCK}}{326} -\entry {\code {O_FSYNC}}{327} -\entry {\code {O_IGNORE_CTTY}}{325} -\entry {\code {O_NDELAY}}{327} -\entry {\code {O_NOATIME}}{327} -\entry {\code {O_NOCTTY}}{325} -\entry {\code {O_NOLINK}}{325} -\entry {\code {O_NONBLOCK}}{325, 326} -\entry {\code {O_NOTRANS}}{325} -\entry {\code {O_RDONLY}}{323} -\entry {\code {O_RDWR}}{324} -\entry {\code {O_READ}}{324} -\entry {\code {O_SHLOCK}}{326} -\entry {\code {O_SYNC}}{327} -\entry {\code {O_TRUNC}}{326} -\entry {\code {O_WRITE}}{324} -\entry {\code {O_WRONLY}}{323} +\entry {\code {O_ACCMODE}}{322} +\entry {\code {O_APPEND}}{324} +\entry {\code {O_ASYNC}}{325} +\entry {\code {O_CREAT}}{323} +\entry {\code {O_EXCL}}{323} +\entry {\code {O_EXEC}}{322} +\entry {\code {O_EXLOCK}}{324} +\entry {\code {O_FSYNC}}{325} +\entry {\code {O_IGNORE_CTTY}}{323} +\entry {\code {O_NDELAY}}{325} +\entry {\code {O_NOATIME}}{325} +\entry {\code {O_NOCTTY}}{323} +\entry {\code {O_NOLINK}}{323} +\entry {\code {O_NONBLOCK}}{323, 324} +\entry {\code {O_NOTRANS}}{323} +\entry {\code {O_RDONLY}}{321} +\entry {\code {O_RDWR}}{322} +\entry {\code {O_READ}}{322} +\entry {\code {O_SHLOCK}}{324} +\entry {\code {O_SYNC}}{325} +\entry {\code {O_TRUNC}}{324} +\entry {\code {O_WRITE}}{322} +\entry {\code {O_WRONLY}}{321} \entry {\code {obstack_alloc_failed_handler}}{51} -\entry {\code {OLD_TIME}}{724, 729} -\entry {\code {ONLCR}}{437} -\entry {\code {ONOEOT}}{437} -\entry {\code {OPEN_MAX}}{757} -\entry {\code {OPOST}}{436} -\entry {\code {optarg}}{627} -\entry {\code {opterr}}{627} -\entry {\code {optind}}{627} -\entry {\code {OPTION_ALIAS}}{637} -\entry {\code {OPTION_ARG_OPTIONAL}}{637} -\entry {\code {OPTION_DOC}}{638} -\entry {\code {OPTION_HIDDEN}}{637} -\entry {\code {OPTION_NO_USAGE}}{638} -\entry {\code {optopt}}{627} -\entry {\code {OXTABS}}{437} +\entry {\code {OLD_TIME}}{722, 727} +\entry {\code {ONLCR}}{435} +\entry {\code {ONOEOT}}{435} +\entry {\code {OPEN_MAX}}{755} +\entry {\code {OPOST}}{434} +\entry {\code {optarg}}{625} +\entry {\code {opterr}}{625} +\entry {\code {optind}}{625} +\entry {\code {OPTION_ALIAS}}{636} +\entry {\code {OPTION_ARG_OPTIONAL}}{635} +\entry {\code {OPTION_DOC}}{636} +\entry {\code {OPTION_HIDDEN}}{636} +\entry {\code {OPTION_NO_USAGE}}{636} +\entry {\code {optopt}}{625} +\entry {\code {OXTABS}}{435} \initial {P} \entry {\code {P_CS_PRECEDES}}{161} \entry {\code {P_SEP_BY_SPACE}}{161} \entry {\code {P_SIGN_POSN}}{161} -\entry {\code {P_tmpdir}}{372} -\entry {\code {PA_CHAR}}{251} -\entry {\code {PA_DOUBLE}}{251} -\entry {\code {PA_FLAG_LONG}}{251} -\entry {\code {PA_FLAG_LONG_DOUBLE}}{252} -\entry {\code {PA_FLAG_LONG_LONG}}{252} -\entry {\code {PA_FLAG_MASK}}{251} -\entry {\code {PA_FLAG_PTR}}{251} -\entry {\code {PA_FLAG_SHORT}}{251} -\entry {\code {PA_FLOAT}}{251} -\entry {\code {PA_INT}}{251} -\entry {\code {PA_LAST}}{251} -\entry {\code {PA_POINTER}}{251} -\entry {\code {PA_STRING}}{251} -\entry {\code {PARENB}}{438} -\entry {\code {PARMRK}}{435} -\entry {\code {PARODD}}{438} -\entry {\code {passwd}}{703} -\entry {\code {PATH_MAX}}{770} -\entry {\code {PENDIN}}{441} -\entry {\code {PF_CCITT}}{404} -\entry {\code {PF_FILE}}{387} -\entry {\code {PF_IMPLINK}}{404} -\entry {\code {PF_INET}}{389} -\entry {\code {PF_INET6}}{389} -\entry {\code {PF_ISO}}{404} -\entry {\code {PF_LOCAL}}{387} -\entry {\code {PF_NS}}{404} -\entry {\code {PF_ROUTE}}{404} -\entry {\code {PF_UNIX}}{387} -\entry {\code {PI}}{466} -\entry {\code {PIPE_BUF}}{770} +\entry {\code {P_tmpdir}}{371} +\entry {\code {PA_CHAR}}{249} +\entry {\code {PA_DOUBLE}}{249} +\entry {\code {PA_FLAG_LONG}}{250} +\entry {\code {PA_FLAG_LONG_DOUBLE}}{250} +\entry {\code {PA_FLAG_LONG_LONG}}{250} +\entry {\code {PA_FLAG_MASK}}{249} +\entry {\code {PA_FLAG_PTR}}{249} +\entry {\code {PA_FLAG_SHORT}}{250} +\entry {\code {PA_FLOAT}}{249} +\entry {\code {PA_INT}}{249} +\entry {\code {PA_LAST}}{249} +\entry {\code {PA_POINTER}}{249} +\entry {\code {PA_STRING}}{249} +\entry {\code {PARENB}}{436} +\entry {\code {PARMRK}}{433} +\entry {\code {PARODD}}{436} +\entry {\code {passwd}}{701} +\entry {\code {PATH_MAX}}{768} +\entry {\code {PENDIN}}{439} +\entry {\code {PF_CCITT}}{402} +\entry {\code {PF_FILE}}{385} +\entry {\code {PF_IMPLINK}}{402} +\entry {\code {PF_INET}}{387} +\entry {\code {PF_INET6}}{387} +\entry {\code {PF_ISO}}{402} +\entry {\code {PF_LOCAL}}{385} +\entry {\code {PF_NS}}{402} +\entry {\code {PF_ROUTE}}{402} +\entry {\code {PF_UNIX}}{385} +\entry {\code {PI}}{464} +\entry {\code {PIPE_BUF}}{768} \entry {\code {PM_STR}}{159} \entry {\code {POSITIVE_SIGN}}{160} -\entry {\code {PRIO_MAX}}{571} -\entry {\code {PRIO_MIN}}{571} -\entry {\code {PRIO_PGRP}}{571} -\entry {\code {PRIO_PROCESS}}{571} -\entry {\code {PRIO_USER}}{571} +\entry {\code {PRIO_MAX}}{569} +\entry {\code {PRIO_MIN}}{569} +\entry {\code {PRIO_PGRP}}{569} +\entry {\code {PRIO_PROCESS}}{569} +\entry {\code {PRIO_USER}}{569} \entry {\code {program_invocation_name}}{28} \entry {\code {program_invocation_short_name}}{28} -\entry {\code {PROT_EXEC}}{301} -\entry {\code {PROT_READ}}{301} -\entry {\code {PROT_WRITE}}{301} -\entry {\code {protocols}}{703} +\entry {\code {PROT_EXEC}}{299} +\entry {\code {PROT_READ}}{299} +\entry {\code {PROT_WRITE}}{299} +\entry {\code {protocols}}{701} \initial {R} -\entry {\code {R_OK}}{365} +\entry {\code {R_OK}}{364} \entry {\code {RADIXCHAR}}{161} -\entry {\code {RAND_MAX}}{484} -\entry {\code {RE_DUP_MAX}}{758} -\entry {\code {RLIM_INFINITY}}{562} -\entry {\code {RLIM_NLIMITS}}{562} -\entry {\code {RLIMIT_AS}}{562} -\entry {\code {RLIMIT_CORE}}{561} -\entry {\code {RLIMIT_CPU}}{561} -\entry {\code {RLIMIT_DATA}}{561} -\entry {\code {RLIMIT_FSIZE}}{561} -\entry {\code {RLIMIT_NOFILE}}{562} -\entry {\code {RLIMIT_OFILE}}{562} -\entry {\code {RLIMIT_RSS}}{561} -\entry {\code {RLIMIT_STACK}}{561} -\entry {\code {rpc}}{703} -\entry {\code {RUN_LVL}}{724, 728} +\entry {\code {RAND_MAX}}{482} +\entry {\code {RE_DUP_MAX}}{756} +\entry {\code {RLIM_INFINITY}}{560} +\entry {\code {RLIM_NLIMITS}}{560} +\entry {\code {RLIMIT_AS}}{560} +\entry {\code {RLIMIT_CORE}}{559} +\entry {\code {RLIMIT_CPU}}{559} +\entry {\code {RLIMIT_DATA}}{559} +\entry {\code {RLIMIT_FSIZE}}{559} +\entry {\code {RLIMIT_NOFILE}}{560} +\entry {\code {RLIMIT_OFILE}}{560} +\entry {\code {RLIMIT_RSS}}{559} +\entry {\code {RLIMIT_STACK}}{559} +\entry {\code {rpc}}{701} +\entry {\code {RUN_LVL}}{722, 726} \initial {S} -\entry {\code {S_IEXEC}}{361} -\entry {\code {S_IFBLK}}{358} -\entry {\code {S_IFCHR}}{358} -\entry {\code {S_IFDIR}}{358} -\entry {\code {S_IFIFO}}{359} -\entry {\code {S_IFLNK}}{358} -\entry {\code {S_IFMT}}{358} -\entry {\code {S_IFREG}}{358} -\entry {\code {S_IFSOCK}}{359} -\entry {\code {S_IREAD}}{361} -\entry {\code {S_IRGRP}}{361} -\entry {\code {S_IROTH}}{361} -\entry {\code {S_IRUSR}}{361} -\entry {\code {S_IRWXG}}{361} -\entry {\code {S_IRWXO}}{361} -\entry {\code {S_IRWXU}}{361} -\entry {\code {S_ISGID}}{361} -\entry {\code {S_ISUID}}{361} -\entry {\code {S_ISVTX}}{361} -\entry {\code {S_IWGRP}}{361} -\entry {\code {S_IWOTH}}{361} -\entry {\code {S_IWRITE}}{361} -\entry {\code {S_IWUSR}}{361} -\entry {\code {S_IXGRP}}{361} -\entry {\code {S_IXOTH}}{361} -\entry {\code {S_IXUSR}}{361} -\entry {\code {SA_NOCLDSTOP}}{593} -\entry {\code {SA_ONSTACK}}{593} -\entry {\code {SA_RESTART}}{594} -\entry {\code {SCHAR_MAX}}{818} -\entry {\code {SCHAR_MIN}}{818} -\entry {\code {SEEK_CUR}}{271} -\entry {\code {SEEK_END}}{271} -\entry {\code {SEEK_SET}}{270} -\entry {\code {SEM_VALUE_MAX}}{799} -\entry {\code {services}}{703} -\entry {\code {shadow}}{704} -\entry {\code {SHRT_MAX}}{819} -\entry {\code {SHRT_MIN}}{819} -\entry {\code {SIG_BLOCK}}{612} -\entry {\code {SIG_DFL}}{589} -\entry {\code {SIG_ERR}}{590} -\entry {\code {SIG_IGN}}{589} -\entry {\code {SIG_SETMASK}}{612} -\entry {\code {SIG_UNBLOCK}}{612} -\entry {\code {SIGABRT}}{582} -\entry {\code {SIGALRM}}{583} -\entry {\code {SIGBUS}}{581} -\entry {\code {SIGCHLD}}{584} -\entry {\code {SIGCLD}}{585} -\entry {\code {SIGCONT}}{585} -\entry {\code {SIGEMT}}{582} -\entry {\code {SIGFPE}}{580} -\entry {\code {SIGHUP}}{583} -\entry {\code {SIGILL}}{581} -\entry {\code {SIGINFO}}{587} -\entry {\code {SIGINT}}{582} -\entry {\code {SIGIO}}{584} -\entry {\code {SIGIOT}}{582} -\entry {\code {SIGKILL}}{583} -\entry {\code {SIGLOST}}{586} -\entry {\code {signgam}}{475} -\entry {\code {SIGPIPE}}{586} -\entry {\code {SIGPOLL}}{584} -\entry {\code {SIGPROF}}{584} -\entry {\code {SIGQUIT}}{583} -\entry {\code {SIGSEGV}}{581} -\entry {\code {SIGSTKSZ}}{620} -\entry {\code {SIGSTOP}}{585} -\entry {\code {SIGSYS}}{582} -\entry {\code {SIGTERM}}{582} -\entry {\code {SIGTRAP}}{582} -\entry {\code {SIGTSTP}}{585} -\entry {\code {SIGTTIN}}{585} -\entry {\code {SIGTTOU}}{585} -\entry {\code {SIGURG}}{584} -\entry {\code {SIGUSR1}}{587} -\entry {\code {SIGUSR2}}{587} -\entry {\code {SIGVTALRM}}{584} -\entry {\code {SIGWINCH}}{587} -\entry {\code {SIGXCPU}}{586} -\entry {\code {SIGXFSZ}}{587} -\entry {\code {SOCK_DGRAM}}{382} -\entry {\code {SOCK_RAW}}{383} -\entry {\code {SOCK_STREAM}}{382} -\entry {\code {SOL_SOCKET}}{425} -\entry {\code {SS_DISABLE}}{620} -\entry {\code {SS_ONSTACK}}{620} -\entry {\code {SSIZE_MAX}}{758} -\entry {\code {stderr}}{227} -\entry {\code {STDERR_FILENO}}{297} -\entry {\code {stdin}}{227} -\entry {\code {STDIN_FILENO}}{297} -\entry {\code {stdout}}{227} -\entry {\code {STDOUT_FILENO}}{297} -\entry {\code {STREAM_MAX}}{757} -\entry {\code {SV_INTERRUPT}}{622} -\entry {\code {SV_ONSTACK}}{622} -\entry {\code {SV_RESETHAND}}{622} -\entry {\code {sys_siglist}}{588} +\entry {\code {S_IEXEC}}{359} +\entry {\code {S_IFBLK}}{357} +\entry {\code {S_IFCHR}}{357} +\entry {\code {S_IFDIR}}{357} +\entry {\code {S_IFIFO}}{357} +\entry {\code {S_IFLNK}}{357} +\entry {\code {S_IFMT}}{357} +\entry {\code {S_IFREG}}{357} +\entry {\code {S_IFSOCK}}{357} +\entry {\code {S_IREAD}}{359} +\entry {\code {S_IRGRP}}{359} +\entry {\code {S_IROTH}}{359} +\entry {\code {S_IRUSR}}{359} +\entry {\code {S_IRWXG}}{359} +\entry {\code {S_IRWXO}}{359} +\entry {\code {S_IRWXU}}{359} +\entry {\code {S_ISGID}}{360} +\entry {\code {S_ISUID}}{359} +\entry {\code {S_ISVTX}}{360} +\entry {\code {S_IWGRP}}{359} +\entry {\code {S_IWOTH}}{359} +\entry {\code {S_IWRITE}}{359} +\entry {\code {S_IWUSR}}{359} +\entry {\code {S_IXGRP}}{359} +\entry {\code {S_IXOTH}}{359} +\entry {\code {S_IXUSR}}{359} +\entry {\code {SA_NOCLDSTOP}}{591} +\entry {\code {SA_ONSTACK}}{591} +\entry {\code {SA_RESTART}}{592} +\entry {\code {SCHAR_MAX}}{816} +\entry {\code {SCHAR_MIN}}{816} +\entry {\code {SEEK_CUR}}{269} +\entry {\code {SEEK_END}}{269} +\entry {\code {SEEK_SET}}{269} +\entry {\code {SEM_VALUE_MAX}}{798} +\entry {\code {services}}{701} +\entry {\code {shadow}}{702} +\entry {\code {SHRT_MAX}}{817} +\entry {\code {SHRT_MIN}}{817} +\entry {\code {SIG_BLOCK}}{610} +\entry {\code {SIG_DFL}}{587} +\entry {\code {SIG_ERR}}{588} +\entry {\code {SIG_IGN}}{587} +\entry {\code {SIG_SETMASK}}{610} +\entry {\code {SIG_UNBLOCK}}{610} +\entry {\code {SIGABRT}}{580} +\entry {\code {SIGALRM}}{581} +\entry {\code {SIGBUS}}{579} +\entry {\code {SIGCHLD}}{582} +\entry {\code {SIGCLD}}{583} +\entry {\code {SIGCONT}}{583} +\entry {\code {SIGEMT}}{580} +\entry {\code {SIGFPE}}{578} +\entry {\code {SIGHUP}}{581} +\entry {\code {SIGILL}}{579} +\entry {\code {SIGINFO}}{585} +\entry {\code {SIGINT}}{580} +\entry {\code {SIGIO}}{582} +\entry {\code {SIGIOT}}{580} +\entry {\code {SIGKILL}}{581} +\entry {\code {SIGLOST}}{584} +\entry {\code {signgam}}{473} +\entry {\code {SIGPIPE}}{584} +\entry {\code {SIGPOLL}}{582} +\entry {\code {SIGPROF}}{582} +\entry {\code {SIGQUIT}}{581} +\entry {\code {SIGSEGV}}{579} +\entry {\code {SIGSTKSZ}}{618} +\entry {\code {SIGSTOP}}{583} +\entry {\code {SIGSYS}}{580} +\entry {\code {SIGTERM}}{580} +\entry {\code {SIGTRAP}}{580} +\entry {\code {SIGTSTP}}{583} +\entry {\code {SIGTTIN}}{583} +\entry {\code {SIGTTOU}}{583} +\entry {\code {SIGURG}}{582} +\entry {\code {SIGUSR1}}{585} +\entry {\code {SIGUSR2}}{585} +\entry {\code {SIGVTALRM}}{582} +\entry {\code {SIGWINCH}}{585} +\entry {\code {SIGXCPU}}{584} +\entry {\code {SIGXFSZ}}{585} +\entry {\code {SOCK_DGRAM}}{380} +\entry {\code {SOCK_RAW}}{381} +\entry {\code {SOCK_STREAM}}{380} +\entry {\code {SOL_SOCKET}}{423} +\entry {\code {SS_DISABLE}}{618} +\entry {\code {SS_ONSTACK}}{618} +\entry {\code {SSIZE_MAX}}{756} +\entry {\code {stderr}}{225} +\entry {\code {STDERR_FILENO}}{295} +\entry {\code {stdin}}{225} +\entry {\code {STDIN_FILENO}}{295} +\entry {\code {stdout}}{225} +\entry {\code {STDOUT_FILENO}}{295} +\entry {\code {STREAM_MAX}}{755} +\entry {\code {SV_INTERRUPT}}{620} +\entry {\code {SV_ONSTACK}}{620} +\entry {\code {SV_RESETHAND}}{620} +\entry {\code {sys_siglist}}{586} \initial {T} \entry {\code {T_FMT}}{159} \entry {\code {T_FMT_AMPM}}{159} -\entry {\code {TCIFLUSH}}{450} -\entry {\code {TCIOFF}}{451} -\entry {\code {TCIOFLUSH}}{450} -\entry {\code {TCION}}{451} -\entry {\code {TCOFLUSH}}{450} -\entry {\code {TCOOFF}}{451} -\entry {\code {TCOON}}{451} -\entry {\code {TCSADRAIN}}{432} -\entry {\code {TCSAFLUSH}}{432} -\entry {\code {TCSANOW}}{432} -\entry {\code {TCSASOFT}}{432} +\entry {\code {TCIFLUSH}}{448} +\entry {\code {TCIOFF}}{449} +\entry {\code {TCIOFLUSH}}{448} +\entry {\code {TCION}}{449} +\entry {\code {TCOFLUSH}}{448} +\entry {\code {TCOOFF}}{449} +\entry {\code {TCOON}}{449} +\entry {\code {TCSADRAIN}}{430} +\entry {\code {TCSAFLUSH}}{430} +\entry {\code {TCSANOW}}{430} +\entry {\code {TCSASOFT}}{430} \entry {\code {THOUSANDS_SEP}}{161} \entry {\code {THOUSEP}}{161} -\entry {\code {timezone}}{551} -\entry {\code {TMP_MAX}}{371} -\entry {\code {TOSTOP}}{440} -\entry {\code {TRY_AGAIN}}{397} -\entry {\code {tzname}}{551} -\entry {\code {TZNAME_MAX}}{757} +\entry {\code {timezone}}{549} +\entry {\code {TMP_MAX}}{370} +\entry {\code {TOSTOP}}{438} +\entry {\code {TRY_AGAIN}}{394} +\entry {\code {tzname}}{549} +\entry {\code {TZNAME_MAX}}{755} \initial {U} -\entry {\code {UCHAR_MAX}}{818} -\entry {\code {UINT_MAX}}{819} -\entry {\code {ULONG_LONG_MAX}}{819} -\entry {\code {ULONG_MAX}}{819} -\entry {\code {USER_PROCESS}}{724, 729} -\entry {\code {USHRT_MAX}}{819} +\entry {\code {UCHAR_MAX}}{816} +\entry {\code {UINT_MAX}}{817} +\entry {\code {ULONG_LONG_MAX}}{817} +\entry {\code {ULONG_MAX}}{817} +\entry {\code {USER_PROCESS}}{722, 727} +\entry {\code {USHRT_MAX}}{817} \initial {V} -\entry {\code {VDISCARD}}{446} -\entry {\code {VDSUSP}}{445} -\entry {\code {VEOF}}{443} -\entry {\code {VEOL}}{443} -\entry {\code {VEOL2}}{443} -\entry {\code {VERASE}}{444} -\entry {\code {VINTR}}{445} -\entry {\code {VKILL}}{444} -\entry {\code {VLNEXT}}{446} -\entry {\code {VMIN}}{447} -\entry {\code {VQUIT}}{445} -\entry {\code {VREPRINT}}{444} -\entry {\code {VSTART}}{446} -\entry {\code {VSTATUS}}{447} -\entry {\code {VSTOP}}{446} -\entry {\code {VSUSP}}{445} -\entry {\code {VTIME}}{447} -\entry {\code {VWERASE}}{444} +\entry {\code {VDISCARD}}{444} +\entry {\code {VDSUSP}}{443} +\entry {\code {VEOF}}{441} +\entry {\code {VEOL}}{441} +\entry {\code {VEOL2}}{441} +\entry {\code {VERASE}}{442} +\entry {\code {VINTR}}{443} +\entry {\code {VKILL}}{442} +\entry {\code {VLNEXT}}{444} +\entry {\code {VMIN}}{445} +\entry {\code {VQUIT}}{443} +\entry {\code {VREPRINT}}{442} +\entry {\code {VSTART}}{444} +\entry {\code {VSTATUS}}{445} +\entry {\code {VSTOP}}{444} +\entry {\code {VSUSP}}{443} +\entry {\code {VTIME}}{445} +\entry {\code {VWERASE}}{442} \initial {W} -\entry {\code {W_OK}}{365} -\entry {\code {WCHAR_MAX}}{106, 819} +\entry {\code {W_OK}}{364} +\entry {\code {WCHAR_MAX}}{106, 817} \entry {\code {WCHAR_MIN}}{106} -\entry {\code {WEOF}}{106} +\entry {\code {WEOF}}{107} \initial {X} -\entry {\code {X_OK}}{365} +\entry {\code {X_OK}}{364} \initial {Y} \entry {\code {YESEXPR}}{161} \entry {\code {YESSTR}}{161} diff -adurpN glibc-2.2/manual/longopt.c.texi glibc-2.2.1/manual/longopt.c.texi --- glibc-2.2/manual/longopt.c.texi Fri Mar 13 22:31:17 1998 +++ glibc-2.2.1/manual/longopt.c.texi Sun Jan 7 09:08:57 2001 @@ -17,21 +17,21 @@ main (argc, argv) static struct option long_options[] = @{ /* @r{These options set a flag.} */ - @{"verbose", 0, &verbose_flag, 1@}, - @{"brief", 0, &verbose_flag, 0@}, + @{"verbose", no_argument, &verbose_flag, 1@}, + @{"brief", no_argument, &verbose_flag, 0@}, /* @r{These options don't set a flag. We distinguish them by their indices.} */ - @{"add", 1, 0, 0@}, - @{"append", 0, 0, 0@}, - @{"delete", 1, 0, 0@}, - @{"create", 0, 0, 0@}, - @{"file", 1, 0, 0@}, + @{"add", required_argument, 0, 'a'@}, + @{"append", no_argument, 0, 'b'@}, + @{"delete", required_argument, 0, 'd'@}, + @{"create", no_argument, 0, 'c'@}, + @{"file", required_argument, 0, 'f'@}, @{0, 0, 0, 0@} @}; /* @r{@code{getopt_long} stores the option index here.} */ int option_index = 0; - c = getopt_long (argc, argv, "abc:d:", + c = getopt_long (argc, argv, "abc:d:f:", long_options, &option_index); /* @r{Detect the end of the options.} */ @@ -64,6 +64,10 @@ main (argc, argv) case 'd': printf ("option -d with value `%s'\n", optarg); + break; + + case 'f': + printf ("option -f with value `%s'\n", optarg); break; case '?': diff -adurpN glibc-2.2/manual/message.texi glibc-2.2.1/manual/message.texi --- glibc-2.2/manual/message.texi Thu Oct 26 22:57:32 2000 +++ glibc-2.2.1/manual/message.texi Sat Jan 6 20:35:23 2001 @@ -1259,7 +1259,7 @@ Languages with this property include: @item Germanic family Danish, Dutch, English, German, Norwegian, Swedish @item Finno-Ugric family -Finnish +Estonian, Finnish @item Latin/Greek family Greek @item Semitic family @@ -1300,11 +1300,11 @@ Languages with this property include: Gaeilge @end table -@item Three forms, special case for one and all numbers ending in 2, 3, or 4 +@item Three forms, special cases for numbers ending in 1 and 2, 3, 4, except those ending in 1[1-4] The header entry would look like this: @smallexample -nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 ? 1 : 2 +nplurals=3; plural=n%100/10==1 ? 2 : n%10==1 ? 0 : (n+9)%10>3 ? 2 : 1 @end smallexample @noindent @@ -1312,7 +1312,7 @@ Languages with this property include: @table @asis @item Slavic family -Russian +Czech, Russian, Slovak @end table @item Three forms, special case for one and some numbers ending in 2, 3, or 4 @@ -1669,7 +1669,7 @@ of the environment variable. It can spl and by leaving out the only or the other part it can construct new values. This happens of course in a predictable way. To understand this one must know the format of the environment variable value. There -are to more or less standardized forms: +are two more or less standardized forms: @table @emph @item X/Open Format diff -adurpN glibc-2.2/manual/signal.texi glibc-2.2.1/manual/signal.texi --- glibc-2.2/manual/signal.texi Thu May 4 10:09:26 2000 +++ glibc-2.2.1/manual/signal.texi Fri Dec 1 11:55:07 2000 @@ -596,7 +596,7 @@ time used by the current process. The n @comment signal.h @comment BSD @deftypevr Macro int SIGPROF -This signal is typically indicates expiration of a timer that measures +This signal typically indicates expiration of a timer that measures both CPU time used by the current process, and CPU time expended on behalf of the process by the system. Such a timer is used to implement code profiling facilities, hence the name of this signal. diff -adurpN glibc-2.2/manual/startup.texi glibc-2.2.1/manual/startup.texi --- glibc-2.2/manual/startup.texi Tue Aug 15 11:16:23 2000 +++ glibc-2.2.1/manual/startup.texi Thu Nov 16 11:12:03 2000 @@ -86,7 +86,7 @@ three elements, @code{"cat"}, @code{"foo In Unix systems you can define @code{main} a third way, using three arguments: @smallexample -int main (int @var{argc}, char *@var{argv}[], char *@var{envp}) +int main (int @var{argc}, char *@var{argv}[], char *@var{envp}[]) @end smallexample The first two arguments are just the same. The third argument diff -adurpN glibc-2.2/manual/stdio.texi glibc-2.2.1/manual/stdio.texi --- glibc-2.2/manual/stdio.texi Tue Oct 17 14:54:02 2000 +++ glibc-2.2.1/manual/stdio.texi Sat Jan 6 20:35:24 2001 @@ -592,8 +592,8 @@ the line from the null character inserte This function is a GNU extension, but it is the recommended way to read lines from a stream. The alternative standard functions are unreliable. -If an error occurs or end of file is reached, @code{getline} returns -@code{-1}. +If an error occurs or end of file is reached without any bytes read, +@code{getline} returns @code{-1}. @end deftypefun @comment stdio.h @@ -1613,6 +1613,9 @@ make_message (char *name, char *value) int nchars; @end group @group + if (buffer == NULL) + return NULL; + /* @r{Try to print in the allocated space.} */ nchars = snprintf (buffer, size, "value of %s is %s", name, value); @@ -1624,9 +1627,10 @@ make_message (char *name, char *value) how much space is needed.} */ buffer = (char *) xrealloc (buffer, nchars + 1); - /* @r{Try again.} */ - snprintf (buffer, size, "value of %s is %s", - name, value); + if (buffer != NULL) + /* @r{Try again.} */ + snprintf (buffer, size, "value of %s is %s", + name, value); @} /* @r{The last call worked, return the string.} */ return buffer; @@ -1659,6 +1663,10 @@ buffer you allocate in advance. The @va address of a @code{char *} object, and @code{asprintf} stores a pointer to the newly allocated string at that location. +The return value is the number of characters allocated for the buffer, or +less than zero if an error occured. Usually this means that the buffer +could not be allocated. + Here is how to use @code{asprintf} to get the same result as the @code{snprintf} example, but more easily: @@ -1669,7 +1677,8 @@ char * make_message (char *name, char *value) @{ char *result; - asprintf (&result, "value of %s is %s", name, value); + if (asprintf (&result, "value of %s is %s", name, value) < 0) + return NULL; return result; @} @end smallexample @@ -3084,7 +3093,7 @@ For more information about the descripto @node Error Recovery @section Recovering from errors -You may explicitly clear the error and EOF flags with the @code{clearerr} +You may explicitly clear the error and EOF flags with the @code{clearerr} function. @comment stdio.h @@ -3112,7 +3121,7 @@ always fail again in the same way. So u report the error to the user, rather than install complicated recovery logic. -One important exception is @code{EINTR} (@pxref{Interrupted Primitives}). +One important exception is @code{EINTR} (@pxref{Interrupted Primitives}). Many stream I/O implementations will treat it as an ordinary error, which can be quite inconvenient. You can avoid this hassle by installing all signals with the @code{SA_RESTART} flag. diff -adurpN glibc-2.2/manual/string.texi glibc-2.2.1/manual/string.texi --- glibc-2.2/manual/string.texi Mon May 1 14:56:45 2000 +++ glibc-2.2.1/manual/string.texi Sat Jan 6 20:35:24 2001 @@ -1097,11 +1097,11 @@ specifying a null character as the value @comment ??? @deftypefun {char *} strchrnul (const char *@var{string}, int @var{c}) @code{strchrnul} is the same as @code{strchr} except that if it does -not find the character, it returns a pointer to string's terminating +not find the character, it returns a pointer to string's terminating null character rather than a null pointer. @end deftypefun -One useful, but unusual, use of the @code{strchr} +One useful, but unusual, use of the @code{strchr} function is when one wants to have a pointer pointing to the NUL byte terminating a string. This is often written in this way: @@ -1421,6 +1421,85 @@ token = strsep (&running, delimiters); token = strsep (&running, delimiters); /* token => NULL */ @end smallexample +@comment string.h +@comment GNU +@deftypefun {char *} basename (const char *@var{filename}) +The GNU version of the @code{basename} function returns the last +component of the path in @var{filename}. This function is the prefered +usage, since it does not modify the argument, @var{filename}, and +respects trailing slashes. The prototype for @code{basename} can be +found in @file{string.h}. Note, this function is overriden by the XPG +version, if @file{libgen.h} is included. + +Example of using GNU @code{basename}: + +@smallexample +#include + +int +main (int argc, char *argv[]) +@{ + char *prog = basename (argv[0]); + + if (argc < 2) + @{ + fprintf (stderr, "Usage %s \n", prog); + exit (1); + @} + + @dots{} +@} +@end smallexample + +@strong{Portability Note:} This function may produce different results +on different systems. + +@end deftypefun + +@comment libgen.h +@comment XPG +@deftypefun {char *} basename (char *@var{path}) +This is the standard XPG defined @code{basename}. It is similar in +spirit to the GNU version, but may modify the @var{path} by removing +trailing '/' characters. If the @var{path} is made up entirely of '/' +characters, then "/" will be returned. Also, if @var{path} is +@code{NULL} or an empty string, then "." is returned. The prototype for +the XPG version can be found in @file{libgen.h}. + +Example of using XPG @code{basename}: + +@smallexample +#include + +int +main (int argc, char *argv[]) +@{ + char *prog; + char *path = strdupa (argv[0]); + + prog = basename (path); + + if (argc < 2) + @{ + fprintf (stderr, "Usage %s \n", prog); + exit (1); + @} + + @dots{} + +@} +@end smallexample +@end deftypefun + +@comment libgen.h +@comment XPG +@deftypefun {char *} dirname (char *@var{path}) +The @code{dirname} function is the compliment to the XPG version of +@code{basename}. It returns the parent directory of the file specified +by @var{path}. If @var{path} is @code{NULL}, an empty string, or +contains no '/' characters, then "." is returned. The prototype for this +function can be found in @file{libgen.h}. +@end deftypefun @node strfry @section strfry @@ -1436,7 +1515,7 @@ The prototype for this function is in @f @comment string.h @comment GNU -@deftypefun {char *} strfry (char *@var{string}) +@deftypefun {char *} strfry (char *@var{string}) @code{strfry} creates a pseudorandom anagram of a string, replacing the input with the anagram in place. For each position in the string, diff -adurpN glibc-2.2/manual/sysinfo.texi glibc-2.2.1/manual/sysinfo.texi --- glibc-2.2/manual/sysinfo.texi Tue Jun 6 08:17:14 2000 +++ glibc-2.2.1/manual/sysinfo.texi Sun Jan 7 09:08:47 2001 @@ -15,6 +15,7 @@ can make changes. machine type * Filesystem Handling:: Controlling/querying mounts * System Parameters:: Getting and setting various system parameters +* Load Average:: Getting the system load average @end menu To get information on parameters of the system that are built into the @@ -1190,3 +1191,23 @@ parameters are: @item @code{bdflush} @end itemize + +@node Load Average +@section Getting the system load average + +This section describes the @code{getloadavg} function, which gets the 1, 5 +and 15 minute load averages of the system. The load average is the number of +processes in the system run queue, averaged over various periods of time +(1, 5 and 15 minutes in this case). + +The symbols used in this section are declared in the file @file{stdlib.h}. + +@comment stdlib.h +@comment BSD +@deftypefun int getloadavg (double @var{loadavg}[], int @var{nelem}) +This function gets the 1, 5 and 15 minute load averages of the system. The +values are placed in @var{loadavg}. The function will place at most +@var{nelem} elements into the array, @var{loadavg}. Never are there more +than three elements returned and possibly less than @var{nelem}. The return +value is the number of elements written to @var{loadavg}, or -1 on error. +@end deftypefun diff -adurpN glibc-2.2/math/atest-exp.c glibc-2.2.1/math/atest-exp.c --- glibc-2.2/math/atest-exp.c Thu Sep 10 22:47:12 1998 +++ glibc-2.2.1/math/atest-exp.c Sat Jan 6 20:35:24 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Geoffrey Keating , 1997. @@ -19,7 +19,7 @@ #include #include -#include +#include #include #include #include @@ -40,7 +40,7 @@ static const char exp1[102] = "2" /* poi "84d9045190cfef324e7738926cfbe5f4bf8d8d8c31d763da07"; static const char hexdig[] = "0123456789abcdef"; -void +static void print_mpn_hex (const mp_limb_t *x, unsigned size) { char value[size + 1]; @@ -56,7 +56,7 @@ print_mpn_hex (const mp_limb_t *x, unsig fputs (value, stdout); } -void +static void exp_mpn (mp1 ex, mp1 x) { unsigned n; diff -adurpN glibc-2.2/math/atest-exp2.c glibc-2.2.1/math/atest-exp2.c --- glibc-2.2/math/atest-exp2.c Thu Sep 10 22:49:44 1998 +++ glibc-2.2.1/math/atest-exp2.c Sat Jan 6 20:35:24 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Geoffrey Keating , 1997. @@ -19,7 +19,7 @@ #include #include -#include +#include #include #include #include @@ -45,7 +45,7 @@ static const char exp_m1[102] = "0" /* p static const char hexdig[] = "0123456789abcdef"; -void +static void print_mpn_fp (const mp_limb_t *x, unsigned int dp, unsigned int base) { unsigned int i; @@ -66,7 +66,7 @@ print_mpn_fp (const mp_limb_t *x, unsign } } -void +static void read_mpn_hex(mp_limb_t *x, const char *str) { int i; @@ -96,7 +96,7 @@ get_log2(void) } /* Compute e^x. */ -void +static void exp_mpn (mp1 ex, mp1 x) { unsigned int n; @@ -130,7 +130,7 @@ exp_mpn (mp1 ex, mp1 x) } /* Calculate 2^x. */ -void +static void exp2_mpn (mp1 ex, mp1 x) { mp2 tmp; diff -adurpN glibc-2.2/math/atest-sincos.c glibc-2.2.1/math/atest-sincos.c --- glibc-2.2/math/atest-sincos.c Thu Sep 10 22:48:36 1998 +++ glibc-2.2.1/math/atest-sincos.c Sat Jan 6 20:35:24 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Geoffrey Keating , 1997. @@ -19,7 +19,7 @@ #include #include -#include +#include #include #include #include @@ -43,7 +43,7 @@ static const char cos1[101] = "300240b760e6fa96a94430a52d0e9e43f3450e3b8ff99bc934"; static const char hexdig[] = "0123456789abcdef"; -void +static void print_mpn_hex (const mp_limb_t *x, unsigned size) { char value[size + 1]; @@ -59,7 +59,7 @@ print_mpn_hex (const mp_limb_t *x, unsig fputs (value, stdout); } -void +static void sincosx_mpn (mp1 si, mp1 co, mp1 xx, mp1 ix) { int i; diff -adurpN glibc-2.2/math/bits/cmathcalls.h glibc-2.2.1/math/bits/cmathcalls.h --- glibc-2.2/math/bits/cmathcalls.h Mon Sep 18 15:42:28 2000 +++ glibc-2.2.1/math/bits/cmathcalls.h Sat Jan 6 20:35:26 2001 @@ -1,6 +1,6 @@ /* Prototype declarations for complex math functions; helper file for . - Copyright (C) 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 2001 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 @@ -130,8 +130,9 @@ __MATHDECL (_Mdouble_,creal, (_Mdouble_c /* Now some optimized versions. GCC has handy notations for these - functions. */ -#if defined __GNUC__ && defined __OPTIMIZE__ + functions. Recent GCC handles these as builtin functions so does + not need inlines. */ +#if defined __GNUC__ && !__GNUC_PREREQ (2, 97) && defined __OPTIMIZE__ /* Imaginary part of Z. */ extern __inline _Mdouble_ diff -adurpN glibc-2.2/math/fenv.h glibc-2.2.1/math/fenv.h --- glibc-2.2/math/fenv.h Wed Nov 17 10:51:47 1999 +++ glibc-2.2.1/math/fenv.h Sat Jan 6 20:35:24 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1997, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1999, 2000 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 @@ -41,7 +41,7 @@ The following macros are defined iff the implementation supports this kind of exception. FE_INEXACT inexact result - FE_DIVBYZERO devision by zero + FE_DIVBYZERO division by zero FE_UNDERFLOW result not representable due to underflow FE_OVERFLOW result not representable due to overflow FE_INVALID invalid operation diff -adurpN glibc-2.2/math/libm-test.inc glibc-2.2.1/math/libm-test.inc --- glibc-2.2/math/libm-test.inc Thu Oct 26 22:57:32 2000 +++ glibc-2.2.1/math/libm-test.inc Sat Jan 6 20:35:26 2001 @@ -4395,16 +4395,17 @@ main (int argc, char **argv) printf (" %d test cases plus %d tests for exception flags executed.\n", noTests, noExcTests); if (noXFails) - printf (" %d expected failures occured.\n", noXFails); + printf (" %d expected failures occurred.\n", noXFails); if (noXPasses) - printf (" %d unexpected passes occured.\n", noXPasses); + printf (" %d unexpected passes occurred.\n", noXPasses); if (noErrors) { - printf (" %d errors occured.\n", noErrors); - exit (1); + printf (" %d errors occurred.\n", noErrors); + return 1; } printf (" All tests passed successfully.\n"); - exit (0); + + return 0; } /* diff -adurpN glibc-2.2/math/test-fenv.c glibc-2.2.1/math/test-fenv.c --- glibc-2.2/math/test-fenv.c Sun Oct 8 17:05:04 2000 +++ glibc-2.2.1/math/test-fenv.c Sat Jan 6 20:35:26 2001 @@ -657,5 +657,5 @@ main (void) exit (1); } printf ("\n All tests passed successfully.\n"); - exit (0); + return 0; } diff -adurpN glibc-2.2/math/test-fpucw.c glibc-2.2.1/math/test-fpucw.c --- glibc-2.2/math/test-fpucw.c Wed Aug 2 14:52:28 2000 +++ glibc-2.2.1/math/test-fpucw.c Wed Nov 22 10:59:51 2000 @@ -32,8 +32,8 @@ main (void) cw &= ~_FPU_RESERVED; if (cw != (_FPU_DEFAULT & ~_FPU_RESERVED)) - printf ("control word is 0x%x but should be 0x%x.\n", - cw, (_FPU_DEFAULT & ~_FPU_RESERVED)); + printf ("control word is 0x%lx but should be 0x%lx.\n", + (long int) cw, (long int) (_FPU_DEFAULT & ~_FPU_RESERVED)); return cw != (_FPU_DEFAULT & ~_FPU_RESERVED); diff -adurpN glibc-2.2/math/test-misc.c glibc-2.2.1/math/test-misc.c --- glibc-2.2/math/test-misc.c Thu Oct 26 22:57:32 2000 +++ glibc-2.2.1/math/test-misc.c Sat Jan 6 20:35:26 2001 @@ -17,8 +17,11 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include +#include #include #include +#include int @@ -39,6 +42,64 @@ main (void) result = 1; } } + +# if __GNUC__ >= 3 || __GNUC_MINOR__ >= 96 + { + long double x; + long double m; + long double r; + int e; + int i; + +# if LDBL_MANT_DIG == 64 + m = 0xf.fffffffffffffffp-4L; +# elif LDBL_MANT_DIG == 113 + m = 0x1.ffffffffffffffffffffffffffffp-1L; +# else +# error "Please adjust" +# endif + + for (i = LDBL_MAX_EXP, x = LDBL_MAX; i >= LDBL_MIN_EXP; --i, x /= 2.0L) + { + printf ("2^%d: ", i); + + r = frexpl (x, &e); + if (r != m) + { + printf ("mantissa incorrect: %.20La\n", r); + result = 1; + continue; + } + if (e != i) + { + printf ("exponent wrong %d (%.20Lg)\n", e, x); + result = 1; + continue; + } + puts ("ok"); + } + } +# endif + +#if 0 + { + int e; + long double r = frexpl (LDBL_MIN * LDBL_EPSILON, &e); + + if (r != 0.5) + { + printf ("frexpl (LDBL_MIN * LDBL_EPSILON, ...): mantissa wrong: %Lg\n", + r); + result = 1; + } + else if (e != -16444) + { + printf ("frexpl (LDBL_MIN * LDBL_EPSILON, ...): exponent wrong: %d\n", + e); + result = 1; + } + } +#endif #endif { @@ -53,6 +114,953 @@ main (void) result = 1; } } + + { + union ieee754_float v1; + union ieee754_float v2; + float f; + + v1.f = f = FLT_MIN; + if (fpclassify (f) != FP_NORMAL) + { + printf ("fpclassify (FLT_MIN) failed: %d\n", fpclassify (f)); + result = 1; + } + f = nextafterf (f, FLT_MIN / 2.0f); + if (fpclassify (f) != FP_SUBNORMAL) + { + printf ("fpclassify (FLT_MIN-epsilon) failed: %d\n", fpclassify (f)); + result = 1; + } + v2.f = f = nextafterf (f, FLT_MIN); + if (fpclassify (f) != FP_NORMAL) + { + printf ("fpclassify (FLT_MIN-epsilon+epsilon) failed: %d\n", + fpclassify (f)); + result = 1; + } + + if (v1.ieee.mantissa != v2.ieee.mantissa) + { + printf ("FLT_MIN: mantissa differs: %8x vs %8x\n", + v1.ieee.mantissa, v2.ieee.mantissa); + result = 1; + } + if (v1.ieee.exponent != v2.ieee.exponent) + { + printf ("FLT_MIN: exponent differs: %4x vs %4x\n", + v1.ieee.exponent, v2.ieee.exponent); + result = 1; + } + if (v1.ieee.negative != v2.ieee.negative) + { + printf ("FLT_MIN: negative differs: %d vs %d\n", + v1.ieee.negative, v2.ieee.negative); + result = 1; + } + + v1.f = f = -FLT_MIN; + if (fpclassify (f) != FP_NORMAL) + { + printf ("fpclassify (-FLT_MIN) failed: %d\n", fpclassify (f)); + result = 1; + } + f = nextafterf (f, -FLT_MIN / 2.0f); + if (fpclassify (f) != FP_SUBNORMAL) + { + printf ("fpclassify (-FLT_MIN-epsilon) failed: %d\n", fpclassify (f)); + result = 1; + } + v2.f = f = nextafterf (f, -FLT_MIN); + if (fpclassify (f) != FP_NORMAL) + { + printf ("fpclassify (-FLT_MIN-epsilon+epsilon) failed: %d\n", + fpclassify (f)); + result = 1; + } + + if (v1.ieee.mantissa != v2.ieee.mantissa) + { + printf ("-FLT_MIN: mantissa differs: %8x vs %8x\n", + v1.ieee.mantissa, v2.ieee.mantissa); + result = 1; + } + if (v1.ieee.exponent != v2.ieee.exponent) + { + printf ("-FLT_MIN: exponent differs: %4x vs %4x\n", + v1.ieee.exponent, v2.ieee.exponent); + result = 1; + } + if (v1.ieee.negative != v2.ieee.negative) + { + printf ("-FLT_MIN: negative differs: %d vs %d\n", + v1.ieee.negative, v2.ieee.negative); + result = 1; + } + + f = FLT_MAX; + if (fpclassify (f) != FP_NORMAL) + { + printf ("fpclassify (FLT_MAX) failed: %d\n", fpclassify (f)); + result = 1; + } + f = nextafterf (f, INFINITY); + if (fpclassify (f) != FP_INFINITE) + { + printf ("fpclassify (FLT_MAX+epsilon) failed: %d\n", fpclassify (f)); + result = 1; + } + + f = -FLT_MAX; + if (fpclassify (f) != FP_NORMAL) + { + printf ("fpclassify (-FLT_MAX) failed: %d\n", fpclassify (f)); + result = 1; + } + f = nextafterf (f, -INFINITY); + if (fpclassify (f) != FP_INFINITE) + { + printf ("fpclassify (-FLT_MAX-epsilon) failed: %d\n", fpclassify (f)); + result = 1; + } + + v1.f = f = 0.0625; + f = nextafterf (f, 0.0); + v2.f = f = nextafterf (f, 1.0); + + if (v1.ieee.mantissa != v2.ieee.mantissa) + { + printf ("0.0625f down: mantissa differs: %8x vs %8x\n", + v1.ieee.mantissa, v2.ieee.mantissa); + result = 1; + } + if (v1.ieee.exponent != v2.ieee.exponent) + { + printf ("0.0625f down: exponent differs: %4x vs %4x\n", + v1.ieee.exponent, v2.ieee.exponent); + result = 1; + } + if (v1.ieee.negative != v2.ieee.negative) + { + printf ("0.0625f down: negative differs: %d vs %d\n", + v1.ieee.negative, v2.ieee.negative); + result = 1; + } + + v1.f = f = 0.0625; + f = nextafterf (f, 1.0); + v2.f = f = nextafterf (f, 0.0); + + if (v1.ieee.mantissa != v2.ieee.mantissa) + { + printf ("0.0625f up: mantissa differs: %8x vs %8x\n", + v1.ieee.mantissa, v2.ieee.mantissa); + result = 1; + } + if (v1.ieee.exponent != v2.ieee.exponent) + { + printf ("0.0625f up: exponent differs: %4x vs %4x\n", + v1.ieee.exponent, v2.ieee.exponent); + result = 1; + } + if (v1.ieee.negative != v2.ieee.negative) + { + printf ("0.0625f up: negative differs: %d vs %d\n", + v1.ieee.negative, v2.ieee.negative); + result = 1; + } + + v1.f = f = -0.0625; + f = nextafterf (f, 0.0); + v2.f = f = nextafterf (f, -1.0); + + if (v1.ieee.mantissa != v2.ieee.mantissa) + { + printf ("-0.0625f up: mantissa differs: %8x vs %8x\n", + v1.ieee.mantissa, v2.ieee.mantissa); + result = 1; + } + if (v1.ieee.exponent != v2.ieee.exponent) + { + printf ("-0.0625f up: exponent differs: %4x vs %4x\n", + v1.ieee.exponent, v2.ieee.exponent); + result = 1; + } + if (v1.ieee.negative != v2.ieee.negative) + { + printf ("-0.0625f up: negative differs: %d vs %d\n", + v1.ieee.negative, v2.ieee.negative); + result = 1; + } + + v1.f = f = -0.0625; + f = nextafterf (f, -1.0); + v2.f = f = nextafterf (f, 0.0); + + if (v1.ieee.mantissa != v2.ieee.mantissa) + { + printf ("-0.0625f down: mantissa differs: %8x vs %8x\n", + v1.ieee.mantissa, v2.ieee.mantissa); + result = 1; + } + if (v1.ieee.exponent != v2.ieee.exponent) + { + printf ("-0.0625f down: exponent differs: %4x vs %4x\n", + v1.ieee.exponent, v2.ieee.exponent); + result = 1; + } + if (v1.ieee.negative != v2.ieee.negative) + { + printf ("-0.0625f down: negative differs: %d vs %d\n", + v1.ieee.negative, v2.ieee.negative); + result = 1; + } + + v1.f = f = 0.0f; + f = nextafterf (f, 1.0); + v2.f = nextafterf (f, -1.0); + + if (v1.ieee.mantissa != v2.ieee.mantissa) + { + printf ("0.0f up: mantissa differs: %8x vs %8x\n", + v1.ieee.mantissa, v2.ieee.mantissa); + result = 1; + } + if (v1.ieee.exponent != v2.ieee.exponent) + { + printf ("0.0f up: exponent differs: %4x vs %4x\n", + v1.ieee.exponent, v2.ieee.exponent); + result = 1; + } + if (0 != v2.ieee.negative) + { + printf ("0.0f up: negative differs: 0 vs %d\n", + v2.ieee.negative); + result = 1; + } + + v1.f = f = 0.0f; + f = nextafterf (f, -1.0); + v2.f = nextafterf (f, 1.0); + + if (v1.ieee.mantissa != v2.ieee.mantissa) + { + printf ("0.0f down: mantissa differs: %8x vs %8x\n", + v1.ieee.mantissa, v2.ieee.mantissa); + result = 1; + } + if (v1.ieee.exponent != v2.ieee.exponent) + { + printf ("0.0f down: exponent differs: %4x vs %4x\n", + v1.ieee.exponent, v2.ieee.exponent); + result = 1; + } + if (1 != v2.ieee.negative) + { + printf ("0.0f down: negative differs: 1 vs %d\n", + v2.ieee.negative); + result = 1; + } + } + + { + union ieee754_double v1; + union ieee754_double v2; + double d; + + v1.d = d = DBL_MIN; + if (fpclassify (d) != FP_NORMAL) + { + printf ("fpclassify (DBL_MIN) failed: %d\n", fpclassify (d)); + result = 1; + } + d = nextafter (d, DBL_MIN / 2.0); + if (fpclassify (d) != FP_SUBNORMAL) + { + printf ("fpclassify (DBL_MIN-epsilon) failed: %d\n", fpclassify (d)); + result = 1; + } + v2.d = d = nextafter (d, DBL_MIN); + if (fpclassify (d) != FP_NORMAL) + { + printf ("fpclassify (DBL_MIN-epsilon+epsilon) failed: %d\n", + fpclassify (d)); + result = 1; + } + + if (v1.ieee.mantissa0 != v2.ieee.mantissa0) + { + printf ("DBL_MIN: mantissa0 differs: %8x vs %8x\n", + v1.ieee.mantissa0, v2.ieee.mantissa0); + result = 1; + } + if (v1.ieee.mantissa1 != v2.ieee.mantissa1) + { + printf ("DBL_MIN: mantissa1 differs: %8x vs %8x\n", + v1.ieee.mantissa1, v2.ieee.mantissa1); + result = 1; + } + if (v1.ieee.exponent != v2.ieee.exponent) + { + printf ("DBL_MIN: exponent differs: %4x vs %4x\n", + v1.ieee.exponent, v2.ieee.exponent); + result = 1; + } + if (v1.ieee.negative != v2.ieee.negative) + { + printf ("DBL_MIN: negative differs: %d vs %d\n", + v1.ieee.negative, v2.ieee.negative); + result = 1; + } + + v1.d = d = -DBL_MIN; + if (fpclassify (d) != FP_NORMAL) + { + printf ("fpclassify (-DBL_MIN) failed: %d\n", fpclassify (d)); + result = 1; + } + d = nextafter (d, -DBL_MIN / 2.0); + if (fpclassify (d) != FP_SUBNORMAL) + { + printf ("fpclassify (-DBL_MIN-epsilon) failed: %d\n", fpclassify (d)); + result = 1; + } + v2.d = d = nextafter (d, -DBL_MIN); + if (fpclassify (d) != FP_NORMAL) + { + printf ("fpclassify (-DBL_MIN-epsilon+epsilon) failed: %d\n", + fpclassify (d)); + result = 1; + } + + if (v1.ieee.mantissa0 != v2.ieee.mantissa0) + { + printf ("-DBL_MIN: mantissa0 differs: %8x vs %8x\n", + v1.ieee.mantissa0, v2.ieee.mantissa0); + result = 1; + } + if (v1.ieee.mantissa1 != v2.ieee.mantissa1) + { + printf ("-DBL_MIN: mantissa1 differs: %8x vs %8x\n", + v1.ieee.mantissa1, v2.ieee.mantissa1); + result = 1; + } + if (v1.ieee.exponent != v2.ieee.exponent) + { + printf ("-DBL_MIN: exponent differs: %4x vs %4x\n", + v1.ieee.exponent, v2.ieee.exponent); + result = 1; + } + if (v1.ieee.negative != v2.ieee.negative) + { + printf ("-DBL_MIN: negative differs: %d vs %d\n", + v1.ieee.negative, v2.ieee.negative); + result = 1; + } + + d = DBL_MAX; + if (fpclassify (d) != FP_NORMAL) + { + printf ("fpclassify (DBL_MAX) failed: %d\n", fpclassify (d)); + result = 1; + } + d = nextafter (d, INFINITY); + if (fpclassify (d) != FP_INFINITE) + { + printf ("fpclassify (DBL_MAX+epsilon) failed: %d\n", fpclassify (d)); + result = 1; + } + + d = -DBL_MAX; + if (fpclassify (d) != FP_NORMAL) + { + printf ("fpclassify (-DBL_MAX) failed: %d\n", fpclassify (d)); + result = 1; + } + d = nextafter (d, -INFINITY); + if (fpclassify (d) != FP_INFINITE) + { + printf ("fpclassify (-DBL_MAX-epsilon) failed: %d\n", fpclassify (d)); + result = 1; + } + + v1.d = d = 0.0625; + d = nextafter (d, 0.0); + v2.d = d = nextafter (d, 1.0); + + if (v1.ieee.mantissa0 != v2.ieee.mantissa0) + { + printf ("0.0625 down: mantissa0 differs: %8x vs %8x\n", + v1.ieee.mantissa0, v2.ieee.mantissa0); + result = 1; + } + if (v1.ieee.mantissa1 != v2.ieee.mantissa1) + { + printf ("0.0625 down: mantissa1 differs: %8x vs %8x\n", + v1.ieee.mantissa1, v2.ieee.mantissa1); + result = 1; + } + if (v1.ieee.exponent != v2.ieee.exponent) + { + printf ("0.0625 down: exponent differs: %4x vs %4x\n", + v1.ieee.exponent, v2.ieee.exponent); + result = 1; + } + if (v1.ieee.negative != v2.ieee.negative) + { + printf ("0.0625 down: negative differs: %d vs %d\n", + v1.ieee.negative, v2.ieee.negative); + result = 1; + } + + v1.d = d = 0.0625; + d = nextafter (d, 1.0); + v2.d = d = nextafter (d, 0.0); + + if (v1.ieee.mantissa0 != v2.ieee.mantissa0) + { + printf ("0.0625 up: mantissa0 differs: %8x vs %8x\n", + v1.ieee.mantissa0, v2.ieee.mantissa0); + result = 1; + } + if (v1.ieee.mantissa1 != v2.ieee.mantissa1) + { + printf ("0.0625 up: mantissa1 differs: %8x vs %8x\n", + v1.ieee.mantissa1, v2.ieee.mantissa1); + result = 1; + } + if (v1.ieee.exponent != v2.ieee.exponent) + { + printf ("0.0625 up: exponent differs: %4x vs %4x\n", + v1.ieee.exponent, v2.ieee.exponent); + result = 1; + } + if (v1.ieee.negative != v2.ieee.negative) + { + printf ("0.0625 up: negative differs: %d vs %d\n", + v1.ieee.negative, v2.ieee.negative); + result = 1; + } + + v1.d = d = -0.0625; + d = nextafter (d, 0.0); + v2.d = d = nextafter (d, -1.0); + + if (v1.ieee.mantissa0 != v2.ieee.mantissa0) + { + printf ("-0.0625 up: mantissa0 differs: %8x vs %8x\n", + v1.ieee.mantissa0, v2.ieee.mantissa0); + result = 1; + } + if (v1.ieee.mantissa1 != v2.ieee.mantissa1) + { + printf ("-0.0625 up: mantissa1 differs: %8x vs %8x\n", + v1.ieee.mantissa1, v2.ieee.mantissa1); + result = 1; + } + if (v1.ieee.exponent != v2.ieee.exponent) + { + printf ("-0.0625 up: exponent differs: %4x vs %4x\n", + v1.ieee.exponent, v2.ieee.exponent); + result = 1; + } + if (v1.ieee.negative != v2.ieee.negative) + { + printf ("-0.0625 up: negative differs: %d vs %d\n", + v1.ieee.negative, v2.ieee.negative); + result = 1; + } + + v1.d = d = -0.0625; + d = nextafter (d, -1.0); + v2.d = d = nextafter (d, 0.0); + + if (v1.ieee.mantissa0 != v2.ieee.mantissa0) + { + printf ("-0.0625 down: mantissa0 differs: %8x vs %8x\n", + v1.ieee.mantissa0, v2.ieee.mantissa0); + result = 1; + } + if (v1.ieee.mantissa1 != v2.ieee.mantissa1) + { + printf ("-0.0625 down: mantissa1 differs: %8x vs %8x\n", + v1.ieee.mantissa1, v2.ieee.mantissa1); + result = 1; + } + if (v1.ieee.exponent != v2.ieee.exponent) + { + printf ("-0.0625 down: exponent differs: %4x vs %4x\n", + v1.ieee.exponent, v2.ieee.exponent); + result = 1; + } + if (v1.ieee.negative != v2.ieee.negative) + { + printf ("-0.0625 down: negative differs: %d vs %d\n", + v1.ieee.negative, v2.ieee.negative); + result = 1; + } + + v1.d = d = 0.0; + d = nextafter (d, 1.0); + v2.d = nextafter (d, -1.0); + + if (v1.ieee.mantissa0 != v2.ieee.mantissa0) + { + printf ("0.0 up: mantissa0 differs: %8x vs %8x\n", + v1.ieee.mantissa0, v2.ieee.mantissa0); + result = 1; + } + if (v1.ieee.mantissa1 != v2.ieee.mantissa1) + { + printf ("0.0 up: mantissa1 differs: %8x vs %8x\n", + v1.ieee.mantissa1, v2.ieee.mantissa1); + result = 1; + } + if (v1.ieee.exponent != v2.ieee.exponent) + { + printf ("0.0 up: exponent differs: %4x vs %4x\n", + v1.ieee.exponent, v2.ieee.exponent); + result = 1; + } + if (0 != v2.ieee.negative) + { + printf ("0.0 up: negative differs: 0 vs %d\n", + v2.ieee.negative); + result = 1; + } + + v1.d = d = 0.0; + d = nextafter (d, -1.0); + v2.d = nextafter (d, 1.0); + + if (v1.ieee.mantissa0 != v2.ieee.mantissa0) + { + printf ("0.0 down: mantissa0 differs: %8x vs %8x\n", + v1.ieee.mantissa0, v2.ieee.mantissa0); + result = 1; + } + if (v1.ieee.mantissa1 != v2.ieee.mantissa1) + { + printf ("0.0 down: mantissa1 differs: %8x vs %8x\n", + v1.ieee.mantissa1, v2.ieee.mantissa1); + result = 1; + } + if (v1.ieee.exponent != v2.ieee.exponent) + { + printf ("0.0 down: exponent differs: %4x vs %4x\n", + v1.ieee.exponent, v2.ieee.exponent); + result = 1; + } + if (1 != v2.ieee.negative) + { + printf ("0.0 down: negative differs: 1 vs %d\n", + v2.ieee.negative); + result = 1; + } + } + +#ifndef NO_LONG_DOUBLE + { + union ieee854_long_double v1; + union ieee854_long_double v2; + long double ld; + + v1.d = ld = LDBL_MIN; + if (fpclassify (ld) != FP_NORMAL) + { + printf ("fpclassify (LDBL_MIN) failed: %d\n", fpclassify (ld)); + result = 1; + } + ld = nextafterl (ld, LDBL_MIN / 2.0); + if (fpclassify (ld) != FP_SUBNORMAL) + { + printf ("fpclassify (LDBL_MIN-epsilon) failed: %d (%La)\n", + fpclassify (ld), ld); + result = 1; + } + v2.d = ld = nextafterl (ld, LDBL_MIN); + if (fpclassify (ld) != FP_NORMAL) + { + printf ("fpclassify (LDBL_MIN-epsilon+epsilon) failed: %d (%La)\n", + fpclassify (ld), ld); + result = 1; + } + + if (v1.ieee.mantissa0 != v2.ieee.mantissa0) + { + printf ("LDBL_MIN: mantissa0 differs: %8x vs %8x\n", + v1.ieee.mantissa0, v2.ieee.mantissa0); + result = 1; + } + if (v1.ieee.mantissa1 != v2.ieee.mantissa1) + { + printf ("LDBL_MIN: mantissa1 differs: %8x vs %8x\n", + v1.ieee.mantissa1, v2.ieee.mantissa1); + result = 1; + } + if (v1.ieee.exponent != v2.ieee.exponent) + { + printf ("LDBL_MIN: exponent differs: %4x vs %4x\n", + v1.ieee.exponent, v2.ieee.exponent); + result = 1; + } + if (v1.ieee.negative != v2.ieee.negative) + { + printf ("LDBL_MIN: negative differs: %d vs %d\n", + v1.ieee.negative, v2.ieee.negative); + result = 1; + } + + v1.d = ld = -LDBL_MIN; + if (fpclassify (ld) != FP_NORMAL) + { + printf ("fpclassify (-LDBL_MIN) failed: %d\n", fpclassify (ld)); + result = 1; + } + ld = nextafterl (ld, -LDBL_MIN / 2.0); + if (fpclassify (ld) != FP_SUBNORMAL) + { + printf ("fpclassify (-LDBL_MIN-epsilon) failed: %d (%La)\n", + fpclassify (ld), ld); + result = 1; + } + v2.d = ld = nextafterl (ld, -LDBL_MIN); + if (fpclassify (ld) != FP_NORMAL) + { + printf ("fpclassify (-LDBL_MIN-epsilon+epsilon) failed: %d (%La)\n", + fpclassify (ld), ld); + result = 1; + } + + if (v1.ieee.mantissa0 != v2.ieee.mantissa0) + { + printf ("-LDBL_MIN: mantissa0 differs: %8x vs %8x\n", + v1.ieee.mantissa0, v2.ieee.mantissa0); + result = 1; + } + if (v1.ieee.mantissa1 != v2.ieee.mantissa1) + { + printf ("-LDBL_MIN: mantissa1 differs: %8x vs %8x\n", + v1.ieee.mantissa1, v2.ieee.mantissa1); + result = 1; + } + if (v1.ieee.exponent != v2.ieee.exponent) + { + printf ("-LDBL_MIN: exponent differs: %4x vs %4x\n", + v1.ieee.exponent, v2.ieee.exponent); + result = 1; + } + if (v1.ieee.negative != v2.ieee.negative) + { + printf ("-LDBL_MIN: negative differs: %d vs %d\n", + v1.ieee.negative, v2.ieee.negative); + result = 1; + } + + ld = LDBL_MAX; + if (fpclassify (ld) != FP_NORMAL) + { + printf ("fpclassify (LDBL_MAX) failed: %d\n", fpclassify (ld)); + result = 1; + } + ld = nextafterl (ld, INFINITY); + if (fpclassify (ld) != FP_INFINITE) + { + printf ("fpclassify (LDBL_MAX+epsilon) failed: %d\n", fpclassify (ld)); + result = 1; + } + + ld = -LDBL_MAX; + if (fpclassify (ld) != FP_NORMAL) + { + printf ("fpclassify (-LDBL_MAX) failed: %d\n", fpclassify (ld)); + result = 1; + } + ld = nextafterl (ld, -INFINITY); + if (fpclassify (ld) != FP_INFINITE) + { + printf ("fpclassify (-LDBL_MAX-epsilon) failed: %d\n", + fpclassify (ld)); + result = 1; + } + + v1.d = ld = 0.0625; + ld = nextafterl (ld, 0.0); + v2.d = ld = nextafterl (ld, 1.0); + + if (v1.ieee.mantissa0 != v2.ieee.mantissa0) + { + printf ("0.0625L down: mantissa0 differs: %8x vs %8x\n", + v1.ieee.mantissa0, v2.ieee.mantissa0); + result = 1; + } + if (v1.ieee.mantissa1 != v2.ieee.mantissa1) + { + printf ("0.0625L down: mantissa1 differs: %8x vs %8x\n", + v1.ieee.mantissa1, v2.ieee.mantissa1); + result = 1; + } + if (v1.ieee.exponent != v2.ieee.exponent) + { + printf ("0.0625L down: exponent differs: %4x vs %4x\n", + v1.ieee.exponent, v2.ieee.exponent); + result = 1; + } + if (v1.ieee.negative != v2.ieee.negative) + { + printf ("0.0625L down: negative differs: %d vs %d\n", + v1.ieee.negative, v2.ieee.negative); + result = 1; + } + + v1.d = ld = 0.0625; + ld = nextafterl (ld, 1.0); + v2.d = ld = nextafterl (ld, 0.0); + + if (v1.ieee.mantissa0 != v2.ieee.mantissa0) + { + printf ("0.0625L up: mantissa0 differs: %8x vs %8x\n", + v1.ieee.mantissa0, v2.ieee.mantissa0); + result = 1; + } + if (v1.ieee.mantissa1 != v2.ieee.mantissa1) + { + printf ("0.0625L up: mantissa1 differs: %8x vs %8x\n", + v1.ieee.mantissa1, v2.ieee.mantissa1); + result = 1; + } + if (v1.ieee.exponent != v2.ieee.exponent) + { + printf ("0.0625L up: exponent differs: %4x vs %4x\n", + v1.ieee.exponent, v2.ieee.exponent); + result = 1; + } + if (v1.ieee.negative != v2.ieee.negative) + { + printf ("0.0625L up: negative differs: %d vs %d\n", + v1.ieee.negative, v2.ieee.negative); + result = 1; + } + + v1.d = ld = -0.0625; + ld = nextafterl (ld, 0.0); + v2.d = ld = nextafterl (ld, -1.0); + + if (v1.ieee.mantissa0 != v2.ieee.mantissa0) + { + printf ("-0.0625L up: mantissa0 differs: %8x vs %8x\n", + v1.ieee.mantissa0, v2.ieee.mantissa0); + result = 1; + } + if (v1.ieee.mantissa1 != v2.ieee.mantissa1) + { + printf ("-0.0625L up: mantissa1 differs: %8x vs %8x\n", + v1.ieee.mantissa1, v2.ieee.mantissa1); + result = 1; + } + if (v1.ieee.exponent != v2.ieee.exponent) + { + printf ("-0.0625L up: exponent differs: %4x vs %4x\n", + v1.ieee.exponent, v2.ieee.exponent); + result = 1; + } + if (v1.ieee.negative != v2.ieee.negative) + { + printf ("-0.0625L up: negative differs: %d vs %d\n", + v1.ieee.negative, v2.ieee.negative); + result = 1; + } + + v1.d = ld = -0.0625; + ld = nextafterl (ld, -1.0); + v2.d = ld = nextafterl (ld, 0.0); + + if (v1.ieee.mantissa0 != v2.ieee.mantissa0) + { + printf ("-0.0625L down: mantissa0 differs: %8x vs %8x\n", + v1.ieee.mantissa0, v2.ieee.mantissa0); + result = 1; + } + if (v1.ieee.mantissa1 != v2.ieee.mantissa1) + { + printf ("-0.0625L down: mantissa1 differs: %8x vs %8x\n", + v1.ieee.mantissa1, v2.ieee.mantissa1); + result = 1; + } + if (v1.ieee.exponent != v2.ieee.exponent) + { + printf ("-0.0625L down: exponent differs: %4x vs %4x\n", + v1.ieee.exponent, v2.ieee.exponent); + result = 1; + } + if (v1.ieee.negative != v2.ieee.negative) + { + printf ("-0.0625L down: negative differs: %d vs %d\n", + v1.ieee.negative, v2.ieee.negative); + result = 1; + } + + v1.d = ld = 0.0; + ld = nextafterl (ld, 1.0); + v2.d = nextafterl (ld, -1.0); + + if (v1.ieee.mantissa0 != v2.ieee.mantissa0) + { + printf ("0.0L up: mantissa0 differs: %8x vs %8x\n", + v1.ieee.mantissa0, v2.ieee.mantissa0); + result = 1; + } + if (v1.ieee.mantissa1 != v2.ieee.mantissa1) + { + printf ("0.0L up: mantissa1 differs: %8x vs %8x\n", + v1.ieee.mantissa1, v2.ieee.mantissa1); + result = 1; + } + if (v1.ieee.exponent != v2.ieee.exponent) + { + printf ("0.0L up: exponent differs: %4x vs %4x\n", + v1.ieee.exponent, v2.ieee.exponent); + result = 1; + } + if (0 != v2.ieee.negative) + { + printf ("0.0L up: negative differs: 0 vs %d\n", + v2.ieee.negative); + result = 1; + } + + v1.d = ld = 0.0; + ld = nextafterl (ld, -1.0); + v2.d = nextafterl (ld, 1.0); + + if (v1.ieee.mantissa0 != v2.ieee.mantissa0) + { + printf ("0.0L down: mantissa0 differs: %8x vs %8x\n", + v1.ieee.mantissa0, v2.ieee.mantissa0); + result = 1; + } + if (v1.ieee.mantissa1 != v2.ieee.mantissa1) + { + printf ("0.0L down: mantissa1 differs: %8x vs %8x\n", + v1.ieee.mantissa1, v2.ieee.mantissa1); + result = 1; + } + if (v1.ieee.exponent != v2.ieee.exponent) + { + printf ("0.0L down: exponent differs: %4x vs %4x\n", + v1.ieee.exponent, v2.ieee.exponent); + result = 1; + } + if (1 != v2.ieee.negative) + { + printf ("0.0L down: negative differs: 1 vs %d\n", + v2.ieee.negative); + result = 1; + } + } +#endif + + if (! isnormal (FLT_MIN)) + { + puts ("isnormal (FLT_MIN) failed"); + result = 1; + } + if (! isnormal (DBL_MIN)) + { + puts ("isnormal (DBL_MIN) failed"); + result = 1; + } +#ifndef NO_LONG_DOUBLE + if (! isnormal (LDBL_MIN)) + { + puts ("isnormal (LDBL_MIN) failed"); + result = 1; + } +#endif + +#ifdef __i386__ + /* This is a test for the strange long doubles in x86 FPUs. */ + { + union + { + char b[10]; + long double d; + } u = + { .b = { 0, 0, 0, 0, 0, 0, 0, 0x80, 0, 0 } }; + + if (fpclassify (u.d) != FP_NORMAL) + { + printf ("fpclassify (0x00008000000000000000) failed: %d (%Lg)\n", + fpclassify (u.d), u.d); + result = 1; + } + } + + /* Special NaNs in x86 long double. Test for scalbl. */ + { + union + { + char b[10]; + long double d; + } u = + { .b = { 0, 1, 0, 0, 0, 0, 0, 0xc0, 0xff, 0x7f } }; + long double r; + + r = scalbl (u.d, 0.0); + if (!isnan (r)) + { + puts ("scalbl(NaN, 0) does not return NaN"); + result = 1; + } + else if (memcmp (&r, &u.d, sizeof (double)) != 0) + { + puts ("scalbl(NaN, 0) does not return the same NaN"); + result = 1; + } + } +#endif + +#ifndef NO_LONG_DOUBLE + { + long double r; + + feclearexcept (FE_ALL_EXCEPT); + r = scalbl (LDBL_MIN, 2147483647); + if (! isinf (r)) + { + puts ("scalbl (LDBL_MIN, 2147483647) does not return Inf"); + result = 1; + } + else if (signbit (r) != 0) + { + puts ("scalbl (LDBL_MIN, 2147483647) returns -Inf"); + result = 1; + } + else if (fetestexcept (FE_UNDERFLOW)) + { + puts ("scalbl(NaN, 0) raises underflow exception"); + result = 1; + } + + feclearexcept (FE_ALL_EXCEPT); + r = scalbl (LDBL_MAX, -2147483647); + if (r != 0.0) + { + puts ("scalbl (LDBL_MAX, -2147483647) does not return 0"); + result = 1; + } + else if (signbit (r) != 0) + { + puts ("scalbl (LDBL_MAX, -2147483647) returns -Inf"); + result = 1; + } + else if (fetestexcept (FE_OVERFLOW)) + { + puts ("scalbl(NaN, 0) raises overflow exception"); + result = 1; + } + } +#endif return result; } diff -adurpN glibc-2.2/math/w_scalb.c glibc-2.2.1/math/w_scalb.c --- glibc-2.2/math/w_scalb.c Tue Jul 13 16:06:05 1999 +++ glibc-2.2.1/math/w_scalb.c Sat Jan 6 20:35:26 2001 @@ -45,7 +45,7 @@ static char rcsid[] = "$NetBSD: w_scalb. #else double z; z = __ieee754_scalb(x,fn); - if(_LIB_VERSION == _IEEE_) return z; + if(_LIB_VERSION != _SVID_) return z; if(!(__finite(z)||__isnan(z))&&__finite(x)) { return __kernel_standard(x,(double)fn,32); /* scalb overflow */ } diff -adurpN glibc-2.2/math/w_scalbf.c glibc-2.2.1/math/w_scalbf.c --- glibc-2.2/math/w_scalbf.c Tue Jul 13 16:06:10 1999 +++ glibc-2.2.1/math/w_scalbf.c Sat Jan 6 20:35:26 2001 @@ -48,7 +48,7 @@ static char rcsid[] = "$NetBSD: w_scalbf #else float z; z = __ieee754_scalbf(x,fn); - if(_LIB_VERSION == _IEEE_) return z; + if(_LIB_VERSION != _SVID_) return z; if(!(__finitef(z)||__isnanf(z))&&__finitef(x)) { /* scalbf overflow */ return (float)__kernel_standard((double)x,(double)fn,132); diff -adurpN glibc-2.2/math/w_scalbl.c glibc-2.2.1/math/w_scalbl.c --- glibc-2.2/math/w_scalbl.c Tue Jul 13 16:06:17 1999 +++ glibc-2.2.1/math/w_scalbl.c Sat Jan 6 20:35:26 2001 @@ -49,7 +49,7 @@ static char rcsid[] = "$NetBSD: $"; #else long double z; z = __ieee754_scalbl(x,fn); - if(_LIB_VERSION == _IEEE_) return z; + if(_LIB_VERSION != _SVID_) return z; if(!(__finitel(z)||__isnanl(z))&&__finitel(x)) { return __kernel_standard(x,(double)fn,232); /* scalb overflow */ } diff -adurpN glibc-2.2/misc/dirname.c glibc-2.2.1/misc/dirname.c --- glibc-2.2/misc/dirname.c Tue Nov 5 20:22:52 1996 +++ glibc-2.2.1/misc/dirname.c Sat Jan 6 20:35:26 2001 @@ -1,5 +1,5 @@ /* dirname - return directory part of PATH. - Copyright (C) 1996 Free Software Foundation, Inc. + Copyright (C) 1996, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -31,17 +31,20 @@ dirname (char *path) /* Find last '/'. */ last_slash = path != NULL ? strrchr (path, '/') : NULL; - if (last_slash == path) - /* The last slash is the first character in the string. We have to - return "/". */ - ++last_slash; - else if (last_slash != NULL && last_slash[1] == '\0') + if (last_slash != NULL && last_slash != path && last_slash[1] == '\0') /* The '/' is the last character, we have to look further. */ - last_slash = memchr (path, last_slash - path, '/'); + last_slash = __memrchr (path, '/', last_slash - path); if (last_slash != NULL) - /* Terminate the path. */ - last_slash[0] = '\0'; + { + /* Terminate the path. */ + if (last_slash == path) + /* The last slash is the first character in the string. We have to + return "/". */ + ++last_slash; + + last_slash[0] = '\0'; + } else /* This assignment is ill-designed but the XPG specs require to return a string containing "." in any case no directory part is diff -adurpN glibc-2.2/misc/efgcvt.c glibc-2.2.1/misc/efgcvt.c --- glibc-2.2/misc/efgcvt.c Thu Jul 29 15:32:48 1999 +++ glibc-2.2.1/misc/efgcvt.c Sat Jan 6 20:35:26 2001 @@ -31,6 +31,7 @@ /* Actually we have to write (DBL_DIG + log10 (DBL_MAX_10_EXP)) but we don't have log10 available in the preprocessor. */ # define MAXDIG (NDIGIT_MAX + 3) +# define FCVT_MAXDIG (DBL_MAX_10_EXP + MAXDIG) # if DBL_MANT_DIG == 53 # define NDIGIT_MAX 17 # elif DBL_MANT_DIG == 24 @@ -50,22 +51,34 @@ #define FCVT_BUFFER APPEND (FUNC_PREFIX, fcvt_buffer) +#define FCVT_BUFPTR APPEND (FUNC_PREFIX, fcvt_bufptr) #define ECVT_BUFFER APPEND (FUNC_PREFIX, ecvt_buffer) static char FCVT_BUFFER[MAXDIG]; static char ECVT_BUFFER[MAXDIG]; - +static char *FCVT_BUFPTR; char * APPEND (FUNC_PREFIX, fcvt) (value, ndigit, decpt, sign) FLOAT_TYPE value; int ndigit, *decpt, *sign; { + if (FCVT_BUFPTR == NULL) + { + if (APPEND (FUNC_PREFIX, fcvt_r) (value, ndigit, decpt, sign, + FCVT_BUFFER, MAXDIG) != -1) + return FCVT_BUFFER; + + FCVT_BUFPTR = (char *) malloc (FCVT_MAXDIG); + if (FCVT_BUFPTR == NULL) + return FCVT_BUFFER; + } + (void) APPEND (FUNC_PREFIX, fcvt_r) (value, ndigit, decpt, sign, - FCVT_BUFFER, MAXDIG); + FCVT_BUFPTR, FCVT_MAXDIG); - return FCVT_BUFFER; + return FCVT_BUFPTR; } @@ -89,3 +102,13 @@ APPEND (FUNC_PREFIX, gcvt) (value, ndigi sprintf (buf, "%.*" FLOAT_FMT_FLAG "g", MIN (ndigit, NDIGIT_MAX), value); return buf; } + +/* Free all resources if necessary. */ +static void __attribute__ ((unused)) +free_mem (void) +{ + if (FCVT_BUFPTR != NULL) + free (FCVT_BUFPTR); +} + +text_set_element (__libc_subfreeres, free_mem); diff -adurpN glibc-2.2/misc/efgcvt_r.c glibc-2.2.1/misc/efgcvt_r.c --- glibc-2.2/misc/efgcvt_r.c Wed Nov 10 17:06:16 1999 +++ glibc-2.2.1/misc/efgcvt_r.c Fri Dec 1 11:55:07 2000 @@ -1,5 +1,5 @@ /* Compatibility functions for floating point formatting, reentrant versions. - Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. + Copyright (C) 1995,1996,1997,1998,1999,2000 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 @@ -60,7 +60,8 @@ APPEND (FUNC_PREFIX, fcvt_r) (value, ndi char *buf; size_t len; { - int n, i; + ssize_t n; + ssize_t i; int left; if (buf == NULL) @@ -102,7 +103,7 @@ APPEND (FUNC_PREFIX, fcvt_r) (value, ndi n = __snprintf (buf, len, "%.*" FLOAT_FMT_FLAG "f", MIN (ndigit, NDIGIT_MAX), value); /* Check for a too small buffer. */ - if (n >= len) + if (n >= (ssize_t) len) return -1; i = 0; diff -adurpN glibc-2.2/misc/error.c glibc-2.2.1/misc/error.c --- glibc-2.2/misc/error.c Fri Feb 11 15:48:54 2000 +++ glibc-2.2.1/misc/error.c Sat Jan 6 20:35:26 2001 @@ -74,6 +74,12 @@ unsigned int error_message_count; /* In GNU libc we want do not want to use the common name `error' directly. Instead make it a weak alias. */ +extern void __error (int status, int errnum, const char *message, ...) + __attribute__ ((__format__ (__printf__, 3, 4))); +extern void __error_at_line (int status, int errnum, const char *file_name, + unsigned int line_number, const char *message, + ...) + __attribute__ ((__format__ (__printf__, 5, 6)));; # define error __error # define error_at_line __error_at_line diff -adurpN glibc-2.2/misc/getusershell.c glibc-2.2.1/misc/getusershell.c --- glibc-2.2/misc/getusershell.c Thu Sep 7 11:56:35 2000 +++ glibc-2.2.1/misc/getusershell.c Fri Dec 1 11:55:07 2000 @@ -45,8 +45,7 @@ static char sccsid[] = "@(#)getusershell * /etc/shells. */ -static char *okshells[] = { (char *) _PATH_BSHELL, (char *) _PATH_CSHELL, - NULL }; +static const char *okshells[] = { _PATH_BSHELL, _PATH_CSHELL, NULL }; static char **curshell, **shells, *strings; static char **initshells __P((void)); @@ -101,21 +100,21 @@ initshells() free(strings); strings = NULL; if ((fp = fopen(_PATH_SHELLS, "r")) == NULL) - return (okshells); + return (char **) okshells; if (fstat64(fileno(fp), &statb) == -1) { (void)fclose(fp); - return (okshells); + return (char **) okshells; } if ((strings = malloc((u_int)statb.st_size + 1)) == NULL) { (void)fclose(fp); - return (okshells); + return (char **) okshells; } shells = calloc((unsigned)statb.st_size / 3, sizeof (char *)); if (shells == NULL) { (void)fclose(fp); free(strings); strings = NULL; - return (okshells); + return (char **) okshells; } sp = shells; cp = strings; diff -adurpN glibc-2.2/misc/mntent_r.c glibc-2.2.1/misc/mntent_r.c --- glibc-2.2/misc/mntent_r.c Thu Jul 29 16:44:55 1999 +++ glibc-2.2.1/misc/mntent_r.c Fri Dec 1 11:55:07 2000 @@ -1,5 +1,5 @@ /* Utilities for reading/writing fstab, mtab, etc. - Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. + Copyright (C) 1995,1996,1997,1998,1999,2000 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 @@ -144,6 +144,7 @@ __getmntent_r (FILE *stream, struct mnte case 1: mp->mnt_passno = 0; case 2: + break; } funlockfile (stream); diff -adurpN glibc-2.2/misc/qefgcvt.c glibc-2.2.1/misc/qefgcvt.c --- glibc-2.2/misc/qefgcvt.c Thu Jul 29 15:32:49 1999 +++ glibc-2.2.1/misc/qefgcvt.c Sat Jan 6 20:35:26 2001 @@ -1,5 +1,5 @@ /* Compatibility functions for floating point formatting, long double version. - Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1999, 2000 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 @@ -26,6 +26,7 @@ we don't have log10 available in the preprocessor. Since we cannot assume anything on the used `long double' format be generous. */ #define MAXDIG (NDIGIT_MAX + 12) +#define FCVT_MAXDIG (LDBL_MAX_10_EXP + MAXDIG) #if LDBL_MANT_DIG == 64 # define NDIGIT_MAX 21 #elif LDBL_MANT_DIG == 53 diff -adurpN glibc-2.2/misc/regexp.c glibc-2.2.1/misc/regexp.c --- glibc-2.2/misc/regexp.c Tue Oct 31 11:10:06 2000 +++ glibc-2.2.1/misc/regexp.c Fri Dec 1 11:55:07 2000 @@ -33,6 +33,7 @@ char *locs; found in the buffer starting at EXPBUF. `loc1' will return the first character matched and `loc2' points to the next unmatched character. */ +extern int __step (const char *string, const char *expbuf); int __step (const char *string, const char *expbuf) { @@ -41,7 +42,7 @@ __step (const char *string, const char * expbuf += __alignof (regex_t *); expbuf -= (expbuf - ((const char *) 0)) % __alignof__ (regex_t *); - if (__regexec ((regex_t *) expbuf, string, 1, &match, REG_NOTEOL) + if (__regexec ((const regex_t *) expbuf, string, 1, &match, REG_NOTEOL) == REG_NOMATCH) return 0; @@ -55,6 +56,7 @@ weak_alias (__step, step) /* Match the beginning of STRING with the compiled regular expression in EXPBUF. If the match is successful `loc2' will contain the position of the first unmatched character. */ +extern int __advance (const char *string, const char *expbuf); int __advance (const char *string, const char *expbuf) { @@ -63,7 +65,7 @@ __advance (const char *string, const cha expbuf += __alignof__ (regex_t *); expbuf -= (expbuf - ((const char *) 0)) % __alignof__ (regex_t *); - if (__regexec ((regex_t *) expbuf, string, 1, &match, REG_NOTEOL) + if (__regexec ((const regex_t *) expbuf, string, 1, &match, REG_NOTEOL) == REG_NOMATCH /* We have to check whether the check is at the beginning of the buffer. */ diff -adurpN glibc-2.2/misc/sys/cdefs.h glibc-2.2.1/misc/sys/cdefs.h --- glibc-2.2/misc/sys/cdefs.h Sun Oct 8 17:05:04 2000 +++ glibc-2.2.1/misc/sys/cdefs.h Sat Jan 6 20:35:26 2001 @@ -93,6 +93,24 @@ #endif +/* Support for flexible arrays. */ +#if __GNUC_PREREQ (2,97) +/* GCC 2.97 supports C99 flexible array members. */ +# define __flexarr [] +#else +# ifdef __GNUC__ +# define __flexarr [0] +# else +# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L +# define __flexarr [] +# else +/* Some other non-C99 compiler. Approximate with [1]. */ +# define __flexarr [1] +# endif +# endif +#endif + + /* __asm__ ("xyz") is used throughout the headers to rename functions at the assembly language level. This is wrapped by the __REDIRECT macro, in order to support compilers that can do this some other @@ -149,6 +167,17 @@ # define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x))) #else # define __attribute_format_arg__(x) /* Ignore */ +#endif + +/* At some point during the gcc 2.97 development the `strfmon' format + attribute for functions was introduced. We don't want to use it + unconditionally (although this would be possible) since it + generates warnings. */ +#if __GNUC_PREREQ (2,97) +# define __attribute_format_strfmon__(a,b) \ + __attribute__ ((__format__ (__strfmon__, a, b))) +#else +# define __attribute_format_strfmon__(a,b) /* Ignore */ #endif /* It is possible to compile containing GCC extensions even if GCC is diff -adurpN glibc-2.2/misc/sys/syslog.h glibc-2.2.1/misc/sys/syslog.h --- glibc-2.2/misc/sys/syslog.h Mon Oct 11 11:45:09 1999 +++ glibc-2.2.1/misc/sys/syslog.h Sat Jan 6 20:35:26 2001 @@ -179,12 +179,13 @@ extern void openlog (__const char *__ide extern int setlogmask (int __mask) __THROW; /* Generate a log message using FMT string and option arguments. */ -extern void syslog (int __pri, __const char *__fmt, ...) __THROW; +extern void syslog (int __pri, __const char *__fmt, ...) __THROW + __attribute__ ((__format__(__printf__, 2, 3))); #ifdef __USE_BSD /* Generate a log message using FMT and using arguments pointed to by AP. */ extern void vsyslog (int __pri, __const char *__fmt, __gnuc_va_list __ap) - __THROW; + __THROW __attribute__ ((__format__(__printf__, 2, 0))); #endif __END_DECLS diff -adurpN glibc-2.2/misc/tsearch.c glibc-2.2.1/misc/tsearch.c --- glibc-2.2/misc/tsearch.c Wed Nov 5 15:18:09 1997 +++ glibc-2.2.1/misc/tsearch.c Fri Dec 1 11:55:07 2000 @@ -1,4 +1,4 @@ -/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996, 1997, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Bernd Schmidt , 1997. @@ -97,6 +97,7 @@ typedef struct node_t struct node_t *right; unsigned int red:1; } *node; +typedef const struct node_t *const_node; #undef DEBUGGING @@ -594,7 +595,7 @@ static void internal_function trecurse (const void *vroot, __action_fn_t action, int level) { - node root = (node ) vroot; + const_node root = (const_node) vroot; if (root->left == NULL && root->right == NULL) (*action) (root, leaf, level); @@ -617,7 +618,7 @@ trecurse (const void *vroot, __action_fn void __twalk (const void *vroot, __action_fn_t action) { - const node root = (node) vroot; + const_node root = (const_node) vroot; CHECK_TREE (root); diff -adurpN glibc-2.2/misc/tst-dirname.c glibc-2.2.1/misc/tst-dirname.c --- glibc-2.2/misc/tst-dirname.c Fri May 26 12:38:34 2000 +++ glibc-2.2.1/misc/tst-dirname.c Sat Jan 6 20:35:26 2001 @@ -24,7 +24,7 @@ #include -int +static int test (const char *input, const char *result) { int retval; @@ -45,11 +45,15 @@ main (void) /* These are the examples given in XPG4.2. */ result |= test ("/usr/lib", "/usr"); - result |= test ("/usr", "/"); + result |= test ("/usr/", "/"); result |= test ("usr", "."); result |= test ("/", "/"); result |= test (".", "."); result |= test ("..", "."); + + /* Some more tests. */ + result |= test ("/usr/lib/", "/usr"); + result |= test ("/usr", "/"); return result != 0; } diff -adurpN glibc-2.2/misc/tst-efgcvt.c glibc-2.2.1/misc/tst-efgcvt.c --- glibc-2.2/misc/tst-efgcvt.c Wed Jun 21 11:11:02 2000 +++ glibc-2.2.1/misc/tst-efgcvt.c Sat Jan 6 20:35:26 2001 @@ -81,11 +81,12 @@ static testcase fcvt_tests[] = { 100.01, -4, 3, "100" }, { 123.01, -4, 3, "100" }, { 126.71, -4, 3, "100" }, + { 322.5, 16, 3, "3225000000000000000" }, /* -1.0 is end marker. */ { -1.0, 0, 0, "" } }; -void +static void output_error (const char *name, double value, int ndigit, const char *exp_p, int exp_decpt, int exp_sign, char *res_p, int res_decpt, int res_sign) @@ -100,7 +101,7 @@ output_error (const char *name, double v } -void +static void output_r_error (const char *name, double value, int ndigit, const char *exp_p, int exp_decpt, int exp_sign, int exp_return, char *res_p, int res_decpt, int res_sign, int res_return) @@ -114,7 +115,7 @@ output_r_error (const char *name, double ++error_count; } -void +static void test (testcase tests[], efcvt_func efcvt, const char *name) { int no = 0; @@ -135,7 +136,7 @@ test (testcase tests[], efcvt_func efcvt } } -void +static void test_r (testcase tests[], efcvt_r_func efcvt_r, const char *name) { int no = 0; @@ -159,7 +160,7 @@ test_r (testcase tests[], efcvt_r_func e } } -void +static void special (void) { int decpt, sign, res; diff -adurpN glibc-2.2/nis/nis_intern.h glibc-2.2.1/nis/nis_intern.h --- glibc-2.2/nis/nis_intern.h Mon Jan 3 13:04:41 2000 +++ glibc-2.2.1/nis/nis_intern.h Sat Jan 6 20:35:26 2001 @@ -1,4 +1,4 @@ -/* Copyright (c) 1997, 1998, 1999 Free Software Foundation, Inc. +/* Copyright (c) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1997. @@ -46,6 +46,13 @@ extern nis_error __do_niscall (const_nis xdrproc_t xargs, caddr_t req, xdrproc_t xres, caddr_t resp, unsigned int flags, nis_cb *cb); +extern nis_error __do_niscall3 (dir_binding *dbp, u_long prog, + xdrproc_t xargs, caddr_t req, + xdrproc_t xres, caddr_t resp, + unsigned int flags, nis_cb *cb); + +extern u_short __pmap_getnisport (struct sockaddr_in *address, u_long program, + u_long version, u_int protocol); /* NIS+ callback */ extern nis_error __nis_do_callback (struct dir_binding *bptr, diff -adurpN glibc-2.2/nis/nss_compat/compat-grp.c glibc-2.2.1/nis/nss_compat/compat-grp.c --- glibc-2.2/nis/nss_compat/compat-grp.c Tue Dec 21 10:58:59 1999 +++ glibc-2.2.1/nis/nss_compat/compat-grp.c Sat Jan 6 20:35:26 2001 @@ -169,7 +169,7 @@ internal_setgrent (ent_t *ent) enum nss_status -_nss_compat_setgrent (void) +_nss_compat_setgrent (int stayopen) { enum nss_status result; @@ -543,7 +543,7 @@ getgrent_next_file (struct group *result { enum nss_status status; - /* Store the group in the blacklist for the "+" at the end of + /* Store the group in the blacklist for the "+" at the end of /etc/group */ blacklist_store_name (&result->gr_name[1], ent); status = getgrnam_plusgroup (&result->gr_name[1], result, buffer, diff -adurpN glibc-2.2/nis/nss_compat/compat-pwd.c glibc-2.2.1/nis/nss_compat/compat-pwd.c --- glibc-2.2/nis/nss_compat/compat-pwd.c Fri Dec 10 10:10:10 1999 +++ glibc-2.2.1/nis/nss_compat/compat-pwd.c Sat Jan 6 20:35:26 2001 @@ -327,7 +327,7 @@ internal_setpwent (ent_t *ent) enum nss_status -_nss_compat_setpwent (void) +_nss_compat_setpwent (int stayopen) { enum nss_status result; diff -adurpN glibc-2.2/nis/nss_compat/compat-spwd.c glibc-2.2.1/nis/nss_compat/compat-spwd.c --- glibc-2.2/nis/nss_compat/compat-spwd.c Tue Dec 21 10:58:59 1999 +++ glibc-2.2.1/nis/nss_compat/compat-spwd.c Sat Jan 6 20:35:26 2001 @@ -227,7 +227,7 @@ internal_setspent (ent_t *ent) enum nss_status -_nss_compat_setspent (void) +_nss_compat_setspent (int stayopen) { enum nss_status result; @@ -484,7 +484,7 @@ getspent_next_nisplus_netgr (const char if (parse_res) { - /* Store the User in the blacklist for the "+" at the end of + /* Store the User in the blacklist for the "+" at the end of /etc/passwd */ blacklist_store_name (result->sp_namp, ent); copy_spwd_changes (result, &ent->pwd, p2, p2len); @@ -844,7 +844,7 @@ getspent_next_file (struct spwd *result, { /* XXX Do not use fixed length buffers. */ char buf2[1024]; - char *user, *host, *domain; + char *user, *host, *domain; struct __netgrent netgrdata; bzero (&netgrdata, sizeof (struct __netgrent)); diff -adurpN glibc-2.2/nis/nss_nis/nis-ethers.c glibc-2.2.1/nis/nss_nis/nis-ethers.c --- glibc-2.2/nis/nss_nis/nis-ethers.c Tue Mar 28 11:05:35 2000 +++ glibc-2.2.1/nis/nss_nis/nis-ethers.c Sat Jan 6 20:35:26 2001 @@ -24,6 +24,7 @@ #include #include #include +#include #include #include "nss-nis.h" @@ -31,15 +32,9 @@ /* Protect global state against multiple changers */ __libc_lock_define_initialized (static, lock) -struct ether -{ - const char *e_name; - struct ether_addr e_addr; -}; - /* Get the declaration of the parser function. */ #define ENTNAME etherent -#define STRUCTURE ether +#define STRUCTURE etherent #define EXTERN_PARSER #include @@ -114,7 +109,7 @@ internal_nis_setetherent (void) } enum nss_status -_nss_nis_setetherent (void) +_nss_nis_setetherent (int stayopen) { enum nss_status result; @@ -149,7 +144,7 @@ _nss_nis_endetherent (void) } static enum nss_status -internal_nis_getetherent_r (struct ether *eth, char *buffer, size_t buflen, +internal_nis_getetherent_r (struct etherent *eth, char *buffer, size_t buflen, int *errnop) { struct parser_data *data = (void *) buffer; @@ -184,7 +179,7 @@ internal_nis_getetherent_r (struct ether } enum nss_status -_nss_nis_getetherent_r (struct ether *result, char *buffer, size_t buflen, +_nss_nis_getetherent_r (struct etherent *result, char *buffer, size_t buflen, int *errnop) { int status; @@ -199,7 +194,7 @@ _nss_nis_getetherent_r (struct ether *re } enum nss_status -_nss_nis_gethostton_r (const char *name, struct ether *eth, +_nss_nis_gethostton_r (const char *name, struct etherent *eth, char *buffer, size_t buflen, int *errnop) { struct parser_data *data = (void *) buffer; @@ -256,7 +251,7 @@ _nss_nis_gethostton_r (const char *name, } enum nss_status -_nss_nis_getntohost_r (struct ether_addr *addr, struct ether *eth, +_nss_nis_getntohost_r (const struct ether_addr *addr, struct etherent *eth, char *buffer, size_t buflen, int *errnop) { struct parser_data *data = (void *) buffer; diff -adurpN glibc-2.2/nis/nss_nis/nis-grp.c glibc-2.2.1/nis/nss_nis/nis-grp.c --- glibc-2.2/nis/nss_nis/nis-grp.c Tue Dec 21 10:58:59 1999 +++ glibc-2.2.1/nis/nss_nis/nis-grp.c Sat Jan 6 20:35:26 2001 @@ -42,7 +42,7 @@ static char *oldkey = NULL; static int oldkeylen = 0; enum nss_status -_nss_nis_setgrent (void) +_nss_nis_setgrent (int stayopen) { __libc_lock_lock (lock); diff -adurpN glibc-2.2/nis/nss_nis/nis-hosts.c glibc-2.2.1/nis/nss_nis/nis-hosts.c --- glibc-2.2/nis/nss_nis/nis-hosts.c Wed Aug 2 14:52:29 2000 +++ glibc-2.2.1/nis/nss_nis/nis-hosts.c Sat Jan 6 20:35:26 2001 @@ -99,7 +99,7 @@ static char *oldkey = NULL; static int oldkeylen = 0; enum nss_status -_nss_nis_sethostent (void) +_nss_nis_sethostent (int stayopen) { __libc_lock_lock (lock); diff -adurpN glibc-2.2/nis/nss_nis/nis-netgrp.c glibc-2.2.1/nis/nss_nis/nis-netgrp.c --- glibc-2.2/nis/nss_nis/nis-netgrp.c Tue Mar 28 11:05:35 2000 +++ glibc-2.2.1/nis/nss_nis/nis-netgrp.c Sat Jan 6 20:35:26 2001 @@ -34,16 +34,16 @@ /* Locks the static variables in this file. */ __libc_lock_define_initialized (static, lock) -static char *data = NULL; -static size_t data_size = 0; -static char *cursor = NULL;; +static char *data; +static size_t data_size; +static char *cursor; extern enum nss_status _nss_netgroup_parseline (char **cursor, struct __netgrent *result, char *buffer, size_t buflen, int *errnop); enum nss_status -_nss_nis_setnetgrent (char *group) +_nss_nis_setnetgrent (const char *group, struct __netgrent *dummy) { char *domain; char *result; @@ -92,7 +92,7 @@ _nss_nis_setnetgrent (char *group) enum nss_status -_nss_nis_endnetgrent (void) +_nss_nis_endnetgrent (struct __netgrent *dummy) { __libc_lock_lock (lock); diff -adurpN glibc-2.2/nis/nss_nis/nis-network.c glibc-2.2.1/nis/nss_nis/nis-network.c --- glibc-2.2/nis/nss_nis/nis-network.c Fri Apr 7 12:09:28 2000 +++ glibc-2.2.1/nis/nss_nis/nis-network.c Sat Jan 6 20:35:26 2001 @@ -43,7 +43,7 @@ static char *oldkey = NULL; static int oldkeylen = 0; enum nss_status -_nss_nis_setnetent (void) +_nss_nis_setnetent (int stayopen) { __libc_lock_lock (lock); diff -adurpN glibc-2.2/nis/nss_nis/nis-proto.c glibc-2.2.1/nis/nss_nis/nis-proto.c --- glibc-2.2/nis/nss_nis/nis-proto.c Tue Mar 28 11:05:35 2000 +++ glibc-2.2.1/nis/nss_nis/nis-proto.c Sat Jan 6 20:35:26 2001 @@ -106,7 +106,7 @@ internal_nis_setprotoent (void) } enum nss_status -_nss_nis_setprotoent (void) +_nss_nis_setprotoent (int stayopen) { enum nss_status status; diff -adurpN glibc-2.2/nis/nss_nis/nis-pwd.c glibc-2.2.1/nis/nss_nis/nis-pwd.c --- glibc-2.2/nis/nss_nis/nis-pwd.c Mon Sep 14 09:19:25 1998 +++ glibc-2.2.1/nis/nss_nis/nis-pwd.c Sat Jan 6 20:35:27 2001 @@ -42,7 +42,7 @@ static char *oldkey = NULL; static int oldkeylen = 0; enum nss_status -_nss_nis_setpwent (void) +_nss_nis_setpwent (int stayopen) { __libc_lock_lock (lock); diff -adurpN glibc-2.2/nis/nss_nis/nis-rpc.c glibc-2.2.1/nis/nss_nis/nis-rpc.c --- glibc-2.2/nis/nss_nis/nis-rpc.c Tue Mar 28 11:05:35 2000 +++ glibc-2.2.1/nis/nss_nis/nis-rpc.c Sat Jan 6 20:35:27 2001 @@ -115,7 +115,7 @@ internal_nis_setrpcent (intern_t *intern } enum nss_status -_nss_nis_setrpcent (void) +_nss_nis_setrpcent (int stayopen) { enum nss_status status; diff -adurpN glibc-2.2/nis/nss_nis/nis-service.c glibc-2.2.1/nis/nss_nis/nis-service.c --- glibc-2.2/nis/nss_nis/nis-service.c Tue Mar 28 11:05:35 2000 +++ glibc-2.2.1/nis/nss_nis/nis-service.c Sat Jan 6 20:35:27 2001 @@ -115,7 +115,7 @@ internal_nis_setservent (intern_t *inter return status; } enum nss_status -_nss_nis_setservent (void) +_nss_nis_setservent (int stayopen) { enum nss_status status; @@ -207,7 +207,7 @@ _nss_nis_getservent_r (struct servent *s } enum nss_status -_nss_nis_getservbyname_r (const char *name, char *protocol, +_nss_nis_getservbyname_r (const char *name, const char *protocol, struct servent *serv, char *buffer, size_t buflen, int *errnop) { @@ -312,8 +312,9 @@ _nss_nis_getservbyname_r (const char *na } enum nss_status -_nss_nis_getservbyport_r (int port, char *protocol, struct servent *serv, - char *buffer, size_t buflen, int *errnop) +_nss_nis_getservbyport_r (int port, const char *protocol, + struct servent *serv, char *buffer, + size_t buflen, int *errnop) { intern_t data = { NULL, NULL }; enum nss_status status; diff -adurpN glibc-2.2/nis/nss_nis/nis-spwd.c glibc-2.2.1/nis/nss_nis/nis-spwd.c --- glibc-2.2/nis/nss_nis/nis-spwd.c Tue Aug 18 11:42:59 1998 +++ glibc-2.2.1/nis/nss_nis/nis-spwd.c Sat Jan 6 20:35:27 2001 @@ -42,7 +42,7 @@ static char *oldkey = NULL; static int oldkeylen = 0; enum nss_status -_nss_nis_setspent (void) +_nss_nis_setspent (int stayopen) { __libc_lock_lock (lock); diff -adurpN glibc-2.2/nis/nss_nisplus/nisplus-ethers.c glibc-2.2.1/nis/nss_nisplus/nisplus-ethers.c --- glibc-2.2/nis/nss_nisplus/nisplus-ethers.c Fri Feb 27 08:45:21 1998 +++ glibc-2.2.1/nis/nss_nisplus/nisplus-ethers.c Sat Jan 6 20:35:27 2001 @@ -1,6 +1,6 @@ -/* Copyright (C) 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. - Contributed by Thorsten Kukuk , 1997. + Contributed by Thorsten Kukuk , 1997. 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 @@ -35,15 +35,6 @@ static nis_result *result = NULL; static nis_name tablename_val = NULL; static u_long tablename_len = 0; -/* Because the `ethers' lookup does not fit so well in the scheme so - we define a dummy struct here which helps us to use the available - functions. */ -struct etherent -{ - const char *e_name; - struct ether_addr e_addr; -}; -struct etherent_data {}; #define NISENTRYVAL(idx,col,res) \ ((res)->objects.objects_val[(idx)].zo_data.objdata_u.en_data.en_cols.en_cols_val[(col)].ec_value.ec_value_val) @@ -53,7 +44,7 @@ struct etherent_data {}; static int _nss_nisplus_parse_etherent (nis_result *result, struct etherent *ether, - char *buffer, size_t buflen, int *errnop) + char *buffer, size_t buflen, int *errnop) { char *p = buffer; size_t room_left = buflen; @@ -107,7 +98,7 @@ _nss_create_tablename (int *errnop) enum nss_status -_nss_nisplus_setetherent (void) +_nss_nisplus_setetherent (int stayopen) { enum nss_status status; int err; diff -adurpN glibc-2.2/nis/nss_nisplus/nisplus-grp.c glibc-2.2.1/nis/nss_nisplus/nisplus-grp.c --- glibc-2.2/nis/nss_nisplus/nisplus-grp.c Sat Jan 24 05:45:36 1998 +++ glibc-2.2.1/nis/nss_nisplus/nisplus-grp.c Sat Jan 6 20:35:27 2001 @@ -82,7 +82,7 @@ internal_setgrent (void) } enum nss_status -_nss_nisplus_setgrent (void) +_nss_nisplus_setgrent (int stayopen) { enum nss_status status; diff -adurpN glibc-2.2/nis/nss_nisplus/nisplus-hosts.c glibc-2.2.1/nis/nss_nisplus/nisplus-hosts.c --- glibc-2.2/nis/nss_nisplus/nisplus-hosts.c Wed Aug 2 14:52:29 2000 +++ glibc-2.2.1/nis/nss_nisplus/nisplus-hosts.c Sat Jan 6 20:35:27 2001 @@ -197,7 +197,7 @@ _nss_create_tablename (int *errnop) } enum nss_status -_nss_nisplus_sethostent (void) +_nss_nisplus_sethostent (int stayopen) { enum nss_status status = NSS_STATUS_SUCCESS; int err; diff -adurpN glibc-2.2/nis/nss_nisplus/nisplus-netgrp.c glibc-2.2.1/nis/nss_nisplus/nisplus-netgrp.c --- glibc-2.2/nis/nss_nisplus/nisplus-netgrp.c Sun Dec 7 18:40:03 1997 +++ glibc-2.2.1/nis/nss_nisplus/nisplus-netgrp.c Sat Jan 6 20:35:27 2001 @@ -129,8 +129,7 @@ _nss_nisplus_parse_netgroup (struct __ne } enum nss_status -_nss_nisplus_setnetgrent (char *group) - +_nss_nisplus_setnetgrent (const char *group, struct __netgrent *dummy) { enum nss_status status; char buf[strlen (group) + 30]; @@ -169,7 +168,7 @@ _nss_nisplus_setnetgrent (char *group) } enum nss_status -_nss_nisplus_endnetgrent (void) +_nss_nisplus_endnetgrent (struct __netgrent *dummy) { __libc_lock_lock (lock); diff -adurpN glibc-2.2/nis/nss_nisplus/nisplus-network.c glibc-2.2.1/nis/nss_nisplus/nisplus-network.c --- glibc-2.2/nis/nss_nisplus/nisplus-network.c Fri Apr 7 12:09:28 2000 +++ glibc-2.2.1/nis/nss_nisplus/nisplus-network.c Sat Jan 6 20:35:27 2001 @@ -161,7 +161,7 @@ _nss_create_tablename (int *errnop) } enum nss_status -_nss_nisplus_setnetent (void) +_nss_nisplus_setnetent (int stayopen) { enum nss_status status = NSS_STATUS_SUCCESS; int err; diff -adurpN glibc-2.2/nis/nss_nisplus/nisplus-proto.c glibc-2.2.1/nis/nss_nisplus/nisplus-proto.c --- glibc-2.2/nis/nss_nisplus/nisplus-proto.c Mon Feb 16 09:40:21 1998 +++ glibc-2.2.1/nis/nss_nisplus/nisplus-proto.c Sat Jan 6 20:35:27 2001 @@ -158,7 +158,7 @@ _nss_create_tablename (int *errnop) } enum nss_status -_nss_nisplus_setprotoent (void) +_nss_nisplus_setprotoent (int stayopen) { enum nss_status status = NSS_STATUS_SUCCESS; diff -adurpN glibc-2.2/nis/nss_nisplus/nisplus-pwd.c glibc-2.2.1/nis/nss_nisplus/nisplus-pwd.c --- glibc-2.2/nis/nss_nisplus/nisplus-pwd.c Mon Mar 8 11:04:12 1999 +++ glibc-2.2.1/nis/nss_nisplus/nisplus-pwd.c Sat Jan 6 20:35:27 2001 @@ -56,7 +56,7 @@ _nss_create_tablename (int *errnop) enum nss_status -_nss_nisplus_setpwent (void) +_nss_nisplus_setpwent (int stayopen) { enum nss_status status = NSS_STATUS_SUCCESS; int err; diff -adurpN glibc-2.2/nis/nss_nisplus/nisplus-rpc.c glibc-2.2.1/nis/nss_nisplus/nisplus-rpc.c --- glibc-2.2/nis/nss_nisplus/nisplus-rpc.c Mon Feb 16 09:40:22 1998 +++ glibc-2.2.1/nis/nss_nisplus/nisplus-rpc.c Sat Jan 6 20:35:27 2001 @@ -156,7 +156,7 @@ _nss_create_tablename (int *errnop) enum nss_status -_nss_nisplus_setrpcent (void) +_nss_nisplus_setrpcent (int stayopen) { enum nss_status status = NSS_STATUS_SUCCESS; int err; diff -adurpN glibc-2.2/nis/nss_nisplus/nisplus-service.c glibc-2.2.1/nis/nss_nisplus/nisplus-service.c --- glibc-2.2/nis/nss_nisplus/nisplus-service.c Tue Aug 3 12:31:58 1999 +++ glibc-2.2.1/nis/nss_nisplus/nisplus-service.c Sat Jan 6 20:35:27 2001 @@ -165,7 +165,7 @@ _nss_create_tablename (int *errnop) enum nss_status -_nss_nisplus_setservent (void) +_nss_nisplus_setservent (int stayopen) { enum nss_status status = NSS_STATUS_SUCCESS; int err; diff -adurpN glibc-2.2/nis/nss_nisplus/nisplus-spwd.c glibc-2.2.1/nis/nss_nisplus/nisplus-spwd.c --- glibc-2.2/nis/nss_nisplus/nisplus-spwd.c Sat Jan 24 05:45:44 1998 +++ glibc-2.2.1/nis/nss_nisplus/nisplus-spwd.c Sat Jan 6 20:35:27 2001 @@ -55,7 +55,7 @@ _nss_create_tablename (int *errnop) } enum nss_status -_nss_nisplus_setspent (void) +_nss_nisplus_setspent (int stayopen) { enum nss_status status = NSS_STATUS_SUCCESS; int err; diff -adurpN glibc-2.2/nis/rpcsvc/yp.h glibc-2.2.1/nis/rpcsvc/yp.h --- glibc-2.2/nis/rpcsvc/yp.h Sat Oct 31 12:07:18 1998 +++ glibc-2.2.1/nis/rpcsvc/yp.h Sat Jan 6 20:35:27 2001 @@ -241,96 +241,96 @@ __BEGIN_DECLS #define YPVERS 2 #define YPPROC_NULL 0 -extern void *ypproc_null_2 __P ((void *, CLIENT *)); -extern void *ypproc_null_2_svc __P ((void *, struct svc_req *)); +extern void *ypproc_null_2 (void *, CLIENT *); +extern void *ypproc_null_2_svc (void *, struct svc_req *); #define YPPROC_DOMAIN 1 -extern bool_t *ypproc_domain_2 __P ((domainname *, CLIENT *)); -extern bool_t *ypproc_domain_2_svc __P ((domainname *, struct svc_req *)); +extern bool_t *ypproc_domain_2 (domainname *, CLIENT *); +extern bool_t *ypproc_domain_2_svc (domainname *, struct svc_req *); #define YPPROC_DOMAIN_NONACK 2 -extern bool_t *ypproc_domain_nonack_2 __P ((domainname *, CLIENT *)); -extern bool_t *ypproc_domain_nonack_2_svc __P ((domainname *, struct svc_req *)); +extern bool_t *ypproc_domain_nonack_2 (domainname *, CLIENT *); +extern bool_t *ypproc_domain_nonack_2_svc (domainname *, struct svc_req *); #define YPPROC_MATCH 3 -extern ypresp_val *ypproc_match_2 __P ((ypreq_key *, CLIENT *)); -extern ypresp_val *ypproc_match_2_svc __P ((ypreq_key *, struct svc_req *)); +extern ypresp_val *ypproc_match_2 (ypreq_key *, CLIENT *); +extern ypresp_val *ypproc_match_2_svc (ypreq_key *, struct svc_req *); #define YPPROC_FIRST 4 -extern ypresp_key_val *ypproc_first_2 __P ((ypreq_key *, CLIENT *)); -extern ypresp_key_val *ypproc_first_2_svc __P ((ypreq_key *, struct svc_req *)); +extern ypresp_key_val *ypproc_first_2 (ypreq_key *, CLIENT *); +extern ypresp_key_val *ypproc_first_2_svc (ypreq_key *, struct svc_req *); #define YPPROC_NEXT 5 -extern ypresp_key_val *ypproc_next_2 __P ((ypreq_key *, CLIENT *)); -extern ypresp_key_val *ypproc_next_2_svc __P ((ypreq_key *, struct svc_req *)); +extern ypresp_key_val *ypproc_next_2 (ypreq_key *, CLIENT *); +extern ypresp_key_val *ypproc_next_2_svc (ypreq_key *, struct svc_req *); #define YPPROC_XFR 6 -extern ypresp_xfr *ypproc_xfr_2 __P ((ypreq_xfr *, CLIENT *)); -extern ypresp_xfr *ypproc_xfr_2_svc __P ((ypreq_xfr *, struct svc_req *)); +extern ypresp_xfr *ypproc_xfr_2 (ypreq_xfr *, CLIENT *); +extern ypresp_xfr *ypproc_xfr_2_svc (ypreq_xfr *, struct svc_req *); #define YPPROC_CLEAR 7 -extern void *ypproc_clear_2 __P ((void *, CLIENT *)); -extern void *ypproc_clear_2_svc __P ((void *, struct svc_req *)); +extern void *ypproc_clear_2 (void *, CLIENT *); +extern void *ypproc_clear_2_svc (void *, struct svc_req *); #define YPPROC_ALL 8 -extern ypresp_all *ypproc_all_2 __P ((ypreq_nokey *, CLIENT *)); -extern ypresp_all *ypproc_all_2_svc __P ((ypreq_nokey *, struct svc_req *)); +extern ypresp_all *ypproc_all_2 (ypreq_nokey *, CLIENT *); +extern ypresp_all *ypproc_all_2_svc (ypreq_nokey *, struct svc_req *); #define YPPROC_MASTER 9 -extern ypresp_master *ypproc_master_2 __P ((ypreq_nokey *, CLIENT *)); -extern ypresp_master *ypproc_master_2_svc __P ((ypreq_nokey *, struct svc_req *)); +extern ypresp_master *ypproc_master_2 (ypreq_nokey *, CLIENT *); +extern ypresp_master *ypproc_master_2_svc (ypreq_nokey *, struct svc_req *); #define YPPROC_ORDER 10 -extern ypresp_order *ypproc_order_2 __P ((ypreq_nokey *, CLIENT *)); -extern ypresp_order *ypproc_order_2_svc __P ((ypreq_nokey *, struct svc_req *)); +extern ypresp_order *ypproc_order_2 (ypreq_nokey *, CLIENT *); +extern ypresp_order *ypproc_order_2_svc (ypreq_nokey *, struct svc_req *); #define YPPROC_MAPLIST 11 -extern ypresp_maplist *ypproc_maplist_2 __P ((domainname *, CLIENT *)); -extern ypresp_maplist *ypproc_maplist_2_svc __P ((domainname *, struct svc_req *)); -extern int ypprog_2_freeresult __P ((SVCXPRT *, xdrproc_t, caddr_t)); +extern ypresp_maplist *ypproc_maplist_2 (domainname *, CLIENT *); +extern ypresp_maplist *ypproc_maplist_2_svc (domainname *, struct svc_req *); +extern int ypprog_2_freeresult (SVCXPRT *, xdrproc_t, caddr_t); #define YPPUSH_XFRRESPPROG (0x40000000) #define YPPUSH_XFRRESPVERS 1 #define YPPUSHPROC_NULL 0 -extern void *yppushproc_null_1 __P ((void *, CLIENT *)); -extern void *yppushproc_null_1_svc __P ((void *, struct svc_req *)); +extern void *yppushproc_null_1 (void *, CLIENT *); +extern void *yppushproc_null_1_svc (void *, struct svc_req *); #define YPPUSHPROC_XFRRESP 1 -extern void *yppushproc_xfrresp_1 __P ((yppushresp_xfr *, CLIENT *)); -extern void *yppushproc_xfrresp_1_svc __P ((yppushresp_xfr *, struct svc_req *)); -extern int yppush_xfrrespprog_1_freeresult __P ((SVCXPRT *, xdrproc_t, caddr_t)); +extern void *yppushproc_xfrresp_1 (yppushresp_xfr *, CLIENT *); +extern void *yppushproc_xfrresp_1_svc (yppushresp_xfr *, struct svc_req *); +extern int yppush_xfrrespprog_1_freeresult (SVCXPRT *, xdrproc_t, caddr_t); #define YPBINDPROG 100007 #define YPBINDVERS 2 #define YPBINDPROC_NULL 0 -extern void *ypbindproc_null_2 __P ((void *, CLIENT *)); -extern void *ypbindproc_null_2_svc __P ((void *, struct svc_req *)); +extern void *ypbindproc_null_2 (void *, CLIENT *); +extern void *ypbindproc_null_2_svc (void *, struct svc_req *); #define YPBINDPROC_DOMAIN 1 -extern ypbind_resp *ypbindproc_domain_2 __P ((domainname *, CLIENT *)); -extern ypbind_resp *ypbindproc_domain_2_svc __P ((domainname *, struct svc_req *)); +extern ypbind_resp *ypbindproc_domain_2 (domainname *, CLIENT *); +extern ypbind_resp *ypbindproc_domain_2_svc (domainname *, struct svc_req *); #define YPBINDPROC_SETDOM 2 -extern void *ypbindproc_setdom_2 __P ((ypbind_setdom *, CLIENT *)); -extern void *ypbindproc_setdom_2_svc __P ((ypbind_setdom *, struct svc_req *)); -extern int ypbindprog_2_freeresult __P ((SVCXPRT *, xdrproc_t, caddr_t)); +extern void *ypbindproc_setdom_2 (ypbind_setdom *, CLIENT *); +extern void *ypbindproc_setdom_2_svc (ypbind_setdom *, struct svc_req *); +extern int ypbindprog_2_freeresult (SVCXPRT *, xdrproc_t, caddr_t); -extern bool_t xdr_ypstat __P ((XDR *, ypstat*)); -extern bool_t xdr_ypxfrstat __P ((XDR *, ypxfrstat*)); -extern bool_t xdr_domainname __P ((XDR *, domainname*)); -extern bool_t xdr_mapname __P ((XDR *, mapname*)); -extern bool_t xdr_peername __P ((XDR *, peername*)); -extern bool_t xdr_keydat __P ((XDR *, keydat*)); -extern bool_t xdr_valdat __P ((XDR *, valdat*)); -extern bool_t xdr_ypmap_parms __P ((XDR *, ypmap_parms*)); -extern bool_t xdr_ypreq_key __P ((XDR *, ypreq_key*)); -extern bool_t xdr_ypreq_nokey __P ((XDR *, ypreq_nokey*)); -extern bool_t xdr_ypreq_xfr __P ((XDR *, ypreq_xfr*)); -extern bool_t xdr_ypresp_val __P ((XDR *, ypresp_val*)); -extern bool_t xdr_ypresp_key_val __P ((XDR *, ypresp_key_val*)); -extern bool_t xdr_ypresp_master __P ((XDR *, ypresp_master*)); -extern bool_t xdr_ypresp_order __P ((XDR *, ypresp_order*)); -extern bool_t xdr_ypresp_all __P ((XDR *, ypresp_all*)); -extern bool_t xdr_ypresp_xfr __P ((XDR *, ypresp_xfr*)); -extern bool_t xdr_ypmaplist __P ((XDR *, ypmaplist*)); -extern bool_t xdr_ypresp_maplist __P ((XDR *, ypresp_maplist*)); -extern bool_t xdr_yppush_status __P ((XDR *, yppush_status*)); -extern bool_t xdr_yppushresp_xfr __P ((XDR *, yppushresp_xfr*)); -extern bool_t xdr_ypbind_resptype __P ((XDR *, ypbind_resptype*)); -extern bool_t xdr_ypbind_binding __P ((XDR *, ypbind_binding*)); -extern bool_t xdr_ypbind_resp __P ((XDR *, ypbind_resp*)); -extern bool_t xdr_ypbind_setdom __P ((XDR *, ypbind_setdom*)); +extern bool_t xdr_ypstat (XDR *, ypstat*); +extern bool_t xdr_ypxfrstat (XDR *, ypxfrstat*); +extern bool_t xdr_domainname (XDR *, domainname*); +extern bool_t xdr_mapname (XDR *, mapname*); +extern bool_t xdr_peername (XDR *, peername*); +extern bool_t xdr_keydat (XDR *, keydat*); +extern bool_t xdr_valdat (XDR *, valdat*); +extern bool_t xdr_ypmap_parms (XDR *, ypmap_parms*); +extern bool_t xdr_ypreq_key (XDR *, ypreq_key*); +extern bool_t xdr_ypreq_nokey (XDR *, ypreq_nokey*); +extern bool_t xdr_ypreq_xfr (XDR *, ypreq_xfr*); +extern bool_t xdr_ypresp_val (XDR *, ypresp_val*); +extern bool_t xdr_ypresp_key_val (XDR *, ypresp_key_val*); +extern bool_t xdr_ypresp_master (XDR *, ypresp_master*); +extern bool_t xdr_ypresp_order (XDR *, ypresp_order*); +extern bool_t xdr_ypresp_all (XDR *, ypresp_all*); +extern bool_t xdr_ypresp_xfr (XDR *, ypresp_xfr*); +extern bool_t xdr_ypmaplist (XDR *, ypmaplist*); +extern bool_t xdr_ypresp_maplist (XDR *, ypresp_maplist*); +extern bool_t xdr_yppush_status (XDR *, yppush_status*); +extern bool_t xdr_yppushresp_xfr (XDR *, yppushresp_xfr*); +extern bool_t xdr_ypbind_resptype (XDR *, ypbind_resptype*); +extern bool_t xdr_ypbind_binding (XDR *, ypbind_binding*); +extern bool_t xdr_ypbind_resp (XDR *, ypbind_resp*); +extern bool_t xdr_ypbind_setdom (XDR *, ypbind_setdom*); __END_DECLS diff -adurpN glibc-2.2/nis/rpcsvc/yp_prot.h glibc-2.2.1/nis/rpcsvc/yp_prot.h --- glibc-2.2/nis/rpcsvc/yp_prot.h Sat Oct 31 12:07:18 1998 +++ glibc-2.2.1/nis/rpcsvc/yp_prot.h Sat Jan 6 20:35:27 2001 @@ -342,24 +342,24 @@ struct ypresp_all { } ypresp_all_u; }; -extern bool_t xdr_ypreq_key __P ((XDR *__xdrs, struct ypreq_key * __objp)); -extern bool_t xdr_ypreq_nokey __P ((XDR *__xdrs, struct ypreq_nokey * __objp)); -extern bool_t xdr_ypreq_xfr __P ((XDR *__xdrs, struct ypreq_xfr * __objp)); -extern bool_t xdr_ypresp_val __P ((XDR *__xdrs, struct ypresp_val * __objp)); -extern bool_t xdr_ypresp_key_val __P ((XDR *__xdrs, struct ypresp_key_val * __objp)); -extern bool_t xdr_ypbind_resp __P ((XDR *__xdrs, struct ypbind_resp * __objp)); -extern bool_t xdr_ypbind_setdom __P ((XDR *__xdrs, struct ypbind_setdom * __objp)); -extern bool_t xdr_ypmap_parms __P ((XDR *__xdrs, struct ypmap_parms * __objp)); -extern bool_t xdr_yppushresp_xfr __P ((XDR *__xdrs, struct yppushresp_xfr * __objp)); -extern bool_t xdr_ypresp_order __P ((XDR *__xdrs, struct ypresp_order * __objp)); -extern bool_t xdr_ypresp_master __P ((XDR *__xdrs, struct ypresp_master * __objp)); -extern bool_t xdr_ypall __P ((XDR *__xdrs, struct ypall_callback * __objp)); -extern bool_t xdr_ypresp_maplist __P ((XDR *__xdrs, struct ypresp_maplist * __objp)); -extern bool_t xdr_ypbind_binding __P ((XDR *__xdrs, struct ypbind_binding * __objp)); -extern bool_t xdr_ypbind_resptype __P ((XDR *__xdrs, enum ypbind_resptype * __objp)); -extern bool_t xdr_ypstat __P ((XDR *__xdrs, enum ypbind_resptype * __objp)); -extern bool_t xdr_ypresp_all __P ((XDR *__xdrs, struct ypresp_all * __objp)); -extern bool_t xdr_domainname __P ((XDR *__xdrs, char ** __objp)); +extern bool_t xdr_ypreq_key (XDR *__xdrs, struct ypreq_key * __objp); +extern bool_t xdr_ypreq_nokey (XDR *__xdrs, struct ypreq_nokey * __objp); +extern bool_t xdr_ypreq_xfr (XDR *__xdrs, struct ypreq_xfr * __objp); +extern bool_t xdr_ypresp_val (XDR *__xdrs, struct ypresp_val * __objp); +extern bool_t xdr_ypresp_key_val (XDR *__xdrs, struct ypresp_key_val * __objp); +extern bool_t xdr_ypbind_resp (XDR *__xdrs, struct ypbind_resp * __objp); +extern bool_t xdr_ypbind_setdom (XDR *__xdrs, struct ypbind_setdom * __objp); +extern bool_t xdr_ypmap_parms (XDR *__xdrs, struct ypmap_parms * __objp); +extern bool_t xdr_yppushresp_xfr (XDR *__xdrs, struct yppushresp_xfr * __objp); +extern bool_t xdr_ypresp_order (XDR *__xdrs, struct ypresp_order * __objp); +extern bool_t xdr_ypresp_master (XDR *__xdrs, struct ypresp_master * __objp); +extern bool_t xdr_ypall (XDR *__xdrs, struct ypall_callback * __objp); +extern bool_t xdr_ypresp_maplist (XDR *__xdrs, struct ypresp_maplist * __objp); +extern bool_t xdr_ypbind_binding (XDR *__xdrs, struct ypbind_binding * __objp); +extern bool_t xdr_ypbind_resptype (XDR *__xdrs, enum ypbind_resptype * __objp); +extern bool_t xdr_ypstat (XDR *__xdrs, enum ypbind_resptype * __objp); +extern bool_t xdr_ypresp_all (XDR *__xdrs, struct ypresp_all * __objp); +extern bool_t xdr_domainname (XDR *__xdrs, char ** __objp); __END_DECLS diff -adurpN glibc-2.2/nis/rpcsvc/ypupd.h glibc-2.2.1/nis/rpcsvc/ypupd.h --- glibc-2.2/nis/rpcsvc/ypupd.h Sat Oct 31 12:07:18 1998 +++ glibc-2.2.1/nis/rpcsvc/ypupd.h Sat Jan 6 20:35:27 2001 @@ -50,7 +50,7 @@ typedef struct { char *yp_buf_val; } yp_buf; -extern bool_t xdr_yp_buf __P ((XDR *, yp_buf*)); +extern bool_t xdr_yp_buf (XDR *, yp_buf*); struct ypupdate_args { char *mapname; @@ -59,7 +59,7 @@ struct ypupdate_args { }; typedef struct ypupdate_args ypupdate_args; -extern bool_t xdr_ypupdate_args __P ((XDR *, ypupdate_args*)); +extern bool_t xdr_ypupdate_args (XDR *, ypupdate_args*); struct ypdelete_args { char *mapname; @@ -67,23 +67,23 @@ struct ypdelete_args { }; typedef struct ypdelete_args ypdelete_args; -extern bool_t xdr_ypdelete_args __P ((XDR *, ypdelete_args*)); +extern bool_t xdr_ypdelete_args (XDR *, ypdelete_args*); #define YPU_PROG 100028 #define YPU_VERS 1 #define YPU_CHANGE 1 -extern u_int * ypu_change_1 __P ((ypupdate_args *, CLIENT *)); +extern u_int * ypu_change_1 (ypupdate_args *, CLIENT *); extern u_int * ypu_change_1_svc __P((ypupdate_args *, struct svc_req *)); #define YPU_INSERT 2 -extern u_int * ypu_insert_1 __P ((ypupdate_args *, CLIENT *)); -extern u_int * ypu_insert_1_svc __P ((ypupdate_args *, struct svc_req *)); +extern u_int * ypu_insert_1 (ypupdate_args *, CLIENT *); +extern u_int * ypu_insert_1_svc (ypupdate_args *, struct svc_req *); #define YPU_DELETE 3 -extern u_int * ypu_delete_1 __P ((ypdelete_args *, CLIENT *)); -extern u_int * ypu_delete_1_svc __P ((ypdelete_args *, struct svc_req *)); +extern u_int * ypu_delete_1 (ypdelete_args *, CLIENT *); +extern u_int * ypu_delete_1_svc (ypdelete_args *, struct svc_req *); #define YPU_STORE 4 -extern u_int * ypu_store_1 __P ((ypupdate_args *, CLIENT *)); -extern u_int * ypu_store_1_svc __P ((ypupdate_args *, struct svc_req *)); +extern u_int * ypu_store_1 (ypupdate_args *, CLIENT *); +extern u_int * ypu_store_1_svc (ypupdate_args *, struct svc_req *); __END_DECLS diff -adurpN glibc-2.2/nscd/connections.c glibc-2.2.1/nscd/connections.c --- glibc-2.2/nscd/connections.c Thu Oct 26 22:57:32 2000 +++ glibc-2.2.1/nscd/connections.c Sat Jan 6 20:35:27 2001 @@ -245,7 +245,7 @@ cannot handle old request version %d; cu key, buf, sizeof (buf))); } else - dbg_log ("\t%s (%s)", serv2str[req->type], key); + dbg_log ("\t%s (%s)", serv2str[req->type], (char *)key); } /* Is this service enabled? */ @@ -293,7 +293,7 @@ cannot handle old request version %d; cu else if (debug_level > 0) { if (req->type == INVALIDATE) - dbg_log ("\t%s (%s)", serv2str[req->type], key); + dbg_log ("\t%s (%s)", serv2str[req->type], (char *)key); else dbg_log ("\t%s", serv2str[req->type]); } diff -adurpN glibc-2.2/nscd/dbg_log.h glibc-2.2.1/nscd/dbg_log.h --- glibc-2.2/nscd/dbg_log.h Sun Oct 18 15:16:46 1998 +++ glibc-2.2.1/nscd/dbg_log.h Sat Jan 6 20:35:27 2001 @@ -1,4 +1,4 @@ -/* Copyright (c) 1998 Free Software Foundation, Inc. +/* Copyright (c) 1998, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1998. @@ -22,7 +22,8 @@ extern int debug_level; -extern void dbg_log (const char *str, ...); +extern void dbg_log (const char *str, ...) + __attribute__ ((__format__ (__printf__, 1, 2)));; extern int set_logfile (const char *logfile); diff -adurpN glibc-2.2/nscd/grpcache.c glibc-2.2.1/nscd/grpcache.c --- glibc-2.2/nscd/grpcache.c Sun Oct 8 17:05:04 2000 +++ glibc-2.2.1/nscd/grpcache.c Sat Jan 6 20:35:27 2001 @@ -211,7 +211,7 @@ addgrbyname (struct database *db, int fd uid_t oldeuid = 0; if (debug_level > 0) - dbg_log (_("Haven't found \"%s\" in group cache!"), key); + dbg_log (_("Haven't found \"%s\" in group cache!"), (char *)key); if (secure[grpdb]) { diff -adurpN glibc-2.2/nscd/hstcache.c glibc-2.2.1/nscd/hstcache.c --- glibc-2.2/nscd/hstcache.c Sun Oct 8 17:05:04 2000 +++ glibc-2.2.1/nscd/hstcache.c Sat Jan 6 20:35:27 2001 @@ -296,7 +296,7 @@ addhstbyname (struct database *db, int f uid_t oldeuid = 0; if (debug_level > 0) - dbg_log (_("Haven't found \"%s\" in hosts cache!"), key); + dbg_log (_("Haven't found \"%s\" in hosts cache!"), (char *)key); if (secure[hstdb]) { diff -adurpN glibc-2.2/nscd/nscd.c glibc-2.2.1/nscd/nscd.c --- glibc-2.2/nscd/nscd.c Wed Aug 2 14:52:29 2000 +++ glibc-2.2.1/nscd/nscd.c Sat Jan 6 20:35:27 2001 @@ -1,4 +1,4 @@ -/* Copyright (c) 1998, 1999, 2000 Free Software Foundation, Inc. +/* Copyright (c) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1998. @@ -288,7 +288,7 @@ print_version (FILE *stream, struct argp 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\ -"), "2000"); +"), "2001"); fprintf (stream, gettext ("Written by %s.\n"), "Thorsten Kukuk and Ulrich Drepper"); } diff -adurpN glibc-2.2/nscd/nscd.h glibc-2.2.1/nscd/nscd.h --- glibc-2.2/nscd/nscd.h Mon May 1 14:56:50 2000 +++ glibc-2.2.1/nscd/nscd.h Wed Nov 22 10:59:51 2000 @@ -102,7 +102,7 @@ extern const char *server_user; /* Prototypes for global functions. */ /* nscd.c */ -extern void termination_handler (int signum); +extern void termination_handler (int signum) __attribute__ ((__noreturn__)); extern int nscd_open_socket (void); /* connections.c */ @@ -115,7 +115,7 @@ extern int nscd_parse_file (const char * /* nscd_stat.c */ extern void send_stats (int fd, struct database dbs[lastdb]); -extern int receive_print_stats (void); +extern int receive_print_stats (void) __attribute__ ((__noreturn__)); /* cache.c */ extern struct hashentry *cache_search (int type, void *key, size_t len, diff -adurpN glibc-2.2/nscd/nscd_conf.c glibc-2.2.1/nscd/nscd_conf.c --- glibc-2.2/nscd/nscd_conf.c Mon May 1 14:56:50 2000 +++ glibc-2.2.1/nscd/nscd_conf.c Sat Jan 6 20:35:27 2001 @@ -179,7 +179,7 @@ nscd_parse_file (const char *fname, stru else if (strcmp (entry, "server-user") == 0) { if (!arg1) - dbg_log (_("Must specify user name for server-user option"), arg1); + dbg_log (_("Must specify user name for server-user option")); else server_user = strdup (arg1); } diff -adurpN glibc-2.2/nscd/pwdcache.c glibc-2.2.1/nscd/pwdcache.c --- glibc-2.2/nscd/pwdcache.c Thu May 4 10:09:27 2000 +++ glibc-2.2.1/nscd/pwdcache.c Sat Jan 6 20:35:27 2001 @@ -207,7 +207,7 @@ addpwbyname (struct database *db, int fd uid_t oldeuid = 0; if (debug_level > 0) - dbg_log (_("Haven't found \"%s\" in password cache!"), key); + dbg_log (_("Haven't found \"%s\" in password cache!"), (char *)key); if (secure[pwddb]) { diff -adurpN glibc-2.2/nss/Makefile glibc-2.2.1/nss/Makefile --- glibc-2.2/nss/Makefile Tue Aug 15 11:16:23 2000 +++ glibc-2.2.1/nss/Makefile Sat Jan 6 20:35:27 2001 @@ -27,7 +27,8 @@ distribute := nsswitch.h XXX-lookup.c g nsswitch.conf digits_dots.c function.def # This is the trivial part which goes into libc itself. -routines = nsswitch $(addsuffix -lookup,$(databases)) +routines = nsswitch getnssent getnssent_r \ + $(addsuffix -lookup,$(databases)) # These are the databases that go through nss dispatch. # Caution: if you add a database here, you must add its real name diff -adurpN glibc-2.2/nss/Versions glibc-2.2.1/nss/Versions --- glibc-2.2/nss/Versions Thu Aug 31 14:45:14 2000 +++ glibc-2.2.1/nss/Versions Fri Dec 1 11:55:08 2000 @@ -83,7 +83,4 @@ libnss_files { _nss_files_getpublickey; _nss_files_getsecretkey; } - GLIBC_2.2 { - _nss_files_getipnodebyname_r; - } } diff -adurpN glibc-2.2/nss/XXX-lookup.c glibc-2.2.1/nss/XXX-lookup.c --- glibc-2.2/nss/XXX-lookup.c Thu Apr 29 09:59:54 1999 +++ glibc-2.2.1/nss/XXX-lookup.c Sat Jan 6 20:35:27 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -54,6 +54,8 @@ #endif service_user *DATABASE_NAME_SYMBOL; + +extern int DB_LOOKUP_FCT (service_user **ni, const char *fct_name, void **fctp); int DB_LOOKUP_FCT (service_user **ni, const char *fct_name, void **fctp) diff -adurpN glibc-2.2/nss/getXXbyYY_r.c glibc-2.2.1/nss/getXXbyYY_r.c --- glibc-2.2/nss/getXXbyYY_r.c Thu Aug 31 14:45:14 2000 +++ glibc-2.2.1/nss/getXXbyYY_r.c Sat Jan 6 20:35:27 2001 @@ -239,12 +239,9 @@ OLD (REENTRANT_NAME) (ADD_PARAMS, LOOKUP #define do_symbol_version(real, name, version) \ compat_symbol (libc, real, name, version) do_symbol_version (OLD (REENTRANT_NAME), REENTRANT_NAME, GLIBC_2_0); +#endif #define do_default_symbol_version(real, name, version) \ versioned_symbol (libc, real, name, version) do_default_symbol_version (INTERNAL (REENTRANT_NAME), REENTRANT_NAME, GLIBC_2_1_2); -#else -#define do_weak_alias(n1, n2) weak_alias (n1, n2) -do_weak_alias (INTERNAL (REENTRANT_NAME), REENTRANT_NAME) -#endif diff -adurpN glibc-2.2/nss/getXXent.c glibc-2.2.1/nss/getXXent.c --- glibc-2.2/nss/getXXent.c Wed Aug 2 14:52:30 2000 +++ glibc-2.2.1/nss/getXXent.c Sat Jan 6 20:35:27 2001 @@ -48,10 +48,10 @@ /* Sometimes we need to store error codes in the `h_errno' variable. */ #ifdef NEED_H_ERRNO # define H_ERRNO_PARM , int *h_errnop -# define H_ERRNO_VAR , &h_errno +# define H_ERRNO_VAR &h_errno #else # define H_ERRNO_PARM -# define H_ERRNO_VAR +# define H_ERRNO_VAR NULL #endif /* Prototype of the reentrant version. */ @@ -77,42 +77,14 @@ GETFUNC_NAME (void) /* Get lock. */ __libc_lock_lock (lock); - if (buffer == NULL) - { - buffer_size = BUFLEN; - buffer = malloc (buffer_size); - } - - while (buffer != NULL - && INTERNAL (REENTRANT_GETNAME) (&resbuf, buffer, buffer_size, &result - H_ERRNO_VAR) == ERANGE -#ifdef NEED_H_ERRNO - && h_errno == NETDB_INTERNAL -#endif - ) - { - char *new_buf; - buffer_size += BUFLEN; - new_buf = realloc (buffer, buffer_size); - if (new_buf == NULL) - { - /* We are out of memory. Free the current buffer so that the - process gets a chance for a normal termination. */ - save = errno; - free (buffer); - __set_errno (save); - } - buffer = new_buf; - } - - if (buffer == NULL) - result = NULL; + result = (LOOKUP_TYPE *) + __nss_getent ((getent_r_function) INTERNAL (REENTRANT_GETNAME), + (void **) &resbuf, &buffer, BUFLEN, &buffer_size, + H_ERRNO_VAR); - /* Release lock. Preserve error value. */ save = errno; __libc_lock_unlock (lock); __set_errno (save); - return result; } diff -adurpN glibc-2.2/nss/getXXent_r.c glibc-2.2.1/nss/getXXent_r.c --- glibc-2.2/nss/getXXent_r.c Wed Aug 2 14:52:30 2000 +++ glibc-2.2.1/nss/getXXent_r.c Sat Jan 6 20:35:27 2001 @@ -22,10 +22,6 @@ #include "nsswitch.h" -#ifdef NEED__RES -# include -#endif - /*******************************************************************\ |* Here we assume several symbols to be defined: *| |* *| @@ -73,31 +69,26 @@ #ifdef NEED_H_ERRNO # define H_ERRNO_PARM , int *h_errnop # define H_ERRNO_VAR , &h_errno +# define H_ERRNO_VAR_P &h_errno #else # define H_ERRNO_PARM # define H_ERRNO_VAR +# define H_ERRNO_VAR_P NULL #endif /* Some databases take the `stayopen' flag. */ #ifdef STAYOPEN # define STAYOPEN_TMP CONCAT2_1 (STAYOPEN, _tmp) -# define STAYOPEN_TMPVAR CONCAT2_1 (STAYOPEN_VAR, _tmp) +# define STAYOPEN_TMPVAR &CONCAT2_1 (STAYOPEN_VAR, _tmp) #else # define STAYOPEN void -# define STAYOPEN_VAR -# define STAYOPEN_TMPVAR +# define STAYOPEN_VAR 0 +# define STAYOPEN_TMPVAR NULL #endif -/* Prototype for the setXXXent functions we use here. */ -typedef enum nss_status (*set_function) (STAYOPEN); - -/* Prototype for the endXXXent functions we use here. */ -typedef enum nss_status (*end_function) (void); - -/* Prototype for the setXXXent functions we use here. */ -typedef enum nss_status (*get_function) (LOOKUP_TYPE *, char *, size_t, int * - H_ERRNO_PARM); - +#ifndef NEED__RES +# define NEED__RES 0 +#endif /* This handle for the NSS data base is shared between all set/get/endXXXent functions. */ @@ -119,103 +110,33 @@ __libc_lock_define_initialized (static, /* The lookup function for the first entry of this service. */ extern int DB_LOOKUP_FCT (service_user **nip, const char *name, void **fctp); - -/* Set up NIP to run through the services. If ALL is zero, use NIP's - current location if it's not nil. Return nonzero if there are no - services (left). */ -static enum nss_status -setup (void **fctp, const char *func_name, int all) -{ - int no_more; - if (startp == NULL) - { - no_more = DB_LOOKUP_FCT (&nip, func_name, fctp); - startp = no_more ? (service_user *) -1l : nip; - } - else if (startp == (service_user *) -1l) - /* No services at all. */ - return 1; - else - { - if (all || !nip) - /* Reset to the beginning of the service list. */ - nip = startp; - /* Look up the first function. */ - no_more = __nss_lookup (&nip, func_name, fctp); - } - return no_more; -} void SETFUNC_NAME (STAYOPEN) { - set_function fct; - int no_more; - -#ifdef NEED__RES - if ((_res.options & RES_INIT) == 0 && __res_ninit (&_res) == -1) - { - __set_h_errno (NETDB_INTERNAL); - return; - } -#endif /* need _res */ + int save; __libc_lock_lock (lock); + __nss_setent (SETFUNC_NAME_STRING, DB_LOOKUP_FCT, &nip, &startp, + &last_nip, STAYOPEN_VAR, STAYOPEN_TMPVAR, NEED__RES); - /* Cycle through the services and run their `setXXent' functions until - we find an available service. */ - no_more = setup ((void **) &fct, SETFUNC_NAME_STRING, 1); - while (! no_more) - { - int is_last_nip = nip == last_nip; - enum nss_status status = DL_CALL_FCT (fct, (STAYOPEN_VAR)); - - no_more = __nss_next (&nip, SETFUNC_NAME_STRING, (void **) &fct, - status, 0); - if (is_last_nip) - last_nip = nip; - } - -#ifdef STAYOPEN_TMP - STAYOPEN_TMPVAR = STAYOPEN_VAR; -#endif - + save = errno; __libc_lock_unlock (lock); + __set_errno (save); } void ENDFUNC_NAME (void) { - end_function fct; - int no_more; - -#ifdef NEED__RES - if ((_res.options & RES_INIT) == 0 && __res_ninit (&_res) == -1) - { - __set_h_errno (NETDB_INTERNAL); - return; - } -#endif /* need _res */ + int save; __libc_lock_lock (lock); - - /* Cycle through all the services and run their endXXent functions. */ - no_more = setup ((void **) &fct, ENDFUNC_NAME_STRING, 1); - while (! no_more) - { - /* Ignore status, we force check in __NSS_NEXT. */ - DL_CALL_FCT (fct, ()); - - if (nip == last_nip) - /* We have processed all services which were used. */ - break; - - no_more = __nss_next (&nip, ENDFUNC_NAME_STRING, (void **) &fct, 0, 1); - } - last_nip = nip = NULL; - + __nss_endent (ENDFUNC_NAME_STRING, DB_LOOKUP_FCT, &nip, &startp, + &last_nip, NEED__RES); + save = errno; __libc_lock_unlock (lock); + __set_errno (save); } @@ -223,76 +144,18 @@ int INTERNAL (REENTRANT_GETNAME) (LOOKUP_TYPE *resbuf, char *buffer, size_t buflen, LOOKUP_TYPE **result H_ERRNO_PARM) { - get_function fct; - int no_more; - enum nss_status status; - -#ifdef NEED__RES - if ((_res.options & RES_INIT) == 0 && __res_ninit (&_res) == -1) - { - __set_h_errno (NETDB_INTERNAL); - *result = NULL; - return errno; - } -#endif /* need _res */ - - /* Initialize status to return if no more functions are found. */ - status = NSS_STATUS_NOTFOUND; + int status; + int save; __libc_lock_lock (lock); - - /* Run through available functions, starting with the same function last - run. We will repeat each function as long as it succeeds, and then go - on to the next service action. */ - no_more = setup ((void **) &fct, GETFUNC_NAME_STRING, 0); - while (! no_more) - { - int is_last_nip = nip == last_nip; - - status = DL_CALL_FCT (fct, - (resbuf, buffer, buflen, &errno H_ERRNO_VAR)); - - /* The the status is NSS_STATUS_TRYAGAIN and errno is ERANGE the - provided buffer is too small. In this case we should give - the user the possibility to enlarge the buffer and we should - not simply go on with the next service (even if the TRYAGAIN - action tells us so). */ - if (status == NSS_STATUS_TRYAGAIN -#ifdef NEED_H_ERRNO - && *h_errnop == NETDB_INTERNAL -#endif - && errno == ERANGE) - break; - - do - { - no_more = __nss_next (&nip, GETFUNC_NAME_STRING, (void **) &fct, - status, 0); - - if (is_last_nip) - last_nip = nip; - - if (! no_more) - { - /* Call the `setXXent' function. This wasn't done before. */ - set_function sfct; - - no_more = __nss_lookup (&nip, SETFUNC_NAME_STRING, - (void **) &sfct); - - if (! no_more) - status = DL_CALL_FCT (sfct, (STAYOPEN_TMPVAR)); - else - status = NSS_STATUS_NOTFOUND; - } - } - while (! no_more && status != NSS_STATUS_SUCCESS); - } - + status = __nss_getent_r (GETFUNC_NAME_STRING, SETFUNC_NAME_STRING, + DB_LOOKUP_FCT, &nip, &startp, &last_nip, + STAYOPEN_TMPVAR, NEED__RES, resbuf, buffer, + buflen, (void **) result, H_ERRNO_VAR_P); + save = errno; __libc_lock_unlock (lock); - - *result = status == NSS_STATUS_SUCCESS ? resbuf : NULL; - return status == NSS_STATUS_SUCCESS ? 0 : errno; + __set_errno (save); + return status; } @@ -317,12 +180,9 @@ OLD (REENTRANT_GETNAME) (LOOKUP_TYPE *re #define do_symbol_version(real, name, version) \ compat_symbol (libc, real, name, version) do_symbol_version (OLD (REENTRANT_GETNAME), REENTRANT_GETNAME, GLIBC_2_0); +#endif #define do_default_symbol_version(real, name, version) \ versioned_symbol (libc, real, name, version) do_default_symbol_version (INTERNAL (REENTRANT_GETNAME), REENTRANT_GETNAME, GLIBC_2_1_2); -#else -#define do_weak_alias(n1, n2) weak_alias (n1, n2) -do_weak_alias (INTERNAL (REENTRANT_GETNAME), REENTRANT_GETNAME) -#endif diff -adurpN glibc-2.2/nss/getnssent.c glibc-2.2.1/nss/getnssent.c --- glibc-2.2/nss/getnssent.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/nss/getnssent.c Sat Dec 9 00:57:42 2000 @@ -0,0 +1,58 @@ +/* Copyright (C) 2000 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. */ + +#include +#include +#include +#include "nsswitch.h" + +void * +__nss_getent (getent_r_function func, void **resbuf, char **buffer, + size_t buflen, size_t *buffer_size, int *h_errnop) +{ + void *result; + + if (*buffer == NULL) + { + *buffer_size = buflen; + *buffer = malloc (*buffer_size); + } + + while (buffer != NULL + && func (resbuf, *buffer, *buffer_size, &result, h_errnop) == ERANGE + && (h_errnop == NULL || *h_errnop == NETDB_INTERNAL)) + { + char *new_buf; + *buffer_size += buflen; + new_buf = realloc (*buffer, *buffer_size); + if (new_buf == NULL) + { + /* We are out of memory. Free the current buffer so that the + process gets a chance for a normal termination. */ + int save = errno; + free (*buffer); + __set_errno (save); + } + *buffer = new_buf; + } + + if (*buffer == NULL) + result = NULL; + + return result; +} diff -adurpN glibc-2.2/nss/getnssent_r.c glibc-2.2.1/nss/getnssent_r.c --- glibc-2.2/nss/getnssent_r.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/nss/getnssent_r.c Fri Dec 8 14:38:27 2000 @@ -0,0 +1,201 @@ +/* Copyright (C) 2000 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. */ + +#include +#include +#include "nsswitch.h" + +/* Set up NIP to run through the services. If ALL is zero, use NIP's + current location if it's not nil. Return nonzero if there are no + services (left). */ +static int +setup (const char *func_name, db_lookup_function lookup_fct, + void **fctp, service_user **nip, service_user **startp, int all) +{ + int no_more; + if (*startp == NULL) + { + no_more = lookup_fct (nip, func_name, fctp); + *startp = no_more ? (service_user *) -1l : *nip; + } + else if (*startp == (service_user *) -1l) + /* No services at all. */ + return 1; + else + { + if (all || !*nip) + /* Reset to the beginning of the service list. */ + *nip = *startp; + /* Look up the first function. */ + no_more = __nss_lookup (nip, func_name, fctp); + } + return no_more; +} + +void +__nss_setent (const char *func_name, db_lookup_function lookup_fct, + service_user **nip, service_user **startp, + service_user **last_nip, int stayopen, int *stayopen_tmp, + int res) +{ + setent_function fct; + int no_more; + + if (res && (_res.options & RES_INIT) == 0 + && __res_ninit (&_res) == -1) + { + __set_h_errno (NETDB_INTERNAL); + return; + } + + /* Cycle through the services and run their `setXXent' functions until + we find an available service. */ + no_more = setup (func_name, lookup_fct, (void **) &fct, nip, + startp, 1); + while (! no_more) + { + int is_last_nip = *nip == *last_nip; + enum nss_status status; + + if (stayopen_tmp) + status = DL_CALL_FCT (fct, (*stayopen_tmp)); + else + status = DL_CALL_FCT (fct, (0)); + + no_more = __nss_next (nip, func_name, (void **) &fct, + status, 0); + if (is_last_nip) + *last_nip = *nip; + } + + if (stayopen_tmp) + *stayopen_tmp = stayopen; +} + + +void +__nss_endent (const char *func_name, db_lookup_function lookup_fct, + service_user **nip, service_user **startp, + service_user **last_nip, int res) +{ + endent_function fct; + int no_more; + + if (res && (_res.options & RES_INIT) == 0 + && __res_ninit (&_res) == -1) + { + __set_h_errno (NETDB_INTERNAL); + return; + } + + /* Cycle through all the services and run their endXXent functions. */ + no_more = setup (func_name, lookup_fct, (void **) &fct, nip, startp, 1); + while (! no_more) + { + /* Ignore status, we force check in __NSS_NEXT. */ + DL_CALL_FCT (fct, ()); + + if (*nip == *last_nip) + /* We have processed all services which were used. */ + break; + + no_more = __nss_next (nip, func_name, (void **) &fct, 0, 1); + } + *last_nip = *nip = NULL; +} + + +int +__nss_getent_r (const char *getent_func_name, + const char *setent_func_name, + db_lookup_function lookup_fct, + service_user **nip, service_user **startp, + service_user **last_nip, int *stayopen_tmp, int res, + void *resbuf, char *buffer, size_t buflen, + void **result, int *h_errnop) +{ + getent_function fct; + int no_more; + enum nss_status status; + + if (res && (_res.options & RES_INIT) == 0 + && __res_ninit (&_res) == -1) + { + __set_h_errno (NETDB_INTERNAL); + *result = NULL; + return errno; + } + + /* Initialize status to return if no more functions are found. */ + status = NSS_STATUS_NOTFOUND; + + /* Run through available functions, starting with the same function last + run. We will repeat each function as long as it succeeds, and then go + on to the next service action. */ + no_more = setup (getent_func_name, lookup_fct, (void **) &fct, nip, + startp, 0); + while (! no_more) + { + int is_last_nip = *nip == *last_nip; + + status = DL_CALL_FCT (fct, + (resbuf, buffer, buflen, &errno, &h_errno)); + + /* The the status is NSS_STATUS_TRYAGAIN and errno is ERANGE the + provided buffer is too small. In this case we should give + the user the possibility to enlarge the buffer and we should + not simply go on with the next service (even if the TRYAGAIN + action tells us so). */ + if (status == NSS_STATUS_TRYAGAIN + && (h_errnop == NULL || *h_errnop == NETDB_INTERNAL) + && errno == ERANGE) + break; + + do + { + no_more = __nss_next (nip, getent_func_name, (void **) &fct, + status, 0); + + if (is_last_nip) + *last_nip = *nip; + + if (! no_more) + { + /* Call the `setXXent' function. This wasn't done before. */ + setent_function sfct; + + no_more = __nss_lookup (nip, setent_func_name, + (void **) &sfct); + + if (! no_more) + { + if (stayopen_tmp) + status = DL_CALL_FCT (sfct, (*stayopen_tmp)); + else + status = DL_CALL_FCT (sfct, (0)); + } + else + status = NSS_STATUS_NOTFOUND; + } + } + while (! no_more && status != NSS_STATUS_SUCCESS); + } + + *result = status == NSS_STATUS_SUCCESS ? resbuf : NULL; + return status == NSS_STATUS_SUCCESS ? 0 : errno; +} diff -adurpN glibc-2.2/nss/nss_files/files-ethers.c glibc-2.2.1/nss/nss_files/files-ethers.c --- glibc-2.2/nss/nss_files/files-ethers.c Wed Aug 2 14:52:30 2000 +++ glibc-2.2.1/nss/nss_files/files-ethers.c Sat Jan 6 20:35:27 2001 @@ -17,16 +17,9 @@ Boston, MA 02111-1307, USA. */ #include +#include #include -/* Because the `ethers' lookup does not fit so well in the scheme so - we define a dummy struct here which helps us to use the available - functions. */ -struct etherent -{ - const char *e_name; - struct ether_addr e_addr; -}; struct etherent_data {}; #define ENTNAME etherent @@ -72,4 +65,4 @@ DB_LOOKUP (ntohost, 18, ("=%x:%x:%x:%x:% if (memcmp (&result->e_addr, addr, sizeof (struct ether_addr)) == 0) break; - }, struct ether_addr *addr) + }, const struct ether_addr *addr) diff -adurpN glibc-2.2/nss/nss_files/files-hosts.c glibc-2.2.1/nss/nss_files/files-hosts.c --- glibc-2.2/nss/nss_files/files-hosts.c Thu Sep 7 11:56:35 2000 +++ glibc-2.2.1/nss/nss_files/files-hosts.c Fri Dec 1 11:55:08 2000 @@ -279,11 +279,3 @@ DB_LOOKUP (hostbyaddr, ,, && ! memcmp (addr, result->h_addr_list[0], len)) break; }, const void *addr, socklen_t len, int af) - -#undef EXTRA_ARGS_VALUE -#define EXTRA_ARGS_VALUE \ - , af, flags -HOST_DB_LOOKUP (ipnodebyname, ,, - { - LOOKUP_NAME_CASE (h_name, h_aliases) - }, const char *name, int af, int flags) diff -adurpN glibc-2.2/nss/nss_files/files-network.c glibc-2.2.1/nss/nss_files/files-network.c --- glibc-2.2/nss/nss_files/files-network.c Fri Apr 7 12:09:28 2000 +++ glibc-2.2.1/nss/nss_files/files-network.c Sat Jan 6 20:35:27 2001 @@ -23,6 +23,7 @@ #define ENTNAME netent #define DATABASE "networks" +#define NEED_H_ERRNO struct netent_data {}; diff -adurpN glibc-2.2/nss/nsswitch.c glibc-2.2.1/nss/nsswitch.c --- glibc-2.2/nss/nsswitch.c Fri Mar 31 12:38:32 2000 +++ glibc-2.2.1/nss/nsswitch.c Sat Jan 6 20:35:27 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1996,1997,1998,1999,2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -27,6 +27,12 @@ #include #include +#include +#include +#include +#include +#include + #if !defined DO_STATIC_NSS || defined SHARED # include #endif @@ -361,18 +367,6 @@ __nss_lookup_function (service_user *ni, #else /* We can't get function address dynamically in static linking. */ { -# define DEFINE_ENT(h,nm) \ - extern void _nss_##h##_get##nm##ent_r (void); \ - extern void _nss_##h##_end##nm##ent (void); \ - extern void _nss_##h##_set##nm##ent (void); -# define DEFINE_GET(h,nm) \ - extern void _nss_##h##_get##nm##_r (void); -# define DEFINE_GETBY(h,nm,ky) \ - extern void _nss_##h##_get##nm##by##ky##_r (void); -# include "function.def" -# undef DEFINE_ENT -# undef DEFINE_GET -# undef DEFINE_GETBY # define DEFINE_ENT(h,nm) \ { #h"_get"#nm"ent_r", _nss_##h##_get##nm##ent_r }, \ { #h"_end"#nm"ent", _nss_##h##_end##nm##ent }, \ diff -adurpN glibc-2.2/nss/nsswitch.h glibc-2.2.1/nss/nsswitch.h --- glibc-2.2/nss/nsswitch.h Wed Jul 7 18:22:05 1999 +++ glibc-2.2.1/nss/nsswitch.h Sat Jan 6 20:35:27 2001 @@ -130,4 +130,35 @@ int __nss_next (service_user **ni, const and return a pointer to this function if successful. */ void *__nss_lookup_function (service_user *ni, const char *fct_name); + +typedef int (*db_lookup_function) (service_user **, const char *, + void **); +typedef enum nss_status (*setent_function) (int); +typedef enum nss_status (*endent_function) (void); +typedef enum nss_status (*getent_function) (void *, char *, size_t, + int *, int *); +typedef int (*getent_r_function) (void *, char *, size_t, + void **result, int *); + +extern void __nss_setent (const char *func_name, + db_lookup_function lookup_fct, + service_user **nip, service_user **startp, + service_user **last_nip, int stayon, + int *stayon_tmp, int res); +extern void __nss_endent (const char *func_name, + db_lookup_function lookup_fct, + service_user **nip, service_user **startp, + service_user **last_nip, int res); +extern int __nss_getent_r (const char *getent_func_name, + const char *setent_func_name, + db_lookup_function lookup_fct, + service_user **nip, service_user **startp, + service_user **last_nip, int *stayon_tmp, + int res, + void *resbuf, char *buffer, size_t buflen, + void **result, int *h_errnop); +extern void *__nss_getent (getent_r_function func, + void **resbuf, char **buffer, size_t buflen, + size_t *buffer_size, int *h_errnop); + #endif /* nsswitch.h */ diff -adurpN glibc-2.2/nss/test-netdb.c glibc-2.2.1/nss/test-netdb.c --- glibc-2.2/nss/test-netdb.c Wed Jun 21 11:11:02 2000 +++ glibc-2.2.1/nss/test-netdb.c Sat Jan 6 20:35:27 2001 @@ -51,7 +51,7 @@ int error_count; -void +static void output_servent (const char *call, struct servent *sptr) { char **pptr; @@ -68,7 +68,7 @@ output_servent (const char *call, struct } -void +static void test_services (void) { struct servent *sptr; @@ -112,7 +112,7 @@ test_services (void) } -void +static void output_hostent (const char *call, struct hostent *hptr) { char **pptr; @@ -134,7 +134,7 @@ output_hostent (const char *call, struct } } -void +static void test_hosts (void) { struct hostent *hptr1, *hptr2; @@ -202,7 +202,7 @@ test_hosts (void) } -void +static void output_netent (const char *call, struct netent *nptr) { char **pptr; @@ -222,7 +222,7 @@ output_netent (const char *call, struct } } -void +static void test_network (void) { struct netent *nptr; @@ -253,7 +253,7 @@ test_network (void) } -void +static void output_protoent (const char *call, struct protoent *prptr) { char **pptr; @@ -270,7 +270,7 @@ output_protoent (const char *call, struc } -void +static void test_protocols (void) { struct protoent *prptr; @@ -292,7 +292,7 @@ test_protocols (void) } -void +static void output_rpcent (const char *call, struct rpcent *rptr) { char **pptr; @@ -308,7 +308,7 @@ output_rpcent (const char *call, struct } } -void +static void test_rpc (void) { struct rpcent *rptr; @@ -329,11 +329,9 @@ test_rpc (void) endrpcent (); } -/* - Override /etc/nsswitch.conf for this program. - This is mainly useful for developers -*/ -void +/* Override /etc/nsswitch.conf for this program. This is mainly + useful for developers. */ +static void __attribute__ ((unused)) setdb (const char *dbname) { if (strcmp ("db", dbname)) @@ -368,5 +366,5 @@ main (void) else printf ("No visible errors occurred!\n"); - exit (error_count); + return (error_count != 0); } diff -adurpN glibc-2.2/posix/bsd-getpgrp.c glibc-2.2.1/posix/bsd-getpgrp.c --- glibc-2.2/posix/bsd-getpgrp.c Fri May 26 12:38:34 2000 +++ glibc-2.2.1/posix/bsd-getpgrp.c Sat Jan 6 20:35:27 2001 @@ -22,6 +22,7 @@ /* Don't include unistd.h because it declares a conflicting prototype for the POSIX.1 `getpgrp' function. */ extern pid_t __getpgid (pid_t); +extern pid_t __bsd_getpgrp (pid_t); pid_t __bsd_getpgrp (pid_t pid) diff -adurpN glibc-2.2/posix/fnmatch_loop.c glibc-2.2.1/posix/fnmatch_loop.c --- glibc-2.2/posix/fnmatch_loop.c Thu Oct 26 22:57:32 2000 +++ glibc-2.2.1/posix/fnmatch_loop.c Sat Jan 13 10:48:50 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-1993, 1996-1999, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1991-1993, 1996-2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. This library is free software; you can redistribute it and/or @@ -438,7 +438,7 @@ FCT (pattern, string, no_leading_period, const int32_t *symb_table; # ifdef WIDE_CHAR_VERSION char str[c1]; - int strcnt; + unsigned int strcnt; # else # define str (startp + 1) # endif @@ -643,7 +643,7 @@ FCT (pattern, string, no_leading_period, const int32_t *symb_table; # ifdef WIDE_CHAR_VERSION char str[c1]; - int strcnt; + unsigned int strcnt; # else # define str (startp + 1) # endif diff -adurpN glibc-2.2/posix/getconf.c glibc-2.2.1/posix/getconf.c --- glibc-2.2/posix/getconf.c Mon Apr 17 10:18:56 2000 +++ glibc-2.2.1/posix/getconf.c Sat Jan 6 20:35:27 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 92, 1995-1999, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1991, 92, 1995-1999, 2000, 2001 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 @@ -752,7 +752,7 @@ main (int argc, char *argv[]) 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\ -"), "1999"); +"), "2001"); fprintf (stderr, gettext ("Written by %s.\n"), "Roland McGrath"); return 0; } diff -adurpN glibc-2.2/posix/runtests.c glibc-2.2.1/posix/runtests.c --- glibc-2.2/posix/runtests.c Tue Oct 31 11:10:06 2000 +++ glibc-2.2.1/posix/runtests.c Sat Jan 6 20:35:27 2001 @@ -48,7 +48,7 @@ static const struct a_test the_tests[] = -int +static int run_a_test (int id, const struct a_test * t) { static const char * last_pattern = 0; diff -adurpN glibc-2.2/posix/test-vfork.c glibc-2.2.1/posix/test-vfork.c --- glibc-2.2/posix/test-vfork.c Wed Jun 21 11:11:02 2000 +++ glibc-2.2.1/posix/test-vfork.c Sat Jan 6 20:35:27 2001 @@ -32,7 +32,8 @@ main (void) if (waitpid (0, &status, 0) != pid || !WIFEXITED (status) || WEXITSTATUS (status) != NR) exit (1); - exit (0); + + return 0; } void diff -adurpN glibc-2.2/posix/testfnm.c glibc-2.2.1/posix/testfnm.c --- glibc-2.2/posix/testfnm.c Tue Mar 28 11:05:38 2000 +++ glibc-2.2.1/posix/testfnm.c Sat Jan 6 20:35:27 2001 @@ -77,5 +77,5 @@ main (void) ++errors ; } - exit (errors != 0); + return errors != 0; } diff -adurpN glibc-2.2/posix/tst-chmod.c glibc-2.2.1/posix/tst-chmod.c --- glibc-2.2/posix/tst-chmod.c Thu Oct 26 20:41:11 2000 +++ glibc-2.2.1/posix/tst-chmod.c Sat Jan 6 20:35:27 2001 @@ -36,7 +36,7 @@ goto fail; \ } while (0) -int +static int do_test (int argc, char *argv[]) { const char *builddir; diff -adurpN glibc-2.2/posix/tst-dir.c glibc-2.2.1/posix/tst-dir.c --- glibc-2.2/posix/tst-dir.c Sun Oct 8 17:05:04 2000 +++ glibc-2.2.1/posix/tst-dir.c Wed Jan 10 15:54:38 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 Free Software Foundation, Inc. +/* Copyright (C) 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2000. @@ -516,6 +516,32 @@ main (int argc, char *argv[]) { printf ("cannot remove \"and-a-file\": %m\n"); result = 1; + } + + /* One more test before we leave: mkdir() is supposed to fail with + EEXIST if the named file is a symlink. */ + if (symlink ("a-symlink", "a-symlink") != 0) + { + printf ("cannot create symlink \"a-symlink\": %m\n"); + result = 1; + } + else + { + if (mkdir ("a-symlink", 0666) == 0) + { + puts ("can make directory \"a-symlink\""); + result = 1; + } + else if (errno != EEXIST) + { + puts ("mkdir(\"a-symlink\") does not fail with EEXIST\n"); + result = 1; + } + if (unlink ("a-symlink") < 0) + { + printf ("cannot unlink \"a-symlink\": %m\n"); + result = 1; + } } if (chdir (srcdir) < 0) diff -adurpN glibc-2.2/posix/tst-getaddrinfo.c glibc-2.2.1/posix/tst-getaddrinfo.c --- glibc-2.2/posix/tst-getaddrinfo.c Wed Jun 21 11:11:02 2000 +++ glibc-2.2.1/posix/tst-getaddrinfo.c Sat Jan 6 20:35:27 2001 @@ -23,7 +23,7 @@ #include #include -int +static int do_test (void) { const int family[3] = { AF_INET, AF_INET6, AF_UNIX }; diff -adurpN glibc-2.2/posix/wordexp-test.c glibc-2.2.1/posix/wordexp-test.c --- glibc-2.2/posix/wordexp-test.c Wed Jun 21 11:11:02 2000 +++ glibc-2.2.1/posix/wordexp-test.c Sat Jan 6 20:35:27 2001 @@ -208,7 +208,7 @@ struct test_case_struct static int testit (struct test_case_struct *tc); static int tests; -void +static void command_line_test (const char *words) { wordexp_t we; diff -adurpN glibc-2.2/posix/wordexp.c glibc-2.2.1/posix/wordexp.c --- glibc-2.2/posix/wordexp.c Sun Oct 8 17:05:04 2000 +++ glibc-2.2.1/posix/wordexp.c Sat Jan 13 10:48:50 2001 @@ -1,5 +1,5 @@ /* POSIX.2 wordexp implementation. - Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Tim Waugh . @@ -382,7 +382,7 @@ do_parse_glob (const char *glob_word, ch const char *ifs_white) { int error; - int match; + unsigned int match; glob_t globbuf; error = glob (glob_word, GLOB_NOCHECK, NULL, &globbuf); diff -adurpN glibc-2.2/resolv/Versions glibc-2.2.1/resolv/Versions --- glibc-2.2/resolv/Versions Wed Aug 2 14:52:32 2000 +++ glibc-2.2.1/resolv/Versions Sat Jan 6 20:35:27 2001 @@ -56,6 +56,7 @@ libresolv { __res_hostalias; __res_mkquery; __res_nmkquery; __res_nquery; __res_nquerydomain; __res_nsearch; __res_nsend; __res_query; __res_querydomain; __res_search; + } } libnss_dns { diff -adurpN glibc-2.2/resolv/nss_dns/dns-host.c glibc-2.2.1/resolv/nss_dns/dns-host.c --- glibc-2.2/resolv/nss_dns/dns-host.c Wed Aug 2 14:52:35 2000 +++ glibc-2.2.1/resolv/nss_dns/dns-host.c Sat Jan 6 20:35:28 2001 @@ -215,7 +215,7 @@ _nss_dns_gethostbyname_r (const char *na enum nss_status -_nss_dns_gethostbyaddr_r (const char *addr, size_t len, int af, +_nss_dns_gethostbyaddr_r (const void *addr, socklen_t len, int af, struct hostent *result, char *buffer, size_t buflen, int *errnop, int *h_errnop) { @@ -284,6 +284,7 @@ _nss_dns_gethostbyaddr_r (const char *ad break; default: /* Cannot happen. */ + break; } n = res_nquery (&_res, qbuf, C_IN, T_PTR, (u_char *)host_buffer.buf, diff -adurpN glibc-2.2/resolv/nss_dns/dns-network.c glibc-2.2.1/resolv/nss_dns/dns-network.c --- glibc-2.2/resolv/nss_dns/dns-network.c Sat Dec 4 12:31:53 1999 +++ glibc-2.2.1/resolv/nss_dns/dns-network.c Sat Jan 6 20:35:28 2001 @@ -106,7 +106,8 @@ static enum nss_status getanswer_r (cons enum nss_status _nss_dns_getnetbyname_r (const char *name, struct netent *result, - char *buffer, size_t buflen, int *errnop) + char *buffer, size_t buflen, int *errnop, + int *herrnop) { /* Return entry for network with NAME. */ querybuf net_buffer; @@ -134,8 +135,9 @@ _nss_dns_getnetbyname_r (const char *nam enum nss_status -_nss_dns_getnetbyaddr_r (long net, int type, struct netent *result, - char *buffer, size_t buflen, int *errnop) +_nss_dns_getnetbyaddr_r (uint32_t net, int type, struct netent *result, + char *buffer, size_t buflen, int *errnop, + int *herrnop) { /* Return entry for network with NAME. */ enum nss_status status; @@ -151,7 +153,7 @@ _nss_dns_getnetbyaddr_r (long net, int t if ((_res.options & RES_INIT) == 0 && __res_ninit (&_res) == -1) return NSS_STATUS_UNAVAIL; - + net2 = (u_int32_t) net; for (cnt = 4; net2 != 0; net2 >>= 8) net_bytes[--cnt] = net2 & 0xff; diff -adurpN glibc-2.2/resolv/res_data.c glibc-2.2.1/resolv/res_data.c --- glibc-2.2/resolv/res_data.c Wed Aug 2 14:52:34 2000 +++ glibc-2.2.1/resolv/res_data.c Sat Jan 6 20:35:27 2001 @@ -82,9 +82,10 @@ struct __res_state _res #endif /* Proto. */ - +#ifndef _LIBC int res_ourserver_p(const res_state, const struct sockaddr_in *); void res_pquery(const res_state, const u_char *, int, FILE *); +#endif #ifndef _LIBC /* Moved to res_libc.c since res_init() should go into libc.so but the diff -adurpN glibc-2.2/resolv/res_init.c glibc-2.2.1/resolv/res_init.c --- glibc-2.2/resolv/res_init.c Sun Oct 8 17:05:04 2000 +++ glibc-2.2.1/resolv/res_init.c Sat Jan 6 20:35:27 2001 @@ -177,6 +177,7 @@ __res_vinit(res_state statp, int preinit statp->_flags = 0; statp->qhook = NULL; statp->rhook = NULL; + statp->_u._ext.nsinit = 0; statp->_u._ext.nscount = 0; #ifdef _LIBC statp->_u._ext.nscount6 = 0; @@ -544,5 +545,5 @@ res_nclose(res_state statp) { statp->_u._ext.nssocks[ns] = -1; } } - statp->_u._ext.nscount = 0; + statp->_u._ext.nsinit = 0; } diff -adurpN glibc-2.2/resolv/res_query.c glibc-2.2.1/resolv/res_query.c --- glibc-2.2/resolv/res_query.c Wed Aug 2 14:52:35 2000 +++ glibc-2.2.1/resolv/res_query.c Wed Jan 10 15:54:38 2001 @@ -1,7 +1,7 @@ /* * Copyright (c) 1988, 1993 * The Regents of the University of California. All rights reserved. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -13,7 +13,7 @@ * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -29,14 +29,14 @@ /* * Portions Copyright (c) 1993 by Digital Equipment Corporation. - * + * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies, and that * the name of Digital Equipment Corporation not be used in advertising or * publicity pertaining to distribution of the document or software without * specific, written prior permission. - * + * * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT @@ -287,7 +287,7 @@ res_nsearch(res_state statp, } /* - * If the name has any dots at all, and no earlier 'as-is' query + * If the name has any dots at all, and no earlier 'as-is' query * for the name, and "." is not on the search list, then try an as-is * query now. */ @@ -371,7 +371,7 @@ res_hostalias(const res_state statp, con if (statp->options & RES_NOALIASES) return (NULL); - file = __secure_getenv("HOSTALIASES"); + file = getenv("HOSTALIASES"); if (file == NULL || (fp = fopen(file, "r")) == NULL) return (NULL); setbuf(fp, NULL); diff -adurpN glibc-2.2/resolv/res_send.c glibc-2.2.1/resolv/res_send.c --- glibc-2.2/resolv/res_send.c Thu Aug 31 14:45:16 2000 +++ glibc-2.2.1/resolv/res_send.c Sat Jan 6 20:35:28 2001 @@ -394,7 +394,7 @@ res_nsend(res_state statp, * If the ns_addr_list in the resolver context has changed, then * invalidate our cached copy and the associated timing data. */ - if (EXT(statp).nscount != 0) { + if (EXT(statp).nsinit) { int needclose = 0; if (EXT(statp).nscount != statp->nscount) @@ -420,7 +420,7 @@ res_nsend(res_state statp, /* * Maybe initialize our private copy of the ns_addr_list. */ - if (EXT(statp).nscount == 0) { + if (EXT(statp).nsinit == 0) { #ifdef _LIBC n = 0; #endif @@ -454,6 +454,7 @@ res_nsend(res_state statp, #endif } EXT(statp).nscount = statp->nscount; + EXT(statp).nsinit = 1; #ifdef _LIBC /* If holes left, free memory and set to NULL */ while (n < MAXNS) { diff -adurpN glibc-2.2/resolv/resolv.h glibc-2.2.1/resolv/resolv.h --- glibc-2.2/resolv/resolv.h Tue Aug 15 11:16:24 2000 +++ glibc-2.2.1/resolv/resolv.h Sat Jan 6 20:35:28 2001 @@ -154,6 +154,7 @@ struct __res_state { u_int16_t nstimes[MAXNS]; /* ms. */ int nssocks[MAXNS]; u_int16_t nscount6; + u_int16_t nsinit; struct sockaddr_in6 *nsaddrs[MAXNS]; } _ext; } _u; diff -adurpN glibc-2.2/rt/Makefile glibc-2.2.1/rt/Makefile --- glibc-2.2/rt/Makefile Thu Aug 31 14:45:16 2000 +++ glibc-2.2.1/rt/Makefile Fri Dec 1 11:55:08 2000 @@ -41,7 +41,7 @@ include ../Makeconfig ifeq ($(have-thread-library),yes) tests := tst-aio tst-aio64 tst-clock tst-shm tst-timer tst-aio2 tst-aio3 \ - tst-aio4 tst-aio5 + tst-aio4 tst-aio5 tst-aio6 extra-libs := librt extra-libs-others := $(extra-libs) diff -adurpN glibc-2.2/rt/aio_suspend.c glibc-2.2.1/rt/aio_suspend.c --- glibc-2.2/rt/aio_suspend.c Wed Jun 21 11:11:02 2000 +++ glibc-2.2.1/rt/aio_suspend.c Fri Dec 1 11:55:08 2000 @@ -1,5 +1,5 @@ /* Suspend until termination of a requests. - Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -20,7 +20,7 @@ /* We use an UGLY hack to prevent gcc from finding us cheating. The - implementation of aio_suspend and aio_suspend64 are identical and so + implementations of aio_suspend and aio_suspend64 are identical and so we want to avoid code duplication by using aliases. But gcc sees the different parameter lists and prints a warning. We define here a function so that aio_suspend64 has no prototype. */ @@ -31,6 +31,7 @@ #include #include +#include #include "aio_misc.h" @@ -84,8 +85,24 @@ aio_suspend (list, nent, timeout) if (timeout == NULL) result = pthread_cond_wait (&cond, &__aio_requests_mutex); else - result = pthread_cond_timedwait (&cond, &__aio_requests_mutex, - timeout); + { + /* We have to convert the relative timeout value into an + absolute time value with pthread_cond_timedwait expects. */ + struct timeval now; + struct timespec abstime; + + __gettimeofday (&now, NULL); + abstime.tv_nsec = timeout->tv_nsec + now.tv_usec * 1000; + abstime.tv_sec = timeout->tv_sec + now.tv_sec; + if (abstime.tv_nsec >= 1000000000) + { + abstime.tv_nsec -= 1000000000; + abstime.tv_sec += 1; + } + + result = pthread_cond_timedwait (&cond, &__aio_requests_mutex, + &abstime); + } /* Now remove the entry in the waiting list for all requests which didn't terminate. */ diff -adurpN glibc-2.2/rt/tst-aio.c glibc-2.2.1/rt/tst-aio.c --- glibc-2.2/rt/tst-aio.c Wed Aug 2 14:52:35 2000 +++ glibc-2.2.1/rt/tst-aio.c Fri Dec 1 11:55:08 2000 @@ -62,7 +62,7 @@ do_prepare (int argc, char *argv[]) } -int +static int test_file (const void *buf, size_t size, int fd, const char *msg) { struct stat st; @@ -100,7 +100,7 @@ test_file (const void *buf, size_t size, } -int +static int do_wait (struct aiocb **cbp, size_t nent, int allowed_err) { int go_on; diff -adurpN glibc-2.2/rt/tst-aio2.c glibc-2.2.1/rt/tst-aio2.c --- glibc-2.2/rt/tst-aio2.c Tue Jul 25 23:28:38 2000 +++ glibc-2.2.1/rt/tst-aio2.c Sat Jan 6 20:35:28 2001 @@ -27,14 +27,14 @@ int flag; -void +static void thrfct (sigval_t arg) { flag = 1; } -int +static int do_test (int argc, char *argv[]) { char name[] = "/tmp/aio2.XXXXXX"; diff -adurpN glibc-2.2/rt/tst-aio3.c glibc-2.2.1/rt/tst-aio3.c --- glibc-2.2/rt/tst-aio3.c Wed Jul 26 03:14:28 2000 +++ glibc-2.2.1/rt/tst-aio3.c Sat Jan 6 20:35:28 2001 @@ -26,14 +26,14 @@ int flag; -void +static void thrfct (sigval_t arg) { flag = 1; } -int +static int do_test (int argc, char *argv[]) { char name[] = "/tmp/aio3.XXXXXX"; @@ -74,7 +74,7 @@ do_test (int argc, char *argv[]) printf ("aio_suspend failed: %m\n"); return 1; } - + if (flag != 0) { puts ("thread created, should not have happened"); diff -adurpN glibc-2.2/rt/tst-aio4.c glibc-2.2.1/rt/tst-aio4.c --- glibc-2.2/rt/tst-aio4.c Tue Aug 15 11:16:24 2000 +++ glibc-2.2.1/rt/tst-aio4.c Sat Jan 6 20:35:28 2001 @@ -31,13 +31,13 @@ volatile sig_atomic_t flag; -void +static void sighandler (const int signo) { flag = signo; } -int +static int wait_flag (void) { while (flag == 0) @@ -56,7 +56,7 @@ wait_flag (void) } -int +static int do_test (int argc, char *argv[]) { char name[] = "/tmp/aio4.XXXXXX"; diff -adurpN glibc-2.2/rt/tst-aio5.c glibc-2.2.1/rt/tst-aio5.c --- glibc-2.2/rt/tst-aio5.c Wed Jul 26 06:10:41 2000 +++ glibc-2.2.1/rt/tst-aio5.c Sat Jan 6 20:35:28 2001 @@ -31,13 +31,13 @@ volatile sig_atomic_t flag; -void +static void callback (sigval_t s) { flag = s.sival_int; } -int +static int wait_flag (void) { while (flag == 0) @@ -56,7 +56,7 @@ wait_flag (void) } -int +static int do_test (int argc, char *argv[]) { char name[] = "/tmp/aio5.XXXXXX"; diff -adurpN glibc-2.2/rt/tst-aio6.c glibc-2.2.1/rt/tst-aio6.c --- glibc-2.2/rt/tst-aio6.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/rt/tst-aio6.c Fri Nov 24 15:38:52 2000 @@ -0,0 +1,96 @@ +/* Test for timeout handling. + Copyright (C) 2000 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. */ + +#include +#include +#include +#include +#include + + +/* We expect to wait for 3 seconds so we have to increase the timeout. */ +#define TIMEOUT 10 /* sec */ + + +#define TEST_FUNCTION do_test () +static int +do_test (void) +{ + struct aiocb *arr[1]; + struct aiocb cb; + char buf[100]; + struct timeval before; + struct timeval after; + struct timespec timeout; + int fd[2]; + int result = 0; + + if (pipe (fd) != 0) + { + printf ("cannot create pipe: %m\n"); + return 1; + } + + arr[0] = &cb; + + cb.aio_fildes = fd[0]; + cb.aio_lio_opcode = LIO_WRITE; + cb.aio_reqprio = 0; + cb.aio_buf = (void *) buf; + cb.aio_nbytes = sizeof (buf) - 1; + cb.aio_sigevent.sigev_notify = SIGEV_NONE; + + /* Try to read from stdin where nothing will be available. */ + if (aio_read (arr[0]) < 0) + { + printf ("aio_read failed: %m\n"); + return 1; + } + + /* Get the current time. */ + gettimeofday (&before, NULL); + + /* Wait for input which is unsuccess and therefore the function will + time out. */ + timeout.tv_sec = 3; + timeout.tv_nsec = 0; + if (aio_suspend ((const struct aiocb *const*) arr, 1, &timeout) != -1) + { + puts ("aio_suspend() didn't return -1"); + result = 1; + } + else if (errno != EAGAIN) + { + puts ("error not set to EAGAIN"); + result = 1; + } + else + { + gettimeofday (&after, NULL); + if (after.tv_sec < before.tv_sec + 1) + { + puts ("timeout came too early"); + result = 1; + } + } + + return result; +} + +#include "../test-skeleton.c" diff -adurpN glibc-2.2/rt/tst-aio64.c glibc-2.2.1/rt/tst-aio64.c --- glibc-2.2/rt/tst-aio64.c Wed Aug 2 14:52:35 2000 +++ glibc-2.2.1/rt/tst-aio64.c Fri Dec 1 11:55:08 2000 @@ -63,7 +63,7 @@ do_prepare (int argc, char *argv[]) } -int +static int test_file (const void *buf, size_t size, int fd, const char *msg) { struct stat st; @@ -101,7 +101,7 @@ test_file (const void *buf, size_t size, } -int +static int do_wait (struct aiocb64 **cbp, size_t nent, int allowed_err) { int go_on; diff -adurpN glibc-2.2/rt/tst-clock.c glibc-2.2.1/rt/tst-clock.c --- glibc-2.2/rt/tst-clock.c Tue Apr 11 09:13:23 2000 +++ glibc-2.2.1/rt/tst-clock.c Sat Jan 6 20:35:28 2001 @@ -28,7 +28,7 @@ /* We expect to run at least 10 seconds. */ #define TIMEOUT 15 -int +static int clock_test (clockid_t cl) { struct timespec old_ts; @@ -101,7 +101,7 @@ clock_test (clockid_t cl) return result; } -int +static int do_test (void) { clockid_t cl; diff -adurpN glibc-2.2/rt/tst-shm.c glibc-2.2.1/rt/tst-shm.c --- glibc-2.2/rt/tst-shm.c Tue Apr 11 23:48:04 2000 +++ glibc-2.2.1/rt/tst-shm.c Sat Jan 6 20:35:28 2001 @@ -122,7 +122,7 @@ worker (int write_now) } -int +static int do_test (void) { int fd; diff -adurpN glibc-2.2/scripts/abi-versions.awk glibc-2.2.1/scripts/abi-versions.awk --- glibc-2.2/scripts/abi-versions.awk Tue Mar 21 21:43:53 2000 +++ glibc-2.2.1/scripts/abi-versions.awk Sat Jan 6 20:35:28 2001 @@ -1,6 +1,9 @@ # Script to generate header file from Versions.all list. # See include/shlib-compat.h comments for explanation. +# This script expects the following variables to be defined: +# oldest_abi the oldest ABI supported + BEGIN { print "/* This file is automatically generated by abi-versions.awk."; print " It defines symbols used by shlib-compat.h, which see. */"; @@ -12,6 +15,7 @@ NF == 2 && $2 == "{" { gsub(/[^A-Za-z0-9_ ]/, "_"); libid = $1; printf "\n/* start %s */\n", thislib; n = 0; + start = 0; next; } $1 == "}" { @@ -36,6 +40,10 @@ $2 == "=" { printf "#define ABI_%s_%s\t%d\t/* support %s */\n", libid, versid, ++n, vers; printf "#define VERSION_%s_%s\t%s\n", libid, versid, vers; + if ("GLIBC_" oldest_abi == vers) + start = 1; + if (start == 0 && oldest_abi != "default") + --n; next; } diff -adurpN glibc-2.2/scripts/config.guess glibc-2.2.1/scripts/config.guess --- glibc-2.2/scripts/config.guess Thu Sep 7 11:56:37 2000 +++ glibc-2.2.1/scripts/config.guess Wed Nov 22 10:59:52 2000 @@ -3,7 +3,7 @@ # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 # Free Software Foundation, Inc. -version='2000-09-05' +version='2000-11-16' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -78,6 +78,10 @@ if test $# != 0; then exit 1 fi + +dummy=dummy-$$ +trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15 + # Use $HOST_CC if defined. $CC may point to a cross-compiler if test x"$CC_FOR_BUILD" = x; then if test x"$HOST_CC" != x; then @@ -86,7 +90,17 @@ if test x"$CC_FOR_BUILD" = x; then if test x"$CC" != x; then CC_FOR_BUILD="$CC" else - CC_FOR_BUILD=cc + echo 'int dummy(){}' >$dummy.c + for c in cc c89 gcc; do + ($c $dummy.c -c) >/dev/null 2>&1 + if test $? = 0; then + CC_FOR_BUILD="$c"; break + fi + done + rm -f $dummy.c $dummy.o + if test x"$CC_FOR_BUILD" = x; then + CC_FOR_BUILD=no_compiler_found + fi fi fi fi @@ -103,9 +117,6 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` | UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -dummy=dummy-$$ -trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15 - # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in @@ -495,10 +506,28 @@ EOF echo m68k-hp-bsd4.4 exit 0 ;; 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) + case "${HPUX_REV}" in + 11.[0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + esac ;; + esac + fi ;; + esac + if [ "${HP_ARCH}" = "" ]; then sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE @@ -533,9 +562,10 @@ EOF } EOF (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` + if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi rm -f $dummy.c $dummy + fi ;; esac - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; 3050*:HI-UX:*:*) @@ -628,9 +658,12 @@ EOF CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; - CRAY*T3E:*:*:*) + CRAY*T3D:*:*:*) echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; @@ -698,8 +731,7 @@ EOF # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. - ld_help_string=`cd /; ld --help 2>&1` - ld_supported_emulations=`echo $ld_help_string \ + ld_supported_emulations=`cd /; ld --help 2>&1 \ | sed -ne '/supported emulations:/!d s/[ ][ ]*/ /g s/.*supported emulations: *// @@ -725,6 +757,10 @@ EOF echo "${UNAME_MACHINE}-unknown-linux-gnuaout" exit 0 ;; + elf32_sparc) + echo "${UNAME_MACHINE}-unknown-linux-gnu" + exit 0 + ;; armlinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" exit 0 @@ -860,14 +896,28 @@ EOF echo s390-ibm-linux && exit 0 elif test "${UNAME_MACHINE}" = "x86_64"; then echo x86_64-unknown-linux-gnu && exit 0 + elif test "${UNAME_MACHINE}" = "parisc" -o "${UNAME_MACHINE}" = "hppa"; then + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) + echo hppa1.1-unknown-linux-gnu + ;; + PA8*) + echo hppa2.0-unknown-linux-gnu + ;; + *) + echo hppa-unknown-linux-gnu + ;; + esac + exit 0 else # Either a pre-BFD a.out linker (linux-gnuoldld) # or one that does not give us useful --help. # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout. # If ld does not provide *any* "supported emulations:" # that means it is gnuoldld. - echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:" - test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0 + test -z "$ld_supported_emulations" \ + && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0 case "${UNAME_MACHINE}" in i?86) @@ -982,7 +1032,7 @@ EOF exit 0 ;; M68*:*:R3V[567]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; - 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) + 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` @@ -1086,6 +1136,9 @@ EOF exit 0 ;; NSR-[KW]:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} + exit 0 ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux exit 0 ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv diff -adurpN glibc-2.2/scripts/config.sub glibc-2.2.1/scripts/config.sub --- glibc-2.2/scripts/config.sub Mon Sep 18 15:42:29 2000 +++ glibc-2.2.1/scripts/config.sub Wed Nov 22 10:59:52 2000 @@ -3,7 +3,7 @@ # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 # Free Software Foundation, Inc. -version='2000-09-11' +version='2000-11-15' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -105,7 +105,7 @@ esac # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in - nto-qnx* | linux-gnu*) + nto-qnx* | linux-gnu* | storm-chaos*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; @@ -640,6 +640,10 @@ case $basic_machine in basic_machine=i960-intel os=-mon960 ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; np1) basic_machine=np1-gould ;; @@ -675,28 +679,28 @@ case $basic_machine in pc532 | pc532-*) basic_machine=ns32k-pc532 ;; - pentium | p5 | k5 | k6 | nexen) + pentium | p5 | k5 | k6 | nexgen) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon) basic_machine=i686-pc ;; pentiumii | pentium2) - basic_machine=i786-pc + basic_machine=i686-pc ;; - pentium-* | p5-* | k5-* | k6-* | nexen-*) + pentium-* | p5-* | k5-* | k6-* | nexgen-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; - power) basic_machine=rs6000-ibm + power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; @@ -908,7 +912,7 @@ case $basic_machine in basic_machine=we32k-att ;; sh3 | sh4) - base_machine=sh-unknown + basic_machine=sh-unknown ;; sparc | sparcv9) basic_machine=sparc-sun @@ -991,7 +995,7 @@ case $os in | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32*) + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* | -storm-chaos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) diff -adurpN glibc-2.2/setjmp/jmpbug.c glibc-2.2.1/setjmp/jmpbug.c --- glibc-2.2/setjmp/jmpbug.c Tue Mar 12 05:44:40 1996 +++ glibc-2.2.1/setjmp/jmpbug.c Sat Jan 6 20:35:28 2001 @@ -4,13 +4,13 @@ #include #include -void +static void sub5 (jmp_buf buf) { longjmp (buf, 1); } -void +static void test (int x) { jmp_buf buf; diff -adurpN glibc-2.2/setjmp/tst-setjmp.c glibc-2.2.1/setjmp/tst-setjmp.c --- glibc-2.2/setjmp/tst-setjmp.c Sun Mar 29 23:05:46 1998 +++ glibc-2.2.1/setjmp/tst-setjmp.c Sat Jan 6 20:35:28 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1992, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1992, 1997, 1998, 2000 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 @@ -23,7 +23,7 @@ static jmp_buf env; static int last_value = -1, lose = 0; -void +static void jump (int val) { longjmp (env, val); @@ -113,5 +113,6 @@ main (void) puts ("Test FAILED!"); else puts ("Test succeeded!"); - exit (lose ? EXIT_FAILURE : EXIT_SUCCESS); + + return lose ? EXIT_FAILURE : EXIT_SUCCESS; } diff -adurpN glibc-2.2/signal/tst-signal.c glibc-2.2.1/signal/tst-signal.c --- glibc-2.2/signal/tst-signal.c Thu May 29 05:03:06 1997 +++ glibc-2.2.1/signal/tst-signal.c Sat Jan 6 20:35:28 2001 @@ -5,7 +5,7 @@ int win = 0; -void +static void handler (int sig) { printf ("Received signal %d (%s).\n", sig, strsignal(sig)); @@ -39,5 +39,6 @@ main (void) } puts ("Got a signal. Test succeeded."); - exit (EXIT_SUCCESS); + + return EXIT_SUCCESS; } diff -adurpN glibc-2.2/stdio-common/Makefile glibc-2.2.1/stdio-common/Makefile --- glibc-2.2/stdio-common/Makefile Thu Nov 2 16:50:14 2000 +++ glibc-2.2.1/stdio-common/Makefile Wed Nov 22 10:59:52 2000 @@ -55,7 +55,7 @@ tests := tstscanf test_rdwr test-popen t tfformat tiformat tllformat tstdiomisc tst-printfsz tst-wc-printf \ scanf1 scanf2 scanf3 scanf4 scanf5 scanf7 scanf8 scanf9 scanf10 \ scanf12 tst-tmpnam tst-cookie tst-obprintf tst-sscanf tst-swprintf \ - tst-fseek tst-fmemopen + tst-fseek tst-fmemopen test-vfprintf test-srcs = tst-unbputc tst-printf @@ -83,6 +83,7 @@ CFLAGS-tst-printfsz.c = -Wno-format tst-sscanf-ENV = LOCPATH=$(common-objpfx)localedata tst-swprintf-ENV = LOCPATH=$(common-objpfx)localedata +test-vfprintf-ENV = LOCPATH=$(common-objpfx)localedata $(inst_includedir)/bits/stdio_lim.h: $(common-objpfx)bits/stdio_lim.h $(do-install) diff -adurpN glibc-2.2/stdio-common/_itoa.c glibc-2.2.1/stdio-common/_itoa.c --- glibc-2.2/stdio-common/_itoa.c Thu Jun 17 08:26:41 1999 +++ glibc-2.2.1/stdio-common/_itoa.c Sat Jan 6 20:35:28 2001 @@ -1,5 +1,5 @@ /* Internal function for converting integers to ASCII. - Copyright (C) 1994, 1995, 1996, 1999 Free Software Foundation, Inc. + Copyright (C) 1994, 1995, 1996, 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Torbjorn Granlund and Ulrich Drepper . @@ -20,7 +20,7 @@ Boston, MA 02111-1307, USA. */ #include -#include +#include #include #include diff -adurpN glibc-2.2/stdio-common/_itowa.c glibc-2.2.1/stdio-common/_itowa.c --- glibc-2.2/stdio-common/_itowa.c Wed Jun 16 15:33:55 1999 +++ glibc-2.2.1/stdio-common/_itowa.c Sat Jan 6 20:35:28 2001 @@ -1,5 +1,5 @@ /* Internal function for converting integers to ASCII. - Copyright (C) 1994, 1995, 1996, 1999 Free Software Foundation, Inc. + Copyright (C) 1994, 1995, 1996, 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Torbjorn Granlund and Ulrich Drepper . @@ -20,7 +20,7 @@ Boston, MA 02111-1307, USA. */ #include -#include +#include #include #include diff -adurpN glibc-2.2/stdio-common/perror.c glibc-2.2.1/stdio-common/perror.c --- glibc-2.2/stdio-common/perror.c Wed Apr 15 08:39:15 1998 +++ glibc-2.2.1/stdio-common/perror.c Sat Jan 6 20:35:28 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1992, 1993, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1991,1992,1993,1997,1998,2000 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 @@ -16,9 +16,10 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include #include #include -#include +#include /* Print a line on stderr consisting of the text in S, a colon, a space, a message describing the meaning of the contents of `errno' and a newline. @@ -29,12 +30,19 @@ perror (const char *s) char buf[1024]; int errnum = errno; const char *colon; + const char *errstring; if (s == NULL || *s == '\0') s = colon = ""; else colon = ": "; - (void) fprintf (stderr, "%s%s%s\n", - s, colon, __strerror_r (errnum, buf, sizeof buf)); + errstring = __strerror_r (errnum, buf, sizeof buf); + +#ifdef USE_IN_LIBIO + if (fwide (stderr, 0) > 0) + (void) fwprintf (stderr, L"%s%s%s\n", s, colon, errstring); + else +#endif + (void) fprintf (stderr, "%s%s%s\n", s, colon, errstring); } diff -adurpN glibc-2.2/stdio-common/printf.c glibc-2.2.1/stdio-common/printf.c --- glibc-2.2/stdio-common/printf.c Tue Oct 14 22:30:53 1997 +++ glibc-2.2.1/stdio-common/printf.c Wed Jan 10 15:54:39 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1995, 1996, 1997, 2001 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 @@ -18,6 +18,8 @@ #include #include + +#undef printf /* Write formatted output to stdout from the format string FORMAT. */ /* VARARGS1 */ diff -adurpN glibc-2.2/stdio-common/printf_fp.c glibc-2.2.1/stdio-common/printf_fp.c --- glibc-2.2/stdio-common/printf_fp.c Thu Oct 26 22:57:33 2000 +++ glibc-2.2.1/stdio-common/printf_fp.c Sat Jan 6 20:35:28 2001 @@ -1,5 +1,5 @@ /* Floating point output for `printf'. - Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Written by Ulrich Drepper , 1995. @@ -30,7 +30,7 @@ #include #include #include -#include +#include #include #include #include @@ -57,7 +57,7 @@ names equal. */ # undef putc # define putc(c, f) (wide \ - ? _IO_putwc_unlocked (c, f) : _IO_putc_unlocked (c, f)) + ? (int)_IO_putwc_unlocked (c, f) : _IO_putc_unlocked (c, f)) # define size_t _IO_size_t # define FILE _IO_FILE #else /* ! USE_IN_LIBIO */ @@ -200,6 +200,8 @@ __printf_fp (FILE *fp, /* Nonzero if this is output on a wide character stream. */ int wide = info->wide; + auto wchar_t hack_digit (void); + wchar_t hack_digit (void) { mp_limb_t hi; @@ -923,7 +925,9 @@ __printf_fp (FILE *fp, { wchar_t *wtp = wcp; - if (digit == L'5' && (*(wcp - 1) & 1) == 0) + if (digit == L'5' + && ((*(wcp - 1) != decimalwc && (*(wcp - 1) & 1) == 0) + || ((*(wcp - 1) == decimalwc && (*(wcp - 2) & 1) == 0)))) { /* This is the critical case. */ if (fracsize == 1 && frac[0] == 0) diff -adurpN glibc-2.2/stdio-common/printf_size.c glibc-2.2.1/stdio-common/printf_size.c --- glibc-2.2/stdio-common/printf_size.c Fri Feb 11 15:48:58 2000 +++ glibc-2.2.1/stdio-common/printf_size.c Sat Jan 6 20:35:28 2001 @@ -1,5 +1,5 @@ /* Print size value using units for orders of magnitude. - Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. Based on a proposal by Larry McVoy . @@ -39,7 +39,7 @@ names equal. */ # undef putc # define putc(c, f) (wide \ - ? _IO_putwc_unlocked (c, f) : _IO_putc_unlocked (c, f)) + ? (int)_IO_putwc_unlocked (c, f) : _IO_putc_unlocked (c, f)) # define size_t _IO_size_t # define FILE _IO_FILE #else /* ! USE_IN_LIBIO */ diff -adurpN glibc-2.2/stdio-common/scanf9.c glibc-2.2.1/stdio-common/scanf9.c --- glibc-2.2/stdio-common/scanf9.c Wed Jan 24 00:23:24 1996 +++ glibc-2.2.1/stdio-common/scanf9.c Sat Jan 6 20:35:28 2001 @@ -2,22 +2,29 @@ #include #include -int main(int argc, char *argv[]) { - int matches; - char str[10]; +int +main (void) +{ + int matches; + char str[10]; str[0] = '\0'; matches = -9; - matches = sscanf("x ]", "%[^] ]", str); - printf("Matches = %d, string str = \"%s\".\n", matches, str); - printf("str should be \"x\".\n"); - if (strcmp (str, "x")) abort (); + matches = sscanf ("x ]", "%[^] ]", str); + printf ("Matches = %d, string str = \"%s\".\n", matches, str); + printf ("str should be \"x\".\n"); + + if (strcmp (str, "x")) + abort (); + str[0] = '\0'; matches = -9; - matches = sscanf(" ] x", "%[] ]", str); - printf("Matches = %d, string str = \"%s\".\n", matches, str); - printf("str should be \" ] \".\n"); - if (strcmp (str, " ] ")) abort (); - exit(0); + matches = sscanf (" ] x", "%[] ]", str); + printf ("Matches = %d, string str = \"%s\".\n", matches, str); + printf ("str should be \" ] \".\n"); + + if (strcmp (str, " ] ")) + abort (); + return 0; } diff -adurpN glibc-2.2/stdio-common/temptest.c glibc-2.2.1/stdio-common/temptest.c --- glibc-2.2/stdio-common/temptest.c Wed Jun 21 11:11:02 2000 +++ glibc-2.2.1/stdio-common/temptest.c Sat Jan 6 20:35:28 2001 @@ -24,5 +24,5 @@ main (int argc, char *argv[]) for (i = 0; i < 500; i++) remove (files[i]); - exit (0); + return 0; } diff -adurpN glibc-2.2/stdio-common/test-popen.c glibc-2.2.1/stdio-common/test-popen.c --- glibc-2.2/stdio-common/test-popen.c Fri Jan 30 03:20:56 1998 +++ glibc-2.2.1/stdio-common/test-popen.c Sat Jan 6 20:35:28 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 2000 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 @@ -20,7 +20,7 @@ #include #include -void +static void write_data (FILE *stream) { int i; @@ -33,7 +33,7 @@ write_data (FILE *stream) } } -void +static void read_data (FILE *stream) { int i, j; @@ -99,5 +99,5 @@ main (void) } puts (wstatus | rstatus ? "Test FAILED!" : "Test succeeded."); - exit (wstatus | rstatus); + return (wstatus | rstatus); } diff -adurpN glibc-2.2/stdio-common/test-vfprintf.c glibc-2.2.1/stdio-common/test-vfprintf.c --- glibc-2.2/stdio-common/test-vfprintf.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/stdio-common/test-vfprintf.c Sat Nov 18 15:33:48 2000 @@ -0,0 +1,125 @@ +/* Tests of *printf for very large strings. + Copyright (C) 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 2000. + + 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. */ + +#include +#include +#include +#include +#include +#include +#include +#include + + +const char *locs[] = +{ + "C", "de_DE.ISO-8859-1", "de_DE.UTF-8", "ja_JP.EUC-JP" +}; +#define nlocs (sizeof (locs) / sizeof (locs[0])) + + +char large[50000]; + +int +main (void) +{ + char buf[20]; + int i; + int res = 0; + int fd; + + mtrace (); + + strcpy (buf, "test-vfprintfXXXXXX"); + fd = mkstemp (buf); + if (fd == -1) + { + printf ("cannot open temporary file: %m\n"); + exit (1); + } + unlink (buf); + + for (i = 0; i < nlocs; ++i) + { + FILE *fp; + struct stat st; + int fd2; + + setlocale (LC_ALL, locs[i]); + + memset (large, '\1', sizeof (large)); + large[sizeof (large) - 1] = '\0'; + + fd2 = dup (fd); + if (fd2 == -1) + { + printf ("cannot dup for locale %s: %m\n", + setlocale (LC_ALL, NULL)); + exit (1); + } + + if (ftruncate (fd2, 0) != 0) + { + printf ("cannot truncate file for locale %s: %m\n", + setlocale (LC_ALL, NULL)); + exit (1); + } + + fp = fdopen (fd2, "a"); + if (fp == NULL) + { + printf ("cannot create FILE for locale %s: %m\n", + setlocale (LC_ALL, NULL)); + exit (1); + } + + fprintf (fp, "%s", large); + fprintf (fp, "%.*s", 30000, large); + large[20000] = '\0'; + fprintf (fp, large); + + if (fflush (fp) != 0 || ferror (fp) != 0 || fclose (fp) != 0) + { + printf ("write error for locale %s: %m\n", + setlocale (LC_ALL, NULL)); + exit (1); + } + + if (fstat (fd, &st) != 0) + { + printf ("cannot stat for locale %s: %m\n", + setlocale (LC_ALL, NULL)); + exit (1); + } + else if (st.st_size != 99999) + { + printf ("file size incorrect for locale %s: %jd instead of %jd\n", + setlocale (LC_ALL, NULL), + (intmax_t) st.st_size, (intmax_t) 99999); + res = 1; + } + else + printf ("locale %s OK\n", setlocale (LC_ALL, NULL)); + } + + close (fd); + + return res; +} diff -adurpN glibc-2.2/stdio-common/test_rdwr.c glibc-2.2.1/stdio-common/test_rdwr.c --- glibc-2.2/stdio-common/test_rdwr.c Mon Jul 6 12:09:20 1998 +++ glibc-2.2.1/stdio-common/test_rdwr.c Sat Jan 6 20:35:28 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1992, 1996, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1991,1992,1996,1997,1998,2000 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 @@ -125,5 +125,5 @@ main (int argc, char **argv) puts ("Test succeeded."); } - exit (lose ? EXIT_FAILURE : EXIT_SUCCESS); + return lose ? EXIT_FAILURE : EXIT_SUCCESS; } diff -adurpN glibc-2.2/stdio-common/tfformat.c glibc-2.2.1/stdio-common/tfformat.c --- glibc-2.2/stdio-common/tfformat.c Fri May 26 12:38:35 2000 +++ glibc-2.2.1/stdio-common/tfformat.c Sat Jan 6 20:35:28 2001 @@ -4023,7 +4023,8 @@ sprint_double_type sprint_doubles[] = int required_precision = 13; #if defined(__STDC__) || defined(__cplusplus) -int matches(register char *result, register const char *desired) +static int +matches (register char *result, register const char *desired) #else int matches(result, desired) register char *result; register const char *desired; diff -adurpN glibc-2.2/stdio-common/tst-fileno.c glibc-2.2.1/stdio-common/tst-fileno.c --- glibc-2.2/stdio-common/tst-fileno.c Wed Jun 21 11:11:02 2000 +++ glibc-2.2.1/stdio-common/tst-fileno.c Sat Jan 6 20:35:28 2001 @@ -24,14 +24,15 @@ static int check (const char *name, FILE *stream, int fd) { int sfd = fileno (stream); - printf ("(fileno (%s) = %d) %c= %d\n", name, sfd, sfd == fd ? '=' : '!', fd); + printf ("(fileno (%s) = %d) %c= %d\n", name, sfd, + sfd == fd ? '=' : '!', fd); return sfd != fd; } int main (void) { - exit (check ("stdin", stdin, STDIN_FILENO) || - check ("stdout", stdout, STDOUT_FILENO) || - check ("stderr", stderr, STDERR_FILENO)); + return (check ("stdin", stdin, STDIN_FILENO) || + check ("stdout", stdout, STDOUT_FILENO) || + check ("stderr", stderr, STDERR_FILENO)); } diff -adurpN glibc-2.2/stdio-common/tst-fmemopen.c glibc-2.2.1/stdio-common/tst-fmemopen.c --- glibc-2.2/stdio-common/tst-fmemopen.c Mon Oct 30 21:17:06 2000 +++ glibc-2.2.1/stdio-common/tst-fmemopen.c Wed Nov 22 10:59:52 2000 @@ -34,7 +34,7 @@ main (void) fputc (ch, stdout); if (ch != *cp) { - printf ("\ncharacter %d: '%c' instead of '%c'\n", + printf ("\ncharacter %td: '%c' instead of '%c'\n", cp - blah, ch, *cp); exit (1); } @@ -79,7 +79,7 @@ main (void) fputc (ch, stdout); if (ch != *cp) { - printf ("%d character: '%c' instead of '%c'\n", + printf ("%td character: '%c' instead of '%c'\n", cp - blah, ch, *cp); exit (1); } diff -adurpN glibc-2.2/stdio-common/tst-printf.c glibc-2.2.1/stdio-common/tst-printf.c --- glibc-2.2/stdio-common/tst-printf.c Sun Oct 8 17:05:05 2000 +++ glibc-2.2.1/stdio-common/tst-printf.c Sat Jan 6 20:35:29 2001 @@ -28,11 +28,11 @@ #include -void rfg1 (void); -void rfg2 (void); +static void rfg1 (void); +static void rfg2 (void); -void +static void fmtchk (const char *fmt) { (void) fputs(fmt, stdout); @@ -41,7 +41,7 @@ fmtchk (const char *fmt) (void) printf("'\n"); } -void +static void fmtst1chk (const char *fmt) { (void) fputs(fmt, stdout); @@ -50,7 +50,7 @@ fmtst1chk (const char *fmt) (void) printf("'\n"); } -void +static void fmtst2chk (const char *fmt) { (void) fputs(fmt, stdout); @@ -82,7 +82,7 @@ fmtst2chk (const char *fmt) * This exercises the output formatting code. */ -void +static void fp_test (void) { int i, j, k, l; @@ -292,7 +292,7 @@ I am ready for my first lesson today."; return result != 0; } -void +static void rfg1 (void) { char buf[100]; @@ -317,7 +317,7 @@ rfg1 (void) printf ("got: '%s', expected: '%s'\n", buf, "3E+01"); } -void +static void rfg2 (void) { int prec; diff -adurpN glibc-2.2/stdio-common/tst-sscanf.c glibc-2.2.1/stdio-common/tst-sscanf.c --- glibc-2.2/stdio-common/tst-sscanf.c Fri Jul 28 10:43:24 2000 +++ glibc-2.2.1/stdio-common/tst-sscanf.c Sat Jan 6 20:35:29 2001 @@ -117,5 +117,6 @@ main (void) if (! tst_locale) break; } - exit (result); + + return result; } diff -adurpN glibc-2.2/stdio-common/tstdiomisc.c glibc-2.2.1/stdio-common/tstdiomisc.c --- glibc-2.2/stdio-common/tstdiomisc.c Thu Aug 31 14:45:17 2000 +++ glibc-2.2.1/stdio-common/tstdiomisc.c Sat Jan 6 20:35:29 2001 @@ -4,7 +4,7 @@ #include #include -int +static int t1 (void) { int n = -1; @@ -14,7 +14,7 @@ t1 (void) return n != 5; } -int +static int t2 (void) { int result = 0; @@ -46,7 +46,7 @@ t2 (void) return result; } -int +static int F (void) { char buf[20]; diff -adurpN glibc-2.2/stdio-common/tstscanf.c glibc-2.2.1/stdio-common/tstscanf.c --- glibc-2.2/stdio-common/tstscanf.c Sun Oct 8 17:05:05 2000 +++ glibc-2.2.1/stdio-common/tstscanf.c Sat Jan 6 20:35:29 2001 @@ -305,5 +305,5 @@ main (int argc, char **argv) } } - exit (result); + return result; } diff -adurpN glibc-2.2/stdio-common/vfprintf.c glibc-2.2.1/stdio-common/vfprintf.c --- glibc-2.2/stdio-common/vfprintf.c Sun Oct 8 17:05:05 2000 +++ glibc-2.2.1/stdio-common/vfprintf.c Sat Jan 6 20:35:29 2001 @@ -798,8 +798,6 @@ vfprintf (FILE *s, const CHAR_T *format, LABEL (form_float): \ { \ /* Floating-point number. This is handled by printf_fp.c. */ \ - extern int __printf_fp __P ((FILE *, const struct printf_info *, \ - const void **const)); \ const void *ptr; \ int function_done; \ \ @@ -848,9 +846,7 @@ vfprintf (FILE *s, const CHAR_T *format, \ LABEL (form_floathex): \ { \ - /* FLoating point number printed as hexadecimal number. */ \ - extern int __printf_fphex __P ((FILE *, const struct printf_info *, \ - const void **const)); \ + /* Floating point number printed as hexadecimal number. */ \ const void *ptr; \ int function_done; \ \ @@ -919,7 +915,7 @@ vfprintf (FILE *s, const CHAR_T *format, else \ { \ /* Write "(nil)" for a nil pointer. */ \ - string = (CHAR_T *) L_("(nil)"); \ + string = (CHAR_T *) L_("(nil)"); \ /* Make sure the full string "(nil)" is printed. */ \ if (prec < 5) \ prec = 5; \ diff -adurpN glibc-2.2/stdio-common/vfscanf.c glibc-2.2.1/stdio-common/vfscanf.c --- glibc-2.2/stdio-common/vfscanf.c Sun Oct 8 17:05:05 2000 +++ glibc-2.2.1/stdio-common/vfscanf.c Sat Jan 13 10:48:50 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-1999, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1991-1999, 2000, 2001 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 @@ -87,8 +87,7 @@ # define ISDIGIT(Ch) iswdigit (Ch) # define ISXDIGIT(Ch) iswxdigit (Ch) # define TOLOWER(Ch) towlower (Ch) -# define ORIENT if (s->_vtable_offset == 0 && _IO_fwide (s, 1) != 1)\ - return WEOF +# define ORIENT if (_IO_fwide (s, 1) != 1) return WEOF # define __strtoll_internal __wcstoll_internal # define __strtoull_internal __wcstoull_internal # define __strtol_internal __wcstol_internal @@ -117,7 +116,9 @@ # define ISDIGIT(Ch) isdigit (Ch) # define ISXDIGIT(Ch) isxdigit (Ch) # define TOLOWER(Ch) tolower (Ch) -# define ORIENT if (_IO_fwide (s, -1) != -1) return EOF +# define ORIENT if (s->_vtable_offset == 0 \ + && _IO_fwide (s, -1) != -1) \ + return EOF # define L_(Str) Str # define CHAR_T char @@ -265,7 +266,7 @@ __vfscanf (FILE *s, const char *format, va_list arg; register const CHAR_T *f = format; register UCHAR_T fc; /* Current character of the format. */ - register size_t done = 0; /* Assignments done. */ + register WINT_T done = 0; /* Assignments done. */ register size_t read_in = 0; /* Chars read in. */ register WINT_T c = 0; /* Last char read. */ register int width; /* Maximum field width. */ @@ -307,7 +308,7 @@ __vfscanf (FILE *s, const char *format, char *str = NULL; wchar_t *wstr = NULL; char **strptr = NULL; - size_t strsize = 0; + ssize_t strsize = 0; /* We must not react on white spaces immediately because they can possibly be matched even if in the input stream no character is available anymore. */ diff -adurpN glibc-2.2/stdlib/Makefile glibc-2.2.1/stdlib/Makefile --- glibc-2.2/stdlib/Makefile Tue Oct 31 11:10:06 2000 +++ glibc-2.2.1/stdlib/Makefile Sat Jan 13 10:48:50 2001 @@ -1,4 +1,4 @@ -# Copyright (C) 1991,92,93,94,95,96,97,98,99,2000 Free Software Foundation, Inc. +# Copyright (C) 1991-1999, 2000 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 diff -adurpN glibc-2.2/stdlib/cxa_atexit.c glibc-2.2.1/stdlib/cxa_atexit.c --- glibc-2.2/stdlib/cxa_atexit.c Mon Dec 27 13:47:26 1999 +++ glibc-2.2.1/stdlib/cxa_atexit.c Sat Jan 13 10:48:50 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1999 Free Software Foundation, Inc. +/* Copyright (C) 1999, 2001 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 @@ -31,7 +31,7 @@ __cxa_atexit (void (*func) (void *), voi return -1; new->flavor = ef_cxa; - new->func.cxa.fn = func; + new->func.cxa.fn = (void (*) (void *, int)) func; new->func.cxa.arg = arg; new->func.cxa.dso_handle = d; return 0; diff -adurpN glibc-2.2/stdlib/cxa_finalize.c glibc-2.2.1/stdlib/cxa_finalize.c --- glibc-2.2/stdlib/cxa_finalize.c Mon Dec 27 13:47:52 1999 +++ glibc-2.2.1/stdlib/cxa_finalize.c Sat Jan 13 10:48:50 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1999 Free Software Foundation, Inc. +/* Copyright (C) 1999, 2001 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 @@ -39,6 +39,6 @@ __cxa_finalize (void *d) if (d == f->func.cxa.dso_handle /* We don't want to run this cleanup more than once. */ && compare_and_swap (&f->flavor, ef_cxa, ef_free)) - (*f->func.cxa.fn) (f->func.cxa.arg); + (*f->func.cxa.fn) (f->func.cxa.arg, 0); } } diff -adurpN glibc-2.2/stdlib/exit.c glibc-2.2.1/stdlib/exit.c --- glibc-2.2/stdlib/exit.c Tue Dec 28 14:13:07 1999 +++ glibc-2.2.1/stdlib/exit.c Sat Jan 13 10:48:50 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1995, 1996, 1997, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1991,1995,1996,1997,1999,2001 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 @@ -57,7 +57,7 @@ exit (int status) (*f->func.at) (); break; case ef_cxa: - (*f->func.cxa.fn) (f->func.cxa.arg); + (*f->func.cxa.fn) (f->func.cxa.arg, status); break; } } diff -adurpN glibc-2.2/stdlib/exit.h glibc-2.2.1/stdlib/exit.h --- glibc-2.2/stdlib/exit.h Tue Dec 28 14:13:07 1999 +++ glibc-2.2.1/stdlib/exit.h Sat Jan 13 10:48:50 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1996, 1997, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1996, 1997, 1999, 2001 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 @@ -44,7 +44,7 @@ struct exit_function } on; struct { - void (*fn) (void *arg); + void (*fn) (void *arg, int status); void *arg; void *dso_handle; } cxa; diff -adurpN glibc-2.2/stdlib/l64a.c glibc-2.2.1/stdlib/l64a.c --- glibc-2.2/stdlib/l64a.c Wed Oct 29 12:31:34 1997 +++ glibc-2.2.1/stdlib/l64a.c Sat Jan 6 20:35:29 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1995, 1996 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , August 1995. @@ -40,13 +40,16 @@ l64a (n) static char result[7]; int cnt; - if (m == 0l) + /* The standard says that only 32 bits are used. */ + m &= 0xffffffff; + + if (m == 0ul) /* The value for N == 0 is defined to be the empty string. */ return (char *) ""; result[6] = '\0'; - for (cnt = 5; m > 0; --cnt) + for (cnt = 5; m > 0ul; --cnt) { result[cnt] = conv_table[m & 0x3f]; m >>= 6; diff -adurpN glibc-2.2/stdlib/monetary.h glibc-2.2.1/stdlib/monetary.h --- glibc-2.2/stdlib/monetary.h Mon Oct 11 11:45:10 1999 +++ glibc-2.2.1/stdlib/monetary.h Sat Jan 6 20:35:29 2001 @@ -1,5 +1,5 @@ /* Header file for monetary value formatting functions. - Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998, 1999, 2000 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 @@ -37,7 +37,8 @@ __BEGIN_DECLS /* Formatting a monetary value according to the current locale. */ extern ssize_t strfmon (char *__restrict __s, size_t __maxsize, - __const char *__restrict __format, ...) __THROW; + __const char *__restrict __format, ...) + __THROW __attribute_format_strfmon__ (3, 4); #ifdef __USE_GNU # include @@ -45,7 +46,8 @@ extern ssize_t strfmon (char *__restrict /* Formatting a monetary value according to the current locale. */ extern ssize_t __strfmon_l (char *__restrict __s, size_t __maxsize, __locale_t loc, - __const char *__restrict __format, ...) __THROW; + __const char *__restrict __format, ...) + __THROW __attribute_format_strfmon__ (4, 5); #endif __END_DECLS diff -adurpN glibc-2.2/stdlib/rpmatch.c glibc-2.2.1/stdlib/rpmatch.c --- glibc-2.2/stdlib/rpmatch.c Thu Aug 31 14:45:17 2000 +++ glibc-2.2.1/stdlib/rpmatch.c Sat Jan 6 20:35:29 2001 @@ -29,6 +29,9 @@ rpmatch (response) { /* Match against one of the response patterns, compiling the pattern first if necessary. */ + auto inline int try (const int tag, const int match, const int nomatch, + const char **lastp, regex_t *re); + inline int try (const int tag, const int match, const int nomatch, const char **lastp, regex_t *re) { diff -adurpN glibc-2.2/stdlib/stdlib.h glibc-2.2.1/stdlib/stdlib.h --- glibc-2.2/stdlib/stdlib.h Sun Oct 8 17:05:05 2000 +++ glibc-2.2.1/stdlib/stdlib.h Wed Jan 10 15:54:39 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-1999, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1991-1999, 2000, 2001 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 @@ -812,12 +812,19 @@ extern int getsubopt (char **__restrict #ifdef __USE_XOPEN - /* Setup DES tables according KEY. */ extern void setkey (__const char *__key) __THROW; +#endif + /* X/Open pseudo terminal handling. */ +#ifdef __USE_XOPEN2K +/* Return a master pseudo-terminal handle. */ +extern int posix_openpt (int __oflag) __THROW; +#endif + +#ifdef __USE_XOPEN /* The next four functions all take a master pseudo-tty fd and perform an operation on the associated slave: */ diff -adurpN glibc-2.2/stdlib/strfmon.c glibc-2.2.1/stdlib/strfmon.c --- glibc-2.2/stdlib/strfmon.c Fri Jun 30 23:06:50 2000 +++ glibc-2.2.1/stdlib/strfmon.c Sat Jan 6 20:35:29 2001 @@ -74,7 +74,7 @@ #endif extern int __printf_fp (FILE *, const struct printf_info *, - const void **const); + const void *const *); /* This function determines the number of digit groups in the output. The definition is in printf_fp.c. */ extern unsigned int __guess_grouping (unsigned int intdig_max, diff -adurpN glibc-2.2/stdlib/test-canon.c glibc-2.2.1/stdlib/test-canon.c --- glibc-2.2/stdlib/test-canon.c Fri May 26 12:38:35 2000 +++ glibc-2.2.1/stdlib/test-canon.c Sat Jan 6 20:35:29 2001 @@ -93,7 +93,7 @@ struct { }; -int +static int check_path (const char * result, const char * expected) { int good; diff -adurpN glibc-2.2/stdlib/testsort.c glibc-2.2.1/stdlib/testsort.c --- glibc-2.2/stdlib/testsort.c Thu Jun 12 14:02:25 1997 +++ glibc-2.2.1/stdlib/testsort.c Sat Jan 6 20:35:29 2001 @@ -2,7 +2,7 @@ #include #include -int +static int compare (const void *a, const void *b) { return strcmp (*(char **) a, *(char **) b); diff -adurpN glibc-2.2/stdlib/tst-limits.c glibc-2.2.1/stdlib/tst-limits.c --- glibc-2.2/stdlib/tst-limits.c Fri Sep 15 18:28:25 2000 +++ glibc-2.2.1/stdlib/tst-limits.c Fri Dec 1 11:55:08 2000 @@ -62,8 +62,8 @@ main (void) TEST (PAGE_SIZE, "d", getpagesize ()); #endif - TEST (WORD_BIT, "d", sizeof (int) * CHAR_BIT); - TEST (LONG_BIT, "d", sizeof (long int) * CHAR_BIT); + TEST (WORD_BIT, "zd", sizeof (int) * CHAR_BIT); + TEST (LONG_BIT, "zd", sizeof (long int) * CHAR_BIT); return result; } diff -adurpN glibc-2.2/stdlib/tst-random.c glibc-2.2.1/stdlib/tst-random.c --- glibc-2.2/stdlib/tst-random.c Tue Aug 22 09:24:10 2000 +++ glibc-2.2.1/stdlib/tst-random.c Sat Jan 6 20:35:29 2001 @@ -44,7 +44,7 @@ const int nseq = 3; /* number of test s const int nrnd = 50; /* length of each test sequence */ const unsigned int seed[3] = { 0x12344321U, 0xEE11DD22U, 0xFEDCBA98 }; -void fail (const char *msg, int s, int i); +void fail (const char *msg, int s, int i) __attribute__ ((__noreturn__)); int main (void) diff -adurpN glibc-2.2/stdlib/tst-strtod.c glibc-2.2.1/stdlib/tst-strtod.c --- glibc-2.2/stdlib/tst-strtod.c Thu Sep 7 11:56:38 2000 +++ glibc-2.2.1/stdlib/tst-strtod.c Sat Jan 6 20:35:29 2001 @@ -117,7 +117,7 @@ main (int argc, char ** argv) status |= long_dbl (); - exit (status ? EXIT_FAILURE : EXIT_SUCCESS); + return status ? EXIT_FAILURE : EXIT_SUCCESS; } static void diff -adurpN glibc-2.2/stdlib/tst-strtol.c glibc-2.2.1/stdlib/tst-strtol.c --- glibc-2.2/stdlib/tst-strtol.c Thu Aug 31 14:45:17 2000 +++ glibc-2.2.1/stdlib/tst-strtol.c Sat Jan 6 20:35:29 2001 @@ -70,8 +70,8 @@ static const struct ltest tests[] = {"922337203685477580777", 9223372036854775807, 0, 0, ERANGE}, {"9223372036854775810", 9223372036854775807, 0, 0, ERANGE}, {"-2147483648", -2147483648, 0, 0, 0}, - {"-9223372036854775808", -9223372036854775808, 0, 0, 0}, - {"-9223372036854775809", -9223372036854775808, 0, 0, ERANGE}, + {"-9223372036854775808", 0x8000000000000000, 0, 0, 0}, + {"-9223372036854775809", 0x8000000000000000, 0, 0, ERANGE}, {"0x112233445566778899z", 9223372036854775807, 16, 'z', ERANGE}, {"0xFFFFFFFFFFFF00FF" , 9223372036854775807, 0, 0, ERANGE}, #endif @@ -169,7 +169,7 @@ main (void) } } - exit (status ? EXIT_FAILURE : EXIT_SUCCESS); + return status ? EXIT_FAILURE : EXIT_SUCCESS; } static void diff -adurpN glibc-2.2/stdlib/tst-strtoll.c glibc-2.2.1/stdlib/tst-strtoll.c --- glibc-2.2/stdlib/tst-strtoll.c Thu Aug 31 14:45:17 2000 +++ glibc-2.2.1/stdlib/tst-strtoll.c Sat Jan 6 20:35:29 2001 @@ -157,7 +157,7 @@ main (void) } } - exit (status ? EXIT_FAILURE : EXIT_SUCCESS); + return status ? EXIT_FAILURE : EXIT_SUCCESS; } static void diff -adurpN glibc-2.2/stdlib/tst-xpg-basename.c glibc-2.2.1/stdlib/tst-xpg-basename.c --- glibc-2.2/stdlib/tst-xpg-basename.c Wed Jun 21 11:11:03 2000 +++ glibc-2.2.1/stdlib/tst-xpg-basename.c Sat Jan 6 20:35:29 2001 @@ -63,5 +63,5 @@ main (void) } } - exit (errors); + return errors; } diff -adurpN glibc-2.2/string/Makefile glibc-2.2.1/string/Makefile --- glibc-2.2/string/Makefile Tue Oct 31 11:10:06 2000 +++ glibc-2.2.1/string/Makefile Sat Jan 6 20:35:29 2001 @@ -47,7 +47,7 @@ o-objects.ob := memcpy.o memset.o memchr tests := tester inl-tester noinl-tester testcopy test-ffs \ tst-strlen stratcliff tst-svc tst-inlcall \ - bug-strncat1 bug-strspn1 bug-strpbrk1 + bug-strncat1 bug-strspn1 bug-strpbrk1 tst-bswap distribute := memcopy.h pagecopy.h tst-svc.expect diff -adurpN glibc-2.2/string/bits/string2.h glibc-2.2.1/string/bits/string2.h --- glibc-2.2/string/bits/string2.h Wed Nov 8 14:10:20 2000 +++ glibc-2.2.1/string/bits/string2.h Wed Nov 22 10:59:53 2000 @@ -208,8 +208,8 @@ __STRING2_COPY_TYPE (8); # if _STRING_ARCH_unaligned # define __mempcpy_args(src) \ - ((char *) (src))[0], ((char *) (src))[2], ((char *) (src))[4], \ - ((char *) (src))[6], \ + ((__const char *) (src))[0], ((__const char *) (src))[2], \ + ((__const char *) (src))[4], ((__const char *) (src))[6], \ __extension__ __STRING2_SMALL_GET16 (src, 0), \ __extension__ __STRING2_SMALL_GET16 (src, 4), \ __extension__ __STRING2_SMALL_GET32 (src, 0), \ diff -adurpN glibc-2.2/string/bug-strncat1.c glibc-2.2.1/string/bug-strncat1.c --- glibc-2.2/string/bug-strncat1.c Mon Oct 30 20:05:59 2000 +++ glibc-2.2.1/string/bug-strncat1.c Sat Jan 6 20:35:29 2001 @@ -23,9 +23,9 @@ main (void) } if (d[2] != '\2') { - puts ("d[2] != '\\3'"); + puts ("d[2] != '\\2'"); exit (1); } - exit (0); + return 0; } diff -adurpN glibc-2.2/string/bug-strpbrk1.c glibc-2.2.1/string/bug-strpbrk1.c --- glibc-2.2/string/bug-strpbrk1.c Mon Oct 30 20:05:59 2000 +++ glibc-2.2.1/string/bug-strpbrk1.c Sat Jan 6 20:35:29 2001 @@ -13,7 +13,7 @@ main (void) strpbrk (b++, ""); if (b != a + 1) - exit (1); + return 1; - exit (0); + return 0; } diff -adurpN glibc-2.2/string/bug-strspn1.c glibc-2.2.1/string/bug-strspn1.c --- glibc-2.2/string/bug-strspn1.c Mon Oct 30 20:05:59 2000 +++ glibc-2.2.1/string/bug-strspn1.c Sat Jan 6 20:35:29 2001 @@ -13,7 +13,7 @@ main (void) strspn (b++, ""); if (b != a + 1) - exit (1); + return 1; - exit (0); + return 0; } diff -adurpN glibc-2.2/string/stratcliff.c glibc-2.2.1/string/stratcliff.c --- glibc-2.2/string/stratcliff.c Wed Nov 24 10:29:43 1999 +++ glibc-2.2.1/string/stratcliff.c Sat Jan 6 20:35:29 2001 @@ -1,5 +1,5 @@ /* Test for string function add boundaries of usable memory. - Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -152,6 +152,27 @@ main (int argc, char *argv[]) } } + /* rawmemchr test */ + for (outer = size - 1; outer >= MAX (0, size - 128); --outer) + { + for (middle = MAX (outer, size - 64); middle < size; ++middle) + { + char *cp; + adr[middle] = 'V'; + + cp = rawmemchr (&adr[outer], 'V'); + + if (cp - &adr[outer] != middle - outer) + { + printf ("rawmemchr flunked for outer = %d, middle = %d\n", + outer, middle); + result = 1; + } + + adr[middle] = 'T'; + } + } + /* strcpy test */ for (outer = size - 1; outer >= MAX (0, size - 128); --outer) { @@ -188,6 +209,48 @@ main (int argc, char *argv[]) adr[inner] = 'T'; } } + + /* stpncpy test */ + for (outer = size - 1; outer >= MAX (0, size - 128); --outer) + { + for (middle = MAX (outer, size - 64); middle < size; ++middle) + { + adr[middle] = '\0'; + + for (inner = 0; inner < size - outer; ++ inner) + { + if ((stpncpy (dest, &adr[outer], inner) - dest) + != MIN (inner, middle - outer)) + { + printf ("stpncpy flunked for outer = %d, middle = %d, " + "inner = %d\n", outer, middle, inner); + result = 1; + } + } + + adr[middle] = 'T'; + } + } + + /* memcpy test */ + for (outer = size - 1; outer >= MAX (0, size - 128); --outer) + for (inner = 0; inner < size - outer; ++inner) + if (memcpy (dest, &adr[outer], inner) != dest) + { + printf ("memcpy flunked for outer = %d, inner = %d\n", + outer, inner); + result = 1; + } + + /* mempcpy test */ + for (outer = size - 1; outer >= MAX (0, size - 128); --outer) + for (inner = 0; inner < size - outer; ++inner) + if (mempcpy (dest, &adr[outer], inner) != dest + inner) + { + printf ("mempcpy flunked for outer = %d, inner = %d\n", + outer, inner); + result = 1; + } } return result; diff -adurpN glibc-2.2/string/strcoll.c glibc-2.2.1/string/strcoll.c --- glibc-2.2/string/strcoll.c Sun Oct 8 17:05:05 2000 +++ glibc-2.2.1/string/strcoll.c Fri Dec 1 11:55:08 2000 @@ -59,7 +59,7 @@ STRCOLL (s1, s2, l) { #ifdef USE_IN_EXTENDED_LOCALE_MODEL struct locale_data *current = l->__locales[LC_COLLATE]; - uint_fast32_t nrules = *((uint32_t *) current->values[_NL_ITEM_INDEX (_NL_COLLATE_NRULES)].string); + uint_fast32_t nrules = *((const uint32_t *) current->values[_NL_ITEM_INDEX (_NL_COLLATE_NRULES)].string); #else uint_fast32_t nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES); #endif diff -adurpN glibc-2.2/string/strings.h glibc-2.2.1/string/strings.h --- glibc-2.2/string/strings.h Fri May 26 12:38:35 2000 +++ glibc-2.2.1/string/strings.h Sat Jan 6 20:35:29 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991,92,96,97,99,2000 Free Software Foundation, Inc. +/* Copyright (C) 1991,92,96,97,99,2000,2001 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 @@ -20,8 +20,9 @@ #define _STRINGS_H 1 /* We don't need and should not read this file if was already - read. */ -#ifndef _STRING_H + read. The one exception being that if __USE_BSD isn't defined, then + these aren't defined in string.h, so we need to define them here. */ +#if !defined _STRING_H || !defined __USE_BSD # include # define __need_size_t diff -adurpN glibc-2.2/string/strndup.c glibc-2.2.1/string/strndup.c --- glibc-2.2/string/strndup.c Wed Mar 18 15:49:44 1998 +++ glibc-2.2.1/string/strndup.c Thu Nov 16 11:12:04 2000 @@ -49,7 +49,7 @@ __strndup (s, n) return NULL; new[len] = '\0'; - return memcpy (new, s, len); + return (char *) memcpy (new, s, len); } #ifdef weak_alias weak_alias (__strndup, strndup) diff -adurpN glibc-2.2/string/strnlen.c glibc-2.2.1/string/strnlen.c --- glibc-2.2/string/strnlen.c Tue Apr 7 10:18:33 1998 +++ glibc-2.2.1/string/strnlen.c Fri Dec 1 11:55:08 2000 @@ -1,5 +1,5 @@ /* Find the length of STRING, but scan at most MAXLEN characters. - Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998, 2000 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 @@ -26,6 +26,6 @@ size_t __strnlen (const char *string, size_t maxlen) { const char *end = memchr (string, '\0', maxlen); - return end ? end - string : maxlen; + return end ? (size_t) (end - string) : maxlen; } weak_alias (__strnlen, strnlen) diff -adurpN glibc-2.2/string/strxfrm.c glibc-2.2.1/string/strxfrm.c --- glibc-2.2/string/strxfrm.c Sun Oct 8 17:05:05 2000 +++ glibc-2.2.1/string/strxfrm.c Fri Dec 1 11:55:08 2000 @@ -95,7 +95,7 @@ STRXFRM (STRING_TYPE *dest, const STRING { #ifdef USE_IN_EXTENDED_LOCALE_MODEL struct locale_data *current = l->__locales[LC_COLLATE]; - uint_fast32_t nrules = *((uint32_t *) current->values[_NL_ITEM_INDEX (_NL_COLLATE_NRULES)].string); + uint_fast32_t nrules = *((const uint32_t *) current->values[_NL_ITEM_INDEX (_NL_COLLATE_NRULES)].string); #else uint32_t nrules = _NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES); #endif @@ -393,7 +393,7 @@ STRXFRM (STRING_TYPE *dest, const STRING rule = rulesets[rulearr[idxcnt + 1] * nrules + pass]; } - if (backw_stop != ~0) + if (backw_stop != ~0ul) { /* Handle the pushed elements now. */ size_t backw; diff -adurpN glibc-2.2/string/test-ffs.c glibc-2.2.1/string/test-ffs.c --- glibc-2.2/string/test-ffs.c Tue Jun 16 12:32:55 1998 +++ glibc-2.2.1/string/test-ffs.c Sat Jan 6 20:35:29 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1994, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1994, 1997, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Joel Sherrill (jsherril@redstone-emh2.army.mil), On-Line Applications Research Corporation. @@ -27,6 +27,9 @@ main (void) { int failures = 0; int i; + + auto void try (int value, int expected); + void try (int value, int expected) { if (ffs (value) != expected) @@ -49,5 +52,5 @@ main (void) else puts ("Test succeeded."); - exit (failures); + return failures; } diff -adurpN glibc-2.2/string/tester.c glibc-2.2.1/string/tester.c --- glibc-2.2/string/tester.c Mon Jan 3 13:04:43 2000 +++ glibc-2.2.1/string/tester.c Fri Dec 1 11:55:08 2000 @@ -45,7 +45,7 @@ const char *it = ""; /* Routine n size_t errors = 0; /* Complain if condition is not true. */ -void +static void check (int thing, int number) { if (!thing) @@ -56,7 +56,7 @@ check (int thing, int number) } /* Complain if first two args don't strcmp as equal. */ -void +static void equal (const char *a, const char *b, int number) { check(a != NULL && b != NULL && STREQ (a, b), number); @@ -66,7 +66,7 @@ char one[50]; char two[50]; char *cp; -void +static void test_strcmp (void) { it = "strcmp"; @@ -120,7 +120,7 @@ test_strcmp (void) do { \ int __n; \ char *cp; \ - for (__n = 0; __n < sizeof (one); ++__n) \ + for (__n = 0; __n < (int) sizeof (one); ++__n) \ one[__n] = 'Z'; \ fn (one, str); \ for (cp = one, __n = 0; __n < n; ++__n, ++cp) \ @@ -128,7 +128,7 @@ test_strcmp (void) check (*cp == '\0', ntest); \ } while (0) -void +static void test_strcpy (void) { int i; @@ -175,7 +175,7 @@ test_strcpy (void) SIMPLE_COPY(strcpy, 16, "6666666666666666", 57); } -void +static void test_stpcpy (void) { it = "stpcpy"; @@ -257,7 +257,7 @@ test_stpcpy (void) SIMPLE_COPY(stpcpy, 16, "6666666666666666", 59); } -void +static void test_stpncpy (void) { it = "stpncpy"; @@ -272,7 +272,7 @@ test_stpncpy (void) check (one[4] == '\0' && one[5] == '\0' && one[6] == 'x', 8); } -void +static void test_strcat (void) { it = "strcat"; @@ -302,7 +302,7 @@ test_strcat (void) equal (one, "cd", 9); } -void +static void test_strncat (void) { /* First test it as strcat, with big counts, then test the count @@ -344,7 +344,7 @@ test_strncat (void) equal (one, "abcdgh", 12); /* Count and length equal. */ } -void +static void test_strncmp (void) { /* First test as strcmp with big counts, then test count code. */ @@ -364,7 +364,7 @@ test_strncmp (void) check (strncmp ("abc", "def", 0) == 0, 13); /* Zero count. */ } -void +static void test_strncpy (void) { /* Testing is a bit different because of odd semantics. */ @@ -406,7 +406,7 @@ test_strncpy (void) equal (one, "hi there", 15); /* Stomped on source? */ } -void +static void test_strlen (void) { it = "strlen"; @@ -427,7 +427,7 @@ test_strlen (void) } } -void +static void test_strchr (void) { it = "strchr"; @@ -456,7 +456,7 @@ test_strchr (void) } } -void +static void test_strchrnul (void) { const char *os; @@ -490,7 +490,7 @@ test_strchrnul (void) } } -void +static void test_rawmemchr (void) { it = "rawmemchr"; @@ -517,7 +517,7 @@ test_rawmemchr (void) } } -void +static void test_index (void) { it = "index"; @@ -534,7 +534,7 @@ test_index (void) check (index (one, '\0') == one, 8); /* NUL in empty string. */ } -void +static void test_strrchr (void) { it = "strrchr"; @@ -563,7 +563,7 @@ test_strrchr (void) } } -void +static void test_memrchr (void) { size_t l; @@ -609,7 +609,7 @@ test_memrchr (void) } } -void +static void test_rindex (void) { it = "rindex"; @@ -626,7 +626,7 @@ test_rindex (void) check (rindex (one, '\0') == one, 8); /* NUL in empty string. */ } -void +static void test_strpbrk (void) { it = "strpbrk"; @@ -655,7 +655,7 @@ test_strpbrk (void) check(strpbrk(one, "efgh") == one+6, 17); /* And yet another. */ } -void +static void test_strstr (void) { it = "strstr"; @@ -682,7 +682,7 @@ test_strstr (void) check(strstr(one, "bbca") == one+1, 16); /* With overlap. */ } -void +static void test_strspn (void) { it = "strspn"; @@ -693,7 +693,7 @@ test_strspn (void) check(strspn("abc", "") == 0, 5); /* Null search list. */ } -void +static void test_strcspn (void) { it = "strcspn"; @@ -704,7 +704,7 @@ test_strcspn (void) check(strcspn("abc", "") == 3, 5); /* Null search list. */ } -void +static void test_strtok (void) { it = "strtok"; @@ -754,7 +754,7 @@ test_strtok (void) equal(one+4, "c", 33); } -void +static void test_strtok_r (void) { it = "strtok_r"; @@ -804,7 +804,7 @@ test_strtok_r (void) equal(one+4, "c", 33); } -void +static void test_strsep (void) { char *ptr; @@ -937,7 +937,7 @@ test_strsep (void) check(cp == NULL, 88); } -void +static void test_memcmp (void) { it = "memcmp"; @@ -951,7 +951,7 @@ test_memcmp (void) check(memcmp("abc", "def", 0) == 0, 8); /* Zero count. */ } -void +static void test_memchr (void) { it = "memchr"; @@ -994,7 +994,7 @@ test_memchr (void) } } -void +static void test_memcpy (void) { int i; @@ -1031,7 +1031,7 @@ test_memcpy (void) } } -void +static void test_mempcpy (void) { int i; @@ -1068,7 +1068,7 @@ test_mempcpy (void) } } -void +static void test_memmove (void) { it = "memmove"; @@ -1102,7 +1102,7 @@ test_memmove (void) equal(one, "abcdefgh", 9); /* 100% overlap. */ } -void +static void test_memccpy (void) { /* First test like memcpy, then the search part The SVID, the only @@ -1144,7 +1144,7 @@ test_memccpy (void) equal(two, "xbcdlebee", 15); } -void +static void test_memset (void) { int i; @@ -1166,7 +1166,7 @@ test_memset (void) /* Non-8bit fill character. */ memset (one, 0x101, sizeof (one)); - for (i = 0; i < sizeof (one); ++i) + for (i = 0; i < (int) sizeof (one); ++i) check (one[i] == '\01', 7); /* Test for more complex versions of memset, for all alignments and @@ -1206,7 +1206,7 @@ test_memset (void) } } -void +static void test_bcopy (void) { /* Much like memcpy. Berklix manual is silent about overlap, so @@ -1230,7 +1230,7 @@ test_bcopy (void) equal(one, "hi there", 5); /* Stomped on source? */ } -void +static void test_bzero (void) { it = "bzero"; @@ -1245,7 +1245,7 @@ test_bzero (void) equal(one, "abcdef", 4); /* Zero-length copy. */ } -void +static void test_bcmp (void) { it = "bcmp"; @@ -1258,7 +1258,7 @@ test_bcmp (void) check(bcmp("abc", "def", 0) == 0, 8); /* Zero count. */ } -void +static void test_strerror (void) { int f; @@ -1386,5 +1386,6 @@ main (void) status = EXIT_FAILURE; printf("%Zd errors.\n", errors); } - exit(status); + + return status; } diff -adurpN glibc-2.2/string/tst-bswap.c glibc-2.2.1/string/tst-bswap.c --- glibc-2.2/string/tst-bswap.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/string/tst-bswap.c Tue Dec 26 20:41:15 2000 @@ -0,0 +1,74 @@ +/* Copyright (C) 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper . + + 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. */ + +#include +#include + +extern unsigned long long int wash (unsigned long long int a); + +int +main (void) +{ + int result = 0; + + /* Test the functions with constant arguments. */ + if (bswap_16 (0x1234) != 0x3412) + { + puts ("bswap_16 (constant) flunked"); + result = 1; + } + if (bswap_32 (0x12345678) != 0x78563412) + { + puts ("bswap_32 (constant) flunked"); + result = 1; + } + if (bswap_64 (0x1234567890abcdefULL) != 0xefcdab9078563412ULL) + { + puts ("bswap_64 (constant) flunked"); + result = 1; + } + + /* Test the functions with non-constant arguments. */ + if (bswap_16 (wash (0x1234)) != 0x3412) + { + puts ("bswap_16 (non-constant) flunked"); + result = 1; + } + if (bswap_32 (wash (0x12345678)) != 0x78563412) + { + puts ("bswap_32 (non-constant) flunked"); + result = 1; + } + if (bswap_64 (wash (0x1234567890abcdefULL)) != 0xefcdab9078563412ULL) + { + puts ("bswap_64 (non-constant) flunked"); + result = 1; + } + + return result; +} + + +unsigned long long int +wash (unsigned long long int a) +{ + /* Do nothing. This function simply exists to avoid that the compiler + regards the argument to the bswap_*() functions as constant. */ + return a + 0; +} diff -adurpN glibc-2.2/string/tst-inlcall.c glibc-2.2.1/string/tst-inlcall.c --- glibc-2.2/string/tst-inlcall.c Tue Feb 10 11:58:30 1998 +++ glibc-2.2.1/string/tst-inlcall.c Sat Jan 6 20:35:29 2001 @@ -1,5 +1,5 @@ /* Tester for calling inline string functions. - Copyright (C) 1998 Free Software Foundation, Inc. + Copyright (C) 1998, 2000 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 @@ -40,7 +40,7 @@ main (void) char buf1[1000]; char *cp; char ch; - + cp = strcpy (buf1, "hello world"); if (strcmp ("hello world", cp++) != 0) { @@ -72,5 +72,5 @@ main (void) status = EXIT_FAILURE; printf ("%d errors.\n", errors); } - exit (status); + return status; } diff -adurpN glibc-2.2/string/tst-svc.c glibc-2.2.1/string/tst-svc.c --- glibc-2.2/string/tst-svc.c Tue May 20 18:06:37 1997 +++ glibc-2.2.1/string/tst-svc.c Sat Jan 6 20:35:29 2001 @@ -7,7 +7,7 @@ #define MAX_STRINGS 256 #define MAX_LINE_SIZE 32 -int +static int compare (const void *p1, const void *p2) { return strverscmp (*((char **) p1), *((char **) p2)); @@ -41,5 +41,5 @@ main (int argc, char *argv[]) for (i = 0; i < count; ++i) puts (str[i]); - exit (EXIT_SUCCESS); + return EXIT_SUCCESS; } diff -adurpN glibc-2.2/sunrpc/Makefile glibc-2.2.1/sunrpc/Makefile --- glibc-2.2/sunrpc/Makefile Wed Aug 2 14:52:40 2000 +++ glibc-2.2.1/sunrpc/Makefile Wed Jan 10 19:08:22 2001 @@ -1,4 +1,4 @@ -# Copyright (C) 1994, 95, 96, 97, 98, 99 Free Software Foundation, Inc. +# Copyright (C) 1994,95,96,97,98,99,2000,2001 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 @@ -76,7 +76,8 @@ rpcgen-objs = rpc_main.o rpc_hout.o rpc_ rpc_tblout.o rpc_sample.o # These headers are part of rpcgen. distribute := proto.h rpc_util.h rpc_parse.h rpc_scan.h \ - $(rpcgen-objs:.o=.c) etc.rpc + $(rpcgen-objs:.o=.c) etc.rpc \ + errqueue.h extra-objs = $(rpcgen-objs) all: # Make this the default target; it will be defined in Rules. @@ -125,7 +126,7 @@ $(objpfx)rpcgen: $(addprefix $(objpfx),$ # Tell rpcgen where to find the C preprocessor. rpcgen-cmd = $(built-program-cmd) -Y `$(CC) -print-file-name=cpp | \ - sed "s|/cpp$$||"` + sed 's|/cpp$$||'` # Install the rpc data base file. $(inst_sysconfdir)/rpc: etc.rpc $(+force) diff -adurpN glibc-2.2/sunrpc/Versions glibc-2.2.1/sunrpc/Versions --- glibc-2.2/sunrpc/Versions Wed Aug 2 14:52:40 2000 +++ glibc-2.2.1/sunrpc/Versions Thu Nov 16 11:12:04 2000 @@ -98,9 +98,8 @@ libc { # x* xdecrypt; xdr_authdes_cred; xdr_authdes_verf; - xdr_cryptkeyarg; xdr_cryptkeyarg2; xdr_cryptkeyres; xdr_des_block; - xdr_getcredres; xdr_int16_t; xdr_int32_t; xdr_int8_t; xdr_key_netstarg; - xdr_key_netstres; xdr_keybuf; xdr_keystatus; xdr_netnamestr; xdr_sizeof; + xdr_getcredres; xdr_int16_t; xdr_int32_t; xdr_int8_t; + xdr_netnamestr; xdr_sizeof; xdr_uint16_t; xdr_uint32_t; xdr_uint8_t; xdr_unixcred; } GLIBC_2.1.1 { diff -adurpN glibc-2.2/sunrpc/clnt_udp.c glibc-2.2.1/sunrpc/clnt_udp.c --- glibc-2.2/sunrpc/clnt_udp.c Tue Aug 3 12:32:17 1999 +++ glibc-2.2.1/sunrpc/clnt_udp.c Wed Jan 10 15:54:40 2001 @@ -51,6 +51,11 @@ static char sccsid[] = "@(#)clnt_udp.c 1 #include #include +#ifdef IP_RECVERR +#include +#include +#endif + extern bool_t xdr_opaque_auth (XDR *, struct opaque_auth *); extern u_long _create_xid (void); @@ -186,6 +191,12 @@ clntudp_bufcreate (struct sockaddr_in *r (void) bindresvport (*sockp, (struct sockaddr_in *) 0); /* the sockets rpc controls are non-blocking */ (void) __ioctl (*sockp, FIONBIO, (char *) &dontblock); +#ifdef IP_RECVERR + { + int on = 1; + setsockopt(*sockp, SOL_IP, IP_RECVERR, &on, sizeof(on)); + } +#endif cu->cu_closeit = TRUE; } else @@ -361,6 +372,47 @@ send_again: cu->cu_error.re_errno = errno; return (cu->cu_error.re_status = RPC_CANTRECV); } +#ifdef IP_RECVERR + if (fd.revents & POLLERR) + { + struct msghdr msg; + struct cmsghdr *cmsg; + struct sock_extended_err *e; + struct sockaddr_in err_addr; + struct iovec iov; + char *cbuf = (char *) alloca (outlen + 256); + int ret; + + iov.iov_base = cbuf + 256; + iov.iov_len = outlen; + msg.msg_name = (void *) &err_addr; + msg.msg_namelen = sizeof (err_addr); + msg.msg_iov = &iov; + msg.msg_iovlen = 1; + msg.msg_flags = 0; + msg.msg_control = cbuf; + msg.msg_controllen = 256; + ret = recvmsg (cu->cu_sock, &msg, MSG_ERRQUEUE); + if (ret >= 0 + && memcmp (cbuf + 256, cu->cu_outbuf, ret) == 0 + && (msg.msg_flags & MSG_ERRQUEUE) + && ((msg.msg_namelen == 0 + && ret >= 12) + || (msg.msg_namelen == sizeof (err_addr) + && err_addr.sin_family == AF_INET + && memcmp (&err_addr.sin_addr, &cu->cu_raddr.sin_addr, + sizeof (err_addr.sin_addr)) == 0 + && err_addr.sin_port == cu->cu_raddr.sin_port))) + for (cmsg = CMSG_FIRSTHDR (&msg); cmsg; + cmsg = CMSG_NXTHDR (&msg, cmsg)) + if (cmsg->cmsg_level == SOL_IP && cmsg->cmsg_type == IP_RECVERR) + { + e = (struct sock_extended_err *) CMSG_DATA(cmsg); + cu->cu_error.re_errno = e->ee_errno; + return (cu->cu_error.re_status = RPC_CANTRECV); + } + } +#endif do { fromlen = sizeof (struct sockaddr); diff -adurpN glibc-2.2/sunrpc/create_xid.c glibc-2.2.1/sunrpc/create_xid.c --- glibc-2.2/sunrpc/create_xid.c Thu Aug 31 14:45:17 2000 +++ glibc-2.2.1/sunrpc/create_xid.c Sat Jan 6 20:35:29 2001 @@ -21,6 +21,7 @@ #include #include #include +#include /* The RPC code is not threadsafe, but new code should be threadsafe. */ diff -adurpN glibc-2.2/sunrpc/des_soft.c glibc-2.2.1/sunrpc/des_soft.c --- glibc-2.2/sunrpc/des_soft.c Thu Apr 29 10:01:13 1999 +++ glibc-2.2.1/sunrpc/des_soft.c Sat Jan 6 20:35:29 2001 @@ -29,6 +29,8 @@ static char sccsid[] = "@(#)des_soft.c 2 * 2550 Garcia Avenue * Mountain View, California 94043 */ + +#include /* * Table giving odd parity in the low bit for ASCII characters */ diff -adurpN glibc-2.2/sunrpc/pmap_clnt.c glibc-2.2.1/sunrpc/pmap_clnt.c --- glibc-2.2/sunrpc/pmap_clnt.c Sat Jun 19 09:40:29 1999 +++ glibc-2.2.1/sunrpc/pmap_clnt.c Sat Jan 6 20:35:29 2001 @@ -51,7 +51,7 @@ * interface. portmap caches interfaces, and on DHCP clients, * it could be that only loopback is started at this time. */ -static void +static bool_t __get_myaddress (struct sockaddr_in *addr) { int s; @@ -89,7 +89,7 @@ __get_myaddress (struct sockaddr_in *add *addr = *((struct sockaddr_in *) &ifr->ifr_addr); addr->sin_port = htons (PMAPPORT); __close (s); - return; + return TRUE; } ifr++; } @@ -99,6 +99,7 @@ __get_myaddress (struct sockaddr_in *add goto again; } __close (s); + return FALSE; } @@ -118,7 +119,8 @@ pmap_set (u_long program, u_long version struct pmap parms; bool_t rslt; - __get_myaddress (&myaddress); + if (!__get_myaddress (&myaddress)) + return FALSE; client = clntudp_bufcreate (&myaddress, PMAPPROG, PMAPVERS, timeout, &socket, RPCSMALLMSGSIZE, RPCSMALLMSGSIZE); if (client == (CLIENT *) NULL) @@ -152,7 +154,8 @@ pmap_unset (u_long program, u_long versi struct pmap parms; bool_t rslt; - __get_myaddress (&myaddress); + if (!__get_myaddress (&myaddress)) + return FALSE; client = clntudp_bufcreate (&myaddress, PMAPPROG, PMAPVERS, timeout, &socket, RPCSMALLMSGSIZE, RPCSMALLMSGSIZE); if (client == (CLIENT *) NULL) diff -adurpN glibc-2.2/sunrpc/proto.h glibc-2.2.1/sunrpc/proto.h --- glibc-2.2/sunrpc/proto.h Mon Feb 16 09:41:26 1998 +++ glibc-2.2.1/sunrpc/proto.h Sat Jan 6 20:35:29 2001 @@ -45,8 +45,8 @@ void write_tables(void); /****** rpc_util.c ******/ void reinitialize(void); int streq(const char *a, const char *b); -void error(const char *msg); -void crash(void); +void error(const char *msg) __attribute__ ((noreturn)); +void crash(void) __attribute__ ((noreturn)); void tabify(FILE *f, int tab); char *make_argname(const char *pname, const char *vname); void add_type(int len, const char *type); diff -adurpN glibc-2.2/sunrpc/publickey.c glibc-2.2.1/sunrpc/publickey.c --- glibc-2.2/sunrpc/publickey.c Thu Apr 29 10:01:20 1999 +++ glibc-2.2.1/sunrpc/publickey.c Sat Jan 6 20:35:29 2001 @@ -20,6 +20,7 @@ #include #include +#include #include "nsswitch.h" diff -adurpN glibc-2.2/sunrpc/rpc_cout.c glibc-2.2.1/sunrpc/rpc_cout.c --- glibc-2.2/sunrpc/rpc_cout.c Fri Jun 30 23:06:50 2000 +++ glibc-2.2.1/sunrpc/rpc_cout.c Sat Jan 6 20:35:29 2001 @@ -32,7 +32,7 @@ * From: @(#)rpc_cout.c 1.13 89/02/22 (C) 1987 SMI */ char cout_rcsid[] = -"$Id: rpc_cout.c,v 1.11 2000/07/01 04:33:07 drepper Exp $"; +"$Id: rpc_cout.c,v 1.12 2000/12/28 10:22:08 aj Exp $"; /* * rpc_cout.c, XDR routine outputter for the RPC protocol compiler @@ -739,6 +739,7 @@ emit_inline (int indent, declaration * d f_print (fout, "}\n"); break; default: + break; /* ?... do nothing I guess */ } } diff -adurpN glibc-2.2/sunrpc/rpc_dtable.c glibc-2.2.1/sunrpc/rpc_dtable.c --- glibc-2.2/sunrpc/rpc_dtable.c Wed Jul 15 17:41:20 1998 +++ glibc-2.2.1/sunrpc/rpc_dtable.c Sat Jan 6 20:35:29 2001 @@ -32,6 +32,7 @@ static char sccsid[] = "@(#)rpc_dtablesi #endif #include +#include /* * Cache the result of getdtablesize(), so we don't have to do an diff -adurpN glibc-2.2/sunrpc/rpc_hout.c glibc-2.2.1/sunrpc/rpc_hout.c --- glibc-2.2/sunrpc/rpc_hout.c Tue Dec 1 03:23:36 1998 +++ glibc-2.2.1/sunrpc/rpc_hout.c Sat Jan 6 20:35:29 2001 @@ -32,7 +32,7 @@ * From: @(#)rpc_hout.c 1.12 89/02/22 (C) 1987 SMI */ char hout_rcsid[] = - "$Id: rpc_hout.c,v 1.4 1998/12/01 11:23:36 drepper Exp $"; + "$Id: rpc_hout.c,v 1.6 2000/12/31 15:43:33 aj Exp $"; /* * rpc_hout.c, Header file outputter for the RPC protocol compiler @@ -58,7 +58,7 @@ static int undefined2 (const char *type, /* store away enough information to allow the XDR functions to be spat out at the end of the file */ -void +static void storexdrfuncdecl (const char *name, int pointerp) { xdrfunc * xdrptr; @@ -136,6 +136,7 @@ print_funcdef (definition *def) pprogramdef (def); break; default: + break; /* ?... shouldn't happen I guess */ } } diff -adurpN glibc-2.2/sunrpc/rpc_main.c glibc-2.2.1/sunrpc/rpc_main.c --- glibc-2.2/sunrpc/rpc_main.c Wed Aug 2 14:52:40 2000 +++ glibc-2.2.1/sunrpc/rpc_main.c Sat Jan 6 20:35:29 2001 @@ -32,7 +32,7 @@ * From @(#)rpc_main.c 1.30 89/03/30 (C) 1987 SMI; */ const char main_rcsid[] = - "$Id: rpc_main.c,v 1.19 2000/08/02 06:59:04 drepper Exp $"; + "$Id: rpc_main.c,v 1.20 2000/12/31 15:43:51 aj Exp $"; /* * rpc_main.c, Top level of the RPC protocol compiler. @@ -134,8 +134,8 @@ static void addarg (const char *cp); static void putarg (int whereto, const char *cp); static void checkfiles (const char *infile, const char *outfile); static int parseargs (int argc, const char *argv[], struct commandline *cmd); -static void usage (void); -static void options_usage (void); +static void usage (void) __attribute__ ((noreturn)); +static void options_usage (void) __attribute__ ((noreturn)); static void c_initialize (void); static char *generate_guard (const char *pathname); @@ -180,6 +180,7 @@ xdrfunc *xdrfunc_head = NULL; /* xdr fun xdrfunc *xdrfunc_tail = NULL; /* xdr function list */ int +__attribute__ ((noreturn)) main (int argc, const char *argv[]) { struct commandline cmd; diff -adurpN glibc-2.2/sunrpc/rpc_scan.h glibc-2.2.1/sunrpc/rpc_scan.h --- glibc-2.2/sunrpc/rpc_scan.h Wed Oct 16 18:50:50 1996 +++ glibc-2.2.1/sunrpc/rpc_scan.h Sat Jan 6 20:35:29 2001 @@ -99,7 +99,8 @@ void scan_num(token *tokp); void peek(token *tokp); int peekscan(tok_kind expect, token *tokp); void get_token(token *tokp); -void expected1(tok_kind exp1); -void expected2(tok_kind exp1, tok_kind exp2); -void expected3(tok_kind exp1, tok_kind exp2, tok_kind exp3); +void expected1(tok_kind exp1) __attribute__ ((noreturn)); +void expected2(tok_kind exp1, tok_kind exp2) __attribute__ ((noreturn)); +void expected3(tok_kind exp1, tok_kind exp2, tok_kind exp3) + __attribute__ ((noreturn)); diff -adurpN glibc-2.2/sunrpc/rpcinfo.c glibc-2.2.1/sunrpc/rpcinfo.c --- glibc-2.2/sunrpc/rpcinfo.c Sun Dec 14 13:51:57 1997 +++ glibc-2.2.1/sunrpc/rpcinfo.c Sat Jan 6 20:35:29 2001 @@ -68,7 +68,7 @@ static void tcpping (u_short portflag, i static int pstatus (CLIENT *client, u_long prognum, u_long vers); static void pmapdump (int argc, char **argv); static bool_t reply_proc (void *res, struct sockaddr_in *who); -static void brdcst (int argc, char **argv); +static void brdcst (int argc, char **argv) __attribute__ ((noreturn)); static void deletereg (int argc, char **argv); static void usage (void); static u_long getprognum (char *arg); diff -adurpN glibc-2.2/sunrpc/svc_unix.c glibc-2.2.1/sunrpc/svc_unix.c --- glibc-2.2/sunrpc/svc_unix.c Fri Feb 11 15:48:58 2000 +++ glibc-2.2.1/sunrpc/svc_unix.c Sat Jan 6 20:35:29 2001 @@ -41,6 +41,7 @@ #include #include #include +#include #include #include #include diff -adurpN glibc-2.2/sysdeps/alpha/Dist glibc-2.2.1/sysdeps/alpha/Dist --- glibc-2.2/sysdeps/alpha/Dist Thu Aug 31 14:45:17 2000 +++ glibc-2.2.1/sysdeps/alpha/Dist Sat Jan 6 23:38:09 2001 @@ -7,3 +7,5 @@ _mcount.S stxcpy.S stxncpy.S fpu/fenv_libc.h +alphaev6/stxncpy.S +alphaev6/stxcpy.S diff -adurpN glibc-2.2/sysdeps/alpha/_mcount.S glibc-2.2.1/sysdeps/alpha/_mcount.S --- glibc-2.2/sysdeps/alpha/_mcount.S Thu Jun 26 15:15:35 1997 +++ glibc-2.2.1/sysdeps/alpha/_mcount.S Sat Jan 6 20:35:30 2001 @@ -27,7 +27,7 @@ compiler treats those calls as if they were instructions. In particular, it doesn't save any of the temporary registers (caller saved registers). It is therefore necessary to preserve all - caller-saved registers as well + caller-saved registers as well. Upon entering _mcount, register $at holds the return address and ra holds the return address of the function's caller (selfpc and frompc, diff -adurpN glibc-2.2/sysdeps/alpha/alphaev6/Implies glibc-2.2.1/sysdeps/alpha/alphaev6/Implies --- glibc-2.2/sysdeps/alpha/alphaev6/Implies Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/alpha/alphaev6/Implies Fri Dec 8 09:17:08 2000 @@ -0,0 +1 @@ +alpha/alphaev5 diff -adurpN glibc-2.2/sysdeps/alpha/alphaev6/addmul_1.s glibc-2.2.1/sysdeps/alpha/alphaev6/addmul_1.s --- glibc-2.2/sysdeps/alpha/alphaev6/addmul_1.s Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/alpha/alphaev6/addmul_1.s Fri Dec 8 09:18:04 2000 @@ -0,0 +1,479 @@ + # Alpha ev6 mpn_addmul_1 -- Multiply a limb vector with a limb and add + # the result to a second limb vector. + # + # Copyright (C) 2000 Free Software Foundation, Inc. + # + # This file is part of the GNU MP Library. + # + # The GNU MP Library is free software; you can redistribute it and/or modify + # it under the terms of the GNU Lesser General Public License as published + # by the Free Software Foundation; either version 2.1 of the License, or (at + # your option) any later version. + # + # The GNU MP 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 Lesser General Public + # License for more details. + # + # You should have received a copy of the GNU Lesser General Public License + # along with the GNU MP 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. + + # INPUT PARAMETERS + # res_ptr $16 + # s1_ptr $17 + # size $18 + # s2_limb $19 + # + # This code runs at 42 cycles/limb on EV4, 18 cycles/limb on EV5, and + # exactly 3.625 cycles/limb on EV6... + # + # This code was written in close cooperation with ev6 pipeline expert + # Steve Root (root@toober.hlo.dec.com). Any errors are tege's fault, though. + # + # Register usages for unrolled loop: + # 0-3 mul's + # 4-7 acc's + # 8-15 mul results + # 20,21 carry's + # 22,23 save for stores + # + # Sustains 8 mul-adds in 29 cycles in the unrolled inner loop. + # + # The stores can issue a cycle late so we have paired no-op's to 'catch' + # them, so that further disturbance to the schedule is damped. + # + # We couldn't pair the loads, because the entangled schedule of the + # carry's has to happen on one side {0} of the machine. Note, the total + # use of U0, and the total use of L0 (after attending to the stores). + # which is part of the reason why.... + # + # This is a great schedule for the d_cache, a poor schedule for the + # b_cache. The lockup on U0 means that any stall can't be recovered + # from. Consider a ldq in L1. say that load gets stalled because it + # collides with a fill from the b_Cache. On the next cycle, this load + # gets priority. If first looks at L0, and goes there. The instruction + # we intended for L0 gets to look at L1, which is NOT where we want + # it. It either stalls 1, because it can't go in L0, or goes there, and + # causes a further instruction to stall. + # + # So for b_cache, we're likely going to want to put one or more cycles + # back into the code! And, of course, put in prefetches. For the + # accumulator, lds, intent to modify. For the multiplier, you might + # want ldq, evict next, if you're not wanting to use it again soon. Use + # 256 ahead of present pointer value. At a place where we have an mt + # followed by a bookkeeping, put the bookkeeping in upper, and the + # prefetch into lower. + # + # Note, the usage of physical registers per cycle is smoothed off, as + # much as possible. + # + # Note, the ldq's and stq's are at the end of the quadpacks. note, we'd + # like not to have a ldq or stq to preceded a conditional branch in a + # quadpack. The conditional branch moves the retire pointer one cycle + # later. + # + # Optimization notes: + # Callee-saves regs: $9 $10 $11 $12 $13 $14 $15 $26 ?$27? + # Reserved regs: $29 $30 $31 + # Free caller-saves regs in unrolled code: $24 $25 $28 + # We should swap some of the callee-saves regs for some of the free + # caller-saves regs, saving some overhead cycles. + # Most importantly, we should write fast code for the 0-7 case. + # The code we use there are for the 21164, and runs at 7 cycles/limb + # on the 21264. Should not be hard, if we write specialized code for + # 1-7 limbs (the one for 0 limbs should be straightforward). We then just + # need a jump table indexed by the low 3 bits of the count argument. + + .set noreorder + .set noat + .text + + .globl __mpn_addmul_1 + .ent __mpn_addmul_1 +__mpn_addmul_1: + .frame $30,0,$26,0 + .prologue 0 + + cmpult $18, 8, $1 + beq $1, $Large + + ldq $2, 0($17) # $2 = s1_limb + addq $17, 8, $17 # s1_ptr++ + subq $18, 1, $18 # size-- + mulq $2, $19, $3 # $3 = prod_low + ldq $5, 0($16) # $5 = *res_ptr + umulh $2, $19, $0 # $0 = prod_high + beq $18, $Lend0b # jump if size was == 1 + ldq $2, 0($17) # $2 = s1_limb + addq $17, 8, $17 # s1_ptr++ + subq $18, 1, $18 # size-- + addq $5, $3, $3 + cmpult $3, $5, $4 + stq $3, 0($16) + addq $16, 8, $16 # res_ptr++ + beq $18, $Lend0a # jump if size was == 2 + + .align 3 +$Loop0: mulq $2, $19, $3 # $3 = prod_low + ldq $5, 0($16) # $5 = *res_ptr + addq $4, $0, $0 # cy_limb = cy_limb + 'cy' + subq $18, 1, $18 # size-- + umulh $2, $19, $4 # $4 = cy_limb + ldq $2, 0($17) # $2 = s1_limb + addq $17, 8, $17 # s1_ptr++ + addq $3, $0, $3 # $3 = cy_limb + prod_low + cmpult $3, $0, $0 # $0 = carry from (cy_limb + prod_low) + addq $5, $3, $3 + cmpult $3, $5, $5 + stq $3, 0($16) + addq $16, 8, $16 # res_ptr++ + addq $5, $0, $0 # combine carries + bne $18, $Loop0 +$Lend0a: + mulq $2, $19, $3 # $3 = prod_low + ldq $5, 0($16) # $5 = *res_ptr + addq $4, $0, $0 # cy_limb = cy_limb + 'cy' + umulh $2, $19, $4 # $4 = cy_limb + addq $3, $0, $3 # $3 = cy_limb + prod_low + cmpult $3, $0, $0 # $0 = carry from (cy_limb + prod_low) + addq $5, $3, $3 + cmpult $3, $5, $5 + stq $3, 0($16) + addq $5, $0, $0 # combine carries + addq $4, $0, $0 # cy_limb = prod_high + cy + ret $31, ($26), 1 +$Lend0b: + addq $5, $3, $3 + cmpult $3, $5, $5 + stq $3, 0($16) + addq $0, $5, $0 + ret $31, ($26), 1 + +$Large: + lda $30, -240($30) + stq $9, 8($30) + stq $10, 16($30) + stq $11, 24($30) + stq $12, 32($30) + stq $13, 40($30) + stq $14, 48($30) + stq $15, 56($30) + + and $18, 7, $20 # count for the first loop, 0-7 + srl $18, 3, $18 # count for unrolled loop + bis $31, $31, $0 + beq $20, $Lunroll + ldq $2, 0($17) # $2 = s1_limb + addq $17, 8, $17 # s1_ptr++ + subq $20, 1, $20 # size-- + mulq $2, $19, $3 # $3 = prod_low + ldq $5, 0($16) # $5 = *res_ptr + umulh $2, $19, $0 # $0 = prod_high + beq $20, $Lend1b # jump if size was == 1 + ldq $2, 0($17) # $2 = s1_limb + addq $17, 8, $17 # s1_ptr++ + subq $20, 1, $20 # size-- + addq $5, $3, $3 + cmpult $3, $5, $4 + stq $3, 0($16) + addq $16, 8, $16 # res_ptr++ + beq $20, $Lend1a # jump if size was == 2 + + .align 3 +$Loop1: mulq $2, $19, $3 # $3 = prod_low + ldq $5, 0($16) # $5 = *res_ptr + addq $4, $0, $0 # cy_limb = cy_limb + 'cy' + subq $20, 1, $20 # size-- + umulh $2, $19, $4 # $4 = cy_limb + ldq $2, 0($17) # $2 = s1_limb + addq $17, 8, $17 # s1_ptr++ + addq $3, $0, $3 # $3 = cy_limb + prod_low + cmpult $3, $0, $0 # $0 = carry from (cy_limb + prod_low) + addq $5, $3, $3 + cmpult $3, $5, $5 + stq $3, 0($16) + addq $16, 8, $16 # res_ptr++ + addq $5, $0, $0 # combine carries + bne $20, $Loop1 + +$Lend1a: + mulq $2, $19, $3 # $3 = prod_low + ldq $5, 0($16) # $5 = *res_ptr + addq $4, $0, $0 # cy_limb = cy_limb + 'cy' + umulh $2, $19, $4 # $4 = cy_limb + addq $3, $0, $3 # $3 = cy_limb + prod_low + cmpult $3, $0, $0 # $0 = carry from (cy_limb + prod_low) + addq $5, $3, $3 + cmpult $3, $5, $5 + stq $3, 0($16) + addq $16, 8, $16 # res_ptr++ + addq $5, $0, $0 # combine carries + addq $4, $0, $0 # cy_limb = prod_high + cy + br $31, $Lunroll +$Lend1b: + addq $5, $3, $3 + cmpult $3, $5, $5 + stq $3, 0($16) + addq $16, 8, $16 # res_ptr++ + addq $0, $5, $0 + +$Lunroll: + lda $17, -16($17) # L1 bookkeeping + lda $16, -16($16) # L1 bookkeeping + bis $0, $31, $12 + + # ____ UNROLLED LOOP SOFTWARE PIPELINE STARTUP ____ + + ldq $2, 16($17) # L1 + ldq $3, 24($17) # L1 + lda $18, -1($18) # L1 bookkeeping + ldq $6, 16($16) # L1 + ldq $7, 24($16) # L1 + ldq $0, 32($17) # L1 + mulq $19, $2, $13 # U1 + ldq $1, 40($17) # L1 + umulh $19, $2, $14 # U1 + mulq $19, $3, $15 # U1 + lda $17, 64($17) # L1 bookkeeping + ldq $4, 32($16) # L1 + ldq $5, 40($16) # L1 + umulh $19, $3, $8 # U1 + ldq $2, -16($17) # L1 + mulq $19, $0, $9 # U1 + ldq $3, -8($17) # L1 + umulh $19, $0, $10 # U1 + addq $6, $13, $6 # L0 lo + acc + mulq $19, $1, $11 # U1 + cmpult $6, $13, $20 # L0 lo add => carry + lda $16, 64($16) # L1 bookkeeping + addq $6, $12, $22 # U0 hi add => answer + cmpult $22, $12, $21 # L0 hi add => carry + addq $14, $20, $14 # U0 hi mul + carry + ldq $6, -16($16) # L1 + addq $7, $15, $23 # L0 lo + acc + addq $14, $21, $14 # U0 hi mul + carry + ldq $7, -8($16) # L1 + umulh $19, $1, $12 # U1 + cmpult $23, $15, $20 # L0 lo add => carry + addq $23, $14, $23 # U0 hi add => answer + ldq $0, 0($17) # L1 + mulq $19, $2, $13 # U1 + cmpult $23, $14, $21 # L0 hi add => carry + addq $8, $20, $8 # U0 hi mul + carry + ldq $1, 8($17) # L1 + umulh $19, $2, $14 # U1 + addq $4, $9, $4 # L0 lo + acc + stq $22, -48($16) # L0 + stq $23, -40($16) # L1 + mulq $19, $3, $15 # U1 + addq $8, $21, $8 # U0 hi mul + carry + cmpult $4, $9, $20 # L0 lo add => carry + addq $4, $8, $22 # U0 hi add => answer + ble $18, $Lend # U1 bookkeeping + + # ____ MAIN UNROLLED LOOP ____ + .align 4 +$Loop: + bis $31, $31, $31 # U1 mt + cmpult $22, $8, $21 # L0 hi add => carry + addq $10, $20, $10 # U0 hi mul + carry + ldq $4, 0($16) # L1 + + bis $31, $31, $31 # U1 mt + addq $5, $11, $23 # L0 lo + acc + addq $10, $21, $10 # L0 hi mul + carry + ldq $5, 8($16) # L1 + + umulh $19, $3, $8 # U1 + cmpult $23, $11, $20 # L0 lo add => carry + addq $23, $10, $23 # U0 hi add => answer + ldq $2, 16($17) # L1 + + mulq $19, $0, $9 # U1 + cmpult $23, $10, $21 # L0 hi add => carry + addq $12, $20, $12 # U0 hi mul + carry + ldq $3, 24($17) # L1 + + umulh $19, $0, $10 # U1 + addq $6, $13, $6 # L0 lo + acc + stq $22, -32($16) # L0 + stq $23, -24($16) # L1 + + bis $31, $31, $31 # L0 st slosh + mulq $19, $1, $11 # U1 + bis $31, $31, $31 # L1 st slosh + addq $12, $21, $12 # U0 hi mul + carry + + cmpult $6, $13, $20 # L0 lo add => carry + bis $31, $31, $31 # U1 mt + lda $18, -1($18) # L1 bookkeeping + addq $6, $12, $22 # U0 hi add => answer + + bis $31, $31, $31 # U1 mt + cmpult $22, $12, $21 # L0 hi add => carry + addq $14, $20, $14 # U0 hi mul + carry + ldq $6, 16($16) # L1 + + bis $31, $31, $31 # U1 mt + addq $7, $15, $23 # L0 lo + acc + addq $14, $21, $14 # U0 hi mul + carry + ldq $7, 24($16) # L1 + + umulh $19, $1, $12 # U1 + cmpult $23, $15, $20 # L0 lo add => carry + addq $23, $14, $23 # U0 hi add => answer + ldq $0, 32($17) # L1 + + mulq $19, $2, $13 # U1 + cmpult $23, $14, $21 # L0 hi add => carry + addq $8, $20, $8 # U0 hi mul + carry + ldq $1, 40($17) # L1 + + umulh $19, $2, $14 # U1 + addq $4, $9, $4 # U0 lo + acc + stq $22, -16($16) # L0 + stq $23, -8($16) # L1 + + bis $31, $31, $31 # L0 st slosh + mulq $19, $3, $15 # U1 + bis $31, $31, $31 # L1 st slosh + addq $8, $21, $8 # L0 hi mul + carry + + cmpult $4, $9, $20 # L0 lo add => carry + bis $31, $31, $31 # U1 mt + lda $17, 64($17) # L1 bookkeeping + addq $4, $8, $22 # U0 hi add => answer + + bis $31, $31, $31 # U1 mt + cmpult $22, $8, $21 # L0 hi add => carry + addq $10, $20, $10 # U0 hi mul + carry + ldq $4, 32($16) # L1 + + bis $31, $31, $31 # U1 mt + addq $5, $11, $23 # L0 lo + acc + addq $10, $21, $10 # L0 hi mul + carry + ldq $5, 40($16) # L1 + + umulh $19, $3, $8 # U1 + cmpult $23, $11, $20 # L0 lo add => carry + addq $23, $10, $23 # U0 hi add => answer + ldq $2, -16($17) # L1 + + mulq $19, $0, $9 # U1 + cmpult $23, $10, $21 # L0 hi add => carry + addq $12, $20, $12 # U0 hi mul + carry + ldq $3, -8($17) # L1 + + umulh $19, $0, $10 # U1 + addq $6, $13, $6 # L0 lo + acc + stq $22, 0($16) # L0 + stq $23, 8($16) # L1 + + bis $31, $31, $31 # L0 st slosh + mulq $19, $1, $11 # U1 + bis $31, $31, $31 # L1 st slosh + addq $12, $21, $12 # U0 hi mul + carry + + cmpult $6, $13, $20 # L0 lo add => carry + bis $31, $31, $31 # U1 mt + lda $16, 64($16) # L1 bookkeeping + addq $6, $12, $22 # U0 hi add => answer + + bis $31, $31, $31 # U1 mt + cmpult $22, $12, $21 # L0 hi add => carry + addq $14, $20, $14 # U0 hi mul + carry + ldq $6, -16($16) # L1 + + bis $31, $31, $31 # U1 mt + addq $7, $15, $23 # L0 lo + acc + addq $14, $21, $14 # U0 hi mul + carry + ldq $7, -8($16) # L1 + + umulh $19, $1, $12 # U1 + cmpult $23, $15, $20 # L0 lo add => carry + addq $23, $14, $23 # U0 hi add => answer + ldq $0, 0($17) # L1 + + mulq $19, $2, $13 # U1 + cmpult $23, $14, $21 # L0 hi add => carry + addq $8, $20, $8 # U0 hi mul + carry + ldq $1, 8($17) # L1 + + umulh $19, $2, $14 # U1 + addq $4, $9, $4 # L0 lo + acc + stq $22, -48($16) # L0 + stq $23, -40($16) # L1 + + bis $31, $31, $31 # L0 st slosh + mulq $19, $3, $15 # U1 + bis $31, $31, $31 # L1 st slosh + addq $8, $21, $8 # U0 hi mul + carry + + cmpult $4, $9, $20 # L0 lo add => carry + addq $4, $8, $22 # U0 hi add => answer + bis $31, $31, $31 # L1 mt + bgt $18, $Loop # U1 bookkeeping + +# ____ UNROLLED LOOP SOFTWARE PIPELINE FINISH ____ +$Lend: + cmpult $22, $8, $21 # L0 hi add => carry + addq $10, $20, $10 # U0 hi mul + carry + ldq $4, 0($16) # L1 + addq $5, $11, $23 # L0 lo + acc + addq $10, $21, $10 # L0 hi mul + carry + ldq $5, 8($16) # L1 + umulh $19, $3, $8 # U1 + cmpult $23, $11, $20 # L0 lo add => carry + addq $23, $10, $23 # U0 hi add => answer + mulq $19, $0, $9 # U1 + cmpult $23, $10, $21 # L0 hi add => carry + addq $12, $20, $12 # U0 hi mul + carry + umulh $19, $0, $10 # U1 + addq $6, $13, $6 # L0 lo + acc + stq $22, -32($16) # L0 + stq $23, -24($16) # L1 + mulq $19, $1, $11 # U1 + addq $12, $21, $12 # U0 hi mul + carry + cmpult $6, $13, $20 # L0 lo add => carry + addq $6, $12, $22 # U0 hi add => answer + cmpult $22, $12, $21 # L0 hi add => carry + addq $14, $20, $14 # U0 hi mul + carry + addq $7, $15, $23 # L0 lo + acc + addq $14, $21, $14 # U0 hi mul + carry + umulh $19, $1, $12 # U1 + cmpult $23, $15, $20 # L0 lo add => carry + addq $23, $14, $23 # U0 hi add => answer + cmpult $23, $14, $21 # L0 hi add => carry + addq $8, $20, $8 # U0 hi mul + carry + addq $4, $9, $4 # U0 lo + acc + stq $22, -16($16) # L0 + stq $23, -8($16) # L1 + bis $31, $31, $31 # L0 st slosh + addq $8, $21, $8 # L0 hi mul + carry + cmpult $4, $9, $20 # L0 lo add => carry + addq $4, $8, $22 # U0 hi add => answer + cmpult $22, $8, $21 # L0 hi add => carry + addq $10, $20, $10 # U0 hi mul + carry + addq $5, $11, $23 # L0 lo + acc + addq $10, $21, $10 # L0 hi mul + carry + cmpult $23, $11, $20 # L0 lo add => carry + addq $23, $10, $23 # U0 hi add => answer + cmpult $23, $10, $21 # L0 hi add => carry + addq $12, $20, $12 # U0 hi mul + carry + stq $22, 0($16) # L0 + stq $23, 8($16) # L1 + addq $12, $21, $0 # U0 hi mul + carry + + ldq $9, 8($30) + ldq $10, 16($30) + ldq $11, 24($30) + ldq $12, 32($30) + ldq $13, 40($30) + ldq $14, 48($30) + ldq $15, 56($30) + lda $30, 240($30) + ret $31, ($26), 1 + + .end __mpn_addmul_1 diff -adurpN glibc-2.2/sysdeps/alpha/alphaev6/fpu/e_sqrt.S glibc-2.2.1/sysdeps/alpha/alphaev6/fpu/e_sqrt.S --- glibc-2.2/sysdeps/alpha/alphaev6/fpu/e_sqrt.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/alpha/alphaev6/fpu/e_sqrt.S Sun Dec 10 20:36:20 2000 @@ -0,0 +1,46 @@ +/* Copyright (C) 2000 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. */ + +#include + + .arch ev6 + .set noreorder + .set noat + +ENTRY(__ieee754_sqrt) +#ifdef PROF + ldgp gp, 0(pv) + lda AT, _mcount + jsr AT, (AT), _mcount + .prologue 1 +#else + .prologue 0 +#endif + + .align 4 +#ifdef _IEEE_FP_INEXACT + sqrtt/sui $f16, $f0 +#else + sqrtt/su $f16, $f0 +#endif + ret + nop + nop + +END(__ieee754_sqrt) diff -adurpN glibc-2.2/sysdeps/alpha/alphaev6/fpu/e_sqrtf.S glibc-2.2.1/sysdeps/alpha/alphaev6/fpu/e_sqrtf.S --- glibc-2.2/sysdeps/alpha/alphaev6/fpu/e_sqrtf.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/alpha/alphaev6/fpu/e_sqrtf.S Sun Dec 10 20:36:35 2000 @@ -0,0 +1,46 @@ +/* Copyright (C) 2000 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. */ + +#include + + .arch ev6 + .set noreorder + .set noat + +ENTRY(__ieee754_sqrtf) +#ifdef PROF + ldgp gp, 0(pv) + lda AT, _mcount + jsr AT, (AT), _mcount + .prologue 1 +#else + .prologue 0 +#endif + + .align 4 +#ifdef _IEEE_FP_INEXACT + sqrts/sui $f16, $f0 +#else + sqrts/su $f16, $f0 +#endif + ret + nop + nop + +END(__ieee754_sqrtf) diff -adurpN glibc-2.2/sysdeps/alpha/alphaev6/memchr.S glibc-2.2.1/sysdeps/alpha/alphaev6/memchr.S --- glibc-2.2/sysdeps/alpha/alphaev6/memchr.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/alpha/alphaev6/memchr.S Fri Dec 8 09:18:13 2000 @@ -0,0 +1,192 @@ +/* Copyright (C) 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by David Mosberger (davidm@cs.arizona.edu). + EV6 optimized by Rick Gorton . + + 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. */ + +#include + + .arch ev6 + .set noreorder + .set noat + +ENTRY(__memchr) +#ifdef PROF + ldgp gp, 0(pv) + lda AT, _mcount + jsr AT, (AT), _mcount + .prologue 1 +#else + .prologue 0 +#endif + + # Hack -- if someone passes in (size_t)-1, hoping to just + # search til the end of the address space, we will overflow + # below when we find the address of the last byte. Given + # that we will never have a 56-bit address space, cropping + # the length is the easiest way to avoid trouble. + zap $18, 0x80, $5 # U : Bound length + beq $18, $not_found # U : + ldq_u $1, 0($16) # L : load first quadword Latency=3 + and $17, 0xff, $17 # E : L L U U : 00000000000000ch + + insbl $17, 1, $2 # U : 000000000000ch00 + cmpult $18, 9, $4 # E : small (< 1 quad) string? + or $2, $17, $17 # E : 000000000000chch + lda $3, -1($31) # E : U L L U + + sll $17, 16, $2 # U : 00000000chch0000 + addq $16, $5, $5 # E : Max search address + or $2, $17, $17 # E : 00000000chchchch + sll $17, 32, $2 # U : U L L U : chchchch00000000 + + or $2, $17, $17 # E : chchchchchchchch + extql $1, $16, $7 # U : $7 is upper bits + beq $4, $first_quad # U : + ldq_u $6, -1($5) # L : L U U L : eight or less bytes to search Latency=3 + + extqh $6, $16, $6 # U : 2 cycle stall for $6 + mov $16, $0 # E : + nop # E : + or $7, $6, $1 # E : L U L U $1 = quadword starting at $16 + + # Deal with the case where at most 8 bytes remain to be searched + # in $1. E.g.: + # $18 = 6 + # $1 = ????c6c5c4c3c2c1 +$last_quad: + negq $18, $6 # E : + xor $17, $1, $1 # E : + srl $3, $6, $6 # U : $6 = mask of $18 bits set + cmpbge $31, $1, $2 # E : L U L U + + nop + nop + and $2, $6, $2 # E : + beq $2, $not_found # U : U L U L + +$found_it: +#if defined(__alpha_fix__) && defined(__alpha_cix__) + /* + * Since we are guaranteed to have set one of the bits, we don't + * have to worry about coming back with a 0x40 out of cttz... + */ + cttz $2, $3 # U0 : + addq $0, $3, $0 # E : All done + nop # E : + ret # L0 : L U L U +#else + /* + * Slow and clunky. It can probably be improved. + * An exercise left for others. + */ + negq $2, $3 # E : + and $2, $3, $2 # E : + and $2, 0x0f, $1 # E : + addq $0, 4, $3 # E : + + cmoveq $1, $3, $0 # E : Latency 2, extra map cycle + nop # E : keep with cmov + and $2, 0x33, $1 # E : + addq $0, 2, $3 # E : U L U L : 2 cycle stall on $0 + + cmoveq $1, $3, $0 # E : Latency 2, extra map cycle + nop # E : keep with cmov + and $2, 0x55, $1 # E : + addq $0, 1, $3 # E : U L U L : 2 cycle stall on $0 + + cmoveq $1, $3, $0 # E : Latency 2, extra map cycle + nop + nop + ret # L0 : L U L U +#endif + + # Deal with the case where $18 > 8 bytes remain to be + # searched. $16 may not be aligned. + .align 4 +$first_quad: + andnot $16, 0x7, $0 # E : + insqh $3, $16, $2 # U : $2 = 0000ffffffffffff ($16<0:2> ff) + xor $1, $17, $1 # E : + or $1, $2, $1 # E : U L U L $1 = ====ffffffffffff + + cmpbge $31, $1, $2 # E : + bne $2, $found_it # U : + # At least one byte left to process. + ldq $1, 8($0) # L : + subq $5, 1, $18 # E : U L U L + + addq $0, 8, $0 # E : + # Make $18 point to last quad to be accessed (the + # last quad may or may not be partial). + andnot $18, 0x7, $18 # E : + cmpult $0, $18, $2 # E : + beq $2, $final # U : U L U L + + # At least two quads remain to be accessed. + + subq $18, $0, $4 # E : $4 <- nr quads to be processed + and $4, 8, $4 # E : odd number of quads? + bne $4, $odd_quad_count # U : + # At least three quads remain to be accessed + mov $1, $4 # E : L U L U : move prefetched value to correct reg + + .align 4 +$unrolled_loop: + ldq $1, 8($0) # L : prefetch $1 + xor $17, $4, $2 # E : + cmpbge $31, $2, $2 # E : + bne $2, $found_it # U : U L U L + + addq $0, 8, $0 # E : + nop # E : + nop # E : + nop # E : + +$odd_quad_count: + xor $17, $1, $2 # E : + ldq $4, 8($0) # L : prefetch $4 + cmpbge $31, $2, $2 # E : + addq $0, 8, $6 # E : + + bne $2, $found_it # U : + cmpult $6, $18, $6 # E : + addq $0, 8, $0 # E : + nop # E : + + bne $6, $unrolled_loop # U : + mov $4, $1 # E : move prefetched value into $1 + nop # E : + nop # E : + +$final: subq $5, $0, $18 # E : $18 <- number of bytes left to do + nop # E : + nop # E : + bne $18, $last_quad # U : + +$not_found: + mov $31, $0 # E : + nop # E : + nop # E : + ret # L0 : + + END(__memchr) + +weak_alias (__memchr, memchr) +#if !__BOUNDED_POINTERS__ +weak_alias (__memchr, __ubp_memchr) +#endif diff -adurpN glibc-2.2/sysdeps/alpha/alphaev6/memcpy.S glibc-2.2.1/sysdeps/alpha/alphaev6/memcpy.S --- glibc-2.2/sysdeps/alpha/alphaev6/memcpy.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/alpha/alphaev6/memcpy.S Wed Dec 27 15:31:49 2000 @@ -0,0 +1,254 @@ +/* Copyright (C) 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + EV6 optimized by Rick Gorton . + + 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. */ + +/* + * Much of the information about 21264 scheduling/coding comes from: + * Compiler Writer's Guide for the Alpha 21264 + * abbreviated as 'CWG' in other comments here + * ftp.digital.com/pub/Digital/info/semiconductor/literature/dsc-library.html + * Scheduling notation: + * E - either cluster + * U - upper subcluster; U0 - subcluster U0; U1 - subcluster U1 + * L - lower subcluster; L0 - subcluster L0; L1 - subcluster L1 + * + * Temp usage notes: + * $0 - destination address + * $1,$2, - scratch + */ + +#include + + .arch ev6 + .set noreorder + .set noat + +ENTRY(memcpy) + + mov $16, $0 # E : copy dest to return + ble $18, $nomoredata # U : done with the copy? + xor $16, $17, $1 # E : are source and dest alignments the same? + and $1, 7, $1 # E : are they the same mod 8? + + bne $1, $misaligned # U : Nope - gotta do this the slow way + /* source and dest are same mod 8 address */ + and $16, 7, $1 # E : Are both 0mod8? + beq $1, $both_0mod8 # U : Yes + nop # E : + + /* + * source and dest are same misalignment. move a byte at a time + * until a 0mod8 alignment for both is reached. + * At least one byte more to move + */ + +$head_align: + ldbu $1, 0($17) # L : grab a byte + subq $18, 1, $18 # E : count-- + addq $17, 1, $17 # E : src++ + stb $1, 0($16) # L : + addq $16, 1, $16 # E : dest++ + and $16, 7, $1 # E : Are we at 0mod8 yet? + ble $18, $nomoredata # U : done with the copy? + bne $1, $head_align # U : + +$both_0mod8: + cmple $18, 127, $1 # E : Can we unroll the loop? + bne $1, $no_unroll # U : + and $16, 63, $1 # E : get mod64 alignment + beq $1, $do_unroll # U : no single quads to fiddle + +$single_head_quad: + ldq $1, 0($17) # L : get 8 bytes + subq $18, 8, $18 # E : count -= 8 + addq $17, 8, $17 # E : src += 8 + nop # E : + + stq $1, 0($16) # L : store + addq $16, 8, $16 # E : dest += 8 + and $16, 63, $1 # E : get mod64 alignment + bne $1, $single_head_quad # U : still not fully aligned + +$do_unroll: + addq $16, 64, $7 # E : Initial (+1 trip) wh64 address + cmple $18, 127, $1 # E : Can we go through the unrolled loop? + bne $1, $tail_quads # U : Nope + nop # E : + +$unroll_body: + wh64 ($7) # L1 : memory subsystem hint: 64 bytes at + # ($7) are about to be over-written + ldq $6, 0($17) # L0 : bytes 0..7 + nop # E : + nop # E : + + ldq $4, 8($17) # L : bytes 8..15 + ldq $5, 16($17) # L : bytes 16..23 + addq $7, 64, $7 # E : Update next wh64 address + nop # E : + + ldq $3, 24($17) # L : bytes 24..31 + addq $16, 64, $1 # E : fallback value for wh64 + nop # E : + nop # E : + + addq $17, 32, $17 # E : src += 32 bytes + stq $6, 0($16) # L : bytes 0..7 + nop # E : + nop # E : + + stq $4, 8($16) # L : bytes 8..15 + stq $5, 16($16) # L : bytes 16..23 + subq $18, 192, $2 # E : At least two more trips to go? + nop # E : + + stq $3, 24($16) # L : bytes 24..31 + addq $16, 32, $16 # E : dest += 32 bytes + nop # E : + nop # E : + + ldq $6, 0($17) # L : bytes 0..7 + ldq $4, 8($17) # L : bytes 8..15 + cmovlt $2, $1, $7 # E : Latency 2, extra map slot - Use + # fallback wh64 address if < 2 more trips + nop # E : + + ldq $5, 16($17) # L : bytes 16..23 + ldq $3, 24($17) # L : bytes 24..31 + addq $16, 32, $16 # E : dest += 32 + subq $18, 64, $18 # E : count -= 64 + + addq $17, 32, $17 # E : src += 32 + stq $6, -32($16) # L : bytes 0..7 + stq $4, -24($16) # L : bytes 8..15 + cmple $18, 63, $1 # E : At least one more trip? + + stq $5, -16($16) # L : bytes 16..23 + stq $3, -8($16) # L : bytes 24..31 + nop # E : + beq $1, $unroll_body + +$tail_quads: +$no_unroll: + .align 4 + subq $18, 8, $18 # E : At least a quad left? + blt $18, $less_than_8 # U : Nope + nop # E : + nop # E : + +$move_a_quad: + ldq $1, 0($17) # L : fetch 8 + subq $18, 8, $18 # E : count -= 8 + addq $17, 8, $17 # E : src += 8 + nop # E : + + stq $1, 0($16) # L : store 8 + addq $16, 8, $16 # E : dest += 8 + bge $18, $move_a_quad # U : + nop # E : + +$less_than_8: + .align 4 + addq $18, 8, $18 # E : add back for trailing bytes + ble $18, $nomoredata # U : All-done + nop # E : + nop # E : + + /* Trailing bytes */ +$tail_bytes: + subq $18, 1, $18 # E : count-- + ldbu $1, 0($17) # L : fetch a byte + addq $17, 1, $17 # E : src++ + nop # E : + + stb $1, 0($16) # L : store a byte + addq $16, 1, $16 # E : dest++ + bgt $18, $tail_bytes # U : more to be done? + nop # E : + + /* branching to exit takes 3 extra cycles, so replicate exit here */ + ret $31, ($26), 1 # L0 : + nop # E : + nop # E : + nop # E : + +$misaligned: + mov $0, $4 # E : dest temp + and $0, 7, $1 # E : dest alignment mod8 + beq $1, $dest_0mod8 # U : life doesnt totally suck + nop + +$aligndest: + ble $18, $nomoredata # U : + ldbu $1, 0($17) # L : fetch a byte + subq $18, 1, $18 # E : count-- + addq $17, 1, $17 # E : src++ + + stb $1, 0($4) # L : store it + addq $4, 1, $4 # E : dest++ + and $4, 7, $1 # E : dest 0mod8 yet? + bne $1, $aligndest # U : go until we are aligned. + + /* Source has unknown alignment, but dest is known to be 0mod8 */ +$dest_0mod8: + subq $18, 8, $18 # E : At least a quad left? + blt $18, $misalign_tail # U : Nope + ldq_u $3, 0($17) # L : seed (rotating load) of 8 bytes + nop # E : + +$mis_quad: + ldq_u $16, 8($17) # L : Fetch next 8 + extql $3, $17, $3 # U : masking + extqh $16, $17, $1 # U : masking + bis $3, $1, $1 # E : merged bytes to store + + subq $18, 8, $18 # E : count -= 8 + addq $17, 8, $17 # E : src += 8 + stq $1, 0($4) # L : store 8 (aligned) + mov $16, $3 # E : "rotate" source data + + addq $4, 8, $4 # E : dest += 8 + bge $18, $mis_quad # U : More quads to move + nop + nop + +$misalign_tail: + addq $18, 8, $18 # E : account for tail stuff + ble $18, $nomoredata # U : + nop + nop + +$misalign_byte: + ldbu $1, 0($17) # L : fetch 1 + subq $18, 1, $18 # E : count-- + addq $17, 1, $17 # E : src++ + nop # E : + + stb $1, 0($4) # L : store + addq $4, 1, $4 # E : dest++ + bgt $18, $misalign_byte # U : more to go? + nop + + +$nomoredata: + ret $31, ($26), 1 # L0 : + nop # E : + nop # E : + nop # E : + +END(memcpy) diff -adurpN glibc-2.2/sysdeps/alpha/alphaev6/memset.S glibc-2.2.1/sysdeps/alpha/alphaev6/memset.S --- glibc-2.2/sysdeps/alpha/alphaev6/memset.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/alpha/alphaev6/memset.S Fri Dec 8 09:18:30 2000 @@ -0,0 +1,224 @@ +/* Copyright (C) 2000 Free Software Foundation, Inc. + Contributed by Richard Henderson (rth@tamu.edu) + EV6 optimized by Rick Gorton . + + 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. */ + +#include + + .arch ev6 + .set noat + .set noreorder + +ENTRY(memset) +#ifdef PROF + ldgp gp, 0(pv) + lda AT, _mcount + jsr AT, (AT), _mcount + .prologue 1 +#else + .prologue 0 +#endif + + /* + * Serious stalling happens. The only way to mitigate this is to + * undertake a major re-write to interleave the constant materialization + * with other parts of the fall-through code. This is important, even + * though it makes maintenance tougher. + * Do this later. + */ + and $17, 255, $1 # E : 00000000000000ch + insbl $17, 1, $2 # U : 000000000000ch00 + mov $16, $0 # E : return value + ble $18, $end # U : zero length requested? + + addq $18, $16, $6 # E : max address to write to + or $1, $2, $17 # E : 000000000000chch + insbl $1, 2, $3 # U : 0000000000ch0000 + insbl $1, 3, $4 # U : 00000000ch000000 + + or $3, $4, $3 # E : 00000000chch0000 + inswl $17, 4, $5 # U : 0000chch00000000 + xor $16, $6, $1 # E : will complete write be within one quadword? + inswl $17, 6, $2 # U : chch000000000000 + + or $17, $3, $17 # E : 00000000chchchch + or $2, $5, $2 # E : chchchch00000000 + bic $1, 7, $1 # E : fit within a single quadword? + and $16, 7, $3 # E : Target addr misalignment + + or $17, $2, $17 # E : chchchchchchchch + beq $1, $within_quad # U : + nop # E : + beq $3, $aligned # U : target is 0mod8 + + /* + * Target address is misaligned, and won't fit within a quadword. + */ + ldq_u $4, 0($16) # L : Fetch first partial + mov $16, $5 # E : Save the address + insql $17, $16, $2 # U : Insert new bytes + subq $3, 8, $3 # E : Invert (for addressing uses) + + addq $18, $3, $18 # E : $18 is new count ($3 is negative) + mskql $4, $16, $4 # U : clear relevant parts of the quad + subq $16, $3, $16 # E : $16 is new aligned destination + or $2, $4, $1 # E : Final bytes + + nop + stq_u $1,0($5) # L : Store result + nop + nop + + .align 4 +$aligned: + /* + * We are now guaranteed to be quad aligned, with at least + * one partial quad to write. + */ + + sra $18, 3, $3 # U : Number of remaining quads to write + and $18, 7, $18 # E : Number of trailing bytes to write + mov $16, $5 # E : Save dest address + beq $3, $no_quad # U : tail stuff only + + /* + * It's worth the effort to unroll this and use wh64 if possible. + * At this point, entry values are: + * $16 Current destination address + * $5 A copy of $16 + * $6 The max quadword address to write to + * $18 Number trailer bytes + * $3 Number quads to write + */ + + and $16, 0x3f, $2 # E : Forward work (only useful for unrolled loop) + subq $3, 16, $4 # E : Only try to unroll if > 128 bytes + subq $2, 0x40, $1 # E : bias counter (aligning stuff 0mod64) + blt $4, $loop # U : + + /* + * We know we've got at least 16 quads, minimum of one trip + * through unrolled loop. Do a quad at a time to get us 0mod64 + * aligned. + */ + + nop # E : + nop # E : + nop # E : + beq $1, $bigalign # U : + +$alignmod64: + stq $17, 0($5) # L : + subq $3, 1, $3 # E : For consistency later + addq $1, 8, $1 # E : Increment towards zero for alignment + addq $5, 8, $4 # E : Initial wh64 address (filler instruction) + + nop + nop + addq $5, 8, $5 # E : Inc address + blt $1, $alignmod64 # U : + +$bigalign: + /* + * $3 - number quads left to go + * $5 - target address (aligned 0mod64) + * $17 - mask of stuff to store + * Scratch registers available: $7, $2, $4, $1 + * We know that we'll be taking a minimum of one trip through. + * CWG Section 3.7.6: do not expect a sustained store rate of > 1/cycle + * Assumes the wh64 needs to be for 2 trips through the loop in the future. + * The wh64 is issued on for the starting destination address for trip +2 + * through the loop, and if there are less than two trips left, the target + * address will be for the current trip. + */ + +$do_wh64: + wh64 ($4) # L1 : memory subsystem write hint + subq $3, 24, $2 # E : For determining future wh64 addresses + stq $17, 0($5) # L : + nop # E : + + addq $5, 128, $4 # E : speculative target of next wh64 + stq $17, 8($5) # L : + stq $17, 16($5) # L : + addq $5, 64, $7 # E : Fallback address for wh64 (== next trip addr) + + stq $17, 24($5) # L : + stq $17, 32($5) # L : + cmovlt $2, $7, $4 # E : Latency 2, extra mapping cycle + nop + + stq $17, 40($5) # L : + stq $17, 48($5) # L : + subq $3, 16, $2 # E : Repeat the loop at least once more? + nop + + stq $17, 56($5) # L : + addq $5, 64, $5 # E : + subq $3, 8, $3 # E : + bge $2, $do_wh64 # U : + + nop + nop + nop + beq $3, $no_quad # U : Might have finished already + + .align 4 + /* + * Simple loop for trailing quadwords, or for small amounts + * of data (where we can't use an unrolled loop and wh64) + */ +$loop: + stq $17, 0($5) # L : + subq $3, 1, $3 # E : Decrement number quads left + addq $5, 8, $5 # E : Inc address + bne $3, $loop # U : more? + +$no_quad: + /* + * Write 0..7 trailing bytes. + */ + nop # E : + beq $18, $end # U : All done? + ldq $7, 0($5) # L : + mskqh $7, $6, $2 # U : Mask final quad + + insqh $17, $6, $4 # U : New bits + or $2, $4, $1 # E : Put it all together + stq $1, 0($5) # L : And back to memory + ret $31,($26),1 # L0 : + +$within_quad: + ldq_u $1, 0($16) # L : + insql $17, $16, $2 # U : New bits + mskql $1, $16, $4 # U : Clear old + or $2, $4, $2 # E : New result + + mskql $2, $6, $4 # U : + mskqh $1, $6, $2 # U : + or $2, $4, $1 # E : + stq_u $1, 0($16) # L : + +$end: + nop + nop + nop + ret $31,($26),1 # L0 : + + END(memset) diff -adurpN glibc-2.2/sysdeps/alpha/alphaev6/stxcpy.S glibc-2.2.1/sysdeps/alpha/alphaev6/stxcpy.S --- glibc-2.2/sysdeps/alpha/alphaev6/stxcpy.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/alpha/alphaev6/stxcpy.S Sun Dec 10 14:27:31 2000 @@ -0,0 +1,329 @@ +/* Copyright (C) 2000 Free Software Foundation, Inc. + Contributed by Richard Henderson (rth@tamu.edu) + EV6 optimized by Rick Gorton . + + 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. */ + +/* Copy a null-terminated string from SRC to DST. + + This is an internal routine used by strcpy, stpcpy, and strcat. + As such, it uses special linkage conventions to make implementation + of these public functions more efficient. + + On input: + t9 = return address + a0 = DST + a1 = SRC + + On output: + t8 = bitmask (with one bit set) indicating the last byte written + a0 = unaligned address of the last *word* written + + Furthermore, v0, a3-a5, t11, and t12 are untouched. +*/ + + +#include + + .arch ev6 + .set noat + .set noreorder + .text + +/* There is a problem with either gdb (as of 4.16) or gas (as of 2.7) that + doesn't like putting the entry point for a procedure somewhere in the + middle of the procedure descriptor. Work around this by putting the + aligned copy in its own procedure descriptor */ + + + .ent stxcpy_aligned + .align 4 +stxcpy_aligned: + .frame sp, 0, t9 + .prologue 0 + + /* On entry to this basic block: + t0 == the first destination word for masking back in + t1 == the first source word. */ + + /* Create the 1st output word and detect 0's in the 1st input word. */ + lda t2, -1 # E : build a mask against false zero + mskqh t2, a1, t2 # U : detection in the src word (stall) + mskqh t1, a1, t3 # U : + ornot t1, t2, t2 # E : (stall) + + mskql t0, a1, t0 # U : assemble the first output word + cmpbge zero, t2, t10 # E : bits set iff null found + or t0, t3, t1 # E : (stall) + bne t10, $a_eos # U : (stall) + + /* On entry to this basic block: + t0 == the first destination word for masking back in + t1 == a source word not containing a null. */ + /* Nops here to separate store quads from load quads */ + +$a_loop: + stq_u t1, 0(a0) # L : + addq a0, 8, a0 # E : + nop + nop + + ldq_u t1, 0(a1) # L : Latency=3 + addq a1, 8, a1 # E : + cmpbge zero, t1, t10 # E : (3 cycle stall) + beq t10, $a_loop # U : (stall for t10) + + /* Take care of the final (partial) word store. + On entry to this basic block we have: + t1 == the source word containing the null + t10 == the cmpbge mask that found it. */ +$a_eos: + negq t10, t6 # E : find low bit set + and t10, t6, t8 # E : (stall) + /* For the sake of the cache, don't read a destination word + if we're not going to need it. */ + and t8, 0x80, t6 # E : (stall) + bne t6, 1f # U : (stall) + + /* We're doing a partial word store and so need to combine + our source and original destination words. */ + ldq_u t0, 0(a0) # L : Latency=3 + subq t8, 1, t6 # E : + zapnot t1, t6, t1 # U : clear src bytes >= null (stall) + or t8, t6, t10 # E : (stall) + + zap t0, t10, t0 # E : clear dst bytes <= null + or t0, t1, t1 # E : (stall) + nop + nop + +1: stq_u t1, 0(a0) # L : + ret (t9) # L0 : Latency=3 + nop + nop + + .end stxcpy_aligned + + .align 4 + .ent __stxcpy + .globl __stxcpy +__stxcpy: + .frame sp, 0, t9 + .prologue 0 + + /* Are source and destination co-aligned? */ + xor a0, a1, t0 # E : + unop # E : + and t0, 7, t0 # E : (stall) + bne t0, $unaligned # U : (stall) + + /* We are co-aligned; take care of a partial first word. */ + ldq_u t1, 0(a1) # L : load first src word + and a0, 7, t0 # E : take care not to load a word ... + addq a1, 8, a1 # E : + beq t0, stxcpy_aligned # U : ... if we wont need it (stall) + + ldq_u t0, 0(a0) # L : + br stxcpy_aligned # L0 : Latency=3 + nop + nop + + +/* The source and destination are not co-aligned. Align the destination + and cope. We have to be very careful about not reading too much and + causing a SEGV. */ + + .align 4 +$u_head: + /* We know just enough now to be able to assemble the first + full source word. We can still find a zero at the end of it + that prevents us from outputting the whole thing. + + On entry to this basic block: + t0 == the first dest word, for masking back in, if needed else 0 + t1 == the low bits of the first source word + t6 == bytemask that is -1 in dest word bytes */ + + ldq_u t2, 8(a1) # L : + addq a1, 8, a1 # E : + extql t1, a1, t1 # U : (stall on a1) + extqh t2, a1, t4 # U : (stall on a1) + + mskql t0, a0, t0 # U : + or t1, t4, t1 # E : + mskqh t1, a0, t1 # U : (stall on t1) + or t0, t1, t1 # E : (stall on t1) + + or t1, t6, t6 # E : + cmpbge zero, t6, t10 # E : (stall) + lda t6, -1 # E : for masking just below + bne t10, $u_final # U : (stall) + + mskql t6, a1, t6 # U : mask out the bits we have + or t6, t2, t2 # E : already extracted before (stall) + cmpbge zero, t2, t10 # E : testing eos (stall) + bne t10, $u_late_head_exit # U : (stall) + + /* Finally, we've got all the stupid leading edge cases taken care + of and we can set up to enter the main loop. */ + + stq_u t1, 0(a0) # L : store first output word + addq a0, 8, a0 # E : + extql t2, a1, t0 # U : position ho-bits of lo word + ldq_u t2, 8(a1) # U : read next high-order source word + + addq a1, 8, a1 # E : + cmpbge zero, t2, t10 # E : (stall for t2) + nop # E : + bne t10, $u_eos # U : (stall) + + /* Unaligned copy main loop. In order to avoid reading too much, + the loop is structured to detect zeros in aligned source words. + This has, unfortunately, effectively pulled half of a loop + iteration out into the head and half into the tail, but it does + prevent nastiness from accumulating in the very thing we want + to run as fast as possible. + + On entry to this basic block: + t0 == the shifted high-order bits from the previous source word + t2 == the unshifted current source word + + We further know that t2 does not contain a null terminator. */ + + .align 3 +$u_loop: + extqh t2, a1, t1 # U : extract high bits for current word + addq a1, 8, a1 # E : (stall) + extql t2, a1, t3 # U : extract low bits for next time (stall) + addq a0, 8, a0 # E : + + or t0, t1, t1 # E : current dst word now complete + ldq_u t2, 0(a1) # L : Latency=3 load high word for next time + stq_u t1, -8(a0) # L : save the current word (stall) + mov t3, t0 # E : + + cmpbge zero, t2, t10 # E : test new word for eos + beq t10, $u_loop # U : (stall) + nop + nop + + /* We've found a zero somewhere in the source word we just read. + If it resides in the lower half, we have one (probably partial) + word to write out, and if it resides in the upper half, we + have one full and one partial word left to write out. + + On entry to this basic block: + t0 == the shifted high-order bits from the previous source word + t2 == the unshifted current source word. */ +$u_eos: + extqh t2, a1, t1 # U : + or t0, t1, t1 # E : first (partial) source word complete (stall) + cmpbge zero, t1, t10 # E : is the null in this first bit? (stall) + bne t10, $u_final # U : (stall) + +$u_late_head_exit: + stq_u t1, 0(a0) # L : the null was in the high-order bits + addq a0, 8, a0 # E : + extql t2, a1, t1 # U : + cmpbge zero, t1, t10 # E : (stall) + + /* Take care of a final (probably partial) result word. + On entry to this basic block: + t1 == assembled source word + t10 == cmpbge mask that found the null. */ +$u_final: + negq t10, t6 # E : isolate low bit set + and t6, t10, t8 # E : (stall) + and t8, 0x80, t6 # E : avoid dest word load if we can (stall) + bne t6, 1f # U : (stall) + + ldq_u t0, 0(a0) # E : + subq t8, 1, t6 # E : + or t6, t8, t10 # E : (stall) + zapnot t1, t6, t1 # U : kill source bytes >= null (stall) + + zap t0, t10, t0 # U : kill dest bytes <= null (2 cycle data stall) + or t0, t1, t1 # E : (stall) + nop + nop + +1: stq_u t1, 0(a0) # L : + ret (t9) # L0 : Latency=3 + nop + nop + + /* Unaligned copy entry point. */ + .align 4 +$unaligned: + + ldq_u t1, 0(a1) # L : load first source word + and a0, 7, t4 # E : find dest misalignment + and a1, 7, t5 # E : find src misalignment + /* Conditionally load the first destination word and a bytemask + with 0xff indicating that the destination byte is sacrosanct. */ + mov zero, t0 # E : + + mov zero, t6 # E : + beq t4, 1f # U : + ldq_u t0, 0(a0) # L : + lda t6, -1 # E : + + mskql t6, a0, t6 # U : + nop + nop + nop +1: + subq a1, t4, a1 # E : sub dest misalignment from src addr + /* If source misalignment is larger than dest misalignment, we need + extra startup checks to avoid SEGV. */ + cmplt t4, t5, t8 # E : + beq t8, $u_head # U : + lda t2, -1 # E : mask out leading garbage in source + + mskqh t2, t5, t2 # U : + ornot t1, t2, t3 # E : (stall) + cmpbge zero, t3, t10 # E : is there a zero? (stall) + beq t10, $u_head # U : (stall) + + /* At this point we've found a zero in the first partial word of + the source. We need to isolate the valid source data and mask + it into the original destination data. (Incidentally, we know + that we'll need at least one byte of that original dest word.) */ + + ldq_u t0, 0(a0) # L : + negq t10, t6 # E : build bitmask of bytes <= zero + and t6, t10, t8 # E : (stall) + and a1, 7, t5 # E : + + subq t8, 1, t6 # E : + or t6, t8, t10 # E : (stall) + srl t8, t5, t8 # U : adjust final null return value + zapnot t2, t10, t2 # U : prepare source word; mirror changes (stall) + + and t1, t2, t1 # E : to source validity mask + extql t2, a1, t2 # U : + extql t1, a1, t1 # U : (stall) + andnot t0, t2, t0 # .. e1 : zero place for source to reside (stall) + + or t0, t1, t1 # e1 : and put it there + stq_u t1, 0(a0) # .. e0 : (stall) + ret (t9) # e1 : + nop + + .end __stxcpy + diff -adurpN glibc-2.2/sysdeps/alpha/alphaev6/stxncpy.S glibc-2.2.1/sysdeps/alpha/alphaev6/stxncpy.S --- glibc-2.2/sysdeps/alpha/alphaev6/stxncpy.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/alpha/alphaev6/stxncpy.S Fri Dec 8 09:18:50 2000 @@ -0,0 +1,405 @@ +/* Copyright (C) 2000 Free Software Foundation, Inc. + Contributed by Richard Henderson (rth@tamu.edu) + EV6 optimized by Rick Gorton . + + 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. */ + +/* Copy no more than COUNT bytes of the null-terminated string from + SRC to DST. + + This is an internal routine used by strncpy, stpncpy, and strncat. + As such, it uses special linkage conventions to make implementation + of these public functions more efficient. + + On input: + t9 = return address + a0 = DST + a1 = SRC + a2 = COUNT + + Furthermore, COUNT may not be zero. + + On output: + t0 = last word written + t8 = bitmask (with one bit set) indicating the last byte written + t10 = bitmask (with one bit set) indicating the byte position of + the end of the range specified by COUNT + a0 = unaligned address of the last *word* written + a2 = the number of full words left in COUNT + + Furthermore, v0, a3-a5, t11, and t12 are untouched. +*/ + +#include + + .arch ev6 + .set noat + .set noreorder + +/* There is a problem with either gdb (as of 4.16) or gas (as of 2.7) that + doesn't like putting the entry point for a procedure somewhere in the + middle of the procedure descriptor. Work around this by putting the + aligned copy in its own procedure descriptor */ + + + .ent stxncpy_aligned + .align 4 +stxncpy_aligned: + .frame sp, 0, t9, 0 + .prologue 0 + + /* On entry to this basic block: + t0 == the first destination word for masking back in + t1 == the first source word. */ + + /* Create the 1st output word and detect 0's in the 1st input word. */ + lda t2, -1 # E : build a mask against false zero + mskqh t2, a1, t2 # U : detection in the src word (stall) + mskqh t1, a1, t3 # U : + ornot t1, t2, t2 # E : (stall) + + mskql t0, a1, t0 # U : assemble the first output word + cmpbge zero, t2, t7 # E : bits set iff null found + or t0, t3, t0 # E : (stall) + beq a2, $a_eoc # U : + + bne t7, $a_eos # U : + nop + nop + nop + + /* On entry to this basic block: + t0 == a source word not containing a null. */ + + /* + * nops here to: + * separate store quads from load quads + * limit of 1 bcond/quad to permit training + */ +$a_loop: + stq_u t0, 0(a0) # L : + addq a0, 8, a0 # E : + subq a2, 1, a2 # E : + nop + + ldq_u t0, 0(a1) # L : + addq a1, 8, a1 # E : + cmpbge zero, t0, t7 # E : + beq a2, $a_eoc # U : + + beq t7, $a_loop # U : + nop + nop + nop + + /* Take care of the final (partial) word store. At this point + the end-of-count bit is set in t7 iff it applies. + + On entry to this basic block we have: + t0 == the source word containing the null + t7 == the cmpbge mask that found it. */ + +$a_eos: + negq t7, t8 # E : find low bit set + and t7, t8, t8 # E : (stall) + /* For the sake of the cache, don't read a destination word + if we're not going to need it. */ + and t8, 0x80, t6 # E : (stall) + bne t6, 1f # U : (stall) + + /* We're doing a partial word store and so need to combine + our source and original destination words. */ + ldq_u t1, 0(a0) # L : + subq t8, 1, t6 # E : + or t8, t6, t7 # E : (stall) + zapnot t0, t7, t0 # U : clear src bytes > null (stall) + + zap t1, t7, t1 # .. e1 : clear dst bytes <= null + or t0, t1, t0 # e1 : (stall) + nop + nop + +1: stq_u t0, 0(a0) # L : + ret (t9) # L0 : Latency=3 + nop + nop + + /* Add the end-of-count bit to the eos detection bitmask. */ +$a_eoc: + or t10, t7, t7 # E : + br $a_eos # L0 : Latency=3 + nop + nop + + .end stxncpy_aligned + + .align 4 + .ent __stxncpy + .globl __stxncpy +__stxncpy: + .frame sp, 0, t9, 0 + .prologue 0 + + /* Are source and destination co-aligned? */ + xor a0, a1, t1 # E : + and a0, 7, t0 # E : find dest misalignment + and t1, 7, t1 # E : (stall) + addq a2, t0, a2 # E : bias count by dest misalignment (stall) + + subq a2, 1, a2 # E : + and a2, 7, t2 # E : (stall) + srl a2, 3, a2 # U : a2 = loop counter = (count - 1)/8 (stall) + addq zero, 1, t10 # E : + + sll t10, t2, t10 # U : t10 = bitmask of last count byte + bne t1, $unaligned # U : + /* We are co-aligned; take care of a partial first word. */ + ldq_u t1, 0(a1) # L : load first src word + addq a1, 8, a1 # E : + + beq t0, stxncpy_aligned # U : avoid loading dest word if not needed + ldq_u t0, 0(a0) # L : + nop + nop + + br stxncpy_aligned # .. e1 : + nop + nop + nop + + + +/* The source and destination are not co-aligned. Align the destination + and cope. We have to be very careful about not reading too much and + causing a SEGV. */ + + .align 4 +$u_head: + /* We know just enough now to be able to assemble the first + full source word. We can still find a zero at the end of it + that prevents us from outputting the whole thing. + + On entry to this basic block: + t0 == the first dest word, unmasked + t1 == the shifted low bits of the first source word + t6 == bytemask that is -1 in dest word bytes */ + + ldq_u t2, 8(a1) # L : Latency=3 load second src word + addq a1, 8, a1 # E : + mskql t0, a0, t0 # U : mask trailing garbage in dst + extqh t2, a1, t4 # U : (3 cycle stall on t2) + + or t1, t4, t1 # E : first aligned src word complete (stall) + mskqh t1, a0, t1 # U : mask leading garbage in src (stall) + or t0, t1, t0 # E : first output word complete (stall) + or t0, t6, t6 # E : mask original data for zero test (stall) + + cmpbge zero, t6, t7 # E : + beq a2, $u_eocfin # U : + nop + nop + + bne t7, $u_final # U : + lda t6, -1 # E : mask out the bits we have + mskql t6, a1, t6 # U : already seen (stall) + stq_u t0, 0(a0) # L : store first output word + + or t6, t2, t2 # E : + cmpbge zero, t2, t7 # E : find nulls in second partial (stall) + addq a0, 8, a0 # E : + subq a2, 1, a2 # E : + + bne t7, $u_late_head_exit # U : + /* Finally, we've got all the stupid leading edge cases taken care + of and we can set up to enter the main loop. */ + extql t2, a1, t1 # U : position hi-bits of lo word + ldq_u t2, 8(a1) # L : read next high-order source word + addq a1, 8, a1 # E : + + cmpbge zero, t2, t7 # E : (stall) + beq a2, $u_eoc # U : + nop + nop + + bne t7, $u_eos # e1 : + nop + nop + nop + + /* Unaligned copy main loop. In order to avoid reading too much, + the loop is structured to detect zeros in aligned source words. + This has, unfortunately, effectively pulled half of a loop + iteration out into the head and half into the tail, but it does + prevent nastiness from accumulating in the very thing we want + to run as fast as possible. + + On entry to this basic block: + t1 == the shifted high-order bits from the previous source word + t2 == the unshifted current source word + + We further know that t2 does not contain a null terminator. */ + + .align 4 +$u_loop: + extqh t2, a1, t0 # U : extract high bits for current word + addq a1, 8, a1 # E : + extql t2, a1, t3 # U : extract low bits for next time + addq a0, 8, a0 # E : + + or t0, t1, t0 # E : current dst word now complete + ldq_u t2, 0(a1) # U : Latency=3 load high word for next time + stq_u t0, -8(a0) # U : save the current word (stall) + mov t3, t1 # E : + + subq a2, 1, a2 # E : + cmpbge zero, t2, t7 # E : test new word for eos (2 cycle stall for data) + beq a2, $u_eoc # U : (stall) + nop + + beq t7, $u_loop # U : + nop + nop + nop + + /* We've found a zero somewhere in the source word we just read. + If it resides in the lower half, we have one (probably partial) + word to write out, and if it resides in the upper half, we + have one full and one partial word left to write out. + + On entry to this basic block: + t1 == the shifted high-order bits from the previous source word + t2 == the unshifted current source word. */ +$u_eos: + extqh t2, a1, t0 # U : + or t0, t1, t0 # E : first (partial) source word complete (stall) + cmpbge zero, t0, t7 # E : is the null in this first bit? (stall) + bne t7, $u_final # U : (stall) + + stq_u t0, 0(a0) # L : the null was in the high-order bits + addq a0, 8, a0 # E : + subq a2, 1, a2 # E : + nop + +$u_late_head_exit: + extql t2, a1, t0 # U : + cmpbge zero, t0, t7 # E : + or t7, t10, t6 # E : (stall) + cmoveq a2, t6, t7 # E : Latency=2, extra map slot (stall) + + /* Take care of a final (probably partial) result word. + On entry to this basic block: + t0 == assembled source word + t7 == cmpbge mask that found the null. */ +$u_final: + negq t7, t6 # E : isolate low bit set + and t6, t7, t8 # E : (stall) + and t8, 0x80, t6 # E : avoid dest word load if we can (stall) + bne t6, 1f # U : (stall) + + ldq_u t1, 0(a0) # L : + subq t8, 1, t6 # E : + or t6, t8, t7 # E : (stall) + zapnot t0, t7, t0 # U : kill source bytes > null + + zap t1, t7, t1 # U : kill dest bytes <= null + or t0, t1, t0 # E : (stall) + nop + nop + +1: stq_u t0, 0(a0) # L : + ret (t9) # L0 : Latency=3 + +$u_eoc: # end-of-count + extqh t2, a1, t0 # U : + or t0, t1, t0 # E : (stall) + cmpbge zero, t0, t7 # E : (stall) + nop + +$u_eocfin: # end-of-count, final word + or t10, t7, t7 # E : + br $u_final # L0 : Latency=3 + nop + nop + + /* Unaligned copy entry point. */ + .align 4 +$unaligned: + + ldq_u t1, 0(a1) # L : load first source word + and a0, 7, t4 # E : find dest misalignment + and a1, 7, t5 # E : find src misalignment + /* Conditionally load the first destination word and a bytemask + with 0xff indicating that the destination byte is sacrosanct. */ + mov zero, t0 # E : + + mov zero, t6 # E : + beq t4, 1f # U : + ldq_u t0, 0(a0) # L : + lda t6, -1 # E : + + mskql t6, a0, t6 # U : + nop + nop + nop +1: + subq a1, t4, a1 # E : sub dest misalignment from src addr + + /* If source misalignment is larger than dest misalignment, we need + extra startup checks to avoid SEGV. */ + + cmplt t4, t5, t8 # E : + extql t1, a1, t1 # U : shift src into place + lda t2, -1 # E : for creating masks later + beq t8, $u_head # U : (stall) + + mskqh t2, t5, t2 # U : begin src byte validity mask + cmpbge zero, t1, t7 # E : is there a zero? + extql t2, a1, t2 # U : + or t7, t10, t5 # E : test for end-of-count too + + cmpbge zero, t2, t3 # E : + cmoveq a2, t5, t7 # E : Latency=2, extra map slot + nop # E : keep with cmoveq + andnot t7, t3, t7 # E : (stall) + + beq t7, $u_head # U : + /* At this point we've found a zero in the first partial word of + the source. We need to isolate the valid source data and mask + it into the original destination data. (Incidentally, we know + that we'll need at least one byte of that original dest word.) */ + ldq_u t0, 0(a0) # L : + negq t7, t6 # E : build bitmask of bytes <= zero + mskqh t1, t4, t1 # U : + + and t6, t7, t8 # E : + subq t8, 1, t6 # E : (stall) + or t6, t8, t7 # E : (stall) + zapnot t2, t7, t2 # U : prepare source word; mirror changes (stall) + + zapnot t1, t7, t1 # U : to source validity mask + andnot t0, t2, t0 # E : zero place for source to reside + or t0, t1, t0 # E : and put it there (stall both t0, t1) + stq_u t0, 0(a0) # L : (stall) + + ret (t9) # L0 : Latency=3 + nop + nop + nop + + .end __stxncpy + diff -adurpN glibc-2.2/sysdeps/alpha/alphaev67/Implies glibc-2.2.1/sysdeps/alpha/alphaev67/Implies --- glibc-2.2/sysdeps/alpha/alphaev67/Implies Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/alpha/alphaev67/Implies Fri Dec 8 09:17:16 2000 @@ -0,0 +1 @@ +alpha/alphaev6 diff -adurpN glibc-2.2/sysdeps/alpha/alphaev67/ffs.S glibc-2.2.1/sysdeps/alpha/alphaev67/ffs.S --- glibc-2.2/sysdeps/alpha/alphaev67/ffs.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/alpha/alphaev67/ffs.S Fri Dec 8 09:19:03 2000 @@ -0,0 +1,50 @@ +/* Copyright (C) 2000 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. */ + +/* Finds the first bit set in an integer. */ + +#include + + .arch ev6 + .set noreorder + .set noat + + +ENTRY(__ffs) +#ifdef PROF + ldgp gp, 0(pv) + lda AT, _mcount + jsr AT, (AT), _mcount + .prologue 1 +#else + .prologue 0 +#endif + + zap $16, 0xF0, $16 + cttz $16, $0 + addq $0, 1, $0 + cmoveq $16, 0, $0 + + nop + nop + nop + ret + +END(__ffs) + +weak_alias (__ffs, ffs) diff -adurpN glibc-2.2/sysdeps/alpha/alphaev67/ffsll.S glibc-2.2.1/sysdeps/alpha/alphaev67/ffsll.S --- glibc-2.2/sysdeps/alpha/alphaev67/ffsll.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/alpha/alphaev67/ffsll.S Fri Dec 8 09:19:13 2000 @@ -0,0 +1,45 @@ +/* Copyright (C) 2000 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. */ + +/* Finds the first bit set in a long. */ + +#include + + .arch ev6 + .set noreorder + .set noat + +ENTRY(ffsl) +#ifdef PROF + ldgp gp, 0(pv) + lda AT, _mcount + jsr AT, (AT), _mcount + .prologue 1 +#else + .prologue 0 +#endif + + cttz $16, $0 + addq $0, 1, $0 + cmoveq $16, 0, $0 + ret + +END(ffsl) + +weak_extern (ffsl) +weak_alias (ffsl, ffsll) diff -adurpN glibc-2.2/sysdeps/alpha/alphaev67/fpu/Implies glibc-2.2.1/sysdeps/alpha/alphaev67/fpu/Implies --- glibc-2.2/sysdeps/alpha/alphaev67/fpu/Implies Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/alpha/alphaev67/fpu/Implies Sun Dec 10 20:35:34 2000 @@ -0,0 +1 @@ +alpha/alphaev6/fpu diff -adurpN glibc-2.2/sysdeps/alpha/alphaev67/rawmemchr.S glibc-2.2.1/sysdeps/alpha/alphaev67/rawmemchr.S --- glibc-2.2/sysdeps/alpha/alphaev67/rawmemchr.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/alpha/alphaev67/rawmemchr.S Fri Dec 8 09:19:22 2000 @@ -0,0 +1,93 @@ +/* Copyright (C) 2000 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. */ + +/* Return pointer to first occurrence of CH in STR. */ + +#include + + .arch ev6 + .set noreorder + .set noat + +ENTRY(__rawmemchr) +#ifdef PROF + ldgp gp, 0(pv) + lda AT, _mcount + jsr AT, (AT), _mcount + .prologue 1 +#else + .prologue 0 +#endif + + ldq_u t0, 0(a0) # L : load first quadword Latency=3 + and a1, 0xff, t3 # E : 00000000000000ch + insbl a1, 1, t5 # U : 000000000000ch00 + insbl a1, 7, a2 # U : ch00000000000000 + + insbl t3, 6, a3 # U : 00ch000000000000 + or t5, t3, a1 # E : 000000000000chch + andnot a0, 7, v0 # E : align our loop pointer + lda t4, -1 # E : build garbage mask + + mskqh t4, a0, t4 # U : only want relevant part of first quad + or a2, a3, a2 # E : chch000000000000 + inswl a1, 2, t5 # E : 00000000chch0000 + inswl a1, 4, a3 # E : 0000chch00000000 + + or a1, a2, a1 # E : chch00000000chch + or a3, t5, t5 # E : 0000chchchch0000 + cmpbge zero, t4, t4 # E : bits set iff byte is garbage + nop # E : + + /* This quad is _very_ serialized. Lots of stalling happens */ + or t5, a1, a1 # E : chchchchchchchch + xor t0, a1, t1 # E : make bytes == c zero + cmpbge zero, t1, t0 # E : bits set iff byte == c + andnot t0, t4, t0 # E : clear garbage bits + + cttz t0, a2 # U0 : speculative (in case we get a match) + nop # E : + nop # E : + bne t0, $found # U : + + /* + * Yuk. This loop is going to stall like crazy waiting for the + * data to be loaded. Not much can be done about it unless it's + * unrolled multiple times, which is generally unsafe. + */ +$loop: + ldq t0, 8(v0) # L : Latency=3 + addq v0, 8, v0 # E : + xor t0, a1, t1 # E : + cmpbge zero, t1, t0 # E : bits set iff byte == c + + cttz t0, a2 # U0 : speculative (in case we get a match) + nop # E : + nop # E : + beq t0, $loop # U : + +$found: + negq t0, t1 # E : clear all but least set bit + and t0, t1, t0 # E : + addq v0, a2, v0 # E : Add in the bit number from above + ret # L0 : + + END(__rawmemchr) + +weak_alias (__rawmemchr, rawmemchr) diff -adurpN glibc-2.2/sysdeps/alpha/alphaev67/stpcpy.S glibc-2.2.1/sysdeps/alpha/alphaev67/stpcpy.S --- glibc-2.2/sysdeps/alpha/alphaev67/stpcpy.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/alpha/alphaev67/stpcpy.S Fri Dec 8 09:19:31 2000 @@ -0,0 +1,52 @@ +/* Copyright (C) 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Richard Henderson . + + 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. */ + +/* Copy SRC to DEST returning the address of the terminating 0 in DEST. */ + +#include + + .arch ev6 + .set noreorder + .set noat + .text + +ENTRY(__stpcpy) + ldgp gp, 0(pv) +#ifdef PROF + lda AT, _mcount + jsr AT, (AT), _mcount +#endif + .prologue 1 + + .align 4 + mov a0, v0 + nop + jsr t9, __stxcpy + + # t8 = bitmask (with one bit set) indicating the last byte written + # a0 = unaligned address of the last *word* written + + cttz t8, t8 + andnot a0, 7, a0 + addq a0, t8, v0 + ret + + END(__stpcpy) + +weak_alias (__stpcpy, stpcpy) diff -adurpN glibc-2.2/sysdeps/alpha/alphaev67/stpncpy.S glibc-2.2.1/sysdeps/alpha/alphaev67/stpncpy.S --- glibc-2.2/sysdeps/alpha/alphaev67/stpncpy.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/alpha/alphaev67/stpncpy.S Fri Dec 8 09:19:44 2000 @@ -0,0 +1,116 @@ +/* Copyright (C) 2000 Free Software Foundation, Inc. + Contributed by Richard Henderson (rth@redhat.com) + + 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. */ + +/* Copy no more then N bytes from SRC to DEST, returning the address of + the terminating '\0' in DEST. */ + +#include + + .arch ev6 + .set noat + .set noreorder + .text + +ENTRY(__stpncpy) + ldgp gp, 0(pv) +#ifdef PROF + lda AT, _mcount + jsr AT, (AT), _mcount +#endif + .prologue 1 + + mov a0, v0 + beq a2, $zerocount + + .align 4 + nop + nop + jsr t9, __stxncpy # do the work of the copy + + cttz t8, t4 + zapnot t0, t8, t5 + andnot a0, 7, a0 + bne a2, $multiword # do we have full words left? + + subq t8, 1, t2 + subq t10, 1, t3 + cmpult zero, t5, t5 + addq a0, t4, v0 + + or t2, t8, t2 + or t3, t10, t3 + addq v0, t5, v0 + andnot t3, t2, t3 + + zap t0, t3, t0 + nop + stq t0, 0(a0) + ret + +$multiword: + subq t8, 1, t7 # clear the final bits in the prev word + cmpult zero, t5, t5 + or t7, t8, t7 + zapnot t0, t7, t0 + + subq a2, 1, a2 + stq t0, 0(a0) + addq a0, 8, a1 + beq a2, 1f # loop over full words remaining + + nop + nop + nop + blbc a2, 0f + + stq zero, 0(a1) + subq a2, 1, a2 + addq a1, 8, a1 + beq a2, 1f + +0: stq zero, 0(a1) + subq a2, 2, a2 + nop + nop + + stq zero, 8(a1) + addq a1, 16, a1 + nop + bne a2, 0b + +1: ldq t0, 0(a1) # clear the leading bits in the final word + subq t10, 1, t7 + addq a0, t4, v0 + nop + + or t7, t10, t7 + addq v0, t5, v0 + zap t0, t7, t0 + stq t0, 0(a1) + +$zerocount: + nop + nop + nop + ret + + END(__stpncpy) + +weak_alias (__stpncpy, stpncpy) diff -adurpN glibc-2.2/sysdeps/alpha/alphaev67/strcat.S glibc-2.2.1/sysdeps/alpha/alphaev67/strcat.S --- glibc-2.2/sysdeps/alpha/alphaev67/strcat.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/alpha/alphaev67/strcat.S Fri Dec 8 09:19:54 2000 @@ -0,0 +1,62 @@ +/* Copyright (C) 2000 Free Software Foundation, Inc. + Contributed by Richard Henderson , 1996. + EV67 optimized by Rick Gorton . + + 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. */ + +/* Append a null-terminated string from SRC to DST. */ + +#include + + .arch ev6 + .set noreorder + .text + +ENTRY(strcat) + ldgp gp, 0(pv) +#ifdef PROF + .set noat + lda AT, _mcount + jsr AT, (AT), _mcount + .set at +#endif + .prologue 1 + + mov $16, $0 # E : set up return value + /* Find the end of the string. */ + ldq_u $1, 0($16) # L : load first quadword (a0 may be misaligned) + lda $2, -1 # E : + insqh $2, $16, $2 # U : + + andnot $16, 7, $16 # E : + or $2, $1, $1 # E : + cmpbge $31, $1, $2 # E : bits set iff byte == 0 + bne $2, $found # U : + +$loop: ldq $1, 8($16) # L : + addq $16, 8, $16 # E : + cmpbge $31, $1, $2 # E : + beq $2, $loop # U : + +$found: cttz $2, $3 # U0 : + addq $16, $3, $16 # E : + /* Now do the append. */ + mov $26, $23 # E : + jmp $31, __stxcpy # L0 : + + END(strcat) diff -adurpN glibc-2.2/sysdeps/alpha/alphaev67/strchr.S glibc-2.2.1/sysdeps/alpha/alphaev67/strchr.S --- glibc-2.2/sysdeps/alpha/alphaev67/strchr.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/alpha/alphaev67/strchr.S Fri Dec 8 09:20:02 2000 @@ -0,0 +1,101 @@ +/* Copyright (C) 2000 Free Software Foundation, Inc. + Contributed by Richard Henderson , 1996. + EV67 optimized by Rick Gorton . + + 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. */ + +/* Return the address of a given character within a null-terminated + string, or null if it is not found. */ + +#include + + .arch ev6 + .set noreorder + .set noat + +ENTRY(strchr) +#ifdef PROF + ldgp gp, 0(pv) + lda AT, _mcount + jsr AT, (AT), _mcount + .prologue 1 +#else + .prologue 0 +#endif + + ldq_u t0, 0(a0) # L : load first quadword Latency=3 + and a1, 0xff, t3 # E : 00000000000000ch + insbl a1, 1, t5 # U : 000000000000ch00 + insbl a1, 7, a2 # U : ch00000000000000 + + insbl t3, 6, a3 # U : 00ch000000000000 + or t5, t3, a1 # E : 000000000000chch + andnot a0, 7, v0 # E : align our loop pointer + lda t4, -1 # E : build garbage mask + + mskqh t4, a0, t4 # U : only want relevant part of first quad + or a2, a3, a2 # E : chch000000000000 + inswl a1, 2, t5 # E : 00000000chch0000 + inswl a1, 4, a3 # E : 0000chch00000000 + + or a1, a2, a1 # E : chch00000000chch + or a3, t5, t5 # E : 0000chchchch0000 + cmpbge zero, t0, t2 # E : bits set iff byte == zero + cmpbge zero, t4, t4 # E : bits set iff byte is garbage + + /* This quad is _very_ serialized. Lots of stalling happens */ + or t5, a1, a1 # E : chchchchchchchch + xor t0, a1, t1 # E : make bytes == c zero + cmpbge zero, t1, t3 # E : bits set iff byte == c + or t2, t3, t0 # E : bits set iff char match or zero match + + andnot t0, t4, t0 # E : clear garbage bits + cttz t0, a2 # U0 : speculative (in case we get a match) + nop # E : + bne t0, $found # U : + + /* + * Yuk. This loop is going to stall like crazy waiting for the + * data to be loaded. Not much can be done about it unless it's + * unrolled multiple times, which is generally unsafe. + */ +$loop: + ldq t0, 8(v0) # L : Latency=3 + addq v0, 8, v0 # E : + xor t0, a1, t1 # E : + cmpbge zero, t0, t2 # E : bits set iff byte == 0 + + cmpbge zero, t1, t3 # E : bits set iff byte == c + or t2, t3, t0 # E : + cttz t3, a2 # U0 : speculative (in case we get a match) + beq t0, $loop # U : + +$found: + negq t0, t1 # E : clear all but least set bit + and t0, t1, t0 # E : + and t0, t3, t1 # E : bit set iff byte was the char + addq v0, a2, v0 # E : Add in the bit number from above + + cmoveq t1, $31, v0 # E : Two mapping slots, latency = 2 + nop + nop + ret # L0 : + + END(strchr) + +weak_alias (strchr, index) diff -adurpN glibc-2.2/sysdeps/alpha/alphaev67/strlen.S glibc-2.2.1/sysdeps/alpha/alphaev67/strlen.S --- glibc-2.2/sysdeps/alpha/alphaev67/strlen.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/alpha/alphaev67/strlen.S Fri Dec 8 09:20:12 2000 @@ -0,0 +1,61 @@ +/* Copyright (C) 2000 Free Software Foundation, Inc. + Contributed by David Mosberger (davidm@cs.arizona.edu). + EV67 optimized by Rick Gorton . + + 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. */ + +/* Finds length of a 0-terminated string. */ + +#include + + .arch ev6 + .set noreorder + .set noat + +ENTRY(strlen) +#ifdef PROF + ldgp gp, 0(pv) + lda AT, _mcount + jsr AT, (AT), _mcount + .prologue 1 +#else + .prologue 0 +#endif + + ldq_u $1, 0($16) # L : load first quadword ($16 may be misaligned) + lda $2, -1($31) # E : + insqh $2, $16, $2 # U : + andnot $16, 7, $0 # E : + + or $2, $1, $1 # E : + cmpbge $31, $1, $2 # E : $2 <- bitmask: bit i == 1 <==> i-th byte == 0 + nop # E : + bne $2, $found # U : + +$loop: ldq $1, 8($0) # L : + addq $0, 8, $0 # E : addr += 8 + cmpbge $31, $1, $2 # E : + beq $2, $loop # U : + +$found: + cttz $2, $3 # U0 : + addq $0, $3, $0 # E : + subq $0, $16, $0 # E : + ret $31, ($26) # L0 : + + END(strlen) diff -adurpN glibc-2.2/sysdeps/alpha/alphaev67/strncat.S glibc-2.2.1/sysdeps/alpha/alphaev67/strncat.S --- glibc-2.2/sysdeps/alpha/alphaev67/strncat.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/alpha/alphaev67/strncat.S Wed Dec 27 15:29:08 2000 @@ -0,0 +1,89 @@ +/* Copyright (C) 2000 Free Software Foundation, Inc. + Contributed by Richard Henderson , 1996. + EV67 optimized by Rick Gorton . + + 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. */ + +/* Append no more than COUNT characters from the null-terminated string SRC + to the null-terminated string DST. Always null-terminate the new DST. */ + +#include + + .arch ev6 + .set noreorder + .text + +ENTRY(strncat) + ldgp gp, 0(pv) +#ifdef PROF + .set noat + lda AT, _mcount + jsr AT, (AT), _mcount + .set at +#endif + .prologue 1 + + mov a0, v0 # set up return value + beq a2, $zerocount # U : + /* Find the end of the string. */ + ldq_u t0, 0(a0) # L : load first quadword (a0 may be misaligned) + lda t1, -1 # E : + + insqh t1, v0, t1 # U : + andnot a0, 7, a0 # E : + nop # E : + or t1, t0, t0 # E : + + nop # E : + nop # E : + cmpbge zero, t0, t1 # E : bits set iff byte == 0 + bne t1, $found # U : + +$loop: ldq t0, 8(a0) # L : + addq a0, 8, a0 # E : + cmpbge zero, t0, t1 # E : + beq t1, $loop # U : + +$found: cttz t1, t2 # U0 : + addq a0, t2, a0 # E : + jsr t9, __stxncpy # L0 : Now do the append. + + /* Worry about the null termination. */ + + cttz t10, t2 # U0: byte offset of end-of-count. + nop # E : + zapnot t0, t8, t1 # U : was last byte a null? + nop # E : + + bne t1, 0f # U : + nop # E : + nop # E : + ret # L0 : + +0: addq t2, a0, a0 # E : address of end-of-count + stb zero, 1(a0) # L : + nop # E : + ret # L0 : + +$zerocount: + nop # E : + nop # E : + nop # E : + ret # L0 : + + END(strncat) diff -adurpN glibc-2.2/sysdeps/alpha/dl-machine.h glibc-2.2.1/sysdeps/alpha/dl-machine.h --- glibc-2.2/sysdeps/alpha/dl-machine.h Thu Oct 26 22:57:33 2000 +++ glibc-2.2.1/sysdeps/alpha/dl-machine.h Thu Nov 16 11:12:04 2000 @@ -314,10 +314,14 @@ $fixup_stack: involves copying everything down, since the stack pointer must always be 16-byte aligned. */ ldq $2, 0($sp) + ldq $5, _dl_argv + subq $31, $1, $6 subq $2, $1, $2 + s8addq $6, $5, $5 mov $sp, $4 s8addq $1, $sp, $3 stq $2, 0($sp) + stq $5, _dl_argv /* Copy down argv. */ 0: ldq $5, 8($3) addq $4, 8, $4 diff -adurpN glibc-2.2/sysdeps/alpha/elf/start.S glibc-2.2.1/sysdeps/alpha/elf/start.S --- glibc-2.2/sysdeps/alpha/elf/start.S Sun Aug 23 10:32:45 1998 +++ glibc-2.2.1/sysdeps/alpha/elf/start.S Sat Jan 6 20:35:37 2001 @@ -1,5 +1,5 @@ /* Startup code for Alpha/ELF. - Copyright (C) 1993, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1993,1995,1996,1997,1998,2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Richard Henderson @@ -59,3 +59,11 @@ _start: /* For ECOFF backwards compatibility. */ weak_alias(_start, __start) + +/* Define a symbol for the first piece of initialized data. */ + .data + .globl __data_start +__data_start: + .long 0 + .weak data_start + data_start = __data_start diff -adurpN glibc-2.2/sysdeps/alpha/fpu/bits/mathdef.h glibc-2.2.1/sysdeps/alpha/fpu/bits/mathdef.h --- glibc-2.2/sysdeps/alpha/fpu/bits/mathdef.h Thu Sep 7 11:56:38 2000 +++ glibc-2.2.1/sysdeps/alpha/fpu/bits/mathdef.h Sat Jan 6 20:35:37 2001 @@ -58,9 +58,6 @@ typedef double double_t; typedef double float_t; typedef double double_t; -/* Strange compiler, we don't know how it works. */ -# define FLT_EVAL_METHOD -1 - /* Define `INFINITY' as value of type `float'. */ # define INFINITY HUGE_VALF @@ -69,9 +66,6 @@ typedef double double_t; /* The values returned by `ilogb' for 0 and NaN respectively. */ # define FP_ILOGB0 (-2147483647) # define FP_ILOGBNAN (2147483647) - -/* Number of decimal digits for the `double' type. */ -# define DECIMAL_DIG 15 #endif /* ISO C99 */ diff -adurpN glibc-2.2/sysdeps/alpha/fpu/libm-test-ulps glibc-2.2.1/sysdeps/alpha/fpu/libm-test-ulps --- glibc-2.2/sysdeps/alpha/fpu/libm-test-ulps Thu Oct 26 22:57:33 2000 +++ glibc-2.2.1/sysdeps/alpha/fpu/libm-test-ulps Thu Nov 16 11:12:04 2000 @@ -7,7 +7,7 @@ ifloat: 2 Test "asin (0.5) == pi/6": float: 2 ifloat: 2 -Test "asin (0.7) == 0.7753974966107530637": +Test "asin (0.7) == 0.77539749661075306374035335271498708": double: 1 float: 2 idouble: 1 @@ -164,12 +164,12 @@ idouble: 1 Test "Imaginary part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i": float: 1 ifloat: 1 -Test "Real part of: cexp (0.7 + 1.2 i) == 0.7296989091503236012 + 1.8768962328348102821 i": +Test "Real part of: cexp (0.7 + 1.2 i) == 0.72969890915032360123451688642930727 + 1.8768962328348102821139467908203072 i": double: 1 float: 1 idouble: 1 ifloat: 1 -Test "Imaginary part of: cexp (0.7 + 1.2 i) == 0.7296989091503236012 + 1.8768962328348102821 i": +Test "Imaginary part of: cexp (0.7 + 1.2 i) == 0.72969890915032360123451688642930727 + 1.8768962328348102821139467908203072 i": float: 1 ifloat: 1 @@ -238,7 +238,7 @@ float: 1 ifloat: 1 # cos -Test "cos (0.7) == 0.7648421872844884262": +Test "cos (0.7) == 0.76484218728448842625585999019186495": double: 1 float: 1 idouble: 1 @@ -363,7 +363,7 @@ double: 2 float: 1 idouble: 2 ifloat: 1 -Test "exp10 (0.7) == 5.0118723362727228500": +Test "exp10 (0.7) == 5.0118723362727228500155418688494574": float: 1 ifloat: 1 Test "exp10 (3) == 1000": @@ -552,7 +552,7 @@ idouble: 1 ifloat: 1 # sincos -Test "sincos (0.7, &sin_res, &cos_res) puts 0.76484218728448842626 in cos_res": +Test "sincos (0.7, &sin_res, &cos_res) puts 0.76484218728448842625585999019186495 in cos_res": double: 1 float: 1 idouble: 1 @@ -562,7 +562,7 @@ double: 1 float: 0.5 idouble: 1 ifloat: 0.5 -Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.866025403784438646764 in sin_res": +Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res": double: 1 float: 1 idouble: 1 @@ -572,7 +572,7 @@ double: 0.2758 float: 0.3667 idouble: 0.2758 ifloat: 0.3667 -Test "sincos (pi/6, &sin_res, &cos_res) puts 0.866025403784438646764 in cos_res": +Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res": float: 1 ifloat: 1 diff -adurpN glibc-2.2/sysdeps/alpha/htonl.S glibc-2.2.1/sysdeps/alpha/htonl.S --- glibc-2.2/sysdeps/alpha/htonl.S Fri Jan 30 04:24:41 1998 +++ glibc-2.2.1/sysdeps/alpha/htonl.S Sat Jan 6 20:35:30 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998, 2000 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 @@ -30,15 +30,13 @@ ENTRY(htonl) .prologue 0 #endif - extlh a0, 5, t1 # t1 = dd000000 - zap a0, 0xfd, t2 # t2 = 0000cc00 - sll t2, 5, t2 # t2 = 00198000 - s8addl t2, t1, t1 # t1 = ddcc0000 - zap a0, 0xfb, t2 # t2 = 00bb0000 - srl t2, 8, t2 # t2 = 0000bb00 - extbl a0, 3, v0 # v0 = 000000aa - or t1, v0, v0 # v0 = ddcc00aa - or t2, v0, v0 # v0 = ddccbbaa + inslh a0, 7, t0 # t0 = 0000000000AABBCC + inswl a0, 3, t1 # t1 = 000000CCDD000000 + or t1, t0, t1 # t1 = 000000CCDDAABBCC + srl t1, 16, t2 # t2 = 0000000000CCDDAA + zapnot t1, 0x0A, t0 # t0 = 00000000DD00BB00 + zapnot t2, 0x05, t3 # t3 = 0000000000CC00AA + addl t0, t3, v0 # v0 = ssssssssDDCCBBAA ret END(htonl) diff -adurpN glibc-2.2/sysdeps/alpha/rawmemchr.S glibc-2.2.1/sysdeps/alpha/rawmemchr.S --- glibc-2.2/sysdeps/alpha/rawmemchr.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/alpha/rawmemchr.S Fri Dec 8 09:16:25 2000 @@ -0,0 +1,89 @@ +/* Copyright (C) 2000 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. */ + +/* Return pointer to first occurrence of CH in STR. */ + +#include + + .set noreorder + .set noat + +ENTRY(__rawmemchr) +#ifdef PROF + ldgp gp, 0(pv) + lda AT, _mcount + jsr AT, (AT), _mcount + .prologue 1 +#else + .prologue 0 +#endif + + zapnot a1, 1, a1 # e0 : zero extend the search character + ldq_u t0, 0(a0) # .. e1 : load first quadword + sll a1, 8, t5 # e0 : replicate the search character + andnot a0, 7, v0 # .. e1 : align our loop pointer + + or t5, a1, a1 # e0 : + lda t4, -1 # .. e1 : build garbage mask + sll a1, 16, t5 # e0 : + unop # : + + mskqh t4, a0, t4 # e0 : + or t5, a1, a1 # .. e1 : + sll a1, 32, t5 # e0 : + cmpbge zero, t4, t4 # .. e1 : bits set iff byte is garbage + + or t5, a1, a1 # e0 : + xor t0, a1, t1 # .. e1 : make bytes == c zero + cmpbge zero, t1, t3 # e0 : bits set iff byte == c + unop # : + + andnot t3, t4, t0 # e0 : clear garbage bits + fnop # .. fa : + unop # : + bne t0, $found # .. e1 (zdb) + + .align 4 +$loop: + ldq t0, 8(v0) # e0 : + addq v0, 8, v0 # .. e1 : + nop # e0 : + xor t0, a1, t1 # .. e1 (ev5 data stall) + + cmpbge zero, t1, t0 # e0 : bits set iff byte == c + beq t0, $loop # .. e1 (zdb) + +$found: + negq t0, t1 # e0 : clear all but least set bit + and t0, t1, t0 # e1 (stall) + and t0, 0xf0, t2 # e0 : binary search for that set bit + and t0, 0xcc, t3 # .. e1 : + + and t0, 0xaa, t4 # e0 : + cmovne t2, 4, t2 # .. e1 : + cmovne t3, 2, t3 # e0 : + cmovne t4, 1, t4 # .. e1 : + + addq t2, t3, t2 # e0 : + addq v0, t4, v0 # .. e1 : + addq v0, t2, v0 # e0 : + ret # .. e1 : + + END(__rawmemchr) + +weak_alias (__rawmemchr, rawmemchr) diff -adurpN glibc-2.2/sysdeps/alpha/setjmp.S glibc-2.2.1/sysdeps/alpha/setjmp.S --- glibc-2.2/sysdeps/alpha/setjmp.S Mon Dec 1 09:09:25 1997 +++ glibc-2.2.1/sysdeps/alpha/setjmp.S Wed Nov 22 10:59:53 2000 @@ -72,11 +72,11 @@ END(__sigsetjmp) /* Put these traditional entry points in the same file so that we can elide much of the nonsense in trying to jmp to the real function. */ -ENTRY(__setjmp) +ENTRY(_setjmp) ldgp gp, 0(pv) mov 0, a1 br $sigsetjmp_local -END(__setjmp) +END(_setjmp) ENTRY(setjmp) ldgp gp, 0(pv) @@ -84,5 +84,5 @@ ENTRY(setjmp) br $sigsetjmp_local END(setjmp) -weak_alias(__setjmp, _setjmp) +weak_extern(_setjmp) weak_extern(setjmp) diff -adurpN glibc-2.2/sysdeps/alpha/strcat.S glibc-2.2.1/sysdeps/alpha/strcat.S --- glibc-2.2/sysdeps/alpha/strcat.S Tue Nov 19 19:44:29 1996 +++ glibc-2.2.1/sysdeps/alpha/strcat.S Sat Jan 6 20:35:30 2001 @@ -65,7 +65,7 @@ $found: negq t1, t2 # clear all but /* Now do the append. */ - jsr t9, __stxcpy - ret + mov ra, t9 + jmp $31, __stxcpy END(strcat) diff -adurpN glibc-2.2/sysdeps/alpha/strcpy.S glibc-2.2.1/sysdeps/alpha/strcpy.S --- glibc-2.2/sysdeps/alpha/strcpy.S Tue Nov 19 19:44:30 1996 +++ glibc-2.2.1/sysdeps/alpha/strcpy.S Sat Jan 6 20:35:30 2001 @@ -35,7 +35,7 @@ ENTRY(strcpy) .prologue 1 mov a0, v0 # set up return value - jsr t9, __stxcpy # do the copy - ret + mov ra, t9 + jmp $31, __stxcpy # do the copy END(strcpy) diff -adurpN glibc-2.2/sysdeps/alpha/strncpy.S glibc-2.2.1/sysdeps/alpha/strncpy.S --- glibc-2.2/sysdeps/alpha/strncpy.S Thu Jun 26 15:15:36 1997 +++ glibc-2.2.1/sysdeps/alpha/strncpy.S Sat Jan 6 20:35:30 2001 @@ -53,7 +53,6 @@ ENTRY(strncpy) ret # .. e1 : $multiword: - subq t8, 1, t7 # e0 : clear the final bits in the prev or t7, t8, t7 # e1 : word zapnot t0, t7, t0 # e0 : diff -adurpN glibc-2.2/sysdeps/arm/fpu/bits/mathdef.h glibc-2.2.1/sysdeps/arm/fpu/bits/mathdef.h --- glibc-2.2/sysdeps/arm/fpu/bits/mathdef.h Thu Sep 7 11:56:38 2000 +++ glibc-2.2.1/sysdeps/arm/fpu/bits/mathdef.h Sat Jan 6 20:35:37 2001 @@ -29,9 +29,6 @@ typedef float float_t; /* `float' expre typedef double double_t; /* `double' expressions are evaluated as `double'. */ -/* Signal that types stay as they were declared. */ -# define FLT_EVAL_METHOD 0 - /* Define `INFINITY' as value of type `float'. */ # define INFINITY HUGE_VALF @@ -39,9 +36,6 @@ typedef double double_t; /* `double' exp /* The values returned by `ilogb' for 0 and NaN respectively. */ # define FP_ILOGB0 (-2147483647) # define FP_ILOGBNAN (2147483647) - -/* Number of decimal digits for the `double' type. */ -# define DECIMAL_DIG 15 #endif /* ISO C99 */ diff -adurpN glibc-2.2/sysdeps/arm/fpu/setjmp.S glibc-2.2.1/sysdeps/arm/fpu/setjmp.S --- glibc-2.2/sysdeps/arm/fpu/setjmp.S Fri Aug 14 09:20:38 1998 +++ glibc-2.2.1/sysdeps/arm/fpu/setjmp.S Wed Nov 22 10:59:53 2000 @@ -22,9 +22,6 @@ #define _ASM #include - /* Binary compatibility entry point. */ -ENTRY (__setjmp) - mov r1, #0 ENTRY (__sigsetjmp) /* Save registers */ sfmea f4, 4, [r0]! @@ -35,4 +32,4 @@ ENTRY (__sigsetjmp) /* Make a tail call to __sigjmp_save; it takes the same args. */ B PLTJMP(C_SYMBOL_NAME(__sigjmp_save)) -END (__setjmp) +END (__sigsetjmp) diff -adurpN glibc-2.2/sysdeps/arm/setjmp.S glibc-2.2.1/sysdeps/arm/setjmp.S --- glibc-2.2/sysdeps/arm/setjmp.S Wed Mar 18 13:01:34 1998 +++ glibc-2.2.1/sysdeps/arm/setjmp.S Wed Nov 22 10:59:53 2000 @@ -22,13 +22,10 @@ #define _ASM #include - /* Binary compatibility entry point. */ -ENTRY (__setjmp) - mov r1, #0 ENTRY (__sigsetjmp) /* Save registers */ stmia r0, {v1-v6, sl, fp, sp, lr} /* Make a tail call to __sigjmp_save; it takes the same args. */ B PLTJMP(C_SYMBOL_NAME(__sigjmp_save)) -END (__setjmp) +END (__sigsetjmp) diff -adurpN glibc-2.2/sysdeps/generic/__longjmp.c glibc-2.2.1/sysdeps/generic/__longjmp.c --- glibc-2.2/sysdeps/generic/__longjmp.c Sun Oct 12 20:52:07 1997 +++ glibc-2.2.1/sysdeps/generic/__longjmp.c Wed Nov 22 10:59:53 2000 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1994, 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1994, 1995, 1996, 1997, 2000 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 @@ -22,11 +22,8 @@ /* Jump to the position specified by ENV, causing the setjmp call there to return VAL, or 1 if VAL is 0. */ -__NORETURN void -__longjmp (env, val) - const __jmp_buf env; - int val; +__longjmp (__jmp_buf env, int val) { if (val == 0) val = 1; diff -adurpN glibc-2.2/sysdeps/generic/_strerror.c glibc-2.2.1/sysdeps/generic/_strerror.c --- glibc-2.2/sysdeps/generic/_strerror.c Thu Aug 31 14:45:18 2000 +++ glibc-2.2.1/sysdeps/generic/_strerror.c Fri Dec 1 11:55:08 2000 @@ -56,7 +56,7 @@ __strerror_r (int errnum, char *buf, siz buffer size. */ q = __mempcpy (buf, unk, MIN (unklen, buflen)); if (unklen < buflen) - memcpy (q, p, MIN (&numbuf[21] - p, buflen - unklen)); + memcpy (q, p, MIN ((size_t) (&numbuf[21] - p), buflen - unklen)); /* Terminate the string in any case. */ if (buflen > 0) diff -adurpN glibc-2.2/sysdeps/generic/bits/byteswap.h glibc-2.2.1/sysdeps/generic/bits/byteswap.h --- glibc-2.2/sysdeps/generic/bits/byteswap.h Fri Nov 20 14:05:12 1998 +++ glibc-2.2.1/sysdeps/generic/bits/byteswap.h Wed Jan 10 15:54:42 2001 @@ -1,5 +1,5 @@ /* Macros to swap the order of bytes in integer values. - Copyright (C) 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 2000, 2001 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 @@ -53,12 +53,27 @@ __bswap_32 (unsigned int __bsx) #if defined __GNUC__ && __GNUC__ >= 2 /* Swap bytes in 64 bit value. */ +# define __bswap_constant_64(x) \ + ((((x) & 0xff00000000000000ull) >> 56) \ + | (((x) & 0x00ff000000000000ull) >> 40) \ + | (((x) & 0x0000ff0000000000ull) >> 24) \ + | (((x) & 0x000000ff00000000ull) >> 8) \ + | (((x) & 0x00000000ff000000ull) << 8) \ + | (((x) & 0x0000000000ff0000ull) << 24) \ + | (((x) & 0x000000000000ff00ull) << 40) \ + | (((x) & 0x00000000000000ffull) << 56)) + # define __bswap_64(x) \ (__extension__ \ - ({ union { unsigned long long int __ll; \ - unsigned long int __l[2]; } __v, __r; \ - __v.__ll = (x); \ - __r.__l[0] = __bswap_32 (__v.__l[1]); \ - __r.__l[1] = __bswap_32 (__v.__l[0]); \ + ({ union { __extension__ unsigned long long int __ll; \ + unsigned int __l[2]; } __w, __r; \ + if (__builtin_constant_p (x)) \ + __r.__ll = __bswap_constant_64 (x); \ + else \ + { \ + __w.__ll = (x); \ + __r.__l[0] = __bswap_32 (__w.__l[1]); \ + __r.__l[1] = __bswap_32 (__w.__l[0]); \ + } \ __r.__ll; })) #endif diff -adurpN glibc-2.2/sysdeps/generic/bits/mathdef.h glibc-2.2.1/sysdeps/generic/bits/mathdef.h --- glibc-2.2/sysdeps/generic/bits/mathdef.h Thu Sep 7 11:56:38 2000 +++ glibc-2.2.1/sysdeps/generic/bits/mathdef.h Sat Jan 6 20:35:39 2001 @@ -30,9 +30,6 @@ typedef double float_t; /* `float' expr typedef double double_t; /* `double' expressions are evaluated as `double'. */ -/* Signal that both types are `double'. */ -# define FLT_EVAL_METHOD 1 - /* Define `INFINITY' as value of type `float'. */ # define INFINITY HUGE_VALF @@ -40,9 +37,6 @@ typedef double double_t; /* `double' exp /* The values returned by `ilogb' for 0 and NaN respectively. */ # define FP_ILOGB0 (-2147483647) # define FP_ILOGBNAN 2147483647 - -/* Number of decimal digits for the `double' type. */ -# define DECIMAL_DIG 15 #endif /* ISO C99 */ diff -adurpN glibc-2.2/sysdeps/generic/bsd-_setjmp.c glibc-2.2.1/sysdeps/generic/bsd-_setjmp.c --- glibc-2.2/sysdeps/generic/bsd-_setjmp.c Fri Jun 18 19:03:11 1999 +++ glibc-2.2.1/sysdeps/generic/bsd-_setjmp.c Fri Dec 1 11:55:08 2000 @@ -1,5 +1,5 @@ -/* BSD `setjmp' entry point to `sigsetjmp (..., 0)'. Stub version. - Copyright (C) 1994, 1997, 1999 Free Software Foundation, Inc. +/* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'. Stub version. + Copyright (C) 1994, 1997, 1999, 2000 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 @@ -20,7 +20,7 @@ #include #include -#undef setjmp +#undef _setjmp /* This implementation in C will not usually work, because the call really needs to be a tail-call so __sigsetjmp saves the state of @@ -28,7 +28,7 @@ immediate unwinds. */ int -setjmp (jmp_buf env) +_setjmp (jmp_buf env) { return __sigsetjmp (env, 0); } diff -adurpN glibc-2.2/sysdeps/generic/dl-cache.c glibc-2.2.1/sysdeps/generic/dl-cache.c --- glibc-2.2/sysdeps/generic/dl-cache.c Wed Nov 8 14:10:20 2000 +++ glibc-2.2.1/sysdeps/generic/dl-cache.c Sat Jan 6 20:35:37 2001 @@ -22,13 +22,15 @@ #include #include #include +#include +#include -/* System-dependent function to read a file's whole contents - in the most convenient manner available. */ -extern void *_dl_sysdep_read_whole_file (const char *filename, - size_t *filesize_ptr, - int mmap_prot); +extern const char *_dl_platform; + +#ifndef _DL_PLATFORMS_COUNT +# define _DL_PLATFORMS_COUNT 0 +#endif /* This is the starting address and the size of the mmap()ed file. */ static struct cache_file *cache; @@ -142,6 +144,7 @@ while (0) or null if none is found. */ const char * +internal_function _dl_load_cache_lookup (const char *name) { int left, right, middle; @@ -209,6 +212,7 @@ _dl_load_cache_lookup (const char *name) { /* This file ends in static libraries where we don't have a hwcap. */ unsigned long int *hwcap; + uint64_t platform; weak_extern (_dl_hwcap); /* This is where the strings start. */ @@ -218,9 +222,19 @@ _dl_load_cache_lookup (const char *name) cache_data_size = (const char *) cache + cachesize - cache_data; hwcap = &_dl_hwcap; + platform = _dl_string_platform (_dl_platform); + if (platform != -1) + platform = 1ULL << platform; -#define HWCAP_CHECK \ - if (hwcap && (cache_new->libs[middle].hwcap & *hwcap) > _dl_hwcap) \ + /* Only accept hwcap if it's for the right platform. */ +#define HWCAP_CHECK \ + if (_DL_PLATFORMS_COUNT && platform != -1 \ + && (cache_new->libs[middle].hwcap & _DL_HWCAP_PLATFORM) != 0 \ + && (cache_new->libs[middle].hwcap & _DL_HWCAP_PLATFORM) != platform) \ + continue; \ + if (hwcap \ + && ((cache_new->libs[middle].hwcap & *hwcap & ~_DL_HWCAP_PLATFORM) \ + > *hwcap)) \ continue SEARCH_CACHE (cache_new); } diff -adurpN glibc-2.2/sysdeps/generic/dl-environ.c glibc-2.2.1/sysdeps/generic/dl-environ.c --- glibc-2.2/sysdeps/generic/dl-environ.c Thu May 4 10:09:27 2000 +++ glibc-2.2.1/sysdeps/generic/dl-environ.c Sat Jan 6 20:35:37 2001 @@ -18,9 +18,10 @@ Boston, MA 02111-1307, USA. */ #include - +#include extern char **_environ; +extern void unsetenv (const char *name); /* Walk through the environment of the process and return all entries starting with `LD_'. */ diff -adurpN glibc-2.2/sysdeps/generic/dl-procinfo.h glibc-2.2.1/sysdeps/generic/dl-procinfo.h --- glibc-2.2/sysdeps/generic/dl-procinfo.h Fri May 26 12:38:36 2000 +++ glibc-2.2.1/sysdeps/generic/dl-procinfo.h Thu Nov 16 11:12:04 2000 @@ -27,12 +27,20 @@ /* There are no hardware capabilities defined. */ #define _dl_hwcap_string(idx) "" +/* There are no different platforms defined. */ +#define _dl_platform_string(idx) "" + /* By default there is no important hardware capability. */ #define HWCAP_IMPORTANT (0) +/* There're no platforms to filter out. */ +#define _DL_HWCAP_PLATFORM 0 + /* We don't have any hardware capabilities. */ #define _DL_HWCAP_COUNT 0 #define _dl_string_hwcap(str) (-1) + +#define _dl_string_platform(str) (-1) #endif /* dl-procinfo.h */ diff -adurpN glibc-2.2/sysdeps/generic/dl-sysdep.c glibc-2.2.1/sysdeps/generic/dl-sysdep.c --- glibc-2.2/sysdeps/generic/dl-sysdep.c Thu Nov 2 16:50:15 2000 +++ glibc-2.2.1/sysdeps/generic/dl-sysdep.c Sat Jan 6 20:35:37 2001 @@ -1,5 +1,5 @@ /* Operating system support for run-time dynamic linker. Generic Unix version. - Copyright (C) 1995, 1996, 1997, 1998, 2000 Free Software Foundation, Inc. + Copyright (C) 1995,1996,1997,1998,2000,2001 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 @@ -191,6 +191,7 @@ _dl_sysdep_start (void **start_argptr, } void +internal_function _dl_sysdep_start_cleanup (void) { } @@ -416,7 +417,7 @@ _dl_important_hwcaps (const char *platfo #undef add /* Now we are ready to install the string pointers and length. */ - for (n = 0; n < (1 << cnt); ++n) + for (n = 0; n < (1UL << cnt); ++n) result[n].len = 0; n = cnt; do @@ -433,7 +434,7 @@ _dl_important_hwcaps (const char *platfo /* The first half of the strings all include the first string. */ n = (1 << cnt) - 2; rp = &result[2]; - while (n != (1 << (cnt - 1))) + while (n != (1UL << (cnt - 1))) { if ((n & 1) != 0) rp[0].str = rp[-2].str + rp[-2].len; diff -adurpN glibc-2.2/sysdeps/generic/e_j0l.c glibc-2.2.1/sysdeps/generic/e_j0l.c --- glibc-2.2/sysdeps/generic/e_j0l.c Mon Nov 17 18:41:12 1997 +++ glibc-2.2.1/sysdeps/generic/e_j0l.c Sat Jan 6 20:35:37 2001 @@ -1,6 +1,7 @@ #include #include #include +#include "math_private.h" long double __ieee754_j0l (long double x) diff -adurpN glibc-2.2/sysdeps/generic/e_j1l.c glibc-2.2.1/sysdeps/generic/e_j1l.c --- glibc-2.2/sysdeps/generic/e_j1l.c Mon Nov 17 18:41:12 1997 +++ glibc-2.2.1/sysdeps/generic/e_j1l.c Sat Jan 6 20:35:37 2001 @@ -1,6 +1,7 @@ #include #include #include +#include "math_private.h" long double __ieee754_j1l (long double x) diff -adurpN glibc-2.2/sysdeps/generic/e_jnl.c glibc-2.2.1/sysdeps/generic/e_jnl.c --- glibc-2.2/sysdeps/generic/e_jnl.c Mon Nov 17 18:41:12 1997 +++ glibc-2.2.1/sysdeps/generic/e_jnl.c Sat Jan 6 20:35:37 2001 @@ -1,6 +1,7 @@ #include #include #include +#include "math_private.h" long double __ieee754_jnl (int n, long double x) diff -adurpN glibc-2.2/sysdeps/generic/e_lgammal_r.c glibc-2.2.1/sysdeps/generic/e_lgammal_r.c --- glibc-2.2/sysdeps/generic/e_lgammal_r.c Sun Aug 1 14:44:44 1999 +++ glibc-2.2.1/sysdeps/generic/e_lgammal_r.c Sat Jan 6 20:35:37 2001 @@ -1,6 +1,7 @@ #include #include #include +#include "math_private.h" long double __ieee754_lgammal_r (long double x, int *signgamp) diff -adurpN glibc-2.2/sysdeps/generic/elf/backtracesyms.c glibc-2.2.1/sysdeps/generic/elf/backtracesyms.c --- glibc-2.2/sysdeps/generic/elf/backtracesyms.c Tue Mar 28 11:05:42 2000 +++ glibc-2.2.1/sysdeps/generic/elf/backtracesyms.c Wed Jan 10 15:54:43 2001 @@ -1,5 +1,5 @@ /* Return list with names for address in backtrace. - Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1998. @@ -18,6 +18,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include #include #include #include @@ -50,7 +51,7 @@ __backtrace_symbols (array, size) status[cnt] = _dl_addr (array[cnt], &info[cnt]); if (status[cnt] && info[cnt].dli_fname && info[cnt].dli_fname[0] != '\0') /* We have some info, compute the length of the string which will be - "()[+offset]. */ + "() [+offset]. */ total += (strlen (info[cnt].dli_fname ?: "") + (info[cnt].dli_sname ? strlen (info[cnt].dli_sname) + 3 + WORD_WIDTH + 3 @@ -61,7 +62,7 @@ __backtrace_symbols (array, size) } /* Allocate memory for the result. */ - result = malloc (size * sizeof (char *) + total); + result = (char **) malloc (size * sizeof (char *) + total); if (result != NULL) { char *last = (char *) (result + size); @@ -93,6 +94,7 @@ __backtrace_symbols (array, size) else last += 1 + sprintf (last, "[%p]", array[cnt]); } + assert (last <= (char *) result + size * sizeof (char *) + total); } return result; diff -adurpN glibc-2.2/sysdeps/generic/enbl-secure.c glibc-2.2.1/sysdeps/generic/enbl-secure.c --- glibc-2.2/sysdeps/generic/enbl-secure.c Mon Jun 22 13:49:18 1998 +++ glibc-2.2.1/sysdeps/generic/enbl-secure.c Sat Jan 6 20:35:37 2001 @@ -1,5 +1,5 @@ /* Define and initialize the `__libc_enable_secure' flag. Generic version. - Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998, 2000 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 @@ -21,7 +21,7 @@ dl-sysdep.c defines and initializes __libc_enable_secure. */ #include - +#include /* Safest assumption, if somehow the initializer isn't run. */ int __libc_enable_secure = 1; diff -adurpN glibc-2.2/sysdeps/generic/errqueue.h glibc-2.2.1/sysdeps/generic/errqueue.h --- glibc-2.2/sysdeps/generic/errqueue.h Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/generic/errqueue.h Wed Jan 10 13:45:53 2001 @@ -0,0 +1,7 @@ +#ifndef _BITS_ERRQUEUE_H +#define _BITS_ERRQUEUE_H 1 + +/* This platform does not support socket error reporting + via MSG_ERRQUEUE. */ + +#endif /* bits/errqueue.h */ diff -adurpN glibc-2.2/sysdeps/generic/get_clockfreq.c glibc-2.2.1/sysdeps/generic/get_clockfreq.c --- glibc-2.2/sysdeps/generic/get_clockfreq.c Tue Apr 11 00:00:01 2000 +++ glibc-2.2.1/sysdeps/generic/get_clockfreq.c Sat Jan 6 20:35:37 2001 @@ -17,6 +17,8 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include + unsigned long long int __get_clockfreq (void) { diff -adurpN glibc-2.2/sysdeps/generic/getpt.c glibc-2.2.1/sysdeps/generic/getpt.c --- glibc-2.2/sysdeps/generic/getpt.c Mon Sep 21 09:26:16 1998 +++ glibc-2.2.1/sysdeps/generic/getpt.c Wed Jan 10 15:54:42 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1998 Free Software Foundation, Inc. +/* Copyright (C) 1998, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Zack Weinberg , 1998. @@ -30,5 +30,16 @@ __getpt () } weak_alias (__getpt, getpt) +/* We cannot define posix_openpt in general for BSD systems. */ +int +__posix_openpt (oflag) + int oflag; +{ + __set_errno (ENOSYS); + return -1; +} +weak_alias (__posix_openpt, posix_openpt) + stub_warning (getpt) +stub_warning (posix_openpt) #include diff -adurpN glibc-2.2/sysdeps/generic/glob.c glibc-2.2.1/sysdeps/generic/glob.c --- glibc-2.2/sysdeps/generic/glob.c Thu Aug 31 14:45:19 2000 +++ glibc-2.2.1/sysdeps/generic/glob.c Sat Jan 6 20:35:37 2001 @@ -379,7 +379,7 @@ glob (pattern, flags, errfunc, pglob) const char *dirname; size_t dirlen; int status; - int oldcount; + size_t oldcount; if (pattern == NULL || pglob == NULL || (flags & ~__GLOB_FLAGS) != 0) { @@ -399,7 +399,7 @@ glob (pattern, flags, errfunc, pglob) { /* Allocate working buffer large enough for our work. Note that we have at least an opening and closing brace. */ - int firstc; + size_t firstc; char *alt_start; const char *p; const char *next; @@ -622,7 +622,7 @@ glob (pattern, flags, errfunc, pglob) pglob->gl_pathv = NULL; else { - int i; + size_t i; pglob->gl_pathv = (char **) malloc ((pglob->gl_offs + 1) * sizeof (char *)); if (pglob->gl_pathv == NULL) @@ -671,7 +671,7 @@ glob (pattern, flags, errfunc, pglob) { struct passwd *p; # if defined HAVE_GETPWNAM_R || defined _LIBC - size_t pwbuflen = sysconf (_SC_GETPW_R_SIZE_MAX); + long int pwbuflen = sysconf (_SC_GETPW_R_SIZE_MAX); char *pwtmpbuf; struct passwd pwbuf; int save = errno; @@ -755,7 +755,7 @@ glob (pattern, flags, errfunc, pglob) { struct passwd *p; # if defined HAVE_GETPWNAM_R || defined _LIBC - size_t buflen = sysconf (_SC_GETPW_R_SIZE_MAX); + long int buflen = sysconf (_SC_GETPW_R_SIZE_MAX); char *pwtmpbuf; struct passwd pwbuf; int save = errno; @@ -868,7 +868,7 @@ glob (pattern, flags, errfunc, pglob) have to glob for the directory, and then glob for the pattern in each directory found. */ glob_t dirs; - register int i; + size_t i; if ((flags & GLOB_ALTDIRFUNC) != 0) { @@ -1046,7 +1046,7 @@ glob (pattern, flags, errfunc, pglob) if (flags & GLOB_MARK) { /* Append slashes to directory names. */ - int i; + size_t i; struct stat st; #ifdef HAVE_STAT64 struct stat64 st64; @@ -1092,7 +1092,7 @@ globfree (pglob) { if (pglob->gl_pathv != NULL) { - register int i; + size_t i; for (i = 0; i < pglob->gl_pathc; ++i) if (pglob->gl_pathv[pglob->gl_offs + i] != NULL) free ((__ptr_t) pglob->gl_pathv[pglob->gl_offs + i]); diff -adurpN glibc-2.2/sysdeps/generic/if_index.c glibc-2.2.1/sysdeps/generic/if_index.c --- glibc-2.2/sysdeps/generic/if_index.c Tue Mar 28 11:05:41 2000 +++ glibc-2.2.1/sysdeps/generic/if_index.c Sat Jan 6 20:35:37 2001 @@ -51,12 +51,13 @@ if_nameindex (void) stub_warning (if_nameindex) #include - +#if 0 void internal_function __protocol_available (int *have_inet, int *have_inet6) { - /* By default we assume that IPv4 is avaialble, IPv6 not. */ + /* By default we assume that IPv4 is available, IPv6 not. */ *have_inet = 1; *have_inet6 = 0; } +#endif diff -adurpN glibc-2.2/sysdeps/generic/initfini.c glibc-2.2.1/sysdeps/generic/initfini.c --- glibc-2.2/sysdeps/generic/initfini.c Thu Sep 14 12:24:26 2000 +++ glibc-2.2.1/sysdeps/generic/initfini.c Wed Nov 22 10:59:53 2000 @@ -50,6 +50,7 @@ asm ("\n/*@HEADER_ENDS*/"); /* To determine whether we need .end and .align: */ asm ("\n/*@TESTS_BEGIN*/"); +extern void dummy (void (*foo) (void)); void dummy (void (*foo) (void)) { @@ -68,10 +69,11 @@ call_gmon_start(void) void (*gmon_start) (void) = __gmon_start__; if (gmon_start) - gmon_start (); + gmon_start (); } SECTION (".init"); +extern void _init (void); void _init (void) { @@ -97,6 +99,7 @@ asm ("\n/*@_init_EPILOG_ENDS*/"); asm ("\n/*@_fini_PROLOG_BEGINS*/"); SECTION (".fini"); +extern void _fini (void); void _fini (void) { diff -adurpN glibc-2.2/sysdeps/generic/k_cosl.c glibc-2.2.1/sysdeps/generic/k_cosl.c --- glibc-2.2/sysdeps/generic/k_cosl.c Sun Oct 12 20:52:22 1997 +++ glibc-2.2.1/sysdeps/generic/k_cosl.c Sat Jan 6 20:35:37 2001 @@ -1,6 +1,7 @@ #include #include #include +#include "math_private.h" long double __kernel_cosl (long double x, long double y) diff -adurpN glibc-2.2/sysdeps/generic/k_sinl.c glibc-2.2.1/sysdeps/generic/k_sinl.c --- glibc-2.2/sysdeps/generic/k_sinl.c Sun Oct 12 20:52:22 1997 +++ glibc-2.2.1/sysdeps/generic/k_sinl.c Sat Jan 6 20:35:38 2001 @@ -1,9 +1,10 @@ #include #include #include +#include "math_private.h" long double -__kernel_sinl (long double x, long double y) +__kernel_sinl (long double x, long double y, int iy) { fputs ("__kernel_sinl not implemented\n", stderr); __set_errno (ENOSYS); diff -adurpN glibc-2.2/sysdeps/generic/k_tanl.c glibc-2.2.1/sysdeps/generic/k_tanl.c --- glibc-2.2/sysdeps/generic/k_tanl.c Sun Oct 12 20:52:22 1997 +++ glibc-2.2.1/sysdeps/generic/k_tanl.c Sat Jan 6 20:35:38 2001 @@ -1,6 +1,7 @@ #include #include #include +#include "math_private.h" long double __kernel_tanl (long double x, long double y, int iy) diff -adurpN glibc-2.2/sysdeps/generic/ldsodefs.h glibc-2.2.1/sysdeps/generic/ldsodefs.h --- glibc-2.2/sysdeps/generic/ldsodefs.h Sun Oct 8 17:05:05 2000 +++ glibc-2.2.1/sysdeps/generic/ldsodefs.h Sat Jan 13 10:48:50 2001 @@ -1,5 +1,5 @@ /* Run-time dynamic linker data structures for loaded ELF shared objects. - Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1995-1999, 2000, 2001 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 @@ -70,6 +70,8 @@ typedef ElfW(Addr) lookup_t; # define DL_SYMBOL_ADDRESS(map, ref) \ (void *) (LOOKUP_VALUE_ADDRESS (map) + ref->st_value) # define DL_LOOKUP_ADDRESS(addr) ((ElfW(Addr)) (addr)) +# define DL_DT_INIT_ADDRESS(map, start) (start) +# define DL_DT_FINI_ADDRESS(map, start) (start) #endif /* Unmap a loaded object, called by _dl_close (). */ @@ -79,6 +81,12 @@ typedef ElfW(Addr) lookup_t; (map)->l_map_end - (map)->l_map_start) #endif +/* By default we do not need special support to initialize DSOs loaded + by statically linked binaries. */ +#ifndef DL_STATIC_INIT +# define DL_STATIC_INIT(map) +#endif + /* For the version handling we need an array with only names and their hash values. */ struct r_found_version @@ -389,7 +397,8 @@ extern void _dl_relocate_object (struct PLT is nonzero if this was a PLT reloc; it just affects the message. */ extern void _dl_reloc_bad_type (struct link_map *map, uint_fast8_t type, int plt) - internal_function; + internal_function + __attribute__ ((__noreturn__)); /* Check the version dependencies of all objects available through MAP. If VERBOSE print some more diagnostics. */ @@ -453,6 +462,36 @@ extern const struct r_strlenpair *_dl_im size_t *sz, size_t *max_capstrlen) internal_function; + +/* Look up NAME in ld.so.cache and return the file name stored there, + or null if none is found. */ +extern const char *_dl_load_cache_lookup (const char *name) + internal_function; + +/* If the system does not support MAP_COPY we cannot leave the file open + all the time since this would create problems when the file is replaced. + Therefore we provide this function to close the file and open it again + once needed. */ +extern void _dl_unload_cache (void); + +/* System-dependent function to read a file's whole contents + in the most convenient manner available. */ +extern void *_dl_sysdep_read_whole_file (const char *file, size_t *sizep, + int prot) + internal_function; + +/* System-specific function to do initial startup for the dynamic linker. + After this, file access calls and getenv must work. This is responsible + for setting __libc_enable_secure if we need to be secure (e.g. setuid), + and for setting _dl_argc and _dl_argv, and then calling _dl_main. */ +extern ElfW(Addr) _dl_sysdep_start (void **start_argptr, + void (*dl_main) (const ElfW(Phdr) *phdr, + ElfW(Word) phnum, + ElfW(Addr) *user_entry)); + +extern void _dl_sysdep_start_cleanup (void) + internal_function; + __END_DECLS diff -adurpN glibc-2.2/sysdeps/generic/libc-start.c glibc-2.2.1/sysdeps/generic/libc-start.c --- glibc-2.2/sysdeps/generic/libc-start.c Fri Jul 7 10:57:36 2000 +++ glibc-2.2.1/sysdeps/generic/libc-start.c Sat Jan 6 20:35:38 2001 @@ -33,8 +33,15 @@ extern void *__libc_stack_end; extern void __pthread_initialize_minimal (void) __attribute__ ((weak)); #endif -/* Prototype for local function. */ -extern void __libc_check_standard_fds (void); + +extern int BP_SYM (__libc_start_main) (int (*main) (int, char **, char **), + int argc, + char *__unbounded *__unbounded ubp_av, + void (*init) (void), + void (*fini) (void), + void (*rtld_fini) (void), + void *__unbounded stack_end) + __attribute__ ((noreturn)); int /* GKM FIXME: GCC: this should get __BP_ prefix by virtue of the @@ -52,6 +59,10 @@ BP_SYM (__libc_start_main) (int (*main) #endif #ifndef SHARED +# ifdef HAVE_AUX_VECTOR + void *__unbounded *__unbounded auxvec; +# endif + /* The next variable is only here to work around a bug in gcc <= 2.7.2.2. If the address would be taken inside the expression the optimizer would try to be too smart and throws it away. Grrr. */ @@ -78,6 +89,13 @@ BP_SYM (__libc_start_main) (int (*main) loader did the work already. */ if (__builtin_expect (__libc_enable_secure, 0)) __libc_check_standard_fds (); + +# ifdef HAVE_AUX_VECTOR + for (auxvec = (void *__unbounded *__unbounded) ubp_ev; + *auxvec; auxvec++); + ++auxvec; + _dl_aux_init ((ElfW(auxv_t) *) auxvec); +# endif #endif /* Register the destructor of the dynamic linker if there is any. */ diff -adurpN glibc-2.2/sysdeps/generic/longjmp.c glibc-2.2.1/sysdeps/generic/longjmp.c --- glibc-2.2/sysdeps/generic/longjmp.c Mon Apr 20 18:25:37 1998 +++ glibc-2.2.1/sysdeps/generic/longjmp.c Sat Jan 6 20:35:38 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 92, 94, 95, 97, 98 Free Software Foundation, Inc. +/* Copyright (C) 1991, 92, 94, 95, 97, 98, 2000 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 @@ -20,8 +20,6 @@ #include #include - -extern void _longjmp_unwind (jmp_buf env, int val); /* Set the signal mask to the one specified in ENV, and jump to the position specified in ENV, causing the setjmp diff -adurpN glibc-2.2/sysdeps/generic/memchr.c glibc-2.2.1/sysdeps/generic/memchr.c --- glibc-2.2/sysdeps/generic/memchr.c Wed Aug 2 14:52:46 2000 +++ glibc-2.2.1/sysdeps/generic/memchr.c Thu Nov 16 11:12:04 2000 @@ -31,15 +31,18 @@ # define __ptr_t char * #endif /* C++ or ANSI C. */ -#if defined (_LIBC) +#if defined _LIBC # include # include -# include #else # define reg_char char #endif -#if defined (HAVE_LIMITS_H) || defined (_LIBC) +#if HAVE_STDLIB_H || defined _LIBC +# include +#endif + +#if HAVE_LIMITS_H || defined _LIBC # include #endif @@ -50,10 +53,14 @@ #endif #include +#if HAVE_BP_SYM_H || defined _LIBC #include +#else +# define BP_SYM(sym) sym +#endif #undef memchr - +#undef __memchr /* Search no more than N bytes of S for C. */ __ptr_t @@ -201,4 +208,6 @@ __memchr (s, c_in, n) return 0; } +#ifdef weak_alias weak_alias (__memchr, BP_SYM (memchr)) +#endif diff -adurpN glibc-2.2/sysdeps/generic/memrchr.c glibc-2.2.1/sysdeps/generic/memrchr.c --- glibc-2.2/sysdeps/generic/memrchr.c Thu Oct 26 22:57:35 2000 +++ glibc-2.2.1/sysdeps/generic/memrchr.c Fri Dec 1 11:55:08 2000 @@ -86,7 +86,7 @@ __memrchr (s, c_in, n) /* All these elucidatory comments refer to 4-byte longwords, but the theory applies equally well to 8-byte longwords. */ - longword_ptr = (unsigned long int *) char_ptr; + longword_ptr = (const unsigned long int *) char_ptr; /* Bits 31, 24, 16, and 8 of this number are zero. Call these bits the "holes." Note that there is a hole just to the left of diff -adurpN glibc-2.2/sysdeps/generic/netinet/if_ether.h glibc-2.2.1/sysdeps/generic/netinet/if_ether.h --- glibc-2.2/sysdeps/generic/netinet/if_ether.h Mon Jun 23 14:51:52 1997 +++ glibc-2.2.1/sysdeps/generic/netinet/if_ether.h Sat Jan 6 20:35:39 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 2001 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 @@ -21,11 +21,13 @@ #define __NETINET_IF_ETHER_H 1 #include +#include + /* This is a name for the 48 bit ethernet address available on many systems. */ struct ether_addr { - unsigned char ether_addr_octet[6]; -}; + u_int8_t ether_addr_octet[6]; +} __attribute__ ((__packed__)); #endif /* netinet/if_ether.h */ diff -adurpN glibc-2.2/sysdeps/generic/printf_fphex.c glibc-2.2.1/sysdeps/generic/printf_fphex.c --- glibc-2.2/sysdeps/generic/printf_fphex.c Tue Oct 17 14:54:06 2000 +++ glibc-2.2.1/sysdeps/generic/printf_fphex.c Sat Jan 6 20:35:38 2001 @@ -1,5 +1,5 @@ /* Print floating point number in hexadecimal notation according to ISO C99. - Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -43,7 +43,7 @@ names equal. */ # undef putc # define putc(c, f) (wide \ - ? _IO_putwc_unlocked (c, f) : _IO_putc_unlocked (c, f)) + ? (int)_IO_putwc_unlocked (c, f) : _IO_putc_unlocked (c, f)) # define size_t _IO_size_t # define FILE _IO_FILE #else /* ! USE_IN_LIBIO */ @@ -422,7 +422,8 @@ __printf_fphex (FILE *fp, /* Now we can compute the exponent string. */ expstr = _itoa_word (exponent, expbuf + sizeof expbuf, 10, 0); - wexpstr = _itowa_word (exponent, wexpbuf + sizeof wexpbuf, 10, 0); + wexpstr = _itowa_word (exponent, + wexpbuf + sizeof wexpbuf / sizeof (wchar_t), 10, 0); /* Now we have all information to compute the size. */ width -= ((negative || info->showsign || info->space) diff -adurpN glibc-2.2/sysdeps/generic/prof-freq.c glibc-2.2.1/sysdeps/generic/prof-freq.c --- glibc-2.2/sysdeps/generic/prof-freq.c Wed Jun 9 11:03:23 1999 +++ glibc-2.2.1/sysdeps/generic/prof-freq.c Sat Jan 6 20:35:38 2001 @@ -31,6 +31,7 @@ #include #include +#include int __profile_frequency (void) diff -adurpN glibc-2.2/sysdeps/generic/readelflib.c glibc-2.2.1/sysdeps/generic/readelflib.c --- glibc-2.2/sysdeps/generic/readelflib.c Fri May 26 12:38:36 2000 +++ glibc-2.2.1/sysdeps/generic/readelflib.c Fri Dec 1 11:55:08 2000 @@ -1,4 +1,4 @@ -/* Copyright (C) 1999 Free Software Foundation, Inc. +/* Copyright (C) 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Jaeger , 1999 and Jakub Jelinek , 1999. @@ -25,6 +25,7 @@ /* check_ptr checks that a pointer is in the mmaped file and doesn't point outside it. */ +#undef check_ptr #define check_ptr(ptr) \ do \ { \ diff -adurpN glibc-2.2/sysdeps/generic/segfault.c glibc-2.2.1/sysdeps/generic/segfault.c --- glibc-2.2/sysdeps/generic/segfault.c Wed Aug 2 14:52:46 2000 +++ glibc-2.2.1/sysdeps/generic/segfault.c Sat Jan 13 10:48:50 2001 @@ -1,5 +1,5 @@ /* Catch segmentation faults and print backtrace. - Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1998. @@ -237,6 +237,6 @@ install_handler (void) /* Preserve the output file name if there is any given. */ name = getenv ("SEGFAULT_OUTPUT_NAME"); - if (name != NULL && name[0] != '\0') + if (name != NULL && name[0] != '\0' && access (name, R_OK | W_OK) == 0) fname = __strdup (name); } diff -adurpN glibc-2.2/sysdeps/generic/strcasestr.c glibc-2.2.1/sysdeps/generic/strcasestr.c --- glibc-2.2/sysdeps/generic/strcasestr.c Mon Jan 25 09:31:09 1999 +++ glibc-2.2.1/sysdeps/generic/strcasestr.c Fri Dec 1 11:55:08 2000 @@ -1,5 +1,5 @@ /* Return the offset of one string within another. - Copyright (C) 1994, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. + Copyright (C) 1994,1996,1997,1998,1999,2000 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 @@ -62,7 +62,7 @@ __strcasestr (phaystack, pneedle) if (c == '\0') goto ret0; } - while (_tolower (c) != b); + while (_tolower (c) != (int) b); c = _tolower (*++needle); if (c == '\0') @@ -80,40 +80,42 @@ __strcasestr (phaystack, pneedle) a = *++haystack; if (a == '\0') goto ret0; - if (_tolower (a) == b) + if (_tolower (a) == (int) b) break; a = *++haystack; if (a == '\0') goto ret0; -shloop: } - while (_tolower (a) != b); +shloop: + ; + } + while (_tolower (a) != (int) b); jin: a = *++haystack; if (a == '\0') goto ret0; - if (_tolower (a) != c) + if (_tolower (a) != (int) c) goto shloop; rhaystack = haystack-- + 1; rneedle = needle; a = _tolower (*rneedle); - if (_tolower (*rhaystack) == a) + if (_tolower (*rhaystack) == (int) a) do { if (a == '\0') goto foundneedle; ++rhaystack; a = _tolower (*++needle); - if (_tolower (*rhaystack) != a) + if (_tolower (*rhaystack) != (int) a) break; if (a == '\0') goto foundneedle; ++rhaystack; a = _tolower (*++needle); } - while (_tolower (*rhaystack) == a); + while (_tolower (*rhaystack) == (int) a); needle = rneedle; /* took the register-poor approach */ diff -adurpN glibc-2.2/sysdeps/generic/strstr.c glibc-2.2.1/sysdeps/generic/strstr.c --- glibc-2.2/sysdeps/generic/strstr.c Wed Sep 10 20:18:20 1997 +++ glibc-2.2.1/sysdeps/generic/strstr.c Fri Dec 1 11:55:08 2000 @@ -1,5 +1,5 @@ /* Return the offset of one string within another. - Copyright (C) 1994, 1996, 1997 Free Software Foundation, Inc. + Copyright (C) 1994, 1996, 1997, 2000 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 @@ -82,7 +82,9 @@ strstr (phaystack, pneedle) a = *++haystack; if (a == '\0') goto ret0; -shloop: } +shloop: + ; + } while (a != b); jin: a = *++haystack; diff -adurpN glibc-2.2/sysdeps/generic/strtol.c glibc-2.2.1/sysdeps/generic/strtol.c --- glibc-2.2/sysdeps/generic/strtol.c Wed Aug 2 14:52:47 2000 +++ glibc-2.2.1/sysdeps/generic/strtol.c Sat Jan 6 20:35:38 2001 @@ -1,5 +1,5 @@ /* Convert string representation of a number into an integer value. - Copyright (C) 1991,92,94,95,96,97,98,99,2000 Free Software Foundation, Inc. + Copyright (C) 1991,92,94,95,96,97,98,99,2000,2001 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 @@ -244,7 +244,7 @@ INTERNAL (strtol) (nptr, endptr, base, g const STRING_TYPE *save, *end; int overflow; #ifndef USE_WIDE_CHAR - int cnt; + size_t cnt; #endif #ifdef USE_NUMBER_GROUPING diff -adurpN glibc-2.2/sysdeps/generic/strtol_l.c glibc-2.2.1/sysdeps/generic/strtol_l.c --- glibc-2.2/sysdeps/generic/strtol_l.c Mon May 26 15:20:24 1997 +++ glibc-2.2.1/sysdeps/generic/strtol_l.c Sat Jan 6 20:35:38 2001 @@ -25,4 +25,4 @@ extern long int ____strtol_l_internal (const char *, char **, int, int, __locale_t); -#include +#include "strtol.c" diff -adurpN glibc-2.2/sysdeps/generic/strtoll.c glibc-2.2.1/sysdeps/generic/strtoll.c --- glibc-2.2/sysdeps/generic/strtoll.c Thu Feb 4 10:59:08 1999 +++ glibc-2.2.1/sysdeps/generic/strtoll.c Sat Jan 6 20:35:38 2001 @@ -21,5 +21,4 @@ #include -strong_alias (__strtoll_internal, __strtoq_internal) weak_alias (strtoll, strtoq) diff -adurpN glibc-2.2/sysdeps/generic/strtoul.c glibc-2.2.1/sysdeps/generic/strtoul.c --- glibc-2.2/sysdeps/generic/strtoul.c Fri Feb 14 20:30:16 1997 +++ glibc-2.2.1/sysdeps/generic/strtoul.c Sat Jan 6 20:35:38 2001 @@ -18,4 +18,4 @@ #define UNSIGNED 1 -#include +#include "strtol.c" diff -adurpN glibc-2.2/sysdeps/generic/strtoul_l.c glibc-2.2.1/sysdeps/generic/strtoul_l.c --- glibc-2.2/sysdeps/generic/strtoul_l.c Mon May 26 15:20:29 1997 +++ glibc-2.2.1/sysdeps/generic/strtoul_l.c Sat Jan 6 20:35:38 2001 @@ -25,4 +25,4 @@ extern unsigned long int ____strtoul_l_internal (const char *, char **, int, int, __locale_t); -#include +#include "strtoul.c" diff -adurpN glibc-2.2/sysdeps/generic/strtoull.c glibc-2.2.1/sysdeps/generic/strtoull.c --- glibc-2.2/sysdeps/generic/strtoull.c Wed Apr 28 15:26:53 1999 +++ glibc-2.2.1/sysdeps/generic/strtoull.c Sat Jan 6 20:35:38 2001 @@ -22,6 +22,5 @@ #include #ifdef _LIBC -strong_alias (__strtoull_internal, __strtouq_internal) weak_alias (strtoull, strtouq) #endif diff -adurpN glibc-2.2/sysdeps/generic/unsecvars.h glibc-2.2.1/sysdeps/generic/unsecvars.h --- glibc-2.2/sysdeps/generic/unsecvars.h Tue Sep 26 02:31:25 2000 +++ glibc-2.2.1/sysdeps/generic/unsecvars.h Wed Jan 10 15:54:42 2001 @@ -1,11 +1,12 @@ /* Environment variable to be removed for SUID programs. */ #define UNSECURE_ENVVARS \ "GCONV_PATH", \ + "HOSTALIASES", \ "LOCALDOMAIN", \ "LOCPATH", \ "MALLOC_TRACE", \ "NLSPATH", \ - "RESOLV_HOST_CONF" \ + "RESOLV_HOST_CONF", \ "RES_OPTIONS", \ "TMPDIR", \ "TZDIR" diff -adurpN glibc-2.2/sysdeps/generic/wcstol_l.c glibc-2.2.1/sysdeps/generic/wcstol_l.c --- glibc-2.2/sysdeps/generic/wcstol_l.c Thu Jul 10 18:17:53 1997 +++ glibc-2.2.1/sysdeps/generic/wcstol_l.c Sat Jan 6 20:35:38 2001 @@ -27,4 +27,4 @@ extern long int ____wcstol_l_internal (const wchar_t *, wchar_t **, int, int, __locale_t); -#include +#include "wcstol.c" diff -adurpN glibc-2.2/sysdeps/gnu/bits/utmpx.h glibc-2.2.1/sysdeps/gnu/bits/utmpx.h --- glibc-2.2/sysdeps/gnu/bits/utmpx.h Sat Dec 5 09:13:28 1998 +++ glibc-2.2.1/sysdeps/gnu/bits/utmpx.h Sat Jan 6 20:35:39 2001 @@ -1,5 +1,5 @@ -/* Structures and defenitions for the user accounting database. GNU version. - Copyright (C) 1997, 1998 Free Software Foundation, Inc. +/* Structures and definitions for the user accounting database. GNU version. + Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc. 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 diff -adurpN glibc-2.2/sysdeps/gnu/glob64.c glibc-2.2.1/sysdeps/gnu/glob64.c --- glibc-2.2/sysdeps/gnu/glob64.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/gnu/glob64.c Sun Jan 7 09:27:13 2001 @@ -0,0 +1,20 @@ +#include +#include +#include + +#define dirent dirent64 +#define __readdir(dirp) __readdir64 (dirp) + +#define glob_t glob64_t +#define glob(pattern, flags, errfunc, pglob) \ + glob64 (pattern, flags, errfunc, pglob) +#define globfree(pglob) globfree64 (pglob) + +#undef stat +#define stat stat64 +#undef __stat +#define __stat(file, buf) __xstat64 (_STAT_VER, file, buf) + +#define NO_GLOB_PATTERN_P 1 + +#include diff -adurpN glibc-2.2/sysdeps/i386/bits/byteswap.h glibc-2.2.1/sysdeps/i386/bits/byteswap.h --- glibc-2.2/sysdeps/i386/bits/byteswap.h Thu Oct 1 00:29:30 1998 +++ glibc-2.2.1/sysdeps/i386/bits/byteswap.h Sat Jan 6 20:35:39 2001 @@ -1,5 +1,5 @@ /* Macros to swap the order of bytes in integer values. - Copyright (C) 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 2000 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 @@ -84,12 +84,27 @@ #if defined __GNUC__ && __GNUC__ >= 2 /* Swap bytes in 64 bit value. */ +#define __bswap_constant_64(x) \ + ((((x) & 0xff00000000000000ull) >> 56) \ + | (((x) & 0x00ff000000000000ull) >> 40) \ + | (((x) & 0x0000ff0000000000ull) >> 24) \ + | (((x) & 0x000000ff00000000ull) >> 8) \ + | (((x) & 0x00000000ff000000ull) << 8) \ + | (((x) & 0x0000000000ff0000ull) << 24) \ + | (((x) & 0x000000000000ff00ull) << 40) \ + | (((x) & 0x00000000000000ffull) << 56)) + # define __bswap_64(x) \ (__extension__ \ ({ union { __extension__ unsigned long long int __ll; \ unsigned long int __l[2]; } __w, __r; \ - __w.__ll = (x); \ - __r.__l[0] = __bswap_32 (__w.__l[1]); \ - __r.__l[1] = __bswap_32 (__w.__l[0]); \ + if (__builtin_constant_p (x)) \ + __r.__ll = __bswap_constant_64 (x); \ + else \ + { \ + __w.__ll = (x); \ + __r.__l[0] = __bswap_32 (__w.__l[1]); \ + __r.__l[1] = __bswap_32 (__w.__l[0]); \ + } \ __r.__ll; })) #endif diff -adurpN glibc-2.2/sysdeps/i386/elf/setjmp.S glibc-2.2.1/sysdeps/i386/elf/setjmp.S --- glibc-2.2/sysdeps/i386/elf/setjmp.S Tue Aug 15 11:16:25 2000 +++ glibc-2.2.1/sysdeps/i386/elf/setjmp.S Wed Nov 22 10:59:54 2000 @@ -35,10 +35,8 @@ ENTRY (BP_SYM (setjmp)) jmp .Linternal_sigsetjmp END (BP_SYM (setjmp)) - /* Binary compatibility entry point. */ ENTRY (BP_SYM (_setjmp)) .weak C_SYMBOL_NAME (BP_SYM (_setjmp)) -ENTRY (BP_SYM (__setjmp)) PUSH_SIGNAL_MASK (0) /* FALL THROUGH */ diff -adurpN glibc-2.2/sysdeps/i386/fpu/bits/mathdef.h glibc-2.2.1/sysdeps/i386/fpu/bits/mathdef.h --- glibc-2.2/sysdeps/i386/fpu/bits/mathdef.h Thu Sep 7 11:56:39 2000 +++ glibc-2.2.1/sysdeps/i386/fpu/bits/mathdef.h Sat Jan 6 20:35:39 2001 @@ -31,17 +31,11 @@ typedef long double float_t; /* `float' typedef long double double_t; /* `double' expressions are evaluated as `long double'. */ -/* Signal that both types are `long double'. */ -# define FLT_EVAL_METHOD 2 - /* Define `INFINITY' as value of type `float'. */ # define INFINITY HUGE_VALF /* The values returned by `ilogb' for 0 and NaN respectively. */ # define FP_ILOGB0 (-2147483647 - 1) # define FP_ILOGBNAN (-2147483647 - 1) - -/* Number of decimal digits for the `long double' type. */ -# define DECIMAL_DIG 18 #endif /* ISO C99 */ diff -adurpN glibc-2.2/sysdeps/i386/fpu/e_scalb.S glibc-2.2.1/sysdeps/i386/fpu/e_scalb.S --- glibc-2.2/sysdeps/i386/fpu/e_scalb.S Tue Jul 13 16:23:13 1999 +++ glibc-2.2.1/sysdeps/i386/fpu/e_scalb.S Sat Jan 6 20:35:39 2001 @@ -50,7 +50,7 @@ ENTRY(__ieee754_scalb) fnstsw andl $0x4500, %eax cmpl $0x0100, %eax - je 2f + je 3f fld %st(1) frndint fcomp %st(2) @@ -90,5 +90,9 @@ ENTRY(__ieee754_scalb) addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx #endif fldl MO(nan) + ret + + /* The first parameter is a NaN. Return it. */ +3: fstp %st(1) ret END(__ieee754_scalb) diff -adurpN glibc-2.2/sysdeps/i386/fpu/e_scalbf.S glibc-2.2.1/sysdeps/i386/fpu/e_scalbf.S --- glibc-2.2/sysdeps/i386/fpu/e_scalbf.S Tue Jul 13 16:23:19 1999 +++ glibc-2.2.1/sysdeps/i386/fpu/e_scalbf.S Sat Jan 6 20:35:39 2001 @@ -52,7 +52,7 @@ ENTRY(__ieee754_scalbf) fnstsw andl $0x4500, %eax cmpl $0x0100, %eax - je 2f + je 3f fld %st(1) frndint fcomp %st(2) @@ -92,5 +92,9 @@ ENTRY(__ieee754_scalbf) addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx #endif fldl MO(nan) + ret + + /* The first parameter is a NaN. Return it. */ +3: fstp %st(1) ret END(__ieee754_scalbf) diff -adurpN glibc-2.2/sysdeps/i386/fpu/e_scalbl.S glibc-2.2.1/sysdeps/i386/fpu/e_scalbl.S --- glibc-2.2/sysdeps/i386/fpu/e_scalbl.S Tue Jul 13 16:23:23 1999 +++ glibc-2.2.1/sysdeps/i386/fpu/e_scalbl.S Sat Jan 6 20:35:39 2001 @@ -52,7 +52,7 @@ ENTRY(__ieee754_scalbl) fnstsw andl $0x4500, %eax cmpl $0x0100, %eax - je 2f + je 3f fld %st(1) frndint fcomp %st(2) @@ -92,5 +92,9 @@ ENTRY(__ieee754_scalbl) addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx #endif fldl MO(nan) + ret + + /* The first parameter is a NaN. Return it. */ +3: fstp %st(1) ret END(__ieee754_scalbl) diff -adurpN glibc-2.2/sysdeps/i386/fpu/libm-test-ulps glibc-2.2.1/sysdeps/i386/fpu/libm-test-ulps --- glibc-2.2/sysdeps/i386/fpu/libm-test-ulps Thu Oct 26 22:57:35 2000 +++ glibc-2.2.1/sysdeps/i386/fpu/libm-test-ulps Fri Dec 1 11:55:09 2000 @@ -406,19 +406,21 @@ double: 1 float: 4 idouble: 1 ifloat: 4 +ldouble: 2 +ildouble: 2 Test "Imaginary part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i": float: 1 ifloat: 1 -ildouble: 4 -ldouble: 4 +ildouble: 5 +ldouble: 5 Test "Real part of: cpow (e + 0 i, 0 + 2 * M_PIl i) == 1.0 + 0.0 i": Test "Imaginary part of: cpow (e + 0 i, 0 + 2 * M_PIl i) == 1.0 + 0.0 i": double: 1.104 float: 2.5333 idouble: 1.104 ifloat: 2.5333 -ildouble: 1 -ldouble: 1 +ildouble: 9 +ldouble: 9 # csin Test "Real part of: csin (0.7 + 1.2 i) == 1.1664563419657581376 + 1.1544997246948547371 i": @@ -748,6 +750,9 @@ idouble: 1 ifloat: 2 # log +Test "log (1.0 / M_El) == -1": +ldouble: 1 +ildouble: 1 Test "log (0.7) == -0.35667494393873237891": double: 1 float: 1 @@ -758,6 +763,8 @@ ldouble: 2341 Test "log (e) == 1": float: 0.5 ifloat: 0.5 +ildouble: 1 +ldouble: 1 # log10 Test "log10 (0.7) == -0.15490195998574316929": @@ -779,6 +786,9 @@ idouble: 1 ifloat: 1 ildouble: 585 ldouble: 585 +Test "log1p (M_El - 1.0) == 1": +ldouble: 1 +ildouble: 1 # log2 Test "log2 (0.7) == -0.51457317282975824043": @@ -1251,14 +1261,16 @@ double: 1 float: 4 idouble: 1 ifloat: 4 +ldouble: 2 +ildouble: 2 Function: Imaginary part of "cpow": double: 1.104 float: 2.5333 idouble: 1.104 ifloat: 2.5333 -ildouble: 4 -ldouble: 4 +ildouble: 9 +ldouble: 9 Function: Real part of "csin": ildouble: 966 diff -adurpN glibc-2.2/sysdeps/i386/fpu/s_fpclassifyl.c glibc-2.2.1/sysdeps/i386/fpu/s_fpclassifyl.c --- glibc-2.2/sysdeps/i386/fpu/s_fpclassifyl.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/i386/fpu/s_fpclassifyl.c Sun Dec 3 17:25:35 2000 @@ -0,0 +1,42 @@ +/* Return classification value corresponding to argument. + Copyright (C) 1997, 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1997. + + 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. */ + +#include + +#include "math_private.h" + + +int +__fpclassifyl (long double x) +{ + u_int32_t ex, hx, lx; + int retval = FP_NORMAL; + + GET_LDOUBLE_WORDS (ex, hx, lx, x); + ex &= 0x7fff; + if ((ex | lx | hx) == 0) + retval = FP_ZERO; + else if (ex == 0 && (hx & 0x80000000) == 0) + retval = FP_SUBNORMAL; + else if (ex == 0x7fff) + retval = ((hx & 0x7fffffff) | lx) != 0 ? FP_NAN : FP_INFINITE; + + return retval; +} diff -adurpN glibc-2.2/sysdeps/i386/fpu/s_frexp.S glibc-2.2.1/sysdeps/i386/fpu/s_frexp.S --- glibc-2.2/sysdeps/i386/fpu/s_frexp.S Thu Aug 31 14:45:19 2000 +++ glibc-2.2.1/sysdeps/i386/fpu/s_frexp.S Sat Jan 6 20:35:39 2001 @@ -70,6 +70,7 @@ ENTRY (BP_SYM (__frexp)) fmull MO(two54) movl $-54, %ecx fstpl VAL0(%esp) + fwait movl VAL1(%esp), %eax movl %eax, %edx andl $0x7fffffff, %eax diff -adurpN glibc-2.2/sysdeps/i386/fpu/s_frexpf.S glibc-2.2.1/sysdeps/i386/fpu/s_frexpf.S --- glibc-2.2/sysdeps/i386/fpu/s_frexpf.S Thu Aug 31 14:45:19 2000 +++ glibc-2.2.1/sysdeps/i386/fpu/s_frexpf.S Sat Jan 6 20:35:39 2001 @@ -67,6 +67,7 @@ ENTRY (BP_SYM (__frexpf)) fmuls MO(two25) movl $-25, %ecx fstps VAL(%esp) + fwait movl VAL(%esp), %eax movl %eax, %edx andl $0x7fffffff, %eax diff -adurpN glibc-2.2/sysdeps/i386/fpu/s_frexpl.S glibc-2.2.1/sysdeps/i386/fpu/s_frexpl.S --- glibc-2.2/sysdeps/i386/fpu/s_frexpl.S Thu Aug 31 14:45:20 2000 +++ glibc-2.2.1/sysdeps/i386/fpu/s_frexpl.S Sat Jan 6 20:35:39 2001 @@ -32,6 +32,12 @@ ASM_TYPE_DIRECTIVE(two64,@object) two64: .byte 0, 0, 0, 0, 0, 0, 0xf0, 0x43 ASM_SIZE_DIRECTIVE(two64) + /* The following is LDBL_MAX / ldexp (1.0, 64), the largest + number we can handle the normal way. */ + ASM_TYPE_DIRECTIVE(largest,@object) +largest: + .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbe, 0x7f, 0, 0 + ASM_SIZE_DIRECTIVE(largest) #ifdef PIC #define MO(op) op##@GOTOFF(%edx) @@ -63,15 +69,20 @@ ENTRY (BP_SYM (__frexpl)) cmpl $0, %eax je 2f + cmpl $0x7fbe, %eax + ja 4f + fldt VAL0(%esp) #ifdef PIC call 3f 3: popl %edx addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %edx #endif + fmull MO(two64) /* It's not necessary to use a 80bit factor */ movl $-64, %ecx fstpt VAL0(%esp) + fwait movl VAL2(%esp), %eax movl %eax, %edx andl $0x7fff, %eax @@ -91,5 +102,15 @@ ENTRY (BP_SYM (__frexpl)) LEAVE ret + +4: movl VAL2(%esp), %ecx + movl %ecx, %edx + andl $0x7fff, %ecx + + andl $0x8000, %edx + subl $16382, %ecx + orl $0x3ffe, %edx + movl %edx, VAL2(%esp) + jmp 1b END (BP_SYM (__frexpl)) weak_alias (BP_SYM (__frexpl), BP_SYM (frexpl)) diff -adurpN glibc-2.2/sysdeps/i386/fpu/s_nextafterl.c glibc-2.2.1/sysdeps/i386/fpu/s_nextafterl.c --- glibc-2.2/sysdeps/i386/fpu/s_nextafterl.c Thu Oct 21 09:14:38 1999 +++ glibc-2.2.1/sysdeps/i386/fpu/s_nextafterl.c Sat Jan 6 20:35:39 2001 @@ -36,8 +36,9 @@ static char rcsid[] = "$NetBSD: $"; long double x,y; #endif { - int32_t hx,hy,ix,iy; - u_int32_t lx,ly,esx,esy; + u_int32_t hx,hy,ix,iy; + u_int32_t lx,ly; + int32_t esx,esy; GET_LDOUBLE_WORDS(esx,hx,lx,x); GET_LDOUBLE_WORDS(esy,hy,ly,y); @@ -51,39 +52,58 @@ static char rcsid[] = "$NetBSD: $"; return x+y; if(x==y) return y; /* x=y, return y */ if((ix|hx|lx)==0) { /* x == 0 */ - SET_LDOUBLE_WORDS(x,esx&0x8000,0,1);/* return +-minsubnormal */ + SET_LDOUBLE_WORDS(x,esy&0x8000,0,1);/* return +-minsubnormal */ y = x*x; if(y==x) return y; else return x; /* raise underflow flag */ } - if(esx<0x8000) { /* x > 0 */ - if(ix>iy||((ix==iy) && (hx>hy||((hx==hy)&&(lx>ly))))) { + if(esx>=0) { /* x > 0 */ + if(esx>esy||((esx==esy) && (hx>hy||((hx==hy)&&(lx>ly))))) { /* x > y, x -= ulp */ if(lx==0) { - if (hx==0) esx -= 1; - hx -= 1; + if (hx <= 0x80000000) { + if (esx == 0) + hx = 0; + else { + esx -= 1; + hx = hx - 1; + if (esx > 0) + hx |= 0x80000000; + } + } else + hx -= 1; } lx -= 1; } else { /* x < y, x += ulp */ lx += 1; if(lx==0) { hx += 1; - if (hx==0) + if (hx==0 || (esx == 0 && hx == 0x80000000)) { esx += 1; + hx |= 0x80000000; + } } } } else { /* x < 0 */ - if(esy>=0||(ix>iy||((ix==iy)&&(hx>hy||((hx==hy)&&(lx>ly)))))){ + if(esy>=0||(esx>esy||((esx==esy)&&(hx>hy||((hx==hy)&&(lx>ly)))))){ /* x < y, x -= ulp */ if(lx==0) { - if (hx==0) esx -= 1; - hx -= 1; + if (hx <= 0x80000000) { + esx -= 1; + hx = hx - 1; + if ((esx&0x7fff) > 0) + hx |= 0x80000000; + } else + hx -= 1; } lx -= 1; } else { /* x > y, x += ulp */ lx += 1; if(lx==0) { hx += 1; - if (hx==0) esx += 1; + if (hx==0 || (esx == 0xffff8000 && hx == 0x80000000)) { + esx += 1; + hx |= 0x80000000; + } } } } diff -adurpN glibc-2.2/sysdeps/i386/i486/bits/string.h glibc-2.2.1/sysdeps/i386/i486/bits/string.h --- glibc-2.2/sysdeps/i386/i486/bits/string.h Wed Nov 8 14:10:20 2000 +++ glibc-2.2.1/sysdeps/i386/i486/bits/string.h Fri Dec 1 11:55:09 2000 @@ -1015,7 +1015,7 @@ __strncat_g (char *__dest, __const char "decl %1\n" "2:\n\t" "movb $0,(%1)" - : "=&a" (__dummy), "=&D" (__tmp), "=&S" (__src), "=&r" (__n) + : "=&a" (__dummy), "=&D" (__tmp), "=&S" (__src), "=&c" (__n) : "0" (0), "1" (__tmp), "2" (__src), "3" (__n) : "memory", "cc"); #else @@ -1057,18 +1057,20 @@ __strncat_g (char *__dest, __const char : (__builtin_constant_p (s1) && sizeof ((s1)[0]) == 1 \ && sizeof ((s2)[0]) == 1 && strlen (s1) < 4 \ ? (__builtin_constant_p (s2) && sizeof ((s2)[0]) == 1 \ - ? __strcmp_cc ((unsigned char *) (s1), \ - (unsigned char *) (s2), strlen (s1)) \ - : __strcmp_cg ((unsigned char *) (s1), \ - (unsigned char *) (s2), strlen (s1))) \ + ? __strcmp_cc ((__const unsigned char *) (s1), \ + (__const unsigned char *) (s2), \ + strlen (s1)) \ + : __strcmp_cg ((__const unsigned char *) (s1), \ + (__const unsigned char *) (s2), \ + strlen (s1))) \ : (__builtin_constant_p (s2) && sizeof ((s1)[0]) == 1 \ && sizeof ((s2)[0]) == 1 && strlen (s2) < 4 \ ? (__builtin_constant_p (s1) \ - ? __strcmp_cc ((unsigned char *) (s1), \ - (unsigned char *) (s2), \ + ? __strcmp_cc ((__const unsigned char *) (s1), \ + (__const unsigned char *) (s2), \ strlen (s2)) \ - : __strcmp_gc ((unsigned char *) (s1), \ - (unsigned char *) (s2), \ + : __strcmp_gc ((__const unsigned char *) (s1), \ + (__const unsigned char *) (s2), \ strlen (s2))) \ : __strcmp_gg (s1, s2))))) diff -adurpN glibc-2.2/sysdeps/i386/ldbl2mpn.c glibc-2.2.1/sysdeps/i386/ldbl2mpn.c --- glibc-2.2/sysdeps/i386/ldbl2mpn.c Mon Jun 23 14:51:56 1997 +++ glibc-2.2.1/sysdeps/i386/ldbl2mpn.c Sat Jan 6 20:35:39 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996, 1997, 2000 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 @@ -87,12 +87,25 @@ __mpn_extract_long_double (mp_ptr res_pt } *expt = LDBL_MIN_EXP - 1 - cnt; } - else + else if (res_ptr[0] != 0) { count_leading_zeros (cnt, res_ptr[0]); res_ptr[N - 1] = res_ptr[0] << cnt; res_ptr[0] = 0; *expt = LDBL_MIN_EXP - 1 - BITS_PER_MP_LIMB - cnt; + } + else + { + /* This is the special case of the pseudo denormal number + with only the implicit leading bit set. The value is + in fact a normal number and so we have to treat this + case differently. */ +#if N == 2 + res_ptr[N - 1] = 0x80000000ul; +#else + res_ptr[0] = 0x8000000000000000ul; +#endif + *expt = LDBL_MIN_EXP - 1; } } } diff -adurpN glibc-2.2/sysdeps/i386/setjmp.S glibc-2.2.1/sysdeps/i386/setjmp.S --- glibc-2.2/sysdeps/i386/setjmp.S Tue Aug 15 11:16:25 2000 +++ glibc-2.2.1/sysdeps/i386/setjmp.S Wed Nov 22 10:59:54 2000 @@ -25,11 +25,6 @@ #include "bp-sym.h" #include "bp-asm.h" - /* Binary compatibility entry point. */ -ENTRY (BP_SYM (__setjmp)) - PUSH_SIGNAL_MASK (0) - /* FALL THROUGH */ - #define PARMS LINKAGE /* no space for saved regs */ #define JMPBUF PARMS #define SIGMSK JMPBUF+PTR_SIZE diff -adurpN glibc-2.2/sysdeps/ia64/Makefile glibc-2.2.1/sysdeps/ia64/Makefile --- glibc-2.2/sysdeps/ia64/Makefile Sun Oct 8 17:05:06 2000 +++ glibc-2.2.1/sysdeps/ia64/Makefile Fri Dec 1 11:55:09 2000 @@ -1,6 +1,10 @@ # The ia64 `long double' is a distinct type we support. long-double-fcts = yes +ifeq ($(subdir),gmon) +sysdep_routines += _mcount +endif + ifeq ($(subdir), csu) CPPFLAGS-start.S = -D__ASSEMBLY__ endif diff -adurpN glibc-2.2/sysdeps/ia64/Versions glibc-2.2.1/sysdeps/ia64/Versions --- glibc-2.2/sysdeps/ia64/Versions Sun Oct 8 17:05:06 2000 +++ glibc-2.2.1/sysdeps/ia64/Versions Thu Nov 16 11:12:04 2000 @@ -2,5 +2,6 @@ ld { GLIBC_2.2 { # ia64 specific functions in the dynamic linker, but used by libc.so. _dl_symbol_address; _dl_unmap; _dl_lookup_address; + _dl_function_address; } } diff -adurpN glibc-2.2/sysdeps/ia64/_mcount.S glibc-2.2.1/sysdeps/ia64/_mcount.S --- glibc-2.2/sysdeps/ia64/_mcount.S Mon Jul 31 20:14:43 2000 +++ glibc-2.2.1/sysdeps/ia64/_mcount.S Fri Dec 1 11:55:09 2000 @@ -60,7 +60,7 @@ LEAF(_mcount) mov loc3 = r15 // gcc uses r15 to pass the static link to nested functions mov out0 = in2 mov out1 = rp - br.call.sptk.few rp = __mcount_internal + br.call.sptk.few rp = __mcount ;; .here: { diff -adurpN glibc-2.2/sysdeps/ia64/dl-lookupcfg.h glibc-2.2.1/sysdeps/ia64/dl-lookupcfg.h --- glibc-2.2/sysdeps/ia64/dl-lookupcfg.h Sun Oct 8 17:05:06 2000 +++ glibc-2.2.1/sysdeps/ia64/dl-lookupcfg.h Thu Nov 16 11:12:04 2000 @@ -23,14 +23,22 @@ #define ELF_FUNCTION_PTR_IS_SPECIAL #define DL_UNMAP_IS_SPECIAL -void *_dl_symbol_address (const struct link_map *map, const ElfW(Sym) *ref); +extern void *_dl_symbol_address (const struct link_map *map, + const Elf64_Sym *ref); #define DL_SYMBOL_ADDRESS(map, ref) _dl_symbol_address(map, ref) -Elf64_Addr _dl_lookup_address (const void *address); +extern Elf64_Addr _dl_lookup_address (const void *address); #define DL_LOOKUP_ADDRESS(addr) _dl_lookup_address (addr) -void _dl_unmap (struct link_map *map); +extern void _dl_unmap (struct link_map *map); #define DL_UNMAP(map) _dl_unmap (map) + +extern Elf64_Addr _dl_function_address (const struct link_map *map, + Elf64_Addr start); + +#define DL_FUNCTION_ADDRESS(map, addr) _dl_function_address (map, addr) +#define DL_DT_INIT_ADDRESS(map, addr) DL_FUNCTION_ADDRESS (map, addr) +#define DL_DT_FINI_ADDRESS(map, addr) DL_FUNCTION_ADDRESS (map, addr) diff -adurpN glibc-2.2/sysdeps/ia64/dl-machine.h glibc-2.2.1/sysdeps/ia64/dl-machine.h --- glibc-2.2/sysdeps/ia64/dl-machine.h Thu Oct 26 22:57:35 2000 +++ glibc-2.2.1/sysdeps/ia64/dl-machine.h Wed Jan 10 15:54:45 2001 @@ -163,7 +163,7 @@ elf_machine_runtime_setup (struct link_m .proc " #tramp_name "# " #tramp_name ": { .mmi - alloc loc0 = ar.pfs, 8, 3, 3, 0 + alloc loc0 = ar.pfs, 8, 6, 3, 0 adds r2 = -144, r12 adds r3 = -128, r12 } @@ -178,6 +178,11 @@ elf_machine_runtime_setup (struct link_m nop.f 0 nop.b 0 } + { .mii + mov loc3 = r9 /* preserve language specific register */ + mov loc4 = r10 /* preserve language specific register */ + mov loc5 = r11 /* preserve language specific register */ + } { .mmi stf.spill [r2] = f8, 32 stf.spill [r3] = f9, 32 @@ -232,6 +237,11 @@ elf_machine_runtime_setup (struct link_m ;; } { .mii + mov r9 = loc3 /* restore language specific register */ + mov r10 = loc4 /* restore language specific register */ + mov r11 = loc5 /* restore language specific register */ + } + { .mii ld8 gp = [ret0] mov r8 = loc2 /* restore struct value register */ ;; @@ -424,14 +434,11 @@ _dl_start_user: #define ELF_MACHINE_NO_REL 1 /* Return the address of the entry point. */ -extern ElfW(Addr) _dl_start_address (const struct link_map *map, - ElfW(Addr) start); - #define ELF_MACHINE_START_ADDRESS(map, start) \ - _dl_start_address ((map), (start)) + DL_FUNCTION_ADDRESS (map, start) #define elf_machine_profile_fixup_plt(l, reloc, rel_addr, value) \ - elf_machine_fixup_plt ((l), (reloc), (rel_addr), (value)) + elf_machine_fixup_plt (l, reloc, rel_addr, value) #define elf_machine_profile_plt(reloc_addr) ((Elf64_Addr) (reloc_addr)) diff -adurpN glibc-2.2/sysdeps/ia64/dl-symaddr.c glibc-2.2.1/sysdeps/ia64/dl-symaddr.c --- glibc-2.2/sysdeps/ia64/dl-symaddr.c Fri May 5 00:14:51 2000 +++ glibc-2.2.1/sysdeps/ia64/dl-symaddr.c Thu Nov 16 11:12:04 2000 @@ -21,7 +21,7 @@ #include void * -_dl_symbol_address (const struct link_map *map, const ElfW(Sym) *ref) +_dl_symbol_address (const struct link_map *map, const Elf64_Sym *ref) { Elf64_Addr value = (map ? map->l_addr : 0) + ref->st_value; @@ -32,8 +32,8 @@ _dl_symbol_address (const struct link_ma return (void *) value; } -ElfW(Addr) -_dl_start_address (const struct link_map *map, ElfW(Addr) start) +Elf64_Addr +_dl_function_address (const struct link_map *map, Elf64_Addr start) { return __ia64_make_fptr (map, start, &__fptr_root, NULL); } diff -adurpN glibc-2.2/sysdeps/ia64/elf/start.S glibc-2.2.1/sysdeps/ia64/elf/start.S --- glibc-2.2/sysdeps/ia64/elf/start.S Fri May 5 09:42:39 2000 +++ glibc-2.2.1/sysdeps/ia64/elf/start.S Sat Jan 6 20:35:39 2001 @@ -82,3 +82,11 @@ _start: ;; } .endp _start# + +/* Define a symbol for the first piece of initialized data. */ + .data + .globl __data_start +__data_start: + .long 0 + .weak data_start + data_start = __data_start diff -adurpN glibc-2.2/sysdeps/ia64/fpu/bits/mathdef.h glibc-2.2.1/sysdeps/ia64/fpu/bits/mathdef.h --- glibc-2.2/sysdeps/ia64/fpu/bits/mathdef.h Tue Sep 26 12:07:05 2000 +++ glibc-2.2.1/sysdeps/ia64/fpu/bits/mathdef.h Sat Jan 6 20:35:39 2001 @@ -31,17 +31,11 @@ typedef long double float_t; /* `float' typedef long double double_t; /* `double' expressions are evaluated as `long double'. */ -/* Signal that both types are `long double'. */ -# define FLT_EVAL_METHOD 2 - /* Define `INFINITY' as value of type `float'. */ # define INFINITY HUGE_VALF /* The values returned by `ilogb' for 0 and NaN respectively. */ # define FP_ILOGB0 (-2147483647 - 1) # define FP_ILOGBNAN (-2147483647 - 1) - -/* Number of decimal digits for the `long double' type. */ -# define DECIMAL_DIG 18 #endif /* ISO C99 */ diff -adurpN glibc-2.2/sysdeps/ia64/fpu/libm-test-ulps glibc-2.2.1/sysdeps/ia64/fpu/libm-test-ulps --- glibc-2.2/sysdeps/ia64/fpu/libm-test-ulps Thu Oct 26 22:57:35 2000 +++ glibc-2.2.1/sysdeps/ia64/fpu/libm-test-ulps Thu Nov 16 11:12:04 2000 @@ -19,7 +19,7 @@ ifloat: 2 Test "asin (0.5) == pi/6": float: 2 ifloat: 2 -Test "asin (0.7) == 0.7753974966107530637": +Test "asin (0.7) == 0.77539749661075306374035335271498708": float: 2 ifloat: 2 double: 1 @@ -290,14 +290,14 @@ float: 1 ifloat: 1 ildouble: 18 ldouble: 18 -Test "Real part of: cexp (0.7 + 1.2 i) == 0.7296989091503236012 + 1.8768962328348102821 i": +Test "Real part of: cexp (0.7 + 1.2 i) == 0.72969890915032360123451688642930727 + 1.8768962328348102821139467908203072 i": float: 1 ifloat: 1 double: 1 idouble: 1 ildouble: 940 ldouble: 940 -Test "Imaginary part of: cexp (0.7 + 1.2 i) == 0.7296989091503236012 + 1.8768962328348102821 i": +Test "Imaginary part of: cexp (0.7 + 1.2 i) == 0.72969890915032360123451688642930727 + 1.8768962328348102821139467908203072 i": float: 1 ifloat: 1 ildouble: 1067 @@ -424,7 +424,7 @@ idouble: 1 ifloat: 1 # cos -Test "cos (0.7) == 0.7648421872844884262": +Test "cos (0.7) == 0.76484218728448842625585999019186495": float: 1 ifloat: 1 double: 1 @@ -629,7 +629,7 @@ double: 2 idouble: 2 ildouble: 818 ldouble: 818 -Test "exp10 (0.7) == 5.0118723362727228500": +Test "exp10 (0.7) == 5.0118723362727228500155418688494574": float: 1 ifloat: 1 double: 1 @@ -914,7 +914,7 @@ ldouble: 627 Test "sincos (0.7, &sin_res, &cos_res) puts 0.64421768723769105367 in sin_res": ildouble: 627 ldouble: 627 -Test "sincos (0.7, &sin_res, &cos_res) puts 0.76484218728448842626 in cos_res": +Test "sincos (0.7, &sin_res, &cos_res) puts 0.76484218728448842625585999019186495 in cos_res": float: 1 ifloat: 1 double: 1 @@ -926,7 +926,7 @@ double: 1 float: 0.5 idouble: 1 ifloat: 0.5 -Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.866025403784438646764 in sin_res": +Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res": double: 1 float: 1 idouble: 1 @@ -940,7 +940,7 @@ idouble: 0.2758 ifloat: 0.3667 ildouble: 0.25 ldouble: 0.25 -Test "sincos (pi/6, &sin_res, &cos_res) puts 0.866025403784438646764 in cos_res": +Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res": float: 1 ifloat: 1 diff -adurpN glibc-2.2/sysdeps/ia64/fpu/math_ldbl.h glibc-2.2.1/sysdeps/ia64/fpu/math_ldbl.h --- glibc-2.2/sysdeps/ia64/fpu/math_ldbl.h Sat Sep 30 14:54:36 2000 +++ glibc-2.2.1/sysdeps/ia64/fpu/math_ldbl.h Sat Jan 6 20:35:39 2001 @@ -13,7 +13,7 @@ typedef union struct { unsigned int empty0:32; - unsigned int sign_exponent:16; + int sign_exponent:16; unsigned int empty1:16; u_int32_t msw; u_int32_t lsw; @@ -31,7 +31,7 @@ typedef union { u_int32_t lsw; u_int32_t msw; - unsigned int sign_exponent:16; + int sign_exponent:16; unsigned int empty1:16; unsigned int empty0:32; } parts; diff -adurpN glibc-2.2/sysdeps/ia64/fpu/s_copysign.S glibc-2.2.1/sysdeps/ia64/fpu/s_copysign.S --- glibc-2.2/sysdeps/ia64/fpu/s_copysign.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/ia64/fpu/s_copysign.S Sat Dec 9 00:09:07 2000 @@ -0,0 +1,34 @@ +/* Copyright (C) 2000 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. */ + +#include +#undef ret + +ENTRY (__copysign) +{ + fmerge.s fret0 = farg1, farg0 + br.ret.sptk.many rp +} +END (__copysign) + +strong_alias (__copysign, __copysignf) +strong_alias (__copysign, __copysignl) + +weak_alias (__copysign, copysign) +weak_alias (__copysignf, copysignf) +weak_alias (__copysignl, copysignl) diff -adurpN glibc-2.2/sysdeps/ia64/fpu/s_copysignf.S glibc-2.2.1/sysdeps/ia64/fpu/s_copysignf.S --- glibc-2.2/sysdeps/ia64/fpu/s_copysignf.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/ia64/fpu/s_copysignf.S Sat Dec 9 00:09:14 2000 @@ -0,0 +1 @@ +/* __copysignf is in s_copysign.S. */ diff -adurpN glibc-2.2/sysdeps/ia64/fpu/s_copysignl.S glibc-2.2.1/sysdeps/ia64/fpu/s_copysignl.S --- glibc-2.2/sysdeps/ia64/fpu/s_copysignl.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/ia64/fpu/s_copysignl.S Sat Dec 9 00:09:22 2000 @@ -0,0 +1 @@ +/* __copysignl is in s_copysign.S. */ diff -adurpN glibc-2.2/sysdeps/ia64/fpu/s_fabs.S glibc-2.2.1/sysdeps/ia64/fpu/s_fabs.S --- glibc-2.2/sysdeps/ia64/fpu/s_fabs.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/ia64/fpu/s_fabs.S Fri Dec 15 20:48:04 2000 @@ -0,0 +1,34 @@ +/* Copyright (C) 2000 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. */ + +#include +#undef ret + +ENTRY (__fabs) +{ + fabs fret0 = farg0 + br.ret.sptk.many rp +} +END (__fabs) + +strong_alias (__fabs, __fabsf) +strong_alias (__fabs, __fabsl) + +weak_alias (__fabs, fabs) +weak_alias (__fabsf, fabsf) +weak_alias (__fabsl, fabsl) diff -adurpN glibc-2.2/sysdeps/ia64/fpu/s_fabsf.S glibc-2.2.1/sysdeps/ia64/fpu/s_fabsf.S --- glibc-2.2/sysdeps/ia64/fpu/s_fabsf.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/ia64/fpu/s_fabsf.S Fri Dec 15 20:48:20 2000 @@ -0,0 +1 @@ +/* __fabsf is in s_fabs.S. */ diff -adurpN glibc-2.2/sysdeps/ia64/fpu/s_fabsl.S glibc-2.2.1/sysdeps/ia64/fpu/s_fabsl.S --- glibc-2.2/sysdeps/ia64/fpu/s_fabsl.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/ia64/fpu/s_fabsl.S Fri Dec 15 20:48:33 2000 @@ -0,0 +1 @@ +/* __fabsl is in s_fabs.S. */ diff -adurpN glibc-2.2/sysdeps/ia64/fpu/s_finite.S glibc-2.2.1/sysdeps/ia64/fpu/s_finite.S --- glibc-2.2/sysdeps/ia64/fpu/s_finite.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/ia64/fpu/s_finite.S Sat Dec 9 00:09:33 2000 @@ -0,0 +1,41 @@ +/* Copyright (C) 2000 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. */ + +#include +#undef ret + +ENTRY (__finite) +{ +.mfi + fclass.m p6, p7 = farg0, @nat | @qnan | @snan | @inf + ;; +} +{ +.mib +(p6) mov ret0 = 0 +(p7) mov ret0 = 1 + br.ret.sptk.many rp +} +END (__finite) + +strong_alias (__finite, __finitef) +strong_alias (__finite, __finitel) + +weak_alias (__finite, finite) +weak_alias (__finitef, finitef) +weak_alias (__finitel, finitel) diff -adurpN glibc-2.2/sysdeps/ia64/fpu/s_finitef.S glibc-2.2.1/sysdeps/ia64/fpu/s_finitef.S --- glibc-2.2/sysdeps/ia64/fpu/s_finitef.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/ia64/fpu/s_finitef.S Sat Dec 9 00:09:41 2000 @@ -0,0 +1 @@ +/* __finitef is in s_finite.S. */ diff -adurpN glibc-2.2/sysdeps/ia64/fpu/s_finitel.S glibc-2.2.1/sysdeps/ia64/fpu/s_finitel.S --- glibc-2.2/sysdeps/ia64/fpu/s_finitel.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/ia64/fpu/s_finitel.S Sat Dec 9 00:09:49 2000 @@ -0,0 +1 @@ +/* __finitel is in s_finite.S. */ diff -adurpN glibc-2.2/sysdeps/ia64/fpu/s_fpclassify.S glibc-2.2.1/sysdeps/ia64/fpu/s_fpclassify.S --- glibc-2.2/sysdeps/ia64/fpu/s_fpclassify.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/ia64/fpu/s_fpclassify.S Sat Dec 9 00:10:28 2000 @@ -0,0 +1,59 @@ +/* Return classification value corresponding to argument. + Copyright (C) 2000 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. */ + +#include +#undef ret + +ENTRY (__fpclassify) +{ +.mfi + fclass.m p6, p7 = farg0, @nat | @qnan | @snan + ;; +} +{ +.mfb +(p6) mov ret0 = 0 +(p7) fclass.m p7, p8 = farg0, @inf +(p6) br.ret.sptk.many rp + ;; +} +{ +.mfb +(p7) mov ret0 = 1 +(p8) fclass.m p8, p6 = farg0, @zero +(p7) br.ret.sptk.many rp + ;; +} +{ +.mfb +(p8) mov ret0 = 2 +(p6) fclass.m p6, p7 = farg0, @unorm +(p8) br.ret.sptk.many rp + ;; +} +{ + .pred.rel.mutex p6, p7 +(p6) mov ret0 = 3 +(p7) mov ret0 = 4 + br.ret.sptk.many rp +} +END (__fpclassify) + +strong_alias (__fpclassify, __fpclassifyf) +strong_alias (__fpclassify, __fpclassifyl) diff -adurpN glibc-2.2/sysdeps/ia64/fpu/s_fpclassifyf.S glibc-2.2.1/sysdeps/ia64/fpu/s_fpclassifyf.S --- glibc-2.2/sysdeps/ia64/fpu/s_fpclassifyf.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/ia64/fpu/s_fpclassifyf.S Sat Dec 9 00:10:34 2000 @@ -0,0 +1 @@ +/* __fpclassifyf is in s_fpclassify.S. */ diff -adurpN glibc-2.2/sysdeps/ia64/fpu/s_fpclassifyl.S glibc-2.2.1/sysdeps/ia64/fpu/s_fpclassifyl.S --- glibc-2.2/sysdeps/ia64/fpu/s_fpclassifyl.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/ia64/fpu/s_fpclassifyl.S Sat Dec 9 00:10:40 2000 @@ -0,0 +1 @@ +/* __fpclassifyl is in s_fpclassify.S. */ diff -adurpN glibc-2.2/sysdeps/ia64/fpu/s_isinf.S glibc-2.2.1/sysdeps/ia64/fpu/s_isinf.S --- glibc-2.2/sysdeps/ia64/fpu/s_isinf.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/ia64/fpu/s_isinf.S Sat Dec 9 00:10:49 2000 @@ -0,0 +1,54 @@ +/* Test for inf/-inf + Copyright (C) 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jes Sorensen , October 2000. + + 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. */ + +/* + * isinf(x) returns 1 if x is inf, -1 for x == -inf, else 0; + */ + +#include +#undef ret + +ENTRY (__isinf) +{ +.mfi + fclass.m p6, p7 = farg0, @inf|@pos + ;; +} +{ +.mfb +(p6) mov ret0 = 1 +(p7) fclass.m p7, p8 = farg0, @inf|@neg +(p6) br.ret.sptk.many rp + ;; +} +{ + .pred.rel.mutex p7,p8 +(p7) mov ret0 = -1 +(p8) mov ret0 = 0 + br.ret.sptk.many rp +} +END (__isinf) + +strong_alias (__isinf, __isinff) +strong_alias (__isinf, __isinfl) + +weak_alias (__isinf, isinf) +weak_alias (__isinff, isinff) +weak_alias (__isinfl, isinfl) diff -adurpN glibc-2.2/sysdeps/ia64/fpu/s_isinff.S glibc-2.2.1/sysdeps/ia64/fpu/s_isinff.S --- glibc-2.2/sysdeps/ia64/fpu/s_isinff.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/ia64/fpu/s_isinff.S Sat Dec 9 00:10:57 2000 @@ -0,0 +1 @@ +/* __isinff is in s_isinf.S. */ diff -adurpN glibc-2.2/sysdeps/ia64/fpu/s_isinfl.S glibc-2.2.1/sysdeps/ia64/fpu/s_isinfl.S --- glibc-2.2/sysdeps/ia64/fpu/s_isinfl.S Tue Oct 31 18:57:44 2000 +++ glibc-2.2.1/sysdeps/ia64/fpu/s_isinfl.S Sat Jan 6 20:35:39 2001 @@ -1,47 +1 @@ -/* Test for inf/-inf - Copyright (C) 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jes Sorensen , October 2000. - - 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. */ - -/* - * isinfl(x) returns 1 if x is inf, -1 for x == -inf, else 0; - */ - -#include -#undef ret - -ENTRY (__isinfl) -{ -.mfi - fclass.m p6, p7 = farg0, @inf|@pos - ;; -} -{ -.mfb -(p6) mov ret0 = 1 -(p7) fclass.m p7, p8 = farg0, @inf|@neg -(p6) br.ret.sptk.many rp - ;; -} -(p7) mov ret0 = -1 -(p8) mov ret0 = 0 - br.ret.sptk.many rp -} -END (__isinfl) - -weak_alias (__isinfl, isinfl) +/* __isinfl is in s_isinf.S. */ diff -adurpN glibc-2.2/sysdeps/ia64/fpu/s_isnan.S glibc-2.2.1/sysdeps/ia64/fpu/s_isnan.S --- glibc-2.2/sysdeps/ia64/fpu/s_isnan.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/ia64/fpu/s_isnan.S Sat Dec 9 00:11:05 2000 @@ -0,0 +1,47 @@ +/* Test for NaN + Copyright (C) 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jes Sorensen , October 2000. + + 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. */ + +/* + * isnan(x) returns 1 is x is nan, else 0; + */ + +#include +#undef ret + +ENTRY (__isnan) +{ +.mfi + fclass.m p6, p7 = farg0, @nat | @qnan | @snan + ;; +} +{ +.mib +(p6) mov ret0 = 1 +(p7) mov ret0 = 0 + br.ret.sptk.many rp +} +END (__isnan) + +strong_alias (__isnan, __isnanf) +strong_alias (__isnan, __isnanl) + +weak_alias (__isnan, isnan) +weak_alias (__isnanf, isnanf) +weak_alias (__isnanl, isnanl) diff -adurpN glibc-2.2/sysdeps/ia64/fpu/s_isnanf.S glibc-2.2.1/sysdeps/ia64/fpu/s_isnanf.S --- glibc-2.2/sysdeps/ia64/fpu/s_isnanf.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/ia64/fpu/s_isnanf.S Sat Dec 9 00:11:12 2000 @@ -0,0 +1 @@ +/* __isnanf is in s_isnan.S. */ diff -adurpN glibc-2.2/sysdeps/ia64/fpu/s_isnanl.S glibc-2.2.1/sysdeps/ia64/fpu/s_isnanl.S --- glibc-2.2/sysdeps/ia64/fpu/s_isnanl.S Tue Oct 31 18:58:01 2000 +++ glibc-2.2.1/sysdeps/ia64/fpu/s_isnanl.S Sat Jan 6 20:35:39 2001 @@ -1,42 +1 @@ -/* Test for NaN - Copyright (C) 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jes Sorensen , October 2000. - - 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. */ - -/* - * isnanl(x) returns 1 is x is nan, else 0; - */ - -#include -#undef ret - -ENTRY (__isnanl) -{ -.mfi - fclass.m p6, p7 = farg0, @nat | @qnan | @snan - ;; -} -{ -.mib -(p6) mov ret0 = 1 -(p7) mov ret0 = 0 - br.ret.sptk.many rp -} -END (__isnanl) - -weak_alias (__isnanl, isnanl) +/* __isnanl is in s_isnan.S. */ diff -adurpN glibc-2.2/sysdeps/ia64/fpu/s_signbit.S glibc-2.2.1/sysdeps/ia64/fpu/s_signbit.S --- glibc-2.2/sysdeps/ia64/fpu/s_signbit.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/ia64/fpu/s_signbit.S Sat Dec 9 00:11:24 2000 @@ -0,0 +1,37 @@ +/* Copyright (C) 2000 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. */ + +#include +#undef ret + +ENTRY (__signbit) +{ +.mfi + fclass.m p6, p7 = farg0, @zero | @unorm | @norm | @inf | @neg + ;; +} +{ +.mib +(p6) mov ret0 = 1 +(p7) mov ret0 = 0 + br.ret.sptk.many rp +} +END (__signbit) + +strong_alias (__signbit, __signbitf) +strong_alias (__signbit, __signbitl) diff -adurpN glibc-2.2/sysdeps/ia64/fpu/s_signbitf.S glibc-2.2.1/sysdeps/ia64/fpu/s_signbitf.S --- glibc-2.2/sysdeps/ia64/fpu/s_signbitf.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/ia64/fpu/s_signbitf.S Sat Dec 9 00:11:30 2000 @@ -0,0 +1 @@ +/* __signbitf is in s_signbit.S. */ diff -adurpN glibc-2.2/sysdeps/ia64/fpu/s_signbitl.S glibc-2.2.1/sysdeps/ia64/fpu/s_signbitl.S --- glibc-2.2/sysdeps/ia64/fpu/s_signbitl.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/ia64/fpu/s_signbitl.S Sat Dec 9 00:11:37 2000 @@ -0,0 +1 @@ +/* __signbitl is in s_signbit.S. */ diff -adurpN glibc-2.2/sysdeps/ia64/machine-gmon.h glibc-2.2.1/sysdeps/ia64/machine-gmon.h --- glibc-2.2/sysdeps/ia64/machine-gmon.h Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/ia64/machine-gmon.h Tue Nov 28 09:47:46 2000 @@ -0,0 +1,26 @@ +/* Machine-specific calling sequence for `mcount' profiling function. IA-64. + Copyright (C) 1995, 1996, 1997, 2000 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. */ + +#define _MCOUNT_DECL(from, self) \ + void __mcount (u_long from, u_long self) + +/* Call __mcount with our the return PC for our caller, and the return + PC our caller will return to. Empty since we use an assembly stub + instead. */ +#define MCOUNT diff -adurpN glibc-2.2/sysdeps/ia64/strcpy.S glibc-2.2.1/sysdeps/ia64/strcpy.S --- glibc-2.2/sysdeps/ia64/strcpy.S Sun May 21 14:56:19 2000 +++ glibc-2.2.1/sysdeps/ia64/strcpy.S Sat Jan 6 20:35:39 2001 @@ -73,10 +73,10 @@ ENTRY(strcpy) .l1: // copy -dest % 8 bytes ld1 c = [src], 1 // c = *src++ ;; - st1 [dest] = c, 1 // *dest++ = c + st1 [dest] = c, 1 // *dest++ = c cmp.eq p6, p0 = c, r0 (p6) br.cond.dpnt .restore_and_exit - br.cloop.dptk .l1 ;; + br.cloop.dptk .l1 ;; .dest_aligned: and sh1 = 7, src // sh1 = src % 8 mov ar.lc = -1 // "infinite" loop @@ -89,10 +89,10 @@ ENTRY(strcpy) cmp.eq p6, p0 = sh1, r0 // is the src aligned? (p6) br.cond.sptk .src_aligned ;; ld8 r[1] = [asrc],8 ;; - + .align 32 -.l2: - ld8.s r[0] = [asrc], 8 +.l2: + ld8.s r[0] = [asrc], 8 shr.u value = r[1], sh1 ;; // value = w0 >> sh1 czx1.r pos = value ;; // do we have an "early" zero cmp.lt p7, p0 = pos, thresh // in w0 >> sh1? @@ -112,7 +112,7 @@ ENTRY(strcpy) (p[0]) ld8.s r[0] = [src], 8 (p[MEMLAT]) chk.s r[MEMLAT], .recovery3 .back3: -(p[MEMLAT]) mov value = r[MEMLAT] +(p[MEMLAT]) mov value = r[MEMLAT] (p[MEMLAT]) czx1.r pos = r[MEMLAT] ;; (p[MEMLAT]) cmp.ne p7, p0 = 8, pos (p7) br.cond.dpnt .found0 @@ -133,7 +133,7 @@ ENTRY(strcpy) br.ret.sptk.many b0 .recovery2: add tmp = -8, asrc ;; - ld8 r[MEMLAT] = [tmp] + ld8 r[0] = [tmp] br.cond.sptk .back2 .recovery3: add tmp = -(MEMLAT + 1) * 8, src ;; diff -adurpN glibc-2.2/sysdeps/ieee754/flt-32/s_fpclassifyf.c glibc-2.2.1/sysdeps/ieee754/flt-32/s_fpclassifyf.c --- glibc-2.2/sysdeps/ieee754/flt-32/s_fpclassifyf.c Tue Jul 13 17:01:20 1999 +++ glibc-2.2.1/sysdeps/ieee754/flt-32/s_fpclassifyf.c Sat Jan 6 20:35:39 2001 @@ -1,5 +1,5 @@ /* Return classification value corresponding to argument. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -33,7 +33,7 @@ __fpclassifyf (float x) wx &= 0x7fffffff; if (wx == 0) retval = FP_ZERO; - else if (wx < 0x1000000) + else if (wx < 0x800000) retval = FP_SUBNORMAL; else if (wx >= 0x7f800000) retval = wx > 0x7f800000 ? FP_NAN : FP_INFINITE; diff -adurpN glibc-2.2/sysdeps/ieee754/flt-32/s_sincosf.c glibc-2.2.1/sysdeps/ieee754/flt-32/s_sincosf.c --- glibc-2.2/sysdeps/ieee754/flt-32/s_sincosf.c Tue Jul 13 17:02:48 1999 +++ glibc-2.2.1/sysdeps/ieee754/flt-32/s_sincosf.c Sat Jan 6 20:35:39 2001 @@ -1,5 +1,5 @@ /* Compute sine and cosine of argument. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. @@ -38,7 +38,7 @@ __sincosf (float x, float *sinx, float * *sinx = __kernel_sinf (x, 0.0, 0); *cosx = __kernel_cosf (x, 0.0); } - else if (ix>=0x7ff00000) + else if (ix>=0x7f800000) { /* sin(Inf or NaN) is NaN */ *sinx = *cosx = x - x; diff -adurpN glibc-2.2/sysdeps/ieee754/ldbl-96/math_ldbl.h glibc-2.2.1/sysdeps/ieee754/ldbl-96/math_ldbl.h --- glibc-2.2/sysdeps/ieee754/ldbl-96/math_ldbl.h Tue Jul 13 17:12:10 1999 +++ glibc-2.2.1/sysdeps/ieee754/ldbl-96/math_ldbl.h Sat Jan 6 20:35:39 2001 @@ -12,7 +12,7 @@ typedef union long double value; struct { - unsigned int sign_exponent:16; + int sign_exponent:16; unsigned int empty:16; u_int32_t msw; u_int32_t lsw; @@ -30,7 +30,7 @@ typedef union { u_int32_t lsw; u_int32_t msw; - unsigned int sign_exponent:16; + int sign_exponent:16; unsigned int empty:16; } parts; } ieee_long_double_shape_type; diff -adurpN glibc-2.2/sysdeps/m68k/fpu/bits/mathdef.h glibc-2.2.1/sysdeps/m68k/fpu/bits/mathdef.h --- glibc-2.2/sysdeps/m68k/fpu/bits/mathdef.h Thu Sep 7 11:56:39 2000 +++ glibc-2.2.1/sysdeps/m68k/fpu/bits/mathdef.h Sat Jan 6 20:35:39 2001 @@ -31,17 +31,11 @@ typedef long double float_t; /* `float' typedef long double double_t; /* `double' expressions are evaluated as `long double'. */ -/* Signal that both types are `long double'. */ -# define FLT_EVAL_METHOD 2 - /* Define `INFINITY' as value of type `float'. */ # define INFINITY HUGE_VALF /* The values returned by `ilogb' for 0 and NaN respectively. */ # define FP_ILOGB0 (-2147483647 - 1) # define FP_ILOGBNAN (2147483647) - -/* Number of decimal digits for the `long double' type. */ -# define DECIMAL_DIG 18 #endif /* ISO C99 */ diff -adurpN glibc-2.2/sysdeps/mach/hurd/Dist glibc-2.2.1/sysdeps/mach/hurd/Dist --- glibc-2.2/sysdeps/mach/hurd/Dist Wed Nov 8 14:10:22 2000 +++ glibc-2.2.1/sysdeps/mach/hurd/Dist Sat Jan 6 20:35:39 2001 @@ -12,4 +12,5 @@ net/if_ppp.h net/route.h nfs/nfs.h siglist.h +statfsconv.c xstatconv.c diff -adurpN glibc-2.2/sysdeps/mach/hurd/defs.c glibc-2.2.1/sysdeps/mach/hurd/defs.c --- glibc-2.2/sysdeps/mach/hurd/defs.c Mon May 26 15:22:18 1997 +++ glibc-2.2.1/sysdeps/mach/hurd/defs.c Fri Dec 1 11:55:09 2000 @@ -1,5 +1,5 @@ /* Definitions of global stdio data structures. - Copyright (C) 1991, 92, 93, 94, 95, 1997 Free Software Foundation, Inc. + Copyright (C) 1991,92,93,94,95,97,2000 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 @@ -66,7 +66,10 @@ init_stdio (void) (void) &init_stdio; /* Avoid "defined but not used" warning. */ } -text_set_element (_hurd_fd_subinit, init_stdio); +/* This initializer will be run along with other vanilla libc initializers + in a normal Posixoid environment. The earlier Hurd-speciifc initializer + phases cannot use normal facilities like malloc (which stdio uses). */ +text_set_element (__libc_subinit, init_stdio); /* This function MUST be in this file! This is because we want _cleanup to go into the __libc_atexit set diff -adurpN glibc-2.2/sysdeps/mach/hurd/dl-sysdep.c glibc-2.2.1/sysdeps/mach/hurd/dl-sysdep.c --- glibc-2.2/sysdeps/mach/hurd/dl-sysdep.c Sun Oct 8 17:05:06 2000 +++ glibc-2.2.1/sysdeps/mach/hurd/dl-sysdep.c Sat Jan 6 20:35:40 2001 @@ -251,6 +251,7 @@ fmh(); /* XXX */ } void +internal_function _dl_sysdep_start_cleanup (void) { /* Deallocate the reply port and task port rights acquired by diff -adurpN glibc-2.2/sysdeps/mach/hurd/fstatfs64.c glibc-2.2.1/sysdeps/mach/hurd/fstatfs64.c --- glibc-2.2/sysdeps/mach/hurd/fstatfs64.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/mach/hurd/fstatfs64.c Sat Jan 6 16:13:43 2001 @@ -0,0 +1,40 @@ +/* Copyright (C) 2001 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. */ + +#include + +#include "statfsconv.c" + +/* Return information about the filesystem on which FD resides. */ +int +__fstatfs64 (int fd, struct statfs64 *buf) +{ + int result; + struct statfs buf32; + + /* XXX We simply call __fstatfs and convert the result to `struct + statfs64'. We can probably get away with that since we don't + support large files on the Hurd yet. */ + result = __fstatfs (fd, &buf32); + if (result == 0) + statfs64_conv (&buf32, buf); + + return result; +} + +weak_alias (__fstatfs64, fstatfs64) diff -adurpN glibc-2.2/sysdeps/mach/hurd/fstatvfs.c glibc-2.2.1/sysdeps/mach/hurd/fstatvfs.c --- glibc-2.2/sysdeps/mach/hurd/fstatvfs.c Sat Dec 26 17:34:52 1998 +++ glibc-2.2.1/sysdeps/mach/hurd/fstatvfs.c Sat Jan 6 20:35:40 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1998 Free Software Foundation, Inc. +/* Copyright (C) 1998, 2001 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 @@ -22,5 +22,7 @@ int fstatvfs (int fd, struct statvfs *buf) { + /* `struct statvfs' is in fact identical to `struct statfs' so we + can simply call fstatfs. */ return __fstatfs (fd, (struct statfs *)buf); } diff -adurpN glibc-2.2/sysdeps/mach/hurd/fstatvfs64.c glibc-2.2.1/sysdeps/mach/hurd/fstatvfs64.c --- glibc-2.2/sysdeps/mach/hurd/fstatvfs64.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/mach/hurd/fstatvfs64.c Sat Jan 6 16:13:43 2001 @@ -0,0 +1,28 @@ +/* Copyright (C) 2001 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. */ + +#include +#include + +int +fstatvfs64 (int fd, struct statvfs64 *buf) +{ + /* `struct statvfs64' is in fact identical to `struct statfs64' so + we can simply call fstatfs64. */ + return __fstatfs64 (fd, (struct statfs64 *)buf); +} diff -adurpN glibc-2.2/sysdeps/mach/hurd/if_index.c glibc-2.2.1/sysdeps/mach/hurd/if_index.c --- glibc-2.2/sysdeps/mach/hurd/if_index.c Fri Mar 24 12:58:32 2000 +++ glibc-2.2.1/sysdeps/mach/hurd/if_index.c Sat Jan 6 20:35:40 2001 @@ -156,7 +156,7 @@ if_freenameindex (struct if_nameindex *i free (ifn); } - +#if 0 void internal_function __protocol_available (int *have_inet, int *have_inet6) @@ -164,3 +164,4 @@ __protocol_available (int *have_inet, in *have_inet = _hurd_socket_server (PF_INET, 0) != MACH_PORT_NULL; *have_inet6 = _hurd_socket_server (PF_INET6, 0) != MACH_PORT_NULL; } +#endif diff -adurpN glibc-2.2/sysdeps/mach/hurd/ioctl.c glibc-2.2.1/sysdeps/mach/hurd/ioctl.c --- glibc-2.2/sysdeps/mach/hurd/ioctl.c Tue Mar 9 20:51:40 1999 +++ glibc-2.2.1/sysdeps/mach/hurd/ioctl.c Sat Jan 6 20:35:40 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1992, 93, 94, 95, 96, 97, 99 Free Software Foundation, Inc. +/* Copyright (C) 1992,93,94,95,96,97,99,2000 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 @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -82,6 +83,10 @@ __ioctl (int fd, unsigned long int reque if (_IOC_INOUT (request) & IOC_IN) { + /* We don't want to advance ARG since it will be used to copy out + too if IOC_OUT is also set. */ + void *argptr = arg; + /* Pack an argument into the message buffer. */ void in (unsigned int count, enum __ioctl_datum type) { @@ -90,10 +95,9 @@ __ioctl (int fd, unsigned long int reque void *p = &t[1]; const size_t len = count * typesize ((unsigned int) type); *t = io2mach_type (count, type); - memcpy (p, arg, len); - arg += len; - p += len; - p = (void *) (((unsigned long int) p + sizeof (*t) - 1) + p = __mempcpy (p, argptr, len); + argptr += len; + p = (void *) (((uintptr_t) p + sizeof (*t) - 1) & ~(sizeof (*t) - 1)); t = p; } @@ -232,7 +236,7 @@ __ioctl (int fd, unsigned long int reque memcpy (store, t, len); if (update != NULL) *update += len; - t = (void *) (((unsigned long int) t + len + sizeof (*t) - 1) + t = (void *) (((uintptr_t) t + len + sizeof (*t) - 1) & ~(sizeof (*t) - 1)); } return 0; diff -adurpN glibc-2.2/sysdeps/mach/hurd/profil.c glibc-2.2.1/sysdeps/mach/hurd/profil.c --- glibc-2.2/sysdeps/mach/hurd/profil.c Wed Sep 10 20:27:08 1997 +++ glibc-2.2.1/sysdeps/mach/hurd/profil.c Sat Jan 6 20:35:40 2001 @@ -1,5 +1,5 @@ /* Low-level statistical profiling support function. Mach/Hurd version. - Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + Copyright (C) 1995, 1996, 1997, 2000 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 @@ -25,6 +25,8 @@ #include #include #include +#include + #define MAX_PC_SAMPLES 512 /* XXX ought to be exported in kernel hdr */ diff -adurpN glibc-2.2/sysdeps/mach/hurd/readdir64.c glibc-2.2.1/sysdeps/mach/hurd/readdir64.c --- glibc-2.2/sysdeps/mach/hurd/readdir64.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/mach/hurd/readdir64.c Sat Jan 6 16:25:46 2001 @@ -0,0 +1,41 @@ +/* Copyright (C) 2001 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. */ + +#include +#include +#include +#include + +/* Read a directory entry from DIRP. */ +struct dirent64 * +__readdir64 (DIR *dirp) +{ + struct dirent64 *result; + static union + { + struct dirent64 d; + char b[offsetof (struct dirent64, d_name) + UCHAR_MAX + 1]; + } u; + int err; + + err = __readdir64_r (dirp, &u.d, &result); + + return err ? NULL : result; +} + +weak_alias (__readdir64, readdir64) diff -adurpN glibc-2.2/sysdeps/mach/hurd/readdir64_r.c glibc-2.2.1/sysdeps/mach/hurd/readdir64_r.c --- glibc-2.2/sysdeps/mach/hurd/readdir64_r.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/mach/hurd/readdir64_r.c Sat Jan 6 16:25:46 2001 @@ -0,0 +1,52 @@ +/* Copyright (C) 2001 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. */ + +#include +#include +#include +#include + +/* Read a directory entry from DIRP. */ +int +__readdir64_r (DIR *dirp, struct dirent64 *entry, struct dirent64 **result) +{ + struct dirent *result32; + union + { + struct dirent d; + char b[offsetof (struct dirent, d_name) + UCHAR_MAX + 1]; + } u; + int err; + + err = __readdir_r (dirp, &u.d, &result32); + if (result32) + { + entry->d_fileno = result32->d_fileno; + entry->d_reclen = result32->d_reclen; + entry->d_type = result32->d_type; + entry->d_namlen = result32->d_namlen; + memcpy (entry->d_name, result32->d_name, result32->d_namlen + 1); + *result = entry; + } + else + *result = NULL; + + return err; +} + +weak_alias(__readdir64_r, readdir64_r) diff -adurpN glibc-2.2/sysdeps/mach/hurd/readdir_r.c glibc-2.2.1/sysdeps/mach/hurd/readdir_r.c --- glibc-2.2/sysdeps/mach/hurd/readdir_r.c Mon Jun 23 14:52:13 1997 +++ glibc-2.2.1/sysdeps/mach/hurd/readdir_r.c Sat Jan 6 20:35:40 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1993, 94, 95, 96, 1997, 2001 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 @@ -33,11 +33,12 @@ int __readdir_r (DIR *dirp, struct dirent *entry, struct dirent **result) { struct dirent *dp; + error_t err = 0; if (dirp == NULL) { errno = EINVAL; - return -1; + return errno; } __libc_lock_lock (dirp->__lock); @@ -50,7 +51,6 @@ __readdir_r (DIR *dirp, struct dirent *e char *data = dirp->__data; int nentries; - error_t err; if (err = HURD_FD_PORT_USE (dirp->__fd, __dir_readdir (port, @@ -102,11 +102,15 @@ __readdir_r (DIR *dirp, struct dirent *e if (dp) { *entry = *dp; + memcpy (entry->d_name, dp->d_name, dp->d_namlen + 1); *result = entry; } + else + *result = NULL; __libc_lock_unlock (dirp->__lock); - return dp ? 0 : -1; + return dp ? 0 : err ? errno : 0; } + weak_alias (__readdir_r, readdir_r) diff -adurpN glibc-2.2/sysdeps/mach/hurd/statfs64.c glibc-2.2.1/sysdeps/mach/hurd/statfs64.c --- glibc-2.2/sysdeps/mach/hurd/statfs64.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/mach/hurd/statfs64.c Sat Jan 6 16:13:43 2001 @@ -0,0 +1,40 @@ +/* Copyright (C) 2001 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. */ + +#include + +#include "statfsconv.c" + +/* Return information about the filesystem on which FILE resides. */ +int +__statfs64 (const char *file, struct statfs64 *buf) +{ + int result; + struct statfs buf32; + + /* XXX We simply call __statfs and convert the result to `struct + statfs64'. We can probably get away with that since we don't + support large files on the Hurd yet. */ + result = __statfs (file, &buf32); + if (result == 0) + statfs64_conv (&buf32, buf); + + return result; +} + +weak_alias (__statfs64, statfs64) diff -adurpN glibc-2.2/sysdeps/mach/hurd/statfsconv.c glibc-2.2.1/sysdeps/mach/hurd/statfsconv.c --- glibc-2.2/sysdeps/mach/hurd/statfsconv.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/mach/hurd/statfsconv.c Sat Jan 6 16:13:43 2001 @@ -0,0 +1,39 @@ +/* Convert between `struct statfs' format, and `struct statfs64' format. + Copyright (C) 2001 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. */ + +#include +#include + +static inline void +statfs64_conv (struct statfs *buf, struct statfs64 *buf64) +{ + memset (buf64, 0, sizeof (struct statfs64)); + + buf64->f_type = buf->f_type; + buf64->f_bsize = buf->f_bsize; + buf64->f_blocks = buf->f_blocks; + buf64->f_bfree = buf->f_bfree; + buf64->f_bavail = buf->f_bavail; + buf64->f_files = buf->f_files; + buf64->f_fsid = buf->f_fsid; + buf64->f_namelen = buf->f_namelen; + buf64->f_favail = buf->f_favail; + buf64->f_frsize = buf->f_frsize; + buf64->f_flag = buf->f_flag; +} diff -adurpN glibc-2.2/sysdeps/mach/hurd/statvfs.c glibc-2.2.1/sysdeps/mach/hurd/statvfs.c --- glibc-2.2/sysdeps/mach/hurd/statvfs.c Sat Dec 26 17:33:50 1998 +++ glibc-2.2.1/sysdeps/mach/hurd/statvfs.c Sat Jan 6 20:35:40 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1998 Free Software Foundation, Inc. +/* Copyright (C) 1998, 2001 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 @@ -22,5 +22,7 @@ int statvfs (const char *file, struct statvfs *buf) { + /* `struct statvfs' is in fact identical to `struct statfs' so we + can simply call statfs. */ return __statfs (file, (struct statfs *)buf); } diff -adurpN glibc-2.2/sysdeps/mach/hurd/statvfs64.c glibc-2.2.1/sysdeps/mach/hurd/statvfs64.c --- glibc-2.2/sysdeps/mach/hurd/statvfs64.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/mach/hurd/statvfs64.c Sat Jan 6 16:14:23 2001 @@ -0,0 +1,28 @@ +/* Copyright (C) 2001 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. */ + +#include +#include + +int +statvfs64 (const char *file, struct statvfs64 *buf) +{ + /* `struct statvfs64' is in fact identical to `struct statfs64' so + we can simply call statfs64. */ + return __statfs64 (file, (struct statfs64 *)buf); +} diff -adurpN glibc-2.2/sysdeps/mach/hurd/xstatconv.c glibc-2.2.1/sysdeps/mach/hurd/xstatconv.c --- glibc-2.2/sysdeps/mach/hurd/xstatconv.c Tue Aug 15 11:47:06 2000 +++ glibc-2.2.1/sysdeps/mach/hurd/xstatconv.c Sat Jan 6 20:35:40 2001 @@ -1,5 +1,5 @@ /* Convert between `struct stat' format, and `struct stat64' format. - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2001 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 @@ -35,6 +35,7 @@ xstat64_conv (struct stat *buf, struct s buf64->st_uid = buf->st_uid; buf64->st_gid = buf->st_gid; buf64->st_size = buf->st_size; + buf64->st_atime = buf->st_atime; buf64->st_atime_usec = buf->st_atime_usec; buf64->st_mtime = buf->st_mtime; buf64->st_mtime_usec = buf->st_mtime_usec; diff -adurpN glibc-2.2/sysdeps/mips/__longjmp.c glibc-2.2.1/sysdeps/mips/__longjmp.c --- glibc-2.2/sysdeps/mips/__longjmp.c Mon Apr 17 10:19:00 2000 +++ glibc-2.2.1/sysdeps/mips/__longjmp.c Fri Dec 1 11:55:10 2000 @@ -45,16 +45,10 @@ __longjmp (env, val_arg) asm volatile ("l.d $f28, %0" : : "m" (env[0].__fpregs[4])); asm volatile ("l.d $f30, %0" : : "m" (env[0].__fpregs[5])); - /* Restore the stack pointer. */ - asm volatile ("lw $29, %0" : : "m" (env[0].__sp)); - /* Get and reconstruct the floating point csr. */ asm volatile ("lw $2, %0" : : "m" (env[0].__fpc_csr)); asm volatile ("ctc1 $2, $31"); - /* Get the FP. */ - asm volatile ("lw $30, %0" : : "m" (env[0].__fp)); - /* Get the GP. */ asm volatile ("lw $gp, %0" : : "m" (env[0].__gp)); @@ -71,7 +65,13 @@ __longjmp (env, val_arg) /* Get the PC. */ asm volatile ("lw $25, %0" : : "m" (env[0].__pc)); - /* Give setjmp 1 if given a 0, or what they gave us if non-zero. */ + /* Restore the stack pointer and the FP. They have to be restored + last and in a single asm as gcc, depending on options used, may + use either of them to access env. */ + asm volatile ("lw $29, %0\n\t" + "lw $30, %1\n\t" : : "m" (env[0].__sp), "m" (env[0].__fp)); + +/* Give setjmp 1 if given a 0, or what they gave us if non-zero. */ if (val == 0) asm volatile ("li $2, 1"); else diff -adurpN glibc-2.2/sysdeps/mips/mips64/__longjmp.c glibc-2.2.1/sysdeps/mips/mips64/__longjmp.c --- glibc-2.2/sysdeps/mips/mips64/__longjmp.c Fri Feb 11 15:49:00 2000 +++ glibc-2.2.1/sysdeps/mips/mips64/__longjmp.c Fri Dec 1 11:55:10 2000 @@ -47,16 +47,10 @@ __longjmp (env, val_arg) asm volatile ("l.d $f30, %0" : : "m" (env[0].__fpregs[6])); asm volatile ("l.d $f31, %0" : : "m" (env[0].__fpregs[7])); - /* Restore the stack pointer. */ - asm volatile ("ld $29, %0" : : "m" (env[0].__sp)); - /* Get and reconstruct the floating point csr. */ asm volatile ("lw $2, %0" : : "m" (env[0].__fpc_csr)); asm volatile ("ctc1 $2, $31"); - /* Get the FP. */ - asm volatile ("ld $30, %0" : : "m" (env[0].__fp)); - /* Get the GP. */ asm volatile ("ld $gp, %0" : : "m" (env[0].__gp)); @@ -73,7 +67,14 @@ __longjmp (env, val_arg) /* Get the PC. */ asm volatile ("ld $31, %0" : : "m" (env[0].__pc)); - /* Give setjmp 1 if given a 0, or what they gave us if non-zero. */ + + /* Restore the stack pointer and the FP. They have to be restored + last and in a single asm as gcc, depending on options used, may + use either of them to access env. */ + asm volatile ("ld $29, %0\n\t" + "ld $30, %1\n\t" : : "m" (env[0].__sp), "m" (env[0].__fp)); + +/* Give setjmp 1 if given a 0, or what they gave us if non-zero. */ if (val == 0) asm volatile ("dli $2, 1"); else diff -adurpN glibc-2.2/sysdeps/posix/getaddrinfo.c glibc-2.2.1/sysdeps/posix/getaddrinfo.c --- glibc-2.2/sysdeps/posix/getaddrinfo.c Sun Oct 8 17:05:07 2000 +++ glibc-2.2.1/sysdeps/posix/getaddrinfo.c Wed Nov 22 10:59:56 2000 @@ -99,13 +99,14 @@ struct gaih_typeproto /* Values for `protoflag'. */ #define GAI_PROTO_NOSERVICE 1 +#define GAI_PROTO_PROTOANY 2 static struct gaih_typeproto gaih_inet_typeproto[] = { { 0, 0, NULL, 0 }, { SOCK_STREAM, IPPROTO_TCP, (char *) "tcp", 0 }, { SOCK_DGRAM, IPPROTO_UDP, (char *) "udp", 0 }, - { SOCK_RAW, IPPROTO_RAW, (char *) "raw", GAI_PROTO_NOSERVICE }, + { SOCK_RAW, 0, (char *) "raw", GAI_PROTO_PROTOANY|GAI_PROTO_NOSERVICE }, { 0, 0, NULL, 0 } }; @@ -150,6 +151,7 @@ gaih_local (const char *name, const stru && ((tp->protoflag & GAI_PROTO_NOSERVICE) != 0 || (req->ai_socktype != 0 && req->ai_socktype != tp->socktype) || (req->ai_protocol != 0 + && !(tp->protoflag & GAI_PROTO_PROTOANY) && req->ai_protocol != tp->protocol))) ++tp; @@ -229,7 +231,7 @@ gaih_local (const char *name, const stru static int gaih_inet_serv (const char *servicename, struct gaih_typeproto *tp, - struct gaih_servtuple *st) + const struct addrinfo *req, struct gaih_servtuple *st) { struct servent *s; size_t tmpbuflen = 1024; @@ -255,7 +257,8 @@ gaih_inet_serv (const char *servicename, st->next = NULL; st->socktype = tp->socktype; - st->protocol = tp->protocol; + st->protocol = ((tp->protoflag & GAI_PROTO_PROTOANY) + ? req->ai_protocol : tp->protocol); st->port = s->s_port; return 0; @@ -268,6 +271,7 @@ gaih_inet_serv (const char *servicename, struct hostent th; \ char *tmpbuf; \ tmpbuflen = 512; \ + no_data = 0; \ do { \ tmpbuflen *= 2; \ tmpbuf = __alloca (tmpbuflen); \ @@ -282,17 +286,18 @@ gaih_inet_serv (const char *servicename, return -EAI_SYSTEM; \ } \ if (herrno == TRY_AGAIN) \ - { \ - __set_h_errno (herrno); \ - return -EAI_AGAIN; \ - } \ + no_data = EAI_AGAIN; \ + else \ + no_data = herrno == NO_DATA; \ } \ - if (h != NULL) \ + else if (h != NULL) \ { \ for (i = 0; h->h_addr_list[i]; i++) \ { \ - if (*pat == NULL) \ + if (*pat == NULL) { \ *pat = __alloca (sizeof(struct gaih_addrtuple)); \ + (*pat)->scopeid = 0; \ + } \ (*pat)->next = NULL; \ (*pat)->family = _family; \ memcpy ((*pat)->addr, h->h_addr_list[i], \ @@ -300,7 +305,6 @@ gaih_inet_serv (const char *servicename, pat = &((*pat)->next); \ } \ } \ - no_data = rc != 0 && herrno == NO_DATA; \ } static int @@ -319,6 +323,7 @@ gaih_inet (const char *name, const struc while (tp->name != NULL && ((req->ai_socktype != 0 && req->ai_socktype != tp->socktype) || (req->ai_protocol != 0 + && !(tp->protoflag & GAI_PROTO_PROTOANY) && req->ai_protocol != tp->protocol))) ++tp; @@ -343,7 +348,7 @@ gaih_inet (const char *name, const struc st = (struct gaih_servtuple *) __alloca (sizeof (struct gaih_servtuple)); - if ((rc = gaih_inet_serv (service->name, tp, st))) + if ((rc = gaih_inet_serv (service->name, tp, req, st))) return rc; } else @@ -359,11 +364,15 @@ gaih_inet (const char *name, const struc if (req->ai_socktype != 0 && req->ai_socktype != tp->socktype) continue; + if (req->ai_protocol != 0 + && !(tp->protoflag & GAI_PROTO_PROTOANY) + && req->ai_protocol != tp->protocol) + continue; newp = (struct gaih_servtuple *) __alloca (sizeof (struct gaih_servtuple)); - if ((rc = gaih_inet_serv (service->name, tp, newp))) + if ((rc = gaih_inet_serv (service->name, tp, req, newp))) { if (rc & GAIH_OKIFUNSPEC) continue; @@ -382,7 +391,8 @@ gaih_inet (const char *name, const struc st = __alloca (sizeof (struct gaih_servtuple)); st->next = NULL; st->socktype = tp->socktype; - st->protocol = tp->protocol; + st->protocol = ((tp->protoflag & GAI_PROTO_PROTOANY) + ? req->ai_protocol : tp->protocol); st->port = htons (service->num); } } @@ -390,8 +400,9 @@ gaih_inet (const char *name, const struc { st = __alloca (sizeof (struct gaih_servtuple)); st->next = NULL; - st->socktype = req->ai_socktype; - st->protocol = req->ai_protocol; + st->socktype = tp->socktype; + st->protocol = ((tp->protoflag & GAI_PROTO_PROTOANY) + ? req->ai_protocol : tp->protocol); st->port = 0; } else @@ -498,9 +509,15 @@ gaih_inet (const char *name, const struc gethosts (AF_INET, struct in_addr); if (no_data != 0 && no_inet6_data != 0) - /* We made requests but they turned out no data. The name - is known, though. */ - return (GAIH_OKIFUNSPEC | -EAI_NODATA); + { + /* If both requests timed out report this. */ + if (no_data == EAI_AGAIN && no_inet6_data == EAI_AGAIN) + return -EAI_AGAIN; + + /* We made requests but they turned out no data. The name + is known, though. */ + return (GAIH_OKIFUNSPEC | -EAI_NODATA); + } } if (at->family == AF_UNSPEC) @@ -542,6 +559,7 @@ gaih_inet (const char *name, const struc struct gaih_servtuple *st2; struct gaih_addrtuple *at2 = at; size_t socklen, namelen; + sa_family_t family; /* buffer is the size of an unformatted IPv6 address in printable format. @@ -597,9 +615,15 @@ gaih_inet (const char *name, const struc namelen = 0; if (at2->family == AF_INET6) - socklen = sizeof (struct sockaddr_in6); + { + family = AF_INET6; + socklen = sizeof (struct sockaddr_in6); + } else - socklen = sizeof (struct sockaddr_in); + { + family = AF_INET; + socklen = sizeof (struct sockaddr_in); + } for (st2 = st; st2 != NULL; st2 = st2->next) { @@ -608,7 +632,7 @@ gaih_inet (const char *name, const struc return -EAI_MEMORY; (*pai)->ai_flags = req->ai_flags; - (*pai)->ai_family = at2->family; + (*pai)->ai_family = family; (*pai)->ai_socktype = st2->socktype; (*pai)->ai_protocol = st2->protocol; (*pai)->ai_addrlen = socklen; @@ -616,9 +640,9 @@ gaih_inet (const char *name, const struc #if SALEN (*pai)->ai_addr->sa_len = socklen; #endif /* SALEN */ - (*pai)->ai_addr->sa_family = at2->family; + (*pai)->ai_addr->sa_family = family; - if (at2->family == AF_INET6) + if (family == AF_INET6) { struct sockaddr_in6 *sin6p = (struct sockaddr_in6 *) (*pai)->ai_addr; @@ -703,7 +727,7 @@ getaddrinfo (const char *name, const cha else /* Can't specify a numerical socket unless a protocol family was given. */ - if (hints->ai_socktype == 0) + if (hints->ai_socktype == 0 && hints->ai_protocol == 0) return EAI_SERVICE; pservice = &gaih_service; } diff -adurpN glibc-2.2/sysdeps/posix/sigblock.c glibc-2.2.1/sysdeps/posix/sigblock.c --- glibc-2.2/sysdeps/posix/sigblock.c Wed Jul 15 20:38:28 1998 +++ glibc-2.2.1/sysdeps/posix/sigblock.c Sat Jan 13 10:48:51 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 94, 95, 96, 97, 98 Free Software Foundation, Inc. +/* Copyright (C) 1991, 94, 95, 96, 97, 98, 2001 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 @@ -24,7 +24,7 @@ int __sigblock (mask) int mask; { - register int sig; + register unsigned int sig; sigset_t set, oset; if (__sigemptyset (&set) < 0) diff -adurpN glibc-2.2/sysdeps/posix/sigpause.c glibc-2.2.1/sysdeps/posix/sigpause.c --- glibc-2.2/sysdeps/posix/sigpause.c Thu Aug 31 14:45:24 2000 +++ glibc-2.2.1/sysdeps/posix/sigpause.c Sat Jan 6 20:35:40 2001 @@ -23,9 +23,7 @@ /* Set the mask of blocked signals to MASK, wait for a signal to arrive, and then restore the mask. */ int -__sigpause (sig_or_mask, is_sig) - int sig_or_mask; - int is_sig; +__sigpause (int sig_or_mask, int is_sig) { sigset_t set; int sig; diff -adurpN glibc-2.2/sysdeps/posix/sigsetmask.c glibc-2.2.1/sysdeps/posix/sigsetmask.c --- glibc-2.2/sysdeps/posix/sigsetmask.c Sun Dec 7 18:54:07 1997 +++ glibc-2.2.1/sysdeps/posix/sigsetmask.c Sat Jan 13 10:48:51 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1994, 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1991,1994,1995,1996,1997,2001 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 @@ -23,7 +23,7 @@ int __sigsetmask (int mask) { - register int sig; + register unsigned int sig; sigset_t set, oset; if (__sigemptyset (&set) < 0) diff -adurpN glibc-2.2/sysdeps/powerpc/Makefile glibc-2.2.1/sysdeps/powerpc/Makefile --- glibc-2.2/sysdeps/powerpc/Makefile Thu Sep 14 12:24:27 2000 +++ glibc-2.2.1/sysdeps/powerpc/Makefile Fri Dec 1 11:55:10 2000 @@ -27,7 +27,7 @@ ifeq ($(subdir),csu) ifneq ($(elf),no) # The initfini generation code doesn't work in the presence of -fPIC, so # we use -fpic instead which is much better. -CFLAGS-initfini.s = -g0 -fpic +CFLAGS-initfini.s = -g0 -fpic -O1 # There is no benefit to using sdata for these objects, and the user # of the library should be able to control what goes into sdata. diff -adurpN glibc-2.2/sysdeps/powerpc/bsd-setjmp.S glibc-2.2.1/sysdeps/powerpc/bsd-setjmp.S --- glibc-2.2/sysdeps/powerpc/bsd-setjmp.S Fri Jun 30 23:06:51 2000 +++ glibc-2.2.1/sysdeps/powerpc/bsd-setjmp.S Sat Jan 6 20:35:40 2001 @@ -26,8 +26,7 @@ ENTRY (BP_SYM (__setjmp)) li r4,1 /* Set second argument to 1. */ - b JUMPTARGET(BP_SYM (__sigsetjmp)) + b JUMPTARGET (BP_SYM (__sigsetjmp)) END (BP_SYM (__setjmp)) - .globl BP_SYM (setjmp) - .set BP_SYM (setjmp), BP_SYM (__setjmp) +strong_alias (__setjmp, setjmp) diff -adurpN glibc-2.2/sysdeps/powerpc/dl-machine.c glibc-2.2.1/sysdeps/powerpc/dl-machine.c --- glibc-2.2/sysdeps/powerpc/dl-machine.c Thu Oct 26 22:57:35 2000 +++ glibc-2.2.1/sysdeps/powerpc/dl-machine.c Sat Jan 6 20:35:40 2001 @@ -1,6 +1,5 @@ /* Machine-dependent ELF dynamic relocation functions. PowerPC version. - Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 - Free Software Foundation, Inc. + Copyright (C) 1995,96,97,98,99,2000,2001 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 @@ -236,11 +235,11 @@ __elf_machine_runtime_setup (struct link /* This is the object we are looking for. Say that we really want profiling and the timers are started. */ _dl_profile_map = map; - + /* For the long entries, subtract off data_words. */ tramp[0] = OPCODE_ADDIS_HI (11, 11, -data_words); tramp[1] = OPCODE_ADDI (11, 11, -data_words); - + /* Multiply index of entry by 3 (in r11). */ tramp[2] = OPCODE_SLWI (12, 11, 1); tramp[3] = OPCODE_ADD (11, 12, 11); @@ -249,7 +248,7 @@ __elf_machine_runtime_setup (struct link /* Load address of link map in r12. */ tramp[4] = OPCODE_LI (12, (Elf32_Word) map); tramp[5] = OPCODE_ADDIS_HI (12, 12, (Elf32_Word) map); - + /* Call _dl_runtime_resolve. */ tramp[6] = OPCODE_BA (dlrr); } @@ -259,15 +258,15 @@ __elf_machine_runtime_setup (struct link tramp[4] = OPCODE_LI (12, dlrr); tramp[5] = OPCODE_ADDIS_HI (12, 12, dlrr); tramp[6] = OPCODE_MTCTR (12); - + /* Load address of link map in r12. */ tramp[7] = OPCODE_LI (12, (Elf32_Word) map); tramp[8] = OPCODE_ADDIS_HI (12, 12, (Elf32_Word) map); - + /* Call _dl_runtime_resolve. */ tramp[9] = OPCODE_BCTR (); } - + /* Set up the lazy PLT entries. */ offset = PLT_INITIAL_ENTRY_WORDS; i = 0; @@ -329,7 +328,7 @@ __elf_machine_fixup_plt(struct link_map { Elf32_Word *plt, *data_words; Elf32_Word index, offset, num_plt_entries; - + num_plt_entries = (map->l_info[DT_PLTRELSZ]->d_un.d_val / sizeof(Elf32_Rela)); plt = (Elf32_Word *) D_PTR (map, l_info[DT_PLTGOT]); @@ -343,7 +342,7 @@ __elf_machine_fixup_plt(struct link_map { data_words[index] = finaladdr; PPC_SYNC; - *reloc_addr = OPCODE_B ((PLT_LONGBRANCH_ENTRY_WORDS - (offset+1)) + *reloc_addr = OPCODE_B ((PLT_LONGBRANCH_ENTRY_WORDS - (offset+1)) * 4); } else @@ -368,13 +367,25 @@ __elf_machine_fixup_plt(struct link_map static void dl_reloc_overflow (struct link_map *map, const char *name, - Elf32_Addr *const reloc_addr) + Elf32_Addr *const reloc_addr, + const Elf32_Sym *sym, + const Elf32_Sym *refsym) { char buffer[128]; char *t; + const Elf32_Sym *errsym = sym ?: refsym; t = stpcpy (buffer, name); t = stpcpy (t, " relocation at 0x00000000"); _itoa_word ((unsigned) reloc_addr, t, 16, 0); + if (errsym) + { + const char *strtab; + + strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]); + t = stpcpy (t, " for symbol `"); + t = stpcpy (t, strtab + errsym->st_name); + t = stpcpy (t, "'"); + } t = stpcpy (t, " out of range"); _dl_signal_error (0, map->l_name, buffer); } @@ -402,14 +413,14 @@ __process_machine_rela (struct link_map case R_PPC_ADDR24: if (finaladdr > 0x01fffffc && finaladdr < 0xfe000000) - dl_reloc_overflow (map, "R_PPC_ADDR24", reloc_addr); + dl_reloc_overflow (map, "R_PPC_ADDR24", reloc_addr, sym, refsym); *reloc_addr = (*reloc_addr & 0xfc000003) | (finaladdr & 0x3fffffc); break; case R_PPC_ADDR16: case R_PPC_UADDR16: if (finaladdr > 0x7fff && finaladdr < 0x8000) - dl_reloc_overflow (map, "R_PPC_ADDR16", reloc_addr); + dl_reloc_overflow (map, "R_PPC_ADDR16", reloc_addr, sym, refsym); *(Elf32_Half*) reloc_addr = finaladdr; break; @@ -429,7 +440,7 @@ __process_machine_rela (struct link_map case R_PPC_ADDR14_BRTAKEN: case R_PPC_ADDR14_BRNTAKEN: if (finaladdr > 0x7fff && finaladdr < 0x8000) - dl_reloc_overflow (map, "R_PPC_ADDR14", reloc_addr); + dl_reloc_overflow (map, "R_PPC_ADDR14", reloc_addr, sym, refsym); *reloc_addr = (*reloc_addr & 0xffff0003) | (finaladdr & 0xfffc); if (rinfo != R_PPC_ADDR14) *reloc_addr = ((*reloc_addr & 0xffdfffff) @@ -441,7 +452,7 @@ __process_machine_rela (struct link_map { Elf32_Sword delta = finaladdr - (Elf32_Word) reloc_addr; if (delta << 6 >> 6 != delta) - dl_reloc_overflow (map, "R_PPC_REL14", reloc_addr); + dl_reloc_overflow (map, "R_PPC_REL24", reloc_addr, sym, refsym); *reloc_addr = (*reloc_addr & 0xfc000003) | (delta & 0x3fffffc); } break; @@ -485,7 +496,7 @@ __process_machine_rela (struct link_map { Elf32_Word *plt, *data_words; Elf32_Word index, offset, num_plt_entries; - + plt = (Elf32_Word *) D_PTR (map, l_info[DT_PLTGOT]); offset = reloc_addr - plt; @@ -497,8 +508,8 @@ __process_machine_rela (struct link_map data_words = plt + PLT_DATA_START_WORDS (num_plt_entries); data_words[index] = finaladdr; reloc_addr[0] = OPCODE_LI (11, index * 4); - reloc_addr[1] = OPCODE_B ((PLT_LONGBRANCH_ENTRY_WORDS - - (offset+1)) + reloc_addr[1] = OPCODE_B ((PLT_LONGBRANCH_ENTRY_WORDS + - (offset+1)) * 4); MODIFIED_CODE_NOQUEUE (reloc_addr + 1); } diff -adurpN glibc-2.2/sysdeps/powerpc/elf/libc-start.c glibc-2.2.1/sysdeps/powerpc/elf/libc-start.c --- glibc-2.2/sysdeps/powerpc/elf/libc-start.c Wed Aug 2 14:53:01 2000 +++ glibc-2.2.1/sysdeps/powerpc/elf/libc-start.c Wed Jan 10 15:54:52 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1998, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1998, 2000, 2001 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 @@ -76,6 +76,9 @@ BP_SYM (__libc_start_main) (int argc, ch while (*(char *__unbounded *__unbounded) auxvec != NULL) ++auxvec; ++auxvec; +#ifndef SHARED + _dl_aux_init ((ElfW(auxv_t) *) auxvec); +#endif rtld_fini = NULL; } diff -adurpN glibc-2.2/sysdeps/powerpc/elf/start.S glibc-2.2.1/sysdeps/powerpc/elf/start.S --- glibc-2.2/sysdeps/powerpc/elf/start.S Wed Aug 2 14:53:01 2000 +++ glibc-2.2.1/sysdeps/powerpc/elf/start.S Sat Jan 6 20:35:40 2001 @@ -1,5 +1,5 @@ /* Startup code for programs linked with GNU libc. - Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001 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 @@ -61,5 +61,6 @@ END(_start) /* Define a symbol for the first piece of initialized data. */ .section ".data" + .globl __data_start __data_start: weak_alias (__data_start, data_start) diff -adurpN glibc-2.2/sysdeps/powerpc/fpu/bits/mathdef.h glibc-2.2.1/sysdeps/powerpc/fpu/bits/mathdef.h --- glibc-2.2/sysdeps/powerpc/fpu/bits/mathdef.h Thu Sep 7 11:56:39 2000 +++ glibc-2.2.1/sysdeps/powerpc/fpu/bits/mathdef.h Sat Jan 6 20:35:40 2001 @@ -53,9 +53,6 @@ typedef double float_t; /* `float' expr typedef double double_t; /* `double' expressions are evaluated as `double'. */ -/* Signal that both types are `double'. */ -# define FLT_EVAL_METHOD 1 - /* Define `INFINITY' as value of type `float'. */ # define INFINITY HUGE_VALF @@ -66,9 +63,6 @@ typedef double double_t; /* `double' exp typedef double float_t; typedef double double_t; -/* Strange compiler, we don't know how it works. */ -# define FLT_EVAL_METHOD -1 - /* Define `INFINITY' as value of type `float'. */ # define INFINITY HUGE_VALF @@ -77,9 +71,6 @@ typedef double double_t; /* The values returned by `ilogb' for 0 and NaN respectively. */ # define FP_ILOGB0 (-2147483647) # define FP_ILOGBNAN (2147483647) - -/* Number of decimal digits for the `double' type. */ -# define DECIMAL_DIG 15 #endif /* ISO C99 */ diff -adurpN glibc-2.2/sysdeps/powerpc/soft-fp/Versions glibc-2.2.1/sysdeps/powerpc/soft-fp/Versions --- glibc-2.2/sysdeps/powerpc/soft-fp/Versions Tue Sep 5 01:32:06 2000 +++ glibc-2.2.1/sysdeps/powerpc/soft-fp/Versions Sat Jan 6 20:35:40 2001 @@ -4,5 +4,6 @@ libc { _q_fle; _q_flt; _q_fne; _q_itoq; _q_mul; _q_neg; _q_qtod; _q_qtoi; _q_qtos; _q_qtou; _q_sqrt; _q_stoq; _q_sub; _q_utoq; - _q_lltoq; _q_qtoll; _q_qtoull; _q_ulltoq; + _q_lltoq; _q_qtoll; _q_qtoull; _q_ulltoq; + } } diff -adurpN glibc-2.2/sysdeps/s390/bits/string.h glibc-2.2.1/sysdeps/s390/bits/string.h --- glibc-2.2/sysdeps/s390/bits/string.h Wed Aug 2 07:07:21 2000 +++ glibc-2.2.1/sysdeps/s390/bits/string.h Fri Dec 1 11:55:10 2000 @@ -1,4 +1,4 @@ -/* Optimized, inlined string functions. s390 version. +/* Optimized, inlined string functions. s390 version. Copyright (C) 2000 Free Software Foundation, Inc. Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). This file is part of the GNU C Library. @@ -10,13 +10,13 @@ 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 + 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. */ + Boston, MA 02111-1307, USA. */ #ifndef _STRING_H # error "Never use directly; include instead." @@ -44,13 +44,13 @@ strlen (__const char *__str) size_t __len; __asm__ __volatile__ (" sr 0,0\n" - " lr %0,%1\n" - "0: srst 0,%0\n" - " jo 0b\n" - " lr %0,0\n" - " sr %0,%1" - : "=&a" (__len) : "a" (__str) - : "cc", "0" ); + " lr %0,%1\n" + "0: srst 0,%0\n" + " jo 0b\n" + " lr %0,0\n" + " sr %0,%1" + : "=&a" (__len) : "a" (__str) + : "cc", "0" ); return __len; } @@ -62,10 +62,10 @@ strcpy (char *__dest, __const char *__sr char *tmp = __dest; __asm__ __volatile__ (" sr 0,0\n" - "0: mvst %0,%1\n" - " jo 0b" - : "+&a" (__dest), "+&a" (__src) : - : "cc", "memory", "0" ); + "0: mvst %0,%1\n" + " jo 0b" + : "+&a" (__dest), "+&a" (__src) : + : "cc", "memory", "0" ); return tmp; } @@ -76,20 +76,20 @@ strncpy (char *__dest, __const char *__s char *tmp = __dest; if (__n <= 0) - return tmp; - __asm__ __volatile (" slr %0,%1\n" - "0: icm 0,1,0(%1)\n" - " stc 0,0(%0,%1)\n" - " jz 2f\n" - " la %1,1(%1)\n" - " brct %2,0b\n" - " j 3f\n" - "1: la %1,1(%1)\n" - " stc 0,0(%0,%1)\n" + return tmp; + __asm__ __volatile (" slr %0,%1\n" + "0: icm 0,1,0(%1)\n" + " stc 0,0(%0,%1)\n" + " jz 2f\n" + " la %1,1(%1)\n" + " brct %2,0b\n" + " j 3f\n" + "1: la %1,1(%1)\n" + " stc 0,0(%0,%1)\n" "2: brct %2,1b\n" - "3:" - : "+&a" (__dest), "+&a" (__src), "+&d" (__n) : - : "cc", "memory", "0" ); + "3:" + : "+&a" (__dest), "+&a" (__src), "+&d" (__n) : + : "cc", "memory", "0" ); return tmp; } @@ -101,18 +101,18 @@ strcat(char *__dest, const char *__src) char *tmp = __dest; __asm__ __volatile__ (" sr 0,0\n" - "0: srst 0,%0\n" - " jo 0b\n" - " lr %0,0\n" - " sr 0,0\n" - "1: mvst %0,%1\n" - " jo 1b" - : "+&a" (__dest), "+&a" (__src) : - : "cc", "memory", "0" ); + "0: srst 0,%0\n" + " jo 0b\n" + " lr %0,0\n" + " sr 0,0\n" + "1: mvst %0,%1\n" + " jo 1b" + : "+&a" (__dest), "+&a" (__src) : + : "cc", "memory", "0" ); return tmp; } -/* Append no more than N characters from SRC onto DEST. */ +/* Append no more than N characters from SRC onto DEST. */ #define _HAVE_STRING_ARCH_strncat 1 __STRING_INLINE char * strncat (char *__dest, __const char *__src, size_t __n) @@ -120,20 +120,22 @@ strncat (char *__dest, __const char *__s char *tmp = __dest; if (__n <= 0) - return tmp; + return tmp; __asm__ __volatile__ (" sr 0,0\n" - "0: srst 0,%0\n" - " jo 0b\n" - " lr %0,0\n" - " slr %0,%1\n" + "0: srst 0,%0\n" + " jo 0b\n" + " lr %0,0\n" + " slr %0,%1\n" "1: icm 0,1,0(%1)\n" " stc 0,0(%0,%1)\n" " jz 2f\n" " la %1,1(%1)\n" " brct %2,1b\n" + " la %0,0(%0,%1)\n" + " xc 0(1,%0),0(%0)\n" "2:" - : "+&a" (__dest), "+&a" (__src), "+&d" (__n) : - : "cc", "memory", "0" ); + : "+&a" (__dest), "+&a" (__src), "+&d" (__n) : + : "cc", "memory", "0" ); return tmp; } diff -adurpN glibc-2.2/sysdeps/s390/elf/setjmp.S glibc-2.2.1/sysdeps/s390/elf/setjmp.S --- glibc-2.2/sysdeps/s390/elf/setjmp.S Wed Aug 2 07:17:30 2000 +++ glibc-2.2.1/sysdeps/s390/elf/setjmp.S Wed Nov 22 10:59:56 2000 @@ -31,10 +31,8 @@ ENTRY (setjmp) j __sigsetjmp /* branch relativ to __sigsetjmp */ END (setjmp) - /* Binary compatibility entry point. */ ENTRY(_setjmp) .weak C_SYMBOL_NAME (_setjmp) -ENTRY(__setjmp) lhi %r3,0 /* second argument of zero */ ENTRY(__sigsetjmp) diff -adurpN glibc-2.2/sysdeps/s390/setjmp.S glibc-2.2.1/sysdeps/s390/setjmp.S --- glibc-2.2/sysdeps/s390/setjmp.S Wed Aug 2 07:26:00 2000 +++ glibc-2.2.1/sysdeps/s390/setjmp.S Wed Nov 22 10:59:56 2000 @@ -28,12 +28,6 @@ /* Save the current program position in ENV and return 0. */ /* R2 = pointer to jmp_buf, R3 = savemask */ -/* Binary compatibility entry point. */ - -ENTRY(__setjmp) - sr %r3,%r3 /* set savemask to zero */ -END (__setjmp) - ENTRY(__sigsetjmp) stm %r6,%r15,0(%r2) /* store registers in jmp_buf */ #ifdef PIC diff -adurpN glibc-2.2/sysdeps/sh/sh3/setjmp.S glibc-2.2.1/sysdeps/sh/sh3/setjmp.S --- glibc-2.2/sysdeps/sh/sh3/setjmp.S Wed Nov 8 14:10:26 2000 +++ glibc-2.2.1/sysdeps/sh/sh3/setjmp.S Wed Nov 22 10:59:57 2000 @@ -22,9 +22,6 @@ #define _ASM #include - /* Binary compatibility entry point. */ -ENTRY (__setjmp) - mov #0, r5 ENTRY (__sigsetjmp) /* Save registers */ add #(JB_SIZE - 4 * 5), r4 diff -adurpN glibc-2.2/sysdeps/sh/sh4/fpu/bits/mathdef.h glibc-2.2.1/sysdeps/sh/sh4/fpu/bits/mathdef.h --- glibc-2.2/sysdeps/sh/sh4/fpu/bits/mathdef.h Mon Jun 12 13:58:43 2000 +++ glibc-2.2.1/sysdeps/sh/sh4/fpu/bits/mathdef.h Sat Jan 6 20:35:40 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 1999, 2000 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 @@ -39,9 +39,6 @@ typedef float float_t; /* `float' expre typedef double double_t; /* `double' expressions are evaluated as `double'. */ -/* Signal that types stay as they were declared. */ -# define FLT_EVAL_METHOD 0 - /* Define `INFINITY' as value of type `float'. */ # define INFINITY HUGE_VALF @@ -53,9 +50,6 @@ typedef double float_t; /* `float' expr typedef double double_t; /* `double' expressions are evaluated as `double'. */ -/* Signal that both types are `double'. */ -# define FLT_EVAL_METHOD 1 - /* Define `INFINITY' as value of type `float'. */ # define INFINITY HUGE_VALF @@ -66,9 +60,6 @@ typedef double double_t; /* `double' exp typedef double float_t; typedef double double_t; -/* Strange compiler, we don't know how it works. */ -# define FLT_EVAL_METHOD -1 - /* Define `INFINITY' as value of type `float'. */ # define INFINITY HUGE_VALF @@ -77,9 +68,6 @@ typedef double double_t; /* The values returned by `ilogb' for 0 and NaN respectively. */ # define FP_ILOGB0 0x80000001 # define FP_ILOGBNAN 0x7fffffff - -/* Number of decimal digits for the `double' type. */ -# define DECIMAL_DIG 15 #endif /* ISO C99 */ diff -adurpN glibc-2.2/sysdeps/sh/sh4/setjmp.S glibc-2.2.1/sysdeps/sh/sh4/setjmp.S --- glibc-2.2/sysdeps/sh/sh4/setjmp.S Mon Jun 12 13:17:59 2000 +++ glibc-2.2.1/sysdeps/sh/sh4/setjmp.S Wed Nov 22 10:59:57 2000 @@ -22,9 +22,6 @@ #define _ASM #include - /* Binary compatibility entry point. */ -ENTRY (__setjmp) - mov #0, r5 ENTRY (__sigsetjmp) /* Save registers */ add #JB_SIZE, r4 @@ -69,4 +66,4 @@ ENTRY (__sigsetjmp) .L1: .long C_SYMBOL_NAME(__sigjmp_save) #endif -END (__setjmp) +END (__sigsetjmp) diff -adurpN glibc-2.2/sysdeps/sparc/fpu/bits/mathdef.h glibc-2.2.1/sysdeps/sparc/fpu/bits/mathdef.h --- glibc-2.2/sysdeps/sparc/fpu/bits/mathdef.h Thu Sep 7 11:56:41 2000 +++ glibc-2.2.1/sysdeps/sparc/fpu/bits/mathdef.h Sat Jan 6 20:35:40 2001 @@ -35,9 +35,6 @@ typedef float float_t; typedef double double_t; -/* Signal that types stay as they were declared. */ -# define FLT_EVAL_METHOD 0 - /* Define `INFINITY' as value of type `float'. */ # define INFINITY HUGE_VALF @@ -47,9 +44,6 @@ typedef double double_t; typedef double float_t; typedef double double_t; -/* Signal that both types are `double'. */ -# define FLT_EVAL_METHOD 1 - /* Define `INFINITY' as value of type `float'. */ # define INFINITY HUGE_VALF @@ -60,9 +54,6 @@ typedef double double_t; typedef double float_t; typedef double double_t; -/* Strange compiler, we don't know how it works. */ -# define FLT_EVAL_METHOD -1 - /* Define `INFINITY' as value of type `float'. */ # define INFINITY HUGE_VALF @@ -71,9 +62,6 @@ typedef double double_t; /* The values returned by `ilogb' for 0 and NaN respectively. */ # define FP_ILOGB0 (-2147483647) # define FP_ILOGBNAN (2147483647) - -/* Number of decimal digits for the `double' type. */ -# define DECIMAL_DIG 15 #endif /* ISO C99 */ diff -adurpN glibc-2.2/sysdeps/sparc/sparc32/dl-machine.h glibc-2.2.1/sysdeps/sparc/sparc32/dl-machine.h --- glibc-2.2/sysdeps/sparc/sparc32/dl-machine.h Thu Oct 26 22:57:36 2000 +++ glibc-2.2.1/sysdeps/sparc/sparc32/dl-machine.h Fri Dec 1 11:55:10 2000 @@ -224,23 +224,29 @@ _dl_start_user: sethi %hi(__libc_stack_end), %g2 or %g2, %lo(__libc_stack_end), %g2 ld [%l7 + %g2], %l1 + sethi %hi(_dl_skip_args), %g2 add %sp, 6*4, %l2 + or %g2, %lo(_dl_skip_args), %g2 st %l2, [%l1] /* See if we were run as a command with the executable file name as an extra leading argument. If so, adjust the contents of the stack. */ - sethi %hi(_dl_skip_args), %g2 - or %g2, %lo(_dl_skip_args), %g2 ld [%l7+%g2], %i0 ld [%i0], %i0 tst %i0 beq 3f ld [%sp+22*4], %i5 /* load argc */ /* Find out how far to shift. */ + sethi %hi(_dl_argv), %l3 + or %l3, %lo(_dl_argv), %l3 + ld [%l7+%l3], %l3 sub %i5, %i0, %i5 + ld [%l3], %l4 sll %i0, 2, %i2 st %i5, [%sp+22*4] + sub %l4, %i2, %l4 add %sp, 23*4, %i1 add %i1, %i2, %i2 + st %l4, [%l3] /* Copy down argv */ 21: ld [%i2], %i3 add %i2, 4, %i2 @@ -371,6 +377,7 @@ elf_machine_rela (struct link_map *map, switch (ELF32_R_TYPE (reloc->r_info)) { +#ifndef RTLD_BOOTSTRAP case R_SPARC_COPY: if (sym == NULL) /* This can happen in trace mode if an object could not be @@ -391,6 +398,7 @@ elf_machine_rela (struct link_map *map, memcpy (reloc_addr, (void *) value, MIN (sym->st_size, refsym->st_size)); break; +#endif case R_SPARC_GLOB_DAT: case R_SPARC_32: *reloc_addr = value; @@ -398,6 +406,7 @@ elf_machine_rela (struct link_map *map, case R_SPARC_JMP_SLOT: elf_machine_fixup_plt(map, 0, reloc, reloc_addr, value); break; +#ifndef RTLD_BOOTSTRAP case R_SPARC_8: *(char *) reloc_addr = value; break; @@ -423,11 +432,14 @@ elf_machine_rela (struct link_map *map, case R_SPARC_HI22: *reloc_addr = (*reloc_addr & 0xffc00000) | (value >> 10); break; +#endif case R_SPARC_NONE: /* Alright, Wilbur. */ break; +#if !defined RTLD_BOOTSTRAP || defined _NDEBUG default: _dl_reloc_bad_type (map, ELFW(R_TYPE) (reloc->r_info), 0); break; +#endif } } } diff -adurpN glibc-2.2/sysdeps/sparc/sparc32/setjmp.S glibc-2.2.1/sysdeps/sparc/sparc32/setjmp.S --- glibc-2.2/sysdeps/sparc/sparc32/setjmp.S Fri Jan 30 04:31:09 1998 +++ glibc-2.2.1/sysdeps/sparc/sparc32/setjmp.S Wed Nov 22 10:59:57 2000 @@ -23,10 +23,10 @@ #define _SETJMP_H #include -ENTRY(__setjmp) +ENTRY(_setjmp) b 1f set 0, %o1 -END(__setjmp) +END(_setjmp) ENTRY(setjmp) set 1, %o1 @@ -47,5 +47,5 @@ ENTRY (__sigsetjmp) mov %g1, %o7 END(__sigsetjmp) -weak_alias(__setjmp, _setjmp) +weak_extern(_setjmp) weak_extern(setjmp) diff -adurpN glibc-2.2/sysdeps/sparc/sparc64/dl-machine.h glibc-2.2.1/sysdeps/sparc/sparc64/dl-machine.h --- glibc-2.2/sysdeps/sparc/sparc64/dl-machine.h Thu Oct 26 22:57:36 2000 +++ glibc-2.2.1/sysdeps/sparc/sparc64/dl-machine.h Fri Dec 1 11:55:11 2000 @@ -212,6 +212,7 @@ elf_machine_rela (struct link_map *map, switch (ELF64_R_TYPE_ID (reloc->r_info)) { +#ifndef RTLD_BOOTSTRAP case R_SPARC_COPY: if (sym == NULL) /* This can happen in trace mode if an object could not be @@ -232,11 +233,12 @@ elf_machine_rela (struct link_map *map, memcpy (reloc_addr, (void *) value, MIN (sym->st_size, refsym->st_size)); break; - +#endif case R_SPARC_64: case R_SPARC_GLOB_DAT: *reloc_addr = value; break; +#ifndef RTLD_BOOTSTRAP case R_SPARC_8: *(char *) reloc_addr = value; break; @@ -311,11 +313,11 @@ elf_machine_rela (struct link_map *map, ((*(unsigned int *)reloc_addr & 0xffc00000) | ((value >> 10) & 0x003fffff)); break; - +#endif case R_SPARC_JMP_SLOT: elf_machine_fixup_plt(map, 0, reloc, reloc_addr, value); break; - +#ifndef RTLD_BOOTSTRAP case R_SPARC_UA64: if (! ((long) reloc_addr & 3)) { @@ -333,10 +335,12 @@ elf_machine_rela (struct link_map *map, ((unsigned char *) reloc_addr) [6] = value >> 8; ((unsigned char *) reloc_addr) [7] = value; break; - +#endif +#if !defined RTLD_BOOTSTRAP || defined _NDEBUG default: _dl_reloc_bad_type (map, ELFW(R_TYPE) (reloc->r_info), 0); break; +#endif } } } @@ -544,38 +548,43 @@ _start: _dl_start_user: /* Load the GOT register. */ 1: call 11f - sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)),%l7 -11: or %l7,%lo(_GLOBAL_OFFSET_TABLE_-(1b-.)),%l7 - add %l7,%o7,%l7 - /* Save the user entry point address in %l0. */ - mov %o0,%l0 + sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7 +11: or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7 /* Store the highest stack address. */ sethi %hi(__libc_stack_end), %g5 + add %l7, %o7, %l7 or %g5, %lo(__libc_stack_end), %g5 + /* Save the user entry point address in %l0. */ + mov %o0, %l0 ldx [%l7 + %g5], %l1 + sethi %hi(_dl_skip_args), %g5 add %sp, 6*8, %l2 - stx %l2, [%l1] /* See if we were run as a command with the executable file name as an extra leading argument. If so, we must shift things around since we must keep the stack doubleword aligned. */ - sethi %hi(_dl_skip_args), %g5 or %g5, %lo(_dl_skip_args), %g5 - ldx [%l7+%g5], %i0 + stx %l2, [%l1] + ldx [%l7 + %g5], %i0 ld [%i0], %i0 brz,pt %i0, 2f - ldx [%sp+" __S(STACK_BIAS) "+22*8], %i5 + ldx [%sp + " __S(STACK_BIAS) " + 22*8], %i5 /* Find out how far to shift. */ + sethi %hi(_dl_argv), %l4 sub %i5, %i0, %i5 - sllx %i0, 3, %i2 - stx %i5, [%sp+" __S(STACK_BIAS) "+22*8] - add %sp, " __S(STACK_BIAS) "+23*8, %i1 - add %i1, %i2, %i2 + or %l4, %lo(_dl_argv), %l4 + sllx %i0, 3, %l6 + ldx [%l7 + %l4], %l4 + stx %i5, [%sp + " __S(STACK_BIAS) " + 22*8] + add %sp, " __S(STACK_BIAS) " + 23*8, %i1 + add %i1, %l6, %i2 + ldx [%l4], %l5 /* Copy down argv. */ 12: ldx [%i2], %i3 add %i2, 8, %i2 stx %i3, [%i1] brnz,pt %i3, 12b add %i1, 8, %i1 + sub %l5, %l6, %l5 /* Copy down envp. */ 13: ldx [%i2], %i3 add %i2, 8, %i2 @@ -584,18 +593,19 @@ _dl_start_user: add %i1, 8, %i1 /* Copy down auxiliary table. */ 14: ldx [%i2], %i3 - ldx [%i2+8], %i4 + ldx [%i2 + 8], %i4 add %i2, 16, %i2 stx %i3, [%i1] - stx %i4, [%i1+8] - brnz,pt %i3, 13b + stx %i4, [%i1 + 8] + brnz,pt %i3, 14b add %i1, 16, %i1 + stx %l5, [%l4] /* %o0 = _dl_loaded, %o1 = argc, %o2 = argv, %o3 = envp. */ 2: sethi %hi(_dl_loaded), %o0 - add %sp, " __S(STACK_BIAS) "+23*8, %o2 + add %sp, " __S(STACK_BIAS) " + 23*8, %o2 orcc %o0, %lo(_dl_loaded), %o0 sllx %i5, 3, %o3 - ldx [%l7+%o0], %o0 + ldx [%l7 + %o0], %o0 add %o3, 8, %o3 mov %i5, %o1 add %o2, %o3, %o3 @@ -604,7 +614,7 @@ _dl_start_user: /* Pass our finalizer function to the user in %g1. */ sethi %hi(_dl_fini), %g1 or %g1, %lo(_dl_fini), %g1 - ldx [%l7+%g1], %g1 + ldx [%l7 + %g1], %g1 /* Jump to the user's entry point and deallocate the extra stack we got. */ jmp %l0 add %sp, 6*8, %sp diff -adurpN glibc-2.2/sysdeps/sparc/sparc64/soft-fp/Versions glibc-2.2.1/sysdeps/sparc/sparc64/soft-fp/Versions --- glibc-2.2/sysdeps/sparc/sparc64/soft-fp/Versions Tue Sep 5 03:26:42 2000 +++ glibc-2.2.1/sysdeps/sparc/sparc64/soft-fp/Versions Sat Jan 6 20:35:40 2001 @@ -4,4 +4,5 @@ libc { _Qp_fle; _Qp_flt; _Qp_fne; _Qp_itoq; _Qp_mul; _Qp_neg; _Qp_qtod; _Qp_qtoi; _Qp_qtos; _Qp_qtoui; _Qp_qtoux; _Qp_qtox; _Qp_sqrt; _Qp_stoq; _Qp_sub; _Qp_uitoq; _Qp_uxtoq; _Qp_xtoq; __Qp_handle_exceptions; + } } diff -adurpN glibc-2.2/sysdeps/unix/bsd/getpt.c glibc-2.2.1/sysdeps/unix/bsd/getpt.c --- glibc-2.2/sysdeps/unix/bsd/getpt.c Wed Aug 2 14:53:06 2000 +++ glibc-2.2.1/sysdeps/unix/bsd/getpt.c Wed Jan 10 15:54:58 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Zack Weinberg , 1998. @@ -77,3 +77,18 @@ __getpt (void) #undef __getpt weak_alias (__getpt, getpt) + +#ifndef HAVE_POSIX_OPENPT +/* We cannot define posix_openpt in general for BSD systems. */ +int +__posix_openpt (oflag) + int oflag; +{ + __set_errno (ENOSYS); + return -1; +} +weak_alias (__posix_openpt, posix_openpt) + +stub_warning (posix_openpt) +# include +#endif diff -adurpN glibc-2.2/sysdeps/unix/i386/i586/clock_getres.c glibc-2.2.1/sysdeps/unix/i386/i586/clock_getres.c --- glibc-2.2/sysdeps/unix/i386/i586/clock_getres.c Sun Oct 8 17:05:08 2000 +++ glibc-2.2.1/sysdeps/unix/i386/i586/clock_getres.c Sat Jan 6 20:35:40 2001 @@ -18,6 +18,7 @@ #include #include +#include /* This implementation uses the TSC register in modern (i586 and up) IA-32 processors (most modern clones also provide it). Since we need the @@ -26,9 +27,6 @@ at different speeds or process migration to machines with slower or faster processors will not work without changes. */ - -/* Function to determine processor frequency. */ -extern unsigned long long int __get_clockfreq (void); /* Clock frequency of the processor. We make it a 64-bit variable because some jokers are already playing with processors with more diff -adurpN glibc-2.2/sysdeps/unix/i386/i586/clock_gettime.c glibc-2.2.1/sysdeps/unix/i386/i586/clock_gettime.c --- glibc-2.2/sysdeps/unix/i386/i586/clock_gettime.c Sun Oct 8 17:05:08 2000 +++ glibc-2.2.1/sysdeps/unix/i386/i586/clock_gettime.c Sat Jan 6 20:35:40 2001 @@ -17,6 +17,7 @@ Boston, MA 02111-1307, USA. */ #include +#include /* This implementation uses the TSC register in modern (i586 and up) IA-32 processors (most modern clones also provide it). Since we need the @@ -25,9 +26,6 @@ at different speeds or process migration to machines with slower or faster processors will not work without changes. */ - -/* Function to determine processor frequency. */ -extern unsigned long long int __get_clockfreq (void); /* Clock frequency of the processor. We make it a 64-bit variable because some jokers are already playing with processors with more diff -adurpN glibc-2.2/sysdeps/unix/mips/sysdep.h glibc-2.2.1/sysdeps/unix/mips/sysdep.h --- glibc-2.2/sysdeps/unix/mips/sysdep.h Fri Apr 7 12:10:01 2000 +++ glibc-2.2.1/sysdeps/unix/mips/sysdep.h Sat Jan 6 20:35:40 2001 @@ -40,7 +40,7 @@ ENTRY(name) \ .set noreorder; \ .cpload t9; \ - li v0, SYS_##syscall_name; \ + li v0, SYS_ify(syscall_name); \ syscall; \ .set reorder; \ bne a3, zero, 99b; \ @@ -52,7 +52,7 @@ syse1: 99: j __syscall_error; \ ENTRY(name) \ .set noreorder; \ - li v0, SYS_##syscall_name; \ + li v0, SYS_ify(syscall_name); \ syscall; \ .set reorder; \ bne a3, zero, 99b; \ diff -adurpN glibc-2.2/sysdeps/unix/opendir.c glibc-2.2.1/sysdeps/unix/opendir.c --- glibc-2.2/sysdeps/unix/opendir.c Thu Oct 26 22:57:36 2000 +++ glibc-2.2.1/sysdeps/unix/opendir.c Sat Jan 6 20:35:40 2001 @@ -120,18 +120,23 @@ __opendir (const char *name) O_DIRECTORY flag is honored by the kernel. */ if (__builtin_expect (__fxstat64 (_STAT_VER, fd, &statbuf), 0) < 0) goto lose; - if (o_directory_works <= 0 - && __builtin_expect (! S_ISDIR (statbuf.st_mode), 0)) +#ifdef O_DIRECTORY + if (o_directory_works <= 0) +#endif { - save_errno = ENOTDIR; - goto lose; + if (__builtin_expect (! S_ISDIR (statbuf.st_mode), 0)) + { + save_errno = ENOTDIR; + goto lose; + } } if (__builtin_expect (__fcntl (fd, F_SETFD, FD_CLOEXEC), 0) < 0) goto lose; #ifdef _STATBUF_ST_BLKSIZE - if (__builtin_expect (statbuf.st_blksize < sizeof (struct dirent), 0)) + if (__builtin_expect ((size_t) statbuf.st_blksize < sizeof (struct dirent), + 0)) allocation = sizeof (struct dirent); else allocation = statbuf.st_blksize; diff -adurpN glibc-2.2/sysdeps/unix/sysv/aix/Dist glibc-2.2.1/sysdeps/unix/sysv/aix/Dist --- glibc-2.2/sysdeps/unix/sysv/aix/Dist Tue Jun 13 17:44:54 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/aix/Dist Sat Jan 6 23:38:11 2001 @@ -4,3 +4,6 @@ dl-close.c kernel_proto.h bits/utmpx.h gnu/lib-names.h +uitrunc.c +savef.S +restf.S diff -adurpN glibc-2.2/sysdeps/unix/sysv/aix/Makefile glibc-2.2.1/sysdeps/unix/sysv/aix/Makefile --- glibc-2.2/sysdeps/unix/sysv/aix/Makefile Tue Apr 18 10:54:51 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/aix/Makefile Sat Jan 6 20:35:40 2001 @@ -6,7 +6,14 @@ static-start-installed-name = /usr/lib/crt0.o ifeq ($(subdir),misc) -sysdep_routines += dl-open dl-sym dl-close +sysdep_routines += dl-open dl-sym dl-close restf savef uitrunc +endif + +ifeq ($(subdir),login) +sysdep_routines += setutxent getutxent endutxent getutxid getutxline \ + pututxline utmpxname + +sysdep_headers += utmpx.h bits/utmpx.h endif # Don't compile the ctype glue code, since there is no old non-GNU C library. diff -adurpN glibc-2.2/sysdeps/unix/sysv/aix/bits/stat.h glibc-2.2.1/sysdeps/unix/sysv/aix/bits/stat.h --- glibc-2.2/sysdeps/unix/sysv/aix/bits/stat.h Thu Jun 22 12:04:26 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/aix/bits/stat.h Sat Jan 6 20:35:41 2001 @@ -23,11 +23,7 @@ struct stat { __dev_t st_dev; /* Device. */ -#ifndef __USE_FILE_OFFSET64 __ino_t st_ino; /* File serial number. */ -#else - __ino64_t st_ino; /* File serial number. */ -#endif __mode_t st_mode; /* File mode. */ __nlink_t st_nlink; /* Link count. */ unsigned short int st_flag; /* Flag word. */ @@ -46,11 +42,7 @@ struct stat __time_t st_ctime; /* Time of last status change. */ unsigned long int __unused3; __blksize_t st_blksize; /* Optimal block size for I/O. */ -#ifndef __USE_FILE_OFFSET64 __blkcnt_t st_blocks; /* Number 512-byte blocks allocated. */ -#else - __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */ -#endif int st_vfstype; /* Type of the filesystem. */ unsigned int st_vfs; /* Vfs number. */ unsigned int st_type; /* Vnode type. */ @@ -69,7 +61,7 @@ struct stat struct stat64 { __dev_t st_dev; /* Device. */ - __ino64_t st_ino; /* File serial number. */ + __ino_t st_ino; /* File serial number. */ __mode_t st_mode; /* File mode. */ __nlink_t st_nlink; /* Link count. */ unsigned short int st_flag; /* Flag word. */ @@ -84,7 +76,7 @@ struct stat64 __time_t st_ctime; /* Time of last status change. */ unsigned long int __unused3; __blksize_t st_blksize; /* Optimal block size for I/O. */ - __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */ + __blkcnt_t st_blocks; /* Number 512-byte blocks allocated. */ int st_vfstype; /* Type of the filesystem. */ unsigned int st_vfs; /* Vfs number. */ unsigned int st_type; /* Vnode type. */ diff -adurpN glibc-2.2/sysdeps/unix/sysv/aix/bits/types.h glibc-2.2.1/sysdeps/unix/sysv/aix/bits/types.h --- glibc-2.2/sysdeps/unix/sysv/aix/bits/types.h Fri Apr 7 12:10:02 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/aix/bits/types.h Sat Jan 6 20:35:41 2001 @@ -87,6 +87,12 @@ typedef long int __swblk_t; /* Type of typedef int __clock_t; +/* Clock ID used in clock and timer functions. */ +typedef int __clockid_t; + +/* Timer ID returned by `timer_create'. */ +typedef int __timer_t; + /* One element in the file descriptor mask array. */ typedef unsigned long int __fd_mask; diff -adurpN glibc-2.2/sysdeps/unix/sysv/aix/bits/utmp.h glibc-2.2.1/sysdeps/unix/sysv/aix/bits/utmp.h --- glibc-2.2/sysdeps/unix/sysv/aix/bits/utmp.h Mon Mar 20 17:26:41 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/aix/bits/utmp.h Sat Jan 6 20:35:41 2001 @@ -1,5 +1,5 @@ /* The `struct utmp' type, describing entries in the utmp file. AIX. - Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1999, 2000 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 @@ -21,12 +21,9 @@ # error "Never include directly; use instead." #endif - -#include - -#define _PATH_UTMP "/etc/utmp" -#define _PATH_WTMP "/var/adm/wtmp" -#define _PATH_LASTLOG "/var/adm/lastlog" +#include +#include +#include #define UT_LINESIZE 12 @@ -52,22 +49,25 @@ struct utmp }; +/* Values for the `ut_type' field of a `struct utmp'. */ +#define EMPTY 0 /* No valid user accounting information. */ + +#define RUN_LVL 1 /* The system's runlevel. */ +#define BOOT_TIME 2 /* Time of system boot. */ +#define OLD_TIME 3 /* Time when system clock changed. */ +#define NEW_TIME 4 /* Time after system clock changed. */ + +#define INIT_PROCESS 5 /* Process spawned by the init process. */ +#define LOGIN_PROCESS 6 /* Session leader of a logged in user. */ +#define USER_PROCESS 7 /* Normal process. */ +#define DEAD_PROCESS 8 /* Terminated process. */ + +#define ACCOUNTING 9 + + /* Tell the user that we have a modern system with UT_HOST, UT_TYPE, and UT_ID fields. */ #define _HAVE_UT_TYPE 1 #define _HAVE_UT_PID 1 #define _HAVE_UT_ID 1 #define _HAVE_UT_HOST 1 - - -/* Values for the `ut_type' field of a `struct utmp'. */ -#define EMPTY 0 -#define RUN_LVL 1 -#define BOOT_TIME 2 -#define OLD_TIME 3 -#define NEW_TIME 4 -#define INIT_PROCESS 5 -#define LOGIN_PROCESS 6 -#define USER_PROCESS 7 -#define DEAD_PROCESS 8 -#define ACCOUNTING 9 diff -adurpN glibc-2.2/sysdeps/unix/sysv/aix/fchdir.c glibc-2.2.1/sysdeps/unix/sysv/aix/fchdir.c --- glibc-2.2/sysdeps/unix/sysv/aix/fchdir.c Mon Apr 17 15:36:52 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/aix/fchdir.c Sat Jan 6 20:35:40 2001 @@ -1 +1,26 @@ -/* This is a system call. */ +/* Copyright (C) 1999, 2000 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. */ + +#include + +int +__fchdir (fd) + int fd; +{ + return fchdir (fd); +} diff -adurpN glibc-2.2/sysdeps/unix/sysv/aix/lseek.c glibc-2.2.1/sysdeps/unix/sysv/aix/lseek.c --- glibc-2.2/sysdeps/unix/sysv/aix/lseek.c Mon Mar 20 17:17:33 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/aix/lseek.c Sat Jan 6 20:35:40 2001 @@ -6,3 +6,4 @@ __lseek (int fd, off_t offset, int whenc { return lseek (fd, offset, whence); } +strong_alias (__lseek, __libc_lseek) diff -adurpN glibc-2.2/sysdeps/unix/sysv/aix/open.c glibc-2.2.1/sysdeps/unix/sysv/aix/open.c --- glibc-2.2/sysdeps/unix/sysv/aix/open.c Mon Mar 20 17:18:28 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/aix/open.c Sat Jan 6 20:35:40 2001 @@ -35,3 +35,4 @@ __open (const char *file, int oflag, ... return open (file, oflag, mode); } +strong_alias (__open, __libc_open) diff -adurpN glibc-2.2/sysdeps/unix/sysv/aix/powerpc/s_lrint.c glibc-2.2.1/sysdeps/unix/sysv/aix/powerpc/s_lrint.c --- glibc-2.2/sysdeps/unix/sysv/aix/powerpc/s_lrint.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/unix/sysv/aix/powerpc/s_lrint.c Mon Dec 4 20:17:58 2000 @@ -0,0 +1,29 @@ +/* Round floating-point to integer. AIX/PowerPC version. + Copyright (C) 1997, 2000 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. */ + +#include + +/* This code will also work for a 'float' argument. */ +asm ("\ + .globl .__lrintf + .globl .lrintf + .weak .lrintf + .set .__lrintf,.__lrint + .set .lrintf,.__lrint +"); diff -adurpN glibc-2.2/sysdeps/unix/sysv/aix/pread.c glibc-2.2.1/sysdeps/unix/sysv/aix/pread.c --- glibc-2.2/sysdeps/unix/sysv/aix/pread.c Mon Mar 20 17:18:34 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/aix/pread.c Sat Jan 6 20:35:41 2001 @@ -25,3 +25,4 @@ __pread (int fd, void *buf, size_t len, { return kpread (fd, buf, len, off); } +weak_alias (__pread, pread) diff -adurpN glibc-2.2/sysdeps/unix/sysv/aix/pread64.c glibc-2.2.1/sysdeps/unix/sysv/aix/pread64.c --- glibc-2.2/sysdeps/unix/sysv/aix/pread64.c Mon Mar 20 17:18:39 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/aix/pread64.c Sat Jan 6 20:35:41 2001 @@ -25,3 +25,4 @@ __pread64 (int fd, void *buf, size_t len { return kpread (fd, buf, len, off); } +weak_alias (__pread64, pread64) diff -adurpN glibc-2.2/sysdeps/unix/sysv/aix/restf.S glibc-2.2.1/sysdeps/unix/sysv/aix/restf.S --- glibc-2.2/sysdeps/unix/sysv/aix/restf.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/unix/sysv/aix/restf.S Tue Dec 5 19:14:16 2000 @@ -0,0 +1,58 @@ +/* Copyright (C) 2000 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. */ + +#include + +ENTRY(_restf_all) + ASM_GLOBAL_DIRECTIVE C_TEXT(_restf14) +C_TEXT(_restf14): lfd fp14,-144(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_restf15) +C_TEXT(_restf15): lfd fp15,-136(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_restf16) +C_TEXT(_restf16): lfd fp16,-128(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_restf17) +C_TEXT(_restf17): lfd fp17,-120(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_restf18) +C_TEXT(_restf18): lfd fp18,-112(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_restf19) +C_TEXT(_restf19): lfd fp19,-104(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_restf20) +C_TEXT(_restf20): lfd fp20,-96(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_restf21) +C_TEXT(_restf21): lfd fp21,-88(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_restf22) +C_TEXT(_restf22): lfd fp22,-80(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_restf23) +C_TEXT(_restf23): lfd fp23,-72(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_restf24) +C_TEXT(_restf24): lfd fp24,-64(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_restf25) +C_TEXT(_restf25): lfd fp25,-56(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_restf26) +C_TEXT(_restf26): lfd fp26,-48(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_restf27) +C_TEXT(_restf27): lfd fp27,-40(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_restf28) +C_TEXT(_restf28): lfd fp28,-32(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_restf29) +C_TEXT(_restf29): lfd fp29,-24(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_restf30) +C_TEXT(_restf30): lfd fp30,-16(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_restf31) +C_TEXT(_restf31): lfd fp31,-8(r11) + blr diff -adurpN glibc-2.2/sysdeps/unix/sysv/aix/savef.S glibc-2.2.1/sysdeps/unix/sysv/aix/savef.S --- glibc-2.2/sysdeps/unix/sysv/aix/savef.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/unix/sysv/aix/savef.S Tue Dec 5 19:13:59 2000 @@ -0,0 +1,58 @@ +/* Copyright (C) 2000 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. */ + +#include + +ENTRY(_savef_all) + ASM_GLOBAL_DIRECTIVE C_TEXT(_savef14) +C_TEXT(_savef14): stfd fp14,-144(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_savef15) +C_TEXT(_savef15): stfd fp15,-136(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_savef16) +C_TEXT(_savef16): stfd fp16,-128(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_savef17) +C_TEXT(_savef17): stfd fp17,-120(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_savef18) +C_TEXT(_savef18): stfd fp18,-112(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_savef19) +C_TEXT(_savef19): stfd fp19,-104(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_savef20) +C_TEXT(_savef20): stfd fp20,-96(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_savef21) +C_TEXT(_savef21): stfd fp21,-88(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_savef22) +C_TEXT(_savef22): stfd fp22,-80(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_savef23) +C_TEXT(_savef23): stfd fp23,-72(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_savef24) +C_TEXT(_savef24): stfd fp24,-64(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_savef25) +C_TEXT(_savef25): stfd fp25,-56(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_savef26) +C_TEXT(_savef26): stfd fp26,-48(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_savef27) +C_TEXT(_savef27): stfd fp27,-40(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_savef28) +C_TEXT(_savef28): stfd fp28,-32(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_savef29) +C_TEXT(_savef29): stfd fp29,-24(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_savef30) +C_TEXT(_savef30): stfd fp30,-16(r11) + ASM_GLOBAL_DIRECTIVE C_TEXT(_savef31) +C_TEXT(_savef31): stfd fp31,-8(r11) + blr diff -adurpN glibc-2.2/sysdeps/unix/sysv/aix/sys/param.h glibc-2.2.1/sysdeps/unix/sysv/aix/sys/param.h --- glibc-2.2/sysdeps/unix/sysv/aix/sys/param.h Tue Apr 18 10:26:06 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/aix/sys/param.h Sat Jan 6 20:35:41 2001 @@ -1,3 +1,24 @@ +/* Copyright (C) 2000 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. */ + +#ifndef _SYS_PARAM_H +#define _SYS_PARAM_H 1 + /* This file should contain various parameter macros appropriate for the machine and operating system. There is no standard set of macros; this file is just for compatibility with programs written for Unix that @@ -19,3 +40,9 @@ /* Macros for min/max. */ #define MIN(a,b) (((a)<(b))?(a):(b)) #define MAX(a,b) (((a)>(b))?(a):(b)) + + +/* Maximum length of hostname. */ +#define MAXHOSTNAMELEN 256 + +#endif /* sys/param.h */ diff -adurpN glibc-2.2/sysdeps/unix/sysv/aix/sysdep.h glibc-2.2.1/sysdeps/unix/sysv/aix/sysdep.h --- glibc-2.2/sysdeps/unix/sysv/aix/sysdep.h Mon Mar 20 17:22:27 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/aix/sysdep.h Sat Jan 6 20:35:41 2001 @@ -85,4 +85,4 @@ C_TEXT (name): /* Jumping to another function. We are jumping to the TOC entry. */ -#define JUMPTARGET(name) name +#define JUMPTARGET(name) C_TEXT (name) diff -adurpN glibc-2.2/sysdeps/unix/sysv/aix/uitrunc.c glibc-2.2.1/sysdeps/unix/sysv/aix/uitrunc.c --- glibc-2.2/sysdeps/unix/sysv/aix/uitrunc.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/unix/sysv/aix/uitrunc.c Wed Dec 6 16:31:48 2000 @@ -0,0 +1,42 @@ +/* Copyright (C) 2000 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. */ + +#include + +/* The uitrunc function returns the nearest unsigned integer + to the x parameter in the direction of 0. This actions is + equivalent to truncation off the fraction bits of the x + parameter and then converting x to an unsigned integer. */ +unsigned int +__uitrunc (double x) +{ + double xrf; + unsigned int xr; + xr = (unsigned int) x; + xrf = (double) xr; + if (x >= 0.0) + if (x - xrf >= 0.5 && x - xrf < 1.0 && x + 1 > 0) + return x + 1; + else + return x; + else + if (xrf - x >= 0.5 && xrf - x < 1.0 && x - 1 < 0) + return x - 1; + else + return x; +} diff -adurpN glibc-2.2/sysdeps/unix/sysv/aix/write.c glibc-2.2.1/sysdeps/unix/sysv/aix/write.c --- glibc-2.2/sysdeps/unix/sysv/aix/write.c Mon Mar 20 17:23:16 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/aix/write.c Sat Jan 6 20:35:41 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1999 Free Software Foundation, Inc. +/* Copyright (C) 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1999. diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/Makefile glibc-2.2.1/sysdeps/unix/sysv/linux/Makefile --- glibc-2.2/sysdeps/unix/sysv/linux/Makefile Tue Oct 17 14:54:20 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/Makefile Thu Nov 16 11:12:05 2000 @@ -25,6 +25,7 @@ sysdep_headers += sys/mount.h sys/acct.h install-others += $(inst_includedir)/bits/syscall.h +ifndef no_syscall_list_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)-t @@ -45,6 +46,7 @@ $(objpfx)syscall-%.h $(objpfx)syscall-%. $(@:.d=.h) $(@:.h=.d)),' rm -f $(@:.h=.d)-t mv -f $(@:.h=.d)-t2 $(@:.h=.d) +endif $(inst_includedir)/bits/syscall.h: $(objpfx)syscall-list.h $(+force) $(make-target-directory) diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/Versions glibc-2.2.1/sysdeps/unix/sysv/linux/Versions --- glibc-2.2/sysdeps/unix/sysv/linux/Versions Wed Aug 2 14:53:12 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/Versions Fri Dec 1 11:55:14 2000 @@ -90,4 +90,8 @@ libc { # ipc ctl interface change. semctl; shmctl; msgctl; } + GLIBC_2.2.1 { + # p* + pivot_root; + } } diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/alpha/Versions glibc-2.2.1/sysdeps/unix/sysv/linux/alpha/Versions --- glibc-2.2/sysdeps/unix/sysv/linux/alpha/Versions Wed Jun 21 11:11:06 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/alpha/Versions Thu Nov 16 11:12:05 2000 @@ -37,7 +37,7 @@ libc { getrusage; # time type change - gettimeofday; + gettimeofday; getitimer; # i* ieee_get_fp_control; ieee_set_fp_control; diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/bits/socket.h glibc-2.2.1/sysdeps/unix/sysv/linux/bits/socket.h --- glibc-2.2/sysdeps/unix/sysv/linux/bits/socket.h Thu Nov 2 16:50:25 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/bits/socket.h Fri Dec 1 11:55:14 2000 @@ -227,10 +227,8 @@ struct cmsghdr of cmsghdr structure. */ int cmsg_level; /* Originating protocol. */ int cmsg_type; /* Protocol specific type. */ -#if !defined __STRICT_ANSI__ && defined __GNUC__ && __GNUC__ >= 2 - __extension__ unsigned char __cmsg_data[0]; /* Ancillary data. */ + __extension__ unsigned char __cmsg_data __flexarr; /* Ancillary data. */ /* XXX Perhaps this should be removed. */ -#endif }; /* Ancillary data object manipulation macros. */ diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/dl-osinfo.h glibc-2.2.1/sysdeps/unix/sysv/linux/dl-osinfo.h --- glibc-2.2/sysdeps/unix/sysv/linux/dl-osinfo.h Thu Sep 14 13:11:37 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/dl-osinfo.h Wed Nov 22 11:00:02 2000 @@ -71,7 +71,7 @@ dl_fatal (const char *str) make sure the library can actually work. */ \ FATAL ("FATAL: cannot determine library version\n"); \ __close (fd); \ - buf[MIN (reslen, sizeof (bufmem) - 1)] = '\0'; \ + buf[MIN (reslen, (ssize_t) sizeof (bufmem) - 1)] = '\0'; \ } \ else \ buf = uts.release; \ diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/errqueue.h glibc-2.2.1/sysdeps/unix/sysv/linux/errqueue.h --- glibc-2.2/sysdeps/unix/sysv/linux/errqueue.h Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/errqueue.h Wed Jan 10 13:46:02 2001 @@ -0,0 +1,46 @@ +/* Copyright (C) 2000 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. */ + +/* Linux version. */ + +#ifndef _BITS_ERRQUEUE_H +#define _BITS_ERRQUEUE_H 1 + +#include +#include + +struct sock_extended_err + { + u_int32_t ee_errno; + u_int8_t ee_origin; + u_int8_t ee_type; + u_int8_t ee_code; + u_int8_t ee_pad; + u_int32_t ee_info; + u_int32_t ee_data; + }; + +#define SO_EE_ORIGIN_NONE 0 +#define SO_EE_ORIGIN_LOCAL 1 +#define SO_EE_ORIGIN_ICMP 2 +#define SO_EE_ORIGIN_ICMP6 3 + +#define SO_EE_OFFENDER(see) \ + ((struct sockaddr *)(((struct sock_extended_err)(see))+1)) + +#endif /* bits/errqueue.h */ diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/getdents.c glibc-2.2.1/sysdeps/unix/sysv/linux/getdents.c --- glibc-2.2/sysdeps/unix/sysv/linux/getdents.c Thu Sep 14 12:24:27 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/getdents.c Fri Dec 1 11:55:14 2000 @@ -48,7 +48,8 @@ extern int __have_no_getdents64; #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) -extern int __syscall_getdents (int fd, char *__unbounded buf, size_t nbytes); +extern int __syscall_getdents (int fd, char *__unbounded buf, unsigned int nbytes); +extern int __syscall_getdents64 (int fd, char *__unbounded buf, unsigned int nbytes); /* For Linux we need a special version of this file since the definition of `struct dirent' is not the same for the kernel and diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/getpt.c glibc-2.2.1/sysdeps/unix/sysv/linux/getpt.c --- glibc-2.2/sysdeps/unix/sysv/linux/getpt.c Thu Nov 18 08:38:56 1999 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/getpt.c Wed Jan 10 15:55:03 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1998, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Zack Weinberg , 1998. @@ -36,14 +36,15 @@ int __bsd_getpt (void); /* Open a master pseudo terminal and return its file descriptor. */ int -__getpt (void) +__posix_openpt (oflag) + int oflag; { static int have_no_dev_ptmx; int fd; if (!have_no_dev_ptmx) { - fd = __open (_PATH_DEVPTMX, O_RDWR); + fd = __open (_PATH_DEVPTMX, oflag); if (fd != -1) { struct statfs fsbuf; @@ -54,7 +55,7 @@ __getpt (void) if (devpts_mounted || (__statfs (_PATH_DEVPTS, &fsbuf) == 0 && fsbuf.f_type == DEVPTS_SUPER_MAGIC) - || (__statfs (_PATH_DEV, &fsbuf) == 0 + || (__statfs (_PATH_DEV, &fsbuf) == 0 && fsbuf.f_type == DEVFS_SUPER_MAGIC)) { /* Everything is ok. */ @@ -76,11 +77,24 @@ __getpt (void) } } - return __bsd_getpt (); + return -1; +} +weak_alias (__posix_openpt, posix_openpt) + + +int +__getpt (void) +{ + int fd = __posix_openpt (O_RDWR); + if (fd == -1) + fd = __bsd_getpt (); + return fd; } + #define PTYNAME1 "pqrstuvwxyzabcde"; #define PTYNAME2 "0123456789abcdef"; #define __getpt __bsd_getpt +#define HAVE_POSIX_OPENPT #include diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/glob64.c glibc-2.2.1/sysdeps/unix/sysv/linux/glob64.c --- glibc-2.2/sysdeps/unix/sysv/linux/glob64.c Fri Aug 21 09:38:15 1998 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/glob64.c Wed Dec 31 16:00:00 1969 @@ -1,20 +0,0 @@ -#include -#include -#include - -#define dirent dirent64 -#define __readdir(dirp) __readdir64 (dirp) - -#define glob_t glob64_t -#define glob(pattern, flags, errfunc, pglob) \ - glob64 (pattern, flags, errfunc, pglob) -#define globfree(pglob) globfree64 (pglob) - -#undef stat -#define stat stat64 -#undef __stat -#define __stat(file, buf) __xstat64 (_STAT_VER, file, buf) - -#define NO_GLOB_PATTERN_P 1 - -#include diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/hppa/brk.c glibc-2.2.1/sysdeps/unix/sysv/linux/hppa/brk.c --- glibc-2.2/sysdeps/unix/sysv/linux/hppa/brk.c Sun Oct 15 11:37:53 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/hppa/brk.c Fri Dec 1 11:55:14 2000 @@ -1,5 +1,5 @@ /* brk system call for Linux/HPPA. - Copyright (C) 1995, 1996 Free Software Foundation, Inc. + Copyright (C) 1995, 1996, 2000 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 @@ -32,7 +32,7 @@ weak_alias (__curbrk, ___brk_addr) int __brk (void *addr) { - void *newbrk, *scratch; + void *newbrk; __curbrk = newbrk = INLINE_SYSCALL(brk, 1, addr); diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/i386/chown.c glibc-2.2.1/sysdeps/unix/sysv/linux/i386/chown.c --- glibc-2.2/sysdeps/unix/sysv/linux/i386/chown.c Fri Jul 7 10:57:38 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/i386/chown.c Sat Jan 6 20:35:41 2001 @@ -39,6 +39,12 @@ extern int __syscall_chown (const char *__file, __kernel_uid_t __owner, __kernel_gid_t __group); + +extern int __chown_is_lchown (const char *__file, uid_t __owner, + gid_t __group); +extern int __real_chown (const char *__file, uid_t __owner, gid_t __group); + + #if defined __NR_lchown || __ASSUME_LCHOWN_SYSCALL > 0 /* Running under Linux > 2.1.80. */ @@ -145,23 +151,15 @@ __chown_is_lchown (const char *file, uid strong_alias (__chown_is_lchown, _chown_is_lchown) compat_symbol (libc, __chown_is_lchown, __chown, GLIBC_2_0); compat_symbol (libc, _chown_is_lchown, chown, GLIBC_2_0); +#endif -# ifdef __NR_lchown +#ifdef __NR_lchown strong_alias (__real_chown, _real_chown) versioned_symbol (libc, __real_chown, __chown, GLIBC_2_1); versioned_symbol (libc, _real_chown, chown, GLIBC_2_1); -# else +#else strong_alias (__chown_is_lchown, __chown_is_lchown21) strong_alias (__chown_is_lchown, _chown_is_lchown21) versioned_symbol (libc, __chown_is_lchown21, __chown, GLIBC_2_1); versioned_symbol (libc, _chown_is_lchown21, chown, GLIBC_2_1); -# endif -#else -# ifdef __NR_lchown -strong_alias (__real_chown, __chown) -weak_alias (__real_chown, chown) -# else -strong_alias (__chown_is_lchown, __chown) -weak_alias (__chown_is_lchown, chown) -# endif #endif diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/i386/dl-procinfo.h glibc-2.2.1/sysdeps/unix/sysv/linux/i386/dl-procinfo.h --- glibc-2.2/sysdeps/unix/sysv/linux/i386/dl-procinfo.h Fri Jun 9 12:17:54 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/i386/dl-procinfo.h Thu Nov 16 11:12:05 2000 @@ -32,6 +32,18 @@ static const char x86_cap_flags[][7] = }; #define _DL_HWCAP_COUNT 32 +static const char x86_platforms[][5] = + { + "i386", "i486", "i586", "i686" + }; +#define _DL_PLATFORMS_COUNT 4 + +/* Start at 48 to reserve some space. */ +#define _DL_FIRST_PLATFORM 48 +/* Mask to filter out platforms. */ +#define _DL_HWCAP_PLATFORM (7ULL << _DL_FIRST_PLATFORM) + + static inline int __attribute__ ((unused)) _dl_procinfo (int word) @@ -58,6 +70,13 @@ _dl_hwcap_string (int idx) return x86_cap_flags[idx]; }; +static inline const char * +__attribute__ ((unused)) +_dl_platform_string (int idx) +{ + return x86_platforms [idx - _DL_FIRST_PLATFORM]; +}; + enum { HWCAP_I386_FPU = 1 << 0, @@ -82,6 +101,7 @@ enum /* XXX Which others to add here? */ HWCAP_IMPORTANT = (HWCAP_I386_MMX) + }; static inline int @@ -95,6 +115,22 @@ _dl_string_hwcap (const char *str) if (strcmp (str, x86_cap_flags[i]) == 0) return i; } + return -1; +}; + + +static inline int +__attribute__ ((unused)) +_dl_string_platform (const char *str) +{ + int i; + + if (str != NULL) + for (i = 0; i < _DL_PLATFORMS_COUNT; ++i) + { + if (strcmp (str, x86_platforms[i]) == 0) + return _DL_FIRST_PLATFORM + i; + } return -1; }; diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/i386/get_clockfreq.c glibc-2.2.1/sysdeps/unix/sysv/linux/i386/get_clockfreq.c --- glibc-2.2/sysdeps/unix/sysv/linux/i386/get_clockfreq.c Wed Apr 12 13:52:40 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/i386/get_clockfreq.c Sat Jan 6 20:35:41 2001 @@ -21,6 +21,7 @@ #include #include #include +#include unsigned long long int diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/i386/getrlimit.c glibc-2.2.1/sysdeps/unix/sysv/linux/i386/getrlimit.c --- glibc-2.2/sysdeps/unix/sysv/linux/i386/getrlimit.c Fri Jul 7 10:57:38 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/i386/getrlimit.c Sat Jan 6 20:35:41 2001 @@ -31,6 +31,10 @@ extern int __syscall_ugetrlimit (unsigne extern int __syscall_getrlimit (unsigned int resource, struct rlimit *__unbounded rlimits); +extern int __new_getrlimit (enum __rlimit_resource resource, + struct rlimit *__unbounded rlimits); + + /* Linux 2.3.25 introduced a new system call since the types used for the limits are now unsigned. */ #if defined __NR_ugetrlimit && !defined __ASSUME_NEW_GETRLIMIT_SYSCALL diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/i386/oldgetrlimit64.c glibc-2.2.1/sysdeps/unix/sysv/linux/i386/oldgetrlimit64.c --- glibc-2.2/sysdeps/unix/sysv/linux/i386/oldgetrlimit64.c Fri Mar 31 12:38:45 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/i386/oldgetrlimit64.c Sat Jan 6 20:35:41 2001 @@ -26,6 +26,9 @@ #include extern int __new_getrlimit (enum __rlimit_resource, struct rlimit *); +extern int __old_getrlimit64 (enum __rlimit_resource resource, + struct rlimit64 *rlimits); + /* Put the soft and hard limits for RESOURCE in *RLIMITS. Returns 0 if successful, -1 if not (and sets errno). */ diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/i386/setresgid.c glibc-2.2.1/sysdeps/unix/sysv/linux/i386/setresgid.c --- glibc-2.2/sysdeps/unix/sysv/linux/i386/setresgid.c Fri Feb 11 15:49:01 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/i386/setresgid.c Fri Dec 1 11:55:14 2000 @@ -41,6 +41,8 @@ extern int __libc_missing_32bit_uids; # endif # endif /* __NR_setresgid32 */ +extern int setresgid (gid_t rgid, gid_t egid, gid_t sgid); + int setresgid (gid_t rgid, gid_t egid, gid_t sgid) { diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/i386/setresuid.c glibc-2.2.1/sysdeps/unix/sysv/linux/i386/setresuid.c --- glibc-2.2/sysdeps/unix/sysv/linux/i386/setresuid.c Fri Feb 11 15:49:01 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/i386/setresuid.c Fri Dec 1 11:55:14 2000 @@ -41,6 +41,8 @@ extern int __libc_missing_32bit_uids; # endif # endif /* __NR_setresuid32 */ +extern int __setresuid (uid_t ruid, uid_t euid, uid_t suid); + int __setresuid (uid_t ruid, uid_t euid, uid_t suid) { diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/i386/setrlimit.c glibc-2.2.1/sysdeps/unix/sysv/linux/i386/setrlimit.c --- glibc-2.2/sysdeps/unix/sysv/linux/i386/setrlimit.c Fri Jul 7 10:57:38 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/i386/setrlimit.c Sat Jan 6 20:35:41 2001 @@ -31,6 +31,8 @@ extern int __syscall_setrlimit (unsigned const struct rlimit *__unbounded rlimits); extern int __syscall_ugetrlimit (unsigned int resource, const struct rlimit *__unbounded rlimits); +extern int __new_setrlimit (enum __rlimit_resource resource, + const struct rlimit *__unboundedrlimits); /* Linux 2.3.25 introduced a new system call since the types used for the limits are now unsigned. */ diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/ia64/Dist glibc-2.2.1/sysdeps/unix/sysv/linux/ia64/Dist --- glibc-2.2/sysdeps/unix/sysv/linux/ia64/Dist Mon Sep 18 17:31:54 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/ia64/Dist Sat Jan 13 10:48:51 2001 @@ -1,5 +1,6 @@ clone.S clone2.S +dl-static.c ioperm.c net/route.h sys/procfs.h diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/ia64/Makefile glibc-2.2.1/sysdeps/unix/sysv/linux/ia64/Makefile --- glibc-2.2/sysdeps/unix/sysv/linux/ia64/Makefile Wed Aug 2 14:53:15 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/ia64/Makefile Sat Jan 13 10:48:51 2001 @@ -6,3 +6,9 @@ ifeq ($(subdir),misc) sysdep_headers += sys/io.h sysdep_routines += ioperm clone2 endif + +ifeq ($(subdir),elf) +sysdep-dl-routines += dl-static +sysdep_routines += $(sysdep-dl-routines) +sysdep-rtld-routines += $(sysdep-dl-routines) +endif diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/ia64/Versions glibc-2.2.1/sysdeps/unix/sysv/linux/ia64/Versions --- glibc-2.2/sysdeps/unix/sysv/linux/ia64/Versions Thu Oct 26 22:57:39 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/ia64/Versions Sat Jan 13 10:48:51 2001 @@ -3,6 +3,9 @@ ld { # global variables needed in the libc. _dl_pagesize; } + GLIBC_2.2.1 { + _dl_var_init; + } } libc { GLIBC_2.2 { diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/ia64/dl-static.c glibc-2.2.1/sysdeps/unix/sysv/linux/ia64/dl-static.c --- glibc-2.2/sysdeps/unix/sysv/linux/ia64/dl-static.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/ia64/dl-static.c Thu Jan 11 11:41:28 2001 @@ -0,0 +1,71 @@ +/* Variable initialization. IA-64 version. + Copyright (C) 2001 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. */ + +#include + +extern int _dl_clktck; + +#ifdef SHARED + +void +_dl_var_init (void *array[]) +{ + /* It has to match "variables" below. */ + enum + { + DL_PAGESIZE = 0, + DL_CLKTCK + }; + + _dl_pagesize = *((size_t *) array[DL_PAGESIZE]); + _dl_clktck = *((int *) array[DL_CLKTCK]); +} + +#else +#include + +__libc_lock_define_initialized_recursive (static, _dl_static_lock) + +static void *variables[] = +{ + &_dl_pagesize, + &_dl_clktck +}; + +void +_dl_static_init (struct link_map *map) +{ + const ElfW(Sym) *ref; + lookup_t loadbase; + void (*f) (void *[]); + + __libc_lock_lock (_dl_static_lock); + + loadbase = _dl_lookup_symbol ("_dl_var_init", map, &ref, + map->l_local_scope, 0, 1); + if (ref != NULL) + { + f = (void (*) (void *[])) DL_SYMBOL_ADDRESS (loadbase, ref); + f (variables); + } + + __libc_lock_unlock (_dl_static_lock); +} + +#endif diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/ia64/getpagesize.c glibc-2.2.1/sysdeps/unix/sysv/linux/ia64/getpagesize.c --- glibc-2.2/sysdeps/unix/sysv/linux/ia64/getpagesize.c Tue Jun 20 21:16:35 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/ia64/getpagesize.c Wed Jan 10 15:55:04 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1999, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1999, 2000, 2001 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 @@ -16,6 +16,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include #include #include @@ -27,19 +28,12 @@ determine the page size to ensure proper alignment for calls such as mmap and friends. --davidm 99/11/30 */ -/* If we are not a static program, this value is collected from the system - via the AT_PAGESZ auxiliary argument. If we are a static program, we - use the getpagesize system call. */ - extern size_t _dl_pagesize; -extern size_t __syscall_getpagesize (void); - int __getpagesize () { - if (_dl_pagesize == 0) - _dl_pagesize = INLINE_SYSCALL (getpagesize, 0); + assert (_dl_pagesize != 0); return _dl_pagesize; } diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/ia64/ldsodefs.h glibc-2.2.1/sysdeps/unix/sysv/linux/ia64/ldsodefs.h --- glibc-2.2/sysdeps/unix/sysv/linux/ia64/ldsodefs.h Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/ia64/ldsodefs.h Thu Jan 11 11:41:46 2001 @@ -0,0 +1,33 @@ +/* Run-time dynamic linker data structures for loaded ELF shared objects. IA64. + Copyright (C) 2001 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. */ + +#ifndef _LDSODEFS_H + +/* Get the real definitions. */ +#include_next + +/* Now define our stuff. */ + +/* We need special support to initialize DSO loaded for statically linked + binaries. */ +extern void _dl_static_init (struct link_map *map); +#undef DL_STATIC_INIT +#define DL_STATIC_INIT(map) _dl_static_init (map) + +#endif /* ldsodefs.h */ diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/ia64/machine-gmon.h glibc-2.2.1/sysdeps/unix/sysv/linux/ia64/machine-gmon.h --- glibc-2.2/sysdeps/unix/sysv/linux/ia64/machine-gmon.h Tue Jun 20 21:18:38 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/ia64/machine-gmon.h Wed Dec 31 16:00:00 1969 @@ -1,26 +0,0 @@ -/* Machine-specific calling sequence for `mcount' profiling function. IA-64. - Copyright (C) 1995, 1996, 1997, 2000 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. */ - -#define _MCOUNT_DECL(from, self) \ - void __mcount (u_long from, u_long self) - -/* Call __mcount with our the return PC for our caller, and the return - PC our caller will return to. Empty since we use an assembly stub - instead. */ -#define MCOUNT diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/ia64/setjmp.S glibc-2.2.1/sysdeps/unix/sysv/linux/ia64/setjmp.S --- glibc-2.2/sysdeps/unix/sysv/linux/ia64/setjmp.S Sun Oct 8 17:05:08 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/ia64/setjmp.S Wed Nov 22 11:00:03 2000 @@ -81,13 +81,13 @@ setjmp: alloc r8=ar.pfs,2,0,0,0 br.cond.sptk.many __sigsetjmp .endp setjmp - .global __setjmp - .proc __setjmp -__setjmp: + .global _setjmp + .proc _setjmp +_setjmp: alloc r8=ar.pfs,2,0,0,0 mov in1=0 br.cond.sptk.many __sigsetjmp - .endp __setjmp + .endp _setjmp /* __sigsetjmp(__jmp_buf buf, int savemask) */ .align 32 @@ -183,5 +183,5 @@ __sigsetjmp: ret .endp __sigsetjmp -weak_alias(__setjmp, _setjmp) +weak_extern(_setjmp) weak_extern(setjmp) diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/ia64/syscalls.list glibc-2.2.1/sysdeps/unix/sysv/linux/ia64/syscalls.list --- glibc-2.2/sysdeps/unix/sysv/linux/ia64/syscalls.list Thu Sep 14 12:24:28 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/ia64/syscalls.list Wed Jan 10 15:55:04 2001 @@ -72,7 +72,6 @@ s_getdents64 getdents64 getdents64 i:ipi s_mknod xmknod mknod i:sii __syscall_mknod s_readv readv readv i:ipi __syscall_readv s_writev writev writev i:ipi __syscall_writev -s_getpagesize getpagesize getpagesize 0 __syscall_getpagesize s_poll poll poll i:pii __syscall_poll s_reboot reboot reboot i:iii __syscall_reboot s_ustat ustat ustat i:ip __syscall_ustat diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/if_index.c glibc-2.2.1/sysdeps/unix/sysv/linux/if_index.c --- glibc-2.2/sysdeps/unix/sysv/linux/if_index.c Mon May 1 14:57:14 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/if_index.c Sat Jan 6 20:35:41 2001 @@ -243,7 +243,7 @@ if_indextoname (unsigned int ifindex, ch #endif } - +#if 0 void internal_function __protocol_available (int *have_inet, int *have_inet6) @@ -316,3 +316,4 @@ __protocol_available (int *have_inet, in __close (fd); } +#endif diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/init-first.c glibc-2.2.1/sysdeps/unix/sysv/linux/init-first.c --- glibc-2.2/sysdeps/unix/sysv/linux/init-first.c Thu Aug 31 14:45:30 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/init-first.c Sat Jan 6 20:35:41 2001 @@ -26,14 +26,13 @@ #include #include #include "kernel-features.h" +#include #ifndef SHARED # include "dl-osinfo.h" #endif -extern void __libc_init_secure (void); extern void __libc_init (int, char **, char **); -extern void __libc_global_ctors (void); /* The function is called from assembly stubs the compiler can't see. */ static void init (int, char **, char **) __attribute__ ((unused)); @@ -108,12 +107,16 @@ init (int argc, char **argv, char **envp strong_alias (init, _init); +extern void __libc_init_first (void); + void __libc_init_first (void) { } #else +extern void __libc_init_first (int argc, char **argv, char **envp); + void __libc_init_first (int argc, char **argv, char **envp) { @@ -126,6 +129,8 @@ __libc_init_first (int argc, char **argv ld.so we will get a link error. Having this file silently included in ld.so causes disaster, because the _init definition above will cause ld.so to gain an init function, which is not a cool thing. */ + +extern void _dl_start (void) __attribute__ ((noreturn)); void _dl_start (void) diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/ldsodefs.h glibc-2.2.1/sysdeps/unix/sysv/linux/ldsodefs.h --- glibc-2.2/sysdeps/unix/sysv/linux/ldsodefs.h Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/ldsodefs.h Sat Jan 6 18:00:00 2001 @@ -0,0 +1,33 @@ +/* Run-time dynamic linker data structures for loaded ELF shared objects. + Copyright (C) 2001 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. */ + +#ifndef _LDSODEFS_H + +/* Get the real definitions. */ +#include_next + +/* Now define our stuff. */ + +/* We have the auxiliary vector. */ +#define HAVE_AUX_VECTOR + +/* Used by static binaries to check the auxiliary vector. */ +extern void _dl_aux_init (ElfW(auxv_t) *av) internal_function; + +#endif /* ldsodefs.h */ diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/llseek.c glibc-2.2.1/sysdeps/unix/sysv/linux/llseek.c --- glibc-2.2/sysdeps/unix/sysv/linux/llseek.c Fri Jul 7 10:57:37 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/llseek.c Fri Dec 1 11:55:14 2000 @@ -27,6 +27,8 @@ extern int __syscall__llseek (int fd, of loff_t *__unbounded result, int whence); /* Seek to OFFSET on FD, starting from WHENCE. */ +extern loff_t __llseek (int fd, loff_t offset, int whence); + loff_t __llseek (int fd, loff_t offset, int whence) { diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/m68k/setjmp.c glibc-2.2.1/sysdeps/unix/sysv/linux/m68k/setjmp.c --- glibc-2.2/sysdeps/unix/sysv/linux/m68k/setjmp.c Sun Dec 29 17:47:43 1996 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/m68k/setjmp.c Wed Dec 31 16:00:00 1969 @@ -1,81 +0,0 @@ -/* Copyright (C) 1991, 1992, 1994, 1996 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. */ - -#include - -/* Save the current program position in ENV and return 0. */ -int -__sigsetjmp (jmp_buf env, int savemask) -{ - /* Save data registers D1 through D7. */ - asm volatile ("movem%.l %/d1-%/d7, %0" - : : "m" (env[0].__jmpbuf[0].__dregs[0])); - - /* Save return address in place of register A0. */ - env[0].__jmpbuf[0].__aregs[0] = ((void **) &env)[-1]; - - /* Save address registers A1 through A5. */ - asm volatile ("movem%.l %/a1-%/a5, %0" - : : "m" (env[0].__jmpbuf[0].__aregs[1])); - - /* Save caller's FP, not our own. */ - env[0].__jmpbuf[0].__fp = ((void **) &env)[-2]; - - /* Save caller's SP, not our own. */ - env[0].__jmpbuf[0].__sp = (void *) &env; - -#if defined (__HAVE_68881__) || defined (__HAVE_FPU__) - /* Save floating-point (68881) registers FP0 through FP7. */ - asm volatile ("fmovem%.x %/fp0-%/fp7, %0" - : : "m" (env[0].__jmpbuf[0].__fpregs[0])); -#endif - - /* Save the signal mask if requested. */ - return __sigjmp_save (env, savemask); -} - -/* Binary compatibility entry point. */ -int -__setjmp (jmp_buf env) -{ - /* Save data registers D1 through D7. */ - asm volatile ("movem%.l %/d1-%/d7, %0" - : : "m" (env[0].__jmpbuf[0].__dregs[0])); - - /* Save return address in place of register A0. */ - env[0].__jmpbuf[0].__aregs[0] = ((void **) &env)[-1]; - - /* Save address registers A1 through A5. */ - asm volatile ("movem%.l %/a1-%/a5, %0" - : : "m" (env[0].__jmpbuf[0].__aregs[1])); - - /* Save caller's FP, not our own. */ - env[0].__jmpbuf[0].__fp = ((void **) &env)[-2]; - - /* Save caller's SP, not our own. */ - env[0].__jmpbuf[0].__sp = (void *) &env; - -#if defined (__HAVE_68881__) || defined (__HAVE_FPU__) - /* Save floating-point (68881) registers FP0 through FP7. */ - asm volatile ("fmovem%.x %/fp0-%/fp7, %0" - : : "m" (env[0].__jmpbuf[0].__fpregs[0])); -#endif - - /* The signal mask has already been dealt with. */ - return 0; -} diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/mips/Dist glibc-2.2.1/sysdeps/unix/sysv/linux/mips/Dist --- glibc-2.2/sysdeps/unix/sysv/linux/mips/Dist Mon Sep 18 15:42:30 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/mips/Dist Sat Jan 6 23:04:08 2001 @@ -5,7 +5,6 @@ ipc_priv.h kernel_sigaction.h kernel_stat.h kernel_termios.h -sys/acct.h sys/cachectl.h sys/procfs.h sys/sysmips.h diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/mips/bits/fcntl.h glibc-2.2.1/sysdeps/unix/sysv/linux/mips/bits/fcntl.h --- glibc-2.2/sysdeps/unix/sysv/linux/mips/bits/fcntl.h Sun Oct 8 17:05:08 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/mips/bits/fcntl.h Wed Nov 22 11:00:03 2000 @@ -45,7 +45,7 @@ #endif #ifdef __USE_GNU -# define O_NOFOLLOW 0x4000 /* Do not follow links. */ +# define O_NOFOLLOW 0x20000 /* Do not follow links. */ # define O_DIRECT 0x8000 /* Direct disk access hint. */ # define O_DIRECTORY 0x10000 /* Must be a directory. */ #endif diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/mips/bits/socket.h glibc-2.2.1/sysdeps/unix/sysv/linux/mips/bits/socket.h --- glibc-2.2/sysdeps/unix/sysv/linux/mips/bits/socket.h Thu Sep 14 12:24:28 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/mips/bits/socket.h Fri Dec 1 11:55:14 2000 @@ -214,7 +214,7 @@ struct msghdr struct iovec *msg_iov; /* Vector of data to send/receive into. */ size_t msg_iovlen; /* Number of elements in the vector. */ - void *msg_control; /* Ancillary data (eg BSD filedesc passing). */ + void *msg_control; /* Ancillary data (eg BSD filedesc passing). */ size_t msg_controllen; /* Ancillary data buffer length. */ int msg_flags; /* Flags on received message. */ @@ -227,10 +227,8 @@ struct cmsghdr of cmsghdr structure. */ int cmsg_level; /* Originating protocol. */ int cmsg_type; /* Protocol specific type. */ -#if !defined __STRICT_ANSI__ && defined __GNUC__ && __GNUC__ >= 2 - unsigned char __cmsg_data[0]; /* Ancillary data. */ + __extension__ unsigned char __cmsg_data __flexarr; /* Ancillary data. */ /* XXX Perhaps this should be removed. */ -#endif }; /* Ancillary data object manipulation macros. */ @@ -244,7 +242,7 @@ struct cmsghdr ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) \ ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) NULL) #define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) \ - & ~(sizeof (size_t) - 1)) + & (size_t) ~(sizeof (size_t) - 1)) #define CMSG_SPACE(len) (CMSG_ALIGN (len) \ + CMSG_ALIGN (sizeof (struct cmsghdr))) #define CMSG_LEN(len) (CMSG_ALIGN (sizeof (struct cmsghdr)) + (len)) diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/mips/clone.S glibc-2.2.1/sysdeps/unix/sysv/linux/mips/clone.S --- glibc-2.2/sysdeps/unix/sysv/linux/mips/clone.S Mon Apr 17 10:19:01 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/mips/clone.S Wed Nov 22 11:00:03 2000 @@ -82,15 +82,13 @@ error: /* Load up the arguments to the function. Put this block of code in its own function so that we can terminate the stack trace with our - debug info. - - At this point we have s0=arg, s1=fn. */ + debug info. */ ENTRY(__thread_start) /* cp is already loaded. */ .cprestore 16 /* The stackframe has been created on entry of clone(). */ - /* Resort the arg for user's function. */ + /* Restore the arg for user's function. */ lw t9,0(sp) /* Function pointer. */ lw a0,4(sp) /* Argument pointer. */ diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/mips/kernel_sigaction.h glibc-2.2.1/sysdeps/unix/sysv/linux/mips/kernel_sigaction.h --- glibc-2.2/sysdeps/unix/sysv/linux/mips/kernel_sigaction.h Mon Apr 17 10:19:01 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/mips/kernel_sigaction.h Sat Jan 6 20:35:41 2001 @@ -21,11 +21,20 @@ struct old_kernel_sigaction { #endif }; + +#define _KERNEL_NSIG 128 +#define _KERNEL_NSIG_BPW 32 +#define _KERNEL_NSIG_WORDS (_KERNEL_NSIG / _KERNEL_NSIG_BPW) + +typedef struct { + unsigned long sig[_KERNEL_NSIG_WORDS]; +} kernel_sigset_t; + /* This is the sigaction structure from the Linux 2.1.68 kernel. */ struct kernel_sigaction { unsigned int sa_flags; __sighandler_t k_sa_handler; - sigset_t sa_mask; + kernel_sigset_t sa_mask; void (*sa_restorer)(void); int s_resv[1]; /* reserved */ }; diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/mips/kernel_stat.h glibc-2.2.1/sysdeps/unix/sysv/linux/mips/kernel_stat.h --- glibc-2.2/sysdeps/unix/sysv/linux/mips/kernel_stat.h Sat Jul 12 16:32:50 1997 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/mips/kernel_stat.h Wed Nov 22 11:00:03 2000 @@ -12,12 +12,12 @@ struct kernel_stat long int __pad2[2]; long int st_size; long int __pad3; - unsigned int st_atime; - unsigned int __unused1; - unsigned int st_mtime; - unsigned int __unused2; - unsigned int st_ctime; - unsigned int __unused3; + long int st_atime; + long int __unused1; + long int st_mtime; + long int __unused2; + long int st_ctime; + long int __unused3; long int st_blksize; long int st_blocks; char st_fstype[16]; /* Filesystem type name, unsupported */ diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/mips/sigaction.c glibc-2.2.1/sysdeps/unix/sysv/linux/mips/sigaction.c --- glibc-2.2/sysdeps/unix/sysv/linux/mips/sigaction.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/mips/sigaction.c Sat Dec 9 10:32:00 2000 @@ -0,0 +1,139 @@ +/* Copyright (C) 1997, 1998, 1999, 2000 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. */ + +#include +#include +#include + +#include +#include + +#include "kernel-features.h" + +/* The difference here is that the sigaction structure used in the + kernel is not the same as we use in the libc. Therefore we must + translate it here. */ +#include + +#if __ASSUME_REALTIME_SIGNALS == 0 +/* The variable is shared between all wrappers around signal handling + functions which have RT equivalents. This is the definition. */ +int __libc_missing_rt_sigs; + +extern int __syscall_sigaction (int, const struct old_kernel_sigaction *__unbounded, + struct old_kernel_sigaction *__unbounded); +#endif +extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *__unbounded, + struct kernel_sigaction *__unbounded, size_t); + + +/* If ACT is not NULL, change the action for SIG to *ACT. + If OACT is not NULL, put the old action for SIG in *OACT. */ +int +__libc_sigaction (sig, act, oact) + int sig; + const struct sigaction *act; + struct sigaction *oact; +{ +#if __ASSUME_REALTIME_SIGNALS == 0 + struct old_kernel_sigaction k_sigact, k_osigact; +#endif + int result; + +#if defined __NR_rt_sigaction || __ASSUME_REALTIME_SIGNALS > 0 + /* First try the RT signals. */ +# if __ASSUME_REALTIME_SIGNALS == 0 + if (!__libc_missing_rt_sigs) +# endif + { + struct kernel_sigaction kact, koact; + /* Save the current error value for later. We need not do this + if we are guaranteed to have realtime signals. */ +# if __ASSUME_REALTIME_SIGNALS == 0 + int saved_errno = errno; +# endif + + if (act) + { + kact.k_sa_handler = act->sa_handler; + memcpy (&kact.sa_mask, &act->sa_mask, sizeof (kernel_sigset_t)); + kact.sa_flags = act->sa_flags; +# ifdef HAVE_SA_RESTORER + kact.sa_restorer = act->sa_restorer; +# endif + } + + /* XXX The size argument hopefully will have to be changed to the + real size of the user-level sigset_t. */ + result = INLINE_SYSCALL (rt_sigaction, 4, sig, + act ? __ptrvalue (&kact) : NULL, + oact ? __ptrvalue (&koact) : NULL, + sizeof (kernel_sigset_t)); + +# if __ASSUME_REALTIME_SIGNALS == 0 + if (result >= 0 || errno != ENOSYS) +# endif + { + if (oact && result >= 0) + { + oact->sa_handler = koact.k_sa_handler; + memcpy (&oact->sa_mask, &koact.sa_mask, + sizeof (kernel_sigset_t)); + oact->sa_flags = koact.sa_flags; +# ifdef HAVE_SA_RESTORER + oact->sa_restorer = koact.sa_restorer; +# endif + } + return result; + } + +# if __ASSUME_REALTIME_SIGNALS == 0 + __set_errno (saved_errno); + __libc_missing_rt_sigs = 1; +# endif + } +#endif + +#if __ASSUME_REALTIME_SIGNALS == 0 + if (act) + { + k_sigact.k_sa_handler = act->sa_handler; + k_sigact.sa_mask = act->sa_mask.__val[0]; + k_sigact.sa_flags = act->sa_flags; +# ifdef HAVE_SA_RESTORER + k_sigact.sa_restorer = act->sa_restorer; +# endif + } + result = INLINE_SYSCALL (sigaction, 3, sig, + act ? __ptrvalue (&k_sigact) : NULL, + oact ? __ptrvalue (&k_osigact) : NULL); + if (oact && result >= 0) + { + oact->sa_handler = k_osigact.k_sa_handler; + oact->sa_mask.__val[0] = k_osigact.sa_mask; + oact->sa_flags = k_osigact.sa_flags; +# ifdef HAVE_SA_RESTORER + oact->sa_restorer = k_osigact.sa_restorer; +# endif + } + return result; +#endif +} + +weak_alias (__libc_sigaction, __sigaction) +weak_alias (__libc_sigaction, sigaction) diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/mips/sys/acct.h glibc-2.2.1/sysdeps/unix/sysv/linux/mips/sys/acct.h --- glibc-2.2/sysdeps/unix/sysv/linux/mips/sys/acct.h Fri Feb 11 15:49:02 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/mips/sys/acct.h Wed Dec 31 16:00:00 1969 @@ -1,66 +0,0 @@ -/* Copyright (C) 1997, 2000 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. */ - -#ifndef _SYS_ACCT_H - -#define _SYS_ACCT_H 1 -#include - -#define __need_time_t -#include - - -__BEGIN_DECLS - -#define ACCT_COMM 16 - -struct acct - { - char ac_comm[ACCT_COMM]; /* Accounting command name. */ - time_t ac_utime; /* Accounting user time. */ - time_t ac_stime; /* Accounting system time. */ - time_t ac_etime; /* Accounting elapsed time. */ - time_t ac_btime; /* Beginning time. */ - long int ac_uid; /* Accounting user ID. */ - long int ac_gid; /* Accounting group ID. */ - unsigned long int ac_tty; /* Controlling tty. */ - /* Please note that the value of the `ac_tty' field, a device number, - is encoded differently in the kernel and for the libc dev_t type. */ - char ac_flag; /* Accounting flag. */ - long int ac_minflt; /* Accounting minor pagefaults. */ - long int ac_majflt; /* Accounting major pagefaults. */ - long int ac_exitcode; /* Accounting process exitcode. */ - }; - -enum - { - AFORK = 0001, /* Has executed fork, but no exec. */ - ASU = 0002, /* Used super-user privileges. */ - ACORE = 0004, /* Dumped core. */ - AXSIG = 0010 /* Killed by a signal. */ - }; - -#define AHZ 100 - - -/* Switch process accounting on and off. */ -extern int acct (__const char *__filename) __THROW; - -__END_DECLS - -#endif /* sys/acct.h */ diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/mips/sys/syscall.h glibc-2.2.1/sysdeps/unix/sysv/linux/mips/sys/syscall.h --- glibc-2.2/sysdeps/unix/sysv/linux/mips/sys/syscall.h Thu Oct 26 22:57:42 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/mips/sys/syscall.h Wed Dec 31 16:00:00 1969 @@ -1,1226 +0,0 @@ -/* Copyright (C) 1995,1996,1997,1998,2000 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. */ - -#ifndef _SYSCALL_H -#define _SYSCALL_H 1 - -/* This file should list the numbers of the system the system knows. - But instead of duplicating this we use the information available - from the kernel sources. */ -#include - -/* The Linux kernel header file defines macros `__NR_', but some - 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. On MIPS the program which generates - on the other ports fails, so do this manually. */ - - -/* - * SVR4 syscalls are in the range from 1 to 999 - */ -#define SYS_SVR4 0 -#define SYS_SVR4_syscall (SYS_SVR4 + 0) -#define SYS_SVR4_exit (SYS_SVR4 + 1) -#define SYS_SVR4_fork (SYS_SVR4 + 2) -#define SYS_SVR4_read (SYS_SVR4 + 3) -#define SYS_SVR4_write (SYS_SVR4 + 4) -#define SYS_SVR4_open (SYS_SVR4 + 5) -#define SYS_SVR4_close (SYS_SVR4 + 6) -#define SYS_SVR4_wait (SYS_SVR4 + 7) -#define SYS_SVR4_creat (SYS_SVR4 + 8) -#define SYS_SVR4_link (SYS_SVR4 + 9) -#define SYS_SVR4_unlink (SYS_SVR4 + 10) -#define SYS_SVR4_exec (SYS_SVR4 + 11) -#define SYS_SVR4_chdir (SYS_SVR4 + 12) -#define SYS_SVR4_gtime (SYS_SVR4 + 13) -#define SYS_SVR4_mknod (SYS_SVR4 + 14) -#define SYS_SVR4_chmod (SYS_SVR4 + 15) -#define SYS_SVR4_chown (SYS_SVR4 + 16) -#define SYS_SVR4_sbreak (SYS_SVR4 + 17) -#define SYS_SVR4_stat (SYS_SVR4 + 18) -#define SYS_SVR4_lseek (SYS_SVR4 + 19) -#define SYS_SVR4_getpid (SYS_SVR4 + 20) -#define SYS_SVR4_mount (SYS_SVR4 + 21) -#define SYS_SVR4_umount (SYS_SVR4 + 22) -#define SYS_SVR4_setuid (SYS_SVR4 + 23) -#define SYS_SVR4_getuid (SYS_SVR4 + 24) -#define SYS_SVR4_stime (SYS_SVR4 + 25) -#define SYS_SVR4_ptrace (SYS_SVR4 + 26) -#define SYS_SVR4_alarm (SYS_SVR4 + 27) -#define SYS_SVR4_fstat (SYS_SVR4 + 28) -#define SYS_SVR4_pause (SYS_SVR4 + 29) -#define SYS_SVR4_utime (SYS_SVR4 + 30) -#define SYS_SVR4_stty (SYS_SVR4 + 31) -#define SYS_SVR4_gtty (SYS_SVR4 + 32) -#define SYS_SVR4_access (SYS_SVR4 + 33) -#define SYS_SVR4_nice (SYS_SVR4 + 34) -#define SYS_SVR4_statfs (SYS_SVR4 + 35) -#define SYS_SVR4_sync (SYS_SVR4 + 36) -#define SYS_SVR4_kill (SYS_SVR4 + 37) -#define SYS_SVR4_fstatfs (SYS_SVR4 + 38) -#define SYS_SVR4_setpgrp (SYS_SVR4 + 39) -#define SYS_SVR4_cxenix (SYS_SVR4 + 40) -#define SYS_SVR4_dup (SYS_SVR4 + 41) -#define SYS_SVR4_pipe (SYS_SVR4 + 42) -#define SYS_SVR4_times (SYS_SVR4 + 43) -#define SYS_SVR4_profil (SYS_SVR4 + 44) -#define SYS_SVR4_plock (SYS_SVR4 + 45) -#define SYS_SVR4_setgid (SYS_SVR4 + 46) -#define SYS_SVR4_getgid (SYS_SVR4 + 47) -#define SYS_SVR4_sig (SYS_SVR4 + 48) -#define SYS_SVR4_msgsys (SYS_SVR4 + 49) -#define SYS_SVR4_sysmips (SYS_SVR4 + 50) -#define SYS_SVR4_sysacct (SYS_SVR4 + 51) -#define SYS_SVR4_shmsys (SYS_SVR4 + 52) -#define SYS_SVR4_semsys (SYS_SVR4 + 53) -#define SYS_SVR4_ioctl (SYS_SVR4 + 54) -#define SYS_SVR4_uadmin (SYS_SVR4 + 55) -#define SYS_SVR4_exch (SYS_SVR4 + 56) -#define SYS_SVR4_utssys (SYS_SVR4 + 57) -#define SYS_SVR4_fsync (SYS_SVR4 + 58) -#define SYS_SVR4_exece (SYS_SVR4 + 59) -#define SYS_SVR4_umask (SYS_SVR4 + 60) -#define SYS_SVR4_chroot (SYS_SVR4 + 61) -#define SYS_SVR4_fcntl (SYS_SVR4 + 62) -#define SYS_SVR4_ulimit (SYS_SVR4 + 63) -#define SYS_SVR4_reserved1 (SYS_SVR4 + 64) -#define SYS_SVR4_reserved2 (SYS_SVR4 + 65) -#define SYS_SVR4_reserved3 (SYS_SVR4 + 66) -#define SYS_SVR4_reserved4 (SYS_SVR4 + 67) -#define SYS_SVR4_reserved5 (SYS_SVR4 + 68) -#define SYS_SVR4_reserved6 (SYS_SVR4 + 69) -#define SYS_SVR4_advfs (SYS_SVR4 + 70) -#define SYS_SVR4_unadvfs (SYS_SVR4 + 71) -#define SYS_SVR4_unused1 (SYS_SVR4 + 72) -#define SYS_SVR4_unused2 (SYS_SVR4 + 73) -#define SYS_SVR4_rfstart (SYS_SVR4 + 74) -#define SYS_SVR4_unused3 (SYS_SVR4 + 75) -#define SYS_SVR4_rdebug (SYS_SVR4 + 76) -#define SYS_SVR4_rfstop (SYS_SVR4 + 77) -#define SYS_SVR4_rfsys (SYS_SVR4 + 78) -#define SYS_SVR4_rmdir (SYS_SVR4 + 79) -#define SYS_SVR4_mkdir (SYS_SVR4 + 80) -#define SYS_SVR4_getdents (SYS_SVR4 + 81) -#define SYS_SVR4_libattach (SYS_SVR4 + 82) -#define SYS_SVR4_libdetach (SYS_SVR4 + 83) -#define SYS_SVR4_sysfs (SYS_SVR4 + 84) -#define SYS_SVR4_getmsg (SYS_SVR4 + 85) -#define SYS_SVR4_putmsg (SYS_SVR4 + 86) -#define SYS_SVR4_poll (SYS_SVR4 + 87) -#define SYS_SVR4_lstat (SYS_SVR4 + 88) -#define SYS_SVR4_symlink (SYS_SVR4 + 89) -#define SYS_SVR4_readlink (SYS_SVR4 + 90) -#define SYS_SVR4_setgroups (SYS_SVR4 + 91) -#define SYS_SVR4_getgroups (SYS_SVR4 + 92) -#define SYS_SVR4_fchmod (SYS_SVR4 + 93) -#define SYS_SVR4_fchown (SYS_SVR4 + 94) -#define SYS_SVR4_sigprocmask (SYS_SVR4 + 95) -#define SYS_SVR4_sigsuspend (SYS_SVR4 + 96) -#define SYS_SVR4_sigaltstack (SYS_SVR4 + 97) -#define SYS_SVR4_sigaction (SYS_SVR4 + 98) -#define SYS_SVR4_sigpending (SYS_SVR4 + 99) -#define SYS_SVR4_setcontext (SYS_SVR4 + 100) -#define SYS_SVR4_evsys (SYS_SVR4 + 101) -#define SYS_SVR4_evtrapret (SYS_SVR4 + 102) -#define SYS_SVR4_statvfs (SYS_SVR4 + 103) -#define SYS_SVR4_fstatvfs (SYS_SVR4 + 104) -#define SYS_SVR4_reserved7 (SYS_SVR4 + 105) -#define SYS_SVR4_nfssys (SYS_SVR4 + 106) -#define SYS_SVR4_waitid (SYS_SVR4 + 107) -#define SYS_SVR4_sigsendset (SYS_SVR4 + 108) -#define SYS_SVR4_hrtsys (SYS_SVR4 + 109) -#define SYS_SVR4_acancel (SYS_SVR4 + 110) -#define SYS_SVR4_async (SYS_SVR4 + 111) -#define SYS_SVR4_priocntlset (SYS_SVR4 + 112) -#define SYS_SVR4_pathconf (SYS_SVR4 + 113) -#define SYS_SVR4_mincore (SYS_SVR4 + 114) -#define SYS_SVR4_mmap (SYS_SVR4 + 115) -#define SYS_SVR4_mprotect (SYS_SVR4 + 116) -#define SYS_SVR4_munmap (SYS_SVR4 + 117) -#define SYS_SVR4_fpathconf (SYS_SVR4 + 118) -#define SYS_SVR4_vfork (SYS_SVR4 + 119) -#define SYS_SVR4_fchdir (SYS_SVR4 + 120) -#define SYS_SVR4_readv (SYS_SVR4 + 121) -#define SYS_SVR4_writev (SYS_SVR4 + 122) -#define SYS_SVR4_xstat (SYS_SVR4 + 123) -#define SYS_SVR4_lxstat (SYS_SVR4 + 124) -#define SYS_SVR4_fxstat (SYS_SVR4 + 125) -#define SYS_SVR4_xmknod (SYS_SVR4 + 126) -#define SYS_SVR4_clocal (SYS_SVR4 + 127) -#define SYS_SVR4_setrlimit (SYS_SVR4 + 128) -#define SYS_SVR4_getrlimit (SYS_SVR4 + 129) -#define SYS_SVR4_lchown (SYS_SVR4 + 130) -#define SYS_SVR4_memcntl (SYS_SVR4 + 131) -#define SYS_SVR4_getpmsg (SYS_SVR4 + 132) -#define SYS_SVR4_putpmsg (SYS_SVR4 + 133) -#define SYS_SVR4_rename (SYS_SVR4 + 134) -#define SYS_SVR4_nuname (SYS_SVR4 + 135) -#define SYS_SVR4_setegid (SYS_SVR4 + 136) -#define SYS_SVR4_sysconf (SYS_SVR4 + 137) -#define SYS_SVR4_adjtime (SYS_SVR4 + 138) -#define SYS_SVR4_sysinfo (SYS_SVR4 + 139) -#define SYS_SVR4_reserved8 (SYS_SVR4 + 140) -#define SYS_SVR4_seteuid (SYS_SVR4 + 141) -#define SYS_SVR4_PYRAMID_statis (SYS_SVR4 + 142) -#define SYS_SVR4_PYRAMID_tuning (SYS_SVR4 + 143) -#define SYS_SVR4_PYRAMID_forcerr (SYS_SVR4 + 144) -#define SYS_SVR4_PYRAMID_mpcntl (SYS_SVR4 + 145) -#define SYS_SVR4_reserved9 (SYS_SVR4 + 146) -#define SYS_SVR4_reserved10 (SYS_SVR4 + 147) -#define SYS_SVR4_reserved11 (SYS_SVR4 + 148) -#define SYS_SVR4_reserved12 (SYS_SVR4 + 149) -#define SYS_SVR4_reserved13 (SYS_SVR4 + 150) -#define SYS_SVR4_reserved14 (SYS_SVR4 + 151) -#define SYS_SVR4_reserved15 (SYS_SVR4 + 152) -#define SYS_SVR4_reserved16 (SYS_SVR4 + 153) -#define SYS_SVR4_reserved17 (SYS_SVR4 + 154) -#define SYS_SVR4_reserved18 (SYS_SVR4 + 155) -#define SYS_SVR4_reserved19 (SYS_SVR4 + 156) -#define SYS_SVR4_reserved20 (SYS_SVR4 + 157) -#define SYS_SVR4_reserved21 (SYS_SVR4 + 158) -#define SYS_SVR4_reserved22 (SYS_SVR4 + 159) -#define SYS_SVR4_reserved23 (SYS_SVR4 + 160) -#define SYS_SVR4_reserved24 (SYS_SVR4 + 161) -#define SYS_SVR4_reserved25 (SYS_SVR4 + 162) -#define SYS_SVR4_reserved26 (SYS_SVR4 + 163) -#define SYS_SVR4_reserved27 (SYS_SVR4 + 164) -#define SYS_SVR4_reserved28 (SYS_SVR4 + 165) -#define SYS_SVR4_reserved29 (SYS_SVR4 + 166) -#define SYS_SVR4_reserved30 (SYS_SVR4 + 167) -#define SYS_SVR4_reserved31 (SYS_SVR4 + 168) -#define SYS_SVR4_reserved32 (SYS_SVR4 + 169) -#define SYS_SVR4_reserved33 (SYS_SVR4 + 170) -#define SYS_SVR4_reserved34 (SYS_SVR4 + 171) -#define SYS_SVR4_reserved35 (SYS_SVR4 + 172) -#define SYS_SVR4_reserved36 (SYS_SVR4 + 173) -#define SYS_SVR4_reserved37 (SYS_SVR4 + 174) -#define SYS_SVR4_reserved38 (SYS_SVR4 + 175) -#define SYS_SVR4_reserved39 (SYS_SVR4 + 176) -#define SYS_SVR4_reserved40 (SYS_SVR4 + 177) -#define SYS_SVR4_reserved41 (SYS_SVR4 + 178) -#define SYS_SVR4_reserved42 (SYS_SVR4 + 179) -#define SYS_SVR4_reserved43 (SYS_SVR4 + 180) -#define SYS_SVR4_reserved44 (SYS_SVR4 + 181) -#define SYS_SVR4_reserved45 (SYS_SVR4 + 182) -#define SYS_SVR4_reserved46 (SYS_SVR4 + 183) -#define SYS_SVR4_reserved47 (SYS_SVR4 + 184) -#define SYS_SVR4_reserved48 (SYS_SVR4 + 185) -#define SYS_SVR4_reserved49 (SYS_SVR4 + 186) -#define SYS_SVR4_reserved50 (SYS_SVR4 + 187) -#define SYS_SVR4_reserved51 (SYS_SVR4 + 188) -#define SYS_SVR4_reserved52 (SYS_SVR4 + 189) -#define SYS_SVR4_reserved53 (SYS_SVR4 + 190) -#define SYS_SVR4_reserved54 (SYS_SVR4 + 191) -#define SYS_SVR4_reserved55 (SYS_SVR4 + 192) -#define SYS_SVR4_reserved56 (SYS_SVR4 + 193) -#define SYS_SVR4_reserved57 (SYS_SVR4 + 194) -#define SYS_SVR4_reserved58 (SYS_SVR4 + 195) -#define SYS_SVR4_reserved59 (SYS_SVR4 + 196) -#define SYS_SVR4_reserved60 (SYS_SVR4 + 197) -#define SYS_SVR4_reserved61 (SYS_SVR4 + 198) -#define SYS_SVR4_reserved62 (SYS_SVR4 + 199) -#define SYS_SVR4_reserved63 (SYS_SVR4 + 200) -#define SYS_SVR4_aread (SYS_SVR4 + 201) -#define SYS_SVR4_awrite (SYS_SVR4 + 202) -#define SYS_SVR4_listio (SYS_SVR4 + 203) -#define SYS_SVR4_mips_acancel (SYS_SVR4 + 204) -#define SYS_SVR4_astatus (SYS_SVR4 + 205) -#define SYS_SVR4_await (SYS_SVR4 + 206) -#define SYS_SVR4_areadv (SYS_SVR4 + 207) -#define SYS_SVR4_awritev (SYS_SVR4 + 208) -#define SYS_SVR4_MIPS_reserved1 (SYS_SVR4 + 209) -#define SYS_SVR4_MIPS_reserved2 (SYS_SVR4 + 210) -#define SYS_SVR4_MIPS_reserved3 (SYS_SVR4 + 211) -#define SYS_SVR4_MIPS_reserved4 (SYS_SVR4 + 212) -#define SYS_SVR4_MIPS_reserved5 (SYS_SVR4 + 213) -#define SYS_SVR4_MIPS_reserved6 (SYS_SVR4 + 214) -#define SYS_SVR4_MIPS_reserved7 (SYS_SVR4 + 215) -#define SYS_SVR4_MIPS_reserved8 (SYS_SVR4 + 216) -#define SYS_SVR4_MIPS_reserved9 (SYS_SVR4 + 217) -#define SYS_SVR4_MIPS_reserved10 (SYS_SVR4 + 218) -#define SYS_SVR4_MIPS_reserved11 (SYS_SVR4 + 219) -#define SYS_SVR4_MIPS_reserved12 (SYS_SVR4 + 220) -#define SYS_SVR4_CDC_reserved1 (SYS_SVR4 + 221) -#define SYS_SVR4_CDC_reserved2 (SYS_SVR4 + 222) -#define SYS_SVR4_CDC_reserved3 (SYS_SVR4 + 223) -#define SYS_SVR4_CDC_reserved4 (SYS_SVR4 + 224) -#define SYS_SVR4_CDC_reserved5 (SYS_SVR4 + 225) -#define SYS_SVR4_CDC_reserved6 (SYS_SVR4 + 226) -#define SYS_SVR4_CDC_reserved7 (SYS_SVR4 + 227) -#define SYS_SVR4_CDC_reserved8 (SYS_SVR4 + 228) -#define SYS_SVR4_CDC_reserved9 (SYS_SVR4 + 229) -#define SYS_SVR4_CDC_reserved10 (SYS_SVR4 + 230) -#define SYS_SVR4_CDC_reserved11 (SYS_SVR4 + 231) -#define SYS_SVR4_CDC_reserved12 (SYS_SVR4 + 232) -#define SYS_SVR4_CDC_reserved13 (SYS_SVR4 + 233) -#define SYS_SVR4_CDC_reserved14 (SYS_SVR4 + 234) -#define SYS_SVR4_CDC_reserved15 (SYS_SVR4 + 235) -#define SYS_SVR4_CDC_reserved16 (SYS_SVR4 + 236) -#define SYS_SVR4_CDC_reserved17 (SYS_SVR4 + 237) -#define SYS_SVR4_CDC_reserved18 (SYS_SVR4 + 238) -#define SYS_SVR4_CDC_reserved19 (SYS_SVR4 + 239) -#define SYS_SVR4_CDC_reserved20 (SYS_SVR4 + 240) - -/* - * SYS V syscalls are in the range from 1000 to 1999 - */ -#define SYS_SYSV 1000 -#define SYS_SYSV_syscall (SYS_SYSV + 0) -#define SYS_SYSV_exit (SYS_SYSV + 1) -#define SYS_SYSV_fork (SYS_SYSV + 2) -#define SYS_SYSV_read (SYS_SYSV + 3) -#define SYS_SYSV_write (SYS_SYSV + 4) -#define SYS_SYSV_open (SYS_SYSV + 5) -#define SYS_SYSV_close (SYS_SYSV + 6) -#define SYS_SYSV_wait (SYS_SYSV + 7) -#define SYS_SYSV_creat (SYS_SYSV + 8) -#define SYS_SYSV_link (SYS_SYSV + 9) -#define SYS_SYSV_unlink (SYS_SYSV + 10) -#define SYS_SYSV_execv (SYS_SYSV + 11) -#define SYS_SYSV_chdir (SYS_SYSV + 12) -#define SYS_SYSV_time (SYS_SYSV + 13) -#define SYS_SYSV_mknod (SYS_SYSV + 14) -#define SYS_SYSV_chmod (SYS_SYSV + 15) -#define SYS_SYSV_chown (SYS_SYSV + 16) -#define SYS_SYSV_brk (SYS_SYSV + 17) -#define SYS_SYSV_stat (SYS_SYSV + 18) -#define SYS_SYSV_lseek (SYS_SYSV + 19) -#define SYS_SYSV_getpid (SYS_SYSV + 20) -#define SYS_SYSV_mount (SYS_SYSV + 21) -#define SYS_SYSV_umount (SYS_SYSV + 22) -#define SYS_SYSV_setuid (SYS_SYSV + 23) -#define SYS_SYSV_getuid (SYS_SYSV + 24) -#define SYS_SYSV_stime (SYS_SYSV + 25) -#define SYS_SYSV_ptrace (SYS_SYSV + 26) -#define SYS_SYSV_alarm (SYS_SYSV + 27) -#define SYS_SYSV_fstat (SYS_SYSV + 28) -#define SYS_SYSV_pause (SYS_SYSV + 29) -#define SYS_SYSV_utime (SYS_SYSV + 30) -#define SYS_SYSV_stty (SYS_SYSV + 31) -#define SYS_SYSV_gtty (SYS_SYSV + 32) -#define SYS_SYSV_access (SYS_SYSV + 33) -#define SYS_SYSV_nice (SYS_SYSV + 34) -#define SYS_SYSV_statfs (SYS_SYSV + 35) -#define SYS_SYSV_sync (SYS_SYSV + 36) -#define SYS_SYSV_kill (SYS_SYSV + 37) -#define SYS_SYSV_fstatfs (SYS_SYSV + 38) -#define SYS_SYSV_setpgrp (SYS_SYSV + 39) -#define SYS_SYSV_syssgi (SYS_SYSV + 40) -#define SYS_SYSV_dup (SYS_SYSV + 41) -#define SYS_SYSV_pipe (SYS_SYSV + 42) -#define SYS_SYSV_times (SYS_SYSV + 43) -#define SYS_SYSV_profil (SYS_SYSV + 44) -#define SYS_SYSV_plock (SYS_SYSV + 45) -#define SYS_SYSV_setgid (SYS_SYSV + 46) -#define SYS_SYSV_getgid (SYS_SYSV + 47) -#define SYS_SYSV_sig (SYS_SYSV + 48) -#define SYS_SYSV_msgsys (SYS_SYSV + 49) -#define SYS_SYSV_sysmips (SYS_SYSV + 50) -#define SYS_SYSV_acct (SYS_SYSV + 51) -#define SYS_SYSV_shmsys (SYS_SYSV + 52) -#define SYS_SYSV_semsys (SYS_SYSV + 53) -#define SYS_SYSV_ioctl (SYS_SYSV + 54) -#define SYS_SYSV_uadmin (SYS_SYSV + 55) -#define SYS_SYSV_sysmp (SYS_SYSV + 56) -#define SYS_SYSV_utssys (SYS_SYSV + 57) -#define SYS_SYSV_USG_reserved1 (SYS_SYSV + 58) -#define SYS_SYSV_execve (SYS_SYSV + 59) -#define SYS_SYSV_umask (SYS_SYSV + 60) -#define SYS_SYSV_chroot (SYS_SYSV + 61) -#define SYS_SYSV_fcntl (SYS_SYSV + 62) -#define SYS_SYSV_ulimit (SYS_SYSV + 63) -#define SYS_SYSV_SAFARI4_reserved1 (SYS_SYSV + 64) -#define SYS_SYSV_SAFARI4_reserved2 (SYS_SYSV + 65) -#define SYS_SYSV_SAFARI4_reserved3 (SYS_SYSV + 66) -#define SYS_SYSV_SAFARI4_reserved4 (SYS_SYSV + 67) -#define SYS_SYSV_SAFARI4_reserved5 (SYS_SYSV + 68) -#define SYS_SYSV_SAFARI4_reserved6 (SYS_SYSV + 69) -#define SYS_SYSV_advfs (SYS_SYSV + 70) -#define SYS_SYSV_unadvfs (SYS_SYSV + 71) -#define SYS_SYSV_rmount (SYS_SYSV + 72) -#define SYS_SYSV_rumount (SYS_SYSV + 73) -#define SYS_SYSV_rfstart (SYS_SYSV + 74) -#define SYS_SYSV_getrlimit64 (SYS_SYSV + 75) -#define SYS_SYSV_setrlimit64 (SYS_SYSV + 76) -#define SYS_SYSV_nanosleep (SYS_SYSV + 77) -#define SYS_SYSV_lseek64 (SYS_SYSV + 78) -#define SYS_SYSV_rmdir (SYS_SYSV + 79) -#define SYS_SYSV_mkdir (SYS_SYSV + 80) -#define SYS_SYSV_getdents (SYS_SYSV + 81) -#define SYS_SYSV_sginap (SYS_SYSV + 82) -#define SYS_SYSV_sgikopt (SYS_SYSV + 83) -#define SYS_SYSV_sysfs (SYS_SYSV + 84) -#define SYS_SYSV_getmsg (SYS_SYSV + 85) -#define SYS_SYSV_putmsg (SYS_SYSV + 86) -#define SYS_SYSV_poll (SYS_SYSV + 87) -#define SYS_SYSV_sigreturn (SYS_SYSV + 88) -#define SYS_SYSV_accept (SYS_SYSV + 89) -#define SYS_SYSV_bind (SYS_SYSV + 90) -#define SYS_SYSV_connect (SYS_SYSV + 91) -#define SYS_SYSV_gethostid (SYS_SYSV + 92) -#define SYS_SYSV_getpeername (SYS_SYSV + 93) -#define SYS_SYSV_getsockname (SYS_SYSV + 94) -#define SYS_SYSV_getsockopt (SYS_SYSV + 95) -#define SYS_SYSV_listen (SYS_SYSV + 96) -#define SYS_SYSV_recv (SYS_SYSV + 97) -#define SYS_SYSV_recvfrom (SYS_SYSV + 98) -#define SYS_SYSV_recvmsg (SYS_SYSV + 99) -#define SYS_SYSV_select (SYS_SYSV + 100) -#define SYS_SYSV_send (SYS_SYSV + 101) -#define SYS_SYSV_sendmsg (SYS_SYSV + 102) -#define SYS_SYSV_sendto (SYS_SYSV + 103) -#define SYS_SYSV_sethostid (SYS_SYSV + 104) -#define SYS_SYSV_setsockopt (SYS_SYSV + 105) -#define SYS_SYSV_shutdown (SYS_SYSV + 106) -#define SYS_SYSV_socket (SYS_SYSV + 107) -#define SYS_SYSV_gethostname (SYS_SYSV + 108) -#define SYS_SYSV_sethostname (SYS_SYSV + 109) -#define SYS_SYSV_getdomainname (SYS_SYSV + 110) -#define SYS_SYSV_setdomainname (SYS_SYSV + 111) -#define SYS_SYSV_truncate (SYS_SYSV + 112) -#define SYS_SYSV_ftruncate (SYS_SYSV + 113) -#define SYS_SYSV_rename (SYS_SYSV + 114) -#define SYS_SYSV_symlink (SYS_SYSV + 115) -#define SYS_SYSV_readlink (SYS_SYSV + 116) -#define SYS_SYSV_lstat (SYS_SYSV + 117) -#define SYS_SYSV_nfsmount (SYS_SYSV + 118) -#define SYS_SYSV_nfssvc (SYS_SYSV + 119) -#define SYS_SYSV_getfh (SYS_SYSV + 120) -#define SYS_SYSV_async_daemon (SYS_SYSV + 121) -#define SYS_SYSV_exportfs (SYS_SYSV + 122) -#define SYS_SYSV_setregid (SYS_SYSV + 123) -#define SYS_SYSV_setreuid (SYS_SYSV + 124) -#define SYS_SYSV_getitimer (SYS_SYSV + 125) -#define SYS_SYSV_setitimer (SYS_SYSV + 126) -#define SYS_SYSV_adjtime (SYS_SYSV + 127) -#define SYS_SYSV_BSD_getime (SYS_SYSV + 128) -#define SYS_SYSV_sproc (SYS_SYSV + 129) -#define SYS_SYSV_prctl (SYS_SYSV + 130) -#define SYS_SYSV_procblk (SYS_SYSV + 131) -#define SYS_SYSV_sprocsp (SYS_SYSV + 132) -#define SYS_SYSV_sgigsc (SYS_SYSV + 133) -#define SYS_SYSV_mmap (SYS_SYSV + 134) -#define SYS_SYSV_munmap (SYS_SYSV + 135) -#define SYS_SYSV_mprotect (SYS_SYSV + 136) -#define SYS_SYSV_msync (SYS_SYSV + 137) -#define SYS_SYSV_madvise (SYS_SYSV + 138) -#define SYS_SYSV_pagelock (SYS_SYSV + 139) -#define SYS_SYSV_getpagesize (SYS_SYSV + 140) -#define SYS_SYSV_quotactl (SYS_SYSV + 141) -#define SYS_SYSV_libdetach (SYS_SYSV + 142) -#define SYS_SYSV_BSDgetpgrp (SYS_SYSV + 143) -#define SYS_SYSV_BSDsetpgrp (SYS_SYSV + 144) -#define SYS_SYSV_vhangup (SYS_SYSV + 145) -#define SYS_SYSV_fsync (SYS_SYSV + 146) -#define SYS_SYSV_fchdir (SYS_SYSV + 147) -#define SYS_SYSV_getrlimit (SYS_SYSV + 148) -#define SYS_SYSV_setrlimit (SYS_SYSV + 149) -#define SYS_SYSV_cacheflush (SYS_SYSV + 150) -#define SYS_SYSV_cachectl (SYS_SYSV + 151) -#define SYS_SYSV_fchown (SYS_SYSV + 152) -#define SYS_SYSV_fchmod (SYS_SYSV + 153) -#define SYS_SYSV_wait3 (SYS_SYSV + 154) -#define SYS_SYSV_socketpair (SYS_SYSV + 155) -#define SYS_SYSV_sysinfo (SYS_SYSV + 156) -#define SYS_SYSV_nuname (SYS_SYSV + 157) -#define SYS_SYSV_xstat (SYS_SYSV + 158) -#define SYS_SYSV_lxstat (SYS_SYSV + 159) -#define SYS_SYSV_fxstat (SYS_SYSV + 160) -#define SYS_SYSV_xmknod (SYS_SYSV + 161) -#define SYS_SYSV_ksigaction (SYS_SYSV + 162) -#define SYS_SYSV_sigpending (SYS_SYSV + 163) -#define SYS_SYSV_sigprocmask (SYS_SYSV + 164) -#define SYS_SYSV_sigsuspend (SYS_SYSV + 165) -#define SYS_SYSV_sigpoll (SYS_SYSV + 166) -#define SYS_SYSV_swapctl (SYS_SYSV + 167) -#define SYS_SYSV_getcontext (SYS_SYSV + 168) -#define SYS_SYSV_setcontext (SYS_SYSV + 169) -#define SYS_SYSV_waitsys (SYS_SYSV + 170) -#define SYS_SYSV_sigstack (SYS_SYSV + 171) -#define SYS_SYSV_sigaltstack (SYS_SYSV + 172) -#define SYS_SYSV_sigsendset (SYS_SYSV + 173) -#define SYS_SYSV_statvfs (SYS_SYSV + 174) -#define SYS_SYSV_fstatvfs (SYS_SYSV + 175) -#define SYS_SYSV_getpmsg (SYS_SYSV + 176) -#define SYS_SYSV_putpmsg (SYS_SYSV + 177) -#define SYS_SYSV_lchown (SYS_SYSV + 178) -#define SYS_SYSV_priocntl (SYS_SYSV + 179) -#define SYS_SYSV_ksigqueue (SYS_SYSV + 180) -#define SYS_SYSV_readv (SYS_SYSV + 181) -#define SYS_SYSV_writev (SYS_SYSV + 182) -#define SYS_SYSV_truncate64 (SYS_SYSV + 183) -#define SYS_SYSV_ftruncate64 (SYS_SYSV + 184) -#define SYS_SYSV_mmap64 (SYS_SYSV + 185) -#define SYS_SYSV_dmi (SYS_SYSV + 186) -#define SYS_SYSV_pread (SYS_SYSV + 187) -#define SYS_SYSV_pwrite (SYS_SYSV + 188) - -/* - * BSD 4.3 syscalls are in the range from 2000 to 2999 - */ -#define SYS_BSD43 2000 -#define SYS_BSD43_syscall (SYS_BSD43 + 0) -#define SYS_BSD43_exit (SYS_BSD43 + 1) -#define SYS_BSD43_fork (SYS_BSD43 + 2) -#define SYS_BSD43_read (SYS_BSD43 + 3) -#define SYS_BSD43_write (SYS_BSD43 + 4) -#define SYS_BSD43_open (SYS_BSD43 + 5) -#define SYS_BSD43_close (SYS_BSD43 + 6) -#define SYS_BSD43_wait (SYS_BSD43 + 7) -#define SYS_BSD43_creat (SYS_BSD43 + 8) -#define SYS_BSD43_link (SYS_BSD43 + 9) -#define SYS_BSD43_unlink (SYS_BSD43 + 10) -#define SYS_BSD43_exec (SYS_BSD43 + 11) -#define SYS_BSD43_chdir (SYS_BSD43 + 12) -#define SYS_BSD43_time (SYS_BSD43 + 13) -#define SYS_BSD43_mknod (SYS_BSD43 + 14) -#define SYS_BSD43_chmod (SYS_BSD43 + 15) -#define SYS_BSD43_chown (SYS_BSD43 + 16) -#define SYS_BSD43_sbreak (SYS_BSD43 + 17) -#define SYS_BSD43_oldstat (SYS_BSD43 + 18) -#define SYS_BSD43_lseek (SYS_BSD43 + 19) -#define SYS_BSD43_getpid (SYS_BSD43 + 20) -#define SYS_BSD43_oldmount (SYS_BSD43 + 21) -#define SYS_BSD43_umount (SYS_BSD43 + 22) -#define SYS_BSD43_setuid (SYS_BSD43 + 23) -#define SYS_BSD43_getuid (SYS_BSD43 + 24) -#define SYS_BSD43_stime (SYS_BSD43 + 25) -#define SYS_BSD43_ptrace (SYS_BSD43 + 26) -#define SYS_BSD43_alarm (SYS_BSD43 + 27) -#define SYS_BSD43_oldfstat (SYS_BSD43 + 28) -#define SYS_BSD43_pause (SYS_BSD43 + 29) -#define SYS_BSD43_utime (SYS_BSD43 + 30) -#define SYS_BSD43_stty (SYS_BSD43 + 31) -#define SYS_BSD43_gtty (SYS_BSD43 + 32) -#define SYS_BSD43_access (SYS_BSD43 + 33) -#define SYS_BSD43_nice (SYS_BSD43 + 34) -#define SYS_BSD43_ftime (SYS_BSD43 + 35) -#define SYS_BSD43_sync (SYS_BSD43 + 36) -#define SYS_BSD43_kill (SYS_BSD43 + 37) -#define SYS_BSD43_stat (SYS_BSD43 + 38) -#define SYS_BSD43_oldsetpgrp (SYS_BSD43 + 39) -#define SYS_BSD43_lstat (SYS_BSD43 + 40) -#define SYS_BSD43_dup (SYS_BSD43 + 41) -#define SYS_BSD43_pipe (SYS_BSD43 + 42) -#define SYS_BSD43_times (SYS_BSD43 + 43) -#define SYS_BSD43_profil (SYS_BSD43 + 44) -#define SYS_BSD43_msgsys (SYS_BSD43 + 45) -#define SYS_BSD43_setgid (SYS_BSD43 + 46) -#define SYS_BSD43_getgid (SYS_BSD43 + 47) -#define SYS_BSD43_ssig (SYS_BSD43 + 48) -#define SYS_BSD43_reserved1 (SYS_BSD43 + 49) -#define SYS_BSD43_reserved2 (SYS_BSD43 + 50) -#define SYS_BSD43_sysacct (SYS_BSD43 + 51) -#define SYS_BSD43_phys (SYS_BSD43 + 52) -#define SYS_BSD43_lock (SYS_BSD43 + 53) -#define SYS_BSD43_ioctl (SYS_BSD43 + 54) -#define SYS_BSD43_reboot (SYS_BSD43 + 55) -#define SYS_BSD43_mpxchan (SYS_BSD43 + 56) -#define SYS_BSD43_symlink (SYS_BSD43 + 57) -#define SYS_BSD43_readlink (SYS_BSD43 + 58) -#define SYS_BSD43_execve (SYS_BSD43 + 59) -#define SYS_BSD43_umask (SYS_BSD43 + 60) -#define SYS_BSD43_chroot (SYS_BSD43 + 61) -#define SYS_BSD43_fstat (SYS_BSD43 + 62) -#define SYS_BSD43_reserved3 (SYS_BSD43 + 63) -#define SYS_BSD43_getpagesize (SYS_BSD43 + 64) -#define SYS_BSD43_mremap (SYS_BSD43 + 65) -#define SYS_BSD43_vfork (SYS_BSD43 + 66) -#define SYS_BSD43_vread (SYS_BSD43 + 67) -#define SYS_BSD43_vwrite (SYS_BSD43 + 68) -#define SYS_BSD43_sbrk (SYS_BSD43 + 69) -#define SYS_BSD43_sstk (SYS_BSD43 + 70) -#define SYS_BSD43_mmap (SYS_BSD43 + 71) -#define SYS_BSD43_vadvise (SYS_BSD43 + 72) -#define SYS_BSD43_munmap (SYS_BSD43 + 73) -#define SYS_BSD43_mprotect (SYS_BSD43 + 74) -#define SYS_BSD43_madvise (SYS_BSD43 + 75) -#define SYS_BSD43_vhangup (SYS_BSD43 + 76) -#define SYS_BSD43_vlimit (SYS_BSD43 + 77) -#define SYS_BSD43_mincore (SYS_BSD43 + 78) -#define SYS_BSD43_getgroups (SYS_BSD43 + 79) -#define SYS_BSD43_setgroups (SYS_BSD43 + 80) -#define SYS_BSD43_getpgrp (SYS_BSD43 + 81) -#define SYS_BSD43_setpgrp (SYS_BSD43 + 82) -#define SYS_BSD43_setitimer (SYS_BSD43 + 83) -#define SYS_BSD43_wait3 (SYS_BSD43 + 84) -#define SYS_BSD43_swapon (SYS_BSD43 + 85) -#define SYS_BSD43_getitimer (SYS_BSD43 + 86) -#define SYS_BSD43_gethostname (SYS_BSD43 + 87) -#define SYS_BSD43_sethostname (SYS_BSD43 + 88) -#define SYS_BSD43_getdtablesize (SYS_BSD43 + 89) -#define SYS_BSD43_dup2 (SYS_BSD43 + 90) -#define SYS_BSD43_getdopt (SYS_BSD43 + 91) -#define SYS_BSD43_fcntl (SYS_BSD43 + 92) -#define SYS_BSD43_select (SYS_BSD43 + 93) -#define SYS_BSD43_setdopt (SYS_BSD43 + 94) -#define SYS_BSD43_fsync (SYS_BSD43 + 95) -#define SYS_BSD43_setpriority (SYS_BSD43 + 96) -#define SYS_BSD43_socket (SYS_BSD43 + 97) -#define SYS_BSD43_connect (SYS_BSD43 + 98) -#define SYS_BSD43_oldaccept (SYS_BSD43 + 99) -#define SYS_BSD43_getpriority (SYS_BSD43 + 100) -#define SYS_BSD43_send (SYS_BSD43 + 101) -#define SYS_BSD43_recv (SYS_BSD43 + 102) -#define SYS_BSD43_sigreturn (SYS_BSD43 + 103) -#define SYS_BSD43_bind (SYS_BSD43 + 104) -#define SYS_BSD43_setsockopt (SYS_BSD43 + 105) -#define SYS_BSD43_listen (SYS_BSD43 + 106) -#define SYS_BSD43_vtimes (SYS_BSD43 + 107) -#define SYS_BSD43_sigvec (SYS_BSD43 + 108) -#define SYS_BSD43_sigblock (SYS_BSD43 + 109) -#define SYS_BSD43_sigsetmask (SYS_BSD43 + 110) -#define SYS_BSD43_sigpause (SYS_BSD43 + 111) -#define SYS_BSD43_sigstack (SYS_BSD43 + 112) -#define SYS_BSD43_oldrecvmsg (SYS_BSD43 + 113) -#define SYS_BSD43_oldsendmsg (SYS_BSD43 + 114) -#define SYS_BSD43_vtrace (SYS_BSD43 + 115) -#define SYS_BSD43_gettimeofday (SYS_BSD43 + 116) -#define SYS_BSD43_getrusage (SYS_BSD43 + 117) -#define SYS_BSD43_getsockopt (SYS_BSD43 + 118) -#define SYS_BSD43_reserved4 (SYS_BSD43 + 119) -#define SYS_BSD43_readv (SYS_BSD43 + 120) -#define SYS_BSD43_writev (SYS_BSD43 + 121) -#define SYS_BSD43_settimeofday (SYS_BSD43 + 122) -#define SYS_BSD43_fchown (SYS_BSD43 + 123) -#define SYS_BSD43_fchmod (SYS_BSD43 + 124) -#define SYS_BSD43_oldrecvfrom (SYS_BSD43 + 125) -#define SYS_BSD43_setreuid (SYS_BSD43 + 126) -#define SYS_BSD43_setregid (SYS_BSD43 + 127) -#define SYS_BSD43_rename (SYS_BSD43 + 128) -#define SYS_BSD43_truncate (SYS_BSD43 + 129) -#define SYS_BSD43_ftruncate (SYS_BSD43 + 130) -#define SYS_BSD43_flock (SYS_BSD43 + 131) -#define SYS_BSD43_semsys (SYS_BSD43 + 132) -#define SYS_BSD43_sendto (SYS_BSD43 + 133) -#define SYS_BSD43_shutdown (SYS_BSD43 + 134) -#define SYS_BSD43_socketpair (SYS_BSD43 + 135) -#define SYS_BSD43_mkdir (SYS_BSD43 + 136) -#define SYS_BSD43_rmdir (SYS_BSD43 + 137) -#define SYS_BSD43_utimes (SYS_BSD43 + 138) -#define SYS_BSD43_sigcleanup (SYS_BSD43 + 139) -#define SYS_BSD43_adjtime (SYS_BSD43 + 140) -#define SYS_BSD43_oldgetpeername (SYS_BSD43 + 141) -#define SYS_BSD43_gethostid (SYS_BSD43 + 142) -#define SYS_BSD43_sethostid (SYS_BSD43 + 143) -#define SYS_BSD43_getrlimit (SYS_BSD43 + 144) -#define SYS_BSD43_setrlimit (SYS_BSD43 + 145) -#define SYS_BSD43_killpg (SYS_BSD43 + 146) -#define SYS_BSD43_shmsys (SYS_BSD43 + 147) -#define SYS_BSD43_quota (SYS_BSD43 + 148) -#define SYS_BSD43_qquota (SYS_BSD43 + 149) -#define SYS_BSD43_oldgetsockname (SYS_BSD43 + 150) -#define SYS_BSD43_sysmips (SYS_BSD43 + 151) -#define SYS_BSD43_cacheflush (SYS_BSD43 + 152) -#define SYS_BSD43_cachectl (SYS_BSD43 + 153) -#define SYS_BSD43_debug (SYS_BSD43 + 154) -#define SYS_BSD43_reserved5 (SYS_BSD43 + 155) -#define SYS_BSD43_reserved6 (SYS_BSD43 + 156) -#define SYS_BSD43_nfs_mount (SYS_BSD43 + 157) -#define SYS_BSD43_nfs_svc (SYS_BSD43 + 158) -#define SYS_BSD43_getdirentries (SYS_BSD43 + 159) -#define SYS_BSD43_statfs (SYS_BSD43 + 160) -#define SYS_BSD43_fstatfs (SYS_BSD43 + 161) -#define SYS_BSD43_unmount (SYS_BSD43 + 162) -#define SYS_BSD43_async_daemon (SYS_BSD43 + 163) -#define SYS_BSD43_nfs_getfh (SYS_BSD43 + 164) -#define SYS_BSD43_getdomainname (SYS_BSD43 + 165) -#define SYS_BSD43_setdomainname (SYS_BSD43 + 166) -#define SYS_BSD43_pcfs_mount (SYS_BSD43 + 167) -#define SYS_BSD43_quotactl (SYS_BSD43 + 168) -#define SYS_BSD43_oldexportfs (SYS_BSD43 + 169) -#define SYS_BSD43_smount (SYS_BSD43 + 170) -#define SYS_BSD43_mipshwconf (SYS_BSD43 + 171) -#define SYS_BSD43_exportfs (SYS_BSD43 + 172) -#define SYS_BSD43_nfsfh_open (SYS_BSD43 + 173) -#define SYS_BSD43_libattach (SYS_BSD43 + 174) -#define SYS_BSD43_libdetach (SYS_BSD43 + 175) -#define SYS_BSD43_accept (SYS_BSD43 + 176) -#define SYS_BSD43_reserved7 (SYS_BSD43 + 177) -#define SYS_BSD43_reserved8 (SYS_BSD43 + 178) -#define SYS_BSD43_recvmsg (SYS_BSD43 + 179) -#define SYS_BSD43_recvfrom (SYS_BSD43 + 180) -#define SYS_BSD43_sendmsg (SYS_BSD43 + 181) -#define SYS_BSD43_getpeername (SYS_BSD43 + 182) -#define SYS_BSD43_getsockname (SYS_BSD43 + 183) -#define SYS_BSD43_aread (SYS_BSD43 + 184) -#define SYS_BSD43_awrite (SYS_BSD43 + 185) -#define SYS_BSD43_listio (SYS_BSD43 + 186) -#define SYS_BSD43_acancel (SYS_BSD43 + 187) -#define SYS_BSD43_astatus (SYS_BSD43 + 188) -#define SYS_BSD43_await (SYS_BSD43 + 189) -#define SYS_BSD43_areadv (SYS_BSD43 + 190) -#define SYS_BSD43_awritev (SYS_BSD43 + 191) - -/* - * POSIX syscalls are in the range from 3000 to 3999 - */ -#define SYS_POSIX 3000 -#define SYS_POSIX_syscall (SYS_POSIX + 0) -#define SYS_POSIX_exit (SYS_POSIX + 1) -#define SYS_POSIX_fork (SYS_POSIX + 2) -#define SYS_POSIX_read (SYS_POSIX + 3) -#define SYS_POSIX_write (SYS_POSIX + 4) -#define SYS_POSIX_open (SYS_POSIX + 5) -#define SYS_POSIX_close (SYS_POSIX + 6) -#define SYS_POSIX_wait (SYS_POSIX + 7) -#define SYS_POSIX_creat (SYS_POSIX + 8) -#define SYS_POSIX_link (SYS_POSIX + 9) -#define SYS_POSIX_unlink (SYS_POSIX + 10) -#define SYS_POSIX_exec (SYS_POSIX + 11) -#define SYS_POSIX_chdir (SYS_POSIX + 12) -#define SYS_POSIX_gtime (SYS_POSIX + 13) -#define SYS_POSIX_mknod (SYS_POSIX + 14) -#define SYS_POSIX_chmod (SYS_POSIX + 15) -#define SYS_POSIX_chown (SYS_POSIX + 16) -#define SYS_POSIX_sbreak (SYS_POSIX + 17) -#define SYS_POSIX_stat (SYS_POSIX + 18) -#define SYS_POSIX_lseek (SYS_POSIX + 19) -#define SYS_POSIX_getpid (SYS_POSIX + 20) -#define SYS_POSIX_mount (SYS_POSIX + 21) -#define SYS_POSIX_umount (SYS_POSIX + 22) -#define SYS_POSIX_setuid (SYS_POSIX + 23) -#define SYS_POSIX_getuid (SYS_POSIX + 24) -#define SYS_POSIX_stime (SYS_POSIX + 25) -#define SYS_POSIX_ptrace (SYS_POSIX + 26) -#define SYS_POSIX_alarm (SYS_POSIX + 27) -#define SYS_POSIX_fstat (SYS_POSIX + 28) -#define SYS_POSIX_pause (SYS_POSIX + 29) -#define SYS_POSIX_utime (SYS_POSIX + 30) -#define SYS_POSIX_stty (SYS_POSIX + 31) -#define SYS_POSIX_gtty (SYS_POSIX + 32) -#define SYS_POSIX_access (SYS_POSIX + 33) -#define SYS_POSIX_nice (SYS_POSIX + 34) -#define SYS_POSIX_statfs (SYS_POSIX + 35) -#define SYS_POSIX_sync (SYS_POSIX + 36) -#define SYS_POSIX_kill (SYS_POSIX + 37) -#define SYS_POSIX_fstatfs (SYS_POSIX + 38) -#define SYS_POSIX_getpgrp (SYS_POSIX + 39) -#define SYS_POSIX_syssgi (SYS_POSIX + 40) -#define SYS_POSIX_dup (SYS_POSIX + 41) -#define SYS_POSIX_pipe (SYS_POSIX + 42) -#define SYS_POSIX_times (SYS_POSIX + 43) -#define SYS_POSIX_profil (SYS_POSIX + 44) -#define SYS_POSIX_lock (SYS_POSIX + 45) -#define SYS_POSIX_setgid (SYS_POSIX + 46) -#define SYS_POSIX_getgid (SYS_POSIX + 47) -#define SYS_POSIX_sig (SYS_POSIX + 48) -#define SYS_POSIX_msgsys (SYS_POSIX + 49) -#define SYS_POSIX_sysmips (SYS_POSIX + 50) -#define SYS_POSIX_sysacct (SYS_POSIX + 51) -#define SYS_POSIX_shmsys (SYS_POSIX + 52) -#define SYS_POSIX_semsys (SYS_POSIX + 53) -#define SYS_POSIX_ioctl (SYS_POSIX + 54) -#define SYS_POSIX_uadmin (SYS_POSIX + 55) -#define SYS_POSIX_exch (SYS_POSIX + 56) -#define SYS_POSIX_utssys (SYS_POSIX + 57) -#define SYS_POSIX_USG_reserved1 (SYS_POSIX + 58) -#define SYS_POSIX_exece (SYS_POSIX + 59) -#define SYS_POSIX_umask (SYS_POSIX + 60) -#define SYS_POSIX_chroot (SYS_POSIX + 61) -#define SYS_POSIX_fcntl (SYS_POSIX + 62) -#define SYS_POSIX_ulimit (SYS_POSIX + 63) -#define SYS_POSIX_SAFARI4_reserved1 (SYS_POSIX + 64) -#define SYS_POSIX_SAFARI4_reserved2 (SYS_POSIX + 65) -#define SYS_POSIX_SAFARI4_reserved3 (SYS_POSIX + 66) -#define SYS_POSIX_SAFARI4_reserved4 (SYS_POSIX + 67) -#define SYS_POSIX_SAFARI4_reserved5 (SYS_POSIX + 68) -#define SYS_POSIX_SAFARI4_reserved6 (SYS_POSIX + 69) -#define SYS_POSIX_advfs (SYS_POSIX + 70) -#define SYS_POSIX_unadvfs (SYS_POSIX + 71) -#define SYS_POSIX_rmount (SYS_POSIX + 72) -#define SYS_POSIX_rumount (SYS_POSIX + 73) -#define SYS_POSIX_rfstart (SYS_POSIX + 74) -#define SYS_POSIX_reserved1 (SYS_POSIX + 75) -#define SYS_POSIX_rdebug (SYS_POSIX + 76) -#define SYS_POSIX_rfstop (SYS_POSIX + 77) -#define SYS_POSIX_rfsys (SYS_POSIX + 78) -#define SYS_POSIX_rmdir (SYS_POSIX + 79) -#define SYS_POSIX_mkdir (SYS_POSIX + 80) -#define SYS_POSIX_getdents (SYS_POSIX + 81) -#define SYS_POSIX_sginap (SYS_POSIX + 82) -#define SYS_POSIX_sgikopt (SYS_POSIX + 83) -#define SYS_POSIX_sysfs (SYS_POSIX + 84) -#define SYS_POSIX_getmsg (SYS_POSIX + 85) -#define SYS_POSIX_putmsg (SYS_POSIX + 86) -#define SYS_POSIX_poll (SYS_POSIX + 87) -#define SYS_POSIX_sigreturn (SYS_POSIX + 88) -#define SYS_POSIX_accept (SYS_POSIX + 89) -#define SYS_POSIX_bind (SYS_POSIX + 90) -#define SYS_POSIX_connect (SYS_POSIX + 91) -#define SYS_POSIX_gethostid (SYS_POSIX + 92) -#define SYS_POSIX_getpeername (SYS_POSIX + 93) -#define SYS_POSIX_getsockname (SYS_POSIX + 94) -#define SYS_POSIX_getsockopt (SYS_POSIX + 95) -#define SYS_POSIX_listen (SYS_POSIX + 96) -#define SYS_POSIX_recv (SYS_POSIX + 97) -#define SYS_POSIX_recvfrom (SYS_POSIX + 98) -#define SYS_POSIX_recvmsg (SYS_POSIX + 99) -#define SYS_POSIX_select (SYS_POSIX + 100) -#define SYS_POSIX_send (SYS_POSIX + 101) -#define SYS_POSIX_sendmsg (SYS_POSIX + 102) -#define SYS_POSIX_sendto (SYS_POSIX + 103) -#define SYS_POSIX_sethostid (SYS_POSIX + 104) -#define SYS_POSIX_setsockopt (SYS_POSIX + 105) -#define SYS_POSIX_shutdown (SYS_POSIX + 106) -#define SYS_POSIX_socket (SYS_POSIX + 107) -#define SYS_POSIX_gethostname (SYS_POSIX + 108) -#define SYS_POSIX_sethostname (SYS_POSIX + 109) -#define SYS_POSIX_getdomainname (SYS_POSIX + 110) -#define SYS_POSIX_setdomainname (SYS_POSIX + 111) -#define SYS_POSIX_truncate (SYS_POSIX + 112) -#define SYS_POSIX_ftruncate (SYS_POSIX + 113) -#define SYS_POSIX_rename (SYS_POSIX + 114) -#define SYS_POSIX_symlink (SYS_POSIX + 115) -#define SYS_POSIX_readlink (SYS_POSIX + 116) -#define SYS_POSIX_lstat (SYS_POSIX + 117) -#define SYS_POSIX_nfs_mount (SYS_POSIX + 118) -#define SYS_POSIX_nfs_svc (SYS_POSIX + 119) -#define SYS_POSIX_nfs_getfh (SYS_POSIX + 120) -#define SYS_POSIX_async_daemon (SYS_POSIX + 121) -#define SYS_POSIX_exportfs (SYS_POSIX + 122) -#define SYS_POSIX_SGI_setregid (SYS_POSIX + 123) -#define SYS_POSIX_SGI_setreuid (SYS_POSIX + 124) -#define SYS_POSIX_getitimer (SYS_POSIX + 125) -#define SYS_POSIX_setitimer (SYS_POSIX + 126) -#define SYS_POSIX_adjtime (SYS_POSIX + 127) -#define SYS_POSIX_SGI_bsdgettime (SYS_POSIX + 128) -#define SYS_POSIX_SGI_sproc (SYS_POSIX + 129) -#define SYS_POSIX_SGI_prctl (SYS_POSIX + 130) -#define SYS_POSIX_SGI_blkproc (SYS_POSIX + 131) -#define SYS_POSIX_SGI_reserved1 (SYS_POSIX + 132) -#define SYS_POSIX_SGI_sgigsc (SYS_POSIX + 133) -#define SYS_POSIX_SGI_mmap (SYS_POSIX + 134) -#define SYS_POSIX_SGI_munmap (SYS_POSIX + 135) -#define SYS_POSIX_SGI_mprotect (SYS_POSIX + 136) -#define SYS_POSIX_SGI_msync (SYS_POSIX + 137) -#define SYS_POSIX_SGI_madvise (SYS_POSIX + 138) -#define SYS_POSIX_SGI_mpin (SYS_POSIX + 139) -#define SYS_POSIX_SGI_getpagesize (SYS_POSIX + 140) -#define SYS_POSIX_SGI_libattach (SYS_POSIX + 141) -#define SYS_POSIX_SGI_libdetach (SYS_POSIX + 142) -#define SYS_POSIX_SGI_getpgrp (SYS_POSIX + 143) -#define SYS_POSIX_SGI_setpgrp (SYS_POSIX + 144) -#define SYS_POSIX_SGI_reserved2 (SYS_POSIX + 145) -#define SYS_POSIX_SGI_reserved3 (SYS_POSIX + 146) -#define SYS_POSIX_SGI_reserved4 (SYS_POSIX + 147) -#define SYS_POSIX_SGI_reserved5 (SYS_POSIX + 148) -#define SYS_POSIX_SGI_reserved6 (SYS_POSIX + 149) -#define SYS_POSIX_cacheflush (SYS_POSIX + 150) -#define SYS_POSIX_cachectl (SYS_POSIX + 151) -#define SYS_POSIX_fchown (SYS_POSIX + 152) -#define SYS_POSIX_fchmod (SYS_POSIX + 153) -#define SYS_POSIX_wait3 (SYS_POSIX + 154) -#define SYS_POSIX_mmap (SYS_POSIX + 155) -#define SYS_POSIX_munmap (SYS_POSIX + 156) -#define SYS_POSIX_madvise (SYS_POSIX + 157) -#define SYS_POSIX_BSD_getpagesize (SYS_POSIX + 158) -#define SYS_POSIX_setreuid (SYS_POSIX + 159) -#define SYS_POSIX_setregid (SYS_POSIX + 160) -#define SYS_POSIX_setpgid (SYS_POSIX + 161) -#define SYS_POSIX_getgroups (SYS_POSIX + 162) -#define SYS_POSIX_setgroups (SYS_POSIX + 163) -#define SYS_POSIX_gettimeofday (SYS_POSIX + 164) -#define SYS_POSIX_getrusage (SYS_POSIX + 165) -#define SYS_POSIX_getrlimit (SYS_POSIX + 166) -#define SYS_POSIX_setrlimit (SYS_POSIX + 167) -#define SYS_POSIX_waitpid (SYS_POSIX + 168) -#define SYS_POSIX_dup2 (SYS_POSIX + 169) -#define SYS_POSIX_reserved2 (SYS_POSIX + 170) -#define SYS_POSIX_reserved3 (SYS_POSIX + 171) -#define SYS_POSIX_reserved4 (SYS_POSIX + 172) -#define SYS_POSIX_reserved5 (SYS_POSIX + 173) -#define SYS_POSIX_reserved6 (SYS_POSIX + 174) -#define SYS_POSIX_reserved7 (SYS_POSIX + 175) -#define SYS_POSIX_reserved8 (SYS_POSIX + 176) -#define SYS_POSIX_reserved9 (SYS_POSIX + 177) -#define SYS_POSIX_reserved10 (SYS_POSIX + 178) -#define SYS_POSIX_reserved11 (SYS_POSIX + 179) -#define SYS_POSIX_reserved12 (SYS_POSIX + 180) -#define SYS_POSIX_reserved13 (SYS_POSIX + 181) -#define SYS_POSIX_reserved14 (SYS_POSIX + 182) -#define SYS_POSIX_reserved15 (SYS_POSIX + 183) -#define SYS_POSIX_reserved16 (SYS_POSIX + 184) -#define SYS_POSIX_reserved17 (SYS_POSIX + 185) -#define SYS_POSIX_reserved18 (SYS_POSIX + 186) -#define SYS_POSIX_reserved19 (SYS_POSIX + 187) -#define SYS_POSIX_reserved20 (SYS_POSIX + 188) -#define SYS_POSIX_reserved21 (SYS_POSIX + 189) -#define SYS_POSIX_reserved22 (SYS_POSIX + 190) -#define SYS_POSIX_reserved23 (SYS_POSIX + 191) -#define SYS_POSIX_reserved24 (SYS_POSIX + 192) -#define SYS_POSIX_reserved25 (SYS_POSIX + 193) -#define SYS_POSIX_reserved26 (SYS_POSIX + 194) -#define SYS_POSIX_reserved27 (SYS_POSIX + 195) -#define SYS_POSIX_reserved28 (SYS_POSIX + 196) -#define SYS_POSIX_reserved29 (SYS_POSIX + 197) -#define SYS_POSIX_reserved30 (SYS_POSIX + 198) -#define SYS_POSIX_reserved31 (SYS_POSIX + 199) -#define SYS_POSIX_reserved32 (SYS_POSIX + 200) -#define SYS_POSIX_reserved33 (SYS_POSIX + 201) -#define SYS_POSIX_reserved34 (SYS_POSIX + 202) -#define SYS_POSIX_reserved35 (SYS_POSIX + 203) -#define SYS_POSIX_reserved36 (SYS_POSIX + 204) -#define SYS_POSIX_reserved37 (SYS_POSIX + 205) -#define SYS_POSIX_reserved38 (SYS_POSIX + 206) -#define SYS_POSIX_reserved39 (SYS_POSIX + 207) -#define SYS_POSIX_reserved40 (SYS_POSIX + 208) -#define SYS_POSIX_reserved41 (SYS_POSIX + 209) -#define SYS_POSIX_reserved42 (SYS_POSIX + 210) -#define SYS_POSIX_reserved43 (SYS_POSIX + 211) -#define SYS_POSIX_reserved44 (SYS_POSIX + 212) -#define SYS_POSIX_reserved45 (SYS_POSIX + 213) -#define SYS_POSIX_reserved46 (SYS_POSIX + 214) -#define SYS_POSIX_reserved47 (SYS_POSIX + 215) -#define SYS_POSIX_reserved48 (SYS_POSIX + 216) -#define SYS_POSIX_reserved49 (SYS_POSIX + 217) -#define SYS_POSIX_reserved50 (SYS_POSIX + 218) -#define SYS_POSIX_reserved51 (SYS_POSIX + 219) -#define SYS_POSIX_reserved52 (SYS_POSIX + 220) -#define SYS_POSIX_reserved53 (SYS_POSIX + 221) -#define SYS_POSIX_reserved54 (SYS_POSIX + 222) -#define SYS_POSIX_reserved55 (SYS_POSIX + 223) -#define SYS_POSIX_reserved56 (SYS_POSIX + 224) -#define SYS_POSIX_reserved57 (SYS_POSIX + 225) -#define SYS_POSIX_reserved58 (SYS_POSIX + 226) -#define SYS_POSIX_reserved59 (SYS_POSIX + 227) -#define SYS_POSIX_reserved60 (SYS_POSIX + 228) -#define SYS_POSIX_reserved61 (SYS_POSIX + 229) -#define SYS_POSIX_reserved62 (SYS_POSIX + 230) -#define SYS_POSIX_reserved63 (SYS_POSIX + 231) -#define SYS_POSIX_reserved64 (SYS_POSIX + 232) -#define SYS_POSIX_reserved65 (SYS_POSIX + 233) -#define SYS_POSIX_reserved66 (SYS_POSIX + 234) -#define SYS_POSIX_reserved67 (SYS_POSIX + 235) -#define SYS_POSIX_reserved68 (SYS_POSIX + 236) -#define SYS_POSIX_reserved69 (SYS_POSIX + 237) -#define SYS_POSIX_reserved70 (SYS_POSIX + 238) -#define SYS_POSIX_reserved71 (SYS_POSIX + 239) -#define SYS_POSIX_reserved72 (SYS_POSIX + 240) -#define SYS_POSIX_reserved73 (SYS_POSIX + 241) -#define SYS_POSIX_reserved74 (SYS_POSIX + 242) -#define SYS_POSIX_reserved75 (SYS_POSIX + 243) -#define SYS_POSIX_reserved76 (SYS_POSIX + 244) -#define SYS_POSIX_reserved77 (SYS_POSIX + 245) -#define SYS_POSIX_reserved78 (SYS_POSIX + 246) -#define SYS_POSIX_reserved79 (SYS_POSIX + 247) -#define SYS_POSIX_reserved80 (SYS_POSIX + 248) -#define SYS_POSIX_reserved81 (SYS_POSIX + 249) -#define SYS_POSIX_reserved82 (SYS_POSIX + 250) -#define SYS_POSIX_reserved83 (SYS_POSIX + 251) -#define SYS_POSIX_reserved84 (SYS_POSIX + 252) -#define SYS_POSIX_reserved85 (SYS_POSIX + 253) -#define SYS_POSIX_reserved86 (SYS_POSIX + 254) -#define SYS_POSIX_reserved87 (SYS_POSIX + 255) -#define SYS_POSIX_reserved88 (SYS_POSIX + 256) -#define SYS_POSIX_reserved89 (SYS_POSIX + 257) -#define SYS_POSIX_reserved90 (SYS_POSIX + 258) -#define SYS_POSIX_reserved91 (SYS_POSIX + 259) -#define SYS_POSIX_netboot (SYS_POSIX + 260) -#define SYS_POSIX_netunboot (SYS_POSIX + 261) -#define SYS_POSIX_rdump (SYS_POSIX + 262) -#define SYS_POSIX_setsid (SYS_POSIX + 263) -#define SYS_POSIX_getmaxsig (SYS_POSIX + 264) -#define SYS_POSIX_sigpending (SYS_POSIX + 265) -#define SYS_POSIX_sigprocmask (SYS_POSIX + 266) -#define SYS_POSIX_sigsuspend (SYS_POSIX + 267) -#define SYS_POSIX_sigaction (SYS_POSIX + 268) -#define SYS_POSIX_MIPS_reserved1 (SYS_POSIX + 269) -#define SYS_POSIX_MIPS_reserved2 (SYS_POSIX + 270) -#define SYS_POSIX_MIPS_reserved3 (SYS_POSIX + 271) -#define SYS_POSIX_MIPS_reserved4 (SYS_POSIX + 272) -#define SYS_POSIX_MIPS_reserved5 (SYS_POSIX + 273) -#define SYS_POSIX_MIPS_reserved6 (SYS_POSIX + 274) -#define SYS_POSIX_MIPS_reserved7 (SYS_POSIX + 275) -#define SYS_POSIX_MIPS_reserved8 (SYS_POSIX + 276) -#define SYS_POSIX_MIPS_reserved9 (SYS_POSIX + 277) -#define SYS_POSIX_MIPS_reserved10 (SYS_POSIX + 278) -#define SYS_POSIX_MIPS_reserved11 (SYS_POSIX + 279) -#define SYS_POSIX_TANDEM_reserved1 (SYS_POSIX + 280) -#define SYS_POSIX_TANDEM_reserved2 (SYS_POSIX + 281) -#define SYS_POSIX_TANDEM_reserved3 (SYS_POSIX + 282) -#define SYS_POSIX_TANDEM_reserved4 (SYS_POSIX + 283) -#define SYS_POSIX_TANDEM_reserved5 (SYS_POSIX + 284) -#define SYS_POSIX_TANDEM_reserved6 (SYS_POSIX + 285) -#define SYS_POSIX_TANDEM_reserved7 (SYS_POSIX + 286) -#define SYS_POSIX_TANDEM_reserved8 (SYS_POSIX + 287) -#define SYS_POSIX_TANDEM_reserved9 (SYS_POSIX + 288) -#define SYS_POSIX_TANDEM_reserved10 (SYS_POSIX + 289) -#define SYS_POSIX_TANDEM_reserved11 (SYS_POSIX + 290) -#define SYS_POSIX_TANDEM_reserved12 (SYS_POSIX + 291) -#define SYS_POSIX_TANDEM_reserved13 (SYS_POSIX + 292) -#define SYS_POSIX_TANDEM_reserved14 (SYS_POSIX + 293) -#define SYS_POSIX_TANDEM_reserved15 (SYS_POSIX + 294) -#define SYS_POSIX_TANDEM_reserved16 (SYS_POSIX + 295) -#define SYS_POSIX_TANDEM_reserved17 (SYS_POSIX + 296) -#define SYS_POSIX_TANDEM_reserved18 (SYS_POSIX + 297) -#define SYS_POSIX_TANDEM_reserved19 (SYS_POSIX + 298) -#define SYS_POSIX_TANDEM_reserved20 (SYS_POSIX + 299) -#define SYS_POSIX_SGI_reserved7 (SYS_POSIX + 300) -#define SYS_POSIX_SGI_reserved8 (SYS_POSIX + 301) -#define SYS_POSIX_SGI_reserved9 (SYS_POSIX + 302) -#define SYS_POSIX_SGI_reserved10 (SYS_POSIX + 303) -#define SYS_POSIX_SGI_reserved11 (SYS_POSIX + 304) -#define SYS_POSIX_SGI_reserved12 (SYS_POSIX + 305) -#define SYS_POSIX_SGI_reserved13 (SYS_POSIX + 306) -#define SYS_POSIX_SGI_reserved14 (SYS_POSIX + 307) -#define SYS_POSIX_SGI_reserved15 (SYS_POSIX + 308) -#define SYS_POSIX_SGI_reserved16 (SYS_POSIX + 309) -#define SYS_POSIX_SGI_reserved17 (SYS_POSIX + 310) -#define SYS_POSIX_SGI_reserved18 (SYS_POSIX + 311) -#define SYS_POSIX_SGI_reserved19 (SYS_POSIX + 312) -#define SYS_POSIX_SGI_reserved20 (SYS_POSIX + 313) -#define SYS_POSIX_SGI_reserved21 (SYS_POSIX + 314) -#define SYS_POSIX_SGI_reserved22 (SYS_POSIX + 315) -#define SYS_POSIX_SGI_reserved23 (SYS_POSIX + 316) -#define SYS_POSIX_SGI_reserved24 (SYS_POSIX + 317) -#define SYS_POSIX_SGI_reserved25 (SYS_POSIX + 318) -#define SYS_POSIX_SGI_reserved26 (SYS_POSIX + 319) - -/* - * Linux syscalls are in the range from 4000 to 4999 - * Hopefully these syscall numbers are unused ... If not everyone using - * statically linked binaries is pretty . You've - * been warned. - */ -#define SYS_Linux 4000 -#define SYS_syscall (SYS_Linux + 0) -#define SYS_exit (SYS_Linux + 1) -#define SYS_fork (SYS_Linux + 2) -#define SYS_read (SYS_Linux + 3) -#define SYS_write (SYS_Linux + 4) -#define SYS_open (SYS_Linux + 5) -#define SYS_close (SYS_Linux + 6) -#define SYS_waitpid (SYS_Linux + 7) -#define SYS_creat (SYS_Linux + 8) -#define SYS_link (SYS_Linux + 9) -#define SYS_unlink (SYS_Linux + 10) -#define SYS_execve (SYS_Linux + 11) -#define SYS_chdir (SYS_Linux + 12) -#define SYS_time (SYS_Linux + 13) -#define SYS_mknod (SYS_Linux + 14) -#define SYS_chmod (SYS_Linux + 15) -#define SYS_lchown (SYS_Linux + 16) -#define SYS_break (SYS_Linux + 17) -#define SYS_oldstat (SYS_Linux + 18) -#define SYS_lseek (SYS_Linux + 19) -#define SYS_getpid (SYS_Linux + 20) -#define SYS_mount (SYS_Linux + 21) -#define SYS_umount (SYS_Linux + 22) -#define SYS_setuid (SYS_Linux + 23) -#define SYS_getuid (SYS_Linux + 24) -#define SYS_stime (SYS_Linux + 25) -#define SYS_ptrace (SYS_Linux + 26) -#define SYS_alarm (SYS_Linux + 27) -#define SYS_oldfstat (SYS_Linux + 28) -#define SYS_pause (SYS_Linux + 29) -#define SYS_utime (SYS_Linux + 30) -#define SYS_stty (SYS_Linux + 31) -#define SYS_gtty (SYS_Linux + 32) -#define SYS_access (SYS_Linux + 33) -#define SYS_nice (SYS_Linux + 34) -#define SYS_ftime (SYS_Linux + 35) -#define SYS_sync (SYS_Linux + 36) -#define SYS_kill (SYS_Linux + 37) -#define SYS_rename (SYS_Linux + 38) -#define SYS_mkdir (SYS_Linux + 39) -#define SYS_rmdir (SYS_Linux + 40) -#define SYS_dup (SYS_Linux + 41) -#define SYS_pipe (SYS_Linux + 42) -#define SYS_times (SYS_Linux + 43) -#define SYS_prof (SYS_Linux + 44) -#define SYS_brk (SYS_Linux + 45) -#define SYS_setgid (SYS_Linux + 46) -#define SYS_getgid (SYS_Linux + 47) -#define SYS_signal (SYS_Linux + 48) -#define SYS_geteuid (SYS_Linux + 49) -#define SYS_getegid (SYS_Linux + 50) -#define SYS_acct (SYS_Linux + 51) -#define SYS_umount2 (SYS_Linux + 52) -#define SYS_lock (SYS_Linux + 53) -#define SYS_ioctl (SYS_Linux + 54) -#define SYS_fcntl (SYS_Linux + 55) -#define SYS_mpx (SYS_Linux + 56) -#define SYS_setpgid (SYS_Linux + 57) -#define SYS_ulimit (SYS_Linux + 58) -#define SYS_oldolduname (SYS_Linux + 59) -#define SYS_umask (SYS_Linux + 60) -#define SYS_chroot (SYS_Linux + 61) -#define SYS_ustat (SYS_Linux + 62) -#define SYS_dup2 (SYS_Linux + 63) -#define SYS_getppid (SYS_Linux + 64) -#define SYS_getpgrp (SYS_Linux + 65) -#define SYS_setsid (SYS_Linux + 66) -#define SYS_sigaction (SYS_Linux + 67) -#define SYS_sgetmask (SYS_Linux + 68) -#define SYS_ssetmask (SYS_Linux + 69) -#define SYS_setreuid (SYS_Linux + 70) -#define SYS_setregid (SYS_Linux + 71) -#define SYS_sigsuspend (SYS_Linux + 72) -#define SYS_sigpending (SYS_Linux + 73) -#define SYS_sethostname (SYS_Linux + 74) -#define SYS_setrlimit (SYS_Linux + 75) -#define SYS_getrlimit (SYS_Linux + 76) -#define SYS_getrusage (SYS_Linux + 77) -#define SYS_gettimeofday (SYS_Linux + 78) -#define SYS_settimeofday (SYS_Linux + 79) -#define SYS_getgroups (SYS_Linux + 80) -#define SYS_setgroups (SYS_Linux + 81) -#define SYS_reserved82 (SYS_Linux + 82) -#define SYS_symlink (SYS_Linux + 83) -#define SYS_oldlstat (SYS_Linux + 84) -#define SYS_readlink (SYS_Linux + 85) -#define SYS_uselib (SYS_Linux + 86) -#define SYS_swapon (SYS_Linux + 87) -#define SYS_reboot (SYS_Linux + 88) -#define SYS_readdir (SYS_Linux + 89) -#define SYS_mmap (SYS_Linux + 90) -#define SYS_munmap (SYS_Linux + 91) -#define SYS_truncate (SYS_Linux + 92) -#define SYS_ftruncate (SYS_Linux + 93) -#define SYS_fchmod (SYS_Linux + 94) -#define SYS_fchown (SYS_Linux + 95) -#define SYS_getpriority (SYS_Linux + 96) -#define SYS_setpriority (SYS_Linux + 97) -#define SYS_profil (SYS_Linux + 98) -#define SYS_statfs (SYS_Linux + 99) -#define SYS_fstatfs (SYS_Linux + 100) -#define SYS_ioperm (SYS_Linux + 101) -#define SYS_socketcall (SYS_Linux + 102) -#define SYS_syslog (SYS_Linux + 103) -#define SYS_setitimer (SYS_Linux + 104) -#define SYS_getitimer (SYS_Linux + 105) -#define SYS_stat (SYS_Linux + 106) -#define SYS_lstat (SYS_Linux + 107) -#define SYS_fstat (SYS_Linux + 108) -#define SYS_olduname (SYS_Linux + 109) -#define SYS_iopl (SYS_Linux + 110) -#define SYS_vhangup (SYS_Linux + 111) -#define SYS_idle (SYS_Linux + 112) -#define SYS_vm86 (SYS_Linux + 113) -#define SYS_wait4 (SYS_Linux + 114) -#define SYS_swapoff (SYS_Linux + 115) -#define SYS_sysinfo (SYS_Linux + 116) -#define SYS_ipc (SYS_Linux + 117) -#define SYS_fsync (SYS_Linux + 118) -#define SYS_sigreturn (SYS_Linux + 119) -#define SYS_clone (SYS_Linux + 120) -#define SYS_setdomainname (SYS_Linux + 121) -#define SYS_uname (SYS_Linux + 122) -#define SYS_modify_ldt (SYS_Linux + 123) -#define SYS_adjtimex (SYS_Linux + 124) -#define SYS_mprotect (SYS_Linux + 125) -#define SYS_sigprocmask (SYS_Linux + 126) -#define SYS_create_module (SYS_Linux + 127) -#define SYS_init_module (SYS_Linux + 128) -#define SYS_delete_module (SYS_Linux + 129) -#define SYS_get_kernel_syms (SYS_Linux + 130) -#define SYS_quotactl (SYS_Linux + 131) -#define SYS_getpgid (SYS_Linux + 132) -#define SYS_fchdir (SYS_Linux + 133) -#define SYS_bdflush (SYS_Linux + 134) -#define SYS_sysfs (SYS_Linux + 135) -#define SYS_personality (SYS_Linux + 136) -#define SYS_afs_syscall (SYS_Linux + 137) /* Syscall for Andrew File System */ -#define SYS_setfsuid (SYS_Linux + 138) -#define SYS_setfsgid (SYS_Linux + 139) -#define SYS__llseek (SYS_Linux + 140) -#define SYS_getdents (SYS_Linux + 141) -#define SYS__newselect (SYS_Linux + 142) -#define SYS_syscall_flock (SYS_Linux + 143) -#define SYS_msync (SYS_Linux + 144) -#define SYS_readv (SYS_Linux + 145) -#define SYS_writev (SYS_Linux + 146) -#define SYS_cacheflush (SYS_Linux + 147) -#define SYS_cachectl (SYS_Linux + 148) -#define SYS_sysmips (SYS_Linux + 149) -#define SYS_setup (SYS_Linux + 150) /* used only by init, to get system going */ -#define SYS_getsid (SYS_Linux + 151) -#define SYS_fdatasync (SYS_Linux + 152) -#define SYS__sysctl (SYS_Linux + 153) -#define SYS_mlock (SYS_Linux + 154) -#define SYS_munlock (SYS_Linux + 155) -#define SYS_mlockall (SYS_Linux + 156) -#define SYS_munlockall (SYS_Linux + 157) -#define SYS_sched_setparam (SYS_Linux + 158) -#define SYS_sched_getparam (SYS_Linux + 159) -#define SYS_sched_setscheduler (SYS_Linux + 160) -#define SYS_sched_getscheduler (SYS_Linux + 161) -#define SYS_sched_yield (SYS_Linux + 162) -#define SYS_sched_get_priority_max (SYS_Linux + 163) -#define SYS_sched_get_priority_min (SYS_Linux + 164) -#define SYS_sched_rr_get_interval (SYS_Linux + 165) -#define SYS_nanosleep (SYS_Linux + 166) -#define SYS_mremap (SYS_Linux + 167) -#define SYS_accept (SYS_Linux + 168) -#define SYS_bind (SYS_Linux + 169) -#define SYS_connect (SYS_Linux + 170) -#define SYS_getpeername (SYS_Linux + 171) -#define SYS_getsockname (SYS_Linux + 172) -#define SYS_getsockopt (SYS_Linux + 173) -#define SYS_listen (SYS_Linux + 174) -#define SYS_recv (SYS_Linux + 175) -#define SYS_recvfrom (SYS_Linux + 176) -#define SYS_recvmsg (SYS_Linux + 177) -#define SYS_send (SYS_Linux + 178) -#define SYS_sendmsg (SYS_Linux + 179) -#define SYS_sendto (SYS_Linux + 180) -#define SYS_setsockopt (SYS_Linux + 181) -#define SYS_shutdown (SYS_Linux + 182) -#define SYS_socket (SYS_Linux + 183) -#define SYS_socketpair (SYS_Linux + 184) -#define SYS_setresuid (SYS_Linux + 185) -#define SYS_getresuid (SYS_Linux + 186) -#define SYS_query_module (SYS_Linux + 187) -#define SYS_poll (SYS_Linux + 188) -#define SYS_nfsservctl (SYS_Linux + 189) -#define SYS_setresgid (SYS_Linux + 190) -#define SYS_getresgid (SYS_Linux + 191) -#define SYS_prctl (SYS_Linux + 192) -#define SYS_rt_sigreturn (SYS_Linux + 193) -#define SYS_rt_sigaction (SYS_Linux + 194) -#define SYS_rt_sigprocmask (SYS_Linux + 195) -#define SYS_rt_sigpending (SYS_Linux + 196) -#define SYS_rt_sigtimedwait (SYS_Linux + 197) -#define SYS_rt_sigqueueinfo (SYS_Linux + 198) -#define SYS_rt_sigsuspend (SYS_Linux + 199) -#define SYS_pread (SYS_Linux + 200) -#define SYS_pwrite (SYS_Linux + 201) -#define SYS_chown (SYS_Linux + 202) -#define SYS_getcwd (SYS_Linux + 203) -#define SYS_capget (SYS_Linux + 204) -#define SYS_capset (SYS_Linux + 205) -#define SYS_sigaltstack (SYS_Linux + 206) -#define SYS_sendfile (SYS_Linux + 207) -#define SYS_putpmsg (SYS_Linux + 208) -#define SYS_getpmsg (SYS_Linux + 209) -#define SYS_mmap2 (SYS_Linux + 210) -#define SYS_truncate64 (SYS_Linux + 211) -#define SYS_ftruncate64 (SYS_Linux + 212) -#define SYS_stat64 (SYS_Linux + 213) -#define SYS_lstat64 (SYS_Linux + 214) -#define SYS_fstat64 (SYS_Linux + 215) -#define SYS_pivot_root (SYS_Linux + 216) -#define SYS_mincore (SYS_Linux + 217) -#define SYS_madvise (SYS_Linux + 218) -#define SYS_getdents64 (SYS_Linux + 219) -#define SYS_fcntl64 (SYS_Linux + 220) - - -#endif /* sys/syscall.h */ diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/mips/sys/tas.h glibc-2.2.1/sysdeps/unix/sysv/linux/mips/sys/tas.h --- glibc-2.2/sysdeps/unix/sysv/linux/mips/sys/tas.h Sun Oct 8 17:05:09 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/mips/sys/tas.h Sat Jan 6 20:35:41 2001 @@ -42,8 +42,7 @@ _test_and_set (int *p, int v) __THROW int r, t; __asm__ __volatile__ - (".set\tmips2\n" - "1:\n\t" + ("1:\n\t" "ll %0,%3\n\t" ".set push\n\t" ".set noreorder\n\t" @@ -52,8 +51,7 @@ _test_and_set (int *p, int v) __THROW ".set pop\n\t" "sc %1,%2\n\t" "beqz %1,1b\n" - "2:\n\t" - ".set\tmips0" + "2:\n" : "=&r" (r), "=&r" (t), "=m" (*p) : "m" (*p), "r" (v) : "memory"); diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/mips/sysdep.h glibc-2.2.1/sysdeps/unix/sysv/linux/mips/sysdep.h --- glibc-2.2/sysdeps/unix/sysv/linux/mips/sysdep.h Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/mips/sysdep.h Tue Dec 5 09:40:39 2000 @@ -0,0 +1,36 @@ +/* Copyright (C) 2000 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. */ + +#ifndef _LINUX_MIPS_SYSDEP_H +#define _LINUX_MIPS_SYSDEP_H 1 + +/* There is some commonality. */ +#include + +/* For Linux we can use the system call table in the header file + /usr/include/asm/unistd.h + of the kernel. But these symbols do not follow the SYS_* syntax + so we have to redefine the `SYS_ify' macro here. */ +#undef SYS_ify +#ifdef __STDC__ +# define SYS_ify(syscall_name) __NR_##syscall_name +#else +# define SYS_ify(syscall_name) __NR_/**/syscall_name +#endif + +#endif /* linux/mips/sysdep.h */ diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/paths.h glibc-2.2.1/sysdeps/unix/sysv/linux/paths.h --- glibc-2.2/sysdeps/unix/sysv/linux/paths.h Wed Jun 9 11:15:35 1999 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/paths.h Thu Nov 16 11:12:05 2000 @@ -48,18 +48,18 @@ #define _PATH_KMEM "/dev/kmem" #define _PATH_LASTLOG "/var/log/lastlog" #define _PATH_MAILDIR "/var/mail" -#define _PATH_MAN "/usr/man" +#define _PATH_MAN "/usr/share/man" #define _PATH_MEM "/dev/mem" #define _PATH_MNTTAB "/etc/fstab" #define _PATH_MOUNTED "/etc/mtab" #define _PATH_NOLOGIN "/etc/nologin" -#define _PATH_PRESERVE "/var/preserve" +#define _PATH_PRESERVE "/var/lib" #define _PATH_RWHODIR "/var/spool/rwho" #define _PATH_SENDMAIL "/usr/sbin/sendmail" #define _PATH_SHADOW "/etc/shadow" #define _PATH_SHELLS "/etc/shells" #define _PATH_TTY "/dev/tty" -#define _PATH_UNIX "/vmlinux" +#define _PATH_UNIX "/boot/vmlinux" #define _PATH_UTMP "/var/run/utmp" #define _PATH_VI "/usr/bin/vi" #define _PATH_WTMP "/var/log/wtmp" diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h glibc-2.2.1/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h --- glibc-2.2/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h Sun Oct 8 17:05:09 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h Thu Nov 16 11:12:05 2000 @@ -64,9 +64,6 @@ #define F_SETFD 2 /* Set file descriptor flags. */ #define F_GETFL 3 /* Get file status flags. */ #define F_SETFL 4 /* Set file status flags. */ -#define F_GETLK 5 /* Get record locking info. */ -#define F_SETLK 6 /* Set record locking info (non-blocking). */ -#define F_SETLKW 7 /* Set record locking info (blocking). */ #ifndef __USE_FILE_OFFSET64 # define F_GETLK 5 /* Get record locking info. */ diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/powerpc/bits/mman.h glibc-2.2.1/sysdeps/unix/sysv/linux/powerpc/bits/mman.h --- glibc-2.2/sysdeps/unix/sysv/linux/powerpc/bits/mman.h Mon Apr 17 10:19:02 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/powerpc/bits/mman.h Sat Jan 13 10:48:51 2001 @@ -55,11 +55,13 @@ # define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */ # define MAP_DENYWRITE 0x0800 /* ETXTBSY */ # define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */ +# define MAP_LOCKED 0x0080 /* Lock the mapping. */ +# define MAP_NORESERVE 0x0040 /* Don't check for reservations. */ #endif /* Flags to `msync'. */ #define MS_ASYNC 1 /* Sync memory asynchronously. */ -#define MS_SYNC 0 /* Synchronous memory sync. */ +#define MS_SYNC 4 /* Synchronous memory sync. */ #define MS_INVALIDATE 2 /* Invalidate the caches. */ /* Flags for `mlockall'. */ diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/s390/mmap.S glibc-2.2.1/sysdeps/unix/sysv/linux/s390/mmap.S --- glibc-2.2/sysdeps/unix/sysv/linux/s390/mmap.S Wed Aug 2 08:14:21 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/s390/mmap.S Thu Nov 16 11:12:05 2000 @@ -19,33 +19,45 @@ #include - .text +#define EINVAL 22 + .text ENTRY(__mmap) /* Save registers and setup stack frame. */ stm %r6,%r15,24(%r15) lr %r1,%r15 - l %r0,4(0,%r15) /* load eos */ ahi %r15,-120 /* buy stack space */ - st %r1,0(0,%r15) /* store back chain */ - st %r0,4(0,%r15) /* store eos */ + st %r1,0(%r15) /* store back chain */ - /* Store parameters on stack, because old_mmap - * takes only one parameter: a pointer to the parameter area + /* Store parameters on stack, because old_mmap/mmap2 + * take only one parameter: a pointer to the parameter area */ - mvc 0x74(4,%r15),216(%r15) /* move 'offset' */ - st %r6,0x70(0,%r15) /* store 'fd' */ - st %r5,0x6C(0,%r15) /* store 'flags' */ - st %r4,0x68(0,%r15) /* store 'prot' */ - st %r3,0x64(0,%r15) /* store 'length' */ - st %r2,0x60(0,%r15) /* store 'start' */ + st %r6,0x70(%r15) /* Store 'fd'. */ + st %r5,0x6C(%r15) /* Store 'flags'. */ + st %r4,0x68(%r15) /* Store 'prot'. */ + st %r3,0x64(%r15) /* Store 'length'. */ + st %r2,0x60(%r15) /* Store 'start'. */ + l %r1,216(%r15) /* Load offset. */ - la %r2,0x60(0,%r15) /* load address of parameter list */ - /* Do the system call trap. */ - svc SYS_ify(mmap) +#ifdef __ASSUME_MMAP2_SYSCALL + /* I don't think it is worthwhile trying to use mmap2 whenever + * it is available. Only use it when we are sure the syscall + * exists. */ + tml %r1,0x0fff /* Offset page aligned ? */ + lhi %r2,-EINVAL + jnz 1f /* No -> EINVAL. */ + srl %r1,12 /* mmap2 takes the offset in pages. */ + st %r1,0x74(%r15) /* Store page offset. */ + la %r2,0x60(%r15) /* Load address of parameter list. */ + svc SYS_ify(mmap2) /* Do the system call trap. */ +#else + st %r1,0x74(%r15) /* Store offset unmodified. */ + la %r2,0x60(%r15) /* Load address of parameter list. */ + svc SYS_ify(mmap) /* Do the system call trap. */ +#endif - l %r15,0(0,%r15) /* load back chain */ - lm %r6,%r15,24(%r15) /* load registers */ +1: l %r15,0(%r15) /* Load back chain. */ + lm %r6,%r15,24(%r15) /* Load registers. */ /* check gpr 2 for error */ lhi %r0,-4096 diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/s390/mmap64.S glibc-2.2.1/sysdeps/unix/sysv/linux/s390/mmap64.S --- glibc-2.2/sysdeps/unix/sysv/linux/s390/mmap64.S Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/s390/mmap64.S Sat Jan 6 20:35:41 2001 @@ -0,0 +1,101 @@ +/* Copyright (C) 2000 Free Software Foundation, Inc. + Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). + 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. */ + +#include + +#define EINVAL 22 +#define ENOSYS 38 + + .text +ENTRY(__mmap64) + /* Save registers and setup stack frame. */ + stm %r6,%r15,24(%r15) + lr %r1,%r15 + ahi %r15,-120 /* Buy stack space. */ + st %r1,0(%r15) /* Store back chain. */ + + /* Store parameters on stack, because mmap2 and old_mmap + * take only one parameter: a pointer to the parameter area. */ + st %r6,0x70(%r15) /* Store 'fd'. */ + st %r5,0x6C(%r15) /* Store 'flags'. */ + st %r4,0x68(%r15) /* Store 'prot'. */ + st %r3,0x64(%r15) /* Store 'length'. */ + st %r2,0x60(%r15) /* Store 'start'. */ + +#ifdef __NR_mmap2 + lm %r0,%r1,216(%r15) /* Load 64 bit offset. */ + tml %r1,0x0fff /* Offset page aligned ? */ + jnz 2f /* No -> EINVAL. */ + srdl %r0,12 /* mmap2 takes the offset in pages. */ + ltr %r0,%r0 /* Offset > 2^44 ? */ + jnz 2f + st %r1,0x74(%r15) /* Store page offset. */ + + la %r2,0x60(%r15) /* Load address of parameter list. */ + svc SYS_ify(mmap2) /* Do the system call trap. */ + +#ifndef __ASSUME_MMAP2_SYSCALL + chi %r0,-ENOSYS + je 1f +#endif + + l %r15,0(%r15) /* Load back chain. */ + lm %r6,%r15,24(%r15) /* Load registers. */ + + /* Check gpr 2 for error. */ + lhi %r0,-4096 + clr %r2,%r0 + jnl SYSCALL_ERROR_LABEL + + /* Successful; return the syscall's value. */ + br %r14 + +#endif + +#if !defined __ASSUME_MMAP2_SYSCALL || !defined __NR_mmap2 +1: lm %r0,%r1,216(%r15) /* Load 64 bit offset. */ + st %r1,0x74(%r15) /* Store lower word of offset. */ + ltr %r0,%r0 /* Offset > 2^32 ? */ + jnz 2f + alr %r1,%r3 /* Add length to offset. */ + brc 3,2f /* Carry -> EINVAL. */ + + la %r2,0x60(%r15) /* Load address of parameter list. */ + svc SYS_ify(mmap) /* Do the system call trap. */ + + l %r15,0(%r15) /* Load back chain. */ + lm %r6,%r15,24(%r15) /* Load registers. */ + + /* Check gpr 2 for error. */ + lhi %r0,-4096 + clr %r2,%r0 + jnl SYSCALL_ERROR_LABEL + + /* Successful; return the syscall's value. */ + br %r14 +#endif + +2: lhi %r2,-EINVAL + l %r15,0(%r15) /* Load back chain. */ + lm %r6,%r15,24(%r15) /* Load registers. */ + j SYSCALL_ERROR_LABEL + +PSEUDO_END (__mmap64) + +weak_alias (__mmap64, mmap64) diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/sh/socket.S glibc-2.2.1/sysdeps/unix/sysv/linux/sh/socket.S --- glibc-2.2/sysdeps/unix/sysv/linux/sh/socket.S Thu Oct 26 22:57:42 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/sh/socket.S Sat Jan 6 20:35:41 2001 @@ -81,7 +81,7 @@ ENTRY (__socket) mov.l .L2, r1 #ifdef SHARED - mov r0, r2 + mov r0, r4 mov.l r12, @-r15 sts.l pr, @-r15 mov.l 0f, r12 @@ -90,7 +90,7 @@ ENTRY (__socket) mova .L2, r0 add r0, r1 jsr @r1 - mov r2, r0 + nop lds.l @r15+, pr rts mov.l @r15+, r12 @@ -99,7 +99,7 @@ ENTRY (__socket) .long _GLOBAL_OFFSET_TABLE_ #else jmp @r1 - nop + mov r0, r4 #endif 1: /* Successful; return the syscall's value. */ diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/shm_open.c glibc-2.2.1/sysdeps/unix/sysv/linux/shm_open.c --- glibc-2.2/sysdeps/unix/sysv/linux/shm_open.c Thu Oct 26 22:57:39 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/shm_open.c Sat Jan 6 20:35:41 2001 @@ -218,16 +218,12 @@ shm_unlink (const char *name) __mempcpy (__mempcpy (fname, mountpoint.dir, mountpoint.dirlen), name, namelen + 1); - /* And get the file descriptor. - XXX Maybe we should test each descriptor whether it really is for a - file on the shmfs. If this is what should be done the whole function - should be revamped since we can determine whether shmfs is available - while trying to open the file, all in one turn. */ + /* And remove the file. */ return unlink (fname); } -void +static void __attribute__ ((unused)) freeit (void) { if (mountpoint.dir != defaultdir) diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/sigpending.c glibc-2.2.1/sysdeps/unix/sysv/linux/sigpending.c --- glibc-2.2/sysdeps/unix/sysv/linux/sigpending.c Fri Jul 7 10:57:38 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/sigpending.c Sat Jan 6 20:35:41 2001 @@ -44,7 +44,7 @@ sigpending (set) #if __ASSUME_REALTIME_SIGNALS > 0 return INLINE_SYSCALL (rt_sigpending, 2, CHECK_SIGSET (set), _NSIG / 8); #else -# ifdef __NR_rt_pending +# ifdef __NR_rt_sigpending /* First try the RT signals. */ if (!__libc_missing_rt_sigs) { diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/sparc/Makefile glibc-2.2.1/sysdeps/unix/sysv/linux/sparc/Makefile --- glibc-2.2/sysdeps/unix/sysv/linux/sparc/Makefile Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/sparc/Makefile Wed Nov 15 17:48:14 2000 @@ -0,0 +1,44 @@ +ifeq ($(subdir),misc) + +no_syscall_list_h = 1 + +# 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)-t + { \ + echo '/* Generated at libc build time from kernel syscall list. */';\ + echo ''; \ + echo '#ifndef _SYSCALL_H'; \ + echo '# error "Never use directly; include instead."'; \ + echo '#endif'; \ + echo ''; \ + SUNPRO_DEPENDENCIES='$(@:.h=.d)-t $@' \ + $(CC) -E -x c $(sysincludes) $< -U__sparc_v9__ -U__arch64__ -D_LIBC -dM | \ + sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' | \ + LC_ALL=C sort > $(@:.d=.h).new32; \ + SUNPRO_DEPENDENCIES='$(@:.h=.d)-t $@' \ + $(CC) -E -x c $(sysincludes) $< -D__sparc_v9__ -D__arch64__ -D_LIBC -dM | \ + sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' | \ + LC_ALL=C sort > $(@:.d=.h).new64; \ + if cmp -s $(@:.d=.h).new32 $(@:.d=.h).new64; then \ + cat $(@:.d=.h).new32; \ + else \ + echo '#include '; \ + echo ''; \ + comm -12 $(@:.d=.h).new32 $(@:.d=.h).new64; \ + echo '#if __WORDSIZE == 64'; \ + comm -13 $(@:.d=.h).new32 $(@:.d=.h).new64; \ + echo '#else'; \ + comm -23 $(@:.d=.h).new32 $(@:.d=.h).new64; \ + echo '#endif'; \ + fi; \ + rm -f $(@:.d=.h).new32 $(@:.d=.h).new64; \ + } > $(@:.d=.h).new + mv -f $(@:.d=.h).new $(@:.d=.h) + sed < $(@:.h=.d)-t > $(@:.h=.d)-t2 \ + -e 's,$(subst .,\.,$@),$(patsubst $(objpfx)%,$$(objpfx)%,\ + $(@:.d=.h) $(@:.h=.d)),' + rm -f $(@:.h=.d)-t + mv -f $(@:.h=.d)-t2 $(@:.h=.d) + +endif diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/sparc/bits/types.h glibc-2.2.1/sysdeps/unix/sysv/linux/sparc/bits/types.h --- glibc-2.2/sysdeps/unix/sysv/linux/sparc/bits/types.h Tue Aug 15 11:16:27 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/sparc/bits/types.h Wed Nov 22 11:00:04 2000 @@ -81,7 +81,7 @@ typedef __quad_t __off64_t; /* "" (LF typedef __quad_t __loff_t; /* Type of file sizes and offsets. */ typedef int __pid_t; /* Type of process identifications. */ #if __WORDSIZE == 64 -typedef long long int __ssize_t; /* Type of a byte count, or error. */ +typedef long int __ssize_t; /* Type of a byte count, or error. */ #else typedef int __ssize_t; /* Type of a byte count, or error. */ #endif diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h glibc-2.2.1/sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h --- glibc-2.2/sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h Fri May 26 12:38:38 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/sparc/sparc32/dl-procinfo.h Thu Nov 16 11:12:06 2000 @@ -68,4 +68,12 @@ _dl_string_hwcap (const char *str) #define HWCAP_IMPORTANT (HWCAP_SPARC_V9) +/* There are no different platforms defined. */ +#define _dl_platform_string(idx) "" + +/* There're no platforms to filter out. */ +#define _DL_HWCAP_PLATFORM 0 + +#define _dl_string_platform(str) (-1) + #endif /* dl-procinfo.h */ diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.h glibc-2.2.1/sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.h --- glibc-2.2/sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.h Fri May 26 12:38:38 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/sparc/sparc64/dl-procinfo.h Thu Nov 16 11:12:06 2000 @@ -69,4 +69,12 @@ _dl_string_hwcap (const char *str) #define HWCAP_IMPORTANT (0) +/* There are no different platforms defined. */ +#define _dl_platform_string(idx) "" + +/* There're no platforms to filter out. */ +#define _DL_HWCAP_PLATFORM 0 + +#define _dl_string_platform(str) (-1) + #endif /* dl-procinfo.h */ diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/sparc/sparc64/setjmp.S glibc-2.2.1/sysdeps/unix/sysv/linux/sparc/sparc64/setjmp.S --- glibc-2.2/sysdeps/unix/sysv/linux/sparc/sparc64/setjmp.S Sat Oct 11 20:43:46 1997 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/sparc/sparc64/setjmp.S Wed Nov 22 11:00:04 2000 @@ -29,10 +29,10 @@ /* int _setjmp(jmp_buf) */ -ENTRY(__setjmp) +ENTRY(_setjmp) ba __sigsetjmp_local set 0, %o1 -END(__setjmp) +END(_setjmp) /* int setjmp(jmp_buf) */ @@ -60,5 +60,5 @@ __sigsetjmp_local: END(__sigsetjmp) -weak_alias(__setjmp, _setjmp) +weak_extern(_setjmp) weak_extern(setjmp) diff -adurpN glibc-2.2/sysdeps/unix/sysv/linux/syscalls.list glibc-2.2.1/sysdeps/unix/sysv/linux/syscalls.list --- glibc-2.2/sysdeps/unix/sysv/linux/syscalls.list Thu Sep 14 12:24:27 2000 +++ glibc-2.2.1/sysdeps/unix/sysv/linux/syscalls.list Fri Dec 1 11:55:14 2000 @@ -35,6 +35,7 @@ nfsservctl EXTRA nfsservctl i:ipp nfsser pause - pause i: __libc_pause pause personality init-first personality i:i __personality personality pipe - pipe i:f __pipe pipe +pivot_root EXTRA pivot_root i:ss pivot_root prctl EXTRA prctl i:iiiii prctl query_module EXTRA query_module i:sipip query_module quotactl EXTRA quotactl i:isip quotactl diff -adurpN glibc-2.2/sysdeps/wordsize-64/strtol.c glibc-2.2.1/sysdeps/wordsize-64/strtol.c --- glibc-2.2/sysdeps/wordsize-64/strtol.c Tue May 25 13:14:50 1999 +++ glibc-2.2.1/sysdeps/wordsize-64/strtol.c Sat Jan 6 20:35:41 2001 @@ -1,10 +1,13 @@ /* We have to irritate the compiler a bit. */ #define __strtoll_internal __strtoll_internal_XXX #define strtoll strtoll_XXX +#define strtoq strtoq_XXX #include #undef __strtoll_internal #undef strtoll +#undef strtoq strong_alias (__strtol_internal, __strtoll_internal) -weak_alias (__strtoll_internal, strtoll) +weak_alias (strtol, strtoll) +weak_alias (strtol, strtoq) diff -adurpN glibc-2.2/sysdeps/wordsize-64/strtol_l.c glibc-2.2.1/sysdeps/wordsize-64/strtol_l.c --- glibc-2.2/sysdeps/wordsize-64/strtol_l.c Tue May 25 13:17:01 1999 +++ glibc-2.2.1/sysdeps/wordsize-64/strtol_l.c Sat Jan 6 20:35:41 2001 @@ -7,4 +7,4 @@ #undef ____strtoll_l_internal #undef __strtoll_l strong_alias (____strtol_l_internal, ____strtoll_l_internal) -weak_alias (____strtoll_l_internal, __strtoll_l) +weak_alias (__strtol_l, __strtoll_l) diff -adurpN glibc-2.2/sysdeps/wordsize-64/strtoul.c glibc-2.2.1/sysdeps/wordsize-64/strtoul.c --- glibc-2.2/sysdeps/wordsize-64/strtoul.c Tue May 25 13:15:26 1999 +++ glibc-2.2.1/sysdeps/wordsize-64/strtoul.c Sat Jan 6 20:35:41 2001 @@ -1,10 +1,13 @@ /* We have to irritate the compiler a bit. */ #define __strtoull_internal __strtoull_internal_XXX #define strtoull strtoull_XXX +#define strtouq strtouq_XXX #include #undef __strtoull_internal #undef strtoull +#undef strtouq strong_alias (__strtoul_internal, __strtoull_internal) -weak_alias (__strtoull_internal, strtoull) +weak_alias (strtoul, strtoull) +weak_alias (strtoul, strtouq) diff -adurpN glibc-2.2/sysdeps/wordsize-64/strtoul_l.c glibc-2.2.1/sysdeps/wordsize-64/strtoul_l.c --- glibc-2.2/sysdeps/wordsize-64/strtoul_l.c Tue May 25 13:17:33 1999 +++ glibc-2.2.1/sysdeps/wordsize-64/strtoul_l.c Sat Jan 6 20:35:41 2001 @@ -7,4 +7,4 @@ #undef ____strtoull_l_internal #undef __strtoull_l strong_alias (____strtoul_l_internal, ____strtoull_l_internal) -weak_alias (____strtoull_l_internal, __strtoull_l) +weak_alias (__strtoul_l, __strtoull_l) diff -adurpN glibc-2.2/sysdeps/wordsize-64/wcstol.c glibc-2.2.1/sysdeps/wordsize-64/wcstol.c --- glibc-2.2/sysdeps/wordsize-64/wcstol.c Tue May 25 14:44:12 1999 +++ glibc-2.2.1/sysdeps/wordsize-64/wcstol.c Sat Jan 6 20:35:41 2001 @@ -1,10 +1,13 @@ /* We have to irritate the compiler a bit. */ #define __wcstoll_internal __wcstoll_internal_XXX #define wcstoll wcstoll_XXX +#define wcstoq wcstoq_XXX #include #undef __wcstoll_internal #undef wcstoll +#undef wcstoq strong_alias (__wcstol_internal, __wcstoll_internal) -weak_alias (__wcstoll_internal, wcstoll) +weak_alias (wcstol, wcstoll) +weak_alias (wcstol, wcstoq) diff -adurpN glibc-2.2/sysdeps/wordsize-64/wcstol_l.c glibc-2.2.1/sysdeps/wordsize-64/wcstol_l.c --- glibc-2.2/sysdeps/wordsize-64/wcstol_l.c Tue May 25 14:45:32 1999 +++ glibc-2.2.1/sysdeps/wordsize-64/wcstol_l.c Sat Jan 6 20:35:41 2001 @@ -7,4 +7,4 @@ #undef ____wcstoll_l_internal #undef __wcstoll_l strong_alias (____wcstol_l_internal, ____wcstoll_l_internal) -weak_alias (____wcstoll_l_internal, __wcstoll_l) +weak_alias (__wcstol_l, __wcstoll_l) diff -adurpN glibc-2.2/sysdeps/wordsize-64/wcstoul.c glibc-2.2.1/sysdeps/wordsize-64/wcstoul.c --- glibc-2.2/sysdeps/wordsize-64/wcstoul.c Tue May 25 14:44:40 1999 +++ glibc-2.2.1/sysdeps/wordsize-64/wcstoul.c Sat Jan 6 20:35:41 2001 @@ -1,10 +1,13 @@ /* We have to irritate the compiler a bit. */ #define __wcstoull_internal __wcstoull_internal_XXX #define wcstoull wcstoull_XXX +#define wcstouq wcstouq_XXX #include #undef __wcstoull_internal #undef wcstoull +#undef wcstouq strong_alias (__wcstoul_internal, __wcstoull_internal) -weak_alias (__wcstoull_internal, wcstoull) +weak_alias (wcstoul, wcstoull) +weak_alias (wcstoul, wcstouq) diff -adurpN glibc-2.2/sysdeps/wordsize-64/wcstoul_l.c glibc-2.2.1/sysdeps/wordsize-64/wcstoul_l.c --- glibc-2.2/sysdeps/wordsize-64/wcstoul_l.c Tue May 25 14:46:02 1999 +++ glibc-2.2.1/sysdeps/wordsize-64/wcstoul_l.c Sat Jan 6 20:35:41 2001 @@ -7,4 +7,4 @@ #undef ____wcstoull_l_internal #undef __wcstoull_l strong_alias (____wcstoul_l_internal, ____wcstoull_l_internal) -weak_alias (____wcstoull_l_internal, __wcstoull_l) +weak_alias (__wcstoul_l, __wcstoull_l) diff -adurpN glibc-2.2/test-skeleton.c glibc-2.2.1/test-skeleton.c --- glibc-2.2/test-skeleton.c Thu Oct 26 22:57:21 2000 +++ glibc-2.2.1/test-skeleton.c Sat Jan 6 20:35:10 2001 @@ -55,40 +55,42 @@ static int pid; static const char *test_dir; /* List of temporary files. */ -struct name_list +struct temp_name_list { struct qelem q; const char *name; -} *name_list; +} *temp_name_list; /* Add temporary files in list. */ -void +static void add_temp_file (const char *name) { - struct name_list *newp = (struct name_list *) calloc (sizeof (*newp), 1); + struct temp_name_list *newp + = (struct temp_name_list *) calloc (sizeof (*newp), 1); if (newp != NULL) { newp->name = name; - if (name_list == NULL) - name_list = (struct name_list *) &newp->q; + if (temp_name_list == NULL) + temp_name_list = (struct temp_name_list *) &newp->q; else - insque (newp, name_list); + insque (newp, temp_name_list); } } /* Delete all temporary files. */ -void +static void delete_temp_files (void) { - while (name_list != NULL) + while (temp_name_list != NULL) { - remove (name_list->name); - name_list = (struct name_list *) name_list->q.q_forw; + remove (temp_name_list->name); + temp_name_list = (struct temp_name_list *) temp_name_list->q.q_forw; } } /* Timeout handler. We kill the child and exit with an error. */ -void +static void +__attribute__ ((noreturn)) timeout_handler (int sig __attribute__ ((unused))) { int killed; diff -adurpN glibc-2.2/time/Makefile glibc-2.2.1/time/Makefile --- glibc-2.2/time/Makefile Tue Jun 13 20:15:25 2000 +++ glibc-2.2.1/time/Makefile Wed Jan 10 15:55:08 2001 @@ -1,4 +1,4 @@ -# Copyright (C) 1991-1999, 2000 Free Software Foundation, Inc. +# Copyright (C) 1991-1999, 2000, 2001 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 @@ -33,7 +33,7 @@ routines := offtime asctime clock ctime distribute := datemsk tests := test_time clocktest tst-posixtz tst-strptime tst_wcsftime \ - tst-getdate + tst-getdate tst-mktime include ../Rules diff -adurpN glibc-2.2/time/Versions glibc-2.2.1/time/Versions --- glibc-2.2/time/Versions Mon Apr 17 10:19:02 2000 +++ glibc-2.2.1/time/Versions Thu Nov 16 11:12:06 2000 @@ -44,7 +44,7 @@ libc { getdate_err; # g* - getdate; getdate_r; getitimer; + getdate; getdate_r; } GLIBC_2.2 { # w* diff -adurpN glibc-2.2/time/clocktest.c glibc-2.2.1/time/clocktest.c --- glibc-2.2/time/clocktest.c Thu Sep 14 12:24:28 2000 +++ glibc-2.2.1/time/clocktest.c Sat Jan 6 20:35:41 2001 @@ -6,7 +6,7 @@ volatile int gotit = 0; -void +static void alarm_handler (int signal) { gotit = 1; diff -adurpN glibc-2.2/time/strftime.c glibc-2.2.1/time/strftime.c --- glibc-2.2/time/strftime.c Thu Oct 26 22:57:43 2000 +++ glibc-2.2.1/time/strftime.c Wed Jan 10 15:55:08 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-1999, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1991-1999, 2000, 2001 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 @@ -287,7 +287,7 @@ static const CHAR_T zeroes[16] = /* "000 else if (to_uppcase) \ memcpy_uppcase (p, (s), _n); \ else \ - MEMCPY ((PTR) p, (PTR) (s), _n)) + MEMCPY ((PTR) p, (const PTR) (s), _n)) #ifdef COMPILE_WIDE # define widen(os, ws, l) \ @@ -513,6 +513,9 @@ my_strftime (s, maxsize, format, tp ut_a size_t i = 0; CHAR_T *p = s; const CHAR_T *f; +#if DO_MULTIBYTE && !defined COMPILE_WIDE + const char *format_end = NULL; +#endif zone = NULL; #if HAVE_TM_ZONE @@ -605,10 +608,15 @@ my_strftime (s, maxsize, format, tp ut_a { mbstate_t mbstate = mbstate_zero; size_t len = 0; + size_t fsize; + + if (! format_end) + format_end = f + strlen (f) + 1; + fsize = format_end - f; do { - size_t bytes = mbrlen (f + len, (size_t) -1, &mbstate); + size_t bytes = mbrlen (f + len, fsize - len, &mbstate); if (bytes == 0) break; @@ -783,10 +791,11 @@ my_strftime (s, maxsize, format, tp ut_a goto bad_format; #ifdef _NL_CURRENT if (! (modifier == 'E' - && (*(subfmt = (CHAR_T *) _NL_CURRENT (LC_TIME, - NLW(ERA_D_T_FMT))) + && (*(subfmt = + (const CHAR_T *) _NL_CURRENT (LC_TIME, + NLW(ERA_D_T_FMT))) != '\0'))) - subfmt = (CHAR_T *) _NL_CURRENT (LC_TIME, NLW(D_T_FMT)); + subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(D_T_FMT)); #else # if HAVE_STRFTIME goto underlying_strftime; @@ -877,10 +886,10 @@ my_strftime (s, maxsize, format, tp ut_a goto bad_format; #ifdef _NL_CURRENT if (! (modifier == L_('E') - && (*(subfmt = (CHAR_T *)_NL_CURRENT (LC_TIME, - NLW(ERA_D_FMT))) + && (*(subfmt = + (const CHAR_T *)_NL_CURRENT (LC_TIME, NLW(ERA_D_FMT))) != L_('\0')))) - subfmt = (CHAR_T *) _NL_CURRENT (LC_TIME, NLW(D_FMT)); + subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(D_FMT)); goto subformat; #else # if HAVE_STRFTIME @@ -1057,14 +1066,15 @@ my_strftime (s, maxsize, format, tp ut_a goto underlying_strftime; #endif - case L_('R'): /* GNU extension. */ + case L_('R'): /* ISO C99 extension. */ subfmt = L_("%H:%M"); goto subformat; case L_('r'): /* POSIX.2 extension. */ #ifdef _NL_CURRENT - if (*(subfmt = (CHAR_T *) _NL_CURRENT (LC_TIME, - NLW(T_FMT_AMPM))) == L_('\0')) + if (*(subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME, + NLW(T_FMT_AMPM))) + == L_('\0')) #endif subfmt = L_("%I:%M:%S %p"); goto subformat; @@ -1119,10 +1129,10 @@ my_strftime (s, maxsize, format, tp ut_a goto bad_format; #ifdef _NL_CURRENT if (! (modifier == L_('E') - && (*(subfmt = (CHAR_T *) _NL_CURRENT (LC_TIME, - NLW(ERA_T_FMT))) + && (*(subfmt = + (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(ERA_T_FMT))) != L_('\0')))) - subfmt = (CHAR_T *) _NL_CURRENT (LC_TIME, NLW(T_FMT)); + subfmt = (const CHAR_T *) _NL_CURRENT (LC_TIME, NLW(T_FMT)); goto subformat; #else # if HAVE_STRFTIME @@ -1149,8 +1159,8 @@ my_strftime (s, maxsize, format, tp ut_a DO_NUMBER (2, (tp->tm_yday - tp->tm_wday + 7) / 7); case L_('V'): - case L_('g'): /* GNU extension. */ - case L_('G'): /* GNU extension. */ + case L_('g'): /* ISO C99 extension. */ + case L_('G'): /* ISO C99 extension. */ if (modifier == L_('E')) goto bad_format; { @@ -1274,7 +1284,7 @@ my_strftime (s, maxsize, format, tp ut_a #endif break; - case L_('z'): /* GNU extension. */ + case L_('z'): /* ISO C99 extension. */ if (tp->tm_isdst < 0) break; diff -adurpN glibc-2.2/time/strptime.c glibc-2.2.1/time/strptime.c --- glibc-2.2/time/strptime.c Fri Feb 11 15:49:04 2000 +++ glibc-2.2.1/time/strptime.c Fri Dec 1 11:55:14 2000 @@ -725,7 +725,7 @@ strptime_internal (rp, fmt, tm, decided, { num_eras = _NL_CURRENT_WORD (LC_TIME, _NL_TIME_ERA_NUM_ENTRIES); - for (era_cnt = 0; era_cnt < num_eras; + for (era_cnt = 0; era_cnt < (int) num_eras; ++era_cnt, rp = rp_backup) { era = _nl_select_era_entry (era_cnt); @@ -735,7 +735,7 @@ strptime_internal (rp, fmt, tm, decided, break; } } - if (era_cnt == num_eras) + if (era_cnt == (int) num_eras) { era_cnt = -1; if (*decided == loc) @@ -764,14 +764,14 @@ strptime_internal (rp, fmt, tm, decided, { num_eras = _NL_CURRENT_WORD (LC_TIME, _NL_TIME_ERA_NUM_ENTRIES); - for (era_cnt = 0; era_cnt < num_eras; + for (era_cnt = 0; era_cnt < (int) num_eras; ++era_cnt, rp = rp_backup) { era = _nl_select_era_entry (era_cnt); if (recursive (era->era_format)) break; } - if (era_cnt == num_eras) + if (era_cnt == (int) num_eras) { era_cnt = -1; if (*decided == loc) diff -adurpN glibc-2.2/time/tst-getdate.c glibc-2.2.1/time/tst-getdate.c --- glibc-2.2/time/tst-getdate.c Thu Aug 31 14:45:36 2000 +++ glibc-2.2.1/time/tst-getdate.c Sat Jan 6 20:35:41 2001 @@ -35,7 +35,7 @@ static const struct {"16:30:46 2000-2-29", 0, {46, 30,16, 29, 1, 100, 0, 0, 0}} }; -void +static void report_date_error (int err) { switch(err) diff -adurpN glibc-2.2/time/tst-mktime.c glibc-2.2.1/time/tst-mktime.c --- glibc-2.2/time/tst-mktime.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/time/tst-mktime.c Mon Jan 8 17:04:02 2001 @@ -0,0 +1,33 @@ +#include +#include +#include + +int +main (void) +{ + struct tm time_str; + char daybuf[20]; + int result; + + time_str.tm_year = 2001 - 1900; + time_str.tm_mon = 7 - 1; + time_str.tm_mday = 4; + time_str.tm_hour = 0; + time_str.tm_min = 0; + time_str.tm_sec = 1; + time_str.tm_isdst = -1; + + if (mktime (&time_str) == -1) + { + (void) puts ("-unknown-"); + result = 1; + } + else + { + (void) strftime (daybuf, sizeof (daybuf), "%A", &time_str); + (void) puts (daybuf); + result = strcmp (daybuf, "Wednesday") != 0; + } + + return result; +} diff -adurpN glibc-2.2/time/tzset.c glibc-2.2.1/time/tzset.c --- glibc-2.2/time/tzset.c Thu Aug 31 14:45:36 2000 +++ glibc-2.2.1/time/tzset.c Sat Jan 6 20:35:41 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-1999, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1991-1999, 2000, 2001 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 @@ -175,7 +175,8 @@ tzset_internal (always) /* No data file found. Default to UTC if nothing specified. */ - if (tz == NULL || *tz == '\0') + if (tz == NULL || *tz == '\0' + || (TZDEFAULT != NULL && strcmp (tz, TZDEFAULT) == 0)) { tz_rules[0].name = tz_rules[1].name = "UTC"; tz_rules[0].type = tz_rules[1].type = J0; diff -adurpN glibc-2.2/timezone/asia glibc-2.2.1/timezone/asia --- glibc-2.2/timezone/asia Tue Oct 17 14:54:23 2000 +++ glibc-2.2.1/timezone/asia Sat Jan 6 20:35:42 2001 @@ -1,4 +1,4 @@ -# @(#)asia 7.57 +# @(#)asia 7.58 # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to @@ -116,7 +116,7 @@ Zone Asia/Bahrain 3:22:20 - LMT 1920 # # Bangladesh # Zone NAME GMTOFF RULES FORMAT [UNTIL] -Zone Asia/Dacca 6:01:40 - LMT 1890 +Zone Asia/Dhaka 6:01:40 - LMT 1890 5:53:20 - HMT 1941 Oct # Howrah Mean Time? 6:30 - BURT 1942 May 15 # Burma Time 5:30 - IST 1942 Sep @@ -330,12 +330,35 @@ Zone Asia/Tbilisi 2:59:16 - LMT 1880 4:00 E-EurAsia GE%sT # East Timor + +# From Joao Carrascalao, brother of the former governor of East Timor, in +# +# East Timor may be late for its millennium +# (1999-12-26/31): +# Portugal tried to change the time forward in 1974 because the sun +# rises too early but the suggestion raised a lot of problems with the +# Timorese and I still don't think it would work today because it +# conflicts with their way of life. + +# From Paul Eggert (2000-12-04): +# We don't have any record of the above attempt. +# Most likely our records are incomplete, but we have no better data. + +# +# From Manoel de Almeida e Silva, Deputy Spokesman for the UN Secretary-General +# (2000-08-16): +# The Cabinet of the East Timor Transition Administration decided +# today to advance East Timor's time by one hour. The time change, +# which will be permanent, with no seasonal adjustment, will happen at +# midnight on Saturday, September 16. + # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Dili 8:22:20 - LMT 1912 - 8:00 - TPT 1942 Feb 21 23:00 + 8:00 - TPT 1942 Feb 21 23:00 # E Timor Time 9:00 - JST 1945 Aug 9:00 - TPT 1976 May 3 - 8:00 - TPT # East Timor Time + 8:00 - TPT 2000 Sep 17 00:00 + 9:00 - TPT # India # Zone NAME GMTOFF RULES FORMAT [UNTIL] diff -adurpN glibc-2.2/timezone/australasia glibc-2.2.1/timezone/australasia --- glibc-2.2/timezone/australasia Tue Oct 17 14:54:23 2000 +++ glibc-2.2.1/timezone/australasia Sat Jan 6 20:35:42 2001 @@ -1,4 +1,4 @@ -# @(#)australasia 7.60 +# @(#)australasia 7.61 # This file also includes Pacific islands. # Notes are at the end of this file @@ -153,14 +153,14 @@ Zone Australia/Broken_Hill 9:25:48 - LMT # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule LH 1981 1984 - Oct lastSun 2:00s 1:00 - Rule LH 1982 1985 - Mar Sun>=1 2:00s 0 - -Rule LH 1985 only - Oct lastSun 2:30s 0:30 - -Rule LH 1986 1989 - Mar Sun>=15 2:30s 0 - -Rule LH 1986 only - Oct 19 2:30s 0:30 - -Rule LH 1987 1999 - Oct lastSun 2:30s 0:30 - -Rule LH 1990 1995 - Mar Sun>=1 2:30s 0 - -Rule LH 1996 max - Mar lastSun 2:30s 0 - -Rule LH 2000 only - Aug lastSun 2:30s 0:30 - -Rule LH 2001 max - Oct lastSun 2:30s 0:30 - +Rule LH 1985 only - Oct lastSun 2:00s 0:30 - +Rule LH 1986 1989 - Mar Sun>=15 2:00s 0 - +Rule LH 1986 only - Oct 19 2:00s 0:30 - +Rule LH 1987 1999 - Oct lastSun 2:00s 0:30 - +Rule LH 1990 1995 - Mar Sun>=1 2:00s 0 - +Rule LH 1996 max - Mar lastSun 2:00s 0 - +Rule LH 2000 only - Aug lastSun 2:00s 0:30 - +Rule LH 2001 max - Oct lastSun 2:00s 0:30 - Zone Australia/Lord_Howe 10:36:20 - LMT 1895 Feb 10:00 - EST 1981 Mar 10:30 LH LHST @@ -203,8 +203,8 @@ Zone Indian/Cocos 6:30 - CCT # Cocos Isl # Fiji # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Fiji 1998 max - Nov Sun>=1 2:00 1:00 S -Rule Fiji 1999 max - Feb lastSun 3:00 0 - +Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 S +Rule Fiji 1999 2000 - Feb lastSun 3:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Fiji 11:53:40 - LMT 1915 Oct 26 # Suva 12:00 Fiji FJ%sT # Fiji Time @@ -391,8 +391,10 @@ Zone Pacific/Fakaofo -11:24:56 - LMT 190 # Tonga # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S -Rule Tonga 1999 max - Oct Sat>=1 2:00s 1:00 S -Rule Tonga 2000 max - Apr Sun>=16 2:00s 0 - +Rule Tonga 1999 only - Oct 7 2:00s 1:00 S +Rule Tonga 2000 only - Mar 19 2:00s 0 - +Rule Tonga 2000 only - Nov 4 2:00s 1:00 S +Rule Tonga 2001 only - Jan 27 2:00s 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Tongatapu 12:19:20 - LMT 1901 12:20 - TOT 1941 # Tonga Time @@ -824,9 +826,8 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # Hill, and Victoria will be August 27, presumably due to the Sydney Olympics. # From Eric Ulevik, referring to Sydney's Sun Herald (2000-08-13), page 29: -# Twin Towns Services Club (in Tweed Heads, near the Queensland border) -# will maintain Queensland time. The Queensland Premier Peter Beattie -# is encouraging northern NSW towns to use Queensland time. +# The Queensland Premier Peter Beattie is encouraging northern NSW +# towns to use Queensland time. # Yancowinna @@ -868,17 +869,15 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # arrangements. The starting date for summer time on the Island will # however always coincide with the rest of NSW. -# From Jesper Norgaard (2000-09-04): -# James Lonergan said that the island always tries to stay in sync -# with the rest of NSW at all time except for the fact that they stay -# ahead half an hour when DST is not observed. If this is interpreted -# literally, they should change clocks at the exact moment that -# e.g. Canberra changes from normal to daylight saving and vice versa. +# From James Lonergan, Secretary, Lord Howe Island Board (2000-10-25): +# Lord Howe Island advances clocks by 30 minutes during DST in NSW and retards +# clocks by 30 minutes when DST finishes. Since DST was most recently +# introduced in NSW, the "changeover" time on the Island has been 02:00 as +# shown on clocks on LHI. I guess this means that for 30 minutes at the start +# of DST, LHI is actually 1 hour ahead of the rest of NSW. -# From Paul Eggert (2000-10-02): +# From Paul Eggert (2000-10-25): # For Lord Howe we use Shanks through 1989, and Lonergan thereafter, -# However, as per Norgaard we modify Shanks by assuming 02:30s switchover -# for half-hour DST. ############################################################################### @@ -945,6 +944,8 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # islands in the effort to attract tourists to witness the dawning of the new # millenium. +# http://www.fiji.gov.fj/press/2000_09/2000_09_13-05.shtml (2000-09-13) +# reports that Fiji has discontinued DST. # Johnston @@ -1097,6 +1098,16 @@ Zone Pacific/Wallis 12:15:20 - LMT 1901 # Tonga started its Daylight Saving on Saturday morning October 2nd at 0200am. # Daylight Saving ends on April 16 at 0300am which is Sunday morning. +# From Steffen Thorsen (2000-10-31): +# Back in March I found a notice on the website http://www.tongaonline.com +# that Tonga changed back to standard time one month early, on March 19 +# instead of the original reported date April 16. Unfortunately, the article +# is no longer available on the site, and I did not make a copy of the +# text, and I have forgotten to report it here. +# (Original URL was: http://www.tongaonline.com/news/march162000.htm ) + +# From Rives McDow (2000-12-01): +# Tonga is observing DST as of 2000-11-04 and will stop on 2001-01-27. ############################################################################### diff -adurpN glibc-2.2/timezone/backward glibc-2.2.1/timezone/backward --- glibc-2.2/timezone/backward Tue Oct 17 14:54:23 2000 +++ glibc-2.2.1/timezone/backward Sat Jan 6 20:35:42 2001 @@ -1,4 +1,4 @@ -# @(#)backward 7.18 +# @(#)backward 7.19 # This file provides links between current names for time zones # and their old names. Many names changed in late 1993. @@ -8,6 +8,7 @@ Link America/Tijuana America/Ensenada Link America/Indianapolis America/Fort_Wayne Link America/Indiana/Knox America/Knox_IN Link America/St_Thomas America/Virgin +Link Asia/Dhaka Asia/Dacca Link Asia/Ashgabat Asia/Ashkhabad Link Asia/Jerusalem Asia/Tel_Aviv Link Asia/Thimphu Asia/Thimbu diff -adurpN glibc-2.2/timezone/europe glibc-2.2.1/timezone/europe --- glibc-2.2/timezone/europe Tue Oct 17 14:54:23 2000 +++ glibc-2.2.1/timezone/europe Sat Jan 6 20:35:42 2001 @@ -1,4 +1,4 @@ -# @(#)europe 7.74 +# @(#)europe 7.75 # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to @@ -164,15 +164,14 @@ # main SHAEF archives held in the US National Archives, SHAEF/5252/8/516) # agree that the usage is BDST (this appears in a message dated 17 Feb 1945). -# From Joseph S. Meyers (2000-08-10): +# From Joseph S. Myers (2000-10-03): # On 18th April 1941, Sir Stephen Tallents of the BBC wrote to Sir # Alexander Maxwell of the Home Office asking whether there was any # official designation; the reply of the 21st was that there wasn't # but he couldn't think of anything better than the "Double British # Summer Time" that the BBC had been using informally. -# I've put a copy of the Home Office letter at +# http://student.cusu.cam.ac.uk/~jsm28/british-time/bbc-19410418.png # http://student.cusu.cam.ac.uk/~jsm28/british-time/ho-19410421.png -# and the BBC letter may follow if I get permission from the BBC. # From Sir Alexander Maxwell in the above-mentioned letter (1941-04-21): # [N]o official designation has as far as I know been adopted for the time diff -adurpN glibc-2.2/timezone/northamerica glibc-2.2.1/timezone/northamerica --- glibc-2.2/timezone/northamerica Tue Oct 17 14:54:24 2000 +++ glibc-2.2.1/timezone/northamerica Sat Jan 6 20:35:42 2001 @@ -1,4 +1,4 @@ -# @(#)northamerica 7.53 +# @(#)northamerica 7.54 # also includes Central America and the Caribbean # This data is by no means authoritative; if you think you know better, @@ -476,10 +476,8 @@ Link America/Louisville America/Kentucky # From Rich Wales (2000-08-29): # After prolonged debate, and despite continuing deep differences of opinion, # Wayne County (central Kentucky) is switching from Central (-0600) to Eastern -# (-0500) time. They won't "fall back" this year. See: -# -# Sara Shipley, the difference an hour makes (2000-08-29 15:33 -0400) -# +# (-0500) time. They won't "fall back" this year. See Sara Shipley, +# The difference an hour makes, Nando Times (2000-08-29 15:33 -0400). Zone America/Kentucky/Monticello -5:39:24 - LMT 1883 Nov 18 12:00 -6:00 US C%sT 1946 -6:00 - CST 1968 @@ -1089,6 +1087,23 @@ Zone America/Dawson_Creek -8:00:56 - LMT # Central Time and Southampton Island [in the Central zone] is not # required to use daylight savings. +# From +# +# Nunavut now has two time zones +# (2000-11-10): +# The Nunavut government would allow its employees in Kugluktuk and +# Cambridge Bay to operate on central time year-round, putting them +# one hour behind the rest of Nunavut for six months during the winter. +# At the end of October the two communities had rebelled against +# Nunavut's unified time zone, refusing to shift to eastern time with +# the rest of the territory for the winter. Cambridge Bay remained on +# central time, while Kugluktuk, even farther west, reverted to +# mountain time, which they had used before the advent of Nunavut's +# unified time zone in 1999. + +# From Paul Eggert (2000-12-04): +# Let's just keep track of the official times for now. + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule NT_YK 1918 only - Apr 14 2:00 1:00 D Rule NT_YK 1918 only - Oct 27 2:00 0 S @@ -1105,12 +1120,15 @@ Rule NT_YK 1987 max - Apr Sun>=1 2:00 1: Zone America/Pangnirtung -4:22:56 - LMT 1884 -4:00 NT_YK A%sT 1995 Apr Sun>=1 2:00 -5:00 Canada E%sT 1999 Oct 31 2:00 - -6:00 Canada C%sT + -6:00 Canada C%sT 2000 Oct 29 2:00 + -5:00 - EST Zone America/Iqaluit -4:33:52 - LMT 1884 # Frobisher Bay before 1987 -5:00 NT_YK E%sT 1999 Oct 31 2:00 - -6:00 Canada C%sT + -6:00 Canada C%sT 2000 Oct 29 2:00 + -5:00 - EST Zone America/Rankin_Inlet -6:08:40 - LMT 1884 - -6:00 NT_YK C%sT + -6:00 NT_YK C%sT 2000 Oct 29 2:00 + -5:00 - EST Zone America/Cambridge_Bay -7:00:20 - LMT 1884 -7:00 NT_YK M%sT 1999 Oct 31 2:00 -6:00 Canada C%sT @@ -1205,6 +1223,14 @@ Zone America/Dawson -9:17:40 - LMT 1900 # savings time so as to stay on the same time zone as the southern part of # Arizona year round. +# From Jesper Norgaard (2000-12-02): +# No changes have been implemented yet, but the new elected president +# Vicente Fox seems to agree with his presidential candidate opponent +# Labastida that daylight saving should not be discontinued, but maybe +# reduced with a couple of months, e.g. starting one month later and +# ending one month earlier: +# http://www.reforma.com/nacional/articulo/044581/ + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Mexico 1939 only - Feb 5 0:00 1:00 D Rule Mexico 1939 only - Jun 25 0:00 0 S @@ -1423,6 +1449,25 @@ Zone America/Dominica -4:05:36 - LMT 191 -4:00 - AST # Dominican Republic + +# From Steffen Thorsen (2000-10-30): +# Enrique Morales reported to me that the Dominican Republic has changed the +# time zone to Eastern Standard Time as of Sunday 29 at 2 am.... +# http://www.listin.com.do/antes/261000/republica/princi.html + +# From Paul Eggert (2000-12-04): +# That URL (2000-10-26, in Spanish) says they planned to use US-style DST. + +# From Rives McDow (2000-12-01): +# Dominican Republic changed its mind and presidential decree on Tuesday, +# November 28, 2000, with a new decree. On Sunday, December 3 at 1:00 AM the +# Dominican Republic will be reverting to 8 hours from the International Date +# Line, and will not be using DST in the foreseeable future. The reason they +# decided to use DST was to be in synch with Puerto Rico, who was also going +# to implement DST. When Puerto Rico didn't implement DST, the president +# decided to revert. + + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule DR 1966 only - Oct 30 0:00 1:00 D Rule DR 1967 only - Feb 28 0:00 0 S @@ -1434,6 +1479,8 @@ Rule DR 1972 1974 - Jan 21 0:00 0 S Zone America/Santo_Domingo -4:39:36 - LMT 1890 -4:40 - SDMT 1933 Apr 1 12:00 # S. Dom. MT -5:00 DR E%sT 1974 Oct 27 + -4:00 - AST 2000 Oct 29 02:00 + -5:00 US E%sT 2000 Dec 3 01:00 -4:00 - AST # El Salvador diff -adurpN glibc-2.2/timezone/southamerica glibc-2.2.1/timezone/southamerica --- glibc-2.2/timezone/southamerica Tue Oct 17 14:54:24 2000 +++ glibc-2.2.1/timezone/southamerica Sat Jan 6 20:35:42 2001 @@ -1,4 +1,4 @@ -# @(#)southamerica 7.37 +# @(#)southamerica 7.38 # This data is by no means authoritative; if you think you know better, # go ahead and edit the file (and please send any changes to @@ -249,7 +249,12 @@ Zone America/La_Paz -4:32:36 - LMT 1890 # # Brazilian official page # -# + +# From Jesper Norgaard (2000-11-03): +# [For an official list of which regions in Brazil use which time zones, see:] +# http://pcdsh01.on.br/Fusbr.htm +# http://pcdsh01.on.br/Fusbrhv.htm + # From Paul Eggert (2000-10-02): # The official decrees referenced below are taken from # @@ -373,6 +378,11 @@ Rule Brazil 1999 only - Oct 3 0:00 1:0 Rule Brazil 2000 only - Feb 27 0:00 0 - # Decree 3,592 (2000-09-06) # adopted by the same states as before. +# Decree 3,630 (2000-10-13) +# repeals DST in PE and RR, effective 2000-10-15 00:00. +# Decree 3,632 (2000-10-17) +# repeals DST in SE, AL, PB, RN, CE, PI and MA, effective 2000-10-22 00:00. +# # These give only one year's rules. After that, the rules are guesses # and are quite possibly wrong, but are more likely than no DST at all. Rule Brazil 2000 max - Oct Sun>=8 0:00 1:00 S @@ -381,22 +391,32 @@ Rule Brazil 2001 max - Feb Sun>=15 0:00 # Zone NAME GMTOFF RULES FORMAT [UNTIL] # -# Fernando de Noronha +# Atlantic islands: Fernando de Noronha, Trindade, Martin Vaz, +# Atol das Rocas, and Penedos de Sao Pedro e Sao Paulo Zone America/Noronha -2:09:40 - LMT 1914 -2:00 Brazil FN%sT 1990 Sep 17 -2:00 - FNT # # Amapa (AP), east Para (PA) +# East Para includes Belem, Maraba, Serra Norte, and Sao Felix do Xingu. Zone America/Belem -3:13:56 - LMT 1914 -3:00 Brazil BR%sT 1988 Sep 12 -3:00 - BRT # # Maranhao (MA), Piaui (PI), Ceara (CE), Rio Grande do Norte (RN), -# Paraiba (PB), Pernambuco (PE) (except Fernando de Noronha) +# Paraiba (PB) Zone America/Fortaleza -2:34:00 - LMT 1914 -3:00 Brazil BR%sT 1990 Sep 17 -3:00 - BRT 1999 Sep 30 - -3:00 Brazil BR%sT + -3:00 Brazil BR%sT 2000 Oct 22 + -3:00 - BRT +# +# Pernambuco (PE) (except Atlantic islands) +Zone America/Recife -2:19:36 - LMT 1914 + -3:00 Brazil BR%sT 1990 Sep 17 + -3:00 - BRT 1999 Sep 30 + -3:00 Brazil BR%sT 2000 Oct 15 + -3:00 - BRT # # Tocantins (TO) Zone America/Araguaina -3:12:48 - LMT 1914 @@ -410,7 +430,8 @@ Zone America/Maceio -2:22:52 - LMT 1914 -3:00 - BRT 1995 Oct 13 -3:00 Brazil BR%sT 1996 Sep 4 -3:00 - BRT 1999 Sep 30 - -3:00 Brazil BR%sT + -3:00 Brazil BR%sT 2000 Oct 22 + -3:00 - BRT # # Bahia (BA), Goias (GO), Distrito Federal (DF), Minas Gerais (MG), # Espirito Santo (ES), Rio de Janeiro (RJ), Sao Paulo (SP), Parana (PR), @@ -425,6 +446,7 @@ Zone America/Cuiaba -3:44:20 - LMT 1914 -4:00 Brazil AM%sT # # west Para (PA), Rondonia (RO) +# West Para includes Altamira, Oribidos, Prainha, Oriximina, and Santarem. Zone America/Porto_Velho -4:15:36 - LMT 1914 -4:00 Brazil AM%sT 1988 Sep 12 -4:00 - AMT @@ -433,22 +455,29 @@ Zone America/Porto_Velho -4:15:36 - LMT Zone America/Boa_Vista -4:02:40 - LMT 1914 -4:00 Brazil AM%sT 1988 Sep 12 -4:00 - AMT 1999 Sep 30 - -4:00 Brazil AM%sT + -4:00 Brazil AM%sT 2000 Oct 15 + -4:00 - AMT # -# Amazonas (AM) +# east Amazonas (AM): Boca do Acre, Jutai, Manaus, Floriano Peixoto Zone America/Manaus -4:00:04 - LMT 1914 -4:00 Brazil AM%sT 1988 Sep 12 -4:00 - AMT 1993 Sep 28 -4:00 Brazil AM%sT 1994 Sep 22 -4:00 - AMT # +# west Amazonas (AM): Atalaia do Norte, Boca do Maoco, Benjamin Constant, +# Eirunepe, Envira, Ipixuna +Zone America/Eirunepe -4:39:28 - LMT 1914 + -5:00 Brazil AC%sT 1988 Sep 12 + -5:00 - ACT 1993 Sep 28 + -5:00 Brazil AC%sT 1994 Sep 22 + -5:00 - ACT +# # Acre (AC) # Rio_Branco is too ambiguous, since there's a Rio Branco in Uruguay too. Zone America/Porto_Acre -4:31:12 - LMT 1914 -5:00 Brazil AC%sT 1988 Sep 12 -5:00 - ACT -# -# Martin Vaz and Trindade are like America/Noronha. # Chile diff -adurpN glibc-2.2/timezone/test-tz.c glibc-2.2.1/timezone/test-tz.c --- glibc-2.2/timezone/test-tz.c Mon Aug 30 14:04:48 1999 +++ glibc-2.2.1/timezone/test-tz.c Sat Jan 6 20:35:42 2001 @@ -46,11 +46,11 @@ main (int argc, char ** argv) if (errors == 0) { puts ("No errors."); - exit (EXIT_SUCCESS); + return EXIT_SUCCESS; } else { printf ("%d errors.\n", errors); - exit (EXIT_FAILURE); + return EXIT_FAILURE; } } diff -adurpN glibc-2.2/timezone/tst-timezone.c glibc-2.2.1/timezone/tst-timezone.c --- glibc-2.2/timezone/tst-timezone.c Mon Aug 30 12:37:44 1999 +++ glibc-2.2.1/timezone/tst-timezone.c Sat Jan 6 20:35:42 2001 @@ -1,6 +1,6 @@ -/* Copyright (C) 1998, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. - Contributed by Andreas Jaeger , 1998. + Contributed by Andreas Jaeger , 1998. 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 @@ -52,7 +52,7 @@ static const struct test_times tests[] = /* This string will be used for `putenv' calls. */ char envstring[100]; -void +static void print_tzvars (void) { printf ("tzname[0]: %s\n", tzname[0]); @@ -62,7 +62,7 @@ print_tzvars (void) } -void +static void check_tzvars (const char *name, int dayl, int timez, const char *const tznam[]) { int i; diff -adurpN glibc-2.2/timezone/zone.tab glibc-2.2.1/timezone/zone.tab --- glibc-2.2/timezone/zone.tab Tue Oct 17 14:54:24 2000 +++ glibc-2.2.1/timezone/zone.tab Sat Jan 6 20:35:42 2001 @@ -1,4 +1,4 @@ -# @(#)zone.tab 1.20 +# @(#)zone.tab 1.21 # # TZ zone descriptions # @@ -61,7 +61,7 @@ AW +1230-06858 America/Aruba AZ +4023+04951 Asia/Baku BA +4352+01825 Europe/Sarajevo BB +1306-05937 America/Barbados -BD +2343+09025 Asia/Dacca +BD +2343+09025 Asia/Dhaka BE +5050+00420 Europe/Brussels BF +1222-00131 Africa/Ouagadougou BG +4241+02319 Europe/Sofia @@ -71,16 +71,18 @@ BJ +0629+00237 Africa/Porto-Novo BM +3217-06446 Atlantic/Bermuda BN +0456+11455 Asia/Brunei BO -1630-06809 America/La_Paz -BR -0351-03225 America/Noronha Fernando de Noronha +BR -0351-03225 America/Noronha Atlantic islands BR -0127-04829 America/Belem Amapa, E Para -BR -0343-03830 America/Fortaleza NE Brazil (MA, PI, CE, RN, PR, PE) +BR -0343-03830 America/Fortaleza NE Brazil (MA, PI, CE, RN, PR) +BR -0803-03454 America/Recife Pernambuco BR -0712-04812 America/Araguaina Tocantins BR -0940-03543 America/Maceio Alagoas, Sergipe BR -2332-04637 America/Sao_Paulo S & SE Brazil (BA, GO, DF, MG, ES, RJ, SP, PR, SC, RS) BR -1535-05605 America/Cuiaba Mato Grosso, Mato Grosso do Sul BR -0846-06354 America/Porto_Velho W Para, Rondonia BR +0249-06040 America/Boa_Vista Roraima -BR -0308-06001 America/Manaus Amazonas +BR -0308-06001 America/Manaus E Amazonas +BR -0640-06952 America/Eirunepe W Amazonas BR -0934-06731 America/Porto_Acre Acre BS +2505-07721 America/Nassau BT +2728+08939 Asia/Thimphu @@ -94,11 +96,11 @@ CA +5320-06025 America/Goose_Bay Atlanti CA +4531-07334 America/Montreal Eastern Time - Ontario & Quebec - most locations CA +4901-08816 America/Nipigon Eastern Time - Ontario & Quebec - places that did not observe DST 1967-1973 CA +4823-08915 America/Thunder_Bay Eastern Time - Thunder Bay, Ontario +CA +6608-06544 America/Pangnirtung Eastern Standard Time - Pangnirtung, Nunavut +CA +6344-06828 America/Iqaluit Eastern Standard Time - east Nunavut +CA +6245-09210 America/Rankin_Inlet Eastern Standard Time - central Nunavut CA +4953-09709 America/Winnipeg Central Time - Manitoba & west Ontario CA +4843-09429 America/Rainy_River Central Time - Rainy River & Fort Frances, Ontario -CA +6608-06544 America/Pangnirtung Central Time - Pangnirtung, Nunavut -CA +6344-06828 America/Iqaluit Central Time - east Nunavut -CA +6245-09210 America/Rankin_Inlet Central Time - central Nunavut CA +6903-10505 America/Cambridge_Bay Central Time - west Nunavut CA +5024-10439 America/Regina Central Standard Time - Saskatchewan - most locations CA +5017-10750 America/Swift_Current Central Standard Time - Saskatchewan - midwest diff -adurpN glibc-2.2/version.h glibc-2.2.1/version.h --- glibc-2.2/version.h Thu Nov 9 11:34:27 2000 +++ glibc-2.2.1/version.h Sat Jan 6 22:26:45 2001 @@ -1,4 +1,4 @@ /* This file just defines the current version number of libc. */ #define RELEASE "stable" -#define VERSION "2.2" +#define VERSION "2.2.1" diff -adurpN glibc-2.2/wcsmbs/Makefile glibc-2.2.1/wcsmbs/Makefile --- glibc-2.2/wcsmbs/Makefile Thu Sep 7 11:56:50 2000 +++ glibc-2.2.1/wcsmbs/Makefile Wed Nov 22 11:00:06 2000 @@ -39,7 +39,8 @@ routines := wcscat wcschr wcscmp wcscpy wcscasecmp wcsncase wcscasecmp_l wcsncase_l \ wcsmbsload -tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc +tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc tst-mbrtowc \ + tst-wcrtomb include ../Rules @@ -62,3 +63,5 @@ CFLAGS-wcstold_l.c = -I../stdlib CFLAGS-wcstof_l.c = -I../stdlib tst-btowc-ENV = LOCPATH=$(common-objpfx)localedata +tst-mbrtowc-ENV = LOCPATH=$(common-objpfx)localedata +tst-wcrtomb-ENV = LOCPATH=$(common-objpfx)localedata diff -adurpN glibc-2.2/wcsmbs/mbrtowc.c glibc-2.2.1/wcsmbs/mbrtowc.c --- glibc-2.2/wcsmbs/mbrtowc.c Thu Jun 29 12:40:42 2000 +++ glibc-2.2.1/wcsmbs/mbrtowc.c Wed Nov 22 11:00:06 2000 @@ -42,7 +42,7 @@ __mbrtowc (wchar_t *pwc, const char *s, size_t dummy; const unsigned char *inbuf; char *outbuf = (char *) (pwc ?: buf); - int flush; + int flush = 0; /* Set information for this step. */ data.__invocation_counter = 0; @@ -60,8 +60,6 @@ __mbrtowc (wchar_t *pwc, const char *s, n = 1; flush = 1; } - else - flush = *s == '\0' ? 1 : 0; /* Tell where we want the result. */ data.__outbuf = outbuf; diff -adurpN glibc-2.2/wcsmbs/tst-mbrtowc.c glibc-2.2.1/wcsmbs/tst-mbrtowc.c --- glibc-2.2/wcsmbs/tst-mbrtowc.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/wcsmbs/tst-mbrtowc.c Sat Jan 13 10:48:52 2001 @@ -0,0 +1,137 @@ +/* Copyright (C) 2000, 2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 2000. + + 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. */ + +#include +#include +#include +#include +#include +#include + + +static int check_ascii (const char *locname); + +/* Test for mbrtowc, contributed by Markus Kuhn . */ +static int +utf8_test (void) +{ + /* UTF-8 single byte feeding test for mbrtowc(). */ + wchar_t wc; + mbstate_t s; + const char *locale = "de_DE.UTF-8"; + + if (!setlocale (LC_CTYPE, locale)) + { + fprintf (stderr, "locale '%s' not available!\n", locale); + exit (1); + } + wc = 42; /* arbitrary number */ + memset (&s, 0, sizeof (s)); /* get s into initial state */ + assert (mbrtowc (&wc, "\xE2", 1, &s) == (size_t) - 2); /* 1st byte processed */ + assert (mbrtowc (&wc, "\x89", 1, &s) == (size_t) - 2); /* 2nd byte processed */ + assert (wc == 42); /* no value has not been stored into &wc yet */ + assert (mbrtowc (&wc, "\xA0", 1, &s) == 1); /* 3nd byte processed */ + assert (wc == 0x2260); /* E2 89 A0 = U+2260 (not equal) decoded correctly */ + assert (mbrtowc (&wc, "", 1, &s) == 0); /* test final byte processing */ + assert (wc == 0); /* test final byte decoding */ + + return 0; +} + + +int +main (void) +{ + int result = 0; + + /* Check mapping of ASCII range for some character sets which have + ASCII as a subset. For those the wide char generated must have + the same value. */ + setlocale (LC_ALL, "C"); + result |= check_ascii (setlocale (LC_ALL, NULL)); + + setlocale (LC_ALL, "de_DE.UTF-8"); + result |= check_ascii (setlocale (LC_ALL, NULL)); + result |= utf8_test (); + + setlocale (LC_ALL, "ja_JP.EUC-JP"); + result |= check_ascii (setlocale (LC_ALL, NULL)); + + return result; +} + + +static int +check_ascii (const char *locname) +{ + int c; + int res = 0; + + printf ("Testing locale \"%s\":\n", locname); + + for (c = 0; c <= 127; ++c) + { + char buf[MB_CUR_MAX]; + wchar_t wc = 0xffffffff; + mbstate_t s; + size_t n; + int i; + + for (i = 0; i < MB_CUR_MAX; ++i) + buf[i] = c + i; + + memset (&s, '\0', sizeof (s)); + + n = mbrtowc (&wc, buf, MB_CUR_MAX, &s); + if (n == (size_t) -1) + { + printf ("%s: '\\x%x': encoding error\n", locname, c); + ++res; + } + else if (n == (size_t) -2) + { + printf ("%s: '\\x%x': incomplete character\n", locname, c); + ++res; + } + else if (n == 0 && c != 0) + { + printf ("%s: '\\x%x': 0 returned\n", locname, c); + ++res; + } + else if (n != 0 && c == 0) + { + printf ("%s: '\\x%x': not 0 returned\n", locname, c); + ++res; + } + else if (c != 0 && n != 1) + { + printf ("%s: '\\x%x': not 1 returned\n", locname, c); + ++res; + } + else if (wc != (wchar_t) c) + { + printf ("%s: '\\x%x': wc != L'\\x%x'\n", locname, c, c); + ++res; + } + } + + printf (res == 1 ? "%d error\n" : "%d errors\n", res); + + return res != 0; +} diff -adurpN glibc-2.2/wcsmbs/tst-wcrtomb.c glibc-2.2.1/wcsmbs/tst-wcrtomb.c --- glibc-2.2/wcsmbs/tst-wcrtomb.c Wed Dec 31 16:00:00 1969 +++ glibc-2.2.1/wcsmbs/tst-wcrtomb.c Sat Nov 18 13:07:22 2000 @@ -0,0 +1,95 @@ +/* Copyright (C) 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 2000. + + 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. */ + +#include +#include +#include +#include +#include + + +static int check_ascii (const char *locname); + + +int +main (void) +{ + int result = 0; + + /* Check mapping of ASCII range for some character sets which have + ASCII as a subset. For those the wide char generated must have + the same value. */ + setlocale (LC_ALL, "C"); + result |= check_ascii (setlocale (LC_ALL, NULL)); + + setlocale (LC_ALL, "de_DE.UTF-8"); + result |= check_ascii (setlocale (LC_ALL, NULL)); + + setlocale (LC_ALL, "ja_JP.EUC-JP"); + result |= check_ascii (setlocale (LC_ALL, NULL)); + + return result; +} + + +static int +check_ascii (const char *locname) +{ + wchar_t wc; + int res = 0; + + printf ("Testing locale \"%s\":\n", locname); + + for (wc = 0; wc <= 127; ++wc) + { + char buf[2 * MB_CUR_MAX]; + mbstate_t s; + size_t n; + + memset (buf, '\xff', sizeof (buf)); + memset (&s, '\0', sizeof (s)); + + n = wcrtomb (buf, wc, &s); + if (n == (size_t) -1) + { + printf ("%s: '\\x%x': encoding error\n", locname, (int) wc); + ++res; + } + else if (n == 0) + { + printf ("%s: '\\x%x': 0 returned\n", locname, (int) wc); + ++res; + } + else if (n != 1) + { + printf ("%s: '\\x%x': not 1 returned\n", locname, (int) wc); + ++res; + } + else if (wc != (wchar_t) buf[0]) + { + printf ("%s: L'\\x%x': buf[0] != '\\x%x'\n", locname, (int) wc, + (int) wc); + ++res; + } + } + + printf (res == 1 ? "%d error\n" : "%d errors\n", res); + + return res != 0; +} diff -adurpN glibc-2.2/wctype/test_wcfuncs.c glibc-2.2.1/wctype/test_wcfuncs.c --- glibc-2.2/wctype/test_wcfuncs.c Wed Jun 21 11:11:06 2000 +++ glibc-2.2.1/wctype/test_wcfuncs.c Sat Jan 6 20:35:42 2001 @@ -84,5 +84,5 @@ main (int argc, char *argv[]) if (result == 0) puts ("All test successful!"); - exit (result); + return result != 0; } diff -adurpN glibc-2.2/wctype/test_wctype.c glibc-2.2.1/wctype/test_wctype.c --- glibc-2.2/wctype/test_wctype.c Sun Dec 14 14:22:32 1997 +++ glibc-2.2.1/wctype/test_wctype.c Sat Jan 6 20:35:42 2001 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 2000 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 @@ -79,5 +79,5 @@ main (int argc, char *argv[]) if (result == 0) puts ("All test successful!"); - exit (result); + return result; }