diff -durpN glibc-2.0.1/BUGS glibc-2.0.2/BUGS --- glibc-2.0.1/BUGS Wed Dec 31 19:00:00 1969 +++ glibc-2.0.2/BUGS Fri Mar 21 22:30:57 1997 @@ -0,0 +1,62 @@ + List of known bugs (certainly very incomplete) + ---------------------------------------------- + +Time-stamp: <1997-03-22T04:30:57+0100 drepper> + +This following list contains those bugs which I'm aware of. Please +make sure that bugs you report are not listed here. If you can fix one +of these bugs/limitations I'll certainly be glad to receive a patch. + +Another source of information about bugs is the problem data base of the +GNU project. There is an easy to use WWW interface is available at + + http://pogo.gnu.ai.mit.edu:8080/cgi-bin/wwwgnats.pl + +I would appreciate it very much if you could verify the problem was not +reported before by looking though the database. To make the information +in this data as useful as possible please report bugs always using the +`glibcbug' shell script which gets installed with GNU libc. + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Severity: [ *] to [***] + + +[ **] For GNU libc on Linux, there is still no solution for the UTMP + problem. + [Among others: PR libc/39] + +[ **] There are problems with signal handling when using LinuxThreads. + +[ **] The `cbrtl' function is inaccurate. The algorithm used for `double' + and `float' is not usable for `long double'. + +[ **] Not really a bug, but it could lead to such: + The RPC code is ugly ugly ugly. It's more or less verbatim taken + from Sun's code and therefore mostly lacks complete prototypes and + (more important) the use of `const'. It *definitely* needs to be + cleaned. + +[ *] The precision of the `sinhl' and/or `asinhl' function do not seem + to be the best. + +[ *] The syslog function should print to the console if the LOG_CONS + flag was given. + [PR libc/72] + +[ *] On Linux, the is not clean enough to satisfy + the C++ namespace rules. Declaring `struct fd_set' also makes + `fd_set' available in the global namespace which conflicts with + the definition of `fd_set' in glibc. + [PR libc/79] + +[ *] On Linux, there should be a way to prevent defining the symbol + NGROUPS_MAX in the header file. In glibc it + is defined in which must not make the other + symbols in available. + [PR libc/140] + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Ulrich Drepper +drepper@cygnus.com diff -durpN glibc-2.0.1/ChangeLog glibc-2.0.2/ChangeLog --- glibc-2.0.1/ChangeLog Mon Feb 3 21:02:31 1997 +++ glibc-2.0.2/ChangeLog Fri Mar 21 23:10:45 1997 @@ -1,3 +1,1265 @@ +1997-03-22 04:53 Ulrich Drepper + + * Net release 2.0.2. + +1997-03-22 04:37 Ulrich Drepper + + * sysdeps/unix/sysv/linux/termbits.h (OXTABS): Define as alias for + XTABS. + * sysdeps/unix/sysv/linux/alpha/termbits.h (OXTABS): Likewise. + * termios/sys/ttydefaults.h: Partly revert patch by Andreas Schwab + of Sun Dec 15 16:33:44 1996. + Proposed by Thomas Bushnell . + +1997-03-21 20:55 Ulrich Drepper + + * Makefile (distribute): Add BUGS. + + * sysdeps/generic/machine-gmon.h: Update copyright. + + * sysdeps/i386/Makefile [$(subdir)=gmon] (sysdep_routines): Add + i386-mcount. + * sysdeps/i386/dl-machine.h [PROF] (_dl_runtime_resolve): Don't + use regparam mechanism for call of `fixup' call. + * sysdeps/i386/Dist: New file. + * sysdeps/i386/i386-mcount.S: New file. `mcount' entry point. + * sysdeps/i386/machine-gmon.h: New file. i386 specific version + of gmon definitions. + +1997-03-20 13:39 Andreas Jaeger + + * stdlib/tst-strtol.c (main): Save the value of errno since printf + may modify it, use the saved errno everywhere. + * stdlib/tst-strtod.c (main): Likewise. + +1997-03-21 05:54 Ulrich Drepper + + * posix/glob.c (glob): Fix completely broken handling of + GLOB_BRACE and partly broken handling of GLOB_TILDE. + Reported by Dennis Henriksen . + +1997-03-20 20:22 Ulrich Drepper + + * sysdeps/unix/sysv/linux/readv.c: Don't emulate readv with small + UIO_FASTIOV value by multiple readv calls since we need atomicity. + * sysdeps/unix/sysv/linux/writev.c: Likewise. + Reported by Matthis Urlichs. + +1997-03-20 04:34 Roland McGrath + + * sysdeps/unix/sysv/linux/i386/sysdep.S (CALL_MCOUNT): Clear this + macro so ENTRY(__syscall_error) doesn't insert a call to _mcount, + which clobbers %eax. + + * Makeconfig [$(elf)=yes] (+prector, +postctor): New variables for + crtbegin.o/crtend.o, using gcc to find them. + (+link): Use them. + +1997-03-20 00:06 Richard Henderson + + * gmon/sys/gmon.h: Revert the bulk of the 960930 changes, as they + affect the alignment, and therefore the end padding of the structs. + Reported by David Mosberger . + * gmon/gmon.c: Declare the variables with aligned tags to compensate. + Use __writev instead of write for the I/O. + + * misc/sys/uio.h: Declare __writev and __readv. + * sysdeps/posix/readv.c: Rename and alias readv to __readv. + * sysdeps/posix/writev.c: Likewise for writev. + * sysdeps/stub/readv.c: Likewise. + * sysdeps/stub/writev.c: Likewise. + * sysdeps/unix/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/readv.c: Likewise. + * sysdeps/unix/sysv/linux/writev.c: Likewise. + + * stdlib/testdiv.c: Exit with error status when we have an error. + * sysdeps/alpha/div.S: Initialize `quotient' and `mask'. + * sysdeps/alpha/ldiv.S: Likewise. + + * sysdeps/unix/sysv/linux/alpha/ioperm.c: Include ctype.h for isdigit. + +1997-03-20 04:21 Ulrich Drepper + + * sysdeps/stub/msync.c (msync): Add parameter `flags' to match + generic prototype. + + * sysdeps/libm-ieee754/w_pow.c: Add definition for `signbit' function. + Future releases will have this function. + * sysdeps/libm-ieee754/w_powf.c: Likewise. + * sysdeps/libm-ieee754/w_powl.c: Likewise. + Reported by HJ Lu. + +1997-03-20 01:49 Ulrich Drepper + + * setjmp/setjmp.h: Change references of ANSI C to ISO C. + * sysdeps/i386/bsd-_setjmp.S: Correct fatal bug in jump to + `__sigsetjmp' in PIC code. + * sysdeps/i386/bsd-setjmp.S: Likewise. + + * sysdeps/libm-i387/e_pow.S: Correct recognition of mantissa + overflow. + * sysdeps/libm-i387/e_powf.S: Likewise. + * sysdeps/libm-i387/s_expm1.S: Handle x == +-0 as a special + case since expm1(-0) == -0. + * sysdeps/libm-i387/s_expm1f.S: Likewise. + * sysdeps/libm-i387/s_expm1l.S: Likewise. + * sysdeps/libm-ieee754/s_modf.c: Optimize code by avoiding unneeded + access to FP number. + * sysdeps/libm-ieee754/s_modff.c: Likewise. + * sysdeps/libm-ieee754/s_modfl.c: Correct former completely bogus + code. It never worked correctly. + * sysdeps/libm-ieee754/s_tanh.c: Handle x == +-0 as a special + case since tanh(-0) == -0. + * sysdeps/libm-ieee754/s_tanhf.c: Likewise. + * sysdeps/libm-ieee754/s_tanhl.c (__tanhl): Correct handling of -inf. + +1997-03-19 21:13 Ulrich Drepper + + * time/Makefile: Correct dependencies for test-tz. + + * sysdeps/unix/sysv/linux/writev.c: Don't use MAX_IOVEC. Test for + UIO_FASTIOV and set to 8 if not available. + * sysdeps/unix/sysv/linux/readv.c: Likewise. + Patch by HJ Lu. + + * sysdeps/unix/sysv/linux/xstat.c: Include , not + "kernel_stat.h". + * sysdeps/unix/sysv/linux/lxstat.c: Likewise. + * sysdeps/unix/sysv/linux/fxstat.c: Likewise. + Reported by fabsoft@fabsoft2.zarm.uni-bremen.de. + +1997-03-19 01:40 Ulrich Drepper + + * sysdeps/unix/sysv/sco3.2.4/Dist: New file. + + * sysdeps/unix/sysv/sysv4/Dist: Add __getpgid.c and __setpgid.c. + + * sysdeps/unix/bsd/Dist: Add bsdstat.h, setrguid.c, and setruid.c. + + * sysdeps/unix/sysv/Dist: Add direct.h. + + * sysdeps/unix/sysv/linux/Dist: Add netinet/tcp.h. + + * Make-dist ($(tardir).tar): Prefer writing temporary file to + $TMPDIR is available. The default is /tmp. + + * sysdeps/generic/ip.h: Move to... + * sysdeps/generic/netinet/ip.h: ...here. + + * sysdeps/i386/setjmp.S (__setjmp): Fix fatal bug where 0 argument + is placed in wrong place on the stack. + Reported by Marc Lehmann . + +1997-03-18 23:18 Ulrich Drepper + + * time/offtime.c (__offtime): Change type of `yg' to long int. + Reported by a sun . + +1997-03-18 23:09 a sun + + * sysdeps/unix/sysv/linux/net/if_ppp.h (PPP_VERSION): Define to + 2.2.0 to prevent version mismatch. + +1997-03-09 12:36 H.J. Lu + + * Make-dist (srcs): Add $(test-srcs). + * MakeTAGS (all-sources): Likewise. + * Makerules (depfiles, common-mostlyclean): Likewise. + * Rules (tests): Likewise. + +1997-03-18 05:28 Roland McGrath + + * elf/dl-reloc.c (RESOLVE): Don't try to resolve local symbols. + +1997-03-17 21:39 Philip Blundell + + * nis/nss_nis/nis-service.c (_nss_nis_getservbyname_r): Allow + protocol=NULL to match any protocol rather than returning an + error. + +1997-03-17 19:00 Philip Blundell + + * nss/nss_files/files-service.c (servbyname): Match any protocol + if proto==NULL. + +1997-03-18 05:15 Ulrich Drepper + + * sysdeps/unix/sysv/linux/alpha/fcntlbits.h: Don't define O_NORW. + * sysdeps/unix/sysv/linux/fcntlbits.h: Likewise. + Proposed by Thomas Bushnell, n/BSG. + +1997-03-18 07:53 H.J. Lu + + * sysdeps/generic/setenv.c (setenv): Don't copy name when we reuse + the buffer for replacement. + +1997-03-16 19:30 H.J. Lu + + * sysdeps/unix/sysv/linux/syscalls.list: Add sys_fstat, + sys_lstat and sys_stat. + +1997-03-17 12:52 Thomas Bushnell, n/BSG + + * mach/devstream.c (output/write_some): Don't try and write more + than IO_INBAND_MAX in a single call to device_write_inband. + +1997-03-17 04:00 Ulrich Drepper + + * sysdeps/libm-ieee754/w_atan2.c: Don't ignore exception if library + type is SVID. + * sysdeps/libm-ieee754/w_atan2f.c: Likewise. + * sysdeps/libm-ieee754/w_atan2l.c: Likewise. + + * sysdeps/unix/sysv/linux/sys/mman.h (msync): Add description for + FLAGS parameter. + +1997-03-16 18:43 Ulrich Drepper + + * manual/filesys.texi: Add documentation for scandir and alphasort. + * manual/examples/dir2.c: New example for scandir. + + * sysdeps/i386/huge_val.h: New file. ix87 specific infinity values. + * sysdeps/m68k/huge_val.h: New file. m68k specific infinity values. + * sysdeps/ieee754/huge_val.h: Remove definition of long double + definition. Make it the same as the double definition. + + * sysdeps/libm-i387/e_acos.S: Fix bug in FPU stack handling. + * sysdeps/libm-i387/e_acosf.S: Likewise. + * sysdeps/libm-i387/e_acosl.S: Likewise. + * sysdeps/libm-i387/e_asin.S: Likewise. + * sysdeps/libm-i387/e_asinf.S: Likewise. + * sysdeps/libm-i387/e_asinl.S: Likewise. + * sysdeps/libm-i387/e_exp.S: Likewise. + * sysdeps/libm-i387/e_expf.S: Likewise. + * sysdeps/libm-i387/e_expl.S: Likewise. + * sysdeps/libm-i387/s_scalbn.S: Likewise. + * sysdeps/libm-i387/s_scalbnf.S: Likewise. + * sysdeps/libm-i387/s_scalbnl.S: Likewise. + + * sysdeps/libm-i387/e_log.S: Optimize branch code. + * sysdeps/libm-i387/e_logf.S: Likewise. + * sysdeps/libm-i387/e_logl.S: Likewise. + * sysdeps/libm-i387/e_log10.S: Likewise. + * sysdeps/libm-i387/e_log10f.S: Likewise. + * sysdeps/libm-i387/e_log10l.S: Likewise. + + * sysdeps/libm-i387/e_pow.S: Major rewrite to handle special cases. + * sysdeps/libm-i387/e_powf.S: Likewise. + * sysdeps/libm-i387/e_powl.S: Likewise. + + * sysdeps/libm-i387/s_expm1.S: Change return value for -inf + argument to -1.0. + * sysdeps/libm-i387/s_expm1f.S: Likewise. + * sysdeps/libm-i387/s_expm1l.S: Likewise. + + * sysdeps/libm-i387/s_isinfl.c: Return -1 for -inf. + + * sysdeps/libm-i387/s_logbl.S: Correct return value. Discard first + stack element after fxtract. + + * sysdeps/libm-ieee754/e_atan2l.c: New file. `long double' + implementation for atan2 function. + + * sysdeps/libm-ieee754/k_standard.c: Return NAN for libm not in + _SVID_ mode when acos, asin, atan2, log, log10 is called with + argument out of range. + Add new error case for pow(+0,neg). + + * sysdeps/libm-ieee754/s_isinf.c: Rewrite to return -1 for -inf. + * sysdeps/libm-ieee754/s_isinff.c: Likewise. + * sysdeps/libm-ieee754/s_isinfl.c: Likewise. + + * sysdeps/libm-ieee754/s_scalbnl.c (huge, tiny): Adapt values for + long double type. + + * sysdeps/libm-ieee754/w_atan2.c: Do not raise exception expect when + in SVID mode. + * sysdeps/libm-ieee754/w_atan2f.c: Likewise. + * sysdeps/libm-ieee754/w_atan2l.c: Likewise. + + * sysdeps/libm-ieee754/w_pow.c: Distinguish error cases for x is +0 + or -0. + * sysdeps/libm-ieee754/w_powf.c: Likewise. + * sysdeps/libm-ieee754/w_powl.c: Likewise. + + * sysdeps/posix/isfdtype.c: Add cast to prevent warning. + + * sysdeps/stub/fcntlbits.h: Update copyright. + * sysdeps/unix/bsd/fcntlbits.h: Likewise. + * sysdeps/unix/bsd/bsd4.4/fcntlbits.h: Likewise. + * sysdeps/unix/bsd/sun/sunos4/fcntlbits.h: Likewise. + * sysdeps/unix/bsd/ultrix4/fcntlbits.h: Likewise. + * sysdeps/unix/common/fcntlbits.h: Likewise. + * sysdeps/unix/sysv/fcntlbits.h: Likewise. Define O_FSYNC as alias + of O_SYNC. Add BSD compatibility macros FAPPEND, FFSYNC, FNONBLOCK, + and FNDELAY. + * sysdeps/unix/sysv/irix4/fcntlbits.h: Likewise. + + * sysdeps/unix/readdir_r.c: Don't copy whole `struct dirent' record, + only reclen bytes. + + * sysdeps/unix/sysv/linux/fcntlbits.h [__USE_GNU]: Add O_READ, O_WRITE + and O_NORW. + * sysdeps/unix/sysv/linux/alpha/fcntlbits.h: Likewise. + + * sysdeps/unix/sysv/linux/init-first.h: Add copyright. + + * sysdeps/unix/sysv/linux/fxstat.c: New file. Rewrite kernel-level + struct stat to user-level form. + * sysdeps/unix/sysv/linux/lxstat: New file. + * sysdeps/unix/sysv/linux/xstat: New file. + * sysdeps/unix/sysv/linux/kernel_stat.h: Define struct stat used in + kernel. + * sysdeps/unix/sysv/linux/statbuf.h (struct stat): Change definition + to use prescribed types for elements. + (_STAT_VER): Change to value 3. + * sysdeps/unix/sysv/linux/alpha/statbuf.h: Likewise. + * sysdeps/unix/sysv/linux/Dist: Add kernel_stat.h. + * sysdeps/unix/sysv/linux/alpha/Dist: Likewise. + + * time/Makefile: Correct dependencies for test-tz. + + * sysdeps/generic/sys/mman.h (msync): Add third parameter. + +1997-03-16 15:02 a sun + + * sysdeps/unix/sysv/linux/net/if_ppp.h: Don't use incompatible + kernel header. + * sysdeps/unix/sysv/linux/net/ppp_defs.h: Likewise. + +1997-03-14 17:15 Ulrich Drepper + + * db/hash/hash_bigkey.c (__big_delete): Don't call __free_ovflpage + without testing for last_bfp to be NULL. + Reported by fabsoft@fabserver1.zarm.uni-bremen.de. + +1997-03-14 04:00 Kurt Garloff + + * sysdeps/unix/sysv/linux/fcntlbits.h (O_FSYNC): Make alias for O_SYNC. + (FASYNC): Move to __USE_BSD section. Create new macro O_ASYNC. + +1997-03-14 02:50 Ulrich Drepper + + * nis/nss_nis/nis-hosts.c (_nss_nis_gethostbyname2_r): New + functions. Compare result for correct address type. + (_nss_nis_gethostbyname_r): Use _nss_nis_gethostbyname2_r. + * nss/nss_files/files-hosts.c: Likewise. + Reported by Mirko Streckenbach . + +1997-02-17 01:40 Zlatko Calusic + + * time/strptime.c (recursive): Return rp to caller. + (strptime_internal): First check for long names, then abbreviated + (month & weekday). + +1997-03-11 17:00 Andreas Schwab + + * time/strptime.c (strptime_internal) [case 'Y']: Always subtract + 1900 from year, regardless of century. + +1997-03-12 05:43 Ulrich Drepper + + * stdlib/strtod.c (_tens_in_limb) [BITS_PER_MP_LIMB > 32]: Make + all numbers unsigned to make buggy gccs happy. + Patch by Bryan W. Headley . + + * sysdeps/unix/sysv/linux/netinet/ip.h: Add backward-compatibility + definitions. Patch by a sun . + Pretty print header. + + * Makerules (build-shlib): Also create symlink if library is versioned. + Based on a patch by H.J. Lu . + Remove special rule to libc.so symlink. + +1997-03-11 22:39 Ulrich Drepper + + * sysdeps/libm-ieee754/k_standard.c (__kernel_standard): Correct + return values for acos, asin, and atan2. + Reported by Andreas Jaeger . + +1997-03-10 18:16 Thorsten Kukuk + + * nis/ypclnt.c (__yp_bind): Fix possible buffer overflow. + +1997-03-10 18:06 Bernd Schmidt + + * dirent/alphasort.c (alphasort): Interpret arguments as pointers + to pointers to directory entries so that alphasort really can be + used as argument for scandir. + +1997-03-09 23:33 Andreas Jaeger + + * string/strdup.c: Declare memcpy if !(_LIBC || STDC_HEADERS) + instead of strcpy. + +1997-03-10 03:34 Ulrich Drepper + + * catgets/catgets.c (catopen): Always add NLSPATH to search path for + catalogs, not only if the envvar NLSPATH is not available. + Reported by Andries.Brouwer@cwi.nl. + +1997-03-10 02:46 Ulrich Drepper + + * Makeconfig (localtime-file): Don't define using installation + directory. + (inst_localtime-file): New variable. + * time/Makefile (installed-localtime-file): Use inst_localtime-file. + Reported by Edward Seidl . + +1997-03-10 02:31 H.J. Lu + + * time/Makefile: Add source files to dependencies for test data. + +1997-03-09 22:53 Thorsten Kukuk + + * nis/nss_nis/nis-ethers.c: Don't ignore return value of yp_all. + * nis/nss_nis/nis-proto.c: Likewise. + * nis/nss_nis/nis-rpc.c: Likewise. + * nis/nss_nis/nis-service.c: Likewise. + +1997-03-20 20:44 Thomas Bushnell, n/BSG + + * sysdeps/mach/hurd/euidaccess.c: Define as __euidaccess and make + euidaccess weak alias. + +1997-03-07 10:30 Thomas Bushnell, n/BSG + + * sysdeps/generic/netinet/in.h: Include . + + * sysdeps/generic/sys/mman.h (msync): Mention third arg. + +1997-03-05 10:40 Thomas Bushnell, n/BSG + + * hurd/hurd.h (vpprintf): Include . New declaration. + + * hurd/set-host.c (_hurd_set_host_config): Cast second arg to + __file_name_split. + + * mach/mach_error.c (mach_error_string_int): Give full prototype. + * mach/errstring.c (mach_error_string_int): Likewise. + * mach/error_compat.c (__mach_error_map_compat): Likewise. + * hurd/vpprintf.c (pwrite, vpprintf): Likewise. + * stdio/vasprintf.c (vasprintf): Likewise. + + * mach/mach/mach_traps.h: Include . + + * mach/spin-solid.c: Include . + * mach/spin-solid.c (__spin_lock_solid): Provide arg to + swtch_pri. + + * mach/mach_init.c: Include . + + * mach/mach_error.h (mach_error_string, mach_error, + mach_error_type): Always provide prototypes. + + * mach/mach/error.h (mach_error_fn_t): Comment out declaration; it + appears to be entirely unused dead code. + +1997-03-02 13:38 Miles Bader + + * string/argz.h (__need_error_t): New macro, before including + [!__const] (__const): New macro. + [!__error_t_defined] (error_t): New typedef. + +1997-03-09 06:59 Ulrich Drepper + + * posix/unistd.h: Add prototype for __euidaccess. + * sysdeps/posix/euidaccess.c: Define as __euidaccess and make + euidaccess weak alias. + * sysdeps/stub/euidaccess.c: Likewise. + * inet/rcmd.c: Use __ protected versions of non-standard functions. + + * locale/programs/localedef.c: Don't use LOCALE_PATH to find + binary locale files. Use LOCALEDIR only. + * locale/programs/locfile.c: When named file not found and not + absolute use path in I18NPATH. + + * sysdeps/generic/socketbits.h: Add PF_FILE as synonym for PF_LOCAL + and AF_FILE as synonym for AF_LOCAL. + * sysdeps/unix/sysv/linux/socketbits.h: Likewise. + + * time/Makefile: Rewrite rules for test to handle parallel builds. + +1997-03-09 05:26 Ulrich Drepper + + * manual/startup.texi (EXIT_FAILURE): Fix typo. Patch by + robbe@orcus.priv.at. + +1997-03-09 05:10 Edward Seidl + + * sysdeps/i386/elf/start.S (nofini): *Really* align stack to + 8-byte boundary. + +1997-03-09 01:48 Ulrich Drepper + + * elf/link.h: Include . + Patch by Andreas Jaeger . + +1997-03-08 21:48 Thorsten Kukuk + + Rewrite NIS code to allow empty keys. + * nis/nss_nis/nis-ethers.c: Rewritten. + * nis/nss_nis/nis-proto.c: Rewritten. + * nis/nss_nis/nis-publickey.c: Rewritten. + * nis/nss_nis/nis-rpc.c: Rewritten. + * nis/nss_nis/nis-service.c: Rewritten. + +1997-03-08 16:02 Andreas Jaeger + + * time/scheck.c (scheck): Add extra const to second argument. + + * time/private.h: Correct prototypes to match definition. + +1997-03-08 05:30 Ulrich Drepper + + * inet/rcmd.c (iruserok): Use euidaccess instead of half-hearted + switching of UID before opening .rhosts. + + * posix/regex.c: Merge with regex sources from Arnold Robbins' + version in GNU awk. + * posix/regex.h: Likewise. + + Add regex test suite by Tom Lord. + * posix/Makefile (distribute): Add TESTS, TESTS2C.sed, and testcases.h. + (tests): Add runtests. + (before-compile): Add testcases.h. + (testcases.h): New rule to generate header with tests. + * posix/TESTS: New file. + * posix/TESTS2C.sed.: New file. + * posix/runtests.c: New file. + * posix/testcases.h: New file. + + * time/ialloc.c: Update from tzcode1997c. + * time/private.h: Likewise. + * time/scheck.c: Likewise. + * time/tzselect.ksh: Likewise. + * time/zdump.c: Likewise. + * time/zic.c: Likewise. + + * time/tzfile.c: Pretty print. + +1997-02-24 07:12 Geoff Keating + + * stdio-common/vfscanf.c: Use __va_copy if available. + +1997-03-06 13:50 Andreas Schwab + + * malloc/malloc.c (mprotect) [_LIBC]: Define as __mprotect to + clean up namespace. + +1997-03-07 05:27 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/sigaction.c: The user- and + kernel-level sigaction structure is different. handle this + correctly. + Bug report by Andres Jaeger . + +1997-03-06 05:55 David Engel + + * sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Also + recognize cache entries with flag == 3. + +1997-03-05 23:14 Ulrich Drepper + + * time/antarctica: Update from tzdata1997c. + * time/asia: Likewise. + * time/zone.tab: Likewise. + +1997-03-04 19:14 Andreas Schwab + + * sysdeps/m68k/fpu/__math.h: Update feature tests. + (fabs): Remove defininition, it is a gcc builtin. + (sqrt, __sqrt): Remove definition, they have wrappers in libm. + +1997-03-05 03:59 Ulrich Drepper + + * inet/rcmd.c (__ivaliduser): Don't use getline, but __getline + instead to avoid namespace problems. + Reported by David Mosberger-Tang . + +1997-03-04 04:31 Ulrich Drepper + + * sysdeps/unix/sysv/linux/poll.c: Implement poll function by + falling back to select-based implementation if syscall isn't + available. + * sysdeps/unix/sysv/linux/syscalls.list: Add s_poll. + + * time/leapseconds: Update from tzdata1997b. + * time/zic.c: Update from tzcode1997b. + +1997-03-01 15:08 Andreas Schwab + + * time/Makefile $(tzfiles:%=$(objpfx)z.%): Remove unneeded + depedencies between installed $(tzlinks) and $(tzbases) files. + +1997-03-01 14:27 Andreas Schwab + + * math/math.h: Make compatible with traditional preprocessor; + requires carefull placement of whitespace in macro arguments. + Use __CONCAT instead of ##. + Declare long double functions only if __STDC__ or __GNUC__. + * math/mathcall.h: Avoid whitespace before argument of macro call + that is used as function name. + + * sysdeps/m68k/fpu/__math.h: Use __CONCAT instead of ##. + (__m81_u, __m81_inline): Depend on __LIBC_M81_MATH_INLINES instead + of __NO_M81_MATH_INLINES. + [!__LIBC_M81_MATH_INLINES]: Don't define internal functions + starting with __ieee754. + [!__NO_MATH_INLINES && __OPTIMIZE__]: Define user visible + functions as inlines. + (__m81_defun): Put __attribute__ between return type and function + name. + * math/math.h: Include <__math.h> also if __LIBC_M81_MATH_INLINES + is defined. + * sysdeps/m68k/fpu/e_acos.c: Define __LIBC_M81_MATH_INLINES + instead of __NO_M81_MATH_INLINES. + * sysdeps/m68k/fpu/e_fmod.c: Likewise. + * sysdeps/m68k/fpu/k_cos.c: Likewise. + * sysdeps/m68k/fpu/k_sin.c: Likewise. + * sysdeps/m68k/fpu/k_tan.c: Likewise. + * sysdeps/m68k/fpu/s_atan.c: Likewise. De-ANSI-declify. + * sysdeps/m68k/fpu/s_frexp.c: Likewise. + * sysdeps/m68k/fpu/s_ilogb.c: Likewise. + * sysdeps/m68k/fpu/s_isinf.c: Likewise. + * sysdeps/m68k/fpu/s_modf.c: Likewise. + * sysdeps/m68k/fpu/s_scalbn.c: Likewise. + +1997-02-28 03:27 Ulrich Drepper + + * stdlib/strtod.c (STRTOF): Make sure return value is large enough + so that clearing second word is necessary. + + * sysdeps/unix/sysv/linux/netinet/in_systm.h: Don't use kernel + header since it is wrong for 64 bit systems. + Patch by a sun . + +1997-02-27 10:34:11 Richard Henderson + + * sysdeps/unix/sysv/linux/alpha/brk.S: Support both the Linux/i386 + and OSF/1 style brk syscalls. We may want to change Linux/Alpha + for the benefit of running foreign binaries. + +1997-02-27 05:12 Ulrich Drepper + + * manual/Makefile: Add rules to run and distribute xtract-typefun. + * manual/xtract-typefun.awk: New file. Script to extract function, + variable, macro anchor to put into the `dir' file. + + * sysdeps/libm-i387/e_acoshl.c: Clear upper half of word containing + exponent before comparing. + +1997-02-27 01:13 Ulrich Drepper + + * sysdeps/generic/netinet/in.h (htonl, htons, ntohl, ntohs): Change + prototypes to use types with explicit width. `unsigned long' is + different on 64 bit systems. + * sysdeps/unix/sysv/linux/netinet/in.h: Likewise. + * sysdeps/generic/htonl.c: Likewise. + * sysdeps/generic/htons.c: Likewise. + * sysdeps/generic/ntohl.c: Likewise. + * sysdeps/generic/ntohs.c: Likewise. + Suggested by a sun . + +1997-02-26 08:30 Andreas Jaeger + + * math/math.h: Include <__math.h> if __NO_MATH_INLINES is not + defined and we want optimization. + +1997-02-02 19:53 Andreas Schwab + + * misc/getpass.c: Don't disable canonical input. + Reverted patch of Mon Jan 6 01:35:29 1997. + +1996-12-14 22:07 Andreas Schwab + + * libio/libioP.h (_IO_finish_t): Take additional parameter, to + match the hidden __in_chrg parameter of the destructor. + (_IO_FINISH): Pass zero for it. + * libio/genops.c (_IO_default_finish): Add second parameter, which + is ignored. + * libio/memstream.c (_IO_mem_finish): Likewise. + * libio/fileops.c (_IO_file_finish): Likewise. + * libio/strops.c (_IO_str_finish): Likewise. All callers changed. + +1997-02-27 00:23 H.J. Lu + + * time/Makefile: Avoid using patterns in dependencies. + +1997-02-26 03:28 Ulrich Drepper + + * shadow/sgetspent_r.c (LINE_PARSER): Add missing ')'. + +1997-02-25 15:11 Ulrich Drepper + + * sysdeps/libm-i387/e_acoshf.S (__ieee754_acoshf): Test correct + word on stack for overflow. + +1997-02-24 23:05 Wolfram Gloger + + * malloc/malloc.c (malloc_get_state): New function. + Saves global malloc state to an opaque data structure which + is dynamically allocated in the heap. + * malloc/malloc.c (malloc_set_state): New function. + Restore previously obtained state. + * malloc/malloc.h: Add declaration of malloc_get_state() + and malloc_set_state(). + +1997-02-24 23:29 Ulrich Drepper + + * sysdeps/libm-ieee754/s_cbrtl.c: Shift B1_EXP value to right + position. + +1997-02-24 17:38 Ulrich Drepper + + * misc/error.c: Make error and error_at_line weak aliases of + __error and __error_at_line respectively. + Suggested by David Mosberger-Tang . + +1997-02-22 12:25 Andreas Schwab + + * locale/C-time.c (_nl_C_LC_TIME): Add missing entry for + time-era-num-entries. + +1997-02-24 15:20 Jonathan T. Agnew + + * glibcbug.in: Don't mention destination on MAIL_AGENT command line + to avoid duplicate mail. + +1997-02-23 02:32 Ulrich Drepper + + * stdio-common/vfprintf.c (printf_unknown): Correct printing of + numeric values. + +1997-02-23 04:38 Ulrich Drepper + + * stdlib/strtol.c (STRTOL): It is not illegal to parse a minus + sign in the strtouXX functions. The results gets simply negated. + * stdlib/tst-strtol.c: Correct tests. + +1997-02-22 03:02 Ulrich Drepper + + * math/math.h: Prevent definition of struct exception when using + C++. + +1997-02-22 01:46 Ulrich Drepper + + * sysdeps/unix/syscalls.list: Dup takes only one argument. + Reported by Greg McGary. + +1997-02-21 00:22 Miles Bader + + * sysdeps/mach/hurd/readlink.c (__readlink): Use io_read rather + than file_get_translator. + + * sysdeps/mach/hurd/defs.c, sysdeps/stub/defs.c, sysdeps/posix/defs.c + (_cleanup): Use __fcloseall instead of fclose with a NULL stream. + +1997-02-20 01:28 Miles Bader + + * hurd/fchroot.c (fchroot): Reparent DIR to make it a real root. + * sysdeps/mach/hurd/chroot.c (chroot): Likewise. + +1997-02-19 13:56 Miles Bader + + * sysdeps/mach/hurd/accept.c (accept): Don't segv if ADDR_LEN == 0 + but ADDR also == 0. + + * hurd/report-wait.c (_hurd_itimer_thread): Make a weak alias for + now instead of a weak extern, as some old programs expect it to be + defined by ld.so. + +1997-02-18 15:39 Miles Bader + + * hurd/hurdfault.c (_hurdsig_fault_preempter): New weak alias. + + * sysdeps/mach/hurd/dl-sysdep.c (__hurd_threadvar_max, + __hurd_threadvar_stack_offset): Restore initialized versions, so + startup works correctly. + + * malloc/thread-m.h (mutex_trylock): Invert sense of return value. + +1997-02-17 10:58 Miles Bader + + * malloc/thread-m.h (mutex_trylock): Define to be __mutex_trylock, + not __mutex_try_lock. + (tsd_setspecific): Cast DATA to (unsigned long) before storing. + (tsd_getspecific): Case variable to (void *) before returning. + + * hurd/hurdinit.c (__libc_argv): Remove extern. + (__libc_argc): New variable. + +1997-02-15 10:23 Miles Bader + + * hurd/hurd/threadvar.h (enum __hurd_threadvar_index): Add + _HURD_THREADVAR_MALLOC. + * malloc/thread-m.h + [_LIBC && !PTHREAD_MUTEX_INITIALIZER && MUTEX_INITIALIZER] + (mutex_lock, mutex_unlock, mutex_trylock): Defined in terms of + __mutex_*. + (mutex_t): Type removed & replaced by new macro. + (tsd_key_t): Typedef to int instead of pthread_key_t. + (tsd_key_create, tsd_setspecific, tsd_getspecific): New macros. + (__pthread_initialize): New macro, work around assumption of pthreads. + (tsd_keys_alloced): New static variable. + : New include. + + * hurd/report-wait.c (_hurd_itimer_thread): Make a weak extern. + (_S_msg_report_wait): Check to see if _hurd_itimer_thread is + defined before using it. + + * sysdeps/mach/hurd/i386/init-first.c (__libc_argv, __libc_argc): + Make extern. + * hurd/hurdinit.c (__libc_argv): Make extern. + + * hurd/getdport.c (_default_hurd_getdport_fn): New variable. + (_hurd_getdport_fn): Now a weak alias to _default_hurd_getdport_fn. + + * sysdeps/mach/hurd/i386/init-first.c (__hurd_threadvar_max, + __hurd_threadvar_stack_offset, + __hurd_threadvar_stack_mask): New variables. + * hurd/hurdsig.c (__hurd_sigthread_stack_base, + __hurd_sigthread_stack_end, __hurd_sigthread_stack_variables): + New variables (moved here from hurdstartup.c). + * hurd/hurdstartup.c (__hurd_sigthread_stack_base, + __hurd_sigthread_stack_end, __hurd_sigthread_stack_variables): + Variables removed (moved to hurdsig.c). + (__hurd_threadvar_max, __hurd_threadvar_stack_offset, + __hurd_threadvar_stack_mask): Variables removed. + * sysdeps/mach/hurd/dl-sysdep.c (__hurd_sigthread_stack_base, + __hurd_sigthread_stack_end, __hurd_sigthread_stack_variables, + __hurd_threadvar_max, __hurd_threadvar_stack_offset, + __hurd_threadvar_stack_mask): Variables removed. + +1997-02-14 14:07 Miles Bader + + * hurd/hurd.h (_hurd_pids_changed_stamp, _hurd_pids_changed_sync): + Declare extern. + + * malloc/thread-m.h + [_LIBC && !PTHREAD_MUTEX_INITIALIZER && MUTEX_INITIALIZER] + (mutex_t): Type removed. + (mutex_t): New macro. + (mutex_trylock): New macro. + (__x_mutex_lock, __x_mutex_unlock): New functions. + (mutex_lock, mutex_unlock): New macros, redefining the behavior of + the cthread definitions. + (tsd_key_t): Typedef to cthread_key_t instead of pthread_key_t. + (tsd_key_create, tsd_setspecific, tsd_getspecific): New macros. + (mutex_lock, mutex_unlock, mutex_trylock, mutex_init): Macros removed. + (__pthread_initialize): New macro, work around assumption of pthreads. + +1997-02-20 17:51 Ulrich Drepper + + * sysdeps/generic/netinet/in.h: Protect contents using + __BEGIN/END_DECLS. Reported by a sun . + + * inet/net/ethernet.h: Move to sysdeps/unix/sysv/linux/net. + * inet/Makefile (headers): Remove net/ethernet.h. + * sysdeps/unix/sysv/linux/Makefile: Install net/ethernet.h. + * sysdeps/unix/sysv/linux/Dist: Distribute net/ethernet.h. + +1997-02-20 19:19 Ulrich Drepper + + * sysdeps/unix/mman/syscalls.list: Explain msync interface. + * sysdeps/unix/bsd/syscalls.list: Add msync with two parameters. + +1997-02-19 01:37 Erik Troan + + * shadow/sgetspent_r.c: Accept empty third, fourth and fifth fields. + +1997-02-20 14:44 Andreas Jaeger + + * stdio-common/test-fseek.c: Remove temporary file, add + copyright. + +1997-02-19 11:46 Ulrich Drepper + + * string/strxfrm.c (STRCOLL): Correct handling of `position' + levels with no non-IGNOREd element and handling of NUL byte. + * string/strcoll.c (STRXFRM): Likewise. + * locale/weight.h: Likewise. + + * shadow/sgetspent_r.c (LINE_PARSER): Add missing ')'. + +1997-02-19 01:02 Ulrich Drepper + + * sysdeps/unix/mman/syscalls.list: msync takes 3 arguments. + Reported by Andreas Jaeger . + +1997-02-19 00:29 Ulrich Drepper + + * sysdeps/unix/bsd/sigsuspend.c: Call __sigpause with needed + additional argument. + +1997-02-18 22:13 Ulrich Drepper + + * inet/net/ethernet.h: New file. + * sysdeps/unix/sysv/linux/netinet/if_ether.c: Add BSD compatibility. + * sysdeps/unix/sysv/linux/net/if_slip.h: New file. + Contributed by a sun . + + * sysdeps/unix/sysv/linux/net/if_arp.h: Include . + * sunrpc/rpc/rpc_msg.h: Include . + Reported by a sun . + +1997-02-18 03:28 Ulrich Drepper + + * stdio-common/bug10.c (main): Correct parameter. + + * string/strcoll.c: Update copyright. + +1997-02-17 02:51 Ulrich Drepper + + * malloc/obstack.h: Add `extern "C"' protection. + * posix/regex.h: Likewise. + * io/ftw.h: Likewise. + * misc/libgen.h: Likewise. + * login/utmp.h: Likewise. + * sysdeps/unix/sysv/linux/sys/reboot.h: Likewise. + * sysdeps/unix/sysv/linux/netinet/in.h: Likewise. + * sunrpc/rpc/pmap_rmt.h: Likewise. + * sunrpc/rpc/auth_des.h: Likewise. + * elf/link.h: Likewise. + * inet/netinet/ether.h: Likewise. + Reported by HJ Lu. + +1997-02-17 01:45 a sun + + Linux specific network headers. + * sysdeps/unix/sysv/linux/netinet/if_fddi.h: New file. + * sysdeps/unix/sysv/linux/netinet/if_tr.h: New file. + * sysdeps/unix/sysv/linux/netinet/ip_icmp.h: New file. + * sysdeps/unix/sysv/linux/netinet/ip_fw.h: New file. + * sysdeps/unix/sysv/linux/netinet/igmp.h: New file. + * sysdeps/unix/sysv/linux/netinet/icmp.h: New file. + * sysdeps/unix/sysv/linux/netinet/ip.h: New file. + * sysdeps/unix/sysv/linux/netinet/tcp.h: New file. + * sysdeps/unix/sysv/linux/netipx/ipx.h: New file. + * sysdeps/unix/sysv/linux/netatalk/atalk.h: New file. + * sysdeps/unix/sysv/linux/Dist: Add new network headers. + * sysdeps/unix/sysv/linux/Makefile [$(subdir)=misc] (sysdep_headers): + Add sys/quota.h. + [$(subdir)=inet] (sysdep_headers): Add new network header. + + * sysdeps/unix/sysv/linux/netinet/udp.h: Add Linux specific changes. + * sysdeps/unix/sysv/linux/netinet/in.h: Likewise. + + * inet/netinet/ip.h: Move to sysdeps/generic. + +1997-02-16 13:15 1997 H.J. Lu + + * inet/netinet/ip.h: Add protection. + +1997-02-17 01:18 Ulrich Drepper + + * misc/sys/syslog.h (prioritynames): Correct definition to use + braces where necessary. + (facilitynames): Likewise. + Patch by Ronald F. Guilmette . + Comment and beautify declarations. + +1997-02-16 03:54 Ulrich Drepper + + * sysdeps/unix/sysv/linux/netinet/in.h: Declare bindresvport. + Reported by fabsoft@fabserver1.zarm.uni-bremen.de. + +1997-02-16 03:48 Thorsten Kukuk + + * nis/nss_nis/nis-ethers.c (_nss_nis_getethernam_r): Rename to + _nss_nis_gethostton_r. + (_nss_nis_getetherbyaddr_r): Rename to _nss_nis_getntohost_r. + +1997-02-16 02:45 Ulrich Drepper + + * intl/l10nflist.c (_nl_make_l10nflist): Fix bug in computation of + length of abs_filename. + +1997-02-15 22:37 Andy Berkheimer + + * resolv/gethnamaddr.c (gethostbyname2): Test for ':' in name before + trying to resolv name as numeric IPv6 address. + * nss/digits_dots.c: Likewise. + +1997-02-13 22:32 Ulrich Drepper + + * locale/programs/localedef.c: Implement --quiet option. + * locale/programs/charset.h: Declare be_quiet variable. + * locale/programs/locfile.h: Likewise. + * locale/programs/charmap.c: Don't print warnings if quiet option + was given. + * locale/programs/ld-collate.c: Likewise. + * locale/programs/ld-ctype.c: Likewise. + * locale/programs/ld-messages.c: Likewise. + * locale/programs/ld-monetary.c: Likewise. + * locale/programs/ld-numeric.c: Likewise. + * locale/programs/ld-time.c: Likewise. + * locale/programs/locfile.c: Likewise. + +1997-02-13 11:44 Andreas Jaeger + + * stdlib/qsort.c: Add prototype for _quicksort. + + * stdlib/msort.c (qsort): Correct prototype for _quicksort. + + * sysdeps/i386/Makefile (CFLAGS-rtld.c): Change to prevent warning + from dl-machine.h. + +1997-02-13 18:18 Marcus G. Daniels + + * sysdeps/generic/dl-cache.c: Don't hardwire name of cache file. + Allow user to overwrite it. + +1997-02-13 17:55 Ulrich Drepper + + * libio/_G_config.h: Make sure win_t is also defined for old gcc + versions. Reported by Andreas Jaeger. + +1997-02-13 11:44 Andreas Jaeger + + * db/btree/bt_split.c (bt_psplit): Fix typo in change of + 1997-02-12. + + * time/tzfile.c (__tzfile_read): Change comment to follow + change of 1997-02-12. + +1997-02-13 02:32 Ulrich Drepper + + * time/time.h (__nanosleep): Define only when struct timespec is + also available. + Reported by Ross Alexander . + +1997-02-12 21:34 a sun + + * sysdeps/unix/sysv/linux/netinet/udp.h: New file. + * sysdeps/unix/sysv/linux/Dist: Add netinet/udp.h. + +1997-02-12 21:16 Ulrich Drepper + + * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyname_r): Follow patch + of 1997-02-09 in resolv/gethnamaddr.c. + +1997-02-11 18:52 H.J. Lu + + * libio/_G_config.h (_G_wint_t): New. + +1997-02-09 11:31 H.J. Lu + + * resolv/gethnamaddr.c (gethostbyname2): Change sizeof (buf) + to sizeof (buf.buf) while calling res_search (). + +1997-02-03 20:01 H.J. Lu + + * nis/rpcsvc/yp_prot.h (ypresp_key_val): Change key to keydat, + val to keydat, stat to status. + +1997-02-12 20:45 Andreas Jaeger + + * time/tzfile.c (__tzfile_read): Fix problem with SUID programs. + +1997-02-12 19:55 Ulrich Drepper + + * db/btree/bt_split.c (bt_psplit): Apply official patches #2 and #4 + by Keith Bostic. + +1997-02-11 14:49 Andreas Jaeger + + * stdlib/atoll.c: Undefine atoll, not atol. + +1997-02-08 09:36 Andreas Schwab + + * sysdeps/unix/Makefile ($(common-objpfx)sysd-syscalls): Remove + unused arguments of shell script. + + * Makeconfig (all-object-suffixes): New variable. + * Makerules ($(+sysdir_pfx)sysd-rules, +make-deps): Use it instead + of $(object-suffixes). + * sysdeps/unix/make-syscalls.sh: Likewise. Fix comment. + +1997-02-11 05:27 Ulrich Drepper + + * locale/weight.h (collate_rules): It's an u_int32_t array. + (get_weight): Compute initial SLOT value correctly. + +1997-02-10 17:45 Ulrich Drepper + + * string/argz-ctsep.c: Initialize *LEN when successful. + +1997-02-09 02:59 Ulrich Drepper + + * version.h (VERSION): Bump to 2.0.2. + + * posix/Makefile (routines): Add getopt_init. + * posix/getopt.c: Don't get environment variable with nonoption + flags here. Depend on __getopt_nonoption_flags variable filled + somewhere else. This is necessary since the variable must be + removed even when getopt isn't used in case exec(2) gets called. + * posix/getopt_init.c: New file. Initialize __getopt_nonoption_flags + and remove environment variable. + * sysdeps/i386/init-first.c: Call __getopt_clean_environment. + * sysdeps/mach/hurd/i386/init-first.c: Likewise. + * sysdeps/stub/init-first.c: Likewise. + * sysdeps/unix/sysv/linux/init-first.c: Likewise. + + * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Recognize + AT_PAGESZ entry in auxiliary vector and store value in _dl_pagesize. + + * sysdeps/generic/crypt-entry.h: Return EOPNOTSUPP when DES + encryption is wanted. + + * libio/vsnprintf.c: If MAXLEN is 0 return 0. + * stdio/vsnprintf.c: Likewise. + Reported by Philip Blundell . + + * libio/vsnprintf.c: If MAXLEN is 0 return 0. + * stdio/vsnprintf.c: Likewise. + Reported by Philip Blundell . + +1997-02-07 17:43 Ulrich Drepper + + * sysdeps/generic/sysd-stdio.c: Include . + Change PTR to void *. + * sysdeps/posix/vdprintf.c: Change PTR to void *. + Reported by Brian Oxley . + +1997-02-07 17:41 Philip Blundell + + * sysdeps/unix/sysv/linux/socketbits.h: Fix typo. + +1997-02-06 13:49 Andreas Schwab + + * rellns-sh: No need to check for existance of first parameter. + +1997-02-06 13:49 Andreas Schwab + + * rellns-sh: No need to check for existance of first parameter. + +1997-02-06 14:50 Andreas Schwab + + * sysdeps/posix/getcwd.c (__getcwd): Fix resource leaks. Reported + by David Holland . + +1997-02-06 14:38 Andreas Schwab + + * sunrpc/clnt_tcp.c (readtcp): Pass copy of timeout value to + select, in case it is modified by the latter. + * sunrpc/clnt_udp.c (clntudp_call): Likewise. + * sunrpc/pmap_rmt.c (clnt_broadcast): Likewise. + * sunrpc/svc_tcp.c (readtcp): Likewise. + + * sunrpc/svc_authux.c (_svcauth_unix): Fix type of area_gids + array. + + * sunrpc/authuxprot.c (xdr_authunix_parms): Check size of uid_t + and gid_t. + + * sunrpc/auth_unix.c (authunix_validate): Fix type of second + argument. + +1997-02-06 14:29 Andreas Schwab + + * elf/Makefile (extra-objs): Don't zap previous value. + * Makefile (before-compile): Likewise. Don't add gnu/lib-names.h + twice. + +1997-02-06 14:19 Andreas Schwab + + * sysdeps/unix/sysv/linux/m68k/brk.c: Add workaround for + braindamage (sigh!). + +1997-02-06 17:10 Jim Meyering + + * manual/memory.texi: Correct `copystring' example for obstacks. + +1997-02-06 14:10 Ulrich Drepper + + * Makeconfig: Don't use [:lower:] and [:upper:] in tr since old + GNU tr don't grok it. + +1997-02-03 21:13 Andreas Schwab + + * sysdeps/unix/sysv/linux/socketbits.h [__GNUC__<2] (struct cmsghdr): + Don't use GNU C extensions. + (CMSG_DATA): Use portable definition. + +1997-02-05 05:58 Ulrich Drepper + + * elf/ldd.bash.in: Add test for read permission and print appropriate + message. Change warning and error messages to print "ldd: " at start. + * elf/ldd.sh.in: Likewise. + + * stdlib/Makefile (routines): Add atoll. + * stdlib/atoll.c: New file. + * stdlib/stdlib.h: Add prototype and optimization for atoll. + + * stdlib/a64l.c: Update copyright. + * stdlib/abs.c: Likewise. + * stdlib/atof.c: Likewise. + * stdlib/atoi.c: Likewise. + * stdlib/atol.c: Likewise. + * stdlib/bsearch.c: Likewise. + * stdlib/exit.c: Likewise. + * stdlib/fpioconst.c: Likewise. + * stdlib/fpioconst.h: Likewise. + * stdlib/jrand48.c: Likewise. + * stdlib/jrand48_r.c: Likewise. + * stdlib/labs.c: Likewise. + * stdlib/lcong48.c: Likewise. + * stdlib/lcong48_r.c: Likewise. + * stdlib/llabs.c: Likewise. + * stdlib/lrand48.c: Likewise. + * stdlib/lrand48_r.c: Likewise. + * stdlib/mblen.c: Likewise. + * stdlib/mbstowcs.c: Likewise. + * stdlib/mbtowc.c: Likewise. + * stdlib/mp_clz_tab.c: Likewise. + * stdlib/mrand48.c: Likewise. + * stdlib/mrand48_r.c: Likewise. + * stdlib/msort.c: Likewise. + * stdlib/nrand48.c: Likewise. + * stdlib/nrand48_r.c: Likewise. + * stdlib/qsort.c: Likewise. + * stdlib/rpmatch.c: Likewise. + * stdlib/seed48.c: Likewise. + * stdlib/seed48_r.c: Likewise. + * stdlib/srand48.c: Likewise. + * stdlib/srand48_r.c: Likewise. + * stdlib/strtod.c: Likewise. + * stdlib/wcstombs.c: Likewise. + * stdlib/wctomb.c: Likewise. + +1997-02-05 05:08 Ulrich Drepper + + * stdlib/mp_clz_tab.c (__clz_tab): Follow change in GMP and define + as const. + +1997-02-04 23:57 Fila Kolodny + + * sysdeps/unix/sysv/linux/socketbits.h: Define __need_NULL before + including . + +1997-02-03 20:01 H.J. Lu + + * time/Makefile (tzbases, tzlinks): New. + (tzfiles): Changed to $(tzbases) $(tzlinks). + ($(tzfiles:%=$(objpfx)z.%): Make $(tzlinks) depend on $(tzbases). + +1997-02-02 12:13 H.J. Lu + + * Makefile (install): Ignore error from ldconfig. + + * time/zic.c (mkdirs): Double check the error return of mkdir (). + +1997-02-04 22:01 Ulrich Drepper + + * stdio-common/vfprintf.c: Prepare to use __va_copy for architectures + like PPC where va_list is no integral type. + +1997-02-04 15:27 Roma Ekzhanov + + * posix/getopt.c (exchange): Don't allocate nonoption_flags array + if nonoption_flags_len == -1. + 1997-02-04 02:08 Ulrich Drepper * Version 2.0.1 net release. diff -durpN glibc-2.0.1/FAQ glibc-2.0.2/FAQ --- glibc-2.0.1/FAQ Wed Jan 29 10:21:26 1997 +++ glibc-2.0.2/FAQ Thu Mar 20 11:36:53 1997 @@ -550,7 +550,8 @@ by in the above example specs file to make it work for other systems. -Future versions of GCC will automatically provide the correct specs. +Version 2.7.2.2 does and future versions of GCC will automatically +provide the correct specs. ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ @@ -568,12 +569,6 @@ something like this: GROUP ( libc.so.6 ld.so.1 libc.a ) -{UD} The Linux ldconfig file probably generates a link libc.so -> -libc.so.6 in /lib. This is not correct. There must not be such a -link. The linker script with the above contents is placed in -/usr/lib which is enough for the linker. - - ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [Q18] ``The prototypes for `connect', `accept', `getsockopt', `setsockopt', `getsockname', `getpeername', `send', @@ -603,10 +598,22 @@ invalid. I.e., an emulated FPU is for t [Q20] ``How can I compile gcc 2.7.2.1 from the gcc source code using glibc 2.x? -[A20] {HJL} There is no support in gcc for glibc 2.0 before gcc 2.8. It -is very tricky to compile gcc 2.7.2.1 using glibc 2.x. You have to -build it manually or with one pass only. You also have to use the -specs file in this FAQ while compiling gcc. +[A20] {AJ} There's only support for glibc 2.0 in gcc 2.7.2.2 or later. +For 2.7.2.2 you should use the following patch and configure for +e.g. i486-linux. +----------------------------------------------------------------------- +--- configure Tue Feb 11 15:57:17 1997 ++++ configure Wed Feb 12 23:09:29 1997 +@@ -1021,7 +1021,7 @@ + gnu_ld=yes + # GNU libc version 2 does not supply these; + # we want them from GCC. +- extra_parts="crtbegin.o crtend.o" ++ extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" + ;; + i[3456]86-go32-msdos | i[3456]86-*-go32) + cpu_type=i386 +----------------------------------------------------------------------- ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ diff -durpN glibc-2.0.1/Make-dist glibc-2.0.2/Make-dist --- glibc-2.0.1/Make-dist Sun Jan 26 07:53:19 1997 +++ glibc-2.0.2/Make-dist Wed Mar 19 22:28:55 1997 @@ -142,10 +142,10 @@ ifdef subdir foo:=$(shell echo subdir foo >&2) -+tsrcs := Makefile $(+tsrcs) \ - $(addsuffix .c,$(others) $(tests)) \ - $(wildcard $(addsuffix .input,$(tests)) \ - $(addsuffix .args,$(tests))) ++tsrcs := Makefile $(+tsrcs) \ + $(addsuffix .c,$(others) $(tests) $(test-srcs)) \ + $(wildcard $(addsuffix .input,$(tests) $(test-srcs)) \ + $(addsuffix .args,$(tests) $(test-srcs))) +tardeps := $(strip $(+tsrcs)) verbose = v @@ -195,9 +195,9 @@ dist.tar: README $(tardir) $(+tsrcs) $(tardir).tar: dist.tar subdir_dist @echo Files listed here have names exceeding 14 chars. - tar xfv $< -C /tmp | sed -n '/[^/]\{15,\}/p' - tar covf $@ -C /tmp $(tardir) - -rm -fr /tmp/$(tardir) dist.tar & + tar xfv $< -C $${TMPDIR-/tmp} | sed -n '/[^/]\{15,\}/p' + tar covf $@ -C $${TMPDIR-/tmp} $(tardir) + -rm -fr $${TMPDIR-/tmp}/$(tardir) dist.tar & %.Z: % compress -c $< > $@ diff -durpN glibc-2.0.1/MakeTAGS glibc-2.0.2/MakeTAGS --- glibc-2.0.1/MakeTAGS Mon Feb 3 21:02:31 1997 +++ glibc-2.0.2/MakeTAGS Wed Mar 19 22:29:24 1997 @@ -88,7 +88,7 @@ sources += $(foreach lib,$(extra-libs),$ # sysdep directories, so don't bother searching them. sysdep-sources := $(filter-out $(wildcard $(sources)), $(sources)) all-sources = $(wildcard $(sort $(sources) $(sources:.c=.S) $(sources:.c=.s) \ - $(others:=.c) $(tests:=.c))) \ + $(others:=.c) $(tests:=.c) $(test-srcs:=.c))) \ $(foreach dir,$(all-dirs),\ $(wildcard \ $(addprefix $(dir)/,\ diff -durpN glibc-2.0.1/Makeconfig glibc-2.0.2/Makeconfig --- glibc-2.0.1/Makeconfig Fri Jan 31 20:46:20 1997 +++ glibc-2.0.2/Makeconfig Thu Mar 20 12:07:20 1997 @@ -239,7 +239,8 @@ endif # other than there, so the zoneinfo directory contains only universal data, # localizing the configuration data elsewhere. ifndef localtime-file -localtime-file = $(inst_sysconfdir)/localtime +localtime-file = $(sysconfdir)/localtime +inst_localtime-file = $(install_root)$(localtime-file) endif # What to use for leap second specifications in compiling the default @@ -319,10 +320,10 @@ endif ifndef +link +link = $(CC) -nostdlib -nostartfiles -o $@ \ $(sysdep-LDFLAGS) $(config-LDFLAGS) $(LDFLAGS) \ - $(addprefix $(csu-objpfx),start.o) $(+preinit) \ + $(addprefix $(csu-objpfx),start.o) $(+preinit) $(+prector) \ $(filter-out $(addprefix $(csu-objpfx),start.o) $(+preinit) \ $(link-extra-libs) $(common-objpfx)libc% $(+postinit),$^) \ - $(link-extra-libs) $(link-libc) $(+postinit) + $(link-extra-libs) $(link-libc) $(+postctor) $(+postinit) endif ifndef config-LDFLAGS ifeq (yes,$(build-shared)) @@ -366,6 +367,8 @@ endif ifeq ($(elf),yes) +preinit = $(addprefix $(csu-objpfx),crti.o) +postinit = $(addprefix $(csu-objpfx),crtn.o) ++prector = `$(CC) --print-file-name=crtbegin.o` ++postctor = `$(CC) --print-file-name=crtend.o` endif csu-objpfx = $(common-objpfx)csu/ elf-objpfx = $(common-objpfx)elf/ @@ -481,6 +484,7 @@ endif # to pass different flags for each flavor. libtypes = $(foreach o,$(object-suffixes),$(libtype$o)) object-suffixes := .o +all-object-suffixes := .o .so .po .go libtype.o := lib%.a ifeq (yes,$(build-shared)) # Under --enable-shared, we will build a shared library of PIC objects. @@ -582,7 +586,8 @@ $(common-objpfx)gnu/lib-names.stmp: $(co (libs='$(all-sonames)';\ for l in $$libs; do \ upname=`echo $$l | sed 's/[.]so.*//' | \ - tr '[:lower:]-' '[:upper:]_'`; \ + tr 'abcdefghijklmnopqrstuvwxyz-' \ + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`; \ echo "#define $${upname}_SO \"$$l\""; \ done;) | sort; \ echo; \ diff -durpN glibc-2.0.1/Makefile glibc-2.0.2/Makefile --- glibc-2.0.1/Makefile Sun Feb 2 17:42:24 1997 +++ glibc-2.0.2/Makefile Fri Mar 21 16:25:50 1997 @@ -85,7 +85,7 @@ subdirs := $(filter mach,$(subdirs)) $(f headers := errno.h sys/errno.h errnos.h limits.h values.h \ features.h gnu-versions.h libc-lock.h xopen_lim.h aux = sysdep $(libc-init) version -before-compile = $(objpfx)version-info.h +before-compile += $(objpfx)version-info.h echo-headers: subdir_echo-headers @@ -94,7 +94,6 @@ install-others = $(inst_includedir)/gnu/ install-bin = glibcbug ifeq (yes,$(build-shared)) -before-compile += $(objpfx)gnu/lib-names.h install-others += $(inst_includedir)/gnu/lib-names.h endif @@ -115,10 +114,11 @@ include Makerules install: subdir_install # Create linkfs for shared libraries using the `ldconfig' program is possible. +# Ignore the error if we cannot update /etc/ld.so.cache. ifeq (no,$(cross-compiling)) ifeq (yes,$(build-shared)) install: - test ! -x $(common-objpfx)elf/ldconfig || \ + -test ! -x $(common-objpfx)elf/ldconfig || \ $(common-objpfx)elf/ldconfig -d $(inst_slibdir) $(inst_libdir) endif endif @@ -279,7 +279,7 @@ parent_echo-distinfo: # Make the distribution tarfile. -distribute := README INSTALL FAQ NOTES NEWS PROJECTS \ +distribute := README INSTALL FAQ NOTES NEWS PROJECTS BUGS \ COPYING.LIB COPYING ChangeLog ChangeLog.[0-9] \ Makefile Makeconfig Makerules Rules Make-dist MakeTAGS \ extra-lib.mk o-iterator.mk \ diff -durpN glibc-2.0.1/Makefile.in glibc-2.0.2/Makefile.in --- glibc-2.0.1/Makefile.in Sat Feb 1 18:39:01 1997 +++ glibc-2.0.2/Makefile.in Sat Feb 1 20:49:27 1997 @@ -1,4 +1,4 @@ -# Generated from $Id: Makefile.in,v 1.3 1997/02/01 23:39:01 drepper Exp $. +# Generated from $Id: Makefile.in,v 1.3 1997/02/02 01:49:27 drepper Exp $. srcdir = @srcdir@ diff -durpN glibc-2.0.1/Makerules glibc-2.0.2/Makerules --- glibc-2.0.1/Makerules Mon Feb 3 21:02:31 1997 +++ glibc-2.0.2/Makerules Wed Mar 19 22:31:31 1997 @@ -238,7 +238,7 @@ $(+sysdir_pfx)sysd-rules: $(+sysdir_pfx) /*) dir=$$sysdir ;; \ *) dir="\$$(..)$$sysdir" ;; \ esac; \ - for o in $(object-suffixes); do \ + for o in $(all-object-suffixes); do \ $(open-check-inhibit-asm) \ echo "\$$(objpfx)%$$o: $$dir/%.S \$$(before-compile); \ \$$(compile-command.S)"; \ @@ -292,7 +292,8 @@ define +make-deps $(make-target-directory) -@rm -f $@ $(+mkdep) $< $(CPPFLAGS) $($(<:$*.%=%)-CPPFLAGS) | \ -sed -e 's,$(subst .,\.,$*)\.o,$(foreach o,$(object-suffixes),$(@:.d=$o)) $@,' \ +sed \ +-e 's,$(subst .,\.,$*)\.o,$(foreach o,$(all-object-suffixes),$(@:.d=$o)) $@,' \ $(sed-remove-objpfx) > $(@:.d=.T) mv -f $(@:.d=.T) $@ endef @@ -338,6 +339,8 @@ $(LINK.o) -shared -o $@ $(sysdep-LDFLAGS -L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link) \ -Wl,--whole-archive $^ $(no-whole-archive) \ $(LDLIBS-$(@F:lib%.so=%).so) + test -z "$($(@F)-version)" || \ + (rm -f $@$($(@F)-version); $(LN_S) $(@F) $@$($(@F)-version)) endef # Don't try to use -lc when making libc.so itself. @@ -353,12 +356,6 @@ $(common-objpfx)libc.so: $(elfobjdir)/so $(common-objpfx)libc_pic.a \ $(elfobjdir)/sofini.so $(elfobjdir)/ld.so $(build-shlib) - -ifdef libc.so-version -$(common-objpfx)libc.so$(libc.so-version): $(common-objpfx)libc.so - rm -f $@ - ln -s $(. Questions and suggestions should be send to . + +Version 2.0.2 + +* more bug fixes + +* add atoll function + +* fix complex problems in Berkeley DB code + +* fix math functions + +Version 2.0.1 + +* fixed lots of header problems (especially Linux/GNU specific) + +* dynamic loader preserves all registers + +* Roland McGrath provided support for handling of auxiliary objects in + the ELF dynamic loader. + +* support for parallel builds is improved Version 2.0 diff -durpN glibc-2.0.1/README glibc-2.0.2/README --- glibc-2.0.1/README Sun Feb 2 21:06:37 1997 +++ glibc-2.0.2/README Tue Mar 18 22:15:57 1997 @@ -1,4 +1,4 @@ -This directory contains the version 2.0.1 test release of the GNU C Library. +This directory contains the version 2.0.2 test release of the GNU C Library. Many bugs have been fixed since the last release. Some bugs surely remain. @@ -46,7 +46,7 @@ provides the Unix `crypt' function, plus Because of the United States export restriction on DES implementations, we are distributing this code separately from the rest of the C library. There is an extra distribution tar file just for crypt; it is -called `glibc-crypt-2.0.1.tar.gz'. You can just unpack the crypt +called `glibc-crypt-2.0.2.tar.gz'. You can just unpack the crypt distribution along with the rest of the C library and build; you can also build the library without getting crypt. Users outside the USA can get the crypt distribution via anonymous FTP from ftp.ifi.uio.no diff -durpN glibc-2.0.1/Rules glibc-2.0.2/Rules --- glibc-2.0.1/Rules Thu Jan 23 11:05:35 1997 +++ glibc-2.0.2/Rules Wed Mar 19 22:32:51 1997 @@ -83,19 +83,19 @@ common-generated := $(common-generated) .PHONY: others tests others: $(addprefix $(objpfx),$(others) $(extra-objs)) ifeq ($(cross-compiling),yes) -tests: $(addprefix $(objpfx),$(tests)) +tests: $(addprefix $(objpfx),$(tests) $(test-srcs)) else -tests: $(tests:%=$(objpfx)%.out) +tests: $(tests:%=$(objpfx)%.out) $(addprefix $(objpfx),$(test-srcs)) endif -ifneq "$(strip $(others) $(tests))" "" -$(addprefix $(objpfx),$(others) $(tests)): %: %.o \ +ifneq "$(strip $(others) $(tests) $(test-srcs))" "" +$(addprefix $(objpfx),$(others) $(tests) $(test-srcs)): %: %.o \ $(sort $(filter $(common-objpfx)libc%,$(link-libc))) \ $(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit) $(+link) endif -ifneq "$(strip $(tests))" "" +ifneq "$(strip $(tests) $(test-srcs))" "" # These are the implicit rules for making test outputs # from the test programs and whatever input files are present. $(objpfx)%.out: %.args $(objpfx)% %.input diff -durpN glibc-2.0.1/catgets/catgets.c glibc-2.0.2/catgets/catgets.c --- glibc-2.0.1/catgets/catgets.c Wed Dec 18 15:53:30 1996 +++ glibc-2.0.2/catgets/catgets.c Sun Mar 16 19:42:39 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper, . @@ -34,6 +34,7 @@ catopen (const char *cat_name, int flag) { __nl_catd result; const char *env_var; + const char *nlspath; result = (__nl_catd) malloc (sizeof (*result)); if (result == NULL) @@ -82,8 +83,16 @@ catopen (const char *cat_name, int flag) return (nl_catd) -1; } - if (__secure_getenv ("NLSPATH") != NULL) - result->nlspath = __strdup (getenv ("NLSPATH")); + nlspath = __secure_getenv ("NLSPATH"); + if (nlspath != NULL && *nlspath != '\0') + { + /* Append the system dependent directory. */ + size_t len = strlen (nlspath + 1 + sizeof NLSPATH); + char *tmp = alloca (len); + + __stpcpy (__stpcpy (__stpcpy (tmp, nlspath), ":"), NLSPATH); + nlspath = tmp; + } else result->nlspath = __strdup (NLSPATH); diff -durpN glibc-2.0.1/config.guess glibc-2.0.2/config.guess --- glibc-2.0.1/config.guess Sun Jan 5 05:39:00 1997 +++ glibc-2.0.2/config.guess Tue Jan 7 14:29:28 1997 @@ -73,6 +73,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit 0;; + SR2?01:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; Pyramid*:OSx*:*:*|MIS*:OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then @@ -568,10 +571,6 @@ EOF else echo mips-unknown-sysv${UNAME_RELEASE} fi - exit 0 ;; - PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 exit 0 ;; esac diff -durpN glibc-2.0.1/config.make.in glibc-2.0.2/config.make.in --- glibc-2.0.1/config.make.in Tue Jan 28 22:29:24 1997 +++ glibc-2.0.2/config.make.in Tue Jan 28 22:49:42 1997 @@ -1,5 +1,5 @@ # @configure_input@ -# From $Id: config.make.in,v 1.33 1997/01/29 03:29:24 drepper Exp $. +# From $Id: config.make.in,v 1.32 1997/01/29 03:49:42 drepper Exp $. # Don't edit this file. Put configuration parameters in configparms instead. # Installation prefixes. diff -durpN glibc-2.0.1/config.sub glibc-2.0.2/config.sub --- glibc-2.0.1/config.sub Wed Jan 1 06:03:06 1997 +++ glibc-2.0.2/config.sub Tue Dec 31 15:54:33 1996 @@ -874,11 +874,11 @@ case $basic_machine in *-siemens) os=-sysv4 ;; - f301-fujitsu) - os=-uxpv - ;; *-masscomp) os=-rtu + ;; + f301-fujitsu) + os=-uxpv ;; *) os=-none diff -durpN glibc-2.0.1/configure glibc-2.0.2/configure --- glibc-2.0.1/configure Sat Jan 25 20:43:31 1997 +++ glibc-2.0.2/configure Sun Jan 26 00:33:35 1997 @@ -1993,7 +1993,7 @@ EOF # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. (set) 2>&1 | - case `(ac_space=' '; set) 2>&1` in + case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote substitution # turns \\\\ into \\, and sed turns \\ into \). diff -durpN glibc-2.0.1/db/btree/bt_split.c glibc-2.0.2/db/btree/bt_split.c --- glibc-2.0.1/db/btree/bt_split.c Thu Nov 14 11:37:29 1996 +++ glibc-2.0.2/db/btree/bt_split.c Fri Feb 14 21:32:28 1997 @@ -674,7 +674,8 @@ bt_psplit(t, h, l, r, pskip, ilen) * where we decide to try and copy too much onto the left page. * Make sure that doesn't happen. */ - if (skip <= off && used + nbytes >= full) { + if (skip <= off && + used + nbytes + sizeof(indx_t) >= full || nxt == top - 1) { --off; break; } @@ -687,7 +688,7 @@ bt_psplit(t, h, l, r, pskip, ilen) memmove((char *)l + l->upper, src, nbytes); } - used += nbytes; + used += nbytes + sizeof(indx_t); if (used >= half) { if (!isbigkey || bigkeycnt == 3) break; diff -durpN glibc-2.0.1/db/hash/hash.c glibc-2.0.2/db/hash/hash.c --- glibc-2.0.1/db/hash/hash.c Thu Nov 14 11:41:04 1996 +++ glibc-2.0.2/db/hash/hash.c Thu Nov 14 22:52:26 1996 @@ -190,7 +190,7 @@ __hash_open(file, flags, mode, info, dfl __buf_init(hashp, DEF_BUFSIZE); hashp->new_file = new_table; - hashp->save_file = file && (hashp->flags & O_ACCMODE) != O_RDWR; + hashp->save_file = file && (hashp->flags & O_ACCMODE) != O_RDONLY; hashp->cbucket = -1; if (!(dbp = (DB *)malloc(sizeof(DB)))) { save_errno = errno; diff -durpN glibc-2.0.1/db/hash/hash_bigkey.c glibc-2.0.2/db/hash/hash_bigkey.c --- glibc-2.0.1/db/hash/hash_bigkey.c Thu Nov 14 11:43:30 1996 +++ glibc-2.0.2/db/hash/hash_bigkey.c Sun Mar 16 19:54:57 1997 @@ -249,7 +249,7 @@ __big_delete(hashp, bufp) bufp->flags |= BUF_MOD; if (rbufp) __free_ovflpage(hashp, rbufp); - if (last_bfp != rbufp) + if (last_bfp && last_bfp != rbufp) __free_ovflpage(hashp, last_bfp); hashp->NKEYS--; diff -durpN glibc-2.0.1/dirent/alphasort.c glibc-2.0.2/dirent/alphasort.c --- glibc-2.0.1/dirent/alphasort.c Wed Jul 1 02:28:44 1992 +++ glibc-2.0.2/dirent/alphasort.c Sun Mar 16 19:43:49 1997 @@ -1,29 +1,27 @@ -/* Copyright (C) 1992 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1992, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + The GNU C Library is 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 int -DEFUN(alphasort, (a, b), - CONST PTR a AND CONST PTR b) +alphasort (const void *a, const void *b) { - return strcmp (((struct dirent *) a)->d_name, - ((struct dirent *) b)->d_name); + return strcmp ((*(const struct dirent **) a)->d_name, + (*(const struct dirent **) b)->d_name); } diff -durpN glibc-2.0.1/elf/Makefile glibc-2.0.2/elf/Makefile --- glibc-2.0.1/elf/Makefile Tue Jan 28 14:14:42 1997 +++ glibc-2.0.2/elf/Makefile Sun Feb 9 22:18:14 1997 @@ -56,7 +56,7 @@ install-bin = ldd endif ifeq (yes,$(has-ldconfig)) -extra-objs = ldconfig.o +extra-objs += ldconfig.o install-rootsbin = ldconfig $(objpfx)ldconfig: $(objpfx)ldconfig.o diff -durpN glibc-2.0.1/elf/dl-reloc.c glibc-2.0.2/elf/dl-reloc.c --- glibc-2.0.1/elf/dl-reloc.c Sun Nov 17 20:40:17 1996 +++ glibc-2.0.2/elf/dl-reloc.c Wed Mar 19 22:39:10 1997 @@ -1,5 +1,5 @@ /* Relocate a shared object and resolve its references to other loaded objects. - Copyright (C) 1995, 1996 Free Software Foundation, Inc. + Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -58,8 +58,11 @@ _dl_relocate_object (struct link_map *l, /* This macro is used as a callback from the ELF_DYNAMIC_RELOCATE code. */ #define RESOLVE(ref, flags) \ - (_dl_lookup_symbol (strtab + (*ref)->st_name, ref, scope, \ - l->l_name, flags)) + (((*ref)->st_shndx != SHN_UNDEF && \ + ELFW(ST_BIND) ((*ref)->st_info) == STB_LOCAL) \ + ? l->l_addr \ + : _dl_lookup_symbol (strtab + (*ref)->st_name, ref, scope, \ + l->l_name, flags)) #include "dynamic-link.h" ELF_DYNAMIC_RELOCATE (l, lazy); diff -durpN glibc-2.0.1/elf/ldd.bash.in glibc-2.0.2/elf/ldd.bash.in --- glibc-2.0.1/elf/ldd.bash.in Mon Jan 20 21:18:40 1997 +++ glibc-2.0.2/elf/ldd.bash.in Sun Feb 9 22:18:15 1997 @@ -79,17 +79,20 @@ case $# in *) file="./$1" ;; esac if test ! -f "$file"; then - echo "${file}:" $"no such file" + echo "ldd: ${file}:" $"no such file" exit 1 - else + elif test -r "$file"; then test -x "$file" || - echo $"warning: you do not have execution permission for" "\`$file'" - if ${RTLD} --verify "$file"; then - LD_TRACE_LOADED_OBJECTS=1 exec ${RTLD} ${RELOCS} "$file" || exit 1 - else - echo $" not a dynamic executable" - exit 1 - fi + echo $"ldd: warning: you do not have execution permission for" "\`$file'" + if ${RTLD} --verify "$file"; then + LD_TRACE_LOADED_OBJECTS=1 exec ${RTLD} ${RELOCS} "$file" || exit 1 + else + echo $" not a dynamic executable" + exit 1 + fi + else + echo $"ldd: error: you do not have read permission for" "\`$file'" + exit 1 fi exit ;; *) @@ -102,17 +105,20 @@ case $# in *) file="./$file" ;; esac if test ! -f "$file"; then - echo "${file}:" $"no such file" + echo "ldd: ${file}:" $"no such file" result=1 - else - test -x "$file" || - echo $"warning: you do not have execution permission for" "\`$file'" + elif test -r "$file"; then + test -x "$file" || echo $"\ +ldd: warning: you do not have execution permission for" "\`$file'" if ${RTLD} --verify "$file"; then LD_TRACE_LOADED_OBJECTS=1 ${RTLD} ${RELOCS} "$file" || result=1 else echo $" not a dynamic executable" result=1 fi + else + echo $"ldd: error: you do not have read permission for" "\`$file'" + result=1 fi done esac diff -durpN glibc-2.0.1/elf/ldd.sh.in glibc-2.0.2/elf/ldd.sh.in --- glibc-2.0.1/elf/ldd.sh.in Mon Jan 20 21:16:38 1997 +++ glibc-2.0.2/elf/ldd.sh.in Sun Feb 9 22:18:16 1997 @@ -77,15 +77,20 @@ Try \`ldd --help' for more information." *) file="./$1" ;; esac if test ! -f "$file"; then - echo "${file}: no such file" + echo "ldd: ${file}: no such file" exit 1 else - test -x "$file" || - echo "warning: you do not have execution permission for \`$file'" - if ${RTLD} --verify "$file"; then - LD_TRACE_LOADED_OBJECTS=1 exec ${RTLD} ${RELOCS} "$file" || exit 1 + if test -r "$file"; then + test -x "$file" || + echo "ldd: warning: you do not have execution permission for \`$file'" + if ${RTLD} --verify "$file"; then + LD_TRACE_LOADED_OBJECTS=1 exec ${RTLD} ${RELOCS} "$file" || exit 1 + else + echo ' not a dynamic executable' + exit 1 + fi else - echo ' not a dynamic executable' + echo "ldd: error: you do not have read permission for \`$file'" exit 1 fi fi @@ -100,15 +105,20 @@ Try \`ldd --help' for more information." *) file="./$file" ;; esac if test ! -f "$file"; then - echo "${file}: no such file" + echo "ldd: ${file}: no such file" result=1 else - test -x "$file" || - echo "warning: you do not have execution permission for \`$file'" - if ${RTLD} --verify "$file"; then - LD_TRACE_LOADED_OBJECTS=1 ${RTLD} ${RELOCS} "$file" || result=1 + if test -r "$file"; then + test -x "$file" || echo "\ +ldd: warning: you do not have execution permission for \`$file'" + if ${RTLD} --verify "$file"; then + LD_TRACE_LOADED_OBJECTS=1 ${RTLD} ${RELOCS} "$file" || result=1 + else + echo ' not a dynamic executable' + result=1 + fi else - echo ' not a dynamic executable' + echo "ldd: error: you do not have read permission for \`$file'" result=1 fi fi diff -durpN glibc-2.0.1/elf/link.h glibc-2.0.2/elf/link.h --- glibc-2.0.1/elf/link.h Sat Feb 1 18:24:40 1997 +++ glibc-2.0.2/elf/link.h Sun Mar 16 19:14:37 1997 @@ -18,13 +18,17 @@ Boston, MA 02111-1307, USA. */ #ifndef _LINK_H + #define _LINK_H 1 +#include #define __need_size_t #include #include +__BEGIN_DECLS + /* We use this macro to refer to ELF types independent of the native wordsize. `ElfW(TYPE)' is used in place of `Elf32_TYPE' or `Elf64_TYPE'. */ #define ElfW(type) _ElfW (Elf, __ELF_NATIVE_CLASS, type) @@ -340,5 +344,6 @@ extern void _dl_debug_state (void); in the `r_ldbase' member. Returns the address of the structure. */ extern struct r_debug *_dl_debug_initialize (ElfW(Addr) ldbase); +__END_DECLS #endif /* link.h */ diff -durpN glibc-2.0.1/glibcbug.in glibc-2.0.2/glibcbug.in --- glibc-2.0.1/glibcbug.in Mon Jan 27 10:56:26 1997 +++ glibc-2.0.2/glibcbug.in Tue Feb 25 20:04:44 1997 @@ -232,7 +232,7 @@ sed -e " /^>Fix:/,/^>[A-Za-z-]*:/s;$FIX_C;; " $TEMP > $TEMP.x -if $MAIL_AGENT $BUGGLIBC < $TEMP.x; then +if $MAIL_AGENT < $TEMP.x; then echo "$COMMAND: problem report sent" xs=0; exit else diff -durpN glibc-2.0.1/gmon/gmon.c glibc-2.0.2/gmon/gmon.c --- glibc-2.0.1/gmon/gmon.c Mon Oct 7 06:53:54 1996 +++ glibc-2.0.2/gmon/gmon.c Fri Mar 21 09:07:04 1997 @@ -34,6 +34,7 @@ #include #include #include +#include #include #include @@ -165,21 +166,26 @@ static void write_hist (fd) int fd; { - const u_char tag = GMON_TAG_TIME_HIST; - struct gmon_hist_hdr thdr; + u_char tag = GMON_TAG_TIME_HIST; + struct gmon_hist_hdr thdr __attribute__ ((aligned (__alignof__ (char *)))); if (_gmonparam.kcountsize > 0) { - thdr.low_pc = _gmonparam.lowpc; - thdr.high_pc = _gmonparam.highpc; - thdr.hist_size = _gmonparam.kcountsize / sizeof(HISTCOUNTER); - thdr.prof_rate = __profile_frequency(); - strncpy(thdr.dimen, "seconds", sizeof(thdr.dimen)); + struct iovec iov[3] = + { + { &tag, sizeof (tag) }, + { &thdr, sizeof (struct gmon_hist_hdr) }, + { _gmonparam.kcount, _gmonparam.kcountsize } + }; + + *(char **) thdr.low_pc = (char *) _gmonparam.lowpc; + *(char **) thdr.high_pc = (char *) _gmonparam.highpc; + *(int *) thdr.hist_size = _gmonparam.kcountsize / sizeof (HISTCOUNTER); + *(int *) thdr.prof_rate = __profile_frequency (); + strncpy (thdr.dimen, "seconds", sizeof (thdr.dimen)); thdr.dimen_abbrev = 's'; - write(fd, &tag, sizeof(tag)); - write(fd, &thdr, sizeof(thdr)); - write(fd, _gmonparam.kcount, _gmonparam.kcountsize); + __writev (fd, iov, 3); } } @@ -188,12 +194,19 @@ static void write_call_graph (fd) int fd; { - const u_char tag = GMON_TAG_CG_ARC; - struct gmon_cg_arc_record raw_arc; + u_char tag = GMON_TAG_CG_ARC; + struct gmon_cg_arc_record raw_arc + __attribute__ ((aligned (__alignof__ (char*)))); int from_index, to_index, from_len; u_long frompc; - from_len = _gmonparam.fromssize / sizeof(*_gmonparam.froms); + struct iovec iov[2] = + { + { &tag, sizeof (tag) }, + { &raw_arc, sizeof (struct gmon_cg_arc_record) } + }; + + from_len = _gmonparam.fromssize / sizeof (*_gmonparam.froms); for (from_index = 0; from_index < from_len; ++from_index) { if (_gmonparam.froms[from_index] == 0) @@ -201,17 +214,16 @@ write_call_graph (fd) frompc = _gmonparam.lowpc; frompc += (from_index * _gmonparam.hashfraction - * sizeof(*_gmonparam.froms)); + * sizeof (*_gmonparam.froms)); for (to_index = _gmonparam.froms[from_index]; to_index != 0; to_index = _gmonparam.tos[to_index].link) { - raw_arc.from_pc = frompc; - raw_arc.self_pc = _gmonparam.tos[to_index].selfpc; - raw_arc.count = _gmonparam.tos[to_index].count; + *(char **) raw_arc.from_pc = (char *)frompc; + *(char **) raw_arc.self_pc = (char *)_gmonparam.tos[to_index].selfpc; + *(int *) raw_arc.count = _gmonparam.tos[to_index].count; - write(fd, &tag, sizeof(tag)); - write(fd, &raw_arc, sizeof(raw_arc)); + __writev (fd, iov, 2); } } } @@ -222,22 +234,32 @@ write_bb_counts (fd) int fd; { struct __bb *grp; - const u_char tag = GMON_TAG_BB_COUNT; + u_char tag = GMON_TAG_BB_COUNT; int ncounts; int i; + struct iovec bbhead[2] = + { + { &tag, sizeof (tag) }, + { &ncounts, sizeof (ncounts) } + }; + struct iovec bbbody[2]; + + bbbody[0].iov_len = sizeof (grp->addresses[0]); + bbbody[1].iov_len = sizeof (grp->addresses[0]); + /* Write each group of basic-block info (all basic-blocks in a compilation unit form a single group). */ for (grp = __bb_head; grp; grp = grp->next) { ncounts = grp->ncounts; - write(fd, &tag, sizeof(tag)); - write(fd, &ncounts, sizeof(ncounts)); + __writev (fd, bbhead, 2); for (i = 0; i < ncounts; ++i) { - write(fd, &grp->addresses[i], sizeof(grp->addresses[0])); - write(fd, &grp->counts[i], sizeof(grp->counts[0])); + bbbody[0].iov_base = (char *) &grp->addresses[i]; + bbbody[1].iov_base = &grp->counts[i]; + __writev (fd, bbbody, 2); } } } @@ -246,31 +268,31 @@ write_bb_counts (fd) void _mcleanup () { - struct gmon_hdr ghdr; + struct gmon_hdr ghdr __attribute__ ((aligned (__alignof__ (int)))); int fd; - moncontrol(0); - fd = open("gmon.out", O_CREAT|O_TRUNC|O_WRONLY, 0666); + moncontrol (0); + fd = __open ("gmon.out", O_CREAT|O_TRUNC|O_WRONLY, 0666); if (fd < 0) { - perror("_mcleanup: gmon.out"); + perror ("_mcleanup: gmon.out"); return; } /* write gmon.out header: */ - memset(&ghdr, 0, sizeof(ghdr)); - memcpy(&ghdr.cookie[0], GMON_MAGIC, sizeof(ghdr.cookie)); - ghdr.version = GMON_VERSION; - write(fd, &ghdr, sizeof(ghdr)); + memset (&ghdr, 0, sizeof (struct gmon_hdr)); + memcpy (&ghdr.cookie[0], GMON_MAGIC, sizeof (ghdr.cookie)); + *(int *) ghdr.version = GMON_VERSION; + __write (fd, &ghdr, sizeof (struct gmon_hdr)); /* write PC histogram: */ - write_hist(fd); + write_hist (fd); /* write call-graph: */ - write_call_graph(fd); + write_call_graph (fd); /* write basic-block execution counts: */ - write_bb_counts(fd); + write_bb_counts (fd); - close(fd); + __close (fd); } diff -durpN glibc-2.0.1/gmon/sys/gmon_out.h glibc-2.0.2/gmon/sys/gmon_out.h --- glibc-2.0.1/gmon/sys/gmon_out.h Mon Dec 9 17:10:15 1996 +++ glibc-2.0.2/gmon/sys/gmon_out.h Fri Mar 21 09:07:01 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by David Mosberger . @@ -40,30 +40,36 @@ __BEGIN_DECLS * always comes first in gmon.out and is then followed by a series * records defined below. */ -struct gmon_hdr { - char cookie[4]; - int version; - int spare[3]; -}; +struct gmon_hdr + { + char cookie[4]; + char version[4]; + char spare[3 * 4]; + }; /* types of records in this file: */ -typedef enum { - GMON_TAG_TIME_HIST = 0, GMON_TAG_CG_ARC = 1, GMON_TAG_BB_COUNT = 2 -} GMON_Record_Tag; +typedef enum + { + GMON_TAG_TIME_HIST = 0, + GMON_TAG_CG_ARC = 1, + GMON_TAG_BB_COUNT = 2 + } GMON_Record_Tag; -struct gmon_hist_hdr { - unsigned long low_pc; /* base pc address of sample buffer */ - unsigned long high_pc; /* max pc address of sampled buffer */ - int hist_size; /* size of sample buffer */ - int prof_rate; /* profiling clock rate */ - char dimen[15]; /* phys. dim., usually "seconds" */ - char dimen_abbrev; /* usually 's' for "seconds" */ -}; +struct gmon_hist_hdr + { + char low_pc[sizeof (char *)]; /* base pc address of sample buffer */ + char high_pc[sizeof (char *)]; /* max pc address of sampled buffer */ + char hist_size[4]; /* size of sample buffer */ + char prof_rate[4]; /* profiling clock rate */ + char dimen[15]; /* phys. dim., usually "seconds" */ + char dimen_abbrev; /* usually 's' for "seconds" */ + }; -struct gmon_cg_arc_record { - unsigned long from_pc; /* address within caller's body */ - unsigned long self_pc; /* address within callee's body */ - int count; /* number of arc traversals */ +struct gmon_cg_arc_record + { + char from_pc[sizeof (char *)]; /* address within caller's body */ + char self_pc[sizeof (char *)]; /* address within callee's body */ + char count[4]; /* number of arc traversals */ }; __END_DECLS diff -durpN glibc-2.0.1/grp/grp.h glibc-2.0.2/grp/grp.h --- glibc-2.0.1/grp/grp.h Wed Jan 29 22:08:38 1997 +++ glibc-2.0.2/grp/grp.h Wed Jan 29 23:08:18 1997 @@ -32,6 +32,9 @@ __BEGIN_DECLS #define __need_size_t #include +#define __need_size_t +#include + /* The group structure. */ struct group diff -durpN glibc-2.0.1/hurd/fchroot.c glibc-2.0.2/hurd/fchroot.c --- glibc-2.0.1/hurd/fchroot.c Wed Feb 7 19:42:10 1996 +++ glibc-2.0.2/hurd/fchroot.c Tue Mar 18 19:59:14 1997 @@ -1,22 +1,21 @@ -/* Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 @@ -24,7 +23,7 @@ Cambridge, MA 02139, USA. */ /* Change the current root directory to FD. */ int -DEFUN(fchroot, (fd), int fd) +fchroot (int fd) { error_t err; file_t dir; @@ -36,7 +35,13 @@ DEFUN(fchroot, (fd), int fd) })); if (! err) - _hurd_port_set (&_hurd_ports[INIT_PORT_CRDIR], dir); + { + file_t root; + err = __file_reparent (dir, MACH_PORT_NULL, &root); + __mach_port_deallocate (__mach_task_self (), dir); + if (! err) + _hurd_port_set (&_hurd_ports[INIT_PORT_CRDIR], root); + } return err ? __hurd_fail (err) : 0; } diff -durpN glibc-2.0.1/hurd/getdport.c glibc-2.0.2/hurd/getdport.c --- glibc-2.0.1/hurd/getdport.c Sat Mar 18 16:49:44 1995 +++ glibc-2.0.2/hurd/getdport.c Tue Mar 18 20:08:33 1997 @@ -1,26 +1,27 @@ -/* Copyright (C) 1991, 1992, 1994, 1995 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1991, 1992, 1994, 1995, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + The GNU C Library is 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 is initialized in dtable.c when that gets linked in. If dtable.c is not linked in, it will be zero. */ -file_t (*_hurd_getdport_fn) (int fd); +static file_t (*_default_hurd_getdport_fn) (int fd) = 0; +weak_alias (_default_hurd_getdport_fn, _hurd_getdport_fn) file_t __getdport (int fd) @@ -43,7 +44,7 @@ __getdport (int fd) errno = EBADF; return MACH_PORT_NULL; } - else + else { __mach_port_mod_refs (__mach_task_self (), _hurd_init_dtable[fd], MACH_PORT_RIGHT_SEND, 1); diff -durpN glibc-2.0.1/hurd/hurd/threadvar.h glibc-2.0.2/hurd/hurd/threadvar.h --- glibc-2.0.1/hurd/hurd/threadvar.h Wed Jun 14 04:51:22 1995 +++ glibc-2.0.2/hurd/hurd/threadvar.h Tue Mar 18 20:06:56 1997 @@ -1,21 +1,21 @@ /* Internal per-thread variables for the Hurd. -Copyright (C) 1994, 1995 Free Software Foundation, Inc. -This file is part of the GNU C Library. + Copyright (C) 1994, 1995, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + The GNU C Library is 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 _HURD_THREADVAR_H #define _HURD_THREADVAR_H @@ -33,7 +33,7 @@ Cambridge, MA 02139, USA. */ stack pointer is ignored; and __hurd_threadvar_stack_offset gives the address of a small allocated region which contains the variables for the single thread. */ - + extern unsigned long int __hurd_threadvar_stack_mask; extern unsigned long int __hurd_threadvar_stack_offset; @@ -60,6 +60,7 @@ enum __hurd_threadvar_index _HURD_THREADVAR_ERRNO, /* `errno' value for this thread. */ _HURD_THREADVAR_SIGSTATE, /* This thread's `struct hurd_sigstate'. */ _HURD_THREADVAR_DYNAMIC_USER, /* Dynamically-assigned user variables. */ + _HURD_THREADVAR_MALLOC, /* For use of malloc. */ _HURD_THREADVAR_MAX /* Default value for __hurd_threadvar_max. */ }; diff -durpN glibc-2.0.1/hurd/hurd.h glibc-2.0.2/hurd/hurd.h --- glibc-2.0.1/hurd/hurd.h Wed Dec 18 16:01:04 1996 +++ glibc-2.0.2/hurd/hurd.h Sun Mar 16 19:32:17 1997 @@ -1,20 +1,20 @@ -/* Copyright (C) 1993, 1994, 1995, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 _HURD_H @@ -109,11 +109,10 @@ extern pid_t _hurd_pid, _hurd_ppid, _hur extern int _hurd_orphaned; /* This variable is incremented every time the process IDs change. */ - -unsigned int _hurd_pids_changed_stamp; +extern unsigned int _hurd_pids_changed_stamp; /* This condition is broadcast every time the process IDs change. */ -struct condition _hurd_pids_changed_sync; +extern struct condition _hurd_pids_changed_sync; /* Unix `data break', for brk and sbrk. If brk and sbrk are not used, this info will not be initialized or used. */ @@ -302,6 +301,13 @@ extern int hurd_check_cancel (void); On error, sets `errno' and returns MACH_PORT_NULL. */ extern io_t __getdport (int fd), getdport (int fd); + + +#include + +/* Write formatted output to PORT, a Mach port supporting the i/o protocol, + according to the format string FORMAT, using the argument list in ARG. */ +int vpprintf (io_t port, const char *format, va_list arg); #endif /* hurd.h */ diff -durpN glibc-2.0.1/hurd/hurdfault.c glibc-2.0.2/hurd/hurdfault.c --- glibc-2.0.1/hurd/hurdfault.c Tue Dec 17 20:33:50 1996 +++ glibc-2.0.2/hurd/hurdfault.c Tue Mar 18 20:02:19 1997 @@ -1,5 +1,5 @@ /* Handle faults in the signal thread. - Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc. + Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -30,6 +30,9 @@ jmp_buf _hurdsig_fault_env; struct hurd_signal_preemptor _hurdsig_fault_preemptor; + +/* XXX temporary to deal with spelling fix */ +weak_alias (_hurdsig_fault_preemptor, _hurdsig_fault_preempter) static mach_port_t forward_sigexc; diff -durpN glibc-2.0.1/hurd/hurdinit.c glibc-2.0.2/hurd/hurdinit.c --- glibc-2.0.1/hurd/hurdinit.c Thu Dec 12 18:18:05 1996 +++ glibc-2.0.2/hurd/hurdinit.c Tue Mar 18 20:06:03 1997 @@ -1,20 +1,20 @@ -/* Copyright (C) 1992, 1993, 1994, 1995, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1992, 93, 94, 95, 96, 97 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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 @@ -31,7 +31,9 @@ struct hurd_port *_hurd_ports; unsigned int _hurd_nports; mode_t _hurd_umask; sigset_t _hurdsig_traced; + char **__libc_argv; +int __libc_argc; error_t diff -durpN glibc-2.0.1/hurd/hurdlookup.c glibc-2.0.2/hurd/hurdlookup.c --- glibc-2.0.1/hurd/hurdlookup.c Wed Jun 19 16:11:26 1996 +++ glibc-2.0.2/hurd/hurdlookup.c Tue Oct 15 11:07:21 1996 @@ -154,11 +154,7 @@ __hurd_file_name_lookup_retry (error_t ( { /* We got a successful translation. Now apply any open-time action flags we were passed. */ - if (flags & O_EXLOCK) - ; /* XXX */ - if (!err && (flags & O_SHLOCK)) - ; /* XXX */ - if (!err && (flags & O_TRUNC)) + if (flags & O_TRUNC) err = __file_set_size (*result, 0); if (err) diff -durpN glibc-2.0.1/hurd/hurdmalloc.c glibc-2.0.2/hurd/hurdmalloc.c --- glibc-2.0.1/hurd/hurdmalloc.c Thu Dec 19 15:08:20 1996 +++ glibc-2.0.2/hurd/hurdmalloc.c Thu Dec 19 20:32:01 1996 @@ -9,40 +9,36 @@ #define vm_allocate __vm_allocate #define vm_page_size __vm_page_size -/* +/* * Mach Operating System * Copyright (c) 1991,1990,1989 Carnegie Mellon University * All Rights Reserved. - * + * * Permission to use, copy, modify and distribute this software and its * documentation is hereby granted, provided that both the copyright * notice and this permission notice appear in all copies of the * software, derivative works or modified versions, and any portions * thereof, and that both notices appear in supporting documentation. - * + * * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * + * * Carnegie Mellon requests users of this software to return to - * + * * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU * School of Computer Science * Carnegie Mellon University * Pittsburgh PA 15213-3890 - * + * * any improvements or extensions that they make and grant Carnegie Mellon * the rights to redistribute these changes. */ /* * HISTORY * $Log: hurdmalloc.c,v $ - * Revision 1.13 1996/12/19 20:08:20 drepper - * Spelling corrections. - * - * Revision 1.12 1996/11/17 02:15:32 drepper - * (more_memory, malloc_fork_prepare, malloc_fork_parent, - * malloc_fork_child): Use prototype syntax. + * Revision 1.13 1996/12/20 01:32:01 drepper + * Update from main archive 961219 * * Revision 1.12 1996/11/15 19:44:13 thomas * Tue Nov 12 16:58:41 1996 Thomas Bushnell, n/BSG diff -durpN glibc-2.0.1/hurd/hurdsig.c glibc-2.0.2/hurd/hurdsig.c --- glibc-2.0.1/hurd/hurdsig.c Tue Dec 17 20:34:58 1996 +++ glibc-2.0.2/hurd/hurdsig.c Tue Mar 18 20:09:17 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 92, 93, 94, 95, 96, 1996 Free Software Foundation, Inc. +/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 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,11 @@ thread_t _hurd_msgport_thread; /* Thread which receives task-global signals. */ thread_t _hurd_sigthread; +/* These are set up by _hurdsig_init. */ +unsigned long int __hurd_sigthread_stack_base; +unsigned long int __hurd_sigthread_stack_end; +unsigned long int *__hurd_sigthread_variables; + /* Linked-list of per-thread signal state. */ struct hurd_sigstate *_hurd_sigstates; @@ -423,6 +428,9 @@ abort_all_rpcs (int signo, struct machin struct hurd_signal_preemptor *_hurdsig_preemptors; sigset_t _hurdsig_preempted_set; + +/* XXX temporary to deal with spelling fix */ +weak_alias (_hurdsig_preemptors, _hurdsig_preempters) /* Mask of stop signals. */ #define STOPSIGS (sigmask (SIGTTIN) | sigmask (SIGTTOU) | \ diff -durpN glibc-2.0.1/hurd/hurdstartup.c glibc-2.0.2/hurd/hurdstartup.c --- glibc-2.0.1/hurd/hurdstartup.c Thu Dec 12 18:17:45 1996 +++ glibc-2.0.2/hurd/hurdstartup.c Tue Mar 18 20:09:47 1997 @@ -1,21 +1,21 @@ /* Initial program startup for running under the GNU Hurd. -Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc. -This file is part of the GNU C Library. + Copyright (C) 1991, 92, 93, 94, 95, 96, 97 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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 @@ -34,15 +34,6 @@ Cambridge, MA 02139, USA. */ mach_port_t *_hurd_init_dtable; mach_msg_type_number_t _hurd_init_dtablesize; - -unsigned int __hurd_threadvar_max; -unsigned long int __hurd_threadvar_stack_mask; -unsigned long int __hurd_threadvar_stack_offset; - -/* These are set up by _hurdsig_init. */ -unsigned long int __hurd_sigthread_stack_base; -unsigned long int __hurd_sigthread_stack_end; -unsigned long int *__hurd_sigthread_variables; extern void __mach_init (void); diff -durpN glibc-2.0.1/hurd/ports-get.c glibc-2.0.2/hurd/ports-get.c --- glibc-2.0.1/hurd/ports-get.c Wed Oct 9 17:33:55 1996 +++ glibc-2.0.2/hurd/ports-get.c Tue Oct 8 14:38:34 1996 @@ -38,7 +38,7 @@ _hurd_ports_get (unsigned int which, mac return EINVAL; if (which >= INIT_PORT_MAX || _hurd_ports_getters[which] == NULL) return HURD_PORT_USE (&_hurd_ports[which], - (*result = port) == MACH_PORT_NULL ? 0 + (*result = port) == MACH_PORT_NULL ? 0 : __mach_port_mod_refs (__mach_task_self (), port, MACH_PORT_RIGHT_SEND, +1)); diff -durpN glibc-2.0.1/hurd/report-wait.c glibc-2.0.2/hurd/report-wait.c --- glibc-2.0.1/hurd/report-wait.c Wed Dec 18 16:03:03 1996 +++ glibc-2.0.2/hurd/report-wait.c Tue Mar 18 20:01:37 1997 @@ -1,21 +1,21 @@ /* Report on what a thread in our task is waiting for. -Copyright (C) 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. + Copyright (C) 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 @@ -93,8 +93,15 @@ describe_port (string_t description, mac } -/* Common defn so we don't link in the itimer code unnecessarily. */ -thread_t _hurd_itimer_thread; /* XXX */ +/* We want _HURD_ITIMER_THREAD, but don't want to link in the itimer code + unnecessarily. */ +#if 0 /* libc.so.0.0 needs this defined, so make it a weak alias for now. */ +extern thread_t _hurd_itimer_thread; /* XXX */ +weak_extern (_hurd_itimer_thread) +#else +static thread_t default_hurd_itimer_thread; +weak_alias (default_hurd_itimer_thread, _hurd_itimer_thread) +#endif kern_return_t _S_msg_report_wait (mach_port_t msgport, thread_t thread, @@ -105,7 +112,7 @@ _S_msg_report_wait (mach_port_t msgport, if (thread == _hurd_msgport_thread) /* Cute. */ strcpy (description, "msgport"); - else if (thread == _hurd_itimer_thread) + else if (&_hurd_msgport_thread && thread == _hurd_itimer_thread) strcpy (description, "itimer"); else { diff -durpN glibc-2.0.1/hurd/set-host.c glibc-2.0.2/hurd/set-host.c --- glibc-2.0.1/hurd/set-host.c Wed Jun 26 17:05:12 1996 +++ glibc-2.0.2/hurd/set-host.c Sun Mar 16 19:32:23 1997 @@ -1,21 +1,21 @@ /* Set a host configuration item kept as the whole contents of a file. -Copyright (C) 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. + Copyright (C) 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 @@ -28,7 +28,7 @@ _hurd_set_host_config (const char *item, mach_msg_type_number_t nwrote; file_t new, dir; - dir = __file_name_split (item, &item); + dir = __file_name_split (item, (char **)&item); if (dir == MACH_PORT_NULL) return -1; diff -durpN glibc-2.0.1/hurd/vpprintf.c glibc-2.0.2/hurd/vpprintf.c --- glibc-2.0.1/hurd/vpprintf.c Fri Dec 9 00:15:03 1994 +++ glibc-2.0.2/hurd/vpprintf.c Sun Mar 16 19:32:33 1997 @@ -1,30 +1,30 @@ -/* Copyright (C) 1991, 1994 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1991, 1994, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + The GNU C Library is 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 ssize_t -DEFUN(pwrite, (cookie, buf, n), - PTR cookie AND CONST char *buf AND size_t n) +pwrite (void *cookie, + const char *buf, + size_t n) { error_t error = __io_write ((io_t) cookie, buf, n, -1, (mach_msg_type_number_t *) &n); @@ -37,24 +37,25 @@ DEFUN(pwrite, (cookie, buf, n), /* Write formatted output to PORT, a Mach port supporting the i/o protocol, according to the format string FORMAT, using the argument list in ARG. */ int -DEFUN(vpprintf, (port, format, arg), - io_t port AND CONST char *format AND va_list arg) +vpprintf (io_t port, + const char *format, + va_list arg) { int done; FILE f; /* Create an unbuffered stream talking to PORT on the stack. */ - memset((PTR) &f, 0, sizeof(f)); + memset ((void *) &f, 0, sizeof (f)); f.__magic = _IOMAGIC; f.__mode.__write = 1; - f.__cookie = (PTR) port; + f.__cookie = (void *) port; f.__room_funcs = __default_room_functions; f.__io_funcs.__write = pwrite; f.__seen = 1; f.__userbuf = 1; /* vfprintf will use a buffer on the stack for the life of the call. */ - done = vfprintf(&f, format, arg); + done = vfprintf (&f, format, arg); return done; } diff -durpN glibc-2.0.1/inet/netinet/ether.h glibc-2.0.2/inet/netinet/ether.h --- glibc-2.0.1/inet/netinet/ether.h Fri Jun 28 04:55:54 1996 +++ glibc-2.0.2/inet/netinet/ether.h Mon Feb 17 23:07:27 1997 @@ -1,21 +1,21 @@ /* Functions for storing Ethernet addresses in ASCII and mapping to hostnames. -Copyright (C) 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. + Copyright (C) 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -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 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. + 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. */ + 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 __NETINET_ETHER_H @@ -25,24 +25,30 @@ Boston, MA 02111-1307, USA. */ /* Get definition of `struct ether_addr'. */ #include +__BEGIN_DECLS /* Convert 48 bit Ethernet ADDRess to ASCII. */ -char *ether_ntoa __P ((const struct ether_addr *__addr)); -char *ether_ntoa_r __P ((const struct ether_addr *__addr, char *__buf)); +extern char *ether_ntoa __P ((__const struct ether_addr *__addr)); +extern char *ether_ntoa_r __P ((__const struct ether_addr *__addr, + char *__buf)); /* Convert ASCII string S to 48 bit Ethernet address. */ -struct ether_addr *ether_aton __P ((const char *__asc)); -struct ether_addr *ether_aton_r __P ((const char *__asc, - struct ether_addr *__addr)); +extern struct ether_addr *ether_aton __P ((__const char *__asc)); +extern struct ether_addr *ether_aton_r __P ((__const char *__asc, + struct ether_addr *__addr)); /* Map 48 bit Ethernet number ADDR to HOSTNAME. */ -int ether_ntohost __P ((char *__hostname, const struct ether_addr *__addr)); +extern int ether_ntohost __P ((char *__hostname, + __const struct ether_addr *__addr)); /* Map HOSTNAME to 48 bit Ethernet address. */ -int ether_hostton __P ((const char *__hostname, struct ether_addr *__addr)); +extern int ether_hostton __P ((__const char *__hostname, + struct ether_addr *__addr)); /* Scan LINE and set ADDR and HOSTNAME. */ -int ether_line __P ((const char *__line, struct ether_addr *__addr, - char *__hostname)); +extern int ether_line __P ((__const char *__line, struct ether_addr *__addr, + char *__hostname)); + +__END_DECLS #endif /* netinet/ether.h */ diff -durpN glibc-2.0.1/inet/netinet/ip.h glibc-2.0.2/inet/netinet/ip.h --- glibc-2.0.1/inet/netinet/ip.h Sat Feb 1 11:04:08 1997 +++ glibc-2.0.2/inet/netinet/ip.h Wed Dec 31 19:00:00 1969 @@ -1,167 +0,0 @@ -/* - * Copyright (c) 1982, 1986, 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: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 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 - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)ip.h 8.1 (Berkeley) 6/10/93 - */ - -#include -#include -#include - -/* - * Definitions for internet protocol version 4. - * Per RFC 791, September 1981. - */ -#define IPVERSION 4 - -/* - * Structure of an internet header, naked of options. - */ -struct ip { -#if __BYTE_ORDER == __LITTLE_ENDIAN - __u_char ip_hl:4, /* header length */ - ip_v:4; /* version */ -#endif -#if __BYTE_ORDER == __BIG_ENDIAN - __u_char ip_v:4, /* version */ - ip_hl:4; /* header length */ -#endif - __u_char ip_tos; /* type of service */ - __u_short ip_len; /* total length */ - __u_short ip_id; /* identification */ - __u_short ip_off; /* fragment offset field */ -#define IP_RF 0x8000 /* reserved fragment flag */ -#define IP_DF 0x4000 /* dont fragment flag */ -#define IP_MF 0x2000 /* more fragments flag */ -#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */ - __u_char ip_ttl; /* time to live */ - __u_char ip_p; /* protocol */ - __u_short ip_sum; /* checksum */ - struct in_addr ip_src, ip_dst; /* source and dest address */ -}; - -#define IP_MAXPACKET 65535 /* maximum packet size */ - -/* - * Definitions for IP type of service (ip_tos) - */ -#define IPTOS_LOWDELAY 0x10 -#define IPTOS_THROUGHPUT 0x08 -#define IPTOS_RELIABILITY 0x04 -#define IPTOS_LOWCOST 0x02 -#define IPTOS_MINCOST IPTOS_LOWCOST - -/* - * Definitions for IP precedence (also in ip_tos) (hopefully unused) - */ -#define IPTOS_PREC_NETCONTROL 0xe0 -#define IPTOS_PREC_INTERNETCONTROL 0xc0 -#define IPTOS_PREC_CRITIC_ECP 0xa0 -#define IPTOS_PREC_FLASHOVERRIDE 0x80 -#define IPTOS_PREC_FLASH 0x60 -#define IPTOS_PREC_IMMEDIATE 0x40 -#define IPTOS_PREC_PRIORITY 0x20 -#define IPTOS_PREC_ROUTINE 0x00 - -/* - * Definitions for options. - */ -#define IPOPT_COPIED(o) ((o)&0x80) -#define IPOPT_CLASS(o) ((o)&0x60) -#define IPOPT_NUMBER(o) ((o)&0x1f) - -#define IPOPT_CONTROL 0x00 -#define IPOPT_RESERVED1 0x20 -#define IPOPT_DEBMEAS 0x40 -#define IPOPT_RESERVED2 0x60 - -#define IPOPT_EOL 0 /* end of option list */ -#define IPOPT_NOP 1 /* no operation */ - -#define IPOPT_RR 7 /* record packet route */ -#define IPOPT_TS 68 /* timestamp */ -#define IPOPT_SECURITY 130 /* provide s,c,h,tcc */ -#define IPOPT_LSRR 131 /* loose source route */ -#define IPOPT_SATID 136 /* satnet id */ -#define IPOPT_SSRR 137 /* strict source route */ - -/* - * Offsets to fields in options other than EOL and NOP. - */ -#define IPOPT_OPTVAL 0 /* option ID */ -#define IPOPT_OLEN 1 /* option length */ -#define IPOPT_OFFSET 2 /* offset within option */ -#define IPOPT_MINOFF 4 /* min value of above */ - -#define MAX_IPOPTLEN 40 - -/* - * Time stamp option structure. - */ -struct ip_timestamp { - __u_char ipt_code; /* IPOPT_TS */ - __u_char ipt_len; /* size of structure (variable) */ - __u_char ipt_ptr; /* index of current entry */ -#if __BYTE_ORDER == __LITTLE_ENDIAN - __u_char ipt_flg:4, /* flags, see below */ - ipt_oflw:4; /* overflow counter */ -#endif -#if __BYTE_ORDER == __BIG_ENDIAN - __u_char ipt_oflw:4, /* overflow counter */ - ipt_flg:4; /* flags, see below */ -#endif - __u_long data[9]; -}; - -/* flag bits for ipt_flg */ -#define IPOPT_TS_TSONLY 0 /* timestamps only */ -#define IPOPT_TS_TSANDADDR 1 /* timestamps and addresses */ -#define IPOPT_TS_PRESPEC 3 /* specified modules only */ - -/* bits for security (not byte swapped) */ -#define IPOPT_SECUR_UNCLASS 0x0000 -#define IPOPT_SECUR_CONFID 0xf135 -#define IPOPT_SECUR_EFTO 0x789a -#define IPOPT_SECUR_MMMM 0xbc4d -#define IPOPT_SECUR_RESTR 0xaf13 -#define IPOPT_SECUR_SECRET 0xd788 -#define IPOPT_SECUR_TOPSECRET 0x6bc5 - -/* - * Internet implementation parameters. - */ -#define MAXTTL 255 /* maximum time to live (seconds) */ -#define IPDEFTTL 64 /* default ttl, from RFC 1340 */ -#define IPFRAGTTL 60 /* time to live for frags, slowhz */ -#define IPTTLDEC 1 /* subtracted when forwarding */ - -#define IP_MSS 576 /* default maximum segment size */ diff -durpN glibc-2.0.1/inet/rcmd.c glibc-2.0.2/inet/rcmd.c --- glibc-2.0.1/inet/rcmd.c Thu Dec 26 16:55:54 1996 +++ glibc-2.0.2/inet/rcmd.c Sun Mar 16 19:24:28 1997 @@ -306,7 +306,6 @@ iruserok(raddr, superuser, ruser, luser) struct stat sbuf; struct passwd pwdbuf, *pwd; FILE *hostf; - uid_t uid; int first; first = 1; @@ -326,7 +325,7 @@ again: char *buffer = __alloca (buflen); first = 0; - if (getpwnam_r (luser, &pwdbuf, buffer, buflen, &pwd) < 0) + if (__getpwnam_r (luser, &pwdbuf, buffer, buflen, &pwd) < 0) return -1; dirlen = strlen (pwd->pw_dir); @@ -339,10 +338,15 @@ again: * reading an NFS mounted file system, can't read files that * are protected read/write owner only. */ - uid = geteuid(); - (void)seteuid(pwd->pw_uid); - hostf = fopen(pbuf, "r"); - (void)seteuid(uid); + if (__euidaccess (pbuf, R_OK) != 0) + hostf = NULL; + else + { + uid_t uid = geteuid (); + seteuid (pwd->pw_uid); + hostf = fopen (pbuf, "r"); + seteuid (uid); + } if (hostf == NULL) return (-1); @@ -390,7 +394,7 @@ __ivaliduser(hostf, raddr, luser, ruser) size_t bufsize = 0; ssize_t nread; - while ((nread = getline (&buf, &bufsize, hostf)) > 0) { + while ((nread = __getline (&buf, &bufsize, hostf)) > 0) { buf[bufsize - 1] = '\0'; /* Make sure it's terminated. */ p = buf; while (*p != '\n' && *p != ' ' && *p != '\t' && *p != '\0') { diff -durpN glibc-2.0.1/intl/l10nflist.c glibc-2.0.2/intl/l10nflist.c --- glibc-2.0.1/intl/l10nflist.c Sun Jan 19 15:27:10 1997 +++ glibc-2.0.2/intl/l10nflist.c Mon Feb 17 23:07:31 1997 @@ -206,7 +206,8 @@ _nl_make_l10nflist (l10nfile_list, dirli ? strlen (modifier) + 1 : 0) + ((mask & CEN_SPECIAL) != 0 ? strlen (special) + 1 : 0) - + ((mask & (CEN_SPONSOR | CEN_REVISION) != 0) + + (((mask & CEN_SPONSOR) != 0 + || (mask & CEN_REVISION) != 0) ? (1 + ((mask & CEN_SPONSOR) != 0 ? strlen (sponsor) + 1 : 0) + ((mask & CEN_REVISION) != 0 diff -durpN glibc-2.0.1/io/ftw.h glibc-2.0.2/io/ftw.h --- glibc-2.0.1/io/ftw.h Mon Jan 6 07:45:25 1997 +++ glibc-2.0.2/io/ftw.h Mon Feb 17 23:07:33 1997 @@ -26,6 +26,8 @@ #define _FTW_H 1 #include +__BEGIN_DECLS + #include /* The FLAG argument to the user function passed to ftw. */ @@ -40,5 +42,7 @@ extern int ftw __P ((__const char *__dir __const struct stat *__status, int __flag), int __descriptors)); + +__END_DECLS #endif /* ftw.h */ diff -durpN glibc-2.0.1/libio/_G_config.h glibc-2.0.2/libio/_G_config.h --- glibc-2.0.1/libio/_G_config.h Wed Jan 1 18:45:27 1997 +++ glibc-2.0.2/libio/_G_config.h Fri Feb 14 21:32:30 1997 @@ -8,13 +8,23 @@ #include #define __need_size_t +#define __need_wint_t #include +#ifndef _WINT_T +/* Integral type unchanged by default argument promotions that can + hold any value corresponding to members of the extended character + set, as well as at least one value that does not correspond to any + member of the extended character set. */ +#define _WINT_T +typedef unsigned int wint_t; +#endif #define _G_size_t size_t #define _G_fpos_t __off_t #define _G_ssize_t __ssize_t #define _G_off_t __off_t #define _G_pid_t __pid_t #define _G_uid_t __uid_t +#define _G_wint_t wint_t typedef int _G_int16_t __attribute__ ((__mode__ (__HI__))); typedef int _G_int32_t __attribute__ ((__mode__ (__SI__))); diff -durpN glibc-2.0.1/libio/fileops.c glibc-2.0.2/libio/fileops.c --- glibc-2.0.1/libio/fileops.c Wed Dec 18 16:08:43 1996 +++ glibc-2.0.2/libio/fileops.c Wed Mar 5 16:16:09 1997 @@ -138,8 +138,8 @@ DEFUN(_IO_file_close_it, (fp), } void -DEFUN(_IO_file_finish, (fp), - register _IO_FILE* fp) +DEFUN(_IO_file_finish, (fp, dummy), + register _IO_FILE* fp AND int dummy) { if (_IO_file_is_open(fp)) { @@ -147,7 +147,7 @@ DEFUN(_IO_file_finish, (fp), if (!(fp->_flags & _IO_DELETE_DONT_CLOSE)) _IO_SYSCLOSE (fp); } - _IO_default_finish(fp); + _IO_default_finish(fp, 0); } _IO_FILE * diff -durpN glibc-2.0.1/libio/genops.c glibc-2.0.2/libio/genops.c --- glibc-2.0.1/libio/genops.c Fri Jan 3 11:23:02 1997 +++ glibc-2.0.2/libio/genops.c Wed Mar 5 16:13:42 1997 @@ -481,8 +481,8 @@ DEFUN(_IO_default_sync, (fp), current implementation, this function can get called twice! */ void -DEFUN(_IO_default_finish, (fp), - _IO_FILE *fp) +DEFUN(_IO_default_finish, (fp, dummy), + _IO_FILE *fp AND int dummy) { struct _IO_marker *mark; if (fp->_IO_buf_base && !(fp->_flags & _IO_USER_BUF)) diff -durpN glibc-2.0.1/libio/libioP.h glibc-2.0.2/libio/libioP.h --- glibc-2.0.1/libio/libioP.h Wed Dec 18 16:12:06 1996 +++ glibc-2.0.2/libio/libioP.h Wed Mar 5 16:12:45 1997 @@ -101,8 +101,8 @@ extern "C" { /* The 'finish' function does any final cleaning up of an _IO_FILE object. It does not delete (free) it, but does everything else to finalize it/ It matches the streambuf::~streambuf virtual destructor. */ -typedef void (*_IO_finish_t) __P((_IO_FILE*)); /* finalize */ -#define _IO_FINISH(FP) JUMP0(__finish, FP) +typedef void (*_IO_finish_t) __P((_IO_FILE*, int)); /* finalize */ +#define _IO_FINISH(FP) JUMP1(__finish, FP, 0) /* The 'overflow' hook flushes the buffer. The second argument is a character, or EOF. @@ -295,7 +295,7 @@ extern int _IO_seekmark __P((_IO_FILE *, extern int _IO_default_underflow __P((_IO_FILE*)); extern int _IO_default_uflow __P((_IO_FILE*)); extern int _IO_default_doallocate __P((_IO_FILE*)); -extern void _IO_default_finish __P((_IO_FILE *)); +extern void _IO_default_finish __P((_IO_FILE *, int)); extern int _IO_default_pbackfail __P((_IO_FILE*, int)); extern _IO_FILE* _IO_default_setbuf __P((_IO_FILE *, char*, _IO_ssize_t)); extern _IO_size_t _IO_default_xsputn __P((_IO_FILE *, const void*, _IO_size_t)); @@ -352,7 +352,7 @@ extern _IO_ssize_t _IO_file_read __P((_I extern int _IO_file_sync __P((_IO_FILE*)); extern int _IO_file_close_it __P((_IO_FILE*)); extern _IO_fpos_t _IO_file_seek __P((_IO_FILE *, _IO_off_t, int)); -extern void _IO_file_finish __P((_IO_FILE*)); +extern void _IO_file_finish __P((_IO_FILE*, int)); /* Other file functions. */ extern _IO_FILE* _IO_file_attach __P((_IO_FILE *, int)); @@ -366,7 +366,7 @@ extern int _IO_str_underflow __P((_IO_FI extern int _IO_str_overflow __P((_IO_FILE *, int)); extern int _IO_str_pbackfail __P((_IO_FILE*, int)); extern _IO_fpos_t _IO_str_seekoff __P((_IO_FILE*,_IO_off_t,int,int)); -extern void _IO_str_finish __P ((_IO_FILE*)); +extern void _IO_str_finish __P ((_IO_FILE*, int)); /* Other strfile functions */ extern void _IO_str_init_static __P((_IO_FILE *, char*, int, char*)); diff -durpN glibc-2.0.1/libio/memstream.c glibc-2.0.2/libio/memstream.c --- glibc-2.0.1/libio/memstream.c Wed Dec 11 15:59:08 1996 +++ glibc-2.0.2/libio/memstream.c Wed Mar 5 16:15:00 1997 @@ -1,20 +1,20 @@ -/* Copyright (C) 1995, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -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 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. + 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. */ + 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 "libioP.h" #include "strfile.h" @@ -31,7 +31,7 @@ struct _IO_FILE_memstream static int _IO_mem_sync __P ((_IO_FILE* fp)); -static void _IO_mem_finish __P ((_IO_FILE* fp)); +static void _IO_mem_finish __P ((_IO_FILE* fp, int)); static const struct _IO_jump_t _IO_mem_jumps = @@ -124,8 +124,9 @@ _IO_mem_sync (fp) static void -_IO_mem_finish (fp) +_IO_mem_finish (fp, dummy) _IO_FILE* fp; + int dummy; { struct _IO_FILE_memstream *mp = (struct _IO_FILE_memstream *) fp; @@ -139,5 +140,5 @@ _IO_mem_finish (fp) fp->_IO_buf_base = NULL; - _IO_default_finish (fp); + _IO_default_finish (fp, 0); } diff -durpN glibc-2.0.1/libio/strops.c glibc-2.0.2/libio/strops.c --- glibc-2.0.1/libio/strops.c Wed Dec 18 16:12:22 1996 +++ glibc-2.0.2/libio/strops.c Wed Mar 5 16:17:20 1997 @@ -258,14 +258,14 @@ DEFUN(_IO_str_pbackfail, (fp, c), } void -DEFUN (_IO_str_finish, (fp), - register _IO_FILE* fp) +DEFUN (_IO_str_finish, (fp, dummy), + register _IO_FILE* fp AND int dummy) { if (fp->_IO_buf_base && !(fp->_flags & _IO_USER_BUF)) (((_IO_strfile*)fp)->_s._free_buffer)(fp->_IO_buf_base); fp->_IO_buf_base = NULL; - _IO_default_finish(fp); + _IO_default_finish(fp, 0); } struct _IO_jump_t _IO_str_jumps = { diff -durpN glibc-2.0.1/libio/vsnprintf.c glibc-2.0.2/libio/vsnprintf.c --- glibc-2.0.1/libio/vsnprintf.c Sat Dec 7 18:43:44 1996 +++ glibc-2.0.2/libio/vsnprintf.c Sun Feb 9 22:18:23 1997 @@ -38,6 +38,11 @@ _IO_vsnprintf (string, maxlen, format, a _IO_lock_t lock; sf._sbf._f._lock = &lock; #endif + + /* We need to handle the special case where MAXLEN is 0. */ + if (maxlen == 0) + return 0; + _IO_init ((_IO_FILE *) &sf, 0); _IO_JUMPS ((_IO_FILE *) &sf) = &_IO_str_jumps; _IO_str_init_static ((_IO_FILE *) &sf, string, maxlen - 1, string); diff -durpN glibc-2.0.1/locale/C-time.c glibc-2.0.2/locale/C-time.c --- glibc-2.0.1/locale/C-time.c Sun Jan 19 12:49:44 1997 +++ glibc-2.0.2/locale/C-time.c Tue Feb 25 20:05:18 1997 @@ -26,7 +26,7 @@ const struct locale_data _nl_C_LC_TIME = { _nl_C_name, NULL, 0, /* no file mapped */ - 53, + 54, { { string: "Sun" }, { string: "Mon" }, @@ -78,6 +78,7 @@ const struct locale_data _nl_C_LC_TIME = { string: "" }, { string: "" }, { string: "" }, + { word: 0 }, { word: 0 }, { string: "" }, { string: "" }, diff -durpN glibc-2.0.1/locale/programs/charmap.c glibc-2.0.2/locale/programs/charmap.c --- glibc-2.0.1/locale/programs/charmap.c Sat Jan 4 07:51:09 1997 +++ glibc-2.0.2/locale/programs/charmap.c Wed Mar 5 11:31:14 1997 @@ -72,7 +72,7 @@ charmap_read (const char *filename) result = parse_charmap (pathnfile); - if (result == NULL) + if (result == NULL && !be_quiet) error (0, errno, _("character map file `%s' not found"), filename); } @@ -171,7 +171,7 @@ parse_charmap (const char *filename) result->mb_cur_max = 1; if (result->mb_cur_min == 0) result->mb_cur_min = result->mb_cur_max; - if (result->mb_cur_min > result->mb_cur_max) + if (result->mb_cur_min > result->mb_cur_max && !be_quiet) { error (0, 0, _("\ %s: must be greater than \n"), @@ -596,7 +596,7 @@ only WIDTH definitions are allowed to fo break; } - if (state != 91) + if (state != 91 && !be_quiet) error (0, 0, _("%s: premature end of file"), cmfile->fname); lr_close (cmfile); diff -durpN glibc-2.0.1/locale/programs/charset.h glibc-2.0.2/locale/programs/charset.h --- glibc-2.0.1/locale/programs/charset.h Wed Dec 18 16:15:22 1996 +++ glibc-2.0.2/locale/programs/charset.h Wed Mar 5 11:27:39 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper, . @@ -55,6 +55,9 @@ struct charset_t first is used and we have plenty of room. */ #define ILLEGAL_CHAR_VALUE ((wchar_t) 0xffffffffu) + +/* Declared in localedef.c. */ +extern int be_quiet; /* Prototypes for charmap handling functions. */ struct charset_t *charmap_read (const char *filename); diff -durpN glibc-2.0.1/locale/programs/ld-collate.c glibc-2.0.2/locale/programs/ld-collate.c --- glibc-2.0.1/locale/programs/ld-collate.c Sat Jan 4 07:52:01 1997 +++ glibc-2.0.2/locale/programs/ld-collate.c Wed Mar 5 11:34:31 1997 @@ -239,7 +239,7 @@ collate_finish (struct localedef_t *loca else value = 0; - if (value == 0) + if (value == 0 && !be_quiet) error_at_line (0, 0, patch->fname, patch->lineno, _("no weight defined for symbol `%s'"), patch->token); else @@ -256,7 +256,8 @@ collate_finish (struct localedef_t *loca \**************************************************************/ u_int32_t weight; - error (0, 0, _("no definition of `UNDEFINED'")); + if (!be_quiet) + error (0, 0, _("no definition of `UNDEFINED'")); collate->undefined.ordering_len = collate->nrules; weight = ++collate->order_cnt; @@ -324,9 +325,10 @@ collate_output (struct localedef_t *loca level_best = 0xffff; /* Compute table size. */ - fputs (_("\ + if (!be_quiet) + fputs (_("\ Computing table size for collation information might take a while..."), - stderr); + stderr); for (table_size = 256; table_size < sum_best; ++table_size) { size_t hits[table_size]; @@ -357,7 +359,8 @@ Computing table size for collation infor } } assert (table_best != 0xffff || level_best != 0xffff); - fputs (_(" done\n"), stderr); + if (!be_quiet) + fputs (_(" done\n"), stderr); obstack_init (&non_simple); obstack_init (&string_pool); diff -durpN glibc-2.0.1/locale/programs/ld-ctype.c glibc-2.0.2/locale/programs/ld-ctype.c --- glibc-2.0.1/locale/programs/ld-ctype.c Wed Dec 18 16:18:13 1996 +++ glibc-2.0.2/locale/programs/ld-ctype.c Wed Mar 5 11:48:33 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1995, 1996 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper, . @@ -262,10 +262,11 @@ ctype_finish (struct localedef_t *locale cp += sprintf (cp, "\\%o", (value >> 8) & 0xff); sprintf (cp, "\\%o", value & 0xff); - error (0, 0, _("\ + if (!be_quiet) + error (0, 0, _("\ character %s'%s' in class `%s' must be in class `%s'"), value > 256 ? "L" : "", - cp, valid_table[cls1].name, - valid_table[cls2].name); + cp, valid_table[cls1].name, + valid_table[cls2].name); } break; @@ -286,10 +287,12 @@ character %s'%s' in class `%s' must be i cp += sprintf (cp, "\\%o", (value >> 8) & 0xff); sprintf (cp, "\\%o", value & 0xff); - error (0, 0, _("\ + if (!be_quiet) + error (0, 0, _("\ character %s'%s' in class `%s' must not be in class `%s'"), - value > 256 ? "L" : "", cp, - valid_table[cls1].name, valid_table[cls2].name); + value > 256 ? "L" : "", cp, + valid_table[cls1].name, + valid_table[cls2].name); } break; @@ -306,23 +309,25 @@ character %s'%s' in class `%s' must not /* ... and now test as a special case. */ space_value = charset_find_value (charset, "SP", 2); - if ((wchar_t) space_value == ILLEGAL_CHAR_VALUE) + if ((wchar_t) space_value == ILLEGAL_CHAR_VALUE && !be_quiet) error (0, 0, _("character not defined in character map")); - else if ((cnt = BITPOS (tok_space), - (ELEM (ctype, class_collection, , space_value) - & BIT (tok_space)) == 0) - || (cnt = BITPOS (tok_blank), - (ELEM (ctype, class_collection, , space_value) - & BIT (tok_blank)) == 0)) + else if (((cnt = BITPOS (tok_space), + (ELEM (ctype, class_collection, , space_value) + & BIT (tok_space)) == 0) + || (cnt = BITPOS (tok_blank), + (ELEM (ctype, class_collection, , space_value) + & BIT (tok_blank)) == 0)) + && !be_quiet) error (0, 0, _(" character not in class `%s'"), valid_table[cnt].name); - else if ((cnt = BITPOS (tok_punct), - (ELEM (ctype, class_collection, , space_value) - & BIT (tok_punct)) != 0) - || (cnt = BITPOS (tok_graph), - (ELEM (ctype, class_collection, , space_value) - & BIT (tok_graph)) - != 0)) + else if (((cnt = BITPOS (tok_punct), + (ELEM (ctype, class_collection, , space_value) + & BIT (tok_punct)) != 0) + || (cnt = BITPOS (tok_graph), + (ELEM (ctype, class_collection, , space_value) + & BIT (tok_graph)) + != 0)) + && !be_quiet) error (0, 0, _(" character must not be in class `%s'"), valid_table[cnt].name); else @@ -934,7 +939,7 @@ set_class_defaults (struct locale_ctype_ tmp[0] = ch; value = charset_find_value (charset, tmp, 1); - if ((wchar_t) value == ILLEGAL_CHAR_VALUE) + if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet) { error (0, 0, _("\ character `%s' not defined while needed as default value"), @@ -998,7 +1003,7 @@ character `%s' not defined while needed unsigned int value; value = charset_find_value (charset, "space", 5); - if ((wchar_t) value == ILLEGAL_CHAR_VALUE) + if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet) error (0, 0, _("\ character `%s' not defined while needed as default value"), ""); @@ -1006,7 +1011,7 @@ character `%s' not defined while needed ELEM (ctype, class_collection, , value) |= BIT (tok_space); value = charset_find_value (charset, "form-feed", 9); - if ((wchar_t) value == ILLEGAL_CHAR_VALUE) + if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet) error (0, 0, _("\ character `%s' not defined while needed as default value"), ""); @@ -1014,7 +1019,7 @@ character `%s' not defined while needed ELEM (ctype, class_collection, , value) |= BIT (tok_space); value = charset_find_value (charset, "newline", 7); - if ((wchar_t) value == ILLEGAL_CHAR_VALUE) + if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet) error (0, 0, _("\ character `%s' not defined while needed as default value"), ""); @@ -1022,7 +1027,7 @@ character `%s' not defined while needed ELEM (ctype, class_collection, , value) |= BIT (tok_space); value = charset_find_value (charset, "carriage-return", 15); - if ((wchar_t) value == ILLEGAL_CHAR_VALUE) + if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet) error (0, 0, _("\ character `%s' not defined while needed as default value"), ""); @@ -1030,7 +1035,7 @@ character `%s' not defined while needed ELEM (ctype, class_collection, , value) |= BIT (tok_space); value = charset_find_value (charset, "tab", 3); - if ((wchar_t) value == ILLEGAL_CHAR_VALUE) + if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet) error (0, 0, _("\ character `%s' not defined while needed as default value"), ""); @@ -1038,7 +1043,7 @@ character `%s' not defined while needed ELEM (ctype, class_collection, , value) |= BIT (tok_space); value = charset_find_value (charset, "vertical-tab", 12); - if ((wchar_t) value == ILLEGAL_CHAR_VALUE) + if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet) error (0, 0, _("\ character `%s' not defined while needed as default value"), ""); @@ -1064,7 +1069,7 @@ character `%s' not defined while needed unsigned int value; value = charset_find_value (charset, "space", 5); - if ((wchar_t) value == ILLEGAL_CHAR_VALUE) + if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet) error (0, 0, _("\ character `%s' not defined while needed as default value"), ""); @@ -1072,7 +1077,7 @@ character `%s' not defined while needed ELEM (ctype, class_collection, , value) |= BIT (tok_blank); value = charset_find_value (charset, "tab", 3); - if ((wchar_t) value == ILLEGAL_CHAR_VALUE) + if ((wchar_t) value == ILLEGAL_CHAR_VALUE && !be_quiet) error (0, 0, _("\ character `%s' not defined while needed as default value"), ""); @@ -1110,7 +1115,7 @@ character `%s' not defined while needed ctype->class_collection[cnt] |= BIT (tok_print); space = charset_find_value (charset, "space", 5); - if (space == ILLEGAL_CHAR_VALUE) + if (space == ILLEGAL_CHAR_VALUE && !be_quiet) error (0, 0, _("\ character `%s' not defined while needed as default value"), ""); @@ -1136,7 +1141,7 @@ character `%s' not defined while needed tmp[1] = (char) ch; value_from = charset_find_value (charset, &tmp[1], 1); - if ((wchar_t) value_from == ILLEGAL_CHAR_VALUE) + if ((wchar_t) value_from == ILLEGAL_CHAR_VALUE && !be_quiet) { error (0, 0, _("\ character `%s' not defined while needed as default value"), @@ -1147,7 +1152,7 @@ character `%s' not defined while needed /* This conversion is implementation defined. */ tmp[1] = (char) (ch + ('A' - 'a')); value_to = charset_find_value (charset, &tmp[1], 1); - if ((wchar_t) value_to == ILLEGAL_CHAR_VALUE) + if ((wchar_t) value_to == ILLEGAL_CHAR_VALUE && !be_quiet) { error (0, 0, _("\ character `%s' not defined while needed as default value"), @@ -1195,9 +1200,10 @@ allocate_arrays (struct locale_ctype_t * size_t min_total = UINT_MAX; size_t act_size = 256; - fputs (_("\ + if (!be_quiet) + fputs (_("\ Computing table size for character classes might take a while..."), - stderr); + stderr); while (act_size < min_total) { @@ -1232,7 +1238,8 @@ Computing table size for character class ++act_size; } - fprintf (stderr, _(" done\n")); + if (!be_quiet) + fprintf (stderr, _(" done\n")); #if __BYTE_ORDER == __LITTLE_ENDIAN diff -durpN glibc-2.0.1/locale/programs/ld-messages.c glibc-2.0.2/locale/programs/ld-messages.c --- glibc-2.0.1/locale/programs/ld-messages.c Fri May 3 13:43:13 1996 +++ glibc-2.0.2/locale/programs/ld-messages.c Wed Mar 5 11:50:25 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1995, 1996 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper, . @@ -77,7 +77,7 @@ messages_finish (struct localedef_t *loc = locale->categories[LC_MESSAGES].messages; /* The fields YESSTR and NOSTR are optional. */ - if (messages->yesexpr == NULL) + if (messages->yesexpr == NULL && !be_quiet) error (0, 0, _("field `%s' in category `%s' undefined"), "yesexpr", "LC_MESSAGES"); else @@ -87,7 +87,7 @@ messages_finish (struct localedef_t *loc /* Test whether it are correct regular expressions. */ result = regcomp (&re, messages->yesexpr, REG_EXTENDED); - if (result != 0) + if (result != 0 && !be_quiet) { char errbuf[BUFSIZ]; @@ -98,7 +98,7 @@ no correct regular expression for field } } - if (messages->noexpr == NULL) + if (messages->noexpr == NULL && !be_quiet) error (0, 0, _("field `%s' in category `%s' undefined"), "noexpr", "LC_MESSAGES"); else @@ -108,7 +108,7 @@ no correct regular expression for field /* Test whether it are correct regular expressions. */ result = regcomp (&re, messages->noexpr, REG_EXTENDED); - if (result != 0) + if (result != 0 && !be_quiet) { char errbuf[BUFSIZ]; diff -durpN glibc-2.0.1/locale/programs/ld-monetary.c glibc-2.0.2/locale/programs/ld-monetary.c --- glibc-2.0.1/locale/programs/ld-monetary.c Wed May 22 22:30:52 1996 +++ glibc-2.0.2/locale/programs/ld-monetary.c Wed Mar 5 11:52:48 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1995, 1996 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper, . @@ -115,7 +115,7 @@ monetary_finish (struct localedef_t *loc = locale->categories[LC_MONETARY].monetary; #define TEST_ELEM(cat) \ - if (monetary->cat == NULL) \ + if (monetary->cat == NULL && !be_quiet) \ error (0, 0, _("field `%s' in category `%s' not defined"), \ #cat, "LC_MONETARY") @@ -129,12 +129,13 @@ monetary_finish (struct localedef_t *loc /* The international currency symbol must come from ISO 4217. */ if (monetary->int_curr_symbol != NULL) { - if (strlen (monetary->int_curr_symbol) != 4) + if (strlen (monetary->int_curr_symbol) != 4 && !be_quiet) error (0, 0, _("\ value of field `int_curr_symbol' in category `LC_MONETARY' has wrong length")); else if (bsearch (monetary->int_curr_symbol, valid_int_curr, NR_VALID_INT_CURR, sizeof (const char *), - (comparison_fn_t) curr_strcmp) == NULL) + (comparison_fn_t) curr_strcmp) == NULL + && !be_quiet) error (0, 0, _("\ value of field `int_curr_symbol' in category `LC_MONETARY' does \ not correspond to a valid name in ISO 4217")); @@ -143,23 +144,23 @@ not correspond to a valid name in ISO 42 /* The decimal point must not be empty. This is not said explicitly in POSIX but ANSI C (ISO/IEC 9899) says in 4.4.2.1 it has to be != "". */ - if (monetary->mon_decimal_point[0] == '\0') + if (monetary->mon_decimal_point[0] == '\0' && !be_quiet) { error (0, 0, _("\ value for field `%s' in category `%s' must not be the empty string"), "mon_decimal_point", "LC_MONETARY"); } - if (monetary->mon_grouping_act == 0) + if (monetary->mon_grouping_act == 0 && !be_quiet) error (0, 0, _("field `%s' in category `%s' not defined"), "mon_grouping", "LC_MONETARY"); #undef TEST_ELEM #define TEST_ELEM(cat, min, max) \ - if (monetary->cat == -2) \ + if (monetary->cat == -2 && !be_quiet) \ error (0, 0, _("field `%s' in category `%s' not defined"), \ #cat, "LC_MONETARY"); \ - else if (monetary->cat < min || monetary->cat > max) \ + else if ((monetary->cat < min || monetary->cat > max) && !be_quiet) \ error (0, 0, _("\ value for field `%s' in category `%s' must be in range %d...%d"), \ #cat, "LC_MONETARY", min, max) diff -durpN glibc-2.0.1/locale/programs/ld-numeric.c glibc-2.0.2/locale/programs/ld-numeric.c --- glibc-2.0.1/locale/programs/ld-numeric.c Tue Nov 5 16:09:39 1996 +++ glibc-2.0.2/locale/programs/ld-numeric.c Wed Mar 5 11:53:32 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1995, 1996 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper, . @@ -74,7 +74,7 @@ numeric_finish (struct localedef_t *loca struct locale_numeric_t *numeric = locale->categories[LC_NUMERIC].numeric; #define TEST_ELEM(cat) \ - if (numeric->cat == NULL) \ + if (numeric->cat == NULL && !be_quiet) \ error (0, 0, _("field `%s' in category `%s' not defined"), \ #cat, "LC_NUMERIC") @@ -84,14 +84,14 @@ numeric_finish (struct localedef_t *loca /* The decimal point must not be empty. This is not said explicitly in POSIX but ANSI C (ISO/IEC 9899) says in 4.4.2.1 it has to be != "". */ - if (numeric->decimal_point[0] == '\0') + if (numeric->decimal_point[0] == '\0' && !be_quiet) { error (0, 0, _("\ value for field `%s' in category `%s' must not be the empty string"), "decimal_point", "LC_NUMERIC"); } - if (numeric->grouping_act == 0) + if (numeric->grouping_act == 0 && !be_quiet) error (0, 0, _("field `%s' in category `%s' not defined"), "grouping", "LC_NUMERIC"); } diff -durpN glibc-2.0.1/locale/programs/ld-time.c glibc-2.0.2/locale/programs/ld-time.c --- glibc-2.0.1/locale/programs/ld-time.c Thu Jan 16 14:46:33 1997 +++ glibc-2.0.2/locale/programs/ld-time.c Wed Mar 5 11:57:45 1997 @@ -106,10 +106,10 @@ time_finish (struct localedef_t *locale) struct locale_time_t *time = locale->categories[LC_TIME].time; #define TESTARR_ELEM(cat, max) \ - if (time->cur_num_##cat == 0) \ + if (time->cur_num_##cat == 0 && !be_quiet) \ error (0, 0, _("field `%s' in category `%s' not defined"), \ #cat, "LC_TIME"); \ - else if (time->cur_num_##cat != max) \ + else if (time->cur_num_##cat != max && !be_quiet) \ error (0, 0, _("field `%s' in category `%s' has not enough values"), \ #cat, "LC_TIME") @@ -120,7 +120,7 @@ time_finish (struct localedef_t *locale) TESTARR_ELEM (am_pm, 2); #define TEST_ELEM(cat) \ - if (time->cat == NULL) \ + if (time->cat == NULL && !be_quiet) \ error (0, 0, _("field `%s' in category `%s' not defined"), \ #cat, "LC_TIME") @@ -149,7 +149,7 @@ time_finish (struct localedef_t *locale) memcpy (str, time->era[idx], era_len + 1); /* First character must be + or - for the direction. */ - if (*str != '+' && *str != '-') + if (*str != '+' && *str != '-' && !be_quiet) { error (0, 0, _("direction flag in string %d in `era' field" " in category `%s' is not '+' nor '-'"), @@ -159,7 +159,7 @@ time_finish (struct localedef_t *locale) } else time->era_entries[idx].direction = *str; - if (*++str != ':') + if (*++str != ':' && !be_quiet) { error (0, 0, _("direction flag in string %d in `era' field" " in category `%s' is not a single character"), @@ -171,14 +171,14 @@ time_finish (struct localedef_t *locale) /* Now the offset year. */ time->era_entries[idx].offset = strtol (str, &endp, 10); - if (endp == str) + if (endp == str && !be_quiet) { error (0, 0, _("illegal number for offset in string %d in" " `era' field in category `%s'"), idx + 1, "LC_TIME"); (void) strsep (&str, ":"); } - else if (*endp != ':') + else if (*endp != ':' && !be_quiet) { error (0, 0, _("garbage at end of offset value in string %d in" " `era' field in category `%s'"), @@ -224,7 +224,7 @@ time_finish (struct localedef_t *locale) time->era_entries[idx].start_date[1] -= 1; time->era_entries[idx].start_date[2] = strtol (str, &endp, 10); - if (endp == str) + if (endp == str && !be_quiet) { invalid_start_date: error (0, 0, _("illegal starting date in string %d in" @@ -232,7 +232,7 @@ time_finish (struct localedef_t *locale) idx + 1, "LC_TIME"); (void) strsep (&str, ":"); } - else if (*endp != ':') + else if (*endp != ':' && !be_quiet) { garbage_start_date: error (0, 0, _("garbage at end of starting date in string %d" @@ -245,14 +245,15 @@ time_finish (struct localedef_t *locale) str = endp + 1; /* Check for valid value. */ - if (time->era_entries[idx].start_date[1] < 0 - || time->era_entries[idx].start_date[1] >= 12 - || time->era_entries[idx].start_date[2] < 0 - || (time->era_entries[idx].start_date[2] - > days_per_month[time->era_entries[idx].start_date[1]]) - || (time->era_entries[idx].start_date[1] == 2 - && time->era_entries[idx].start_date[2] == 29 - && !__isleap (time->era_entries[idx].start_date[0]))) + if ((time->era_entries[idx].start_date[1] < 0 + || time->era_entries[idx].start_date[1] >= 12 + || time->era_entries[idx].start_date[2] < 0 + || (time->era_entries[idx].start_date[2] + > days_per_month[time->era_entries[idx].start_date[1]]) + || (time->era_entries[idx].start_date[1] == 2 + && time->era_entries[idx].start_date[2] == 29 + && !__isleap (time->era_entries[idx].start_date[0]))) + && !be_quiet) error (0, 0, _("starting date is illegal in" " string %d in `era' field in" " category `%s'"), @@ -296,7 +297,7 @@ time_finish (struct localedef_t *locale) time->era_entries[idx].stop_date[1] -= 1; time->era_entries[idx].stop_date[2] = strtol (str, &endp, 10); - if (endp == str) + if (endp == str && !be_quiet) { invalid_stop_date: error (0, 0, _("illegal stopping date in string %d in" @@ -304,7 +305,7 @@ time_finish (struct localedef_t *locale) idx + 1, "LC_TIME"); (void) strsep (&str, ":"); } - else if (*endp != ':') + else if (*endp != ':' && !be_quiet) { garbage_stop_date: error (0, 0, _("garbage at end of stopping date in string %d" @@ -317,14 +318,15 @@ time_finish (struct localedef_t *locale) str = endp + 1; /* Check for valid value. */ - if (time->era_entries[idx].stop_date[1] < 0 - || time->era_entries[idx].stop_date[1] >= 12 - || time->era_entries[idx].stop_date[2] < 0 - || (time->era_entries[idx].stop_date[2] - > days_per_month[time->era_entries[idx].stop_date[1]]) - || (time->era_entries[idx].stop_date[1] == 2 - && time->era_entries[idx].stop_date[2] == 29 - && !__isleap (time->era_entries[idx].stop_date[0]))) + if ((time->era_entries[idx].stop_date[1] < 0 + || time->era_entries[idx].stop_date[1] >= 12 + || time->era_entries[idx].stop_date[2] < 0 + || (time->era_entries[idx].stop_date[2] + > days_per_month[time->era_entries[idx].stop_date[1]]) + || (time->era_entries[idx].stop_date[1] == 2 + && time->era_entries[idx].stop_date[2] == 29 + && !__isleap (time->era_entries[idx].stop_date[0]))) + && !be_quiet) error (0, 0, _("stopping date is illegal in" " string %d in `era' field in" " category `%s'"), @@ -332,7 +334,7 @@ time_finish (struct localedef_t *locale) } } - if (str == NULL || *str == '\0') + if ((str == NULL || *str == '\0') && !be_quiet) { error (0, 0, _("missing era name in string %d in `era' field" " in category `%s'"), idx + 1, "LC_TIME"); @@ -343,7 +345,7 @@ time_finish (struct localedef_t *locale) { time->era_entries[idx].name = strsep (&str, ":"); - if (str == NULL || *str == '\0') + if ((str == NULL || *str == '\0') && !be_quiet) { error (0, 0, _("missing era format in string %d in `era'" " field in category `%s'"), diff -durpN glibc-2.0.1/locale/programs/localedef.c glibc-2.0.2/locale/programs/localedef.c --- glibc-2.0.1/locale/programs/localedef.c Tue Jan 21 19:28:34 1997 +++ glibc-2.0.2/locale/programs/localedef.c Sun Mar 16 19:26:49 1997 @@ -70,6 +70,8 @@ int posix_conformance; /* If not zero give a lot more messages. */ int verbose; +/* If not zero don't print warnings. */ +int be_quiet; /* Long options. */ @@ -81,6 +83,7 @@ static const struct option long_options[ { "force", no_argument, NULL, 'c' }, { "inputfile", required_argument, NULL, 'i' }, { "posix", no_argument, &posix_conformance, 1 }, + { "quiet", no_argument, &be_quiet, 1 }, { "verbose", no_argument, &verbose, 1}, { "version", no_argument, NULL, 'V' }, { NULL, 0, NULL, 0 } @@ -258,21 +261,22 @@ warranty; not even for MERCHANTABILITY o if (! avail) { - const char *locale_names[] = { "LC_COLLATE", "LC_CTYPE", - "LC_MONETARY", "LC_NUMERIC", - "LC_TIME", "LC_MESSAGES" }; + static const char *locale_names[] = + { "LC_COLLATE", "LC_CTYPE", "LC_MONETARY", + "LC_NUMERIC", "LC_TIME", "LC_MESSAGES" + }; char *fname; int fd; struct stat st; - asprintf (&fname, LOCALE_PATH "/%s/%s", act_add_locdef->name, + asprintf (&fname, LOCALEDIR "/%s/%s", act_add_locdef->name, locale_names[cat]); fd = open (fname, O_RDONLY); if (fd == -1) { free (fname); - asprintf (&fname, LOCALE_PATH "/%s/%s/SYS_%s", + asprintf (&fname, LOCALEDIR "/%s/%s/SYS_%s", act_add_locdef->name, locale_names[cat], locale_names[cat]); diff -durpN glibc-2.0.1/locale/programs/locfile.c glibc-2.0.2/locale/programs/locfile.c --- glibc-2.0.1/locale/programs/locfile.c Wed Dec 18 16:21:11 1996 +++ glibc-2.0.2/locale/programs/locfile.c Sun Mar 16 19:27:54 1997 @@ -1,6 +1,6 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. - Contributed by Ulrich Drepper, . + 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 @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -76,10 +77,31 @@ locfile_read (const char *filename, stru { if (filename[0] != '/') { - char path[strlen (filename) + 1 + sizeof (LOCSRCDIR)]; + char *i18npath = __secure_getenv ("I18NPATH"); + if (i18npath != NULL && *i18npath != '\0') + { + char path[strlen (filename) + 1 + strlen (i18npath) + 1]; + char *next; + i18npath = strdupa (i18npath); - stpcpy (stpcpy (stpcpy (path, LOCSRCDIR), "/"), filename); - ldfile = lr_open (path, locfile_hash); + + while (ldfile == NULL + && (next = strsep (&i18npath, ":")) != NULL) + { + stpcpy (stpcpy (stpcpy (path, next), "/"), filename); + + ldfile = lr_open (path, locfile_hash); + } + } + + /* Test in the default directory. */ + if (ldfile == NULL) + { + char path[strlen (filename) + 1 + sizeof (LOCSRCDIR)]; + + stpcpy (stpcpy (stpcpy (path, LOCSRCDIR), "/"), filename); + ldfile = lr_open (path, locfile_hash); + } } if (ldfile == NULL) @@ -981,7 +1003,7 @@ write_locale_data (const char *output_pa save_err = errno; } - if (fd == -1) + if (fd == -1 && !be_quiet) { error (0, save_err, _("\ cannot open output file `%s' for category `%s'"), @@ -1005,7 +1027,7 @@ cannot open output file `%s' for categor if (maxiov > 0) step = MIN (maxiov, step); - if (writev (fd, &vec[cnt], step) < 0) + if (writev (fd, &vec[cnt], step) < 0 && !be_quiet) { error (0, errno, _("failure while writing data for category `%s'"), category); diff -durpN glibc-2.0.1/locale/programs/locfile.h glibc-2.0.2/locale/programs/locfile.h --- glibc-2.0.1/locale/programs/locfile.h Wed Dec 18 16:21:02 1996 +++ glibc-2.0.2/locale/programs/locfile.h Wed Mar 5 11:28:23 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper, . @@ -53,6 +53,8 @@ struct localedef_t size_t len[6]; }; +/* Declared in localedef.c. */ +extern int be_quiet; /* Found in localedef.c. */ void def_to_process (const char *name, int category); diff -durpN glibc-2.0.1/locale/weight.h glibc-2.0.2/locale/weight.h --- glibc-2.0.1/locale/weight.h Fri Dec 20 19:31:46 1996 +++ glibc-2.0.2/locale/weight.h Wed Mar 5 13:27:32 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Written by Ulrich Drepper, . @@ -52,11 +52,11 @@ typedef struct weight_t #define collate_undefined \ (_NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_UNDEFINED)) #define collate_rules \ - (_NL_CURRENT (LC_COLLATE, _NL_COLLATE_RULES)) + ((u_int32_t *) _NL_CURRENT (LC_COLLATE, _NL_COLLATE_RULES)) -static __inline int get_weight (const STRING_TYPE **str, weight_t *result); -static __inline int +static __inline void get_weight (const STRING_TYPE **str, weight_t *result); +static __inline void get_weight (const STRING_TYPE **str, weight_t *result) { unsigned int ch = *((USTRING_TYPE *) (*str))++; @@ -69,7 +69,7 @@ get_weight (const STRING_TYPE **str, wei const size_t level_size = collate_hash_size * (collate_nrules + 1); size_t level; - slot = (ch * (collate_nrules + 1)) % collate_hash_size; + slot = (ch % collate_hash_size) * (collate_nrules + 1); level = 0; while (__collate_table[slot] != (u_int32_t) ch) @@ -86,7 +86,7 @@ get_weight (const STRING_TYPE **str, wei result->data[cnt].value = &__collate_extra[idx]; idx += result->data[cnt].number; } - return 0; + return; } slot += level_size; } @@ -102,7 +102,7 @@ get_weight (const STRING_TYPE **str, wei result->data[cnt].number = 1; result->data[cnt].value = &__collate_table[slot + 1 + cnt]; } - return ch == 0; + return; } /* We now look for any collation element which starts with CH. @@ -135,14 +135,12 @@ get_weight (const STRING_TYPE **str, wei result->data[cnt].value = &__collate_extra[idx]; idx += result->data[cnt].number; } - return 0; + return; } /* To next entry in list. */ slot += __collate_extra[slot]; } - /* NOTREACHED */ - return 0; /* To calm down gcc. */ } @@ -155,7 +153,7 @@ get_weight (const STRING_TYPE **str, wei do \ { \ weight_t *newp; \ - do \ + while (*str != '\0') \ { \ newp = (weight_t *) alloca (sizeof (weight_t) \ + (collate_nrules \ @@ -168,7 +166,7 @@ get_weight (const STRING_TYPE **str, wei backw->next = newp; \ newp->next = NULL; \ backw = newp; \ + get_weight (&str, newp); \ } \ - while (get_weight (&str, newp) == 0); \ } \ while (0) diff -durpN glibc-2.0.1/login/utmp.h glibc-2.0.2/login/utmp.h --- glibc-2.0.1/login/utmp.h Wed Jan 29 22:12:09 1997 +++ glibc-2.0.2/login/utmp.h Mon Feb 17 23:07:38 1997 @@ -24,6 +24,7 @@ #include +__BEGIN_DECLS /* Get system dependent values and data structures. */ #include diff -durpN glibc-2.0.1/mach/devstream.c glibc-2.0.2/mach/devstream.c --- glibc-2.0.1/mach/devstream.c Thu Mar 21 11:19:59 1996 +++ glibc-2.0.2/mach/devstream.c Wed Mar 19 21:43:04 1997 @@ -1,23 +1,22 @@ /* stdio on a Mach device port. Translates \n to \r\n on output, echos and translates \r to \n on input. + Copyright (C) 1992, 1993, 1994, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -Copyright (C) 1992, 1993, 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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 @@ -148,10 +147,16 @@ output (FILE *f, int c) { kern_return_t err; int wrote; + int thiswrite; + while (to_write > 0) { + thiswrite = to_write; + if (thiswrite > IO_INBAND_MAX) + thiswrite = IO_INBAND_MAX; + if (err = device_write_inband ((device_t) f->__cookie, 0, - f->__target, p, to_write, &wrote)) + f->__target, p, thiswrite, &wrote)) { errno = err; f->__error = 1; diff -durpN glibc-2.0.1/mach/err_kern.sub glibc-2.0.2/mach/err_kern.sub --- glibc-2.0.1/mach/err_kern.sub Thu Dec 19 15:23:39 1996 +++ glibc-2.0.2/mach/err_kern.sub Thu Dec 19 20:32:34 1996 @@ -26,6 +26,9 @@ /* * HISTORY * $Log: err_kern.sub,v $ + * Revision 1.5 1996/12/20 01:32:34 drepper + * Update from main archive 961219 + * * Revision 1.5 1996/12/19 20:23:39 drepper * Spelling corrections. * diff -durpN glibc-2.0.1/mach/error_compat.c glibc-2.0.2/mach/error_compat.c --- glibc-2.0.1/mach/error_compat.c Tue Nov 30 12:35:24 1993 +++ glibc-2.0.2/mach/error_compat.c Sun Mar 16 22:52:14 1997 @@ -26,6 +26,28 @@ /* This file was broken out from: $Log: error_compat.c,v $ + Revision 1.1.2.1 1997/03/17 03:52:14 drepper + (__mach_error_map_compat): Give full prototype. + + Revision 1.2 1997/03/16 17:41:36 drepper + (__mach_error_map_compat): Give full prototype. + + Revision 1.2 1997/03/14 15:26:28 thomas + Wed Mar 5 10:40:05 1997 Thomas Bushnell, n/BSG + + * mach/mach_error.c (mach_error_string_int): Give full prototype. + * mach/errstring.c (mach_error_string_int): Likewise. + * mach/error_compat.c (__mach_error_map_compat): Likewise. + + * mach/spin-solid.c: Include . + * mach/spin-solid.c (__spin_lock_solid): Provide arg to + swtch_pri. + + * mach/mach_init.c: Include . + + * mach/mach_error.h (mach_error_string, mach_error, + mach_error_type): Always provide prototypes. + Revision 1.1 1993/11/30 17:35:24 roland entered into RCS @@ -39,8 +61,7 @@ void -__mach_error_map_compat( org_err ) - mach_error_t * org_err; +__mach_error_map_compat(mach_error_t *org_err) { mach_error_t err = *org_err; diff -durpN glibc-2.0.1/mach/errstring.c glibc-2.0.2/mach/errstring.c --- glibc-2.0.1/mach/errstring.c Tue Nov 30 12:35:58 1993 +++ glibc-2.0.2/mach/errstring.c Sun Mar 16 22:52:30 1997 @@ -26,6 +26,28 @@ /* * HISTORY * $Log: errstring.c,v $ + * Revision 1.1.2.1 1997/03/17 03:52:30 drepper + * (mach_error_string_int): Give full prototype. + * + * Revision 1.2 1997/03/16 17:41:48 drepper + * (mach_error_string_int): Give full prototype. + * + * Revision 1.2 1997/03/14 15:26:29 thomas + * Wed Mar 5 10:40:05 1997 Thomas Bushnell, n/BSG + * + * * mach/mach_error.c (mach_error_string_int): Give full prototype. + * * mach/errstring.c (mach_error_string_int): Likewise. + * * mach/error_compat.c (__mach_error_map_compat): Likewise. + * + * * mach/spin-solid.c: Include . + * * mach/spin-solid.c (__spin_lock_solid): Provide arg to + * swtch_pri. + * + * * mach/mach_init.c: Include . + * + * * mach/mach_error.h (mach_error_string, mach_error, + * mach_error_type): Always provide prototypes. + * * Revision 1.1 1993/11/30 17:35:58 roland * entered into RCS * @@ -67,9 +89,8 @@ mach_error_type( err ) boolean_t mach_error_full_diag = FALSE; const char * -mach_error_string_int( err, diag ) - mach_error_t err; - boolean_t * diag; +mach_error_string_int(mach_error_t err, + boolean_t * diag) { int sub, system, code; diff -durpN glibc-2.0.1/mach/mach/error.h glibc-2.0.2/mach/mach/error.h --- glibc-2.0.1/mach/mach/error.h Thu Dec 19 15:23:56 1996 +++ glibc-2.0.2/mach/mach/error.h Thu Dec 19 20:32:36 1996 @@ -27,6 +27,9 @@ /* * HISTORY * $Log: error.h,v $ + * Revision 1.2 1996/12/20 01:32:36 drepper + * Update from main archive 961219 + * * Revision 1.2 1996/12/19 20:23:56 drepper * Spelling corrections. * diff -durpN glibc-2.0.1/mach/mach/mach_traps.h glibc-2.0.2/mach/mach/mach_traps.h --- glibc-2.0.1/mach/mach/mach_traps.h Wed Dec 18 16:25:06 1996 +++ glibc-2.0.2/mach/mach/mach_traps.h Sun Mar 16 19:34:05 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1994, 1996 Free Software Foundation, Inc. +/* Copyright (C) 1994, 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -26,7 +26,7 @@ #define _MACH_MACH_TRAPS_H_ 1 #include - +#include /* Create and return a new receive right. */ extern mach_port_t mach_reply_port (void); diff -durpN glibc-2.0.1/mach/mach_error.c glibc-2.0.2/mach/mach_error.c --- glibc-2.0.1/mach/mach_error.c Tue Oct 6 14:29:54 1992 +++ glibc-2.0.2/mach/mach_error.c Sun Mar 16 22:52:38 1997 @@ -26,6 +26,28 @@ /* * HISTORY * $Log: mach_error.c,v $ + * Revision 1.1.2.1 1997/03/17 03:52:38 drepper + * (mach_error_string_int): Give full prototype. + * + * Revision 1.2 1997/03/16 17:42:02 drepper + * (mach_error_string_int): Give full prototype. + * + * Revision 1.2 1997/03/14 15:26:30 thomas + * Wed Mar 5 10:40:05 1997 Thomas Bushnell, n/BSG + * + * * mach/mach_error.c (mach_error_string_int): Give full prototype. + * * mach/errstring.c (mach_error_string_int): Likewise. + * * mach/error_compat.c (__mach_error_map_compat): Likewise. + * + * * mach/spin-solid.c: Include . + * * mach/spin-solid.c (__spin_lock_solid): Provide arg to + * swtch_pri. + * + * * mach/mach_init.c: Include . + * + * * mach/mach_error.h (mach_error_string, mach_error, + * mach_error_type): Always provide prototypes. + * * Revision 1.1 1992/10/06 18:29:54 roland * entered into RCS * @@ -63,7 +85,7 @@ #include #include -extern char * mach_error_string_int(); +extern char * mach_error_string_int(mach_error_t, boolean_t *); void mach_error( str, err ) diff -durpN glibc-2.0.1/mach/mach_error.h glibc-2.0.2/mach/mach_error.h --- glibc-2.0.1/mach/mach_error.h Tue Nov 23 15:39:08 1993 +++ glibc-2.0.2/mach/mach_error.h Sun Mar 16 22:52:48 1997 @@ -26,6 +26,32 @@ /* * HISTORY * $Log: mach_error.h,v $ + * Revision 1.2.2.1 1997/03/17 03:52:48 drepper + * (mach_error_string, mach_error, mach_error_type): Always provide + * prototypes. + * + * Revision 1.3 1997/03/16 17:42:25 drepper + * (mach_error_string, mach_error, mach_error_type): Always provide + * prototypes. + * (mach_error_fn_t): Comment out declaration; it appears to be entirely + * unused dead code. + * + * Revision 1.3 1997/03/14 15:26:31 thomas + * Wed Mar 5 10:40:05 1997 Thomas Bushnell, n/BSG + * + * * mach/mach_error.c (mach_error_string_int): Give full prototype. + * * mach/errstring.c (mach_error_string_int): Likewise. + * * mach/error_compat.c (__mach_error_map_compat): Likewise. + * + * * mach/spin-solid.c: Include . + * * mach/spin-solid.c (__spin_lock_solid): Provide arg to + * swtch_pri. + * + * * mach/mach_init.c: Include . + * + * * mach/mach_error.h (mach_error_string, mach_error, + * mach_error_type): Always provide prototypes. + * * Revision 1.2 1993/11/23 20:39:08 mib * entered into RCS * @@ -53,28 +79,22 @@ const char *mach_error_string( /* * Returns a string appropriate to the error argument given */ -#if c_plusplus mach_error_t error_value -#endif c_plusplus ); void mach_error( /* * Prints an appropriate message on the standard error stream */ -#if c_plusplus char *str, mach_error_t error_value -#endif c_plusplus ); const char *mach_error_type( /* * Returns a string with the error system, subsystem and code */ -#if c_plusplus mach_error_t error_value -#endif c_plusplus ); #endif _MACH_ERROR_ diff -durpN glibc-2.0.1/mach/mach_init.c glibc-2.0.2/mach/mach_init.c --- glibc-2.0.1/mach/mach_init.c Fri Feb 17 20:28:06 1995 +++ glibc-2.0.2/mach/mach_init.c Sun Mar 16 19:34:20 1997 @@ -1,23 +1,24 @@ -/* Copyright (C) 1992, 1993, 1995 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1992, 1993, 1995, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + The GNU C Library is 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 mach_port_t __mach_task_self_; vm_size_t __vm_page_size = 0; /* Must be data not bss for weak alias. */ diff -durpN glibc-2.0.1/mach/msg-destroy.c glibc-2.0.2/mach/msg-destroy.c --- glibc-2.0.1/mach/msg-destroy.c Sat Nov 16 21:26:22 1996 +++ glibc-2.0.2/mach/msg-destroy.c Fri Nov 15 14:44:43 1996 @@ -26,10 +26,6 @@ /* * HISTORY * $Log: msg-destroy.c,v $ - * Revision 1.4 1996/11/17 02:26:22 drepper - * (mach_msg_destroy_port, mach_msg_destroy_memory): Use prototype - * syntax. - * * Revision 1.4 1996/11/15 19:44:43 thomas * Tue Nov 12 16:58:41 1996 Thomas Bushnell, n/BSG * diff -durpN glibc-2.0.1/mach/msgserver.c glibc-2.0.2/mach/msgserver.c --- glibc-2.0.1/mach/msgserver.c Thu Dec 19 15:23:45 1996 +++ glibc-2.0.2/mach/msgserver.c Thu Dec 19 20:32:35 1996 @@ -49,6 +49,9 @@ /* * HISTORY * $Log: msgserver.c,v $ + * Revision 1.5 1996/12/20 01:32:35 drepper + * Update from main archive 961219 + * * Revision 1.5 1996/12/19 20:23:45 drepper * Spelling corrections. * diff -durpN glibc-2.0.1/mach/spin-solid.c glibc-2.0.2/mach/spin-solid.c --- glibc-2.0.1/mach/spin-solid.c Wed Jan 25 23:16:53 1995 +++ glibc-2.0.2/mach/spin-solid.c Sun Mar 16 19:34:14 1997 @@ -1,28 +1,29 @@ -/* Copyright (C) 1994, 1995 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1994, 1995, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + The GNU C Library is 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 void __spin_lock_solid (spin_lock_t *lock) { while (__spin_lock_locked (lock) || ! __spin_try_lock (lock)) /* Yield to another thread (system call). */ - __swtch_pri (); + __swtch_pri (0); } weak_alias (__spin_lock_solid, spin_lock_solid); diff -durpN glibc-2.0.1/malloc/malloc.c glibc-2.0.2/malloc/malloc.c --- glibc-2.0.1/malloc/malloc.c Sun Feb 2 17:14:57 1997 +++ glibc-2.0.2/malloc/malloc.c Sun Mar 16 18:31:16 1997 @@ -19,7 +19,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* V2.6.4-pt2 Sat Dec 14 1996 +/* V2.6.4-pt3 Thu Feb 20 1997 This work is mainly derived from malloc-2.6.4 by Doug Lea , which is available from: @@ -835,6 +835,7 @@ Void_t *(*__morecore)() = __default_more #define mmap __mmap #define munmap __munmap #define mremap __mremap +#define mprotect __mprotect #undef malloc_getpagesize #define malloc_getpagesize __getpagesize() @@ -874,6 +875,8 @@ extern Void_t* sbrk(); #define mALLOC_STATs __malloc_stats #define mALLOC_USABLE_SIZe __malloc_usable_size #define mALLOC_TRIm __malloc_trim +#define mALLOC_GET_STATe __malloc_get_state +#define mALLOC_SET_STATe __malloc_set_state #else @@ -889,6 +892,8 @@ extern Void_t* sbrk(); #define mALLOC_STATs malloc_stats #define mALLOC_USABLE_SIZe malloc_usable_size #define mALLOC_TRIm malloc_trim +#define mALLOC_GET_STATe malloc_get_state +#define mALLOC_SET_STATe malloc_set_state #endif @@ -912,7 +917,11 @@ size_t mALLOC_USABLE_SIZe(Void_t*); void mALLOC_STATs(void); int mALLOPt(int, int); struct mallinfo mALLINFo(void); -#else +Void_t* mALLOC_GET_STATe(void); +int mALLOC_SET_STATe(Void_t*); + +#else /* !__STD_C */ + #ifndef _LIBC void ptmalloc_init(); #endif @@ -929,7 +938,10 @@ size_t mALLOC_USABLE_SIZe(); void mALLOC_STATs(); int mALLOPt(); struct mallinfo mALLINFo(); -#endif +Void_t* mALLOC_GET_STATe(); +int mALLOC_SET_STATe(); + +#endif /* __STD_C */ #ifdef __cplusplus @@ -3775,6 +3787,144 @@ int mALLOPt(param_number, value) int par +/* Get/set state: malloc_get_state() records the current state of all + malloc variables (_except_ for the actual heap contents and `hook' + function pointers) in a system dependent, opaque data structure. + This data structure is dynamically allocated and can be free()d + after use. malloc_set_state() restores the state of all malloc + variables to the previously obtained state. This is especially + useful when using this malloc as part of a shared library, and when + the heap contents are saved/restored via some other method. The + primary example for this is GNU Emacs with its `dumping' procedure. + `Hook' function pointers are never saved or restored by these + functions. */ + +#define MALLOC_STATE_MAGIC 0x444c4541l +#define MALLOC_STATE_VERSION (0*0x100l + 0l) /* major*0x100 + minor */ + +struct malloc_state { + long magic; + long version; + mbinptr av[NAV * 2 + 2]; + char* sbrk_base; + int sbrked_mem_bytes; + unsigned long trim_threshold; + unsigned long top_pad; + unsigned int n_mmaps_max; + unsigned long mmap_threshold; + int check_action; + unsigned long max_sbrked_mem; + unsigned long max_total_mem; + unsigned int n_mmaps; + unsigned int max_n_mmaps; + unsigned long mmapped_mem; + unsigned long max_mmapped_mem; +}; + +Void_t* +mALLOC_GET_STATe() +{ + mchunkptr victim; + struct malloc_state* ms; + int i; + mbinptr b; + + ptmalloc_init(); + (void)mutex_lock(&main_arena.mutex); + victim = chunk_alloc(&main_arena, request2size(sizeof(*ms))); + if(!victim) { + (void)mutex_unlock(&main_arena.mutex); + return 0; + } + ms = (struct malloc_state*)chunk2mem(victim); + ms->magic = MALLOC_STATE_MAGIC; + ms->version = MALLOC_STATE_VERSION; + ms->av[0] = main_arena.av[0]; + ms->av[1] = main_arena.av[1]; + for(i=0; iav[2*i+2] = ms->av[2*i+3] = 0; /* empty bin (or initial top) */ + else { + ms->av[2*i+2] = first(b); + ms->av[2*i+3] = last(b); + } + } + ms->sbrk_base = sbrk_base; + ms->sbrked_mem_bytes = sbrked_mem; + ms->trim_threshold = trim_threshold; + ms->top_pad = top_pad; + ms->n_mmaps_max = n_mmaps_max; + ms->mmap_threshold = mmap_threshold; + ms->check_action = check_action; + ms->max_sbrked_mem = max_sbrked_mem; +#ifdef NO_THREADS + ms->max_total_mem = max_total_mem; +#else + ms->max_total_mem = 0; +#endif + ms->n_mmaps = n_mmaps; + ms->max_n_mmaps = max_n_mmaps; + ms->mmapped_mem = mmapped_mem; + ms->max_mmapped_mem = max_mmapped_mem; + (void)mutex_unlock(&main_arena.mutex); + return (Void_t*)ms; +} + +int +#if __STD_C +mALLOC_SET_STATe(Void_t* msptr) +#else +mALLOC_SET_STATe(msptr) Void_t* msptr; +#endif +{ + struct malloc_state* ms = (struct malloc_state*)msptr; + int i; + mbinptr b; + + ptmalloc_init(); + if(ms->magic != MALLOC_STATE_MAGIC) return -1; + /* Must fail if the major version is too high. */ + if((ms->version & ~0xffl) > (MALLOC_STATE_VERSION & ~0xffl)) return -2; + (void)mutex_lock(&main_arena.mutex); + main_arena.av[0] = ms->av[0]; + main_arena.av[1] = ms->av[1]; + for(i=0; iav[2*i+2] == 0) + first(b) = last(b) = b; + else { + first(b) = ms->av[2*i+2]; + last(b) = ms->av[2*i+3]; + if(i > 0) { + /* Make sure the links to the `av'-bins in the heap are correct. */ + first(b)->bk = b; + last(b)->fd = b; + } + } + } + sbrk_base = ms->sbrk_base; + sbrked_mem = ms->sbrked_mem_bytes; + trim_threshold = ms->trim_threshold; + top_pad = ms->top_pad; + n_mmaps_max = ms->n_mmaps_max; + mmap_threshold = ms->mmap_threshold; + check_action = ms->check_action; + max_sbrked_mem = ms->max_sbrked_mem; +#ifdef NO_THREADS + max_total_mem = ms->max_total_mem; +#endif + n_mmaps = ms->n_mmaps; + max_n_mmaps = ms->max_n_mmaps; + mmapped_mem = ms->mmapped_mem; + max_mmapped_mem = ms->max_mmapped_mem; + /* add version-dependent code here */ + (void)mutex_unlock(&main_arena.mutex); + return 0; +} + + + #if defined(_LIBC) || defined(MALLOC_HOOKS) /* A simple, standard set of debugging hooks. Overhead is `only' one @@ -4048,11 +4198,18 @@ weak_alias (__libc_mallopt, __mallopt) w weak_alias (__malloc_stats, malloc_stats) weak_alias (__malloc_usable_size, malloc_usable_size) weak_alias (__malloc_trim, malloc_trim) +weak_alias (__malloc_get_state, malloc_get_state) +weak_alias (__malloc_set_state, malloc_set_state) #endif /* History: + + V2.6.4-pt3 Thu Feb 20 1997 Wolfram Gloger (wmglo@dent.med.uni-muenchen.de) + * Added malloc_get/set_state() (mainly for use in GNU emacs), + using interface from Marcus Daniels + * All parameters are now adjustable via environment variables V2.6.4-pt2 Sat Dec 14 1996 Wolfram Gloger (wmglo@dent.med.uni-muenchen.de) * Added debugging hooks diff -durpN glibc-2.0.1/malloc/malloc.h glibc-2.0.2/malloc/malloc.h --- glibc-2.0.1/malloc/malloc.h Sun Feb 2 17:15:44 1997 +++ glibc-2.0.2/malloc/malloc.h Tue Feb 25 20:05:23 1997 @@ -171,6 +171,13 @@ extern size_t malloc_usable_size __MALLO /* Prints brief summary statistics on stderr. */ extern void malloc_stats __MALLOC_P ((void)); +/* Record the state of all malloc variables in an opaque data structure. */ +extern __malloc_ptr_t malloc_get_state __MALLOC_P ((void)); + +/* Restore the state of all malloc variables from data obtained with + malloc_get_state(). */ +extern int malloc_set_state __MALLOC_P ((__malloc_ptr_t __ptr)); + #if defined(__GLIBC__) || defined(MALLOC_HOOKS) /* Hooks for debugging versions. */ diff -durpN glibc-2.0.1/malloc/obstack.h glibc-2.0.2/malloc/obstack.h --- glibc-2.0.1/malloc/obstack.h Wed Jan 22 22:21:51 1997 +++ glibc-2.0.2/malloc/obstack.h Mon Feb 17 23:07:42 1997 @@ -106,6 +106,10 @@ Summary: #ifndef __OBSTACK_H__ #define __OBSTACK_H__ + +#ifdef __cplusplus +extern "C" { +#endif /* We use subtraction of (char *) 0 instead of casting to int because on word-addressable machines a simple cast to int @@ -577,5 +581,9 @@ __extension__ \ #endif #endif /* not __GNUC__ or not __STDC__ */ + +#ifdef __cplusplus +} +#endif #endif /* not __OBSTACK_H__ */ diff -durpN glibc-2.0.1/malloc/thread-m.h glibc-2.0.2/malloc/thread-m.h --- glibc-2.0.1/malloc/thread-m.h Tue Dec 10 19:12:11 1996 +++ glibc-2.0.2/malloc/thread-m.h Tue Mar 18 20:04:40 1997 @@ -1,6 +1,6 @@ /* Basic platform-independent macro definitions for mutexes and thread-specific data. - Copyright (C) 1996 Free Software Foundation, Inc. + Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Wolfram Gloger , 1996. @@ -66,19 +66,37 @@ static Void_t *malloc_key_data; (__pthread_mutex_unlock != NULL ? __pthread_mutex_unlock (m) : 0) #elif defined(MUTEX_INITIALIZER) +/* Assume hurd, with cthreads */ -typedef thread_t thread_id; +/* Cthreads `mutex_t' is a pointer to a mutex, and malloc wants just the + mutex itself. */ +#undef mutex_t +#define mutex_t struct mutex -/* mutex */ -typedef mutex_t mutex_t; +#undef mutex_lock +#define mutex_lock(m) (__mutex_lock(m), 0) + +#undef mutex_unlock +#define mutex_unlock(m) (__mutex_unlock(m), 0) + +#define mutex_trylock(m) (!__mutex_trylock(m)) + +#include /* thread specific data */ -typedef pthread_key_t tsd_key_t; +typedef int tsd_key_t; -#define mutex_init(m) __mutex_init (m) -#define mutex_lock(m) __mutex_lock (m) -#define mutex_trylock(m) __mutex_trylock (m) -#define mutex_unlock(m) __mutex_unlock (m) +static int tsd_keys_alloced = 0; + +#define tsd_key_create(key, destr) \ + (assert (tsd_keys_alloced == 0), tsd_keys_alloced++) +#define tsd_setspecific(key, data) \ + (*__hurd_threadvar_location (_HURD_THREADVAR_MALLOC) = (unsigned long)(data)) +#define tsd_getspecific(key, vptr) \ + ((vptr) = (void *)*__hurd_threadvar_location (_HURD_THREADVAR_MALLOC)) + +/* No we're *not* using pthreads. */ +#define __pthread_initialize ((void (*)(void))0) #else diff -durpN glibc-2.0.1/manual/Makefile glibc-2.0.2/manual/Makefile --- glibc-2.0.1/manual/Makefile Wed Jan 22 15:06:56 1997 +++ glibc-2.0.2/manual/Makefile Wed Mar 5 15:59:00 1997 @@ -21,6 +21,9 @@ subdir := manual export subdir := $(subdir) +# We need GNU awk for the xtract-typefun script. +GAWK = gawk + .PHONY: all dvi info all: dvi info dvi: libc.dvi @@ -60,6 +63,17 @@ stamp-summary: summary.awk $(chapters) $ # touch is broken on our machines. Sigh. date > $@ +# Generate a file which can be added to the `dir' content to provide direct +# access to the documentation of the function, variables, and other +# definitions. +dir-add.texi: manual/xtract-typefun.awk $(chapters-incl) + if test -n "$(chapters-incl)"; then \ + (for i in $(chapters-incl); do \ + $(GAWK) -f $< < $i; \ + done) | sort > $@.new; \ + ./move-if-change $@.new $@; \ + fi + # Generate Texinfo files from the C source for the example programs. %.c.texi: examples/%.c sed -e 's,[{}],@&,g' \ @@ -78,7 +92,8 @@ distribute = $(minimal-dist) $(patsubst examples/%.c,%.c.texi,$(filter examples/%.c, \ $(minimal-dist))) \ libc.info* libc.?? libc.??s texinfo.tex summary.texi \ - stamp-summary chapters chapters-incl + stamp-summary chapters chapters-incl \ + xtract-typefun.awk export distribute := $(distribute) tar-it = tar chovf $@ $^ diff -durpN glibc-2.0.1/manual/chapters-incl glibc-2.0.2/manual/chapters-incl --- glibc-2.0.1/manual/chapters-incl Sat Jan 25 01:14:54 1997 +++ glibc-2.0.2/manual/chapters-incl Sun Mar 16 21:14:49 1997 @@ -8,6 +8,7 @@ memopen.c.texi \ memstrm.c.texi \ select.c.texi \ dir.c.texi \ +dir2.c.texi \ pipe.c.texi \ popen.c.texi \ mkfsock.c.texi \ diff -durpN glibc-2.0.1/manual/dir2.c.texi glibc-2.0.2/manual/dir2.c.texi --- glibc-2.0.1/manual/dir2.c.texi Wed Dec 31 19:00:00 1969 +++ glibc-2.0.2/manual/dir2.c.texi Tue Mar 18 13:35:46 1997 @@ -0,0 +1,29 @@ +@group +#include +#include +@end group + +static int +one (struct dirent *unused) +@{ + return 1; +@} + +int +main (void) +@{ + struct dirent **eps; + int n; + + n = scandir ("./", &eps, one, alphasort); + if (n >= 0) + @{ + int cnt; + for (cnt = 0; cnt < n; ++cnt) + puts (eps[cnt]->d_name); + @} + else + perror ("Couldn't open the directory"); + + return 0; +@} diff -durpN glibc-2.0.1/manual/examples/dir2.c glibc-2.0.2/manual/examples/dir2.c --- glibc-2.0.1/manual/examples/dir2.c Wed Dec 31 19:00:00 1969 +++ glibc-2.0.2/manual/examples/dir2.c Sun Mar 16 19:58:26 1997 @@ -0,0 +1,29 @@ +/*@group*/ +#include +#include +/*@end group*/ + +static int +one (struct dirent *unused) +{ + return 1; +} + +int +main (void) +{ + struct dirent **eps; + int n; + + n = scandir ("./", &eps, one, alphasort); + if (n >= 0) + { + int cnt; + for (cnt = 0; cnt < n; ++cnt) + puts (eps[cnt]->d_name); + } + else + perror ("Couldn't open the directory"); + + return 0; +} diff -durpN glibc-2.0.1/manual/filesys.texi glibc-2.0.2/manual/filesys.texi --- glibc-2.0.1/manual/filesys.texi Mon Jan 20 11:54:17 1997 +++ glibc-2.0.2/manual/filesys.texi Sun Mar 16 19:57:48 1997 @@ -166,6 +166,9 @@ parallels here to the stream facilities * Simple Directory Lister:: A very simple directory listing program. * Random Access Directory:: Rereading part of the directory already read with the same stream. +* Scanning Directory Content:: Get entries for user selected subset of + contents in given directory. +* Simple Directory Lister Mark II:: Revised version of the program. @end menu @node Directory Entries @@ -386,9 +389,9 @@ the current working directory: The order in which files appear in a directory tends to be fairly random. A more useful program would sort the entries (perhaps by -alphabetizing them) before printing them; see @ref{Array Sort Function}. +alphabetizing them) before printing them; see +@ref{Scanning Directory Content} and @ref{Array Sort Function}. -@c ??? not documented: scandir, alphasort @node Random Access Directory @subsection Random Access in a Directory Stream @@ -428,6 +431,69 @@ result of a previous call to @code{telld closing and reopening the directory can invalidate values returned by @code{telldir}. @end deftypefun + + +@node Scanning Directory Content +@subsection Scanning the Content of a Directory + +A higher-level interface to the directory handling functions is the +@code{scandir} function. With its help one can select a subset of the +entries in a directory, possibly sort them and get as the result a list +of names. + +@deftypefun int scandir (const char *@var{dir}, struct dirent ***@var{namelist}, int (*@var{selector}) (struct dirent *), int (*@var{cmp}) (const void *, const void *)) + +The @code{scandir} function scans the contents of the directory selected +by @var{dir}. The result in @var{namelist} is an array of pointers to +structure of type @code{struct dirent} which describe all selected +directory entries and which is allocated using @code{malloc}. Instead +of always getting all directory entries returned, the user supplied +function @var{selector} can be used to decide which entries are in the +result. Only the entries for which @var{selector} returns a nonzero +value are selected. + +Finally the entries in the @var{namelist} are sorted using the user +supplied function @var{cmp}. The arguments of the @var{cmp} function +are of type @code{struct dirent **}. I.e., one cannot directly use the +@code{strcmp} or @code{strcoll} function; see the function +@code{alphasort} below. + +The return value of the function gives the number of entries placed in +@var{namelist}. If it is @code{-1} an error occurred and the global +variable @code{errno} contains more information on the error. +@end deftypefun + +As said above the fourth argument to the @code{scandir} function must be +a pointer to a sorting function. For the convenience of the programmer +the GNU C library contains an implementation of a function which is very +helpful for this purpose. + +@deftypefun int alphasort (const void *@var{a}, const void *@var{b}) +The @code{alphasort} function behaves like the @code{strcmp} function +(@pxref{String/Array Comparison}). The difference is that the arguments +are not string pointers but instead they are of type +@code{struct dirent **}. + +Return value of is less than, equal to, or greater than zero depending +on the order of the two entries @var{a} and @var{b}. +@end deftypefun + +@node Simple Directory Lister Mark II +@subsection Simple Program to List a Directory, Mark II + +Here is a revised version of the directory lister found above +(@pxref{Simple Directory Lister}). Using the @code{scandir} function we +can avoid using the functions which directly work with the directory +contents. After the call the found entries are available for direct +used. + +@smallexample +@include dir2.c.texi +@end smallexample + +Please note the simple selector function for this example. Since +we want to see all directory entries we always return @code{1}. + @node Hard Links @section Hard Links diff -durpN glibc-2.0.1/manual/libc.cp glibc-2.0.2/manual/libc.cp --- glibc-2.0.1/manual/libc.cp Mon Nov 4 17:59:16 1996 +++ glibc-2.0.2/manual/libc.cp Tue Mar 18 22:31:15 1997 @@ -1,834 +1,830 @@ -\entry {library}{1}{library} -\entry {standards}{1}{standards} -\entry {ANSI C}{2}{ANSI C} -\entry {POSIX}{2}{POSIX} -\entry {POSIX.1}{2}{POSIX.1} -\entry {IEEE Std 1003.1}{2}{IEEE Std 1003.1} -\entry {POSIX.2}{2}{POSIX.2} -\entry {IEEE Std 1003.2}{2}{IEEE Std 1003.2} -\entry {BSD Unix}{3}{BSD Unix} -\entry {4.n BSD Unix}{3}{4.\var {n} BSD Unix} -\entry {Berkeley Unix}{3}{Berkeley Unix} -\entry {SunOS}{3}{SunOS} -\entry {Unix, Berkeley}{3}{Unix, Berkeley} -\entry {SVID}{3}{SVID} -\entry {System V Unix}{3}{System V Unix} -\entry {Unix, System V}{3}{Unix, System V} -\entry {header files}{4}{header files} -\entry {definition (compared to declaration)}{4}{definition (compared to declaration)} -\entry {declaration (compared to definition)}{4}{declaration (compared to definition)} -\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 {feature test macros}{8}{feature test macros} -\entry {BSD compatibility library.}{9}{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}{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 {dynamic allocation}{31}{dynamic allocation} -\entry {static allocation}{31}{static allocation} -\entry {automatic allocation}{31}{automatic allocation} -\entry {unconstrained storage allocation}{32}{unconstrained storage 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}{34}{freeing memory allocated with \code {malloc}} -\entry {heap, freeing memory from}{34}{heap, freeing memory from} -\entry {changing the size of a block (malloc)}{35}{changing the size of a block (\code {malloc})} -\entry {efficiency and malloc}{36}{efficiency and \code {malloc}} -\entry {page boundary}{37}{page boundary} -\entry {alignment (with malloc)}{37}{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}{40}{allocation statistics} -\entry {obstacks}{42}{obstacks} -\entry {allocation (obstacks)}{44}{allocation (obstacks)} -\entry {freeing (obstacks)}{45}{freeing (obstacks)} -\entry {macros}{45}{macros} -\entry {growing objects (in obstacks)}{46}{growing objects (in obstacks)} -\entry {changing the size of a block (obstacks)}{46}{changing the size of a block (obstacks)} -\entry {shrinking objects}{48}{shrinking objects} -\entry {efficiency and obstacks}{48}{efficiency and obstacks} -\entry {obstack status}{49}{obstack status} -\entry {status of obstack}{49}{status of obstack} -\entry {alignment (in obstacks)}{50}{alignment (in obstacks)} -\entry {efficiency of chunks}{50}{efficiency of chunks} -\entry {chunks}{50}{chunks} -\entry {automatic freeing}{53}{automatic freeing} -\entry {alloca function}{53}{\code {alloca} function} -\entry {automatic storage with variable size}{53}{automatic storage with variable size} -\entry {longjmp}{54}{longjmp} -\entry {alloca disadvantages}{55}{\code {alloca} disadvantages} -\entry {disadvantages of alloca}{55}{disadvantages of \code {alloca}} -\entry {variable-sized arrays}{55}{variable-sized arrays} -\entry {relocating memory allocator}{56}{relocating memory allocator} -\entry {handle}{56}{handle} -\entry {memory usage warnings}{57}{memory usage warnings} -\entry {warnings of memory almost full}{57}{warnings of memory almost full} -\entry {character testing}{59}{character testing} -\entry {classification of characters}{59}{classification of characters} -\entry {predicates on characters}{59}{predicates on characters} -\entry {character predicates}{59}{character predicates} -\entry {lower-case character}{59}{lower-case character} -\entry {upper-case character}{59}{upper-case character} -\entry {alphabetic character}{59}{alphabetic character} -\entry {digit character}{59}{digit character} -\entry {decimal digit character}{59}{decimal digit character} -\entry {alphanumeric character}{60}{alphanumeric character} -\entry {hexadecimal digit character}{60}{hexadecimal digit character} -\entry {punctuation character}{60}{punctuation character} -\entry {whitespace character}{60}{whitespace character} -\entry {blank character}{60}{blank character} -\entry {graphic character}{60}{graphic character} -\entry {printing character}{60}{printing character} -\entry {control character}{60}{control character} -\entry {ASCII character}{61}{ASCII character} -\entry {character case conversion}{61}{character case conversion} -\entry {case conversion of characters}{61}{case conversion of characters} -\entry {converting case of characters}{61}{converting case of characters} -\entry {string, representation of}{63}{string, representation of} -\entry {string}{63}{string} -\entry {null character}{63}{null character} -\entry {string literal}{63}{string literal} -\entry {length of string}{64}{length of string} -\entry {allocation size of string}{64}{allocation size of string} -\entry {size of string}{64}{size of string} -\entry {string length}{64}{string length} -\entry {string allocation}{64}{string allocation} -\entry {copying strings and arrays}{65}{copying strings and arrays} -\entry {string copy functions}{65}{string copy functions} -\entry {array copy functions}{65}{array copy functions} -\entry {concatenating strings}{65}{concatenating strings} -\entry {string concatenation functions}{65}{string concatenation functions} -\entry {comparing strings and arrays}{70}{comparing strings and arrays} -\entry {string comparison functions}{70}{string comparison functions} -\entry {array comparison functions}{70}{array comparison functions} -\entry {predicates on strings}{70}{predicates on strings} -\entry {predicates on arrays}{70}{predicates on arrays} -\entry {collating strings}{72}{collating strings} -\entry {string collation functions}{72}{string collation functions} -\entry {converting string to collation order}{73}{converting string to collation order} -\entry {search functions (for strings)}{76}{search functions (for strings)} -\entry {string search functions}{76}{string search functions} -\entry {tokenizing strings}{78}{tokenizing strings} -\entry {breaking a string into tokens}{78}{breaking a string into tokens} -\entry {parsing tokens from a string}{78}{parsing tokens from a string} -\entry {opening a file}{81}{opening a file} -\entry {file position}{83}{file position} -\entry {sequential-access files}{83}{sequential-access files} -\entry {random-access files}{83}{random-access files} -\entry {append-access files}{83}{append-access files} -\entry {file name}{83}{file name} -\entry {directory}{84}{directory} -\entry {link}{84}{link} -\entry {directory entry}{84}{directory entry} -\entry {file name component}{84}{file name component} -\entry {file name resolution}{84}{file name resolution} -\entry {root directory}{84}{root directory} -\entry {absolute file name}{84}{absolute file name} -\entry {relative file name}{84}{relative file name} -\entry {parent directory}{85}{parent directory} -\entry {file name errors}{85}{file name errors} -\entry {usual file name errors}{85}{usual file name errors} -\entry {file pointer}{89}{file pointer} -\entry {standard streams}{89}{standard streams} -\entry {streams, standard}{89}{streams, standard} -\entry {standard input stream}{89}{standard input stream} -\entry {standard output stream}{90}{standard output stream} -\entry {standard error stream}{90}{standard error stream} -\entry {opening a stream}{90}{opening a stream} -\entry {closing a stream}{92}{closing a stream} -\entry {writing to a stream, by characters}{93}{writing to a stream, by characters} -\entry {reading from a stream, by characters}{94}{reading from a stream, by characters} -\entry {peeking at input}{97}{peeking at input} -\entry {unreading characters}{97}{unreading characters} -\entry {pushing input back}{97}{pushing input back} -\entry {binary I/O to a stream}{99}{binary I/O to a stream} -\entry {block I/O to a stream}{99}{block I/O to a stream} -\entry {reading from a stream, by blocks}{99}{reading from a stream, by blocks} -\entry {writing to a stream, by blocks}{99}{writing to a stream, by blocks} -\entry {format string, for printf}{100}{format string, for \code {printf}} -\entry {template, for printf}{100}{template, for \code {printf}} -\entry {formatted output to a stream}{100}{formatted output to a stream} -\entry {writing to a stream, formatted}{100}{writing to a stream, formatted} -\entry {conversion specifications (printf)}{100}{conversion specifications (\code {printf})} -\entry {flag character (printf)}{102}{flag character (\code {printf})} -\entry {minimum field width (printf)}{102}{minimum field width (\code {printf})} -\entry {precision (printf)}{102}{precision (\code {printf})} -\entry {type modifier character (printf)}{102}{type modifier character (\code {printf})} -\entry {output conversions, for printf}{103}{output conversions, for \code {printf}} -\entry {parsing a template string}{113}{parsing a template string} -\entry {customizing printf}{116}{customizing \code {printf}} -\entry {defining new printf conversions}{116}{defining new \code {printf} conversions} -\entry {extending printf}{116}{extending \code {printf}} -\entry {formatted input from a stream}{121}{formatted input from a stream} -\entry {reading from a stream, formatted}{121}{reading from a stream, formatted} -\entry {format string, for scanf}{121}{format string, for \code {scanf}} -\entry {template, for scanf}{121}{template, for \code {scanf}} -\entry {conversion specifications (scanf)}{121}{conversion specifications (\code {scanf})} -\entry {matching failure, in scanf}{122}{matching failure, in \code {scanf}} -\entry {flag character (scanf)}{123}{flag character (\code {scanf})} -\entry {maximum field width (scanf)}{123}{maximum field width (\code {scanf})} -\entry {type modifier character (scanf)}{123}{type modifier character (\code {scanf})} -\entry {input conversions, for scanf}{123}{input conversions, for \code {scanf}} -\entry {end of file, on a stream}{130}{end of file, on a stream} -\entry {text stream}{131}{text stream} -\entry {binary stream}{131}{binary stream} -\entry {lines (in a text file)}{131}{lines (in a text file)} -\entry {file positioning on a stream}{132}{file positioning on a stream} -\entry {positioning a stream}{132}{positioning a stream} -\entry {seeking on a stream}{132}{seeking on a stream} -\entry {buffering of streams}{135}{buffering of streams} -\entry {unbuffered stream}{135}{unbuffered stream} -\entry {line buffered stream}{135}{line buffered stream} -\entry {fully buffered stream}{135}{fully buffered stream} -\entry {flushing a stream}{136}{flushing a stream} -\entry {buffering, controlling}{136}{buffering, controlling} -\entry {stream, for I/O to a string}{139}{stream, for I/O to a string} -\entry {string stream}{139}{string stream} -\entry {custom streams}{142}{custom streams} -\entry {programming your own streams}{142}{programming your own streams} -\entry {cookie, for custom stream}{142}{cookie, for custom stream} -\entry {hook functions (of custom streams)}{143}{hook functions (of custom streams)} -\entry {opening a file descriptor}{145}{opening a file descriptor} -\entry {closing a file descriptor}{145}{closing a file descriptor} -\entry {reading from a file descriptor}{147}{reading from a file descriptor} -\entry {end-of-file, on a file descriptor}{147}{end-of-file, on a file descriptor} -\entry {writing to a file descriptor}{149}{writing to a file descriptor} -\entry {file positioning on a file descriptor}{151}{file positioning on a file descriptor} -\entry {positioning a file descriptor}{151}{positioning a file descriptor} -\entry {seeking on a file descriptor}{151}{seeking on a file descriptor} -\entry {sparse files}{151}{sparse files} -\entry {holes in files}{151}{holes in files} -\entry {streams, and file descriptors}{153}{streams, and file descriptors} -\entry {converting file descriptor to stream}{153}{converting file descriptor to stream} -\entry {extracting file descriptor from stream}{153}{extracting file descriptor from stream} -\entry {standard file descriptors}{153}{standard file descriptors} -\entry {file descriptors, standard}{153}{file descriptors, standard} -\entry {standard input file descriptor}{154}{standard input file descriptor} -\entry {standard output file descriptor}{154}{standard output file descriptor} -\entry {standard error file descriptor}{154}{standard error file descriptor} -\entry {channels}{154}{channels} -\entry {streams and descriptors}{154}{streams and descriptors} -\entry {descriptors and streams}{154}{descriptors and streams} -\entry {mixing descriptors and streams}{154}{mixing descriptors and streams} -\entry {linked channels}{154}{linked channels} -\entry {cleaning up a stream}{154}{cleaning up a stream} -\entry {independent channels}{155}{independent channels} -\entry {waiting for input or output}{156}{waiting for input or output} -\entry {multiplexing input}{156}{multiplexing input} -\entry {input from multiple files}{156}{input from multiple files} -\entry {file descriptor sets, for select}{156}{file descriptor sets, for \code {select}} -\entry {control operations on files}{159}{control operations on files} -\entry {fcntl function}{159}{\code {fcntl} function} -\entry {duplicating file descriptors}{160}{duplicating file descriptors} -\entry {redirecting input and output}{160}{redirecting input and output} -\entry {file descriptor flags}{162}{file descriptor flags} -\entry {close-on-exec (file descriptor flag)}{163}{close-on-exec (file descriptor flag)} -\entry {file status flags}{164}{file status flags} -\entry {file name translation flags}{165}{file name translation flags} -\entry {flags, file name translation}{165}{flags, file name translation} -\entry {open-time action flags}{165}{open-time action flags} -\entry {flags, open-time action}{165}{flags, open-time action} -\entry {create on open (file status flag)}{166}{create on open (file status flag)} -\entry {non-blocking open}{166}{non-blocking open} -\entry {controlling terminal, setting}{166}{controlling terminal, setting} -\entry {symbolic link, opening}{166}{symbolic link, opening} -\entry {file locks}{170}{file locks} -\entry {record locking}{170}{record locking} -\entry {exclusive lock}{170}{exclusive lock} -\entry {write lock}{170}{write lock} -\entry {shared lock}{170}{shared lock} -\entry {read lock}{170}{read lock} -\entry {interrupt-driven input}{173}{interrupt-driven input} -\entry {current working directory}{175}{current working directory} -\entry {working directory}{175}{working directory} -\entry {change working directory}{175}{change working directory} -\entry {accessing directories}{177}{accessing directories} -\entry {reading from a directory}{177}{reading from a directory} -\entry {directories, accessing}{177}{directories, accessing} -\entry {directory stream}{177}{directory stream} -\entry {hard link}{181}{hard link} -\entry {link, hard}{181}{link, hard} -\entry {multiple names for one file}{181}{multiple names for one file} -\entry {file names, multiple}{181}{file names, multiple} -\entry {soft link}{183}{soft link} -\entry {link, soft}{183}{link, soft} -\entry {symbolic link}{183}{symbolic link} -\entry {link, symbolic}{183}{link, symbolic} -\entry {deleting a file}{184}{deleting a file} -\entry {removing a file}{184}{removing a file} -\entry {unlinking a file}{184}{unlinking a file} -\entry {directories, deleting}{185}{directories, deleting} -\entry {deleting a directory}{185}{deleting a directory} -\entry {renaming a file}{185}{renaming a file} -\entry {creating a directory}{187}{creating a directory} -\entry {directories, creating}{187}{directories, creating} -\entry {status of a file}{188}{status of a file} -\entry {attributes of a file}{188}{attributes of a file} -\entry {file attributes}{188}{file attributes} -\entry {inode number}{190}{inode number} -\entry {file owner}{193}{file owner} -\entry {owner of a file}{193}{owner of a file} -\entry {group owner of a file}{193}{group owner of a file} -\entry {file permission bits}{194}{file permission bits} -\entry {sticky bit}{195}{sticky bit} -\entry {permission to access a file}{196}{permission to access a file} -\entry {access permission for a file}{196}{access permission for a file} -\entry {file access permission}{196}{file access permission} -\entry {file creation mask}{197}{file creation mask} -\entry {umask}{197}{umask} -\entry {testing access permission}{199}{testing access permission} -\entry {access, testing for}{199}{access, testing for} -\entry {setuid programs and file access}{199}{setuid programs and file access} -\entry {file access time}{200}{file access time} -\entry {file modification time}{200}{file modification time} -\entry {file attribute modification time}{200}{file attribute modification time} -\entry {creating special files}{202}{creating special files} -\entry {special files}{202}{special files} -\entry {TMPDIR environment variable}{205}{TMPDIR environment variable} -\entry {pipe}{207}{pipe} -\entry {FIFO special file}{207}{FIFO special file} -\entry {creating a pipe}{207}{creating a pipe} -\entry {opening a pipe}{207}{opening a pipe} -\entry {interprocess communication, with pipes}{207}{interprocess communication, with pipes} -\entry {creating a pipe to a subprocess}{209}{creating a pipe to a subprocess} -\entry {pipe to a subprocess}{209}{pipe to a subprocess} -\entry {filtering i/o through subprocess}{209}{filtering i/o through subprocess} -\entry {creating a FIFO special file}{210}{creating a FIFO special file} -\entry {interprocess communication, with FIFO}{210}{interprocess communication, with FIFO} -\entry {socket}{213}{socket} -\entry {interprocess communication, with sockets}{213}{interprocess communication, with sockets} -\entry {communication style (of a socket)}{213}{communication style (of a socket)} -\entry {style of communication (of a socket)}{213}{style of communication (of a socket)} -\entry {packet}{213}{packet} -\entry {byte stream}{213}{byte stream} -\entry {stream (sockets)}{213}{stream (sockets)} -\entry {loss of data on sockets}{213}{loss of data on sockets} -\entry {data loss on sockets}{213}{data loss on sockets} -\entry {namespace (of socket)}{213}{namespace (of socket)} -\entry {domain (of socket)}{213}{domain (of socket)} -\entry {socket namespace}{213}{socket namespace} -\entry {socket domain}{213}{socket domain} -\entry {network protocol}{214}{network protocol} -\entry {protocol (of socket)}{214}{protocol (of socket)} -\entry {socket protocol}{214}{socket protocol} -\entry {protocol family}{214}{protocol family} -\entry {address of socket}{215}{address of socket} -\entry {name of socket}{215}{name of socket} -\entry {binding a socket address}{215}{binding a socket address} -\entry {socket address (name) binding}{215}{socket address (name) binding} -\entry {file namespace, for sockets}{218}{file namespace, for sockets} -\entry {Internet namespace, for sockets}{221}{Internet namespace, for sockets} -\entry {host address, Internet}{222}{host address, Internet} -\entry {Internet host address}{222}{Internet host address} -\entry {network number}{222}{network number} -\entry {local network address number}{222}{local network address number} -\entry {standard dot notation, for Internet addresses}{223}{standard dot notation, for Internet addresses} -\entry {dot notation, for Internet addresses}{223}{dot notation, for Internet addresses} -\entry {hosts database}{225}{hosts database} -\entry {converting host name to address}{225}{converting host name to address} -\entry {converting host address to name}{225}{converting host address to name} -\entry {port number}{228}{port number} -\entry {services database}{228}{services database} -\entry {converting service name to port number}{228}{converting service name to port number} -\entry {converting port number to service name}{228}{converting port number to service name} -\entry {byte order conversion, for socket}{230}{byte order conversion, for socket} -\entry {converting byte order}{230}{converting byte order} -\entry {big-endian}{230}{big-endian} -\entry {little-endian}{230}{little-endian} -\entry {network byte order}{230}{network byte order} -\entry {protocols database}{231}{protocols database} -\entry {TCP (Internet protocol)}{231}{TCP (Internet protocol)} -\entry {creating a socket}{234}{creating a socket} -\entry {socket, creating}{234}{socket, creating} -\entry {opening a socket}{234}{opening a socket} -\entry {socket, closing}{235}{socket, closing} -\entry {closing a socket}{235}{closing a socket} -\entry {shutting down a socket}{235}{shutting down a socket} -\entry {socket shutdown}{235}{socket shutdown} -\entry {creating a socket pair}{235}{creating a socket pair} -\entry {socket pair}{235}{socket pair} -\entry {opening a socket pair}{235}{opening a socket pair} -\entry {connection}{236}{connection} -\entry {client}{236}{client} -\entry {server}{236}{server} -\entry {connecting a socket}{237}{connecting a socket} -\entry {socket, connecting}{237}{socket, connecting} -\entry {socket, initiating a connection}{237}{socket, initiating a connection} -\entry {socket, client actions}{237}{socket, client actions} -\entry {listening (sockets)}{238}{listening (sockets)} -\entry {sockets, server actions}{238}{sockets, server actions} -\entry {sockets, listening}{238}{sockets, listening} -\entry {sockets, accepting connections}{239}{sockets, accepting connections} -\entry {accepting connections}{239}{accepting connections} -\entry {reading from a socket}{240}{reading from a socket} -\entry {writing to a socket}{240}{writing to a socket} -\entry {out-of-band data}{246}{out-of-band data} -\entry {high-priority data}{246}{high-priority data} -\entry {urgent socket condition}{247}{urgent socket condition} -\entry {datagram socket}{249}{datagram socket} -\entry {sending a datagram}{250}{sending a datagram} -\entry {transmitting datagrams}{250}{transmitting datagrams} -\entry {datagrams, transmitting}{250}{datagrams, transmitting} -\entry {receiving datagrams}{250}{receiving datagrams} -\entry {socket options}{255}{socket options} -\entry {level, for socket options}{255}{level, for socket options} -\entry {socket option level}{255}{socket option level} -\entry {networks database}{258}{networks database} -\entry {converting network number to network name}{258}{converting network number to network name} -\entry {converting network name to network number}{258}{converting network name to network number} -\entry {terminal identification}{261}{terminal identification} -\entry {identifying terminals}{261}{identifying terminals} -\entry {terminal input queue}{261}{terminal input queue} -\entry {typeahead buffer}{261}{typeahead buffer} -\entry {terminal output queue}{262}{terminal output queue} -\entry {canonical input processing}{262}{canonical input processing} -\entry {noncanonical input processing}{262}{noncanonical input processing} -\entry {terminal mode data types}{263}{terminal mode data types} -\entry {terminal mode functions}{264}{terminal mode functions} -\entry {parity checking}{267}{parity checking} -\entry {break condition, detecting}{268}{break condition, detecting} -\entry {modem status lines}{270}{modem status lines} -\entry {carrier detect}{270}{carrier detect} -\entry {modem disconnect}{270}{modem disconnect} -\entry {echo of terminal input}{272}{echo of terminal input} -\entry {interactive signals, from terminal}{273}{interactive signals, from terminal} -\entry {line speed}{274}{line speed} -\entry {baud rate}{274}{baud rate} -\entry {terminal line speed}{274}{terminal line speed} -\entry {terminal line speed}{274}{terminal line speed} -\entry {EOF character}{277}{EOF character} -\entry {EOL character}{277}{EOL character} -\entry {EOL2 character}{277}{EOL2 character} -\entry {ERASE character}{277}{ERASE character} -\entry {WERASE character}{278}{WERASE character} -\entry {KILL character}{278}{KILL character} -\entry {REPRINT character}{278}{REPRINT character} -\entry {INTR character}{278}{INTR character} -\entry {interrupt character}{278}{interrupt character} -\entry {QUIT character}{279}{QUIT character} -\entry {SUSP character}{279}{SUSP character} -\entry {suspend character}{279}{suspend character} -\entry {DSUSP character}{279}{DSUSP character} -\entry {delayed suspend character}{279}{delayed suspend character} -\entry {START character}{280}{START character} -\entry {STOP character}{280}{STOP character} -\entry {LNEXT character}{280}{LNEXT character} -\entry {DISCARD character}{281}{DISCARD character} -\entry {STATUS character}{281}{STATUS character} -\entry {MIN termios slot}{281}{MIN termios slot} -\entry {TIME termios slot}{282}{TIME termios slot} -\entry {terminal line control functions}{283}{terminal line control functions} -\entry {break condition, generating}{283}{break condition, generating} -\entry {flushing terminal output queue}{283}{flushing terminal output queue} -\entry {terminal output queue, flushing}{283}{terminal output queue, flushing} -\entry {clearing terminal input queue}{284}{clearing terminal input queue} -\entry {terminal input queue, clearing}{284}{terminal input queue, clearing} -\entry {flow control, terminal}{284}{flow control, terminal} -\entry {terminal flow control}{284}{terminal flow control} -\entry {domain error}{287}{domain error} -\entry {range error}{287}{range error} -\entry {trigonometric functions}{288}{trigonometric functions} -\entry {pi (trigonometric constant)}{288}{pi (trigonometric constant)} -\entry {inverse trigonmetric functions}{289}{inverse trigonmetric functions} -\entry {exponentiation functions}{290}{exponentiation functions} -\entry {power functions}{290}{power functions} -\entry {logarithm functions}{290}{logarithm functions} -\entry {square root function}{290}{square root function} -\entry {cube root function}{290}{cube root function} -\entry {hyperbolic functions}{291}{hyperbolic functions} -\entry {inverse hyperbolic functions}{291}{inverse hyperbolic functions} -\entry {random numbers}{292}{random numbers} -\entry {pseudo-random numbers}{292}{pseudo-random numbers} -\entry {seed (for random numbers)}{292}{seed (for random numbers)} -\entry {NaN}{295}{NaN} -\entry {not a number}{295}{not a number} -\entry {IEEE floating point}{295}{IEEE floating point} -\entry {absolute value functions}{296}{absolute value functions} -\entry {normalization functions (floating-point)}{297}{normalization functions (floating-point)} -\entry {rounding functions}{298}{rounding functions} -\entry {remainder functions}{298}{remainder functions} -\entry {converting floats to integers}{298}{converting floats to integers} -\entry {integer division functions}{299}{integer division functions} -\entry {parsing numbers (in formatted input)}{300}{parsing numbers (in formatted input)} -\entry {converting strings to numbers}{300}{converting strings to numbers} -\entry {number syntax, parsing}{300}{number syntax, parsing} -\entry {syntax, for reading numbers}{300}{syntax, for reading numbers} -\entry {Comparison Function}{307}{Comparison Function} -\entry {search function (for arrays)}{307}{search function (for arrays)} -\entry {binary search function (for arrays)}{307}{binary search function (for arrays)} -\entry {array search function}{307}{array search function} -\entry {sort function (for arrays)}{308}{sort function (for arrays)} -\entry {quick sort function (for arrays)}{308}{quick sort function (for arrays)} -\entry {array sort function}{308}{array sort function} -\entry {stable sorting}{308}{stable sorting} -\entry {Kermit the frog}{310}{Kermit the frog} -\entry {globbing}{314}{globbing} -\entry {word expansion}{323}{word expansion} -\entry {expansion of shell words}{323}{expansion of shell words} -\entry {tilde expansion}{324}{tilde expansion} -\entry {variable substitution}{324}{variable substitution} -\entry {substitution of variables and commands}{324}{substitution of variables and commands} -\entry {command substitution}{324}{command substitution} -\entry {arithmetic expansion}{324}{arithmetic expansion} -\entry {field splitting}{324}{field splitting} -\entry {wildcard expansion}{324}{wildcard expansion} -\entry {quote removal}{324}{quote removal} -\entry {removal of quotes}{324}{removal of quotes} -\entry {CPU time}{329}{CPU time} -\entry {processor time}{329}{processor time} -\entry {clock ticks}{329}{clock ticks} -\entry {ticks, clock}{329}{ticks, clock} -\entry {time, elapsed CPU}{329}{time, elapsed CPU} -\entry {Gregorian calendar}{331}{Gregorian calendar} -\entry {time, calendar}{331}{time, calendar} -\entry {date and time}{331}{date and time} -\entry {calendar time}{331}{calendar time} -\entry {high-resolution time}{331}{high-resolution time} -\entry {local time}{331}{local time} -\entry {broken-down time}{331}{broken-down time} -\entry {epoch}{332}{epoch} -\entry {broken-down time}{335}{broken-down time} -\entry {calendar time and broken-down time}{335}{calendar time and broken-down time} -\entry {leap second}{335}{leap second} -\entry {Daylight Saving Time}{336}{Daylight Saving Time} -\entry {summer time}{336}{summer time} -\entry {time zone}{342}{time zone} -\entry {time zone database}{344}{time zone database} -\entry {setting an alarm}{346}{setting an alarm} -\entry {interval timer, setting}{346}{interval timer, setting} -\entry {alarms, setting}{346}{alarms, setting} -\entry {timers, setting}{346}{timers, setting} -\entry {real-time timer}{346}{real-time timer} -\entry {timer, real-time}{346}{timer, real-time} -\entry {virtual timer}{346}{virtual timer} -\entry {timer, virtual}{346}{timer, virtual} -\entry {profiling timer}{346}{profiling timer} -\entry {timer, profiling}{346}{timer, profiling} -\entry {resource limits}{351}{resource limits} -\entry {limits on resource usage}{351}{limits on resource usage} -\entry {usage limits}{351}{usage limits} -\entry {soft limit}{352}{soft limit} -\entry {hard limit}{352}{hard limit} -\entry {process priority}{354}{process priority} -\entry {priority of a process}{354}{priority of a process} -\entry {extended character sets}{357}{extended character sets} -\entry {wide characters}{357}{wide characters} -\entry {multibyte characters}{358}{multibyte characters} -\entry {basic byte sequence}{358}{basic byte sequence} -\entry {code, character}{361}{code, character} -\entry {character code}{361}{character code} -\entry {extended strings, converting representations}{362}{extended strings, converting representations} -\entry {converting extended strings}{362}{converting extended strings} -\entry {multibyte character, length of}{363}{multibyte character, length of} -\entry {length of multibyte character}{363}{length of multibyte character} -\entry {extended characters, converting}{364}{extended characters, converting} -\entry {converting extended characters}{364}{converting extended characters} -\entry {internationalization}{369}{internationalization} -\entry {locales}{369}{locales} -\entry {combining locales}{370}{combining locales} -\entry {categories for locales}{370}{categories for locales} -\entry {locale categories}{370}{locale categories} -\entry {changing the locale}{371}{changing the locale} -\entry {locale, changing}{371}{locale, changing} -\entry {monetary value formatting}{373}{monetary value formatting} -\entry {numeric value formatting}{373}{numeric value formatting} -\entry {decimal-point separator}{374}{decimal-point separator} -\entry {grouping of digits}{374}{grouping of digits} -\entry {currency symbols}{375}{currency symbols} -\entry {non-local exits}{379}{non-local exits} -\entry {long jumps}{379}{long jumps} -\entry {signal}{383}{signal} -\entry {generation of signals}{384}{generation of signals} -\entry {delivery of signals}{384}{delivery of signals} -\entry {pending signals}{384}{pending signals} -\entry {blocked signals}{384}{blocked signals} -\entry {specified action (for a signal)}{385}{specified action (for a signal)} -\entry {default action (for a signal)}{385}{default action (for a signal)} -\entry {signal action}{385}{signal action} -\entry {catching signals}{385}{catching signals} -\entry {signal names}{385}{signal names} -\entry {names of signals}{385}{names of signals} -\entry {signal number}{385}{signal number} -\entry {program error signals}{386}{program error signals} -\entry {exception}{387}{exception} -\entry {floating-point exception}{387}{floating-point exception} -\entry {illegal instruction}{388}{illegal instruction} -\entry {segmentation violation}{388}{segmentation violation} -\entry {bus error}{388}{bus error} -\entry {abort signal}{388}{abort signal} -\entry {program termination signals}{389}{program termination signals} -\entry {termination signal}{389}{termination signal} -\entry {interrupt signal}{389}{interrupt signal} -\entry {quit signal}{390}{quit signal} -\entry {quit signal}{390}{quit signal} -\entry {kill signal}{390}{kill signal} -\entry {hangup signal}{390}{hangup signal} -\entry {alarm signal}{391}{alarm signal} -\entry {virtual time alarm signal}{391}{virtual time alarm signal} -\entry {profiling alarm signal}{391}{profiling alarm signal} -\entry {input available signal}{391}{input available signal} -\entry {output possible signal}{391}{output possible signal} -\entry {urgent data signal}{391}{urgent data signal} -\entry {job control signals}{392}{job control signals} -\entry {child process signal}{392}{child process signal} -\entry {continue signal}{392}{continue signal} -\entry {stop signal}{392}{stop signal} -\entry {interactive stop signal}{393}{interactive stop signal} -\entry {terminal input signal}{393}{terminal input signal} -\entry {terminal output signal}{393}{terminal output signal} -\entry {pipe signal}{394}{pipe signal} -\entry {broken pipe signal}{394}{broken pipe signal} -\entry {lost resource signal}{394}{lost resource signal} -\entry {user signals}{394}{user signals} -\entry {signal messages}{395}{signal messages} -\entry {signal actions}{396}{signal actions} -\entry {establishing a handler}{396}{establishing a handler} -\entry {signal function}{396}{\code {signal} function} -\entry {default action for a signal}{397}{default action for a signal} -\entry {ignore action for a signal}{397}{ignore action for a signal} -\entry {sigaction function}{398}{\code {sigaction} function} -\entry {signal flags}{401}{signal flags} -\entry {flags for sigaction}{401}{flags for \code {sigaction}} -\entry {sigaction flags}{401}{\code {sigaction} flags} -\entry {initial signal actions}{402}{initial signal actions} -\entry {signal handler function}{403}{signal handler function} -\entry {non-local exit, from signal handler}{405}{non-local exit, from signal handler} -\entry {race conditions, relating to signals}{406}{race conditions, relating to signals} -\entry {handling multiple signals}{407}{handling multiple signals} -\entry {successive signals}{407}{successive signals} -\entry {merging of signals}{407}{merging of signals} -\entry {restrictions on signal handler functions}{410}{restrictions on signal handler functions} -\entry {volatile declarations}{410}{\code {volatile} declarations} -\entry {reentrant functions}{410}{reentrant functions} -\entry {EINTR, and restarting interrupted primitives}{415}{EINTR, and restarting interrupted primitives} -\entry {restarting interrupted primitives}{415}{restarting interrupted primitives} -\entry {interrupting primitives}{415}{interrupting primitives} -\entry {primitives, interrupting}{415}{primitives, interrupting} -\entry {sending signals}{415}{sending signals} -\entry {raising signals}{415}{raising signals} -\entry {signals, generating}{415}{signals, generating} -\entry {killing a process}{417}{killing a process} -\entry {interprocess communication, with signals}{419}{interprocess communication, with signals} -\entry {blocking signals}{420}{blocking signals} -\entry {signal set}{421}{signal set} -\entry {signal mask}{422}{signal mask} -\entry {process signal mask}{422}{process signal mask} -\entry {blocking signals, in a handler}{424}{blocking signals, in a handler} -\entry {pending signals, checking for}{425}{pending signals, checking for} -\entry {blocked signals, checking for}{425}{blocked signals, checking for} -\entry {checking for pending signals}{425}{checking for pending signals} -\entry {timing error in signal handling}{427}{timing error in signal handling} -\entry {waiting for a signal}{428}{waiting for a signal} -\entry {pause function}{428}{\code {pause} function} -\entry {process}{437}{process} -\entry {program arguments}{437}{program arguments} -\entry {command line arguments}{437}{command line arguments} -\entry {arguments, to program}{437}{arguments, to program} -\entry {program startup}{437}{program startup} -\entry {startup of program}{437}{startup of program} -\entry {invocation of program}{437}{invocation of program} -\entry {main function}{437}{\code {main} function} -\entry {argc (program argument count)}{437}{argc (program argument count)} -\entry {argv (program argument vector)}{437}{argv (program argument vector)} -\entry {program argument syntax}{438}{program argument syntax} -\entry {syntax, for program arguments}{438}{syntax, for program arguments} -\entry {command argument syntax}{438}{command argument syntax} -\entry {long-named options}{438}{long-named options} -\entry {program arguments, parsing}{439}{program arguments, parsing} -\entry {command arguments, parsing}{439}{command arguments, parsing} -\entry {parsing program arguments}{439}{parsing program arguments} -\entry {environment variable}{447}{environment variable} -\entry {environment}{448}{environment} -\entry {environment access}{448}{environment access} -\entry {environment representation}{448}{environment representation} -\entry {standard environment variables}{449}{standard environment variables} -\entry {HOME environment variable}{449}{HOME environment variable} -\entry {home directory}{449}{home directory} -\entry {LOGNAME environment variable}{449}{LOGNAME environment variable} -\entry {PATH environment variable}{450}{PATH environment variable} -\entry {TERM environment variable}{450}{TERM environment variable} -\entry {TZ environment variable}{450}{TZ environment variable} -\entry {LANG environment variable}{450}{LANG environment variable} -\entry {LC{\_}COLLATE environment variable}{450}{LC{\_}COLLATE environment variable} -\entry {LC{\_}CTYPE environment variable}{450}{LC{\_}CTYPE environment variable} -\entry {LC{\_}MONETARY environment variable}{451}{LC{\_}MONETARY environment variable} -\entry {LC{\_}NUMERIC environment variable}{451}{LC{\_}NUMERIC environment variable} -\entry {LC{\_}TIME environment variable}{451}{LC{\_}TIME environment variable} -\entry {{\_}POSIX{\_}OPTION{\_}ORDER environment variable.}{451}{{\_}POSIX{\_}OPTION{\_}ORDER environment variable.} -\entry {program termination}{451}{program termination} -\entry {process termination}{451}{process termination} -\entry {exit status value}{451}{exit status value} -\entry {exit status}{452}{exit status} -\entry {aborting a program}{454}{aborting a program} -\entry {process}{457}{process} -\entry {child process}{457}{child process} -\entry {parent process}{457}{parent process} -\entry {running a command}{457}{running a command} -\entry {process ID}{458}{process ID} -\entry {process lifetime}{458}{process lifetime} -\entry {creating a process}{458}{creating a process} -\entry {forking a process}{458}{forking a process} -\entry {child process}{458}{child process} -\entry {parent process}{458}{parent process} -\entry {process image}{458}{process image} -\entry {executing a file}{460}{executing a file} -\entry {exec functions}{460}{\code {exec} functions} -\entry {process completion}{463}{process completion} -\entry {waiting for completion of child process}{463}{waiting for completion of child process} -\entry {testing exit status of child process}{463}{testing exit status of child process} -\entry {process groups}{471}{process groups} -\entry {job control}{471}{job control} -\entry {job}{471}{job} -\entry {session}{471}{session} -\entry {shell}{471}{shell} -\entry {session}{471}{session} -\entry {session leader}{471}{session leader} -\entry {controlling terminal}{472}{controlling terminal} -\entry {foreground job}{472}{foreground job} -\entry {background job}{472}{background job} -\entry {stopped job}{472}{stopped job} -\entry {job control is optional}{472}{job control is optional} -\entry {controlling process}{473}{controlling process} -\entry {controlling terminal, access to}{473}{controlling terminal, access to} -\entry {SIGTTIN, from background job}{473}{\code {SIGTTIN}, from background job} -\entry {SIGTTOU, from background job}{473}{\code {SIGTTOU}, from background job} -\entry {orphaned process group}{473}{orphaned process group} -\entry {job control, enabling}{476}{job control, enabling} -\entry {subshell}{476}{subshell} -\entry {job control, enabling}{476}{job control, enabling} -\entry {launching jobs}{478}{launching jobs} -\entry {process group leader}{478}{process group leader} -\entry {process group ID}{478}{process group ID} -\entry {race conditions, relating to job control}{478}{race conditions, relating to job control} -\entry {foreground job, launching}{481}{foreground job, launching} -\entry {background job, launching}{482}{background job, launching} -\entry {stopped jobs, detecting}{483}{stopped jobs, detecting} -\entry {terminated jobs, detecting}{483}{terminated jobs, detecting} -\entry {SIGCHLD, handling of}{483}{\code {SIGCHLD}, handling of} -\entry {stopped jobs, continuing}{486}{stopped jobs, continuing} -\entry {process group functions}{488}{process group functions} -\entry {job control functions}{488}{job control functions} -\entry {controlling terminal, determining}{488}{controlling terminal, determining} -\entry {BSD compatibility library}{489}{BSD compatibility library} -\entry {Name Service Switch}{493}{Name Service Switch} -\entry {NSS}{493}{NSS} -\entry {databses}{493}{databses} -\entry {ethers}{493}{ethers} -\entry {group}{493}{group} -\entry {hosts}{493}{hosts} -\entry {netgroup}{493}{netgroup} -\entry {network}{493}{network} -\entry {protocols}{493}{protocols} -\entry {passwd}{493}{passwd} -\entry {rpc}{493}{rpc} -\entry {services}{493}{services} -\entry {shadow}{493}{shadow} -\entry {/etc/nsswitch.conf}{494}{\file {/etc/nsswitch.conf}} -\entry {nsswitch.conf}{494}{\file {nsswitch.conf}} -\entry {DNS server unavailable}{495}{DNS server unavailable} -\entry {nisplus, and completeness}{496}{nisplus, and completeness} -\entry {nisplus, and booting}{496}{nisplus, and booting} -\entry {bootstrapping, and services}{496}{bootstrapping, and services} -\entry {default value, and NSS}{496}{default value, and NSS} -\entry {optimizing NSS}{497}{optimizing NSS} -\entry {reentrant NSS functions}{497}{reentrant NSS functions} -\entry {NSS{\_}STATUS{\_}TRYAGAIN}{498}{NSS{\_}STATUS{\_}TRYAGAIN} -\entry {NSS{\_}STATUS{\_}UNAVAIL}{498}{NSS{\_}STATUS{\_}UNAVAIL} -\entry {NSS{\_}STATUS{\_}NOTFOUND}{498}{NSS{\_}STATUS{\_}NOTFOUND} -\entry {NSS{\_}STATUS{\_}SUCCESS}{498}{NSS{\_}STATUS{\_}SUCCESS} -\entry {login name}{503}{login name} -\entry {user name}{503}{user name} -\entry {user ID}{503}{user ID} -\entry {group name}{503}{group name} -\entry {group ID}{503}{group ID} -\entry {persona}{503}{persona} -\entry {effective user ID}{503}{effective user ID} -\entry {effective group ID}{503}{effective group ID} -\entry {real user ID}{504}{real user ID} -\entry {real group ID}{504}{real group ID} -\entry {supplementary group IDs}{504}{supplementary group IDs} -\entry {setuid programs}{505}{\code {setuid} programs} -\entry {login name, determining}{512}{login name, determining} -\entry {user ID, determining}{512}{user ID, determining} -\entry {user database}{513}{user database} -\entry {password database}{513}{password database} -\entry {converting user ID to user name}{514}{converting user ID to user name} -\entry {converting user name to user ID}{514}{converting user name to user ID} -\entry {scanning the user list}{515}{scanning the user list} -\entry {group database}{517}{group database} -\entry {converting group name to group ID}{517}{converting group name to group ID} -\entry {converting group ID to group name}{517}{converting group ID to group name} -\entry {scanning the group list}{519}{scanning the group list} -\entry {Netgroup}{520}{Netgroup} -\entry {POSIX capacity limits}{529}{POSIX capacity limits} -\entry {limits, POSIX}{529}{limits, POSIX} -\entry {capacity limits, POSIX}{529}{capacity limits, POSIX} -\entry {limits, program argument size}{529}{limits, program argument size} -\entry {limits, number of processes}{529}{limits, number of processes} -\entry {limits, number of open files}{529}{limits, number of open files} -\entry {limits, time zone name length}{530}{limits, time zone name length} -\entry {limits, number of supplementary group IDs}{530}{limits, number of supplementary group IDs} -\entry {POSIX optional features}{530}{POSIX optional features} -\entry {optional POSIX features}{530}{optional POSIX features} -\entry {limits, link count of files}{537}{limits, link count of files} -\entry {limits, terminal input queue}{537}{limits, terminal input queue} -\entry {limits, file name length}{537}{limits, file name length} -\entry {limits, pipe buffer size}{538}{limits, pipe buffer size} -\entry {consistency checking}{545}{consistency checking} -\entry {impossible events}{545}{impossible events} -\entry {assertions}{545}{assertions} -\entry {variable number of arguments}{547}{variable number of arguments} -\entry {variadic functions}{547}{variadic functions} -\entry {optional arguments}{547}{optional arguments} -\entry {function prototypes (variadic)}{548}{function prototypes (variadic)} -\entry {prototypes for variadic functions}{548}{prototypes for variadic functions} -\entry {variadic function prototypes}{548}{variadic function prototypes} -\entry {variadic function argument access}{548}{variadic function argument access} -\entry {arguments (variadic functions)}{548}{arguments (variadic functions)} -\entry {number of arguments passed}{549}{number of arguments passed} -\entry {how many arguments}{549}{how many arguments} -\entry {arguments, how many}{549}{arguments, how many} -\entry {variadic functions, calling}{550}{variadic functions, calling} -\entry {calling variadic functions}{550}{calling variadic functions} -\entry {declaring variadic functions}{550}{declaring variadic functions} -\entry {default argument promotions}{550}{default argument promotions} -\entry {argument promotion}{550}{argument promotion} -\entry {null pointer constant}{553}{null pointer constant} -\entry {integer type width}{555}{integer type width} -\entry {width of integer type}{555}{width of integer type} -\entry {type measurements, integer}{555}{type measurements, integer} -\entry {integer type range}{555}{integer type range} -\entry {range of integer type}{555}{range of integer type} -\entry {limits, integer types}{555}{limits, integer types} -\entry {floating type measurements}{557}{floating type measurements} -\entry {measurements of floating types}{557}{measurements of floating types} -\entry {type measurements, floating}{557}{type measurements, floating} -\entry {limits, floating types}{557}{limits, floating types} -\entry {sign (of floating point number)}{557}{sign (of floating point number)} -\entry {base (of floating point number)}{557}{base (of floating point number)} -\entry {radix (of floating point number)}{557}{radix (of floating point number)} -\entry {exponent (of floating point number)}{557}{exponent (of floating point number)} -\entry {bias (of floating point number exponent)}{557}{bias (of floating point number exponent)} -\entry {mantissa (of floating point number)}{558}{mantissa (of floating point number)} -\entry {significand (of floating point number)}{558}{significand (of floating point number)} -\entry {precision (of floating point number)}{558}{precision (of floating point number)} -\entry {hidden bit (of floating point number mantissa)}{558}{hidden bit (of floating point number mantissa)} -\entry {normalized floating point number}{558}{normalized floating point number} -\entry {IEEE floating point representation}{562}{IEEE floating point representation} -\entry {floating point, IEEE}{562}{floating point, IEEE} -\entry {installing the library}{659}{installing the library} -\entry {installation tools}{661}{installation tools} -\entry {tools, for installing library}{661}{tools, for installing library} -\entry {configurations, all supported}{662}{configurations, all supported} -\entry {reporting bugs}{663}{reporting bugs} -\entry {bugs, reporting}{663}{bugs, reporting} +\entry{library}{1}{library} +\entry{standards}{1}{standards} +\entry{ISO C}{2}{ISO C} +\entry{POSIX}{2}{POSIX} +\entry{POSIX.1}{2}{POSIX.1} +\entry{IEEE Std 1003.1}{2}{IEEE Std 1003.1} +\entry{POSIX.2}{2}{POSIX.2} +\entry{IEEE Std 1003.2}{2}{IEEE Std 1003.2} +\entry{BSD Unix}{3}{BSD Unix} +\entry{4.n BSD Unix}{3}{4.\var {n} BSD Unix} +\entry{Berkeley Unix}{3}{Berkeley Unix} +\entry{SunOS}{3}{SunOS} +\entry{Unix, Berkeley}{3}{Unix, Berkeley} +\entry{SVID}{3}{SVID} +\entry{System V Unix}{3}{System V Unix} +\entry{Unix, System V}{3}{Unix, System V} +\entry{header files}{4}{header files} +\entry{definition (compared to declaration)}{4}{definition (compared to declaration)} +\entry{declaration (compared to definition)}{4}{declaration (compared to definition)} +\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{feature test macros}{8}{feature test macros} +\entry{BSD compatibility library.}{9}{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}{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{dynamic allocation}{31}{dynamic allocation} +\entry{static allocation}{31}{static allocation} +\entry{automatic allocation}{31}{automatic allocation} +\entry{unconstrained storage allocation}{32}{unconstrained storage 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}{34}{freeing memory allocated with \code {malloc}} +\entry{heap, freeing memory from}{34}{heap, freeing memory from} +\entry{changing the size of a block (malloc)}{35}{changing the size of a block (\code {malloc})} +\entry{efficiency and malloc}{36}{efficiency and \code {malloc}} +\entry{page boundary}{37}{page boundary} +\entry{alignment (with malloc)}{37}{alignment (with \code {malloc})} +\entry{heap consistency checking}{38}{heap consistency checking} +\entry{consistency checking, of heap}{38}{consistency checking, of heap} +\entry{allocation hooks, for malloc}{39}{allocation hooks, for \code {malloc}} +\entry{allocation statistics}{40}{allocation statistics} +\entry{obstacks}{42}{obstacks} +\entry{allocation (obstacks)}{44}{allocation (obstacks)} +\entry{freeing (obstacks)}{45}{freeing (obstacks)} +\entry{macros}{46}{macros} +\entry{growing objects (in obstacks)}{46}{growing objects (in obstacks)} +\entry{changing the size of a block (obstacks)}{46}{changing the size of a block (obstacks)} +\entry{shrinking objects}{48}{shrinking objects} +\entry{efficiency and obstacks}{48}{efficiency and obstacks} +\entry{obstack status}{50}{obstack status} +\entry{status of obstack}{50}{status of obstack} +\entry{alignment (in obstacks)}{51}{alignment (in obstacks)} +\entry{efficiency of chunks}{51}{efficiency of chunks} +\entry{chunks}{51}{chunks} +\entry{automatic freeing}{54}{automatic freeing} +\entry{alloca function}{54}{\code {alloca} function} +\entry{automatic storage with variable size}{54}{automatic storage with variable size} +\entry{longjmp}{55}{longjmp} +\entry{alloca disadvantages}{56}{\code {alloca} disadvantages} +\entry{disadvantages of alloca}{56}{disadvantages of \code {alloca}} +\entry{variable-sized arrays}{56}{variable-sized arrays} +\entry{relocating memory allocator}{57}{relocating memory allocator} +\entry{handle}{57}{handle} +\entry{memory usage warnings}{58}{memory usage warnings} +\entry{warnings of memory almost full}{58}{warnings of memory almost full} +\entry{character testing}{59}{character testing} +\entry{classification of characters}{59}{classification of characters} +\entry{predicates on characters}{59}{predicates on characters} +\entry{character predicates}{59}{character predicates} +\entry{lower-case character}{59}{lower-case character} +\entry{upper-case character}{59}{upper-case character} +\entry{alphabetic character}{59}{alphabetic character} +\entry{digit character}{59}{digit character} +\entry{decimal digit character}{59}{decimal digit character} +\entry{alphanumeric character}{60}{alphanumeric character} +\entry{hexadecimal digit character}{60}{hexadecimal digit character} +\entry{punctuation character}{60}{punctuation character} +\entry{whitespace character}{60}{whitespace character} +\entry{blank character}{60}{blank character} +\entry{graphic character}{60}{graphic character} +\entry{printing character}{60}{printing character} +\entry{control character}{60}{control character} +\entry{ASCII character}{61}{ASCII character} +\entry{character case conversion}{61}{character case conversion} +\entry{case conversion of characters}{61}{case conversion of characters} +\entry{converting case of characters}{61}{converting case of characters} +\entry{string, representation of}{63}{string, representation of} +\entry{string}{63}{string} +\entry{null character}{63}{null character} +\entry{string literal}{63}{string literal} +\entry{length of string}{64}{length of string} +\entry{allocation size of string}{64}{allocation size of string} +\entry{size of string}{64}{size of string} +\entry{string length}{64}{string length} +\entry{string allocation}{64}{string allocation} +\entry{copying strings and arrays}{65}{copying strings and arrays} +\entry{string copy functions}{65}{string copy functions} +\entry{array copy functions}{65}{array copy functions} +\entry{concatenating strings}{65}{concatenating strings} +\entry{string concatenation functions}{65}{string concatenation functions} +\entry{comparing strings and arrays}{70}{comparing strings and arrays} +\entry{string comparison functions}{70}{string comparison functions} +\entry{array comparison functions}{70}{array comparison functions} +\entry{predicates on strings}{70}{predicates on strings} +\entry{predicates on arrays}{70}{predicates on arrays} +\entry{collating strings}{73}{collating strings} +\entry{string collation functions}{73}{string collation functions} +\entry{converting string to collation order}{74}{converting string to collation order} +\entry{search functions (for strings)}{76}{search functions (for strings)} +\entry{string search functions}{76}{string search functions} +\entry{tokenizing strings}{78}{tokenizing strings} +\entry{breaking a string into tokens}{78}{breaking a string into tokens} +\entry{parsing tokens from a string}{78}{parsing tokens from a string} +\entry{opening a file}{83}{opening a file} +\entry{file position}{85}{file position} +\entry{sequential-access files}{85}{sequential-access files} +\entry{random-access files}{85}{random-access files} +\entry{append-access files}{85}{append-access files} +\entry{file name}{85}{file name} +\entry{directory}{86}{directory} +\entry{link}{86}{link} +\entry{directory entry}{86}{directory entry} +\entry{file name component}{86}{file name component} +\entry{file name resolution}{86}{file name resolution} +\entry{root directory}{86}{root directory} +\entry{absolute file name}{86}{absolute file name} +\entry{relative file name}{86}{relative file name} +\entry{parent directory}{87}{parent directory} +\entry{file name errors}{87}{file name errors} +\entry{usual file name errors}{87}{usual file name errors} +\entry{file pointer}{91}{file pointer} +\entry{standard streams}{91}{standard streams} +\entry{streams, standard}{91}{streams, standard} +\entry{standard input stream}{91}{standard input stream} +\entry{standard output stream}{91}{standard output stream} +\entry{standard error stream}{92}{standard error stream} +\entry{opening a stream}{92}{opening a stream} +\entry{closing a stream}{94}{closing a stream} +\entry{writing to a stream, by characters}{95}{writing to a stream, by characters} +\entry{reading from a stream, by characters}{96}{reading from a stream, by characters} +\entry{peeking at input}{100}{peeking at input} +\entry{unreading characters}{100}{unreading characters} +\entry{pushing input back}{100}{pushing input back} +\entry{binary I/O to a stream}{102}{binary I/O to a stream} +\entry{block I/O to a stream}{102}{block I/O to a stream} +\entry{reading from a stream, by blocks}{102}{reading from a stream, by blocks} +\entry{writing to a stream, by blocks}{102}{writing to a stream, by blocks} +\entry{format string, for printf}{102}{format string, for \code {printf}} +\entry{template, for printf}{102}{template, for \code {printf}} +\entry{formatted output to a stream}{102}{formatted output to a stream} +\entry{writing to a stream, formatted}{102}{writing to a stream, formatted} +\entry{conversion specifications (printf)}{103}{conversion specifications (\code {printf})} +\entry{flag character (printf)}{104}{flag character (\code {printf})} +\entry{minimum field width (printf)}{104}{minimum field width (\code {printf})} +\entry{precision (printf)}{104}{precision (\code {printf})} +\entry{type modifier character (printf)}{105}{type modifier character (\code {printf})} +\entry{output conversions, for printf}{105}{output conversions, for \code {printf}} +\entry{parsing a template string}{116}{parsing a template string} +\entry{customizing printf}{119}{customizing \code {printf}} +\entry{defining new printf conversions}{119}{defining new \code {printf} conversions} +\entry{extending printf}{119}{extending \code {printf}} +\entry{formatted input from a stream}{124}{formatted input from a stream} +\entry{reading from a stream, formatted}{124}{reading from a stream, formatted} +\entry{format string, for scanf}{124}{format string, for \code {scanf}} +\entry{template, for scanf}{124}{template, for \code {scanf}} +\entry{conversion specifications (scanf)}{125}{conversion specifications (\code {scanf})} +\entry{matching failure, in scanf}{125}{matching failure, in \code {scanf}} +\entry{flag character (scanf)}{126}{flag character (\code {scanf})} +\entry{maximum field width (scanf)}{126}{maximum field width (\code {scanf})} +\entry{type modifier character (scanf)}{126}{type modifier character (\code {scanf})} +\entry{input conversions, for scanf}{127}{input conversions, for \code {scanf}} +\entry{end of file, on a stream}{133}{end of file, on a stream} +\entry{text stream}{134}{text stream} +\entry{binary stream}{134}{binary stream} +\entry{lines (in a text file)}{134}{lines (in a text file)} +\entry{file positioning on a stream}{135}{file positioning on a stream} +\entry{positioning a stream}{135}{positioning a stream} +\entry{seeking on a stream}{135}{seeking on a stream} +\entry{buffering of streams}{138}{buffering of streams} +\entry{unbuffered stream}{138}{unbuffered stream} +\entry{line buffered stream}{138}{line buffered stream} +\entry{fully buffered stream}{138}{fully buffered stream} +\entry{flushing a stream}{139}{flushing a stream} +\entry{buffering, controlling}{139}{buffering, controlling} +\entry{stream, for I/O to a string}{142}{stream, for I/O to a string} +\entry{string stream}{142}{string stream} +\entry{custom streams}{145}{custom streams} +\entry{programming your own streams}{145}{programming your own streams} +\entry{cookie, for custom stream}{145}{cookie, for custom stream} +\entry{hook functions (of custom streams)}{146}{hook functions (of custom streams)} +\entry{opening a file descriptor}{149}{opening a file descriptor} +\entry{closing a file descriptor}{149}{closing a file descriptor} +\entry{reading from a file descriptor}{151}{reading from a file descriptor} +\entry{end-of-file, on a file descriptor}{151}{end-of-file, on a file descriptor} +\entry{writing to a file descriptor}{153}{writing to a file descriptor} +\entry{file positioning on a file descriptor}{154}{file positioning on a file descriptor} +\entry{positioning a file descriptor}{154}{positioning a file descriptor} +\entry{seeking on a file descriptor}{154}{seeking on a file descriptor} +\entry{sparse files}{155}{sparse files} +\entry{holes in files}{155}{holes in files} +\entry{streams, and file descriptors}{157}{streams, and file descriptors} +\entry{converting file descriptor to stream}{157}{converting file descriptor to stream} +\entry{extracting file descriptor from stream}{157}{extracting file descriptor from stream} +\entry{standard file descriptors}{157}{standard file descriptors} +\entry{file descriptors, standard}{157}{file descriptors, standard} +\entry{standard input file descriptor}{157}{standard input file descriptor} +\entry{standard output file descriptor}{158}{standard output file descriptor} +\entry{standard error file descriptor}{158}{standard error file descriptor} +\entry{channels}{158}{channels} +\entry{streams and descriptors}{158}{streams and descriptors} +\entry{descriptors and streams}{158}{descriptors and streams} +\entry{mixing descriptors and streams}{158}{mixing descriptors and streams} +\entry{linked channels}{158}{linked channels} +\entry{cleaning up a stream}{158}{cleaning up a stream} +\entry{independent channels}{158}{independent channels} +\entry{waiting for input or output}{160}{waiting for input or output} +\entry{multiplexing input}{160}{multiplexing input} +\entry{input from multiple files}{160}{input from multiple files} +\entry{file descriptor sets, for select}{160}{file descriptor sets, for \code {select}} +\entry{control operations on files}{163}{control operations on files} +\entry{fcntl function}{163}{\code {fcntl} function} +\entry{duplicating file descriptors}{164}{duplicating file descriptors} +\entry{redirecting input and output}{164}{redirecting input and output} +\entry{file descriptor flags}{166}{file descriptor flags} +\entry{close-on-exec (file descriptor flag)}{167}{close-on-exec (file descriptor flag)} +\entry{file status flags}{168}{file status flags} +\entry{file name translation flags}{169}{file name translation flags} +\entry{flags, file name translation}{169}{flags, file name translation} +\entry{open-time action flags}{169}{open-time action flags} +\entry{flags, open-time action}{169}{flags, open-time action} +\entry{create on open (file status flag)}{169}{create on open (file status flag)} +\entry{non-blocking open}{169}{non-blocking open} +\entry{controlling terminal, setting}{170}{controlling terminal, setting} +\entry{symbolic link, opening}{170}{symbolic link, opening} +\entry{file locks}{173}{file locks} +\entry{record locking}{173}{record locking} +\entry{exclusive lock}{173}{exclusive lock} +\entry{write lock}{173}{write lock} +\entry{shared lock}{174}{shared lock} +\entry{read lock}{174}{read lock} +\entry{interrupt-driven input}{177}{interrupt-driven input} +\entry{current working directory}{179}{current working directory} +\entry{working directory}{179}{working directory} +\entry{change working directory}{179}{change working directory} +\entry{accessing directories}{181}{accessing directories} +\entry{reading from a directory}{181}{reading from a directory} +\entry{directories, accessing}{181}{directories, accessing} +\entry{directory stream}{181}{directory stream} +\entry{hard link}{187}{hard link} +\entry{link, hard}{187}{link, hard} +\entry{multiple names for one file}{187}{multiple names for one file} +\entry{file names, multiple}{187}{file names, multiple} +\entry{soft link}{188}{soft link} +\entry{link, soft}{188}{link, soft} +\entry{symbolic link}{188}{symbolic link} +\entry{link, symbolic}{188}{link, symbolic} +\entry{deleting a file}{190}{deleting a file} +\entry{removing a file}{190}{removing a file} +\entry{unlinking a file}{190}{unlinking a file} +\entry{directories, deleting}{191}{directories, deleting} +\entry{deleting a directory}{191}{deleting a directory} +\entry{renaming a file}{191}{renaming a file} +\entry{creating a directory}{192}{creating a directory} +\entry{directories, creating}{192}{directories, creating} +\entry{status of a file}{193}{status of a file} +\entry{attributes of a file}{193}{attributes of a file} +\entry{file attributes}{193}{file attributes} +\entry{inode number}{196}{inode number} +\entry{file owner}{198}{file owner} +\entry{owner of a file}{198}{owner of a file} +\entry{group owner of a file}{198}{group owner of a file} +\entry{file permission bits}{200}{file permission bits} +\entry{sticky bit}{201}{sticky bit} +\entry{permission to access a file}{202}{permission to access a file} +\entry{access permission for a file}{202}{access permission for a file} +\entry{file access permission}{202}{file access permission} +\entry{file creation mask}{202}{file creation mask} +\entry{umask}{202}{umask} +\entry{testing access permission}{204}{testing access permission} +\entry{access, testing for}{204}{access, testing for} +\entry{setuid programs and file access}{204}{setuid programs and file access} +\entry{file access time}{206}{file access time} +\entry{file modification time}{206}{file modification time} +\entry{file attribute modification time}{206}{file attribute modification time} +\entry{creating special files}{208}{creating special files} +\entry{special files}{208}{special files} +\entry{TMPDIR environment variable}{210}{TMPDIR environment variable} +\entry{pipe}{213}{pipe} +\entry{FIFO special file}{213}{FIFO special file} +\entry{creating a pipe}{213}{creating a pipe} +\entry{opening a pipe}{213}{opening a pipe} +\entry{interprocess communication, with pipes}{213}{interprocess communication, with pipes} +\entry{creating a pipe to a subprocess}{215}{creating a pipe to a subprocess} +\entry{pipe to a subprocess}{215}{pipe to a subprocess} +\entry{filtering i/o through subprocess}{215}{filtering i/o through subprocess} +\entry{creating a FIFO special file}{217}{creating a FIFO special file} +\entry{interprocess communication, with FIFO}{217}{interprocess communication, with FIFO} +\entry{socket}{219}{socket} +\entry{interprocess communication, with sockets}{219}{interprocess communication, with sockets} +\entry{communication style (of a socket)}{219}{communication style (of a socket)} +\entry{style of communication (of a socket)}{219}{style of communication (of a socket)} +\entry{packet}{219}{packet} +\entry{byte stream}{219}{byte stream} +\entry{stream (sockets)}{219}{stream (sockets)} +\entry{loss of data on sockets}{219}{loss of data on sockets} +\entry{data loss on sockets}{219}{data loss on sockets} +\entry{namespace (of socket)}{219}{namespace (of socket)} +\entry{domain (of socket)}{219}{domain (of socket)} +\entry{socket namespace}{219}{socket namespace} +\entry{socket domain}{219}{socket domain} +\entry{network protocol}{220}{network protocol} +\entry{protocol (of socket)}{220}{protocol (of socket)} +\entry{socket protocol}{220}{socket protocol} +\entry{protocol family}{220}{protocol family} +\entry{address of socket}{221}{address of socket} +\entry{name of socket}{221}{name of socket} +\entry{binding a socket address}{221}{binding a socket address} +\entry{socket address (name) binding}{221}{socket address (name) binding} +\entry{file namespace, for sockets}{224}{file namespace, for sockets} +\entry{Internet namespace, for sockets}{227}{Internet namespace, for sockets} +\entry{host address, Internet}{228}{host address, Internet} +\entry{Internet host address}{228}{Internet host address} +\entry{network number}{228}{network number} +\entry{local network address number}{228}{local network address number} +\entry{standard dot notation, for Internet addresses}{229}{standard dot notation, for Internet addresses} +\entry{dot notation, for Internet addresses}{229}{dot notation, for Internet addresses} +\entry{hosts database}{231}{hosts database} +\entry{converting host name to address}{231}{converting host name to address} +\entry{converting host address to name}{231}{converting host address to name} +\entry{port number}{233}{port number} +\entry{services database}{234}{services database} +\entry{converting service name to port number}{234}{converting service name to port number} +\entry{converting port number to service name}{234}{converting port number to service name} +\entry{byte order conversion, for socket}{235}{byte order conversion, for socket} +\entry{converting byte order}{235}{converting byte order} +\entry{big-endian}{235}{big-endian} +\entry{little-endian}{235}{little-endian} +\entry{network byte order}{236}{network byte order} +\entry{protocols database}{236}{protocols database} +\entry{TCP (Internet protocol)}{236}{TCP (Internet protocol)} +\entry{creating a socket}{240}{creating a socket} +\entry{socket, creating}{240}{socket, creating} +\entry{opening a socket}{240}{opening a socket} +\entry{socket, closing}{241}{socket, closing} +\entry{closing a socket}{241}{closing a socket} +\entry{shutting down a socket}{241}{shutting down a socket} +\entry{socket shutdown}{241}{socket shutdown} +\entry{creating a socket pair}{241}{creating a socket pair} +\entry{socket pair}{241}{socket pair} +\entry{opening a socket pair}{241}{opening a socket pair} +\entry{connection}{242}{connection} +\entry{client}{242}{client} +\entry{server}{242}{server} +\entry{connecting a socket}{242}{connecting a socket} +\entry{socket, connecting}{242}{socket, connecting} +\entry{socket, initiating a connection}{242}{socket, initiating a connection} +\entry{socket, client actions}{242}{socket, client actions} +\entry{listening (sockets)}{244}{listening (sockets)} +\entry{sockets, server actions}{244}{sockets, server actions} +\entry{sockets, listening}{244}{sockets, listening} +\entry{sockets, accepting connections}{245}{sockets, accepting connections} +\entry{accepting connections}{245}{accepting connections} +\entry{reading from a socket}{246}{reading from a socket} +\entry{writing to a socket}{246}{writing to a socket} +\entry{out-of-band data}{253}{out-of-band data} +\entry{high-priority data}{253}{high-priority data} +\entry{urgent socket condition}{253}{urgent socket condition} +\entry{datagram socket}{256}{datagram socket} +\entry{sending a datagram}{256}{sending a datagram} +\entry{transmitting datagrams}{256}{transmitting datagrams} +\entry{datagrams, transmitting}{256}{datagrams, transmitting} +\entry{receiving datagrams}{257}{receiving datagrams} +\entry{socket options}{262}{socket options} +\entry{level, for socket options}{262}{level, for socket options} +\entry{socket option level}{262}{socket option level} +\entry{networks database}{265}{networks database} +\entry{converting network number to network name}{265}{converting network number to network name} +\entry{converting network name to network number}{265}{converting network name to network number} +\entry{terminal identification}{267}{terminal identification} +\entry{identifying terminals}{267}{identifying terminals} +\entry{terminal input queue}{267}{terminal input queue} +\entry{typeahead buffer}{267}{typeahead buffer} +\entry{terminal output queue}{268}{terminal output queue} +\entry{canonical input processing}{268}{canonical input processing} +\entry{noncanonical input processing}{268}{noncanonical input processing} +\entry{terminal mode data types}{269}{terminal mode data types} +\entry{terminal mode functions}{270}{terminal mode functions} +\entry{parity checking}{273}{parity checking} +\entry{break condition, detecting}{274}{break condition, detecting} +\entry{modem status lines}{276}{modem status lines} +\entry{carrier detect}{276}{carrier detect} +\entry{modem disconnect}{276}{modem disconnect} +\entry{echo of terminal input}{278}{echo of terminal input} +\entry{interactive signals, from terminal}{279}{interactive signals, from terminal} +\entry{line speed}{280}{line speed} +\entry{baud rate}{280}{baud rate} +\entry{terminal line speed}{280}{terminal line speed} +\entry{terminal line speed}{280}{terminal line speed} +\entry{EOF character}{283}{EOF character} +\entry{EOL character}{283}{EOL character} +\entry{EOL2 character}{283}{EOL2 character} +\entry{ERASE character}{283}{ERASE character} +\entry{WERASE character}{284}{WERASE character} +\entry{KILL character}{284}{KILL character} +\entry{REPRINT character}{284}{REPRINT character} +\entry{INTR character}{284}{INTR character} +\entry{interrupt character}{284}{interrupt character} +\entry{QUIT character}{285}{QUIT character} +\entry{SUSP character}{285}{SUSP character} +\entry{suspend character}{285}{suspend character} +\entry{DSUSP character}{285}{DSUSP character} +\entry{delayed suspend character}{285}{delayed suspend character} +\entry{START character}{286}{START character} +\entry{STOP character}{286}{STOP character} +\entry{LNEXT character}{286}{LNEXT character} +\entry{DISCARD character}{287}{DISCARD character} +\entry{STATUS character}{287}{STATUS character} +\entry{MIN termios slot}{287}{MIN termios slot} +\entry{TIME termios slot}{287}{TIME termios slot} +\entry{terminal line control functions}{289}{terminal line control functions} +\entry{break condition, generating}{289}{break condition, generating} +\entry{flushing terminal output queue}{289}{flushing terminal output queue} +\entry{terminal output queue, flushing}{289}{terminal output queue, flushing} +\entry{clearing terminal input queue}{290}{clearing terminal input queue} +\entry{terminal input queue, clearing}{290}{terminal input queue, clearing} +\entry{flow control, terminal}{290}{flow control, terminal} +\entry{terminal flow control}{290}{terminal flow control} +\entry{domain error}{293}{domain error} +\entry{range error}{293}{range error} +\entry{trigonometric functions}{294}{trigonometric functions} +\entry{pi (trigonometric constant)}{294}{pi (trigonometric constant)} +\entry{inverse trigonometric functions}{295}{inverse trigonometric functions} +\entry{exponentiation functions}{296}{exponentiation functions} +\entry{power functions}{296}{power functions} +\entry{logarithm functions}{296}{logarithm functions} +\entry{square root function}{296}{square root function} +\entry{cube root function}{296}{cube root function} +\entry{hyperbolic functions}{297}{hyperbolic functions} +\entry{inverse hyperbolic functions}{297}{inverse hyperbolic functions} +\entry{random numbers}{298}{random numbers} +\entry{pseudo-random numbers}{298}{pseudo-random numbers} +\entry{seed (for random numbers)}{298}{seed (for random numbers)} +\entry{NaN}{301}{NaN} +\entry{not a number}{301}{not a number} +\entry{IEEE floating point}{301}{IEEE floating point} +\entry{absolute value functions}{302}{absolute value functions} +\entry{normalization functions (floating-point)}{303}{normalization functions (floating-point)} +\entry{rounding functions}{304}{rounding functions} +\entry{remainder functions}{304}{remainder functions} +\entry{converting floats to integers}{304}{converting floats to integers} +\entry{integer division functions}{305}{integer division functions} +\entry{parsing numbers (in formatted input)}{306}{parsing numbers (in formatted input)} +\entry{converting strings to numbers}{306}{converting strings to numbers} +\entry{number syntax, parsing}{306}{number syntax, parsing} +\entry{syntax, for reading numbers}{306}{syntax, for reading numbers} +\entry{Comparison Function}{313}{Comparison Function} +\entry{search function (for arrays)}{313}{search function (for arrays)} +\entry{binary search function (for arrays)}{313}{binary search function (for arrays)} +\entry{array search function}{313}{array search function} +\entry{sort function (for arrays)}{314}{sort function (for arrays)} +\entry{quick sort function (for arrays)}{314}{quick sort function (for arrays)} +\entry{array sort function}{314}{array sort function} +\entry{stable sorting}{314}{stable sorting} +\entry{Kermit the frog}{317}{Kermit the frog} +\entry{globbing}{320}{globbing} +\entry{word expansion}{329}{word expansion} +\entry{expansion of shell words}{329}{expansion of shell words} +\entry{tilde expansion}{330}{tilde expansion} +\entry{variable substitution}{330}{variable substitution} +\entry{substitution of variables and commands}{330}{substitution of variables and commands} +\entry{command substitution}{330}{command substitution} +\entry{arithmetic expansion}{330}{arithmetic expansion} +\entry{field splitting}{330}{field splitting} +\entry{wildcard expansion}{330}{wildcard expansion} +\entry{quote removal}{330}{quote removal} +\entry{removal of quotes}{330}{removal of quotes} +\entry{CPU time}{335}{CPU time} +\entry{processor time}{335}{processor time} +\entry{clock ticks}{335}{clock ticks} +\entry{ticks, clock}{335}{ticks, clock} +\entry{time, elapsed CPU}{335}{time, elapsed CPU} +\entry{Gregorian calendar}{337}{Gregorian calendar} +\entry{time, calendar}{337}{time, calendar} +\entry{date and time}{337}{date and time} +\entry{calendar time}{337}{calendar time} +\entry{high-resolution time}{337}{high-resolution time} +\entry{local time}{337}{local time} +\entry{broken-down time}{337}{broken-down time} +\entry{epoch}{338}{epoch} +\entry{broken-down time}{341}{broken-down time} +\entry{calendar time and broken-down time}{341}{calendar time and broken-down time} +\entry{leap second}{341}{leap second} +\entry{Daylight Saving Time}{342}{Daylight Saving Time} +\entry{summer time}{342}{summer time} +\entry{time zone}{348}{time zone} +\entry{time zone database}{350}{time zone database} +\entry{setting an alarm}{352}{setting an alarm} +\entry{interval timer, setting}{352}{interval timer, setting} +\entry{alarms, setting}{352}{alarms, setting} +\entry{timers, setting}{352}{timers, setting} +\entry{real-time timer}{352}{real-time timer} +\entry{timer, real-time}{352}{timer, real-time} +\entry{virtual timer}{352}{virtual timer} +\entry{timer, virtual}{352}{timer, virtual} +\entry{profiling timer}{352}{profiling timer} +\entry{timer, profiling}{352}{timer, profiling} +\entry{resource limits}{358}{resource limits} +\entry{limits on resource usage}{358}{limits on resource usage} +\entry{usage limits}{358}{usage limits} +\entry{soft limit}{358}{soft limit} +\entry{hard limit}{358}{hard limit} +\entry{process priority}{360}{process priority} +\entry{priority of a process}{360}{priority of a process} +\entry{extended character sets}{363}{extended character sets} +\entry{wide characters}{363}{wide characters} +\entry{multibyte characters}{364}{multibyte characters} +\entry{basic byte sequence}{364}{basic byte sequence} +\entry{code, character}{367}{code, character} +\entry{character code}{367}{character code} +\entry{extended strings, converting representations}{368}{extended strings, converting representations} +\entry{converting extended strings}{368}{converting extended strings} +\entry{multibyte character, length of}{369}{multibyte character, length of} +\entry{length of multibyte character}{369}{length of multibyte character} +\entry{extended characters, converting}{370}{extended characters, converting} +\entry{converting extended characters}{370}{converting extended characters} +\entry{internationalization}{375}{internationalization} +\entry{locales}{375}{locales} +\entry{combining locales}{376}{combining locales} +\entry{categories for locales}{376}{categories for locales} +\entry{locale categories}{376}{locale categories} +\entry{changing the locale}{377}{changing the locale} +\entry{locale, changing}{377}{locale, changing} +\entry{monetary value formatting}{379}{monetary value formatting} +\entry{numeric value formatting}{379}{numeric value formatting} +\entry{decimal-point separator}{380}{decimal-point separator} +\entry{grouping of digits}{380}{grouping of digits} +\entry{currency symbols}{381}{currency symbols} +\entry{non-local exits}{385}{non-local exits} +\entry{long jumps}{385}{long jumps} +\entry{signal}{389}{signal} +\entry{generation of signals}{390}{generation of signals} +\entry{delivery of signals}{390}{delivery of signals} +\entry{pending signals}{390}{pending signals} +\entry{blocked signals}{390}{blocked signals} +\entry{specified action (for a signal)}{391}{specified action (for a signal)} +\entry{default action (for a signal)}{391}{default action (for a signal)} +\entry{signal action}{391}{signal action} +\entry{catching signals}{391}{catching signals} +\entry{signal names}{391}{signal names} +\entry{names of signals}{391}{names of signals} +\entry{signal number}{391}{signal number} +\entry{program error signals}{392}{program error signals} +\entry{exception}{393}{exception} +\entry{floating-point exception}{393}{floating-point exception} +\entry{illegal instruction}{394}{illegal instruction} +\entry{segmentation violation}{394}{segmentation violation} +\entry{bus error}{394}{bus error} +\entry{abort signal}{394}{abort signal} +\entry{program termination signals}{395}{program termination signals} +\entry{termination signal}{395}{termination signal} +\entry{interrupt signal}{395}{interrupt signal} +\entry{quit signal}{396}{quit signal} +\entry{quit signal}{396}{quit signal} +\entry{kill signal}{396}{kill signal} +\entry{hangup signal}{396}{hangup signal} +\entry{alarm signal}{397}{alarm signal} +\entry{virtual time alarm signal}{397}{virtual time alarm signal} +\entry{profiling alarm signal}{397}{profiling alarm signal} +\entry{input available signal}{397}{input available signal} +\entry{output possible signal}{397}{output possible signal} +\entry{urgent data signal}{397}{urgent data signal} +\entry{job control signals}{398}{job control signals} +\entry{child process signal}{398}{child process signal} +\entry{continue signal}{398}{continue signal} +\entry{stop signal}{398}{stop signal} +\entry{interactive stop signal}{399}{interactive stop signal} +\entry{terminal input signal}{399}{terminal input signal} +\entry{terminal output signal}{399}{terminal output signal} +\entry{pipe signal}{400}{pipe signal} +\entry{broken pipe signal}{400}{broken pipe signal} +\entry{lost resource signal}{400}{lost resource signal} +\entry{user signals}{400}{user signals} +\entry{signal messages}{401}{signal messages} +\entry{signal actions}{402}{signal actions} +\entry{establishing a handler}{402}{establishing a handler} +\entry{signal function}{402}{\code {signal} function} +\entry{default action for a signal}{403}{default action for a signal} +\entry{ignore action for a signal}{403}{ignore action for a signal} +\entry{sigaction function}{404}{\code {sigaction} function} +\entry{signal flags}{408}{signal flags} +\entry{flags for sigaction}{408}{flags for \code {sigaction}} +\entry{sigaction flags}{408}{\code {sigaction} flags} +\entry{initial signal actions}{409}{initial signal actions} +\entry{signal handler function}{409}{signal handler function} +\entry{non-local exit, from signal handler}{412}{non-local exit, from signal handler} +\entry{race conditions, relating to signals}{413}{race conditions, relating to signals} +\entry{handling multiple signals}{414}{handling multiple signals} +\entry{successive signals}{414}{successive signals} +\entry{merging of signals}{414}{merging of signals} +\entry{restrictions on signal handler functions}{417}{restrictions on signal handler functions} +\entry{volatile declarations}{417}{\code {volatile} declarations} +\entry{reentrant functions}{417}{reentrant functions} +\entry{EINTR, and restarting interrupted primitives}{422}{EINTR, and restarting interrupted primitives} +\entry{restarting interrupted primitives}{422}{restarting interrupted primitives} +\entry{interrupting primitives}{422}{interrupting primitives} +\entry{primitives, interrupting}{422}{primitives, interrupting} +\entry{sending signals}{422}{sending signals} +\entry{raising signals}{422}{raising signals} +\entry{signals, generating}{422}{signals, generating} +\entry{killing a process}{424}{killing a process} +\entry{interprocess communication, with signals}{426}{interprocess communication, with signals} +\entry{blocking signals}{427}{blocking signals} +\entry{signal set}{428}{signal set} +\entry{signal mask}{429}{signal mask} +\entry{process signal mask}{429}{process signal mask} +\entry{blocking signals, in a handler}{432}{blocking signals, in a handler} +\entry{pending signals, checking for}{433}{pending signals, checking for} +\entry{blocked signals, checking for}{433}{blocked signals, checking for} +\entry{checking for pending signals}{433}{checking for pending signals} +\entry{timing error in signal handling}{435}{timing error in signal handling} +\entry{waiting for a signal}{435}{waiting for a signal} +\entry{pause function}{435}{\code {pause} function} +\entry{process}{443}{process} +\entry{program arguments}{443}{program arguments} +\entry{command line arguments}{443}{command line arguments} +\entry{arguments, to program}{443}{arguments, to program} +\entry{program startup}{443}{program startup} +\entry{startup of program}{443}{startup of program} +\entry{invocation of program}{443}{invocation of program} +\entry{main function}{443}{\code {main} function} +\entry{argc (program argument count)}{443}{argc (program argument count)} +\entry{argv (program argument vector)}{443}{argv (program argument vector)} +\entry{program argument syntax}{444}{program argument syntax} +\entry{syntax, for program arguments}{444}{syntax, for program arguments} +\entry{command argument syntax}{444}{command argument syntax} +\entry{long-named options}{444}{long-named options} +\entry{program arguments, parsing}{445}{program arguments, parsing} +\entry{command arguments, parsing}{445}{command arguments, parsing} +\entry{parsing program arguments}{445}{parsing program arguments} +\entry{environment variable}{454}{environment variable} +\entry{environment}{455}{environment} +\entry{environment access}{455}{environment access} +\entry{environment representation}{455}{environment representation} +\entry{standard environment variables}{456}{standard environment variables} +\entry{HOME environment variable}{456}{HOME environment variable} +\entry{home directory}{456}{home directory} +\entry{LOGNAME environment variable}{456}{LOGNAME environment variable} +\entry{PATH environment variable}{456}{PATH environment variable} +\entry{TERM environment variable}{457}{TERM environment variable} +\entry{TZ environment variable}{457}{TZ environment variable} +\entry{LANG environment variable}{457}{LANG environment variable} +\entry{LC{\_}COLLATE environment variable}{457}{LC_COLLATE environment variable} +\entry{LC{\_}CTYPE environment variable}{457}{LC_CTYPE environment variable} +\entry{LC{\_}MONETARY environment variable}{457}{LC_MONETARY environment variable} +\entry{LC{\_}NUMERIC environment variable}{457}{LC_NUMERIC environment variable} +\entry{LC{\_}TIME environment variable}{458}{LC_TIME environment variable} +\entry{{\_}POSIX{\_}OPTION{\_}ORDER environment variable.}{458}{_POSIX_OPTION_ORDER environment variable.} +\entry{program termination}{458}{program termination} +\entry{process termination}{458}{process termination} +\entry{exit status value}{458}{exit status value} +\entry{exit status}{459}{exit status} +\entry{aborting a program}{461}{aborting a program} +\entry{process}{463}{process} +\entry{child process}{463}{child process} +\entry{parent process}{463}{parent process} +\entry{running a command}{463}{running a command} +\entry{process ID}{464}{process ID} +\entry{process lifetime}{464}{process lifetime} +\entry{creating a process}{464}{creating a process} +\entry{forking a process}{464}{forking a process} +\entry{child process}{464}{child process} +\entry{parent process}{464}{parent process} +\entry{process image}{464}{process image} +\entry{executing a file}{466}{executing a file} +\entry{exec functions}{466}{\code {exec} functions} +\entry{process completion}{469}{process completion} +\entry{waiting for completion of child process}{469}{waiting for completion of child process} +\entry{testing exit status of child process}{469}{testing exit status of child process} +\entry{process groups}{475}{process groups} +\entry{job control}{475}{job control} +\entry{job}{475}{job} +\entry{session}{475}{session} +\entry{shell}{475}{shell} +\entry{session}{475}{session} +\entry{session leader}{475}{session leader} +\entry{controlling terminal}{475}{controlling terminal} +\entry{foreground job}{476}{foreground job} +\entry{background job}{476}{background job} +\entry{stopped job}{476}{stopped job} +\entry{job control is optional}{476}{job control is optional} +\entry{controlling process}{477}{controlling process} +\entry{controlling terminal, access to}{477}{controlling terminal, access to} +\entry{SIGTTIN, from background job}{477}{\code {SIGTTIN}, from background job} +\entry{SIGTTOU, from background job}{477}{\code {SIGTTOU}, from background job} +\entry{orphaned process group}{477}{orphaned process group} +\entry{job control, enabling}{480}{job control, enabling} +\entry{subshell}{480}{subshell} +\entry{job control, enabling}{480}{job control, enabling} +\entry{launching jobs}{482}{launching jobs} +\entry{process group leader}{482}{process group leader} +\entry{process group ID}{482}{process group ID} +\entry{race conditions, relating to job control}{482}{race conditions, relating to job control} +\entry{foreground job, launching}{486}{foreground job, launching} +\entry{background job, launching}{487}{background job, launching} +\entry{stopped jobs, detecting}{488}{stopped jobs, detecting} +\entry{terminated jobs, detecting}{488}{terminated jobs, detecting} +\entry{SIGCHLD, handling of}{488}{\code {SIGCHLD}, handling of} +\entry{stopped jobs, continuing}{492}{stopped jobs, continuing} +\entry{process group functions}{493}{process group functions} +\entry{job control functions}{493}{job control functions} +\entry{controlling terminal, determining}{493}{controlling terminal, determining} +\entry{BSD compatibility library}{494}{BSD compatibility library} +\entry{Name Service Switch}{497}{Name Service Switch} +\entry{NSS}{497}{NSS} +\entry{databases}{497}{databases} +\entry{ethers}{497}{ethers} +\entry{group}{497}{group} +\entry{hosts}{497}{hosts} +\entry{netgroup}{497}{netgroup} +\entry{network}{497}{network} +\entry{protocols}{497}{protocols} +\entry{passwd}{497}{passwd} +\entry{rpc}{497}{rpc} +\entry{services}{497}{services} +\entry{shadow}{497}{shadow} +\entry{/etc/nsswitch.conf}{498}{\file {/etc/nsswitch.conf}} +\entry{nsswitch.conf}{498}{\file {nsswitch.conf}} +\entry{DNS server unavailable}{499}{DNS server unavailable} +\entry{nisplus, and completeness}{500}{nisplus, and completeness} +\entry{nisplus, and booting}{500}{nisplus, and booting} +\entry{bootstrapping, and services}{500}{bootstrapping, and services} +\entry{default value, and NSS}{500}{default value, and NSS} +\entry{optimizing NSS}{501}{optimizing NSS} +\entry{reentrant NSS functions}{501}{reentrant NSS functions} +\entry{login name}{507}{login name} +\entry{user name}{507}{user name} +\entry{user ID}{507}{user ID} +\entry{group name}{507}{group name} +\entry{group ID}{507}{group ID} +\entry{persona}{507}{persona} +\entry{effective user ID}{507}{effective user ID} +\entry{effective group ID}{507}{effective group ID} +\entry{real user ID}{507}{real user ID} +\entry{real group ID}{507}{real group ID} +\entry{supplementary group IDs}{508}{supplementary group IDs} +\entry{setuid programs}{509}{\code {setuid} programs} +\entry{login name, determining}{516}{login name, determining} +\entry{user ID, determining}{516}{user ID, determining} +\entry{user database}{517}{user database} +\entry{password database}{517}{password database} +\entry{converting user ID to user name}{518}{converting user ID to user name} +\entry{converting user name to user ID}{518}{converting user name to user ID} +\entry{scanning the user list}{519}{scanning the user list} +\entry{group database}{521}{group database} +\entry{converting group name to group ID}{521}{converting group name to group ID} +\entry{converting group ID to group name}{521}{converting group ID to group name} +\entry{scanning the group list}{523}{scanning the group list} +\entry{Netgroup}{524}{Netgroup} +\entry{POSIX capacity limits}{533}{POSIX capacity limits} +\entry{limits, POSIX}{533}{limits, POSIX} +\entry{capacity limits, POSIX}{533}{capacity limits, POSIX} +\entry{limits, program argument size}{533}{limits, program argument size} +\entry{limits, number of processes}{533}{limits, number of processes} +\entry{limits, number of open files}{533}{limits, number of open files} +\entry{limits, time zone name length}{534}{limits, time zone name length} +\entry{limits, number of supplementary group IDs}{534}{limits, number of supplementary group IDs} +\entry{POSIX optional features}{534}{POSIX optional features} +\entry{optional POSIX features}{534}{optional POSIX features} +\entry{limits, link count of files}{541}{limits, link count of files} +\entry{limits, terminal input queue}{541}{limits, terminal input queue} +\entry{limits, file name length}{541}{limits, file name length} +\entry{limits, pipe buffer size}{542}{limits, pipe buffer size} +\entry{consistency checking}{549}{consistency checking} +\entry{impossible events}{549}{impossible events} +\entry{assertions}{549}{assertions} +\entry{variable number of arguments}{551}{variable number of arguments} +\entry{variadic functions}{551}{variadic functions} +\entry{optional arguments}{551}{optional arguments} +\entry{function prototypes (variadic)}{552}{function prototypes (variadic)} +\entry{prototypes for variadic functions}{552}{prototypes for variadic functions} +\entry{variadic function prototypes}{552}{variadic function prototypes} +\entry{variadic function argument access}{552}{variadic function argument access} +\entry{arguments (variadic functions)}{552}{arguments (variadic functions)} +\entry{number of arguments passed}{553}{number of arguments passed} +\entry{how many arguments}{553}{how many arguments} +\entry{arguments, how many}{553}{arguments, how many} +\entry{variadic functions, calling}{554}{variadic functions, calling} +\entry{calling variadic functions}{554}{calling variadic functions} +\entry{declaring variadic functions}{554}{declaring variadic functions} +\entry{default argument promotions}{554}{default argument promotions} +\entry{argument promotion}{554}{argument promotion} +\entry{null pointer constant}{557}{null pointer constant} +\entry{integer type width}{559}{integer type width} +\entry{width of integer type}{559}{width of integer type} +\entry{type measurements, integer}{559}{type measurements, integer} +\entry{integer type range}{559}{integer type range} +\entry{range of integer type}{559}{range of integer type} +\entry{limits, integer types}{559}{limits, integer types} +\entry{floating type measurements}{561}{floating type measurements} +\entry{measurements of floating types}{561}{measurements of floating types} +\entry{type measurements, floating}{561}{type measurements, floating} +\entry{limits, floating types}{561}{limits, floating types} +\entry{sign (of floating point number)}{561}{sign (of floating point number)} +\entry{base (of floating point number)}{561}{base (of floating point number)} +\entry{radix (of floating point number)}{561}{radix (of floating point number)} +\entry{exponent (of floating point number)}{561}{exponent (of floating point number)} +\entry{bias (of floating point number exponent)}{561}{bias (of floating point number exponent)} +\entry{mantissa (of floating point number)}{562}{mantissa (of floating point number)} +\entry{significand (of floating point number)}{562}{significand (of floating point number)} +\entry{precision (of floating point number)}{562}{precision (of floating point number)} +\entry{hidden bit (of floating point number mantissa)}{562}{hidden bit (of floating point number mantissa)} +\entry{normalized floating point number}{562}{normalized floating point number} +\entry{IEEE floating point representation}{566}{IEEE floating point representation} +\entry{floating point, IEEE}{566}{floating point, IEEE} +\entry{installing the library}{663}{installing the library} +\entry{installation tools}{665}{installation tools} +\entry{tools, for installing library}{665}{tools, for installing library} +\entry{configurations, all supported}{666}{configurations, all supported} +\entry{reporting bugs}{667}{reporting bugs} +\entry{bugs, reporting}{667}{bugs, reporting} diff -durpN glibc-2.0.1/manual/libc.cps glibc-2.0.2/manual/libc.cps --- glibc-2.0.1/manual/libc.cps Mon Nov 4 17:58:25 1996 +++ glibc-2.0.2/manual/libc.cps Tue Mar 18 22:30:15 1997 @@ -1,25 +1,25 @@ \initial {/} -\entry {\file {/etc/nsswitch.conf}}{494} +\entry {\file {/etc/nsswitch.conf}}{498} \initial {{\_}} -\entry {{\_}POSIX{\_}OPTION{\_}ORDER environment variable.}{451} +\entry {_POSIX_OPTION_ORDER environment variable.}{458} \initial {4} \entry {4.\var {n} BSD Unix}{3} \initial {A} -\entry {abort signal}{388} -\entry {aborting a program}{454} -\entry {absolute file name}{84} -\entry {absolute value functions}{296} -\entry {accepting connections}{239} -\entry {access permission for a file}{196} -\entry {access, testing for}{199} -\entry {accessing directories}{177} -\entry {address of socket}{215} -\entry {alarm signal}{391} -\entry {alarms, setting}{346} -\entry {alignment (in obstacks)}{50} +\entry {abort signal}{394} +\entry {aborting a program}{461} +\entry {absolute file name}{86} +\entry {absolute value functions}{302} +\entry {accepting connections}{245} +\entry {access permission for a file}{202} +\entry {access, testing for}{204} +\entry {accessing directories}{181} +\entry {address of socket}{221} +\entry {alarm signal}{397} +\entry {alarms, setting}{352} +\entry {alignment (in obstacks)}{51} \entry {alignment (with \code {malloc})}{37} -\entry {\code {alloca} disadvantages}{55} -\entry {\code {alloca} function}{53} +\entry {\code {alloca} disadvantages}{56} +\entry {\code {alloca} function}{54} \entry {allocation (obstacks)}{44} \entry {allocation hooks, for \code {malloc}}{39} \entry {allocation of memory with \code {malloc}}{32} @@ -27,826 +27,822 @@ \entry {allocation statistics}{40} \entry {alphabetic character}{59} \entry {alphanumeric character}{60} -\entry {ANSI C}{2} -\entry {append-access files}{83} -\entry {argc (program argument count)}{437} -\entry {argument promotion}{550} -\entry {arguments (variadic functions)}{548} -\entry {arguments, how many}{549} -\entry {arguments, to program}{437} -\entry {argv (program argument vector)}{437} -\entry {arithmetic expansion}{324} +\entry {append-access files}{85} +\entry {argc (program argument count)}{443} +\entry {argument promotion}{554} +\entry {arguments (variadic functions)}{552} +\entry {arguments, how many}{553} +\entry {arguments, to program}{443} +\entry {argv (program argument vector)}{443} +\entry {arithmetic expansion}{330} \entry {array comparison functions}{70} \entry {array copy functions}{65} -\entry {array search function}{307} -\entry {array sort function}{308} +\entry {array search function}{313} +\entry {array sort function}{314} \entry {ASCII character}{61} -\entry {assertions}{545} -\entry {attributes of a file}{188} +\entry {assertions}{549} +\entry {attributes of a file}{193} \entry {automatic allocation}{31} -\entry {automatic freeing}{53} -\entry {automatic storage with variable size}{53} +\entry {automatic freeing}{54} +\entry {automatic storage with variable size}{54} \initial {B} -\entry {background job}{472} -\entry {background job, launching}{482} -\entry {base (of floating point number)}{557} -\entry {basic byte sequence}{358} -\entry {baud rate}{274} +\entry {background job}{476} +\entry {background job, launching}{487} +\entry {base (of floating point number)}{561} +\entry {basic byte sequence}{364} +\entry {baud rate}{280} \entry {Berkeley Unix}{3} -\entry {bias (of floating point number exponent)}{557} -\entry {big-endian}{230} -\entry {binary I/O to a stream}{99} -\entry {binary search function (for arrays)}{307} -\entry {binary stream}{131} -\entry {binding a socket address}{215} +\entry {bias (of floating point number exponent)}{561} +\entry {big-endian}{235} +\entry {binary I/O to a stream}{102} +\entry {binary search function (for arrays)}{313} +\entry {binary stream}{134} +\entry {binding a socket address}{221} \entry {blank character}{60} -\entry {block I/O to a stream}{99} -\entry {blocked signals}{384} -\entry {blocked signals, checking for}{425} -\entry {blocking signals}{420} -\entry {blocking signals, in a handler}{424} -\entry {bootstrapping, and services}{496} -\entry {break condition, detecting}{268} -\entry {break condition, generating}{283} +\entry {block I/O to a stream}{102} +\entry {blocked signals}{390} +\entry {blocked signals, checking for}{433} +\entry {blocking signals}{427} +\entry {blocking signals, in a handler}{432} +\entry {bootstrapping, and services}{500} +\entry {break condition, detecting}{274} +\entry {break condition, generating}{289} \entry {breaking a string into tokens}{78} -\entry {broken pipe signal}{394} -\entry {broken-down time}{331, 335} -\entry {BSD compatibility library}{489} +\entry {broken pipe signal}{400} +\entry {broken-down time}{337, 341} +\entry {BSD compatibility library}{494} \entry {BSD compatibility library.}{9} \entry {BSD Unix}{3} -\entry {buffering of streams}{135} -\entry {buffering, controlling}{136} -\entry {bugs, reporting}{663} -\entry {bus error}{388} -\entry {byte order conversion, for socket}{230} -\entry {byte stream}{213} +\entry {buffering of streams}{138} +\entry {buffering, controlling}{139} +\entry {bugs, reporting}{667} +\entry {bus error}{394} +\entry {byte order conversion, for socket}{235} +\entry {byte stream}{219} \initial {C} -\entry {calendar time}{331} -\entry {calendar time and broken-down time}{335} -\entry {calling variadic functions}{550} -\entry {canonical input processing}{262} -\entry {capacity limits, POSIX}{529} -\entry {carrier detect}{270} +\entry {calendar time}{337} +\entry {calendar time and broken-down time}{341} +\entry {calling variadic functions}{554} +\entry {canonical input processing}{268} +\entry {capacity limits, POSIX}{533} +\entry {carrier detect}{276} \entry {case conversion of characters}{61} -\entry {catching signals}{385} -\entry {categories for locales}{370} -\entry {change working directory}{175} -\entry {changing the locale}{371} +\entry {catching signals}{391} +\entry {categories for locales}{376} +\entry {change working directory}{179} +\entry {changing the locale}{377} \entry {changing the size of a block (\code {malloc})}{35} \entry {changing the size of a block (obstacks)}{46} -\entry {channels}{154} +\entry {channels}{158} \entry {character case conversion}{61} -\entry {character code}{361} +\entry {character code}{367} \entry {character predicates}{59} \entry {character testing}{59} -\entry {checking for pending signals}{425} -\entry {child process}{457, 458} -\entry {child process signal}{392} -\entry {chunks}{50} +\entry {checking for pending signals}{433} +\entry {child process}{463, 464} +\entry {child process signal}{398} +\entry {chunks}{51} \entry {classification of characters}{59} -\entry {cleaning up a stream}{154} -\entry {clearing terminal input queue}{284} -\entry {client}{236} -\entry {clock ticks}{329} -\entry {close-on-exec (file descriptor flag)}{163} -\entry {closing a file descriptor}{145} -\entry {closing a socket}{235} -\entry {closing a stream}{92} -\entry {code, character}{361} -\entry {collating strings}{72} -\entry {combining locales}{370} -\entry {command argument syntax}{438} -\entry {command arguments, parsing}{439} -\entry {command line arguments}{437} -\entry {command substitution}{324} -\entry {communication style (of a socket)}{213} +\entry {cleaning up a stream}{158} +\entry {clearing terminal input queue}{290} +\entry {client}{242} +\entry {clock ticks}{335} +\entry {close-on-exec (file descriptor flag)}{167} +\entry {closing a file descriptor}{149} +\entry {closing a socket}{241} +\entry {closing a stream}{94} +\entry {code, character}{367} +\entry {collating strings}{73} +\entry {combining locales}{376} +\entry {command argument syntax}{444} +\entry {command arguments, parsing}{445} +\entry {command line arguments}{443} +\entry {command substitution}{330} +\entry {communication style (of a socket)}{219} \entry {comparing strings and arrays}{70} -\entry {Comparison Function}{307} +\entry {Comparison Function}{313} \entry {concatenating strings}{65} -\entry {configurations, all supported}{662} -\entry {connecting a socket}{237} -\entry {connection}{236} -\entry {consistency checking}{545} -\entry {consistency checking, of heap}{37} -\entry {continue signal}{392} +\entry {configurations, all supported}{666} +\entry {connecting a socket}{242} +\entry {connection}{242} +\entry {consistency checking}{549} +\entry {consistency checking, of heap}{38} +\entry {continue signal}{398} \entry {control character}{60} -\entry {control operations on files}{159} -\entry {controlling process}{473} -\entry {controlling terminal}{472} -\entry {controlling terminal, access to}{473} -\entry {controlling terminal, determining}{488} -\entry {controlling terminal, setting}{166} -\entry {conversion specifications (\code {printf})}{100} -\entry {conversion specifications (\code {scanf})}{121} -\entry {converting byte order}{230} +\entry {control operations on files}{163} +\entry {controlling process}{477} +\entry {controlling terminal}{475} +\entry {controlling terminal, access to}{477} +\entry {controlling terminal, determining}{493} +\entry {controlling terminal, setting}{170} +\entry {conversion specifications (\code {printf})}{103} +\entry {conversion specifications (\code {scanf})}{125} +\entry {converting byte order}{235} \entry {converting case of characters}{61} -\entry {converting extended characters}{364} -\entry {converting extended strings}{362} -\entry {converting file descriptor to stream}{153} -\entry {converting floats to integers}{298} -\entry {converting group ID to group name}{517} -\entry {converting group name to group ID}{517} -\entry {converting host address to name}{225} -\entry {converting host name to address}{225} -\entry {converting network name to network number}{258} -\entry {converting network number to network name}{258} -\entry {converting port number to service name}{228} -\entry {converting service name to port number}{228} -\entry {converting string to collation order}{73} -\entry {converting strings to numbers}{300} -\entry {converting user ID to user name}{514} -\entry {converting user name to user ID}{514} -\entry {cookie, for custom stream}{142} +\entry {converting extended characters}{370} +\entry {converting extended strings}{368} +\entry {converting file descriptor to stream}{157} +\entry {converting floats to integers}{304} +\entry {converting group ID to group name}{521} +\entry {converting group name to group ID}{521} +\entry {converting host address to name}{231} +\entry {converting host name to address}{231} +\entry {converting network name to network number}{265} +\entry {converting network number to network name}{265} +\entry {converting port number to service name}{234} +\entry {converting service name to port number}{234} +\entry {converting string to collation order}{74} +\entry {converting strings to numbers}{306} +\entry {converting user ID to user name}{518} +\entry {converting user name to user ID}{518} +\entry {cookie, for custom stream}{145} \entry {copying strings and arrays}{65} -\entry {CPU time}{329} -\entry {create on open (file status flag)}{166} -\entry {creating a directory}{187} -\entry {creating a FIFO special file}{210} -\entry {creating a pipe}{207} -\entry {creating a pipe to a subprocess}{209} -\entry {creating a process}{458} -\entry {creating a socket}{234} -\entry {creating a socket pair}{235} -\entry {creating special files}{202} -\entry {cube root function}{290} -\entry {currency symbols}{375} -\entry {current working directory}{175} -\entry {custom streams}{142} -\entry {customizing \code {printf}}{116} +\entry {CPU time}{335} +\entry {create on open (file status flag)}{169} +\entry {creating a directory}{192} +\entry {creating a FIFO special file}{217} +\entry {creating a pipe}{213} +\entry {creating a pipe to a subprocess}{215} +\entry {creating a process}{464} +\entry {creating a socket}{240} +\entry {creating a socket pair}{241} +\entry {creating special files}{208} +\entry {cube root function}{296} +\entry {currency symbols}{381} +\entry {current working directory}{179} +\entry {custom streams}{145} +\entry {customizing \code {printf}}{119} \initial {D} -\entry {data loss on sockets}{213} -\entry {databses}{493} -\entry {datagram socket}{249} -\entry {datagrams, transmitting}{250} -\entry {date and time}{331} -\entry {Daylight Saving Time}{336} +\entry {data loss on sockets}{219} +\entry {databases}{497} +\entry {datagram socket}{256} +\entry {datagrams, transmitting}{256} +\entry {date and time}{337} +\entry {Daylight Saving Time}{342} \entry {decimal digit character}{59} -\entry {decimal-point separator}{374} +\entry {decimal-point separator}{380} \entry {declaration (compared to definition)}{4} -\entry {declaring variadic functions}{550} -\entry {default action (for a signal)}{385} -\entry {default action for a signal}{397} -\entry {default argument promotions}{550} -\entry {default value, and NSS}{496} -\entry {defining new \code {printf} conversions}{116} +\entry {declaring variadic functions}{554} +\entry {default action (for a signal)}{391} +\entry {default action for a signal}{403} +\entry {default argument promotions}{554} +\entry {default value, and NSS}{500} +\entry {defining new \code {printf} conversions}{119} \entry {definition (compared to declaration)}{4} -\entry {delayed suspend character}{279} -\entry {deleting a directory}{185} -\entry {deleting a file}{184} -\entry {delivery of signals}{384} -\entry {descriptors and streams}{154} +\entry {delayed suspend character}{285} +\entry {deleting a directory}{191} +\entry {deleting a file}{190} +\entry {delivery of signals}{390} +\entry {descriptors and streams}{158} \entry {digit character}{59} -\entry {directories, accessing}{177} -\entry {directories, creating}{187} -\entry {directories, deleting}{185} -\entry {directory}{84} -\entry {directory entry}{84} -\entry {directory stream}{177} -\entry {disadvantages of \code {alloca}}{55} -\entry {DISCARD character}{281} -\entry {DNS server unavailable}{495} -\entry {domain (of socket)}{213} -\entry {domain error}{287} -\entry {dot notation, for Internet addresses}{223} -\entry {DSUSP character}{279} -\entry {duplicating file descriptors}{160} +\entry {directories, accessing}{181} +\entry {directories, creating}{192} +\entry {directories, deleting}{191} +\entry {directory}{86} +\entry {directory entry}{86} +\entry {directory stream}{181} +\entry {disadvantages of \code {alloca}}{56} +\entry {DISCARD character}{287} +\entry {DNS server unavailable}{499} +\entry {domain (of socket)}{219} +\entry {domain error}{293} +\entry {dot notation, for Internet addresses}{229} +\entry {DSUSP character}{285} +\entry {duplicating file descriptors}{164} \entry {dynamic allocation}{31} \initial {E} -\entry {echo of terminal input}{272} -\entry {effective group ID}{503} -\entry {effective user ID}{503} +\entry {echo of terminal input}{278} +\entry {effective group ID}{507} +\entry {effective user ID}{507} \entry {efficiency and \code {malloc}}{36} \entry {efficiency and obstacks}{48} -\entry {efficiency of chunks}{50} -\entry {EINTR, and restarting interrupted primitives}{415} -\entry {end of file, on a stream}{130} -\entry {end-of-file, on a file descriptor}{147} -\entry {environment}{448} -\entry {environment access}{448} -\entry {environment representation}{448} -\entry {environment variable}{447} -\entry {EOF character}{277} -\entry {EOL character}{277} -\entry {EOL2 character}{277} -\entry {epoch}{332} -\entry {ERASE character}{277} +\entry {efficiency of chunks}{51} +\entry {EINTR, and restarting interrupted primitives}{422} +\entry {end of file, on a stream}{133} +\entry {end-of-file, on a file descriptor}{151} +\entry {environment}{455} +\entry {environment access}{455} +\entry {environment representation}{455} +\entry {environment variable}{454} +\entry {EOF character}{283} +\entry {EOL character}{283} +\entry {EOL2 character}{283} +\entry {epoch}{338} +\entry {ERASE character}{283} \entry {error codes}{15} \entry {error reporting}{15} -\entry {establishing a handler}{396} -\entry {ethers}{493} -\entry {exception}{387} -\entry {exclusive lock}{170} -\entry {\code {exec} functions}{460} -\entry {executing a file}{460} -\entry {exit status}{452} -\entry {exit status value}{451} -\entry {expansion of shell words}{323} -\entry {exponent (of floating point number)}{557} -\entry {exponentiation functions}{290} -\entry {extended character sets}{357} -\entry {extended characters, converting}{364} -\entry {extended strings, converting representations}{362} -\entry {extending \code {printf}}{116} -\entry {extracting file descriptor from stream}{153} +\entry {establishing a handler}{402} +\entry {ethers}{497} +\entry {exception}{393} +\entry {exclusive lock}{173} +\entry {\code {exec} functions}{466} +\entry {executing a file}{466} +\entry {exit status}{459} +\entry {exit status value}{458} +\entry {expansion of shell words}{329} +\entry {exponent (of floating point number)}{561} +\entry {exponentiation functions}{296} +\entry {extended character sets}{363} +\entry {extended characters, converting}{370} +\entry {extended strings, converting representations}{368} +\entry {extending \code {printf}}{119} +\entry {extracting file descriptor from stream}{157} \initial {F} -\entry {\code {fcntl} function}{159} +\entry {\code {fcntl} function}{163} \entry {feature test macros}{8} -\entry {field splitting}{324} -\entry {FIFO special file}{207} -\entry {file access permission}{196} -\entry {file access time}{200} -\entry {file attribute modification time}{200} -\entry {file attributes}{188} -\entry {file creation mask}{197} -\entry {file descriptor flags}{162} -\entry {file descriptor sets, for \code {select}}{156} -\entry {file descriptors, standard}{153} -\entry {file locks}{170} -\entry {file modification time}{200} -\entry {file name}{83} -\entry {file name component}{84} -\entry {file name errors}{85} -\entry {file name resolution}{84} -\entry {file name translation flags}{165} -\entry {file names, multiple}{181} -\entry {file namespace, for sockets}{218} -\entry {file owner}{193} -\entry {file permission bits}{194} -\entry {file pointer}{89} -\entry {file position}{83} -\entry {file positioning on a file descriptor}{151} -\entry {file positioning on a stream}{132} -\entry {file status flags}{164} -\entry {filtering i/o through subprocess}{209} -\entry {flag character (\code {printf})}{102} -\entry {flag character (\code {scanf})}{123} -\entry {flags for \code {sigaction}}{401} -\entry {flags, file name translation}{165} -\entry {flags, open-time action}{165} -\entry {floating point, IEEE}{562} -\entry {floating type measurements}{557} -\entry {floating-point exception}{387} -\entry {flow control, terminal}{284} -\entry {flushing a stream}{136} -\entry {flushing terminal output queue}{283} -\entry {foreground job}{472} -\entry {foreground job, launching}{481} -\entry {forking a process}{458} -\entry {format string, for \code {printf}}{100} -\entry {format string, for \code {scanf}}{121} -\entry {formatted input from a stream}{121} -\entry {formatted output to a stream}{100} +\entry {field splitting}{330} +\entry {FIFO special file}{213} +\entry {file access permission}{202} +\entry {file access time}{206} +\entry {file attribute modification time}{206} +\entry {file attributes}{193} +\entry {file creation mask}{202} +\entry {file descriptor flags}{166} +\entry {file descriptor sets, for \code {select}}{160} +\entry {file descriptors, standard}{157} +\entry {file locks}{173} +\entry {file modification time}{206} +\entry {file name}{85} +\entry {file name component}{86} +\entry {file name errors}{87} +\entry {file name resolution}{86} +\entry {file name translation flags}{169} +\entry {file names, multiple}{187} +\entry {file namespace, for sockets}{224} +\entry {file owner}{198} +\entry {file permission bits}{200} +\entry {file pointer}{91} +\entry {file position}{85} +\entry {file positioning on a file descriptor}{154} +\entry {file positioning on a stream}{135} +\entry {file status flags}{168} +\entry {filtering i/o through subprocess}{215} +\entry {flag character (\code {printf})}{104} +\entry {flag character (\code {scanf})}{126} +\entry {flags for \code {sigaction}}{408} +\entry {flags, file name translation}{169} +\entry {flags, open-time action}{169} +\entry {floating point, IEEE}{566} +\entry {floating type measurements}{561} +\entry {floating-point exception}{393} +\entry {flow control, terminal}{290} +\entry {flushing a stream}{139} +\entry {flushing terminal output queue}{289} +\entry {foreground job}{476} +\entry {foreground job, launching}{486} +\entry {forking a process}{464} +\entry {format string, for \code {printf}}{102} +\entry {format string, for \code {scanf}}{124} +\entry {formatted input from a stream}{124} +\entry {formatted output to a stream}{102} \entry {freeing (obstacks)}{45} \entry {freeing memory allocated with \code {malloc}}{34} -\entry {fully buffered stream}{135} -\entry {function prototypes (variadic)}{548} +\entry {fully buffered stream}{138} +\entry {function prototypes (variadic)}{552} \initial {G} -\entry {generation of signals}{384} -\entry {globbing}{314} +\entry {generation of signals}{390} +\entry {globbing}{320} \entry {graphic character}{60} -\entry {Gregorian calendar}{331} -\entry {group}{493} -\entry {group database}{517} -\entry {group ID}{503} -\entry {group name}{503} -\entry {group owner of a file}{193} -\entry {grouping of digits}{374} +\entry {Gregorian calendar}{337} +\entry {group}{497} +\entry {group database}{521} +\entry {group ID}{507} +\entry {group name}{507} +\entry {group owner of a file}{198} +\entry {grouping of digits}{380} \entry {growing objects (in obstacks)}{46} \initial {H} -\entry {handle}{56} -\entry {handling multiple signals}{407} -\entry {hangup signal}{390} -\entry {hard limit}{352} -\entry {hard link}{181} +\entry {handle}{57} +\entry {handling multiple signals}{414} +\entry {hangup signal}{396} +\entry {hard limit}{358} +\entry {hard link}{187} \entry {header files}{4} -\entry {heap consistency checking}{37} +\entry {heap consistency checking}{38} \entry {heap, dynamic allocation from}{32} \entry {heap, freeing memory from}{34} \entry {hexadecimal digit character}{60} -\entry {hidden bit (of floating point number mantissa)}{558} -\entry {high-priority data}{246} -\entry {high-resolution time}{331} -\entry {holes in files}{151} -\entry {home directory}{449} -\entry {HOME environment variable}{449} -\entry {hook functions (of custom streams)}{143} -\entry {host address, Internet}{222} -\entry {hosts}{493} -\entry {hosts database}{225} -\entry {how many arguments}{549} -\entry {hyperbolic functions}{291} +\entry {hidden bit (of floating point number mantissa)}{562} +\entry {high-priority data}{253} +\entry {high-resolution time}{337} +\entry {holes in files}{155} +\entry {home directory}{456} +\entry {HOME environment variable}{456} +\entry {hook functions (of custom streams)}{146} +\entry {host address, Internet}{228} +\entry {hosts}{497} +\entry {hosts database}{231} +\entry {how many arguments}{553} +\entry {hyperbolic functions}{297} \initial {I} -\entry {identifying terminals}{261} -\entry {IEEE floating point}{295} -\entry {IEEE floating point representation}{562} +\entry {identifying terminals}{267} +\entry {IEEE floating point}{301} +\entry {IEEE floating point representation}{566} \entry {IEEE Std 1003.1}{2} \entry {IEEE Std 1003.2}{2} -\entry {ignore action for a signal}{397} -\entry {illegal instruction}{388} -\entry {impossible events}{545} -\entry {independent channels}{155} -\entry {initial signal actions}{402} -\entry {inode number}{190} -\entry {input available signal}{391} -\entry {input conversions, for \code {scanf}}{123} -\entry {input from multiple files}{156} -\entry {installation tools}{661} -\entry {installing the library}{659} -\entry {integer division functions}{299} -\entry {integer type range}{555} -\entry {integer type width}{555} -\entry {interactive signals, from terminal}{273} -\entry {interactive stop signal}{393} -\entry {internationalization}{369} -\entry {Internet host address}{222} -\entry {Internet namespace, for sockets}{221} -\entry {interprocess communication, with FIFO}{210} -\entry {interprocess communication, with pipes}{207} -\entry {interprocess communication, with signals}{419} -\entry {interprocess communication, with sockets}{213} -\entry {interrupt character}{278} -\entry {interrupt signal}{389} -\entry {interrupt-driven input}{173} -\entry {interrupting primitives}{415} -\entry {interval timer, setting}{346} -\entry {INTR character}{278} -\entry {inverse hyperbolic functions}{291} -\entry {inverse trigonmetric functions}{289} -\entry {invocation of program}{437} +\entry {ignore action for a signal}{403} +\entry {illegal instruction}{394} +\entry {impossible events}{549} +\entry {independent channels}{158} +\entry {initial signal actions}{409} +\entry {inode number}{196} +\entry {input available signal}{397} +\entry {input conversions, for \code {scanf}}{127} +\entry {input from multiple files}{160} +\entry {installation tools}{665} +\entry {installing the library}{663} +\entry {integer division functions}{305} +\entry {integer type range}{559} +\entry {integer type width}{559} +\entry {interactive signals, from terminal}{279} +\entry {interactive stop signal}{399} +\entry {internationalization}{375} +\entry {Internet host address}{228} +\entry {Internet namespace, for sockets}{227} +\entry {interprocess communication, with FIFO}{217} +\entry {interprocess communication, with pipes}{213} +\entry {interprocess communication, with signals}{426} +\entry {interprocess communication, with sockets}{219} +\entry {interrupt character}{284} +\entry {interrupt signal}{395} +\entry {interrupt-driven input}{177} +\entry {interrupting primitives}{422} +\entry {interval timer, setting}{352} +\entry {INTR character}{284} +\entry {inverse hyperbolic functions}{297} +\entry {inverse trigonometric functions}{295} +\entry {invocation of program}{443} +\entry {ISO C}{2} \initial {J} -\entry {job}{471} -\entry {job control}{471} -\entry {job control functions}{488} -\entry {job control is optional}{472} -\entry {job control signals}{392} -\entry {job control, enabling}{476} +\entry {job}{475} +\entry {job control}{475} +\entry {job control functions}{493} +\entry {job control is optional}{476} +\entry {job control signals}{398} +\entry {job control, enabling}{480} \initial {K} -\entry {Kermit the frog}{310} -\entry {KILL character}{278} -\entry {kill signal}{390} -\entry {killing a process}{417} +\entry {Kermit the frog}{317} +\entry {KILL character}{284} +\entry {kill signal}{396} +\entry {killing a process}{424} \initial {L} -\entry {LANG environment variable}{450} -\entry {launching jobs}{478} -\entry {LC{\_}COLLATE environment variable}{450} -\entry {LC{\_}CTYPE environment variable}{450} -\entry {LC{\_}MONETARY environment variable}{451} -\entry {LC{\_}NUMERIC environment variable}{451} -\entry {LC{\_}TIME environment variable}{451} -\entry {leap second}{335} -\entry {length of multibyte character}{363} +\entry {LANG environment variable}{457} +\entry {launching jobs}{482} +\entry {LC_COLLATE environment variable}{457} +\entry {LC_CTYPE environment variable}{457} +\entry {LC_MONETARY environment variable}{457} +\entry {LC_NUMERIC environment variable}{457} +\entry {LC_TIME environment variable}{458} +\entry {leap second}{341} +\entry {length of multibyte character}{369} \entry {length of string}{64} -\entry {level, for socket options}{255} +\entry {level, for socket options}{262} \entry {library}{1} -\entry {limits on resource usage}{351} -\entry {limits, file name length}{537} -\entry {limits, floating types}{557} -\entry {limits, integer types}{555} -\entry {limits, link count of files}{537} -\entry {limits, number of open files}{529} -\entry {limits, number of processes}{529} -\entry {limits, number of supplementary group IDs}{530} -\entry {limits, pipe buffer size}{538} -\entry {limits, POSIX}{529} -\entry {limits, program argument size}{529} -\entry {limits, terminal input queue}{537} -\entry {limits, time zone name length}{530} -\entry {line buffered stream}{135} -\entry {line speed}{274} -\entry {lines (in a text file)}{131} -\entry {link}{84} -\entry {link, hard}{181} -\entry {link, soft}{183} -\entry {link, symbolic}{183} -\entry {linked channels}{154} -\entry {listening (sockets)}{238} -\entry {little-endian}{230} -\entry {LNEXT character}{280} -\entry {local network address number}{222} -\entry {local time}{331} -\entry {locale categories}{370} -\entry {locale, changing}{371} -\entry {locales}{369} -\entry {logarithm functions}{290} -\entry {login name}{503} -\entry {login name, determining}{512} -\entry {LOGNAME environment variable}{449} -\entry {long jumps}{379} -\entry {long-named options}{438} -\entry {longjmp}{54} -\entry {loss of data on sockets}{213} -\entry {lost resource signal}{394} +\entry {limits on resource usage}{358} +\entry {limits, file name length}{541} +\entry {limits, floating types}{561} +\entry {limits, integer types}{559} +\entry {limits, link count of files}{541} +\entry {limits, number of open files}{533} +\entry {limits, number of processes}{533} +\entry {limits, number of supplementary group IDs}{534} +\entry {limits, pipe buffer size}{542} +\entry {limits, POSIX}{533} +\entry {limits, program argument size}{533} +\entry {limits, terminal input queue}{541} +\entry {limits, time zone name length}{534} +\entry {line buffered stream}{138} +\entry {line speed}{280} +\entry {lines (in a text file)}{134} +\entry {link}{86} +\entry {link, hard}{187} +\entry {link, soft}{188} +\entry {link, symbolic}{188} +\entry {linked channels}{158} +\entry {listening (sockets)}{244} +\entry {little-endian}{235} +\entry {LNEXT character}{286} +\entry {local network address number}{228} +\entry {local time}{337} +\entry {locale categories}{376} +\entry {locale, changing}{377} +\entry {locales}{375} +\entry {logarithm functions}{296} +\entry {login name}{507} +\entry {login name, determining}{516} +\entry {LOGNAME environment variable}{456} +\entry {long jumps}{385} +\entry {long-named options}{444} +\entry {longjmp}{55} +\entry {loss of data on sockets}{219} +\entry {lost resource signal}{400} \entry {lower-case character}{59} \initial {M} -\entry {macros}{45} -\entry {\code {main} function}{437} +\entry {macros}{46} +\entry {\code {main} function}{443} \entry {\code {malloc} function}{32} -\entry {mantissa (of floating point number)}{558} -\entry {matching failure, in \code {scanf}}{122} -\entry {maximum field width (\code {scanf})}{123} -\entry {measurements of floating types}{557} +\entry {mantissa (of floating point number)}{562} +\entry {matching failure, in \code {scanf}}{125} +\entry {maximum field width (\code {scanf})}{126} +\entry {measurements of floating types}{561} \entry {memory allocation}{31} -\entry {memory usage warnings}{57} -\entry {merging of signals}{407} -\entry {MIN termios slot}{281} -\entry {minimum field width (\code {printf})}{102} -\entry {mixing descriptors and streams}{154} -\entry {modem disconnect}{270} -\entry {modem status lines}{270} -\entry {monetary value formatting}{373} -\entry {multibyte character, length of}{363} -\entry {multibyte characters}{358} -\entry {multiple names for one file}{181} -\entry {multiplexing input}{156} +\entry {memory usage warnings}{58} +\entry {merging of signals}{414} +\entry {MIN termios slot}{287} +\entry {minimum field width (\code {printf})}{104} +\entry {mixing descriptors and streams}{158} +\entry {modem disconnect}{276} +\entry {modem status lines}{276} +\entry {monetary value formatting}{379} +\entry {multibyte character, length of}{369} +\entry {multibyte characters}{364} +\entry {multiple names for one file}{187} +\entry {multiplexing input}{160} \initial {N} \entry {name of running program}{28} -\entry {name of socket}{215} -\entry {Name Service Switch}{493} +\entry {name of socket}{221} +\entry {Name Service Switch}{497} \entry {name space}{6} -\entry {names of signals}{385} -\entry {namespace (of socket)}{213} -\entry {NaN}{295} -\entry {netgroup}{493} -\entry {Netgroup}{520} -\entry {network}{493} -\entry {network byte order}{230} -\entry {network number}{222} -\entry {network protocol}{214} -\entry {networks database}{258} -\entry {nisplus, and booting}{496} -\entry {nisplus, and completeness}{496} -\entry {non-blocking open}{166} -\entry {non-local exit, from signal handler}{405} -\entry {non-local exits}{379} -\entry {noncanonical input processing}{262} -\entry {normalization functions (floating-point)}{297} -\entry {normalized floating point number}{558} -\entry {not a number}{295} -\entry {NSS}{493} -\entry {NSS{\_}STATUS{\_}NOTFOUND}{498} -\entry {NSS{\_}STATUS{\_}SUCCESS}{498} -\entry {NSS{\_}STATUS{\_}TRYAGAIN}{498} -\entry {NSS{\_}STATUS{\_}UNAVAIL}{498} -\entry {\file {nsswitch.conf}}{494} +\entry {names of signals}{391} +\entry {namespace (of socket)}{219} +\entry {NaN}{301} +\entry {netgroup}{497} +\entry {Netgroup}{524} +\entry {network}{497} +\entry {network byte order}{236} +\entry {network number}{228} +\entry {network protocol}{220} +\entry {networks database}{265} +\entry {nisplus, and booting}{500} +\entry {nisplus, and completeness}{500} +\entry {non-blocking open}{169} +\entry {non-local exit, from signal handler}{412} +\entry {non-local exits}{385} +\entry {noncanonical input processing}{268} +\entry {normalization functions (floating-point)}{303} +\entry {normalized floating point number}{562} +\entry {not a number}{301} +\entry {NSS}{497} +\entry {\file {nsswitch.conf}}{498} \entry {null character}{63} -\entry {null pointer constant}{553} -\entry {number of arguments passed}{549} -\entry {number syntax, parsing}{300} -\entry {numeric value formatting}{373} +\entry {null pointer constant}{557} +\entry {number of arguments passed}{553} +\entry {number syntax, parsing}{306} +\entry {numeric value formatting}{379} \initial {O} -\entry {obstack status}{49} +\entry {obstack status}{50} \entry {obstacks}{42} -\entry {open-time action flags}{165} -\entry {opening a file}{81} -\entry {opening a file descriptor}{145} -\entry {opening a pipe}{207} -\entry {opening a socket}{234} -\entry {opening a socket pair}{235} -\entry {opening a stream}{90} -\entry {optimizing NSS}{497} -\entry {optional arguments}{547} -\entry {optional POSIX features}{530} -\entry {orphaned process group}{473} -\entry {out-of-band data}{246} -\entry {output conversions, for \code {printf}}{103} -\entry {output possible signal}{391} -\entry {owner of a file}{193} +\entry {open-time action flags}{169} +\entry {opening a file}{83} +\entry {opening a file descriptor}{149} +\entry {opening a pipe}{213} +\entry {opening a socket}{240} +\entry {opening a socket pair}{241} +\entry {opening a stream}{92} +\entry {optimizing NSS}{501} +\entry {optional arguments}{551} +\entry {optional POSIX features}{534} +\entry {orphaned process group}{477} +\entry {out-of-band data}{253} +\entry {output conversions, for \code {printf}}{105} +\entry {output possible signal}{397} +\entry {owner of a file}{198} \initial {P} -\entry {packet}{213} +\entry {packet}{219} \entry {page boundary}{37} -\entry {parent directory}{85} -\entry {parent process}{457, 458} -\entry {parity checking}{267} -\entry {parsing a template string}{113} -\entry {parsing numbers (in formatted input)}{300} -\entry {parsing program arguments}{439} +\entry {parent directory}{87} +\entry {parent process}{463, 464} +\entry {parity checking}{273} +\entry {parsing a template string}{116} +\entry {parsing numbers (in formatted input)}{306} +\entry {parsing program arguments}{445} \entry {parsing tokens from a string}{78} -\entry {passwd}{493} -\entry {password database}{513} -\entry {PATH environment variable}{450} -\entry {\code {pause} function}{428} -\entry {peeking at input}{97} -\entry {pending signals}{384} -\entry {pending signals, checking for}{425} -\entry {permission to access a file}{196} -\entry {persona}{503} -\entry {pi (trigonometric constant)}{288} -\entry {pipe}{207} -\entry {pipe signal}{394} -\entry {pipe to a subprocess}{209} -\entry {port number}{228} -\entry {positioning a file descriptor}{151} -\entry {positioning a stream}{132} +\entry {passwd}{497} +\entry {password database}{517} +\entry {PATH environment variable}{456} +\entry {\code {pause} function}{435} +\entry {peeking at input}{100} +\entry {pending signals}{390} +\entry {pending signals, checking for}{433} +\entry {permission to access a file}{202} +\entry {persona}{507} +\entry {pi (trigonometric constant)}{294} +\entry {pipe}{213} +\entry {pipe signal}{400} +\entry {pipe to a subprocess}{215} +\entry {port number}{233} +\entry {positioning a file descriptor}{154} +\entry {positioning a stream}{135} \entry {POSIX}{2} -\entry {POSIX capacity limits}{529} -\entry {POSIX optional features}{530} +\entry {POSIX capacity limits}{533} +\entry {POSIX optional features}{534} \entry {POSIX.1}{2} \entry {POSIX.2}{2} -\entry {power functions}{290} -\entry {precision (of floating point number)}{558} -\entry {precision (\code {printf})}{102} +\entry {power functions}{296} +\entry {precision (of floating point number)}{562} +\entry {precision (\code {printf})}{104} \entry {predicates on arrays}{70} \entry {predicates on characters}{59} \entry {predicates on strings}{70} -\entry {primitives, interrupting}{415} +\entry {primitives, interrupting}{422} \entry {printing character}{60} -\entry {priority of a process}{354} -\entry {process}{437, 457} -\entry {process completion}{463} -\entry {process group functions}{488} -\entry {process group ID}{478} -\entry {process group leader}{478} -\entry {process groups}{471} -\entry {process ID}{458} -\entry {process image}{458} -\entry {process lifetime}{458} -\entry {process priority}{354} -\entry {process signal mask}{422} -\entry {process termination}{451} -\entry {processor time}{329} -\entry {profiling alarm signal}{391} -\entry {profiling timer}{346} -\entry {program argument syntax}{438} -\entry {program arguments}{437} -\entry {program arguments, parsing}{439} -\entry {program error signals}{386} +\entry {priority of a process}{360} +\entry {process}{443, 463} +\entry {process completion}{469} +\entry {process group functions}{493} +\entry {process group ID}{482} +\entry {process group leader}{482} +\entry {process groups}{475} +\entry {process ID}{464} +\entry {process image}{464} +\entry {process lifetime}{464} +\entry {process priority}{360} +\entry {process signal mask}{429} +\entry {process termination}{458} +\entry {processor time}{335} +\entry {profiling alarm signal}{397} +\entry {profiling timer}{352} +\entry {program argument syntax}{444} +\entry {program arguments}{443} +\entry {program arguments, parsing}{445} +\entry {program error signals}{392} \entry {program name}{28} -\entry {program startup}{437} -\entry {program termination}{451} -\entry {program termination signals}{389} -\entry {programming your own streams}{142} -\entry {protocol (of socket)}{214} -\entry {protocol family}{214} -\entry {protocols}{493} -\entry {protocols database}{231} -\entry {prototypes for variadic functions}{548} -\entry {pseudo-random numbers}{292} +\entry {program startup}{443} +\entry {program termination}{458} +\entry {program termination signals}{395} +\entry {programming your own streams}{145} +\entry {protocol (of socket)}{220} +\entry {protocol family}{220} +\entry {protocols}{497} +\entry {protocols database}{236} +\entry {prototypes for variadic functions}{552} +\entry {pseudo-random numbers}{298} \entry {punctuation character}{60} -\entry {pushing input back}{97} +\entry {pushing input back}{100} \initial {Q} -\entry {quick sort function (for arrays)}{308} -\entry {QUIT character}{279} -\entry {quit signal}{390} -\entry {quote removal}{324} +\entry {quick sort function (for arrays)}{314} +\entry {QUIT character}{285} +\entry {quit signal}{396} +\entry {quote removal}{330} \initial {R} -\entry {race conditions, relating to job control}{478} -\entry {race conditions, relating to signals}{406} -\entry {radix (of floating point number)}{557} -\entry {raising signals}{415} -\entry {random numbers}{292} -\entry {random-access files}{83} -\entry {range error}{287} -\entry {range of integer type}{555} -\entry {read lock}{170} -\entry {reading from a directory}{177} -\entry {reading from a file descriptor}{147} -\entry {reading from a socket}{240} -\entry {reading from a stream, by blocks}{99} -\entry {reading from a stream, by characters}{94} -\entry {reading from a stream, formatted}{121} -\entry {real group ID}{504} -\entry {real user ID}{504} -\entry {real-time timer}{346} -\entry {receiving datagrams}{250} -\entry {record locking}{170} -\entry {redirecting input and output}{160} -\entry {reentrant functions}{410} -\entry {reentrant NSS functions}{497} -\entry {relative file name}{84} -\entry {relocating memory allocator}{56} -\entry {remainder functions}{298} -\entry {removal of quotes}{324} -\entry {removing a file}{184} +\entry {race conditions, relating to job control}{482} +\entry {race conditions, relating to signals}{413} +\entry {radix (of floating point number)}{561} +\entry {raising signals}{422} +\entry {random numbers}{298} +\entry {random-access files}{85} +\entry {range error}{293} +\entry {range of integer type}{559} +\entry {read lock}{174} +\entry {reading from a directory}{181} +\entry {reading from a file descriptor}{151} +\entry {reading from a socket}{246} +\entry {reading from a stream, by blocks}{102} +\entry {reading from a stream, by characters}{96} +\entry {reading from a stream, formatted}{124} +\entry {real group ID}{507} +\entry {real user ID}{507} +\entry {real-time timer}{352} +\entry {receiving datagrams}{257} +\entry {record locking}{173} +\entry {redirecting input and output}{164} +\entry {reentrant functions}{417} +\entry {reentrant NSS functions}{501} +\entry {relative file name}{86} +\entry {relocating memory allocator}{57} +\entry {remainder functions}{304} +\entry {removal of quotes}{330} +\entry {removing a file}{190} \entry {removing macros that shadow functions}{5} -\entry {renaming a file}{185} -\entry {reporting bugs}{663} +\entry {renaming a file}{191} +\entry {reporting bugs}{667} \entry {reporting errors}{15} -\entry {REPRINT character}{278} +\entry {REPRINT character}{284} \entry {reserved names}{6} -\entry {resource limits}{351} -\entry {restarting interrupted primitives}{415} -\entry {restrictions on signal handler functions}{410} -\entry {root directory}{84} -\entry {rounding functions}{298} -\entry {rpc}{493} -\entry {running a command}{457} +\entry {resource limits}{358} +\entry {restarting interrupted primitives}{422} +\entry {restrictions on signal handler functions}{417} +\entry {root directory}{86} +\entry {rounding functions}{304} +\entry {rpc}{497} +\entry {running a command}{463} \initial {S} -\entry {scanning the group list}{519} -\entry {scanning the user list}{515} -\entry {search function (for arrays)}{307} +\entry {scanning the group list}{523} +\entry {scanning the user list}{519} +\entry {search function (for arrays)}{313} \entry {search functions (for strings)}{76} -\entry {seed (for random numbers)}{292} -\entry {seeking on a file descriptor}{151} -\entry {seeking on a stream}{132} -\entry {segmentation violation}{388} -\entry {sending a datagram}{250} -\entry {sending signals}{415} -\entry {sequential-access files}{83} -\entry {server}{236} -\entry {services}{493} -\entry {services database}{228} -\entry {session}{471} -\entry {session leader}{471} -\entry {setting an alarm}{346} -\entry {\code {setuid} programs}{505} -\entry {setuid programs and file access}{199} -\entry {shadow}{493} +\entry {seed (for random numbers)}{298} +\entry {seeking on a file descriptor}{154} +\entry {seeking on a stream}{135} +\entry {segmentation violation}{394} +\entry {sending a datagram}{256} +\entry {sending signals}{422} +\entry {sequential-access files}{85} +\entry {server}{242} +\entry {services}{497} +\entry {services database}{234} +\entry {session}{475} +\entry {session leader}{475} +\entry {setting an alarm}{352} +\entry {\code {setuid} programs}{509} +\entry {setuid programs and file access}{204} +\entry {shadow}{497} \entry {shadowing functions with macros}{5} -\entry {shared lock}{170} -\entry {shell}{471} +\entry {shared lock}{174} +\entry {shell}{475} \entry {shrinking objects}{48} -\entry {shutting down a socket}{235} -\entry {\code {sigaction} flags}{401} -\entry {\code {sigaction} function}{398} -\entry {\code {SIGCHLD}, handling of}{483} -\entry {sign (of floating point number)}{557} -\entry {signal}{383} -\entry {signal action}{385} -\entry {signal actions}{396} -\entry {signal flags}{401} -\entry {\code {signal} function}{396} -\entry {signal handler function}{403} -\entry {signal mask}{422} -\entry {signal messages}{395} -\entry {signal names}{385} -\entry {signal number}{385} -\entry {signal set}{421} -\entry {signals, generating}{415} -\entry {significand (of floating point number)}{558} -\entry {\code {SIGTTIN}, from background job}{473} -\entry {\code {SIGTTOU}, from background job}{473} +\entry {shutting down a socket}{241} +\entry {\code {sigaction} flags}{408} +\entry {\code {sigaction} function}{404} +\entry {\code {SIGCHLD}, handling of}{488} +\entry {sign (of floating point number)}{561} +\entry {signal}{389} +\entry {signal action}{391} +\entry {signal actions}{402} +\entry {signal flags}{408} +\entry {\code {signal} function}{402} +\entry {signal handler function}{409} +\entry {signal mask}{429} +\entry {signal messages}{401} +\entry {signal names}{391} +\entry {signal number}{391} +\entry {signal set}{428} +\entry {signals, generating}{422} +\entry {significand (of floating point number)}{562} +\entry {\code {SIGTTIN}, from background job}{477} +\entry {\code {SIGTTOU}, from background job}{477} \entry {size of string}{64} -\entry {socket}{213} -\entry {socket address (name) binding}{215} -\entry {socket domain}{213} -\entry {socket namespace}{213} -\entry {socket option level}{255} -\entry {socket options}{255} -\entry {socket pair}{235} -\entry {socket protocol}{214} -\entry {socket shutdown}{235} -\entry {socket, client actions}{237} -\entry {socket, closing}{235} -\entry {socket, connecting}{237} -\entry {socket, creating}{234} -\entry {socket, initiating a connection}{237} -\entry {sockets, accepting connections}{239} -\entry {sockets, listening}{238} -\entry {sockets, server actions}{238} -\entry {soft limit}{352} -\entry {soft link}{183} -\entry {sort function (for arrays)}{308} -\entry {sparse files}{151} -\entry {special files}{202} -\entry {specified action (for a signal)}{385} -\entry {square root function}{290} -\entry {stable sorting}{308} -\entry {standard dot notation, for Internet addresses}{223} -\entry {standard environment variables}{449} -\entry {standard error file descriptor}{154} -\entry {standard error stream}{90} -\entry {standard file descriptors}{153} -\entry {standard input file descriptor}{154} -\entry {standard input stream}{89} -\entry {standard output file descriptor}{154} -\entry {standard output stream}{90} -\entry {standard streams}{89} +\entry {socket}{219} +\entry {socket address (name) binding}{221} +\entry {socket domain}{219} +\entry {socket namespace}{219} +\entry {socket option level}{262} +\entry {socket options}{262} +\entry {socket pair}{241} +\entry {socket protocol}{220} +\entry {socket shutdown}{241} +\entry {socket, client actions}{242} +\entry {socket, closing}{241} +\entry {socket, connecting}{242} +\entry {socket, creating}{240} +\entry {socket, initiating a connection}{242} +\entry {sockets, accepting connections}{245} +\entry {sockets, listening}{244} +\entry {sockets, server actions}{244} +\entry {soft limit}{358} +\entry {soft link}{188} +\entry {sort function (for arrays)}{314} +\entry {sparse files}{155} +\entry {special files}{208} +\entry {specified action (for a signal)}{391} +\entry {square root function}{296} +\entry {stable sorting}{314} +\entry {standard dot notation, for Internet addresses}{229} +\entry {standard environment variables}{456} +\entry {standard error file descriptor}{158} +\entry {standard error stream}{92} +\entry {standard file descriptors}{157} +\entry {standard input file descriptor}{157} +\entry {standard input stream}{91} +\entry {standard output file descriptor}{158} +\entry {standard output stream}{91} +\entry {standard streams}{91} \entry {standards}{1} -\entry {START character}{280} -\entry {startup of program}{437} +\entry {START character}{286} +\entry {startup of program}{443} \entry {static allocation}{31} -\entry {STATUS character}{281} +\entry {STATUS character}{287} \entry {status codes}{15} -\entry {status of a file}{188} -\entry {status of obstack}{49} -\entry {sticky bit}{195} -\entry {STOP character}{280} -\entry {stop signal}{392} -\entry {stopped job}{472} -\entry {stopped jobs, continuing}{486} -\entry {stopped jobs, detecting}{483} +\entry {status of a file}{193} +\entry {status of obstack}{50} +\entry {sticky bit}{201} +\entry {STOP character}{286} +\entry {stop signal}{398} +\entry {stopped job}{476} +\entry {stopped jobs, continuing}{492} +\entry {stopped jobs, detecting}{488} \entry {storage allocation}{31} -\entry {stream (sockets)}{213} -\entry {stream, for I/O to a string}{139} -\entry {streams and descriptors}{154} -\entry {streams, and file descriptors}{153} -\entry {streams, standard}{89} +\entry {stream (sockets)}{219} +\entry {stream, for I/O to a string}{142} +\entry {streams and descriptors}{158} +\entry {streams, and file descriptors}{157} +\entry {streams, standard}{91} \entry {string}{63} \entry {string allocation}{64} -\entry {string collation functions}{72} +\entry {string collation functions}{73} \entry {string comparison functions}{70} \entry {string concatenation functions}{65} \entry {string copy functions}{65} \entry {string length}{64} \entry {string literal}{63} \entry {string search functions}{76} -\entry {string stream}{139} +\entry {string stream}{142} \entry {string, representation of}{63} -\entry {style of communication (of a socket)}{213} -\entry {subshell}{476} -\entry {substitution of variables and commands}{324} -\entry {successive signals}{407} -\entry {summer time}{336} +\entry {style of communication (of a socket)}{219} +\entry {subshell}{480} +\entry {substitution of variables and commands}{330} +\entry {successive signals}{414} +\entry {summer time}{342} \entry {SunOS}{3} -\entry {supplementary group IDs}{504} -\entry {SUSP character}{279} -\entry {suspend character}{279} +\entry {supplementary group IDs}{508} +\entry {SUSP character}{285} +\entry {suspend character}{285} \entry {SVID}{3} -\entry {symbolic link}{183} -\entry {symbolic link, opening}{166} -\entry {syntax, for program arguments}{438} -\entry {syntax, for reading numbers}{300} +\entry {symbolic link}{188} +\entry {symbolic link, opening}{170} +\entry {syntax, for program arguments}{444} +\entry {syntax, for reading numbers}{306} \entry {System V Unix}{3} \initial {T} -\entry {TCP (Internet protocol)}{231} -\entry {template, for \code {printf}}{100} -\entry {template, for \code {scanf}}{121} -\entry {TERM environment variable}{450} -\entry {terminal flow control}{284} -\entry {terminal identification}{261} -\entry {terminal input queue}{261} -\entry {terminal input queue, clearing}{284} -\entry {terminal input signal}{393} -\entry {terminal line control functions}{283} -\entry {terminal line speed}{274} -\entry {terminal mode data types}{263} -\entry {terminal mode functions}{264} -\entry {terminal output queue}{262} -\entry {terminal output queue, flushing}{283} -\entry {terminal output signal}{393} -\entry {terminated jobs, detecting}{483} -\entry {termination signal}{389} -\entry {testing access permission}{199} -\entry {testing exit status of child process}{463} -\entry {text stream}{131} -\entry {ticks, clock}{329} -\entry {tilde expansion}{324} -\entry {TIME termios slot}{282} -\entry {time zone}{342} -\entry {time zone database}{344} -\entry {time, calendar}{331} -\entry {time, elapsed CPU}{329} -\entry {timer, profiling}{346} -\entry {timer, real-time}{346} -\entry {timer, virtual}{346} -\entry {timers, setting}{346} -\entry {timing error in signal handling}{427} -\entry {TMPDIR environment variable}{205} +\entry {TCP (Internet protocol)}{236} +\entry {template, for \code {printf}}{102} +\entry {template, for \code {scanf}}{124} +\entry {TERM environment variable}{457} +\entry {terminal flow control}{290} +\entry {terminal identification}{267} +\entry {terminal input queue}{267} +\entry {terminal input queue, clearing}{290} +\entry {terminal input signal}{399} +\entry {terminal line control functions}{289} +\entry {terminal line speed}{280} +\entry {terminal mode data types}{269} +\entry {terminal mode functions}{270} +\entry {terminal output queue}{268} +\entry {terminal output queue, flushing}{289} +\entry {terminal output signal}{399} +\entry {terminated jobs, detecting}{488} +\entry {termination signal}{395} +\entry {testing access permission}{204} +\entry {testing exit status of child process}{469} +\entry {text stream}{134} +\entry {ticks, clock}{335} +\entry {tilde expansion}{330} +\entry {TIME termios slot}{287} +\entry {time zone}{348} +\entry {time zone database}{350} +\entry {time, calendar}{337} +\entry {time, elapsed CPU}{335} +\entry {timer, profiling}{352} +\entry {timer, real-time}{352} +\entry {timer, virtual}{352} +\entry {timers, setting}{352} +\entry {timing error in signal handling}{435} +\entry {TMPDIR environment variable}{210} \entry {tokenizing strings}{78} -\entry {tools, for installing library}{661} -\entry {transmitting datagrams}{250} -\entry {trigonometric functions}{288} -\entry {type measurements, floating}{557} -\entry {type measurements, integer}{555} -\entry {type modifier character (\code {printf})}{102} -\entry {type modifier character (\code {scanf})}{123} -\entry {typeahead buffer}{261} -\entry {TZ environment variable}{450} +\entry {tools, for installing library}{665} +\entry {transmitting datagrams}{256} +\entry {trigonometric functions}{294} +\entry {type measurements, floating}{561} +\entry {type measurements, integer}{559} +\entry {type modifier character (\code {printf})}{105} +\entry {type modifier character (\code {scanf})}{126} +\entry {typeahead buffer}{267} +\entry {TZ environment variable}{457} \initial {U} -\entry {umask}{197} -\entry {unbuffered stream}{135} +\entry {umask}{202} +\entry {unbuffered stream}{138} \entry {unconstrained storage allocation}{32} \entry {undefining macros that shadow functions}{5} \entry {Unix, Berkeley}{3} \entry {Unix, System V}{3} -\entry {unlinking a file}{184} -\entry {unreading characters}{97} +\entry {unlinking a file}{190} +\entry {unreading characters}{100} \entry {upper-case character}{59} -\entry {urgent data signal}{391} -\entry {urgent socket condition}{247} -\entry {usage limits}{351} -\entry {user database}{513} -\entry {user ID}{503} -\entry {user ID, determining}{512} -\entry {user name}{503} -\entry {user signals}{394} -\entry {usual file name errors}{85} +\entry {urgent data signal}{397} +\entry {urgent socket condition}{253} +\entry {usage limits}{358} +\entry {user database}{517} +\entry {user ID}{507} +\entry {user ID, determining}{516} +\entry {user name}{507} +\entry {user signals}{400} +\entry {usual file name errors}{87} \initial {V} -\entry {variable number of arguments}{547} -\entry {variable substitution}{324} -\entry {variable-sized arrays}{55} -\entry {variadic function argument access}{548} -\entry {variadic function prototypes}{548} -\entry {variadic functions}{547} -\entry {variadic functions, calling}{550} -\entry {virtual time alarm signal}{391} -\entry {virtual timer}{346} -\entry {\code {volatile} declarations}{410} +\entry {variable number of arguments}{551} +\entry {variable substitution}{330} +\entry {variable-sized arrays}{56} +\entry {variadic function argument access}{552} +\entry {variadic function prototypes}{552} +\entry {variadic functions}{551} +\entry {variadic functions, calling}{554} +\entry {virtual time alarm signal}{397} +\entry {virtual timer}{352} +\entry {\code {volatile} declarations}{417} \initial {W} -\entry {waiting for a signal}{428} -\entry {waiting for completion of child process}{463} -\entry {waiting for input or output}{156} -\entry {warnings of memory almost full}{57} -\entry {WERASE character}{278} +\entry {waiting for a signal}{435} +\entry {waiting for completion of child process}{469} +\entry {waiting for input or output}{160} +\entry {warnings of memory almost full}{58} +\entry {WERASE character}{284} \entry {whitespace character}{60} -\entry {wide characters}{357} -\entry {width of integer type}{555} -\entry {wildcard expansion}{324} -\entry {word expansion}{323} -\entry {working directory}{175} -\entry {write lock}{170} -\entry {writing to a file descriptor}{149} -\entry {writing to a socket}{240} -\entry {writing to a stream, by blocks}{99} -\entry {writing to a stream, by characters}{93} -\entry {writing to a stream, formatted}{100} +\entry {wide characters}{363} +\entry {width of integer type}{559} +\entry {wildcard expansion}{330} +\entry {word expansion}{329} +\entry {working directory}{179} +\entry {write lock}{173} +\entry {writing to a file descriptor}{153} +\entry {writing to a socket}{246} +\entry {writing to a stream, by blocks}{102} +\entry {writing to a stream, by characters}{95} +\entry {writing to a stream, formatted}{102} diff -durpN glibc-2.0.1/manual/libc.fn glibc-2.0.2/manual/libc.fn --- glibc-2.0.1/manual/libc.fn Mon Nov 4 17:59:16 1996 +++ glibc-2.0.2/manual/libc.fn Tue Mar 18 22:31:15 1997 @@ -1,521 +1,536 @@ -\entry {strerror}{27}{\code {strerror}} -\entry {perror}{27}{\code {perror}} -\entry {malloc}{32}{\code {malloc}} -\entry {free}{34}{\code {free}} -\entry {cfree}{34}{\code {cfree}} -\entry {realloc}{35}{\code {realloc}} -\entry {calloc}{36}{\code {calloc}} -\entry {memalign}{37}{\code {memalign}} -\entry {valloc}{37}{\code {valloc}} -\entry {mcheck}{38}{\code {mcheck}} -\entry {mprobe}{38}{\code {mprobe}} -\entry {mstats}{41}{\code {mstats}} -\entry {obstack{\_}chunk{\_}alloc}{43}{\code {obstack{\_}chunk{\_}alloc}} -\entry {obstack{\_}chunk{\_}free}{43}{\code {obstack{\_}chunk{\_}free}} -\entry {obstack{\_}init}{43}{\code {obstack{\_}init}} -\entry {obstack{\_}alloc}{44}{\code {obstack{\_}alloc}} -\entry {obstack{\_}copy}{44}{\code {obstack{\_}copy}} -\entry {obstack{\_}copy0}{45}{\code {obstack{\_}copy0}} -\entry {obstack{\_}free}{45}{\code {obstack{\_}free}} -\entry {obstack{\_}blank}{47}{\code {obstack{\_}blank}} -\entry {obstack{\_}grow}{47}{\code {obstack{\_}grow}} -\entry {obstack{\_}grow0}{47}{\code {obstack{\_}grow0}} -\entry {obstack{\_}1grow}{47}{\code {obstack{\_}1grow}} -\entry {obstack{\_}finish}{47}{\code {obstack{\_}finish}} -\entry {obstack{\_}object{\_}size}{47}{\code {obstack{\_}object{\_}size}} -\entry {obstack{\_}room}{48}{\code {obstack{\_}room}} -\entry {obstack{\_}1grow{\_}fast}{48}{\code {obstack{\_}1grow{\_}fast}} -\entry {obstack{\_}blank{\_}fast}{48}{\code {obstack{\_}blank{\_}fast}} -\entry {obstack{\_}base}{49}{\code {obstack{\_}base}} -\entry {obstack{\_}next{\_}free}{49}{\code {obstack{\_}next{\_}free}} -\entry {obstack{\_}object{\_}size}{50}{\code {obstack{\_}object{\_}size}} -\entry {obstack{\_}alignment{\_}mask}{50}{\code {obstack{\_}alignment{\_}mask}} -\entry {obstack{\_}chunk{\_}size}{51}{\code {obstack{\_}chunk{\_}size}} -\entry {alloca}{53}{\code {alloca}} -\entry {r{\_}alloc}{56}{\code {r{\_}alloc}} -\entry {r{\_}alloc{\_}free}{57}{\code {r{\_}alloc{\_}free}} -\entry {r{\_}re{\_}alloc}{57}{\code {r{\_}re{\_}alloc}} -\entry {memory{\_}warnings}{57}{\code {memory{\_}warnings}} -\entry {islower}{59}{\code {islower}} -\entry {isupper}{59}{\code {isupper}} -\entry {isalpha}{59}{\code {isalpha}} -\entry {isdigit}{60}{\code {isdigit}} -\entry {isalnum}{60}{\code {isalnum}} -\entry {isxdigit}{60}{\code {isxdigit}} -\entry {ispunct}{60}{\code {ispunct}} -\entry {isspace}{60}{\code {isspace}} -\entry {isblank}{60}{\code {isblank}} -\entry {isgraph}{60}{\code {isgraph}} -\entry {isprint}{60}{\code {isprint}} -\entry {iscntrl}{61}{\code {iscntrl}} -\entry {isascii}{61}{\code {isascii}} -\entry {tolower}{61}{\code {tolower}} -\entry {toupper}{61}{\code {toupper}} -\entry {toascii}{61}{\code {toascii}} -\entry {{\_}tolower}{61}{\code {{\_}tolower}} -\entry {{\_}toupper}{61}{\code {{\_}toupper}} -\entry {strlen}{65}{\code {strlen}} -\entry {memcpy}{66}{\code {memcpy}} -\entry {memmove}{66}{\code {memmove}} -\entry {memccpy}{66}{\code {memccpy}} -\entry {memset}{66}{\code {memset}} -\entry {strcpy}{66}{\code {strcpy}} -\entry {strncpy}{66}{\code {strncpy}} -\entry {strdup}{67}{\code {strdup}} -\entry {strndup}{67}{\code {strndup}} -\entry {stpcpy}{67}{\code {stpcpy}} -\entry {stpncpy}{68}{\code {stpncpy}} -\entry {strdupa}{68}{\code {strdupa}} -\entry {strndupa}{69}{\code {strndupa}} -\entry {strcat}{69}{\code {strcat}} -\entry {strncat}{69}{\code {strncat}} -\entry {bcopy}{70}{\code {bcopy}} -\entry {bzero}{70}{\code {bzero}} -\entry {memcmp}{71}{\code {memcmp}} -\entry {strcmp}{71}{\code {strcmp}} -\entry {strcasecmp}{72}{\code {strcasecmp}} -\entry {strncasecmp}{72}{\code {strncasecmp}} -\entry {strncmp}{72}{\code {strncmp}} -\entry {bcmp}{72}{\code {bcmp}} -\entry {strcoll}{73}{\code {strcoll}} -\entry {strxfrm}{73}{\code {strxfrm}} -\entry {memchr}{76}{\code {memchr}} -\entry {strchr}{76}{\code {strchr}} -\entry {index}{76}{\code {index}} -\entry {strrchr}{76}{\code {strrchr}} -\entry {rindex}{76}{\code {rindex}} -\entry {strstr}{76}{\code {strstr}} -\entry {memmem}{77}{\code {memmem}} -\entry {strspn}{77}{\code {strspn}} -\entry {strcspn}{77}{\code {strcspn}} -\entry {strpbrk}{77}{\code {strpbrk}} -\entry {strtok}{78}{\code {strtok}} -\entry {strtok{\_}r}{79}{\code {strtok{\_}r}} -\entry {strsep}{79}{\code {strsep}} -\entry {fopen}{90}{\code {fopen}} -\entry {freopen}{92}{\code {freopen}} -\entry {fclose}{92}{\code {fclose}} -\entry {fputc}{93}{\code {fputc}} -\entry {putc}{93}{\code {putc}} -\entry {putchar}{93}{\code {putchar}} -\entry {fputs}{93}{\code {fputs}} -\entry {puts}{94}{\code {puts}} -\entry {putw}{94}{\code {putw}} -\entry {fgetc}{94}{\code {fgetc}} -\entry {getc}{94}{\code {getc}} -\entry {getchar}{95}{\code {getchar}} -\entry {getw}{95}{\code {getw}} -\entry {getline}{96}{\code {getline}} -\entry {getdelim}{96}{\code {getdelim}} -\entry {fgets}{97}{\code {fgets}} -\entry {gets}{97}{\code {gets}} -\entry {ungetc}{98}{\code {ungetc}} -\entry {fread}{100}{\code {fread}} -\entry {fwrite}{100}{\code {fwrite}} -\entry {printf}{109}{\code {printf}} -\entry {fprintf}{109}{\code {fprintf}} -\entry {sprintf}{109}{\code {sprintf}} -\entry {snprintf}{109}{\code {snprintf}} -\entry {asprintf}{110}{\code {asprintf}} -\entry {obstack{\_}printf}{110}{\code {obstack{\_}printf}} -\entry {vprintf}{112}{\code {vprintf}} -\entry {vfprintf}{112}{\code {vfprintf}} -\entry {vsprintf}{112}{\code {vsprintf}} -\entry {vsnprintf}{112}{\code {vsnprintf}} -\entry {vasprintf}{112}{\code {vasprintf}} -\entry {obstack{\_}vprintf}{112}{\code {obstack{\_}vprintf}} -\entry {parse{\_}printf{\_}format}{113}{\code {parse{\_}printf{\_}format}} -\entry {register{\_}printf{\_}function}{117}{\code {register{\_}printf{\_}function}} -\entry {scanf}{129}{\code {scanf}} -\entry {fscanf}{129}{\code {fscanf}} -\entry {sscanf}{129}{\code {sscanf}} -\entry {vscanf}{129}{\code {vscanf}} -\entry {vfscanf}{130}{\code {vfscanf}} -\entry {vsscanf}{130}{\code {vsscanf}} -\entry {clearerr}{130}{\code {clearerr}} -\entry {feof}{130}{\code {feof}} -\entry {ferror}{130}{\code {ferror}} -\entry {ftell}{132}{\code {ftell}} -\entry {fseek}{132}{\code {fseek}} -\entry {rewind}{133}{\code {rewind}} -\entry {fgetpos}{134}{\code {fgetpos}} -\entry {fsetpos}{134}{\code {fsetpos}} -\entry {fflush}{136}{\code {fflush}} -\entry {setvbuf}{137}{\code {setvbuf}} -\entry {setbuf}{138}{\code {setbuf}} -\entry {setbuffer}{138}{\code {setbuffer}} -\entry {setlinebuf}{138}{\code {setlinebuf}} -\entry {fmemopen}{139}{\code {fmemopen}} -\entry {open{\_}memstream}{140}{\code {open{\_}memstream}} -\entry {open{\_}obstack{\_}stream}{141}{\code {open{\_}obstack{\_}stream}} -\entry {fopencookie}{143}{\code {fopencookie}} -\entry {open}{145}{\code {open}} -\entry {creat}{146}{\code {creat}} -\entry {close}{147}{\code {close}} -\entry {read}{147}{\code {read}} -\entry {write}{149}{\code {write}} -\entry {lseek}{151}{\code {lseek}} -\entry {fdopen}{153}{\code {fdopen}} -\entry {fileno}{153}{\code {fileno}} -\entry {fclean}{155}{\code {fclean}} -\entry {FD{\_}ZERO}{157}{\code {FD{\_}ZERO}} -\entry {FD{\_}SET}{157}{\code {FD{\_}SET}} -\entry {FD{\_}CLR}{157}{\code {FD{\_}CLR}} -\entry {FD{\_}ISSET}{157}{\code {FD{\_}ISSET}} -\entry {select}{157}{\code {select}} -\entry {fcntl}{160}{\code {fcntl}} -\entry {dup}{161}{\code {dup}} -\entry {dup2}{161}{\code {dup2}} -\entry {getcwd}{175}{\code {getcwd}} -\entry {getwd}{176}{\code {getwd}} -\entry {chdir}{176}{\code {chdir}} -\entry {IFTODT}{178}{\code {IFTODT}} -\entry {DTTOIF}{178}{\code {DTTOIF}} -\entry {opendir}{178}{\code {opendir}} -\entry {readdir}{179}{\code {readdir}} -\entry {readdir{\_}r}{179}{\code {readdir{\_}r}} -\entry {closedir}{180}{\code {closedir}} -\entry {rewinddir}{181}{\code {rewinddir}} -\entry {telldir}{181}{\code {telldir}} -\entry {seekdir}{181}{\code {seekdir}} -\entry {link}{182}{\code {link}} -\entry {symlink}{183}{\code {symlink}} -\entry {readlink}{183}{\code {readlink}} -\entry {unlink}{184}{\code {unlink}} -\entry {rmdir}{185}{\code {rmdir}} -\entry {remove}{185}{\code {remove}} -\entry {rename}{185}{\code {rename}} -\entry {mkdir}{187}{\code {mkdir}} -\entry {stat}{190}{\code {stat}} -\entry {fstat}{191}{\code {fstat}} -\entry {lstat}{191}{\code {lstat}} -\entry {S{\_}ISDIR}{191}{\code {S{\_}ISDIR}} -\entry {S{\_}ISCHR}{191}{\code {S{\_}ISCHR}} -\entry {S{\_}ISBLK}{192}{\code {S{\_}ISBLK}} -\entry {S{\_}ISREG}{192}{\code {S{\_}ISREG}} -\entry {S{\_}ISFIFO}{192}{\code {S{\_}ISFIFO}} -\entry {S{\_}ISLNK}{192}{\code {S{\_}ISLNK}} -\entry {S{\_}ISSOCK}{192}{\code {S{\_}ISSOCK}} -\entry {chown}{193}{\code {chown}} -\entry {fchown}{194}{\code {fchown}} -\entry {chmod}{197}{\code {chmod}} -\entry {umask}{197}{\code {umask}} -\entry {getumask}{198}{\code {getumask}} -\entry {chmod}{198}{\code {chmod}} -\entry {fchmod}{198}{\code {fchmod}} -\entry {access}{199}{\code {access}} -\entry {utime}{201}{\code {utime}} -\entry {utimes}{202}{\code {utimes}} -\entry {mknod}{202}{\code {mknod}} -\entry {tmpfile}{203}{\code {tmpfile}} -\entry {tmpnam}{203}{\code {tmpnam}} -\entry {tmpnam{\_}r}{204}{\code {tmpnam{\_}r}} -\entry {tempnam}{204}{\code {tempnam}} -\entry {mktemp}{205}{\code {mktemp}} -\entry {mkstemp}{205}{\code {mkstemp}} -\entry {pipe}{207}{\code {pipe}} -\entry {popen}{209}{\code {popen}} -\entry {pclose}{210}{\code {pclose}} -\entry {mkfifo}{211}{\code {mkfifo}} -\entry {bind}{217}{\code {bind}} -\entry {getsockname}{218}{\code {getsockname}} -\entry {inet{\_}aton}{224}{\code {inet{\_}aton}} -\entry {inet{\_}addr}{224}{\code {inet{\_}addr}} -\entry {inet{\_}network}{225}{\code {inet{\_}network}} -\entry {inet{\_}ntoa}{225}{\code {inet{\_}ntoa}} -\entry {inet{\_}makeaddr}{225}{\code {inet{\_}makeaddr}} -\entry {inet{\_}lnaof}{225}{\code {inet{\_}lnaof}} -\entry {inet{\_}netof}{225}{\code {inet{\_}netof}} -\entry {gethostbyname}{226}{\code {gethostbyname}} -\entry {gethostbyaddr}{226}{\code {gethostbyaddr}} -\entry {sethostent}{227}{\code {sethostent}} -\entry {gethostent}{227}{\code {gethostent}} -\entry {endhostent}{227}{\code {endhostent}} -\entry {getservbyname}{229}{\code {getservbyname}} -\entry {getservbyport}{229}{\code {getservbyport}} -\entry {setservent}{229}{\code {setservent}} -\entry {getservent}{230}{\code {getservent}} -\entry {endservent}{230}{\code {endservent}} -\entry {htons}{230}{\code {htons}} -\entry {ntohs}{230}{\code {ntohs}} -\entry {htonl}{230}{\code {htonl}} -\entry {ntohl}{231}{\code {ntohl}} -\entry {getprotobyname}{232}{\code {getprotobyname}} -\entry {getprotobynumber}{232}{\code {getprotobynumber}} -\entry {setprotoent}{232}{\code {setprotoent}} -\entry {getprotoent}{232}{\code {getprotoent}} -\entry {endprotoent}{232}{\code {endprotoent}} -\entry {socket}{234}{\code {socket}} -\entry {shutdown}{235}{\code {shutdown}} -\entry {socketpair}{236}{\code {socketpair}} -\entry {connect}{237}{\code {connect}} -\entry {listen}{238}{\code {listen}} -\entry {accept}{239}{\code {accept}} -\entry {getpeername}{240}{\code {getpeername}} -\entry {send}{241}{\code {send}} -\entry {recv}{242}{\code {recv}} -\entry {sendto}{250}{\code {sendto}} -\entry {recvfrom}{250}{\code {recvfrom}} -\entry {getsockopt}{255}{\code {getsockopt}} -\entry {setsockopt}{256}{\code {setsockopt}} -\entry {getnetbyname}{259}{\code {getnetbyname}} -\entry {getnetbyaddr}{259}{\code {getnetbyaddr}} -\entry {setnetent}{259}{\code {setnetent}} -\entry {getnetent}{259}{\code {getnetent}} -\entry {endnetent}{259}{\code {endnetent}} -\entry {isatty}{261}{\code {isatty}} -\entry {ttyname}{261}{\code {ttyname}} -\entry {tcgetattr}{264}{\code {tcgetattr}} -\entry {tcsetattr}{264}{\code {tcsetattr}} -\entry {cfgetospeed}{275}{\code {cfgetospeed}} -\entry {cfgetispeed}{275}{\code {cfgetispeed}} -\entry {cfsetospeed}{275}{\code {cfsetospeed}} -\entry {cfsetispeed}{275}{\code {cfsetispeed}} -\entry {cfsetspeed}{275}{\code {cfsetspeed}} -\entry {cfmakeraw}{283}{\code {cfmakeraw}} -\entry {tcsendbreak}{283}{\code {tcsendbreak}} -\entry {tcdrain}{283}{\code {tcdrain}} -\entry {tcflush}{284}{\code {tcflush}} -\entry {tcflow}{284}{\code {tcflow}} -\entry {sin}{288}{\code {sin}} -\entry {cos}{288}{\code {cos}} -\entry {tan}{288}{\code {tan}} -\entry {asin}{289}{\code {asin}} -\entry {acos}{289}{\code {acos}} -\entry {atan}{289}{\code {atan}} -\entry {atan2}{289}{\code {atan2}} -\entry {exp}{290}{\code {exp}} -\entry {log}{290}{\code {log}} -\entry {log10}{290}{\code {log10}} -\entry {pow}{290}{\code {pow}} -\entry {sqrt}{290}{\code {sqrt}} -\entry {cbrt}{290}{\code {cbrt}} -\entry {hypot}{291}{\code {hypot}} -\entry {expm1}{291}{\code {expm1}} -\entry {log1p}{291}{\code {log1p}} -\entry {sinh}{291}{\code {sinh}} -\entry {cosh}{291}{\code {cosh}} -\entry {tanh}{291}{\code {tanh}} -\entry {asinh}{291}{\code {asinh}} -\entry {acosh}{291}{\code {acosh}} -\entry {atanh}{292}{\code {atanh}} -\entry {rand}{292}{\code {rand}} -\entry {srand}{293}{\code {srand}} -\entry {random}{293}{\code {random}} -\entry {srandom}{293}{\code {srandom}} -\entry {initstate}{293}{\code {initstate}} -\entry {setstate}{293}{\code {setstate}} -\entry {isinf}{295}{\code {isinf}} -\entry {isnan}{295}{\code {isnan}} -\entry {finite}{296}{\code {finite}} -\entry {infnan}{296}{\code {infnan}} -\entry {abs}{296}{\code {abs}} -\entry {labs}{296}{\code {labs}} -\entry {fabs}{296}{\code {fabs}} -\entry {cabs}{296}{\code {cabs}} -\entry {frexp}{297}{\code {frexp}} -\entry {ldexp}{297}{\code {ldexp}} -\entry {scalb}{297}{\code {scalb}} -\entry {logb}{297}{\code {logb}} -\entry {copysign}{298}{\code {copysign}} -\entry {ceil}{298}{\code {ceil}} -\entry {floor}{298}{\code {floor}} -\entry {rint}{298}{\code {rint}} -\entry {modf}{298}{\code {modf}} -\entry {fmod}{299}{\code {fmod}} -\entry {drem}{299}{\code {drem}} -\entry {div}{299}{\code {div}} -\entry {ldiv}{300}{\code {ldiv}} -\entry {strtol}{300}{\code {strtol}} -\entry {strtoul}{301}{\code {strtoul}} -\entry {strtoq}{302}{\code {strtoq}} -\entry {strtoll}{302}{\code {strtoll}} -\entry {strtouq}{302}{\code {strtouq}} -\entry {strtoull}{302}{\code {strtoull}} -\entry {atol}{302}{\code {atol}} -\entry {atoi}{302}{\code {atoi}} -\entry {strtod}{304}{\code {strtod}} -\entry {strtof}{304}{\code {strtof}} -\entry {strtold}{305}{\code {strtold}} -\entry {atof}{305}{\code {atof}} -\entry {bsearch}{307}{\code {bsearch}} -\entry {qsort}{308}{\code {qsort}} -\entry {fnmatch}{313}{\code {fnmatch}} -\entry {glob}{315}{\code {glob}} -\entry {regcomp}{318}{\code {regcomp}} -\entry {regexec}{320}{\code {regexec}} -\entry {regfree}{323}{\code {regfree}} -\entry {regerror}{323}{\code {regerror}} -\entry {wordexp}{325}{\code {wordexp}} -\entry {wordfree}{326}{\code {wordfree}} -\entry {clock}{330}{\code {clock}} -\entry {times}{331}{\code {times}} -\entry {difftime}{332}{\code {difftime}} -\entry {time}{332}{\code {time}} -\entry {gettimeofday}{334}{\code {gettimeofday}} -\entry {settimeofday}{334}{\code {settimeofday}} -\entry {adjtime}{334}{\code {adjtime}} -\entry {localtime}{336}{\code {localtime}} -\entry {gmtime}{337}{\code {gmtime}} -\entry {mktime}{337}{\code {mktime}} -\entry {asctime}{337}{\code {asctime}} -\entry {ctime}{338}{\code {ctime}} -\entry {strftime}{338}{\code {strftime}} -\entry {tzset}{344}{\code {tzset}} -\entry {setitimer}{347}{\code {setitimer}} -\entry {getitimer}{347}{\code {getitimer}} -\entry {ITIMER{\_}REAL}{347}{\code {ITIMER{\_}REAL}} -\entry {ITIMER{\_}VIRTUAL}{347}{\code {ITIMER{\_}VIRTUAL}} -\entry {ITIMER{\_}PROF}{347}{\code {ITIMER{\_}PROF}} -\entry {alarm}{348}{\code {alarm}} -\entry {sleep}{348}{\code {sleep}} -\entry {getrusage}{349}{\code {getrusage}} -\entry {getrlimit}{351}{\code {getrlimit}} -\entry {setrlimit}{352}{\code {setrlimit}} -\entry {getpriority}{354}{\code {getpriority}} -\entry {setpriority}{354}{\code {setpriority}} -\entry {nice}{355}{\code {nice}} -\entry {mbstowcs}{362}{\code {mbstowcs}} -\entry {wcstombs}{363}{\code {wcstombs}} -\entry {mblen}{363}{\code {mblen}} -\entry {mbtowc}{364}{\code {mbtowc}} -\entry {wctomb}{364}{\code {wctomb}} -\entry {setlocale}{371}{\code {setlocale}} -\entry {localeconv}{373}{\code {localeconv}} -\entry {setjmp}{381}{\code {setjmp}} -\entry {longjmp}{381}{\code {longjmp}} -\entry {sigsetjmp}{382}{\code {sigsetjmp}} -\entry {siglongjmp}{382}{\code {siglongjmp}} -\entry {strsignal}{395}{\code {strsignal}} -\entry {psignal}{395}{\code {psignal}} -\entry {signal}{396}{\code {signal}} -\entry {ssignal}{398}{\code {ssignal}} -\entry {sigaction}{399}{\code {sigaction}} -\entry {TEMP{\_}FAILURE{\_}RETRY}{414}{\code {TEMP{\_}FAILURE{\_}RETRY}} -\entry {raise}{416}{\code {raise}} -\entry {gsignal}{416}{\code {gsignal}} -\entry {kill}{417}{\code {kill}} -\entry {killpg}{418}{\code {killpg}} -\entry {sigemptyset}{421}{\code {sigemptyset}} -\entry {sigfillset}{421}{\code {sigfillset}} -\entry {sigaddset}{422}{\code {sigaddset}} -\entry {sigdelset}{422}{\code {sigdelset}} -\entry {sigismember}{422}{\code {sigismember}} -\entry {sigprocmask}{422}{\code {sigprocmask}} -\entry {sigpending}{425}{\code {sigpending}} -\entry {pause}{428}{\code {pause}} -\entry {sigsuspend}{429}{\code {sigsuspend}} -\entry {sigaltstack}{432}{\code {sigaltstack}} -\entry {sigstack}{432}{\code {sigstack}} -\entry {sigvec}{434}{\code {sigvec}} -\entry {siginterrupt}{434}{\code {siginterrupt}} -\entry {sigmask}{434}{\code {sigmask}} -\entry {sigblock}{434}{\code {sigblock}} -\entry {sigsetmask}{435}{\code {sigsetmask}} -\entry {sigpause}{435}{\code {sigpause}} -\entry {main}{437}{\code {main}} -\entry {getopt}{439}{\code {getopt}} -\entry {getopt{\_}long}{443}{\code {getopt{\_}long}} -\entry {getsubopt}{445}{\code {getsubopt}} -\entry {getenv}{448}{\code {getenv}} -\entry {putenv}{448}{\code {putenv}} -\entry {exit}{451}{\code {exit}} -\entry {atexit}{453}{\code {atexit}} -\entry {on{\_}exit}{453}{\code {on{\_}exit}} -\entry {abort}{454}{\code {abort}} -\entry {{\_}exit}{454}{\code {{\_}exit}} -\entry {system}{457}{\code {system}} -\entry {getpid}{459}{\code {getpid}} -\entry {getppid}{459}{\code {getppid}} -\entry {fork}{459}{\code {fork}} -\entry {vfork}{460}{\code {vfork}} -\entry {execv}{460}{\code {execv}} -\entry {execl}{461}{\code {execl}} -\entry {execve}{461}{\code {execve}} -\entry {execle}{461}{\code {execle}} -\entry {execvp}{461}{\code {execvp}} -\entry {execlp}{462}{\code {execlp}} -\entry {waitpid}{463}{\code {waitpid}} -\entry {wait}{465}{\code {wait}} -\entry {wait4}{465}{\code {wait4}} -\entry {WIFEXITED}{466}{\code {WIFEXITED}} -\entry {WEXITSTATUS}{466}{\code {WEXITSTATUS}} -\entry {WIFSIGNALED}{466}{\code {WIFSIGNALED}} -\entry {WTERMSIG}{466}{\code {WTERMSIG}} -\entry {WCOREDUMP}{466}{\code {WCOREDUMP}} -\entry {WIFSTOPPED}{467}{\code {WIFSTOPPED}} -\entry {WSTOPSIG}{467}{\code {WSTOPSIG}} -\entry {wait3}{467}{\code {wait3}} -\entry {ctermid}{488}{\code {ctermid}} -\entry {setsid}{489}{\code {setsid}} -\entry {getpgrp}{489}{\code {getpgrp}} -\entry {getpgrp}{489}{\code {getpgrp}} -\entry {setpgid}{490}{\code {setpgid}} -\entry {setpgrp}{490}{\code {setpgrp}} -\entry {tcgetpgrp}{490}{\code {tcgetpgrp}} -\entry {tcsetpgrp}{491}{\code {tcsetpgrp}} -\entry {success}{495}{\code {success}} -\entry {notfound}{495}{\code {notfound}} -\entry {unavail}{495}{\code {unavail}} -\entry {tryagain}{496}{\code {tryagain}} -\entry {NSS{\_}STATUS{\_}TRYAGAIN}{498}{\code {NSS{\_}STATUS{\_}TRYAGAIN}} -\entry {NSS{\_}STATUS{\_}UNAVAIL}{498}{\code {NSS{\_}STATUS{\_}UNAVAIL}} -\entry {NSS{\_}STATUS{\_}NOTFOUND}{499}{\code {NSS{\_}STATUS{\_}NOTFOUND}} -\entry {NSS{\_}STATUS{\_}SUCCESS}{499}{\code {NSS{\_}STATUS{\_}SUCCESS}} -\entry {getuid}{505}{\code {getuid}} -\entry {getgid}{506}{\code {getgid}} -\entry {geteuid}{506}{\code {geteuid}} -\entry {getegid}{506}{\code {getegid}} -\entry {getgroups}{506}{\code {getgroups}} -\entry {setuid}{506}{\code {setuid}} -\entry {setreuid}{507}{\code {setreuid}} -\entry {setgid}{507}{\code {setgid}} -\entry {setregid}{507}{\code {setregid}} -\entry {setgroups}{508}{\code {setgroups}} -\entry {initgroups}{508}{\code {initgroups}} -\entry {getlogin}{512}{\code {getlogin}} -\entry {cuserid}{512}{\code {cuserid}} -\entry {getpwuid}{514}{\code {getpwuid}} -\entry {getpwuid{\_}r}{514}{\code {getpwuid{\_}r}} -\entry {getpwnam}{515}{\code {getpwnam}} -\entry {getpwnam{\_}r}{515}{\code {getpwnam{\_}r}} -\entry {fgetpwent}{515}{\code {fgetpwent}} -\entry {fgetpwent{\_}r}{515}{\code {fgetpwent{\_}r}} -\entry {setpwent}{516}{\code {setpwent}} -\entry {getpwent}{516}{\code {getpwent}} -\entry {getpwent{\_}r}{516}{\code {getpwent{\_}r}} -\entry {endpwent}{516}{\code {endpwent}} -\entry {putpwent}{517}{\code {putpwent}} -\entry {getgrgid}{518}{\code {getgrgid}} -\entry {getgrgid{\_}r}{518}{\code {getgrgid{\_}r}} -\entry {getgrnam}{518}{\code {getgrnam}} -\entry {getgrnam{\_}r}{518}{\code {getgrnam{\_}r}} -\entry {fgetgrent}{519}{\code {fgetgrent}} -\entry {fgetgrent{\_}r}{519}{\code {fgetgrent{\_}r}} -\entry {setgrent}{519}{\code {setgrent}} -\entry {getgrent}{519}{\code {getgrent}} -\entry {getgrent{\_}r}{519}{\code {getgrent{\_}r}} -\entry {endgrent}{520}{\code {endgrent}} -\entry {setnetgrent}{521}{\code {setnetgrent}} -\entry {getnetgrent}{521}{\code {getnetgrent}} -\entry {getnetgrent{\_}r}{521}{\code {getnetgrent{\_}r}} -\entry {endnetgrent}{522}{\code {endnetgrent}} -\entry {innetgr}{522}{\code {innetgr}} -\entry {gethostname}{525}{\code {gethostname}} -\entry {sethostname}{525}{\code {sethostname}} -\entry {gethostid}{526}{\code {gethostid}} -\entry {sethostid}{526}{\code {sethostid}} -\entry {uname}{527}{\code {uname}} -\entry {sysconf}{533}{\code {sysconf}} -\entry {pathconf}{540}{\code {pathconf}} -\entry {fpathconf}{540}{\code {fpathconf}} -\entry {confstr}{543}{\code {confstr}} -\entry {assert}{545}{\code {assert}} -\entry {assert{\_}perror}{546}{\code {assert{\_}perror}} -\entry {va{\_}start}{551}{\code {va{\_}start}} -\entry {va{\_}arg}{551}{\code {va{\_}arg}} -\entry {va{\_}end}{551}{\code {va{\_}end}} -\entry {va{\_}alist}{553}{\code {va{\_}alist}} -\entry {va{\_}dcl}{553}{\code {va{\_}dcl}} -\entry {va{\_}start}{553}{\code {va{\_}start}} -\entry {offsetof}{562}{\code {offsetof}} +\entry{strerror}{27}{\code {strerror}} +\entry{perror}{27}{\code {perror}} +\entry{malloc}{32}{\code {malloc}} +\entry{free}{34}{\code {free}} +\entry{cfree}{34}{\code {cfree}} +\entry{realloc}{35}{\code {realloc}} +\entry{calloc}{36}{\code {calloc}} +\entry{memalign}{37}{\code {memalign}} +\entry{valloc}{37}{\code {valloc}} +\entry{mcheck}{38}{\code {mcheck}} +\entry{mprobe}{38}{\code {mprobe}} +\entry{mstats}{41}{\code {mstats}} +\entry{obstack{\_}chunk{\_}alloc}{43}{\code {obstack_chunk_alloc}} +\entry{obstack{\_}chunk{\_}free}{43}{\code {obstack_chunk_free}} +\entry{obstack{\_}init}{43}{\code {obstack_init}} +\entry{obstack{\_}alloc}{44}{\code {obstack_alloc}} +\entry{obstack{\_}copy}{45}{\code {obstack_copy}} +\entry{obstack{\_}copy0}{45}{\code {obstack_copy0}} +\entry{obstack{\_}free}{45}{\code {obstack_free}} +\entry{obstack{\_}blank}{47}{\code {obstack_blank}} +\entry{obstack{\_}grow}{47}{\code {obstack_grow}} +\entry{obstack{\_}grow0}{47}{\code {obstack_grow0}} +\entry{obstack{\_}1grow}{47}{\code {obstack_1grow}} +\entry{obstack{\_}ptr{\_}grow}{47}{\code {obstack_ptr_grow}} +\entry{obstack{\_}int{\_}grow}{47}{\code {obstack_int_grow}} +\entry{obstack{\_}finish}{48}{\code {obstack_finish}} +\entry{obstack{\_}object{\_}size}{48}{\code {obstack_object_size}} +\entry{obstack{\_}room}{49}{\code {obstack_room}} +\entry{obstack{\_}1grow{\_}fast}{49}{\code {obstack_1grow_fast}} +\entry{obstack{\_}ptr{\_}grow{\_}fast}{49}{\code {obstack_ptr_grow_fast}} +\entry{obstack{\_}int{\_}grow{\_}fast}{49}{\code {obstack_int_grow_fast}} +\entry{obstack{\_}blank{\_}fast}{49}{\code {obstack_blank_fast}} +\entry{obstack{\_}base}{50}{\code {obstack_base}} +\entry{obstack{\_}next{\_}free}{50}{\code {obstack_next_free}} +\entry{obstack{\_}object{\_}size}{51}{\code {obstack_object_size}} +\entry{obstack{\_}alignment{\_}mask}{51}{\code {obstack_alignment_mask}} +\entry{obstack{\_}chunk{\_}size}{52}{\code {obstack_chunk_size}} +\entry{alloca}{54}{\code {alloca}} +\entry{r{\_}alloc}{57}{\code {r_alloc}} +\entry{r{\_}alloc{\_}free}{57}{\code {r_alloc_free}} +\entry{r{\_}re{\_}alloc}{58}{\code {r_re_alloc}} +\entry{memory{\_}warnings}{58}{\code {memory_warnings}} +\entry{islower}{59}{\code {islower}} +\entry{isupper}{59}{\code {isupper}} +\entry{isalpha}{59}{\code {isalpha}} +\entry{isdigit}{60}{\code {isdigit}} +\entry{isalnum}{60}{\code {isalnum}} +\entry{isxdigit}{60}{\code {isxdigit}} +\entry{ispunct}{60}{\code {ispunct}} +\entry{isspace}{60}{\code {isspace}} +\entry{isblank}{60}{\code {isblank}} +\entry{isgraph}{60}{\code {isgraph}} +\entry{isprint}{60}{\code {isprint}} +\entry{iscntrl}{61}{\code {iscntrl}} +\entry{isascii}{61}{\code {isascii}} +\entry{tolower}{61}{\code {tolower}} +\entry{toupper}{61}{\code {toupper}} +\entry{toascii}{61}{\code {toascii}} +\entry{{\_}tolower}{61}{\code {_tolower}} +\entry{{\_}toupper}{61}{\code {_toupper}} +\entry{strlen}{65}{\code {strlen}} +\entry{memcpy}{66}{\code {memcpy}} +\entry{memmove}{66}{\code {memmove}} +\entry{memccpy}{66}{\code {memccpy}} +\entry{memset}{66}{\code {memset}} +\entry{strcpy}{66}{\code {strcpy}} +\entry{strncpy}{66}{\code {strncpy}} +\entry{strdup}{67}{\code {strdup}} +\entry{strndup}{67}{\code {strndup}} +\entry{stpcpy}{67}{\code {stpcpy}} +\entry{stpncpy}{68}{\code {stpncpy}} +\entry{strdupa}{68}{\code {strdupa}} +\entry{strndupa}{69}{\code {strndupa}} +\entry{strcat}{69}{\code {strcat}} +\entry{strncat}{69}{\code {strncat}} +\entry{bcopy}{70}{\code {bcopy}} +\entry{bzero}{70}{\code {bzero}} +\entry{memcmp}{71}{\code {memcmp}} +\entry{strcmp}{72}{\code {strcmp}} +\entry{strcasecmp}{72}{\code {strcasecmp}} +\entry{strncasecmp}{72}{\code {strncasecmp}} +\entry{strncmp}{72}{\code {strncmp}} +\entry{bcmp}{73}{\code {bcmp}} +\entry{strcoll}{73}{\code {strcoll}} +\entry{strxfrm}{74}{\code {strxfrm}} +\entry{memchr}{76}{\code {memchr}} +\entry{strchr}{76}{\code {strchr}} +\entry{index}{77}{\code {index}} +\entry{strrchr}{77}{\code {strrchr}} +\entry{rindex}{77}{\code {rindex}} +\entry{strstr}{77}{\code {strstr}} +\entry{memmem}{77}{\code {memmem}} +\entry{strspn}{77}{\code {strspn}} +\entry{strcspn}{78}{\code {strcspn}} +\entry{strpbrk}{78}{\code {strpbrk}} +\entry{strtok}{78}{\code {strtok}} +\entry{strtok{\_}r}{80}{\code {strtok_r}} +\entry{strsep}{80}{\code {strsep}} +\entry{fopen}{92}{\code {fopen}} +\entry{freopen}{94}{\code {freopen}} +\entry{fclose}{94}{\code {fclose}} +\entry{fcloseall}{95}{\code {fcloseall}} +\entry{fputc}{95}{\code {fputc}} +\entry{putc}{95}{\code {putc}} +\entry{putchar}{96}{\code {putchar}} +\entry{fputs}{96}{\code {fputs}} +\entry{puts}{96}{\code {puts}} +\entry{putw}{96}{\code {putw}} +\entry{fgetc}{97}{\code {fgetc}} +\entry{getc}{97}{\code {getc}} +\entry{getchar}{97}{\code {getchar}} +\entry{getw}{98}{\code {getw}} +\entry{getline}{98}{\code {getline}} +\entry{getdelim}{99}{\code {getdelim}} +\entry{fgets}{99}{\code {fgets}} +\entry{gets}{99}{\code {gets}} +\entry{ungetc}{101}{\code {ungetc}} +\entry{fread}{102}{\code {fread}} +\entry{fwrite}{102}{\code {fwrite}} +\entry{printf}{111}{\code {printf}} +\entry{fprintf}{111}{\code {fprintf}} +\entry{sprintf}{111}{\code {sprintf}} +\entry{snprintf}{112}{\code {snprintf}} +\entry{asprintf}{112}{\code {asprintf}} +\entry{obstack{\_}printf}{113}{\code {obstack_printf}} +\entry{vprintf}{114}{\code {vprintf}} +\entry{vfprintf}{114}{\code {vfprintf}} +\entry{vsprintf}{114}{\code {vsprintf}} +\entry{vsnprintf}{114}{\code {vsnprintf}} +\entry{vasprintf}{115}{\code {vasprintf}} +\entry{obstack{\_}vprintf}{115}{\code {obstack_vprintf}} +\entry{parse{\_}printf{\_}format}{116}{\code {parse_printf_format}} +\entry{register{\_}printf{\_}function}{119}{\code {register_printf_function}} +\entry{scanf}{132}{\code {scanf}} +\entry{fscanf}{132}{\code {fscanf}} +\entry{sscanf}{132}{\code {sscanf}} +\entry{vscanf}{132}{\code {vscanf}} +\entry{vfscanf}{133}{\code {vfscanf}} +\entry{vsscanf}{133}{\code {vsscanf}} +\entry{clearerr}{133}{\code {clearerr}} +\entry{feof}{133}{\code {feof}} +\entry{ferror}{134}{\code {ferror}} +\entry{ftell}{135}{\code {ftell}} +\entry{fseek}{135}{\code {fseek}} +\entry{rewind}{136}{\code {rewind}} +\entry{fgetpos}{137}{\code {fgetpos}} +\entry{fsetpos}{137}{\code {fsetpos}} +\entry{fflush}{139}{\code {fflush}} +\entry{setvbuf}{139}{\code {setvbuf}} +\entry{setbuf}{141}{\code {setbuf}} +\entry{setbuffer}{141}{\code {setbuffer}} +\entry{setlinebuf}{141}{\code {setlinebuf}} +\entry{fmemopen}{142}{\code {fmemopen}} +\entry{open{\_}memstream}{143}{\code {open_memstream}} +\entry{open{\_}obstack{\_}stream}{144}{\code {open_obstack_stream}} +\entry{fopencookie}{146}{\code {fopencookie}} +\entry{open}{149}{\code {open}} +\entry{creat}{150}{\code {creat}} +\entry{close}{150}{\code {close}} +\entry{read}{151}{\code {read}} +\entry{write}{153}{\code {write}} +\entry{lseek}{155}{\code {lseek}} +\entry{fdopen}{157}{\code {fdopen}} +\entry{fileno}{157}{\code {fileno}} +\entry{fclean}{159}{\code {fclean}} +\entry{FD{\_}ZERO}{161}{\code {FD_ZERO}} +\entry{FD{\_}SET}{161}{\code {FD_SET}} +\entry{FD{\_}CLR}{161}{\code {FD_CLR}} +\entry{FD{\_}ISSET}{161}{\code {FD_ISSET}} +\entry{select}{161}{\code {select}} +\entry{fcntl}{163}{\code {fcntl}} +\entry{dup}{165}{\code {dup}} +\entry{dup2}{165}{\code {dup2}} +\entry{getcwd}{179}{\code {getcwd}} +\entry{getwd}{180}{\code {getwd}} +\entry{chdir}{180}{\code {chdir}} +\entry{IFTODT}{182}{\code {IFTODT}} +\entry{DTTOIF}{182}{\code {DTTOIF}} +\entry{opendir}{182}{\code {opendir}} +\entry{readdir}{183}{\code {readdir}} +\entry{readdir{\_}r}{183}{\code {readdir_r}} +\entry{closedir}{184}{\code {closedir}} +\entry{rewinddir}{185}{\code {rewinddir}} +\entry{telldir}{185}{\code {telldir}} +\entry{seekdir}{185}{\code {seekdir}} +\entry{scandir}{185}{\code {scandir}} +\entry{alphasort}{186}{\code {alphasort}} +\entry{link}{187}{\code {link}} +\entry{symlink}{189}{\code {symlink}} +\entry{readlink}{189}{\code {readlink}} +\entry{unlink}{190}{\code {unlink}} +\entry{rmdir}{191}{\code {rmdir}} +\entry{remove}{191}{\code {remove}} +\entry{rename}{191}{\code {rename}} +\entry{mkdir}{193}{\code {mkdir}} +\entry{stat}{196}{\code {stat}} +\entry{fstat}{196}{\code {fstat}} +\entry{lstat}{196}{\code {lstat}} +\entry{S{\_}ISDIR}{197}{\code {S_ISDIR}} +\entry{S{\_}ISCHR}{197}{\code {S_ISCHR}} +\entry{S{\_}ISBLK}{197}{\code {S_ISBLK}} +\entry{S{\_}ISREG}{197}{\code {S_ISREG}} +\entry{S{\_}ISFIFO}{197}{\code {S_ISFIFO}} +\entry{S{\_}ISLNK}{197}{\code {S_ISLNK}} +\entry{S{\_}ISSOCK}{197}{\code {S_ISSOCK}} +\entry{chown}{199}{\code {chown}} +\entry{fchown}{199}{\code {fchown}} +\entry{chmod}{202}{\code {chmod}} +\entry{umask}{203}{\code {umask}} +\entry{getumask}{203}{\code {getumask}} +\entry{chmod}{203}{\code {chmod}} +\entry{fchmod}{204}{\code {fchmod}} +\entry{access}{205}{\code {access}} +\entry{utime}{207}{\code {utime}} +\entry{utimes}{207}{\code {utimes}} +\entry{mknod}{208}{\code {mknod}} +\entry{tmpfile}{209}{\code {tmpfile}} +\entry{tmpnam}{209}{\code {tmpnam}} +\entry{tmpnam{\_}r}{209}{\code {tmpnam_r}} +\entry{tempnam}{210}{\code {tempnam}} +\entry{mktemp}{210}{\code {mktemp}} +\entry{mkstemp}{210}{\code {mkstemp}} +\entry{pipe}{213}{\code {pipe}} +\entry{popen}{215}{\code {popen}} +\entry{pclose}{216}{\code {pclose}} +\entry{mkfifo}{217}{\code {mkfifo}} +\entry{bind}{223}{\code {bind}} +\entry{getsockname}{224}{\code {getsockname}} +\entry{inet{\_}aton}{230}{\code {inet_aton}} +\entry{inet{\_}addr}{230}{\code {inet_addr}} +\entry{inet{\_}network}{230}{\code {inet_network}} +\entry{inet{\_}ntoa}{231}{\code {inet_ntoa}} +\entry{inet{\_}makeaddr}{231}{\code {inet_makeaddr}} +\entry{inet{\_}lnaof}{231}{\code {inet_lnaof}} +\entry{inet{\_}netof}{231}{\code {inet_netof}} +\entry{gethostbyname}{232}{\code {gethostbyname}} +\entry{gethostbyaddr}{232}{\code {gethostbyaddr}} +\entry{sethostent}{233}{\code {sethostent}} +\entry{gethostent}{233}{\code {gethostent}} +\entry{endhostent}{233}{\code {endhostent}} +\entry{getservbyname}{235}{\code {getservbyname}} +\entry{getservbyport}{235}{\code {getservbyport}} +\entry{setservent}{235}{\code {setservent}} +\entry{getservent}{235}{\code {getservent}} +\entry{endservent}{235}{\code {endservent}} +\entry{htons}{236}{\code {htons}} +\entry{ntohs}{236}{\code {ntohs}} +\entry{htonl}{236}{\code {htonl}} +\entry{ntohl}{236}{\code {ntohl}} +\entry{getprotobyname}{237}{\code {getprotobyname}} +\entry{getprotobynumber}{237}{\code {getprotobynumber}} +\entry{setprotoent}{238}{\code {setprotoent}} +\entry{getprotoent}{238}{\code {getprotoent}} +\entry{endprotoent}{238}{\code {endprotoent}} +\entry{socket}{240}{\code {socket}} +\entry{shutdown}{241}{\code {shutdown}} +\entry{socketpair}{241}{\code {socketpair}} +\entry{connect}{243}{\code {connect}} +\entry{listen}{244}{\code {listen}} +\entry{accept}{245}{\code {accept}} +\entry{getpeername}{246}{\code {getpeername}} +\entry{send}{247}{\code {send}} +\entry{recv}{248}{\code {recv}} +\entry{sendto}{257}{\code {sendto}} +\entry{recvfrom}{257}{\code {recvfrom}} +\entry{getsockopt}{262}{\code {getsockopt}} +\entry{setsockopt}{263}{\code {setsockopt}} +\entry{getnetbyname}{266}{\code {getnetbyname}} +\entry{getnetbyaddr}{266}{\code {getnetbyaddr}} +\entry{setnetent}{266}{\code {setnetent}} +\entry{getnetent}{266}{\code {getnetent}} +\entry{endnetent}{266}{\code {endnetent}} +\entry{isatty}{267}{\code {isatty}} +\entry{ttyname}{267}{\code {ttyname}} +\entry{tcgetattr}{270}{\code {tcgetattr}} +\entry{tcsetattr}{270}{\code {tcsetattr}} +\entry{cfgetospeed}{281}{\code {cfgetospeed}} +\entry{cfgetispeed}{281}{\code {cfgetispeed}} +\entry{cfsetospeed}{281}{\code {cfsetospeed}} +\entry{cfsetispeed}{281}{\code {cfsetispeed}} +\entry{cfsetspeed}{281}{\code {cfsetspeed}} +\entry{cfmakeraw}{288}{\code {cfmakeraw}} +\entry{tcsendbreak}{289}{\code {tcsendbreak}} +\entry{tcdrain}{289}{\code {tcdrain}} +\entry{tcflush}{290}{\code {tcflush}} +\entry{tcflow}{290}{\code {tcflow}} +\entry{sin}{294}{\code {sin}} +\entry{cos}{294}{\code {cos}} +\entry{tan}{294}{\code {tan}} +\entry{asin}{295}{\code {asin}} +\entry{acos}{295}{\code {acos}} +\entry{atan}{295}{\code {atan}} +\entry{atan2}{295}{\code {atan2}} +\entry{exp}{296}{\code {exp}} +\entry{log}{296}{\code {log}} +\entry{log10}{296}{\code {log10}} +\entry{pow}{296}{\code {pow}} +\entry{sqrt}{296}{\code {sqrt}} +\entry{cbrt}{296}{\code {cbrt}} +\entry{hypot}{297}{\code {hypot}} +\entry{expm1}{297}{\code {expm1}} +\entry{log1p}{297}{\code {log1p}} +\entry{sinh}{297}{\code {sinh}} +\entry{cosh}{297}{\code {cosh}} +\entry{tanh}{297}{\code {tanh}} +\entry{asinh}{297}{\code {asinh}} +\entry{acosh}{297}{\code {acosh}} +\entry{atanh}{298}{\code {atanh}} +\entry{rand}{298}{\code {rand}} +\entry{srand}{299}{\code {srand}} +\entry{random}{299}{\code {random}} +\entry{srandom}{299}{\code {srandom}} +\entry{initstate}{299}{\code {initstate}} +\entry{setstate}{299}{\code {setstate}} +\entry{isinf}{301}{\code {isinf}} +\entry{isnan}{301}{\code {isnan}} +\entry{finite}{302}{\code {finite}} +\entry{infnan}{302}{\code {infnan}} +\entry{abs}{302}{\code {abs}} +\entry{labs}{302}{\code {labs}} +\entry{fabs}{302}{\code {fabs}} +\entry{cabs}{302}{\code {cabs}} +\entry{frexp}{303}{\code {frexp}} +\entry{ldexp}{303}{\code {ldexp}} +\entry{scalb}{303}{\code {scalb}} +\entry{logb}{303}{\code {logb}} +\entry{copysign}{304}{\code {copysign}} +\entry{ceil}{304}{\code {ceil}} +\entry{floor}{304}{\code {floor}} +\entry{rint}{304}{\code {rint}} +\entry{modf}{304}{\code {modf}} +\entry{fmod}{305}{\code {fmod}} +\entry{drem}{305}{\code {drem}} +\entry{div}{305}{\code {div}} +\entry{ldiv}{306}{\code {ldiv}} +\entry{strtol}{306}{\code {strtol}} +\entry{strtoul}{307}{\code {strtoul}} +\entry{strtoq}{307}{\code {strtoq}} +\entry{strtoll}{308}{\code {strtoll}} +\entry{strtouq}{308}{\code {strtouq}} +\entry{strtoull}{308}{\code {strtoull}} +\entry{atol}{308}{\code {atol}} +\entry{atoi}{308}{\code {atoi}} +\entry{strtod}{310}{\code {strtod}} +\entry{strtof}{310}{\code {strtof}} +\entry{strtold}{311}{\code {strtold}} +\entry{atof}{311}{\code {atof}} +\entry{bsearch}{313}{\code {bsearch}} +\entry{qsort}{314}{\code {qsort}} +\entry{fnmatch}{319}{\code {fnmatch}} +\entry{glob}{321}{\code {glob}} +\entry{regcomp}{324}{\code {regcomp}} +\entry{regexec}{326}{\code {regexec}} +\entry{regfree}{329}{\code {regfree}} +\entry{regerror}{329}{\code {regerror}} +\entry{wordexp}{331}{\code {wordexp}} +\entry{wordfree}{332}{\code {wordfree}} +\entry{clock}{336}{\code {clock}} +\entry{times}{337}{\code {times}} +\entry{difftime}{338}{\code {difftime}} +\entry{time}{338}{\code {time}} +\entry{gettimeofday}{340}{\code {gettimeofday}} +\entry{settimeofday}{340}{\code {settimeofday}} +\entry{adjtime}{340}{\code {adjtime}} +\entry{localtime}{342}{\code {localtime}} +\entry{gmtime}{343}{\code {gmtime}} +\entry{mktime}{343}{\code {mktime}} +\entry{asctime}{343}{\code {asctime}} +\entry{ctime}{344}{\code {ctime}} +\entry{strftime}{344}{\code {strftime}} +\entry{tzset}{351}{\code {tzset}} +\entry{setitimer}{353}{\code {setitimer}} +\entry{getitimer}{353}{\code {getitimer}} +\entry{ITIMER{\_}REAL}{354}{\code {ITIMER_REAL}} +\entry{ITIMER{\_}VIRTUAL}{354}{\code {ITIMER_VIRTUAL}} +\entry{ITIMER{\_}PROF}{354}{\code {ITIMER_PROF}} +\entry{alarm}{354}{\code {alarm}} +\entry{sleep}{355}{\code {sleep}} +\entry{getrusage}{356}{\code {getrusage}} +\entry{getrlimit}{358}{\code {getrlimit}} +\entry{setrlimit}{358}{\code {setrlimit}} +\entry{getpriority}{360}{\code {getpriority}} +\entry{setpriority}{360}{\code {setpriority}} +\entry{nice}{361}{\code {nice}} +\entry{mbstowcs}{368}{\code {mbstowcs}} +\entry{wcstombs}{368}{\code {wcstombs}} +\entry{mblen}{369}{\code {mblen}} +\entry{mbtowc}{370}{\code {mbtowc}} +\entry{wctomb}{370}{\code {wctomb}} +\entry{setlocale}{377}{\code {setlocale}} +\entry{localeconv}{379}{\code {localeconv}} +\entry{setjmp}{387}{\code {setjmp}} +\entry{longjmp}{387}{\code {longjmp}} +\entry{sigsetjmp}{388}{\code {sigsetjmp}} +\entry{siglongjmp}{388}{\code {siglongjmp}} +\entry{strsignal}{401}{\code {strsignal}} +\entry{psignal}{401}{\code {psignal}} +\entry{signal}{402}{\code {signal}} +\entry{ssignal}{404}{\code {ssignal}} +\entry{sigaction}{405}{\code {sigaction}} +\entry{TEMP{\_}FAILURE{\_}RETRY}{421}{\code {TEMP_FAILURE_RETRY}} +\entry{raise}{422}{\code {raise}} +\entry{gsignal}{423}{\code {gsignal}} +\entry{kill}{424}{\code {kill}} +\entry{killpg}{425}{\code {killpg}} +\entry{sigemptyset}{429}{\code {sigemptyset}} +\entry{sigfillset}{429}{\code {sigfillset}} +\entry{sigaddset}{429}{\code {sigaddset}} +\entry{sigdelset}{429}{\code {sigdelset}} +\entry{sigismember}{429}{\code {sigismember}} +\entry{sigprocmask}{430}{\code {sigprocmask}} +\entry{sigpending}{433}{\code {sigpending}} +\entry{pause}{436}{\code {pause}} +\entry{sigsuspend}{437}{\code {sigsuspend}} +\entry{sigaltstack}{439}{\code {sigaltstack}} +\entry{sigstack}{440}{\code {sigstack}} +\entry{sigvec}{442}{\code {sigvec}} +\entry{siginterrupt}{442}{\code {siginterrupt}} +\entry{sigmask}{442}{\code {sigmask}} +\entry{sigblock}{442}{\code {sigblock}} +\entry{sigsetmask}{442}{\code {sigsetmask}} +\entry{sigpause}{442}{\code {sigpause}} +\entry{main}{443}{\code {main}} +\entry{getopt}{445}{\code {getopt}} +\entry{getopt{\_}long}{449}{\code {getopt_long}} +\entry{getsubopt}{452}{\code {getsubopt}} +\entry{getenv}{455}{\code {getenv}} +\entry{putenv}{455}{\code {putenv}} +\entry{exit}{458}{\code {exit}} +\entry{atexit}{460}{\code {atexit}} +\entry{on{\_}exit}{460}{\code {on_exit}} +\entry{abort}{461}{\code {abort}} +\entry{{\_}exit}{461}{\code {_exit}} +\entry{system}{463}{\code {system}} +\entry{getpid}{464}{\code {getpid}} +\entry{getppid}{465}{\code {getppid}} +\entry{fork}{465}{\code {fork}} +\entry{vfork}{466}{\code {vfork}} +\entry{execv}{466}{\code {execv}} +\entry{execl}{467}{\code {execl}} +\entry{execve}{467}{\code {execve}} +\entry{execle}{467}{\code {execle}} +\entry{execvp}{467}{\code {execvp}} +\entry{execlp}{467}{\code {execlp}} +\entry{waitpid}{469}{\code {waitpid}} +\entry{wait}{471}{\code {wait}} +\entry{wait4}{471}{\code {wait4}} +\entry{WIFEXITED}{472}{\code {WIFEXITED}} +\entry{WEXITSTATUS}{472}{\code {WEXITSTATUS}} +\entry{WIFSIGNALED}{472}{\code {WIFSIGNALED}} +\entry{WTERMSIG}{472}{\code {WTERMSIG}} +\entry{WCOREDUMP}{472}{\code {WCOREDUMP}} +\entry{WIFSTOPPED}{472}{\code {WIFSTOPPED}} +\entry{WSTOPSIG}{472}{\code {WSTOPSIG}} +\entry{wait3}{473}{\code {wait3}} +\entry{ctermid}{493}{\code {ctermid}} +\entry{setsid}{494}{\code {setsid}} +\entry{getpgrp}{495}{\code {getpgrp}} +\entry{getpgrp}{495}{\code {getpgrp}} +\entry{setpgid}{495}{\code {setpgid}} +\entry{setpgrp}{495}{\code {setpgrp}} +\entry{tcgetpgrp}{496}{\code {tcgetpgrp}} +\entry{tcsetpgrp}{496}{\code {tcsetpgrp}} +\entry{success}{499}{\code {success}} +\entry{notfound}{499}{\code {notfound}} +\entry{unavail}{499}{\code {unavail}} +\entry{success}{499}{\code {success}} +\entry{notfound}{499}{\code {notfound}} +\entry{unavail}{499}{\code {unavail}} +\entry{tryagain}{499}{\code {tryagain}} +\entry{tryagain}{499}{\code {tryagain}} +\entry{NSS{\_}STATUS{\_}TRYAGAIN}{502}{\code {NSS_STATUS_TRYAGAIN}} +\entry{NSS{\_}STATUS{\_}UNAVAIL}{502}{\code {NSS_STATUS_UNAVAIL}} +\entry{NSS{\_}STATUS{\_}NOTFOUND}{502}{\code {NSS_STATUS_NOTFOUND}} +\entry{NSS{\_}STATUS{\_}SUCCESS}{502}{\code {NSS_STATUS_SUCCESS}} +\entry{NSS{\_}STATUS{\_}TRYAGAIN}{502}{\code {NSS_STATUS_TRYAGAIN}} +\entry{NSS{\_}STATUS{\_}UNAVAIL}{502}{\code {NSS_STATUS_UNAVAIL}} +\entry{NSS{\_}STATUS{\_}NOTFOUND}{502}{\code {NSS_STATUS_NOTFOUND}} +\entry{NSS{\_}STATUS{\_}SUCCESS}{503}{\code {NSS_STATUS_SUCCESS}} +\entry{getuid}{509}{\code {getuid}} +\entry{getgid}{509}{\code {getgid}} +\entry{geteuid}{509}{\code {geteuid}} +\entry{getegid}{510}{\code {getegid}} +\entry{getgroups}{510}{\code {getgroups}} +\entry{setuid}{510}{\code {setuid}} +\entry{setreuid}{511}{\code {setreuid}} +\entry{setgid}{511}{\code {setgid}} +\entry{setregid}{511}{\code {setregid}} +\entry{setgroups}{512}{\code {setgroups}} +\entry{initgroups}{512}{\code {initgroups}} +\entry{getlogin}{516}{\code {getlogin}} +\entry{cuserid}{517}{\code {cuserid}} +\entry{getpwuid}{518}{\code {getpwuid}} +\entry{getpwuid{\_}r}{518}{\code {getpwuid_r}} +\entry{getpwnam}{519}{\code {getpwnam}} +\entry{getpwnam{\_}r}{519}{\code {getpwnam_r}} +\entry{fgetpwent}{519}{\code {fgetpwent}} +\entry{fgetpwent{\_}r}{519}{\code {fgetpwent_r}} +\entry{setpwent}{520}{\code {setpwent}} +\entry{getpwent}{520}{\code {getpwent}} +\entry{getpwent{\_}r}{520}{\code {getpwent_r}} +\entry{endpwent}{520}{\code {endpwent}} +\entry{putpwent}{521}{\code {putpwent}} +\entry{getgrgid}{522}{\code {getgrgid}} +\entry{getgrgid{\_}r}{522}{\code {getgrgid_r}} +\entry{getgrnam}{522}{\code {getgrnam}} +\entry{getgrnam{\_}r}{522}{\code {getgrnam_r}} +\entry{fgetgrent}{523}{\code {fgetgrent}} +\entry{fgetgrent{\_}r}{523}{\code {fgetgrent_r}} +\entry{setgrent}{523}{\code {setgrent}} +\entry{getgrent}{523}{\code {getgrent}} +\entry{getgrent{\_}r}{523}{\code {getgrent_r}} +\entry{endgrent}{524}{\code {endgrent}} +\entry{setnetgrent}{525}{\code {setnetgrent}} +\entry{getnetgrent}{525}{\code {getnetgrent}} +\entry{getnetgrent{\_}r}{525}{\code {getnetgrent_r}} +\entry{endnetgrent}{526}{\code {endnetgrent}} +\entry{innetgr}{526}{\code {innetgr}} +\entry{gethostname}{529}{\code {gethostname}} +\entry{sethostname}{529}{\code {sethostname}} +\entry{gethostid}{530}{\code {gethostid}} +\entry{sethostid}{530}{\code {sethostid}} +\entry{uname}{531}{\code {uname}} +\entry{sysconf}{537}{\code {sysconf}} +\entry{pathconf}{544}{\code {pathconf}} +\entry{fpathconf}{544}{\code {fpathconf}} +\entry{confstr}{547}{\code {confstr}} +\entry{assert}{549}{\code {assert}} +\entry{assert{\_}perror}{550}{\code {assert_perror}} +\entry{va{\_}start}{555}{\code {va_start}} +\entry{va{\_}arg}{555}{\code {va_arg}} +\entry{va{\_}end}{555}{\code {va_end}} +\entry{va{\_}alist}{557}{\code {va_alist}} +\entry{va{\_}dcl}{557}{\code {va_dcl}} +\entry{va{\_}start}{557}{\code {va_start}} +\entry{offsetof}{567}{\code {offsetof}} diff -durpN glibc-2.0.1/manual/libc.fns glibc-2.0.2/manual/libc.fns --- glibc-2.0.1/manual/libc.fns Mon Nov 4 17:58:25 1996 +++ glibc-2.0.2/manual/libc.fns Tue Mar 18 22:30:15 1997 @@ -1,256 +1,258 @@ \initial {{\_}} -\entry {\code {{\_}exit}}{454} -\entry {\code {{\_}tolower}}{61} -\entry {\code {{\_}toupper}}{61} +\entry {\code {_exit}}{461} +\entry {\code {_tolower}}{61} +\entry {\code {_toupper}}{61} \initial {A} -\entry {\code {abort}}{454} -\entry {\code {abs}}{296} -\entry {\code {accept}}{239} -\entry {\code {access}}{199} -\entry {\code {acos}}{289} -\entry {\code {acosh}}{291} -\entry {\code {adjtime}}{334} -\entry {\code {alarm}}{348} -\entry {\code {alloca}}{53} -\entry {\code {asctime}}{337} -\entry {\code {asin}}{289} -\entry {\code {asinh}}{291} -\entry {\code {asprintf}}{110} -\entry {\code {assert}}{545} -\entry {\code {assert{\_}perror}}{546} -\entry {\code {atan}}{289} -\entry {\code {atan2}}{289} -\entry {\code {atanh}}{292} -\entry {\code {atexit}}{453} -\entry {\code {atof}}{305} -\entry {\code {atoi}}{302} -\entry {\code {atol}}{302} +\entry {\code {abort}}{461} +\entry {\code {abs}}{302} +\entry {\code {accept}}{245} +\entry {\code {access}}{205} +\entry {\code {acos}}{295} +\entry {\code {acosh}}{297} +\entry {\code {adjtime}}{340} +\entry {\code {alarm}}{354} +\entry {\code {alloca}}{54} +\entry {\code {alphasort}}{186} +\entry {\code {asctime}}{343} +\entry {\code {asin}}{295} +\entry {\code {asinh}}{297} +\entry {\code {asprintf}}{112} +\entry {\code {assert}}{549} +\entry {\code {assert_perror}}{550} +\entry {\code {atan}}{295} +\entry {\code {atan2}}{295} +\entry {\code {atanh}}{298} +\entry {\code {atexit}}{460} +\entry {\code {atof}}{311} +\entry {\code {atoi}}{308} +\entry {\code {atol}}{308} \initial {B} -\entry {\code {bcmp}}{72} +\entry {\code {bcmp}}{73} \entry {\code {bcopy}}{70} -\entry {\code {bind}}{217} -\entry {\code {bsearch}}{307} +\entry {\code {bind}}{223} +\entry {\code {bsearch}}{313} \entry {\code {bzero}}{70} \initial {C} -\entry {\code {cabs}}{296} +\entry {\code {cabs}}{302} \entry {\code {calloc}}{36} -\entry {\code {cbrt}}{290} -\entry {\code {ceil}}{298} -\entry {\code {cfgetispeed}}{275} -\entry {\code {cfgetospeed}}{275} -\entry {\code {cfmakeraw}}{283} +\entry {\code {cbrt}}{296} +\entry {\code {ceil}}{304} +\entry {\code {cfgetispeed}}{281} +\entry {\code {cfgetospeed}}{281} +\entry {\code {cfmakeraw}}{288} \entry {\code {cfree}}{34} -\entry {\code {cfsetispeed}}{275} -\entry {\code {cfsetospeed}}{275} -\entry {\code {cfsetspeed}}{275} -\entry {\code {chdir}}{176} -\entry {\code {chmod}}{197, 198} -\entry {\code {chown}}{193} -\entry {\code {clearerr}}{130} -\entry {\code {clock}}{330} -\entry {\code {close}}{147} -\entry {\code {closedir}}{180} -\entry {\code {confstr}}{543} -\entry {\code {connect}}{237} -\entry {\code {copysign}}{298} -\entry {\code {cos}}{288} -\entry {\code {cosh}}{291} -\entry {\code {creat}}{146} -\entry {\code {ctermid}}{488} -\entry {\code {ctime}}{338} -\entry {\code {cuserid}}{512} +\entry {\code {cfsetispeed}}{281} +\entry {\code {cfsetospeed}}{281} +\entry {\code {cfsetspeed}}{281} +\entry {\code {chdir}}{180} +\entry {\code {chmod}}{202, 203} +\entry {\code {chown}}{199} +\entry {\code {clearerr}}{133} +\entry {\code {clock}}{336} +\entry {\code {close}}{150} +\entry {\code {closedir}}{184} +\entry {\code {confstr}}{547} +\entry {\code {connect}}{243} +\entry {\code {copysign}}{304} +\entry {\code {cos}}{294} +\entry {\code {cosh}}{297} +\entry {\code {creat}}{150} +\entry {\code {ctermid}}{493} +\entry {\code {ctime}}{344} +\entry {\code {cuserid}}{517} \initial {D} -\entry {\code {difftime}}{332} -\entry {\code {div}}{299} -\entry {\code {drem}}{299} -\entry {\code {DTTOIF}}{178} -\entry {\code {dup}}{161} -\entry {\code {dup2}}{161} +\entry {\code {difftime}}{338} +\entry {\code {div}}{305} +\entry {\code {drem}}{305} +\entry {\code {DTTOIF}}{182} +\entry {\code {dup}}{165} +\entry {\code {dup2}}{165} \initial {E} -\entry {\code {endgrent}}{520} -\entry {\code {endhostent}}{227} -\entry {\code {endnetent}}{259} -\entry {\code {endnetgrent}}{522} -\entry {\code {endprotoent}}{232} -\entry {\code {endpwent}}{516} -\entry {\code {endservent}}{230} -\entry {\code {execl}}{461} -\entry {\code {execle}}{461} -\entry {\code {execlp}}{462} -\entry {\code {execv}}{460} -\entry {\code {execve}}{461} -\entry {\code {execvp}}{461} -\entry {\code {exit}}{451} -\entry {\code {exp}}{290} -\entry {\code {expm1}}{291} +\entry {\code {endgrent}}{524} +\entry {\code {endhostent}}{233} +\entry {\code {endnetent}}{266} +\entry {\code {endnetgrent}}{526} +\entry {\code {endprotoent}}{238} +\entry {\code {endpwent}}{520} +\entry {\code {endservent}}{235} +\entry {\code {execl}}{467} +\entry {\code {execle}}{467} +\entry {\code {execlp}}{467} +\entry {\code {execv}}{466} +\entry {\code {execve}}{467} +\entry {\code {execvp}}{467} +\entry {\code {exit}}{458} +\entry {\code {exp}}{296} +\entry {\code {expm1}}{297} \initial {F} -\entry {\code {fabs}}{296} -\entry {\code {fchmod}}{198} -\entry {\code {fchown}}{194} -\entry {\code {fclean}}{155} -\entry {\code {fclose}}{92} -\entry {\code {fcntl}}{160} -\entry {\code {FD{\_}CLR}}{157} -\entry {\code {FD{\_}ISSET}}{157} -\entry {\code {FD{\_}SET}}{157} -\entry {\code {FD{\_}ZERO}}{157} -\entry {\code {fdopen}}{153} -\entry {\code {feof}}{130} -\entry {\code {ferror}}{130} -\entry {\code {fflush}}{136} -\entry {\code {fgetc}}{94} -\entry {\code {fgetgrent}}{519} -\entry {\code {fgetgrent{\_}r}}{519} -\entry {\code {fgetpos}}{134} -\entry {\code {fgetpwent}}{515} -\entry {\code {fgetpwent{\_}r}}{515} -\entry {\code {fgets}}{97} -\entry {\code {fileno}}{153} -\entry {\code {finite}}{296} -\entry {\code {floor}}{298} -\entry {\code {fmemopen}}{139} -\entry {\code {fmod}}{299} -\entry {\code {fnmatch}}{313} -\entry {\code {fopen}}{90} -\entry {\code {fopencookie}}{143} -\entry {\code {fork}}{459} -\entry {\code {fpathconf}}{540} -\entry {\code {fprintf}}{109} -\entry {\code {fputc}}{93} -\entry {\code {fputs}}{93} -\entry {\code {fread}}{100} +\entry {\code {fabs}}{302} +\entry {\code {fchmod}}{204} +\entry {\code {fchown}}{199} +\entry {\code {fclean}}{159} +\entry {\code {fclose}}{94} +\entry {\code {fcloseall}}{95} +\entry {\code {fcntl}}{163} +\entry {\code {FD_CLR}}{161} +\entry {\code {FD_ISSET}}{161} +\entry {\code {FD_SET}}{161} +\entry {\code {FD_ZERO}}{161} +\entry {\code {fdopen}}{157} +\entry {\code {feof}}{133} +\entry {\code {ferror}}{134} +\entry {\code {fflush}}{139} +\entry {\code {fgetc}}{97} +\entry {\code {fgetgrent}}{523} +\entry {\code {fgetgrent_r}}{523} +\entry {\code {fgetpos}}{137} +\entry {\code {fgetpwent}}{519} +\entry {\code {fgetpwent_r}}{519} +\entry {\code {fgets}}{99} +\entry {\code {fileno}}{157} +\entry {\code {finite}}{302} +\entry {\code {floor}}{304} +\entry {\code {fmemopen}}{142} +\entry {\code {fmod}}{305} +\entry {\code {fnmatch}}{319} +\entry {\code {fopen}}{92} +\entry {\code {fopencookie}}{146} +\entry {\code {fork}}{465} +\entry {\code {fpathconf}}{544} +\entry {\code {fprintf}}{111} +\entry {\code {fputc}}{95} +\entry {\code {fputs}}{96} +\entry {\code {fread}}{102} \entry {\code {free}}{34} -\entry {\code {freopen}}{92} -\entry {\code {frexp}}{297} -\entry {\code {fscanf}}{129} -\entry {\code {fseek}}{132} -\entry {\code {fsetpos}}{134} -\entry {\code {fstat}}{191} -\entry {\code {ftell}}{132} -\entry {\code {fwrite}}{100} +\entry {\code {freopen}}{94} +\entry {\code {frexp}}{303} +\entry {\code {fscanf}}{132} +\entry {\code {fseek}}{135} +\entry {\code {fsetpos}}{137} +\entry {\code {fstat}}{196} +\entry {\code {ftell}}{135} +\entry {\code {fwrite}}{102} \initial {G} -\entry {\code {getc}}{94} -\entry {\code {getchar}}{95} -\entry {\code {getcwd}}{175} -\entry {\code {getdelim}}{96} -\entry {\code {getegid}}{506} -\entry {\code {getenv}}{448} -\entry {\code {geteuid}}{506} -\entry {\code {getgid}}{506} -\entry {\code {getgrent}}{519} -\entry {\code {getgrent{\_}r}}{519} -\entry {\code {getgrgid}}{518} -\entry {\code {getgrgid{\_}r}}{518} -\entry {\code {getgrnam}}{518} -\entry {\code {getgrnam{\_}r}}{518} -\entry {\code {getgroups}}{506} -\entry {\code {gethostbyaddr}}{226} -\entry {\code {gethostbyname}}{226} -\entry {\code {gethostent}}{227} -\entry {\code {gethostid}}{526} -\entry {\code {gethostname}}{525} -\entry {\code {getitimer}}{347} -\entry {\code {getline}}{96} -\entry {\code {getlogin}}{512} -\entry {\code {getnetbyaddr}}{259} -\entry {\code {getnetbyname}}{259} -\entry {\code {getnetent}}{259} -\entry {\code {getnetgrent}}{521} -\entry {\code {getnetgrent{\_}r}}{521} -\entry {\code {getopt}}{439} -\entry {\code {getopt{\_}long}}{443} -\entry {\code {getpeername}}{240} -\entry {\code {getpgrp}}{489} -\entry {\code {getpid}}{459} -\entry {\code {getppid}}{459} -\entry {\code {getpriority}}{354} -\entry {\code {getprotobyname}}{232} -\entry {\code {getprotobynumber}}{232} -\entry {\code {getprotoent}}{232} -\entry {\code {getpwent}}{516} -\entry {\code {getpwent{\_}r}}{516} -\entry {\code {getpwnam}}{515} -\entry {\code {getpwnam{\_}r}}{515} -\entry {\code {getpwuid}}{514} -\entry {\code {getpwuid{\_}r}}{514} -\entry {\code {getrlimit}}{351} -\entry {\code {getrusage}}{349} -\entry {\code {gets}}{97} -\entry {\code {getservbyname}}{229} -\entry {\code {getservbyport}}{229} -\entry {\code {getservent}}{230} -\entry {\code {getsockname}}{218} -\entry {\code {getsockopt}}{255} -\entry {\code {getsubopt}}{445} -\entry {\code {gettimeofday}}{334} -\entry {\code {getuid}}{505} -\entry {\code {getumask}}{198} -\entry {\code {getw}}{95} -\entry {\code {getwd}}{176} -\entry {\code {glob}}{315} -\entry {\code {gmtime}}{337} -\entry {\code {gsignal}}{416} +\entry {\code {getc}}{97} +\entry {\code {getchar}}{97} +\entry {\code {getcwd}}{179} +\entry {\code {getdelim}}{99} +\entry {\code {getegid}}{510} +\entry {\code {getenv}}{455} +\entry {\code {geteuid}}{509} +\entry {\code {getgid}}{509} +\entry {\code {getgrent}}{523} +\entry {\code {getgrent_r}}{523} +\entry {\code {getgrgid}}{522} +\entry {\code {getgrgid_r}}{522} +\entry {\code {getgrnam}}{522} +\entry {\code {getgrnam_r}}{522} +\entry {\code {getgroups}}{510} +\entry {\code {gethostbyaddr}}{232} +\entry {\code {gethostbyname}}{232} +\entry {\code {gethostent}}{233} +\entry {\code {gethostid}}{530} +\entry {\code {gethostname}}{529} +\entry {\code {getitimer}}{353} +\entry {\code {getline}}{98} +\entry {\code {getlogin}}{516} +\entry {\code {getnetbyaddr}}{266} +\entry {\code {getnetbyname}}{266} +\entry {\code {getnetent}}{266} +\entry {\code {getnetgrent}}{525} +\entry {\code {getnetgrent_r}}{525} +\entry {\code {getopt}}{445} +\entry {\code {getopt_long}}{449} +\entry {\code {getpeername}}{246} +\entry {\code {getpgrp}}{495} +\entry {\code {getpid}}{464} +\entry {\code {getppid}}{465} +\entry {\code {getpriority}}{360} +\entry {\code {getprotobyname}}{237} +\entry {\code {getprotobynumber}}{237} +\entry {\code {getprotoent}}{238} +\entry {\code {getpwent}}{520} +\entry {\code {getpwent_r}}{520} +\entry {\code {getpwnam}}{519} +\entry {\code {getpwnam_r}}{519} +\entry {\code {getpwuid}}{518} +\entry {\code {getpwuid_r}}{518} +\entry {\code {getrlimit}}{358} +\entry {\code {getrusage}}{356} +\entry {\code {gets}}{99} +\entry {\code {getservbyname}}{235} +\entry {\code {getservbyport}}{235} +\entry {\code {getservent}}{235} +\entry {\code {getsockname}}{224} +\entry {\code {getsockopt}}{262} +\entry {\code {getsubopt}}{452} +\entry {\code {gettimeofday}}{340} +\entry {\code {getuid}}{509} +\entry {\code {getumask}}{203} +\entry {\code {getw}}{98} +\entry {\code {getwd}}{180} +\entry {\code {glob}}{321} +\entry {\code {gmtime}}{343} +\entry {\code {gsignal}}{423} \initial {H} -\entry {\code {htonl}}{230} -\entry {\code {htons}}{230} -\entry {\code {hypot}}{291} +\entry {\code {htonl}}{236} +\entry {\code {htons}}{236} +\entry {\code {hypot}}{297} \initial {I} -\entry {\code {IFTODT}}{178} -\entry {\code {index}}{76} -\entry {\code {inet{\_}addr}}{224} -\entry {\code {inet{\_}aton}}{224} -\entry {\code {inet{\_}lnaof}}{225} -\entry {\code {inet{\_}makeaddr}}{225} -\entry {\code {inet{\_}netof}}{225} -\entry {\code {inet{\_}network}}{225} -\entry {\code {inet{\_}ntoa}}{225} -\entry {\code {infnan}}{296} -\entry {\code {initgroups}}{508} -\entry {\code {initstate}}{293} -\entry {\code {innetgr}}{522} +\entry {\code {IFTODT}}{182} +\entry {\code {index}}{77} +\entry {\code {inet_addr}}{230} +\entry {\code {inet_aton}}{230} +\entry {\code {inet_lnaof}}{231} +\entry {\code {inet_makeaddr}}{231} +\entry {\code {inet_netof}}{231} +\entry {\code {inet_network}}{230} +\entry {\code {inet_ntoa}}{231} +\entry {\code {infnan}}{302} +\entry {\code {initgroups}}{512} +\entry {\code {initstate}}{299} +\entry {\code {innetgr}}{526} \entry {\code {isalnum}}{60} \entry {\code {isalpha}}{59} \entry {\code {isascii}}{61} -\entry {\code {isatty}}{261} +\entry {\code {isatty}}{267} \entry {\code {isblank}}{60} \entry {\code {iscntrl}}{61} \entry {\code {isdigit}}{60} \entry {\code {isgraph}}{60} -\entry {\code {isinf}}{295} +\entry {\code {isinf}}{301} \entry {\code {islower}}{59} -\entry {\code {isnan}}{295} +\entry {\code {isnan}}{301} \entry {\code {isprint}}{60} \entry {\code {ispunct}}{60} \entry {\code {isspace}}{60} \entry {\code {isupper}}{59} \entry {\code {isxdigit}}{60} -\entry {\code {ITIMER{\_}PROF}}{347} -\entry {\code {ITIMER{\_}REAL}}{347} -\entry {\code {ITIMER{\_}VIRTUAL}}{347} +\entry {\code {ITIMER_PROF}}{354} +\entry {\code {ITIMER_REAL}}{354} +\entry {\code {ITIMER_VIRTUAL}}{354} \initial {K} -\entry {\code {kill}}{417} -\entry {\code {killpg}}{418} +\entry {\code {kill}}{424} +\entry {\code {killpg}}{425} \initial {L} -\entry {\code {labs}}{296} -\entry {\code {ldexp}}{297} -\entry {\code {ldiv}}{300} -\entry {\code {link}}{182} -\entry {\code {listen}}{238} -\entry {\code {localeconv}}{373} -\entry {\code {localtime}}{336} -\entry {\code {log}}{290} -\entry {\code {log10}}{290} -\entry {\code {log1p}}{291} -\entry {\code {logb}}{297} -\entry {\code {longjmp}}{381} -\entry {\code {lseek}}{151} -\entry {\code {lstat}}{191} +\entry {\code {labs}}{302} +\entry {\code {ldexp}}{303} +\entry {\code {ldiv}}{306} +\entry {\code {link}}{187} +\entry {\code {listen}}{244} +\entry {\code {localeconv}}{379} +\entry {\code {localtime}}{342} +\entry {\code {log}}{296} +\entry {\code {log10}}{296} +\entry {\code {log1p}}{297} +\entry {\code {logb}}{303} +\entry {\code {longjmp}}{387} +\entry {\code {lseek}}{155} +\entry {\code {lstat}}{196} \initial {M} -\entry {\code {main}}{437} +\entry {\code {main}}{443} \entry {\code {malloc}}{32} -\entry {\code {mblen}}{363} -\entry {\code {mbstowcs}}{362} -\entry {\code {mbtowc}}{364} +\entry {\code {mblen}}{369} +\entry {\code {mbstowcs}}{368} +\entry {\code {mbtowc}}{370} \entry {\code {mcheck}}{38} \entry {\code {memalign}}{37} \entry {\code {memccpy}}{66} @@ -259,190 +261,195 @@ \entry {\code {memcpy}}{66} \entry {\code {memmem}}{77} \entry {\code {memmove}}{66} -\entry {\code {memory{\_}warnings}}{57} +\entry {\code {memory_warnings}}{58} \entry {\code {memset}}{66} -\entry {\code {mkdir}}{187} -\entry {\code {mkfifo}}{211} -\entry {\code {mknod}}{202} -\entry {\code {mkstemp}}{205} -\entry {\code {mktemp}}{205} -\entry {\code {mktime}}{337} -\entry {\code {modf}}{298} +\entry {\code {mkdir}}{193} +\entry {\code {mkfifo}}{217} +\entry {\code {mknod}}{208} +\entry {\code {mkstemp}}{210} +\entry {\code {mktemp}}{210} +\entry {\code {mktime}}{343} +\entry {\code {modf}}{304} \entry {\code {mprobe}}{38} \entry {\code {mstats}}{41} \initial {N} -\entry {\code {nice}}{355} -\entry {\code {notfound}}{495} -\entry {\code {NSS{\_}STATUS{\_}NOTFOUND}}{499} -\entry {\code {NSS{\_}STATUS{\_}SUCCESS}}{499} -\entry {\code {NSS{\_}STATUS{\_}TRYAGAIN}}{498} -\entry {\code {NSS{\_}STATUS{\_}UNAVAIL}}{498} -\entry {\code {ntohl}}{231} -\entry {\code {ntohs}}{230} +\entry {\code {nice}}{361} +\entry {\code {notfound}}{499} +\entry {\code {NSS_STATUS_NOTFOUND}}{502} +\entry {\code {NSS_STATUS_SUCCESS}}{502, 503} +\entry {\code {NSS_STATUS_TRYAGAIN}}{502} +\entry {\code {NSS_STATUS_UNAVAIL}}{502} +\entry {\code {ntohl}}{236} +\entry {\code {ntohs}}{236} \initial {O} -\entry {\code {obstack{\_}1grow}}{47} -\entry {\code {obstack{\_}1grow{\_}fast}}{48} -\entry {\code {obstack{\_}alignment{\_}mask}}{50} -\entry {\code {obstack{\_}alloc}}{44} -\entry {\code {obstack{\_}base}}{49} -\entry {\code {obstack{\_}blank}}{47} -\entry {\code {obstack{\_}blank{\_}fast}}{48} -\entry {\code {obstack{\_}chunk{\_}alloc}}{43} -\entry {\code {obstack{\_}chunk{\_}free}}{43} -\entry {\code {obstack{\_}chunk{\_}size}}{51} -\entry {\code {obstack{\_}copy}}{44} -\entry {\code {obstack{\_}copy0}}{45} -\entry {\code {obstack{\_}finish}}{47} -\entry {\code {obstack{\_}free}}{45} -\entry {\code {obstack{\_}grow}}{47} -\entry {\code {obstack{\_}grow0}}{47} -\entry {\code {obstack{\_}init}}{43} -\entry {\code {obstack{\_}next{\_}free}}{49} -\entry {\code {obstack{\_}object{\_}size}}{47, 50} -\entry {\code {obstack{\_}printf}}{110} -\entry {\code {obstack{\_}room}}{48} -\entry {\code {obstack{\_}vprintf}}{112} -\entry {\code {offsetof}}{562} -\entry {\code {on{\_}exit}}{453} -\entry {\code {open}}{145} -\entry {\code {open{\_}memstream}}{140} -\entry {\code {open{\_}obstack{\_}stream}}{141} -\entry {\code {opendir}}{178} +\entry {\code {obstack_1grow}}{47} +\entry {\code {obstack_1grow_fast}}{49} +\entry {\code {obstack_alignment_mask}}{51} +\entry {\code {obstack_alloc}}{44} +\entry {\code {obstack_base}}{50} +\entry {\code {obstack_blank}}{47} +\entry {\code {obstack_blank_fast}}{49} +\entry {\code {obstack_chunk_alloc}}{43} +\entry {\code {obstack_chunk_free}}{43} +\entry {\code {obstack_chunk_size}}{52} +\entry {\code {obstack_copy}}{45} +\entry {\code {obstack_copy0}}{45} +\entry {\code {obstack_finish}}{48} +\entry {\code {obstack_free}}{45} +\entry {\code {obstack_grow}}{47} +\entry {\code {obstack_grow0}}{47} +\entry {\code {obstack_init}}{43} +\entry {\code {obstack_int_grow}}{47} +\entry {\code {obstack_int_grow_fast}}{49} +\entry {\code {obstack_next_free}}{50} +\entry {\code {obstack_object_size}}{48, 51} +\entry {\code {obstack_printf}}{113} +\entry {\code {obstack_ptr_grow}}{47} +\entry {\code {obstack_ptr_grow_fast}}{49} +\entry {\code {obstack_room}}{49} +\entry {\code {obstack_vprintf}}{115} +\entry {\code {offsetof}}{567} +\entry {\code {on_exit}}{460} +\entry {\code {open}}{149} +\entry {\code {open_memstream}}{143} +\entry {\code {open_obstack_stream}}{144} +\entry {\code {opendir}}{182} \initial {P} -\entry {\code {parse{\_}printf{\_}format}}{113} -\entry {\code {pathconf}}{540} -\entry {\code {pause}}{428} -\entry {\code {pclose}}{210} +\entry {\code {parse_printf_format}}{116} +\entry {\code {pathconf}}{544} +\entry {\code {pause}}{436} +\entry {\code {pclose}}{216} \entry {\code {perror}}{27} -\entry {\code {pipe}}{207} -\entry {\code {popen}}{209} -\entry {\code {pow}}{290} -\entry {\code {printf}}{109} -\entry {\code {psignal}}{395} -\entry {\code {putc}}{93} -\entry {\code {putchar}}{93} -\entry {\code {putenv}}{448} -\entry {\code {putpwent}}{517} -\entry {\code {puts}}{94} -\entry {\code {putw}}{94} +\entry {\code {pipe}}{213} +\entry {\code {popen}}{215} +\entry {\code {pow}}{296} +\entry {\code {printf}}{111} +\entry {\code {psignal}}{401} +\entry {\code {putc}}{95} +\entry {\code {putchar}}{96} +\entry {\code {putenv}}{455} +\entry {\code {putpwent}}{521} +\entry {\code {puts}}{96} +\entry {\code {putw}}{96} \initial {Q} -\entry {\code {qsort}}{308} +\entry {\code {qsort}}{314} \initial {R} -\entry {\code {r{\_}alloc}}{56} -\entry {\code {r{\_}alloc{\_}free}}{57} -\entry {\code {r{\_}re{\_}alloc}}{57} -\entry {\code {raise}}{416} -\entry {\code {rand}}{292} -\entry {\code {random}}{293} -\entry {\code {read}}{147} -\entry {\code {readdir}}{179} -\entry {\code {readdir{\_}r}}{179} -\entry {\code {readlink}}{183} +\entry {\code {r_alloc}}{57} +\entry {\code {r_alloc_free}}{57} +\entry {\code {r_re_alloc}}{58} +\entry {\code {raise}}{422} +\entry {\code {rand}}{298} +\entry {\code {random}}{299} +\entry {\code {read}}{151} +\entry {\code {readdir}}{183} +\entry {\code {readdir_r}}{183} +\entry {\code {readlink}}{189} \entry {\code {realloc}}{35} -\entry {\code {recv}}{242} -\entry {\code {recvfrom}}{250} -\entry {\code {regcomp}}{318} -\entry {\code {regerror}}{323} -\entry {\code {regexec}}{320} -\entry {\code {regfree}}{323} -\entry {\code {register{\_}printf{\_}function}}{117} -\entry {\code {remove}}{185} -\entry {\code {rename}}{185} -\entry {\code {rewind}}{133} -\entry {\code {rewinddir}}{181} -\entry {\code {rindex}}{76} -\entry {\code {rint}}{298} -\entry {\code {rmdir}}{185} +\entry {\code {recv}}{248} +\entry {\code {recvfrom}}{257} +\entry {\code {regcomp}}{324} +\entry {\code {regerror}}{329} +\entry {\code {regexec}}{326} +\entry {\code {regfree}}{329} +\entry {\code {register_printf_function}}{119} +\entry {\code {remove}}{191} +\entry {\code {rename}}{191} +\entry {\code {rewind}}{136} +\entry {\code {rewinddir}}{185} +\entry {\code {rindex}}{77} +\entry {\code {rint}}{304} +\entry {\code {rmdir}}{191} \initial {S} -\entry {\code {S{\_}ISBLK}}{192} -\entry {\code {S{\_}ISCHR}}{191} -\entry {\code {S{\_}ISDIR}}{191} -\entry {\code {S{\_}ISFIFO}}{192} -\entry {\code {S{\_}ISLNK}}{192} -\entry {\code {S{\_}ISREG}}{192} -\entry {\code {S{\_}ISSOCK}}{192} -\entry {\code {scalb}}{297} -\entry {\code {scanf}}{129} -\entry {\code {seekdir}}{181} -\entry {\code {select}}{157} -\entry {\code {send}}{241} -\entry {\code {sendto}}{250} -\entry {\code {setbuf}}{138} -\entry {\code {setbuffer}}{138} -\entry {\code {setgid}}{507} -\entry {\code {setgrent}}{519} -\entry {\code {setgroups}}{508} -\entry {\code {sethostent}}{227} -\entry {\code {sethostid}}{526} -\entry {\code {sethostname}}{525} -\entry {\code {setitimer}}{347} -\entry {\code {setjmp}}{381} -\entry {\code {setlinebuf}}{138} -\entry {\code {setlocale}}{371} -\entry {\code {setnetent}}{259} -\entry {\code {setnetgrent}}{521} -\entry {\code {setpgid}}{490} -\entry {\code {setpgrp}}{490} -\entry {\code {setpriority}}{354} -\entry {\code {setprotoent}}{232} -\entry {\code {setpwent}}{516} -\entry {\code {setregid}}{507} -\entry {\code {setreuid}}{507} -\entry {\code {setrlimit}}{352} -\entry {\code {setservent}}{229} -\entry {\code {setsid}}{489} -\entry {\code {setsockopt}}{256} -\entry {\code {setstate}}{293} -\entry {\code {settimeofday}}{334} -\entry {\code {setuid}}{506} -\entry {\code {setvbuf}}{137} -\entry {\code {shutdown}}{235} -\entry {\code {sigaction}}{399} -\entry {\code {sigaddset}}{422} -\entry {\code {sigaltstack}}{432} -\entry {\code {sigblock}}{434} -\entry {\code {sigdelset}}{422} -\entry {\code {sigemptyset}}{421} -\entry {\code {sigfillset}}{421} -\entry {\code {siginterrupt}}{434} -\entry {\code {sigismember}}{422} -\entry {\code {siglongjmp}}{382} -\entry {\code {sigmask}}{434} -\entry {\code {signal}}{396} -\entry {\code {sigpause}}{435} -\entry {\code {sigpending}}{425} -\entry {\code {sigprocmask}}{422} -\entry {\code {sigsetjmp}}{382} -\entry {\code {sigsetmask}}{435} -\entry {\code {sigstack}}{432} -\entry {\code {sigsuspend}}{429} -\entry {\code {sigvec}}{434} -\entry {\code {sin}}{288} -\entry {\code {sinh}}{291} -\entry {\code {sleep}}{348} -\entry {\code {snprintf}}{109} -\entry {\code {socket}}{234} -\entry {\code {socketpair}}{236} -\entry {\code {sprintf}}{109} -\entry {\code {sqrt}}{290} -\entry {\code {srand}}{293} -\entry {\code {srandom}}{293} -\entry {\code {sscanf}}{129} -\entry {\code {ssignal}}{398} -\entry {\code {stat}}{190} +\entry {\code {S_ISBLK}}{197} +\entry {\code {S_ISCHR}}{197} +\entry {\code {S_ISDIR}}{197} +\entry {\code {S_ISFIFO}}{197} +\entry {\code {S_ISLNK}}{197} +\entry {\code {S_ISREG}}{197} +\entry {\code {S_ISSOCK}}{197} +\entry {\code {scalb}}{303} +\entry {\code {scandir}}{185} +\entry {\code {scanf}}{132} +\entry {\code {seekdir}}{185} +\entry {\code {select}}{161} +\entry {\code {send}}{247} +\entry {\code {sendto}}{257} +\entry {\code {setbuf}}{141} +\entry {\code {setbuffer}}{141} +\entry {\code {setgid}}{511} +\entry {\code {setgrent}}{523} +\entry {\code {setgroups}}{512} +\entry {\code {sethostent}}{233} +\entry {\code {sethostid}}{530} +\entry {\code {sethostname}}{529} +\entry {\code {setitimer}}{353} +\entry {\code {setjmp}}{387} +\entry {\code {setlinebuf}}{141} +\entry {\code {setlocale}}{377} +\entry {\code {setnetent}}{266} +\entry {\code {setnetgrent}}{525} +\entry {\code {setpgid}}{495} +\entry {\code {setpgrp}}{495} +\entry {\code {setpriority}}{360} +\entry {\code {setprotoent}}{238} +\entry {\code {setpwent}}{520} +\entry {\code {setregid}}{511} +\entry {\code {setreuid}}{511} +\entry {\code {setrlimit}}{358} +\entry {\code {setservent}}{235} +\entry {\code {setsid}}{494} +\entry {\code {setsockopt}}{263} +\entry {\code {setstate}}{299} +\entry {\code {settimeofday}}{340} +\entry {\code {setuid}}{510} +\entry {\code {setvbuf}}{139} +\entry {\code {shutdown}}{241} +\entry {\code {sigaction}}{405} +\entry {\code {sigaddset}}{429} +\entry {\code {sigaltstack}}{439} +\entry {\code {sigblock}}{442} +\entry {\code {sigdelset}}{429} +\entry {\code {sigemptyset}}{429} +\entry {\code {sigfillset}}{429} +\entry {\code {siginterrupt}}{442} +\entry {\code {sigismember}}{429} +\entry {\code {siglongjmp}}{388} +\entry {\code {sigmask}}{442} +\entry {\code {signal}}{402} +\entry {\code {sigpause}}{442} +\entry {\code {sigpending}}{433} +\entry {\code {sigprocmask}}{430} +\entry {\code {sigsetjmp}}{388} +\entry {\code {sigsetmask}}{442} +\entry {\code {sigstack}}{440} +\entry {\code {sigsuspend}}{437} +\entry {\code {sigvec}}{442} +\entry {\code {sin}}{294} +\entry {\code {sinh}}{297} +\entry {\code {sleep}}{355} +\entry {\code {snprintf}}{112} +\entry {\code {socket}}{240} +\entry {\code {socketpair}}{241} +\entry {\code {sprintf}}{111} +\entry {\code {sqrt}}{296} +\entry {\code {srand}}{299} +\entry {\code {srandom}}{299} +\entry {\code {sscanf}}{132} +\entry {\code {ssignal}}{404} +\entry {\code {stat}}{196} \entry {\code {stpcpy}}{67} \entry {\code {stpncpy}}{68} \entry {\code {strcasecmp}}{72} \entry {\code {strcat}}{69} \entry {\code {strchr}}{76} -\entry {\code {strcmp}}{71} +\entry {\code {strcmp}}{72} \entry {\code {strcoll}}{73} \entry {\code {strcpy}}{66} -\entry {\code {strcspn}}{77} +\entry {\code {strcspn}}{78} \entry {\code {strdup}}{67} \entry {\code {strdupa}}{68} \entry {\code {strerror}}{27} -\entry {\code {strftime}}{338} +\entry {\code {strftime}}{344} \entry {\code {strlen}}{65} \entry {\code {strncasecmp}}{72} \entry {\code {strncat}}{69} @@ -450,91 +457,91 @@ \entry {\code {strncpy}}{66} \entry {\code {strndup}}{67} \entry {\code {strndupa}}{69} -\entry {\code {strpbrk}}{77} -\entry {\code {strrchr}}{76} -\entry {\code {strsep}}{79} -\entry {\code {strsignal}}{395} +\entry {\code {strpbrk}}{78} +\entry {\code {strrchr}}{77} +\entry {\code {strsep}}{80} +\entry {\code {strsignal}}{401} \entry {\code {strspn}}{77} -\entry {\code {strstr}}{76} -\entry {\code {strtod}}{304} -\entry {\code {strtof}}{304} +\entry {\code {strstr}}{77} +\entry {\code {strtod}}{310} +\entry {\code {strtof}}{310} \entry {\code {strtok}}{78} -\entry {\code {strtok{\_}r}}{79} -\entry {\code {strtol}}{300} -\entry {\code {strtold}}{305} -\entry {\code {strtoll}}{302} -\entry {\code {strtoq}}{302} -\entry {\code {strtoul}}{301} -\entry {\code {strtoull}}{302} -\entry {\code {strtouq}}{302} -\entry {\code {strxfrm}}{73} -\entry {\code {success}}{495} -\entry {\code {symlink}}{183} -\entry {\code {sysconf}}{533} -\entry {\code {system}}{457} +\entry {\code {strtok_r}}{80} +\entry {\code {strtol}}{306} +\entry {\code {strtold}}{311} +\entry {\code {strtoll}}{308} +\entry {\code {strtoq}}{307} +\entry {\code {strtoul}}{307} +\entry {\code {strtoull}}{308} +\entry {\code {strtouq}}{308} +\entry {\code {strxfrm}}{74} +\entry {\code {success}}{499} +\entry {\code {symlink}}{189} +\entry {\code {sysconf}}{537} +\entry {\code {system}}{463} \initial {T} -\entry {\code {tan}}{288} -\entry {\code {tanh}}{291} -\entry {\code {tcdrain}}{283} -\entry {\code {tcflow}}{284} -\entry {\code {tcflush}}{284} -\entry {\code {tcgetattr}}{264} -\entry {\code {tcgetpgrp}}{490} -\entry {\code {tcsendbreak}}{283} -\entry {\code {tcsetattr}}{264} -\entry {\code {tcsetpgrp}}{491} -\entry {\code {telldir}}{181} -\entry {\code {TEMP{\_}FAILURE{\_}RETRY}}{414} -\entry {\code {tempnam}}{204} -\entry {\code {time}}{332} -\entry {\code {times}}{331} -\entry {\code {tmpfile}}{203} -\entry {\code {tmpnam}}{203} -\entry {\code {tmpnam{\_}r}}{204} +\entry {\code {tan}}{294} +\entry {\code {tanh}}{297} +\entry {\code {tcdrain}}{289} +\entry {\code {tcflow}}{290} +\entry {\code {tcflush}}{290} +\entry {\code {tcgetattr}}{270} +\entry {\code {tcgetpgrp}}{496} +\entry {\code {tcsendbreak}}{289} +\entry {\code {tcsetattr}}{270} +\entry {\code {tcsetpgrp}}{496} +\entry {\code {telldir}}{185} +\entry {\code {TEMP_FAILURE_RETRY}}{421} +\entry {\code {tempnam}}{210} +\entry {\code {time}}{338} +\entry {\code {times}}{337} +\entry {\code {tmpfile}}{209} +\entry {\code {tmpnam}}{209} +\entry {\code {tmpnam_r}}{209} \entry {\code {toascii}}{61} \entry {\code {tolower}}{61} \entry {\code {toupper}}{61} -\entry {\code {tryagain}}{496} -\entry {\code {ttyname}}{261} -\entry {\code {tzset}}{344} +\entry {\code {tryagain}}{499} +\entry {\code {ttyname}}{267} +\entry {\code {tzset}}{351} \initial {U} -\entry {\code {umask}}{197} -\entry {\code {uname}}{527} -\entry {\code {unavail}}{495} -\entry {\code {ungetc}}{98} -\entry {\code {unlink}}{184} -\entry {\code {utime}}{201} -\entry {\code {utimes}}{202} +\entry {\code {umask}}{203} +\entry {\code {uname}}{531} +\entry {\code {unavail}}{499} +\entry {\code {ungetc}}{101} +\entry {\code {unlink}}{190} +\entry {\code {utime}}{207} +\entry {\code {utimes}}{207} \initial {V} -\entry {\code {va{\_}alist}}{553} -\entry {\code {va{\_}arg}}{551} -\entry {\code {va{\_}dcl}}{553} -\entry {\code {va{\_}end}}{551} -\entry {\code {va{\_}start}}{551, 553} +\entry {\code {va_alist}}{557} +\entry {\code {va_arg}}{555} +\entry {\code {va_dcl}}{557} +\entry {\code {va_end}}{555} +\entry {\code {va_start}}{555, 557} \entry {\code {valloc}}{37} -\entry {\code {vasprintf}}{112} -\entry {\code {vfork}}{460} -\entry {\code {vfprintf}}{112} -\entry {\code {vfscanf}}{130} -\entry {\code {vprintf}}{112} -\entry {\code {vscanf}}{129} -\entry {\code {vsnprintf}}{112} -\entry {\code {vsprintf}}{112} -\entry {\code {vsscanf}}{130} +\entry {\code {vasprintf}}{115} +\entry {\code {vfork}}{466} +\entry {\code {vfprintf}}{114} +\entry {\code {vfscanf}}{133} +\entry {\code {vprintf}}{114} +\entry {\code {vscanf}}{132} +\entry {\code {vsnprintf}}{114} +\entry {\code {vsprintf}}{114} +\entry {\code {vsscanf}}{133} \initial {W} -\entry {\code {wait}}{465} -\entry {\code {wait3}}{467} -\entry {\code {wait4}}{465} -\entry {\code {waitpid}}{463} -\entry {\code {WCOREDUMP}}{466} -\entry {\code {wcstombs}}{363} -\entry {\code {wctomb}}{364} -\entry {\code {WEXITSTATUS}}{466} -\entry {\code {WIFEXITED}}{466} -\entry {\code {WIFSIGNALED}}{466} -\entry {\code {WIFSTOPPED}}{467} -\entry {\code {wordexp}}{325} -\entry {\code {wordfree}}{326} -\entry {\code {write}}{149} -\entry {\code {WSTOPSIG}}{467} -\entry {\code {WTERMSIG}}{466} +\entry {\code {wait}}{471} +\entry {\code {wait3}}{473} +\entry {\code {wait4}}{471} +\entry {\code {waitpid}}{469} +\entry {\code {WCOREDUMP}}{472} +\entry {\code {wcstombs}}{368} +\entry {\code {wctomb}}{370} +\entry {\code {WEXITSTATUS}}{472} +\entry {\code {WIFEXITED}}{472} +\entry {\code {WIFSIGNALED}}{472} +\entry {\code {WIFSTOPPED}}{472} +\entry {\code {wordexp}}{331} +\entry {\code {wordfree}}{332} +\entry {\code {write}}{153} +\entry {\code {WSTOPSIG}}{472} +\entry {\code {WTERMSIG}}{472} diff -durpN glibc-2.0.1/manual/libc.info glibc-2.0.2/manual/libc.info --- glibc-2.0.1/manual/libc.info Sat Jan 25 08:16:44 1997 +++ glibc-2.0.2/manual/libc.info Tue Mar 18 13:35:58 1997 @@ -30,36 +30,36 @@ Indirect: libc.info-1: 1168 libc.info-2: 50130 libc.info-3: 97453 -libc.info-4: 144446 -libc.info-5: 193430 -libc.info-6: 237807 -libc.info-7: 285360 -libc.info-8: 334723 -libc.info-9: 379684 -libc.info-10: 428359 -libc.info-11: 477650 -libc.info-12: 526627 -libc.info-13: 576207 -libc.info-14: 625641 -libc.info-15: 673159 -libc.info-16: 720930 -libc.info-17: 769559 -libc.info-18: 816715 -libc.info-19: 864190 -libc.info-20: 914097 -libc.info-21: 963959 -libc.info-22: 1011044 -libc.info-23: 1058556 -libc.info-24: 1108289 -libc.info-25: 1158030 -libc.info-26: 1207860 -libc.info-27: 1256153 -libc.info-28: 1305051 -libc.info-29: 1410972 -libc.info-30: 1453346 -libc.info-31: 1480210 -libc.info-32: 1530394 -libc.info-33: 1567426 +libc.info-4: 144418 +libc.info-5: 193402 +libc.info-6: 237778 +libc.info-7: 285331 +libc.info-8: 334694 +libc.info-9: 379655 +libc.info-10: 428330 +libc.info-11: 478030 +libc.info-12: 527411 +libc.info-13: 576290 +libc.info-14: 625348 +libc.info-15: 674871 +libc.info-16: 724554 +libc.info-17: 773183 +libc.info-18: 820339 +libc.info-19: 867814 +libc.info-20: 917721 +libc.info-21: 967583 +libc.info-22: 1014668 +libc.info-23: 1062180 +libc.info-24: 1111915 +libc.info-25: 1161653 +libc.info-26: 1211483 +libc.info-27: 1259776 +libc.info-28: 1308674 +libc.info-29: 1414595 +libc.info-30: 1456969 +libc.info-31: 1483833 +libc.info-32: 1534017 +libc.info-33: 1571187  Tag Table: (Indirect) @@ -100,497 +100,499 @@ Node: Obstacks128081 Node: Creating Obstacks129699 Node: Preparing for Obstacks131598 Node: Allocation in an Obstack133938 -Node: Freeing Obstack Objects136633 -Node: Obstack Functions137969 -Node: Growing Objects140199 -Node: Extra Fast Growing144446 -Node: Status of an Obstack148065 -Node: Obstacks Data Alignment149484 -Node: Obstack Chunks151170 -Node: Summary of Obstacks153527 -Node: Variable Size Automatic156941 -Node: Alloca Example158497 -Node: Advantages of Alloca159614 -Node: Disadvantages of Alloca161506 -Node: GNU C Variable-Size Arrays162251 -Node: Relocating Allocator163409 -Node: Relocator Concepts163971 -Node: Using Relocator165484 -Node: Memory Warnings166869 -Node: Character Handling168181 -Node: Classification of Characters169130 -Node: Case Conversion172791 -Node: String and Array Utilities174639 -Node: Representation of Strings176450 -Node: String/Array Conventions179392 -Node: String Length181224 -Node: Copying and Concatenation182209 -Node: String/Array Comparison193430 -Node: Collation Functions198493 -Node: Search Functions205455 -Node: Finding Tokens in a String209726 -Node: I/O Overview215868 -Node: I/O Concepts217381 -Node: Streams and File Descriptors218526 -Node: File Position221617 -Node: File Names223751 -Node: Directories224637 -Node: File Name Resolution226374 -Node: File Name Errors229303 -Node: File Name Portability230852 -Node: I/O on Streams232844 -Node: Streams234800 -Node: Standard Streams236141 -Node: Opening Streams237807 -Node: Closing Streams243664 -Node: Simple Output246208 -Node: Character Input248544 -Node: Line Input251653 -Node: Unreading256641 -Node: Unreading Idea257450 -Node: How Unread258276 -Node: Block Input/Output260759 -Node: Formatted Output262988 -Node: Formatted Output Basics264755 -Node: Output Conversion Syntax267248 -Node: Table of Output Conversions270974 -Node: Integer Conversions273507 -Node: Floating-Point Conversions278171 -Node: Other Output Conversions282200 -Node: Formatted Output Functions285360 -Node: Dynamic Output289041 -Node: Variable Arguments Output290678 -Node: Parsing a Template String296190 -Node: Example of Parsing300017 -Node: Customizing Printf302305 -Node: Registering New Conversions304154 -Node: Conversion Specifier Options306145 -Node: Defining the Output Handler309818 -Node: Printf Extension Example312284 -Node: Formatted Input314592 -Node: Formatted Input Basics315671 -Node: Input Conversion Syntax318351 -Node: Table of Input Conversions321713 -Node: Numeric Input Conversions324010 -Node: String Input Conversions327788 -Node: Dynamic String Input331881 -Node: Other Input Conversions333071 -Node: Formatted Input Functions334723 -Node: Variable Arguments Input336289 -Node: EOF and Errors337924 -Node: Binary Streams340144 -Node: File Positioning342668 -Node: Portable Positioning346501 -Node: Stream Buffering349972 -Node: Buffering Concepts351557 -Node: Flushing Buffers352920 -Node: Controlling Buffering354416 -Node: Other Kinds of Streams358851 -Node: String Streams360113 -Node: Obstack Streams364233 -Node: Custom Streams366267 -Node: Streams and Cookies366920 -Node: Hook Functions369967 -Node: Low-Level I/O372353 -Node: Opening and Closing Files375005 -Node: I/O Primitives379684 -Node: File Position Primitive387937 -Node: Descriptors and Streams393372 -Node: Stream/Descriptor Precautions395792 -Node: Linked Channels396999 -Node: Independent Channels398227 -Node: Cleaning Streams400130 -Node: Waiting for I/O402333 -Node: Control Operations410084 -Node: Duplicating Descriptors412368 -Node: Descriptor Flags416630 -Node: File Status Flags420036 -Node: Access Modes421490 -Node: Open-time Flags423779 -Node: Operating Modes428359 -Node: Getting File Status Flags431125 -Node: File Locks433736 -Node: Interrupt Input442639 -Node: File System Interface445058 -Node: Working Directory446458 -Node: Accessing Directories450212 -Node: Directory Entries451418 -Node: Opening a Directory454218 -Node: Reading/Closing Directory455910 -Node: Simple Directory Lister458844 -Node: Random Access Directory459823 -Node: Hard Links461290 -Node: Symbolic Links464083 -Node: Deleting Files467849 -Node: Renaming Files470779 -Node: Creating Directories474406 -Node: File Attributes476154 -Node: Attribute Meanings477650 -Node: Reading Attributes482733 -Node: Testing File Type484635 -Node: File Owner487851 -Node: Permission Bits491544 -Node: Access Permission496651 -Node: Setting Permissions497801 -Node: Testing File Access503016 -Node: File Times506659 -Node: Making Special Files511167 -Node: Temporary Files512844 -Node: Pipes and FIFOs519051 -Node: Creating a Pipe520634 -Node: Pipe to a Subprocess523787 -Node: FIFO Special Files526627 -Node: Pipe Atomicity528200 -Node: Sockets529084 -Node: Socket Concepts530959 -Node: Communication Styles534173 -Node: Socket Addresses536025 -Node: Address Formats538066 -Node: Setting Address540749 -Node: Reading Address542453 -Node: File Namespace544211 -Node: File Namespace Concepts544701 -Node: File Namespace Details546296 -Node: File Socket Example547910 -Node: Internet Namespace549234 -Node: Internet Address Format550961 -Node: Host Addresses552330 -Node: Abstract Host Addresses553390 -Node: Host Address Data Type556183 -Node: Host Address Functions558074 -Node: Host Names560501 -Node: Ports565513 -Node: Services Database567551 -Node: Byte Order570378 -Node: Protocols Database572666 -Node: Inet Example576207 -Node: Misc Namespaces578237 -Node: Open/Close Sockets578987 -Node: Creating a Socket579485 -Node: Closing a Socket581153 -Node: Socket Pairs582683 -Node: Connections584693 -Node: Connecting585787 -Node: Listening588343 -Node: Accepting Connections590428 -Node: Who is Connected593284 -Node: Transferring Data594380 -Node: Sending Data595490 -Node: Receiving Data597738 -Node: Socket Data Options599202 -Node: Byte Stream Example600065 -Node: Server Example602043 -Node: Out-of-Band Data606090 -Node: Datagrams611944 -Node: Sending Datagrams612973 -Node: Receiving Datagrams614630 -Node: Datagram Example616431 -Node: Example Receiver618349 -Node: Inetd620916 -Node: Inetd Servers621724 -Node: Configuring Inetd622967 -Node: Socket Options625641 -Node: Socket Option Functions626349 -Node: Socket-Level Options627907 -Node: Networks Database631541 -Node: Low-Level Terminal Interface634403 -Node: Is It a Terminal635738 -Node: I/O Queues636954 -Node: Canonical or Not638924 -Node: Terminal Modes640771 -Node: Mode Data Types642047 -Node: Mode Functions643875 -Node: Setting Modes647815 -Node: Input Modes649803 -Node: Output Modes655070 -Node: Control Modes656683 -Node: Local Modes660773 -Node: Line Speed667087 -Node: Special Characters671247 -Node: Editing Characters673159 -Node: Signal Characters677500 -Node: Start/Stop Characters680369 -Node: Other Special682240 -Node: Noncanonical Input684054 -Node: Line Control688867 -Node: Noncanon Example693179 -Node: Mathematics695374 -Node: Domain and Range Errors696578 -Node: Trig Functions699801 -Node: Inverse Trig Functions701171 -Node: Exponents and Logarithms703609 -Node: Hyperbolic Functions706510 -Node: Pseudo-Random Numbers708089 -Node: ISO Random709675 -Node: BSD Random710848 -Node: Arithmetic712765 -Node: Not a Number713674 -Node: Predicates on Floats715016 -Node: Absolute Value716590 -Node: Normalization Functions718088 -Node: Rounding and Remainders720930 -Node: Integer Division724298 -Node: Parsing of Numbers726448 -Node: Parsing of Integers727100 -Node: Parsing of Floats734575 -Node: Searching and Sorting739039 -Node: Comparison Functions739830 -Node: Array Search Function740944 -Node: Array Sort Function742367 -Node: Search/Sort Example744339 -Node: Pattern Matching747789 -Node: Wildcard Matching748591 -Node: Globbing751469 -Node: Calling Glob752259 -Node: Flags for Globbing755840 -Node: Regular Expressions759338 -Node: POSIX Regexp Compilation760322 -Node: Flags for POSIX Regexps764437 -Node: Matching POSIX Regexps765344 -Node: Regexp Subexpressions767505 -Node: Subexpression Complications769559 -Node: Regexp Cleanup771918 -Node: Word Expansion774244 -Node: Expansion Stages775412 -Node: Calling Wordexp776905 -Node: Flags for Wordexp780868 -Node: Wordexp Example782821 -Node: Date and Time784796 -Node: Processor Time785920 -Node: Basic CPU Time786678 -Node: Detailed CPU Time788697 -Node: Calendar Time791162 -Node: Simple Calendar Time792740 -Node: High-Resolution Calendar794497 -Node: Broken-down Time800217 -Node: Formatting Date and Time805433 -Node: TZ Variable816715 -Node: Time Zone Functions822776 -Node: Time Functions Example825441 -Node: Setting an Alarm826556 -Node: Sleeping831783 -Node: Resource Usage834439 -Node: Limits on Resources837950 -Node: Priority842324 -Node: Extended Characters845586 -Node: Extended Char Intro847194 -Node: Locales and Extended Chars849131 -Node: Multibyte Char Intro850181 -Node: Wide Char Intro857475 -Node: Wide String Conversion859242 -Node: Length of Char862479 -Node: Converting One Char864190 -Node: Example of Conversion867587 -Node: Shift State870477 -Node: Locales873130 -Node: Effects of Locale874698 -Node: Choosing Locale876634 -Node: Locale Categories877958 -Node: Setting the Locale879605 -Node: Standard Locales883499 -Node: Numeric Formatting884739 -Node: General Numeric886249 -Node: Currency Symbol889171 -Node: Sign of Money Amount893781 -Node: Non-Local Exits896085 -Node: Non-Local Intro896704 -Node: Non-Local Details900431 -Node: Non-Local Exits and Signals903507 -Node: Signal Handling904977 -Node: Concepts of Signals907012 -Node: Kinds of Signals907576 -Node: Signal Generation908973 -Node: Delivery of Signal911240 -Node: Standard Signals914097 -Node: Program Error Signals915690 -Node: Termination Signals923148 -Node: Alarm Signals926986 -Node: Asynchronous I/O Signals928226 -Node: Job Control Signals929417 -Node: Operation Error Signals934029 -Node: Miscellaneous Signals935968 -Node: Signal Messages937664 -Node: Signal Actions939550 -Node: Basic Signal Handling940495 -Node: Advanced Signal Handling945428 -Node: Signal and Sigaction948384 -Node: Sigaction Function Example950136 -Node: Flags for Sigaction952452 -Node: Initial Signal Actions954830 -Node: Defining Handlers956213 -Node: Handler Returns958398 -Node: Termination in Handler960448 -Node: Longjmp in Handler961864 -Node: Signals in Handler963959 -Node: Merged Signals966079 -Node: Nonreentrancy971789 -Node: Atomic Data Access977337 -Node: Non-atomic Example978373 -Node: Atomic Types980144 -Node: Atomic Usage981152 -Node: Interrupted Primitives982622 -Node: Generating Signals985922 -Node: Signaling Yourself986515 -Node: Signaling Another Process988497 -Node: Permission for kill991880 -Node: Kill Example993676 -Node: Blocking Signals996020 -Node: Why Block997792 -Node: Signal Sets999329 -Node: Process Signal Mask1002355 -Node: Testing for Delivery1005363 -Node: Blocking for Handler1006613 -Node: Checking for Pending Signals1009032 -Node: Remembering a Signal1011044 -Node: Waiting for a Signal1014593 -Node: Using Pause1015138 -Node: Pause Problems1016358 -Node: Sigsuspend1018082 -Node: Signal Stack1020792 -Node: BSD Signal Handling1026136 -Node: BSD Handler1027410 -Node: Blocking in BSD1029844 -Node: Process Startup1031298 -Node: Program Arguments1032333 -Node: Argument Syntax1035062 -Node: Parsing Options1037692 -Node: Example of Getopt1040983 -Node: Long Options1043699 -Node: Long Option Example1047760 -Node: Suboptions1050609 -Node: Suboptions Example1052558 -Node: Environment Variables1054653 -Node: Environment Access1056514 -Node: Standard Environment1058556 -Node: Program Termination1062239 -Node: Normal Termination1063458 -Node: Exit Status1064684 -Node: Cleanups on Exit1067703 -Node: Aborting a Program1069520 -Node: Termination Internals1070419 -Node: Processes1072195 -Node: Running a Command1074218 -Node: Process Creation Concepts1075711 -Node: Process Identification1077721 -Node: Creating a Process1078645 -Node: Executing a File1082261 -Node: Process Completion1089296 -Node: Process Completion Status1094305 -Node: BSD Wait Functions1095949 -Node: Process Creation Example1097841 -Node: Job Control1100091 -Node: Concepts of Job Control1101371 -Node: Job Control is Optional1104728 -Node: Controlling Terminal1105778 -Node: Access to the Terminal1106685 -Node: Orphaned Process Groups1108289 -Node: Implementing a Shell1109281 -Node: Data Structures1110164 -Node: Initializing the Shell1112807 -Node: Launching Jobs1116543 -Node: Foreground and Background1123996 -Node: Stopped and Terminated Jobs1127105 -Node: Continuing Stopped Jobs1132287 -Node: Missing Pieces1133914 -Node: Functions for Job Control1135538 -Node: Identifying the Terminal1136018 -Node: Process Group Functions1137592 -Node: Terminal Access Functions1141144 -Node: Name Service Switch1144045 -Node: NSS Basics1145379 -Node: NSS Configuration File1146956 -Node: Services in the NSS configuration1148654 -Node: Actions in the NSS configuration1149935 -Node: Notes on NSS Configuration File1153094 -Node: NSS Module Internals1154970 -Node: NSS Module Names1155666 -Node: NSS Modules Interface1158030 -Node: Extending NSS1161514 -Node: Adding another Service to NSS1162445 -Node: NSS Module Function Internals1164664 -Node: Users and Groups1169065 -Node: User and Group IDs1171541 -Node: Process Persona1172448 -Node: Why Change Persona1173959 -Node: How Change Persona1175840 -Node: Reading Persona1177322 -Node: Setting User ID1179592 -Node: Setting Groups1181802 -Node: Enable/Disable Setuid1184359 -Node: Setuid Program Example1186398 -Node: Tips for Setuid1189867 -Node: Who Logged In1191955 -Node: User Database1194123 -Node: User Data Structure1194784 -Node: Lookup User1196063 -Node: Scanning All Users1199153 -Node: Writing a User Entry1202532 -Node: Group Database1203431 -Node: Group Data Structure1204018 -Node: Lookup Group1204804 -Node: Scanning All Groups1207860 -Node: Netgroup Database1211141 -Node: Netgroup Data1211575 -Node: Lookup Netgroup1213139 -Node: Netgroup Membership1216551 -Node: Database Example1217881 -Node: System Information1220055 -Node: Host Identification1220652 -Node: Hardware/Software Type ID1223871 -Node: System Configuration1226570 -Node: General Limits1228137 -Node: System Options1231776 -Node: Version Supported1235108 -Node: Sysconf1236945 -Node: Sysconf Definition1237581 -Node: Constants for Sysconf1238253 -Node: Examples of Sysconf1241386 -Node: Minimums1242379 -Node: Limits for Files1244455 -Node: Options for Files1247457 -Node: File Minimums1249746 -Node: Pathconf1251408 -Node: Utility Limits1254095 -Node: Utility Minimums1256153 -Node: String Parameters1257905 -Node: Language Features1259959 -Node: Consistency Checking1260890 -Node: Variadic Functions1265528 -Node: Why Variadic1266600 -Node: How Variadic1268565 -Node: Variadic Prototypes1269854 -Node: Receiving Arguments1271012 -Node: How Many Arguments1273726 -Node: Calling Variadics1275397 -Node: Argument Macros1277534 -Node: Variadic Example1279174 -Node: Old Varargs1280326 -Node: Null Pointer Constant1281996 -Node: Important Data Types1283081 -Node: Data Type Measurements1285647 -Node: Width of Type1286504 -Node: Range of Type1287410 -Node: Floating Type Macros1290674 -Node: Floating Point Concepts1291934 -Node: Floating Point Parameters1295669 -Node: IEEE Floating Point1302603 -Node: Structure Measurement1304356 -Node: Library Summary1305051 -Node: Maintenance1410972 -Node: Installation1411717 -Node: Tools for Installation1418563 -Node: Supported Configurations1419651 -Node: Reporting Bugs1421162 -Node: Source Layout1423539 -Node: Porting1427495 -Node: Hierarchy Conventions1435283 -Node: Porting to Unix1440203 -Node: Contributors1442048 -Node: Copying1453346 -Node: Concept Index1480210 -Node: Type Index1530394 -Node: Function Index1535184 -Node: Variable Index1567426 -Node: File Index1598743 +Node: Freeing Obstack Objects136605 +Node: Obstack Functions137941 +Node: Growing Objects140171 +Node: Extra Fast Growing144418 +Node: Status of an Obstack148037 +Node: Obstacks Data Alignment149456 +Node: Obstack Chunks151142 +Node: Summary of Obstacks153499 +Node: Variable Size Automatic156913 +Node: Alloca Example158469 +Node: Advantages of Alloca159586 +Node: Disadvantages of Alloca161478 +Node: GNU C Variable-Size Arrays162223 +Node: Relocating Allocator163381 +Node: Relocator Concepts163943 +Node: Using Relocator165456 +Node: Memory Warnings166841 +Node: Character Handling168153 +Node: Classification of Characters169102 +Node: Case Conversion172763 +Node: String and Array Utilities174611 +Node: Representation of Strings176422 +Node: String/Array Conventions179364 +Node: String Length181196 +Node: Copying and Concatenation182181 +Node: String/Array Comparison193402 +Node: Collation Functions198464 +Node: Search Functions205426 +Node: Finding Tokens in a String209697 +Node: I/O Overview215839 +Node: I/O Concepts217352 +Node: Streams and File Descriptors218497 +Node: File Position221588 +Node: File Names223722 +Node: Directories224608 +Node: File Name Resolution226345 +Node: File Name Errors229274 +Node: File Name Portability230823 +Node: I/O on Streams232815 +Node: Streams234771 +Node: Standard Streams236112 +Node: Opening Streams237778 +Node: Closing Streams243635 +Node: Simple Output246179 +Node: Character Input248515 +Node: Line Input251624 +Node: Unreading256612 +Node: Unreading Idea257421 +Node: How Unread258247 +Node: Block Input/Output260730 +Node: Formatted Output262959 +Node: Formatted Output Basics264726 +Node: Output Conversion Syntax267219 +Node: Table of Output Conversions270945 +Node: Integer Conversions273478 +Node: Floating-Point Conversions278142 +Node: Other Output Conversions282171 +Node: Formatted Output Functions285331 +Node: Dynamic Output289012 +Node: Variable Arguments Output290649 +Node: Parsing a Template String296161 +Node: Example of Parsing299988 +Node: Customizing Printf302276 +Node: Registering New Conversions304125 +Node: Conversion Specifier Options306116 +Node: Defining the Output Handler309789 +Node: Printf Extension Example312255 +Node: Formatted Input314563 +Node: Formatted Input Basics315642 +Node: Input Conversion Syntax318322 +Node: Table of Input Conversions321684 +Node: Numeric Input Conversions323981 +Node: String Input Conversions327759 +Node: Dynamic String Input331852 +Node: Other Input Conversions333042 +Node: Formatted Input Functions334694 +Node: Variable Arguments Input336260 +Node: EOF and Errors337895 +Node: Binary Streams340115 +Node: File Positioning342639 +Node: Portable Positioning346472 +Node: Stream Buffering349943 +Node: Buffering Concepts351528 +Node: Flushing Buffers352891 +Node: Controlling Buffering354387 +Node: Other Kinds of Streams358822 +Node: String Streams360084 +Node: Obstack Streams364204 +Node: Custom Streams366238 +Node: Streams and Cookies366891 +Node: Hook Functions369938 +Node: Low-Level I/O372324 +Node: Opening and Closing Files374976 +Node: I/O Primitives379655 +Node: File Position Primitive387908 +Node: Descriptors and Streams393343 +Node: Stream/Descriptor Precautions395763 +Node: Linked Channels396970 +Node: Independent Channels398198 +Node: Cleaning Streams400101 +Node: Waiting for I/O402304 +Node: Control Operations410055 +Node: Duplicating Descriptors412339 +Node: Descriptor Flags416601 +Node: File Status Flags420007 +Node: Access Modes421461 +Node: Open-time Flags423750 +Node: Operating Modes428330 +Node: Getting File Status Flags431096 +Node: File Locks433707 +Node: Interrupt Input442610 +Node: File System Interface445029 +Node: Working Directory446429 +Node: Accessing Directories450183 +Node: Directory Entries451592 +Node: Opening a Directory454392 +Node: Reading/Closing Directory456084 +Node: Simple Directory Lister459018 +Node: Random Access Directory460036 +Node: Scanning Directory Content461538 +Node: Simple Directory Lister Mark II463793 +Node: Hard Links464914 +Node: Symbolic Links467707 +Node: Deleting Files471473 +Node: Renaming Files474403 +Node: Creating Directories478030 +Node: File Attributes479778 +Node: Attribute Meanings481274 +Node: Reading Attributes486357 +Node: Testing File Type488259 +Node: File Owner491475 +Node: Permission Bits495168 +Node: Access Permission500275 +Node: Setting Permissions501425 +Node: Testing File Access506640 +Node: File Times510283 +Node: Making Special Files514791 +Node: Temporary Files516468 +Node: Pipes and FIFOs522675 +Node: Creating a Pipe524258 +Node: Pipe to a Subprocess527411 +Node: FIFO Special Files530251 +Node: Pipe Atomicity531824 +Node: Sockets532708 +Node: Socket Concepts534583 +Node: Communication Styles537797 +Node: Socket Addresses539649 +Node: Address Formats541690 +Node: Setting Address544373 +Node: Reading Address546077 +Node: File Namespace547835 +Node: File Namespace Concepts548325 +Node: File Namespace Details549920 +Node: File Socket Example551534 +Node: Internet Namespace552858 +Node: Internet Address Format554585 +Node: Host Addresses555954 +Node: Abstract Host Addresses557014 +Node: Host Address Data Type559807 +Node: Host Address Functions561698 +Node: Host Names564125 +Node: Ports569137 +Node: Services Database571175 +Node: Byte Order574002 +Node: Protocols Database576290 +Node: Inet Example579831 +Node: Misc Namespaces581861 +Node: Open/Close Sockets582611 +Node: Creating a Socket583109 +Node: Closing a Socket584777 +Node: Socket Pairs586307 +Node: Connections588317 +Node: Connecting589411 +Node: Listening591967 +Node: Accepting Connections594052 +Node: Who is Connected596908 +Node: Transferring Data598004 +Node: Sending Data599114 +Node: Receiving Data601362 +Node: Socket Data Options602826 +Node: Byte Stream Example603689 +Node: Server Example605667 +Node: Out-of-Band Data609714 +Node: Datagrams615568 +Node: Sending Datagrams616597 +Node: Receiving Datagrams618254 +Node: Datagram Example620055 +Node: Example Receiver621973 +Node: Inetd624540 +Node: Inetd Servers625348 +Node: Configuring Inetd626591 +Node: Socket Options629265 +Node: Socket Option Functions629973 +Node: Socket-Level Options631531 +Node: Networks Database635165 +Node: Low-Level Terminal Interface638027 +Node: Is It a Terminal639362 +Node: I/O Queues640578 +Node: Canonical or Not642548 +Node: Terminal Modes644395 +Node: Mode Data Types645671 +Node: Mode Functions647499 +Node: Setting Modes651439 +Node: Input Modes653427 +Node: Output Modes658694 +Node: Control Modes660307 +Node: Local Modes664397 +Node: Line Speed670711 +Node: Special Characters674871 +Node: Editing Characters676783 +Node: Signal Characters681124 +Node: Start/Stop Characters683993 +Node: Other Special685864 +Node: Noncanonical Input687678 +Node: Line Control692491 +Node: Noncanon Example696803 +Node: Mathematics698998 +Node: Domain and Range Errors700202 +Node: Trig Functions703425 +Node: Inverse Trig Functions704795 +Node: Exponents and Logarithms707233 +Node: Hyperbolic Functions710134 +Node: Pseudo-Random Numbers711713 +Node: ISO Random713299 +Node: BSD Random714472 +Node: Arithmetic716389 +Node: Not a Number717298 +Node: Predicates on Floats718640 +Node: Absolute Value720214 +Node: Normalization Functions721712 +Node: Rounding and Remainders724554 +Node: Integer Division727922 +Node: Parsing of Numbers730072 +Node: Parsing of Integers730724 +Node: Parsing of Floats738199 +Node: Searching and Sorting742663 +Node: Comparison Functions743454 +Node: Array Search Function744568 +Node: Array Sort Function745991 +Node: Search/Sort Example747963 +Node: Pattern Matching751413 +Node: Wildcard Matching752215 +Node: Globbing755093 +Node: Calling Glob755883 +Node: Flags for Globbing759464 +Node: Regular Expressions762962 +Node: POSIX Regexp Compilation763946 +Node: Flags for POSIX Regexps768061 +Node: Matching POSIX Regexps768968 +Node: Regexp Subexpressions771129 +Node: Subexpression Complications773183 +Node: Regexp Cleanup775542 +Node: Word Expansion777868 +Node: Expansion Stages779036 +Node: Calling Wordexp780529 +Node: Flags for Wordexp784492 +Node: Wordexp Example786445 +Node: Date and Time788420 +Node: Processor Time789544 +Node: Basic CPU Time790302 +Node: Detailed CPU Time792321 +Node: Calendar Time794786 +Node: Simple Calendar Time796364 +Node: High-Resolution Calendar798121 +Node: Broken-down Time803841 +Node: Formatting Date and Time809057 +Node: TZ Variable820339 +Node: Time Zone Functions826400 +Node: Time Functions Example829065 +Node: Setting an Alarm830180 +Node: Sleeping835407 +Node: Resource Usage838063 +Node: Limits on Resources841574 +Node: Priority845948 +Node: Extended Characters849210 +Node: Extended Char Intro850818 +Node: Locales and Extended Chars852755 +Node: Multibyte Char Intro853805 +Node: Wide Char Intro861099 +Node: Wide String Conversion862866 +Node: Length of Char866103 +Node: Converting One Char867814 +Node: Example of Conversion871211 +Node: Shift State874101 +Node: Locales876754 +Node: Effects of Locale878322 +Node: Choosing Locale880258 +Node: Locale Categories881582 +Node: Setting the Locale883229 +Node: Standard Locales887123 +Node: Numeric Formatting888363 +Node: General Numeric889873 +Node: Currency Symbol892795 +Node: Sign of Money Amount897405 +Node: Non-Local Exits899709 +Node: Non-Local Intro900328 +Node: Non-Local Details904055 +Node: Non-Local Exits and Signals907131 +Node: Signal Handling908601 +Node: Concepts of Signals910636 +Node: Kinds of Signals911200 +Node: Signal Generation912597 +Node: Delivery of Signal914864 +Node: Standard Signals917721 +Node: Program Error Signals919314 +Node: Termination Signals926772 +Node: Alarm Signals930610 +Node: Asynchronous I/O Signals931850 +Node: Job Control Signals933041 +Node: Operation Error Signals937653 +Node: Miscellaneous Signals939592 +Node: Signal Messages941288 +Node: Signal Actions943174 +Node: Basic Signal Handling944119 +Node: Advanced Signal Handling949052 +Node: Signal and Sigaction952008 +Node: Sigaction Function Example953760 +Node: Flags for Sigaction956076 +Node: Initial Signal Actions958454 +Node: Defining Handlers959837 +Node: Handler Returns962022 +Node: Termination in Handler964072 +Node: Longjmp in Handler965488 +Node: Signals in Handler967583 +Node: Merged Signals969703 +Node: Nonreentrancy975413 +Node: Atomic Data Access980961 +Node: Non-atomic Example981997 +Node: Atomic Types983768 +Node: Atomic Usage984776 +Node: Interrupted Primitives986246 +Node: Generating Signals989546 +Node: Signaling Yourself990139 +Node: Signaling Another Process992121 +Node: Permission for kill995504 +Node: Kill Example997300 +Node: Blocking Signals999644 +Node: Why Block1001416 +Node: Signal Sets1002953 +Node: Process Signal Mask1005979 +Node: Testing for Delivery1008987 +Node: Blocking for Handler1010237 +Node: Checking for Pending Signals1012656 +Node: Remembering a Signal1014668 +Node: Waiting for a Signal1018217 +Node: Using Pause1018762 +Node: Pause Problems1019982 +Node: Sigsuspend1021706 +Node: Signal Stack1024416 +Node: BSD Signal Handling1029760 +Node: BSD Handler1031034 +Node: Blocking in BSD1033468 +Node: Process Startup1034922 +Node: Program Arguments1035957 +Node: Argument Syntax1038686 +Node: Parsing Options1041316 +Node: Example of Getopt1044607 +Node: Long Options1047323 +Node: Long Option Example1051384 +Node: Suboptions1054233 +Node: Suboptions Example1056182 +Node: Environment Variables1058277 +Node: Environment Access1060138 +Node: Standard Environment1062180 +Node: Program Termination1065863 +Node: Normal Termination1067082 +Node: Exit Status1068308 +Node: Cleanups on Exit1071329 +Node: Aborting a Program1073146 +Node: Termination Internals1074045 +Node: Processes1075821 +Node: Running a Command1077844 +Node: Process Creation Concepts1079337 +Node: Process Identification1081347 +Node: Creating a Process1082271 +Node: Executing a File1085887 +Node: Process Completion1092922 +Node: Process Completion Status1097931 +Node: BSD Wait Functions1099575 +Node: Process Creation Example1101467 +Node: Job Control1103717 +Node: Concepts of Job Control1104997 +Node: Job Control is Optional1108354 +Node: Controlling Terminal1109404 +Node: Access to the Terminal1110311 +Node: Orphaned Process Groups1111915 +Node: Implementing a Shell1112907 +Node: Data Structures1113790 +Node: Initializing the Shell1116433 +Node: Launching Jobs1120169 +Node: Foreground and Background1127622 +Node: Stopped and Terminated Jobs1130731 +Node: Continuing Stopped Jobs1135913 +Node: Missing Pieces1137540 +Node: Functions for Job Control1139164 +Node: Identifying the Terminal1139644 +Node: Process Group Functions1141218 +Node: Terminal Access Functions1144770 +Node: Name Service Switch1147671 +Node: NSS Basics1149002 +Node: NSS Configuration File1150579 +Node: Services in the NSS configuration1152277 +Node: Actions in the NSS configuration1153558 +Node: Notes on NSS Configuration File1156717 +Node: NSS Module Internals1158593 +Node: NSS Module Names1159289 +Node: NSS Modules Interface1161653 +Node: Extending NSS1165137 +Node: Adding another Service to NSS1166068 +Node: NSS Module Function Internals1168287 +Node: Users and Groups1172688 +Node: User and Group IDs1175164 +Node: Process Persona1176071 +Node: Why Change Persona1177582 +Node: How Change Persona1179463 +Node: Reading Persona1180945 +Node: Setting User ID1183215 +Node: Setting Groups1185425 +Node: Enable/Disable Setuid1187982 +Node: Setuid Program Example1190021 +Node: Tips for Setuid1193490 +Node: Who Logged In1195578 +Node: User Database1197746 +Node: User Data Structure1198407 +Node: Lookup User1199686 +Node: Scanning All Users1202776 +Node: Writing a User Entry1206155 +Node: Group Database1207054 +Node: Group Data Structure1207641 +Node: Lookup Group1208427 +Node: Scanning All Groups1211483 +Node: Netgroup Database1214764 +Node: Netgroup Data1215198 +Node: Lookup Netgroup1216762 +Node: Netgroup Membership1220174 +Node: Database Example1221504 +Node: System Information1223678 +Node: Host Identification1224275 +Node: Hardware/Software Type ID1227494 +Node: System Configuration1230193 +Node: General Limits1231760 +Node: System Options1235399 +Node: Version Supported1238731 +Node: Sysconf1240568 +Node: Sysconf Definition1241204 +Node: Constants for Sysconf1241876 +Node: Examples of Sysconf1245009 +Node: Minimums1246002 +Node: Limits for Files1248078 +Node: Options for Files1251080 +Node: File Minimums1253369 +Node: Pathconf1255031 +Node: Utility Limits1257718 +Node: Utility Minimums1259776 +Node: String Parameters1261528 +Node: Language Features1263582 +Node: Consistency Checking1264513 +Node: Variadic Functions1269151 +Node: Why Variadic1270223 +Node: How Variadic1272188 +Node: Variadic Prototypes1273477 +Node: Receiving Arguments1274635 +Node: How Many Arguments1277349 +Node: Calling Variadics1279020 +Node: Argument Macros1281157 +Node: Variadic Example1282797 +Node: Old Varargs1283949 +Node: Null Pointer Constant1285619 +Node: Important Data Types1286704 +Node: Data Type Measurements1289270 +Node: Width of Type1290127 +Node: Range of Type1291033 +Node: Floating Type Macros1294297 +Node: Floating Point Concepts1295557 +Node: Floating Point Parameters1299292 +Node: IEEE Floating Point1306226 +Node: Structure Measurement1307979 +Node: Library Summary1308674 +Node: Maintenance1414595 +Node: Installation1415340 +Node: Tools for Installation1422186 +Node: Supported Configurations1423274 +Node: Reporting Bugs1424785 +Node: Source Layout1427162 +Node: Porting1431118 +Node: Hierarchy Conventions1438906 +Node: Porting to Unix1443826 +Node: Contributors1445671 +Node: Copying1456969 +Node: Concept Index1483833 +Node: Type Index1534017 +Node: Function Index1538807 +Node: Variable Index1571187 +Node: File Index1602504  End Tag Table diff -durpN glibc-2.0.1/manual/libc.info-10 glibc-2.0.2/manual/libc.info-10 --- glibc-2.0.1/manual/libc.info-10 Sat Jan 25 08:16:44 1997 +++ glibc-2.0.2/manual/libc.info-10 Tue Mar 18 13:35:58 1997 @@ -577,6 +577,9 @@ Streams::. * Simple Directory Lister:: A very simple directory listing program. * Random Access Directory:: Rereading part of the directory already read with the same stream. +* Scanning Directory Content:: Get entries for user selected subset of + contents in given directory. +* Simple Directory Lister Mark II:: Revised version of the program.  File: libc.info, Node: Directory Entries, Next: Opening a Directory, Up: Accessing Directories @@ -800,11 +803,11 @@ current working directory: The order in which files appear in a directory tends to be fairly random. A more useful program would sort the entries (perhaps by -alphabetizing them) before printing them; see *Note Array Sort -Function::. +alphabetizing them) before printing them; see *Note Scanning Directory +Content:: and *Note Array Sort Function::.  -File: libc.info, Node: Random Access Directory, Prev: Simple Directory Lister, Up: Accessing Directories +File: libc.info, Node: Random Access Directory, Next: Scanning Directory Content, Prev: Simple Directory Lister, Up: Accessing Directories Random Access in a Directory Stream ----------------------------------- @@ -835,6 +838,94 @@ declared in the header file `dirent.h'. `telldir'.  +File: libc.info, Node: Scanning Directory Content, Next: Simple Directory Lister Mark II, Prev: Random Access Directory, Up: Accessing Directories + +Scanning the Content of a Directory +----------------------------------- + + A higher-level interface to the directory handling functions is the +`scandir' function. With its help one can select a subset of the +entries in a directory, possibly sort them and get as the result a list +of names. + + - Function: int scandir (const char *DIR, struct dirent ***NAMELIST, + int (*SELECTOR) (struct dirent *), int (*CMP) (const void *, + const void *)) + The `scandir' function scans the contents of the directory selected + by DIR. The result in NAMELIST is an array of pointers to + structure of type `struct dirent' which describe all selected + directory entries and which is allocated using `malloc'. Instead + of always getting all directory entries returned, the user supplied + function SELECTOR can be used to decide which entries are in the + result. Only the entries for which SELECTOR returns a nonzero + value are selected. + + Finally the entries in the NAMELIST are sorted using the user + supplied function CMP. The arguments of the CMP function are of + type `struct dirent **'. I.e., one cannot directly use the + `strcmp' or `strcoll' function; see the function `alphasort' below. + + The return value of the function gives the number of entries + placed in NAMELIST. If it is `-1' an error occurred and the global + variable `errno' contains more information on the error. + + As said above the fourth argument to the `scandir' function must be +a pointer to a sorting function. For the convenience of the programmer +the GNU C library contains an implementation of a function which is very +helpful for this purpose. + + - Function: int alphasort (const void *A, const void *B) + The `alphasort' function behaves like the `strcmp' function (*note + String/Array Comparison::.). The difference is that the arguments + are not string pointers but instead they are of type `struct + dirent **'. + + Return value of is less than, equal to, or greater than zero + depending on the order of the two entries A and B. + + +File: libc.info, Node: Simple Directory Lister Mark II, Prev: Scanning Directory Content, Up: Accessing Directories + +Simple Program to List a Directory, Mark II +------------------------------------------- + + Here is a revised version of the directory lister found above (*note +Simple Directory Lister::.). Using the `scandir' function we can avoid +using the functions which directly work with the directory contents. +After the call the found entries are available for direct used. + + #include + #include + + static int + one (struct dirent *unused) + { + return 1; + } + + int + main (void) + { + struct dirent **eps; + int n; + + n = scandir ("./", &eps, one, alphasort); + if (n >= 0) + { + int cnt; + for (cnt = 0; cnt < n; ++cnt) + puts (eps[cnt]->d_name); + } + else + perror ("Couldn't open the directory"); + + return 0; + } + + Please note the simple selector function for this example. Since we +want to see all directory entries we always return `1'. + + File: libc.info, Node: Hard Links, Next: Symbolic Links, Prev: Accessing Directories, Up: File System Interface Hard Links @@ -1166,86 +1257,4 @@ Renaming Files `EXDEV' The two file names NEWNAME and OLDNAMES 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 whose name is - 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. - - 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 -=============== - - When you issue an `ls -l' shell command on a file, it gives you -information about the size of the file, who owns it, when it was last -modified, and the like. This kind of information is called the "file -attributes"; it is associated with the file itself and not a particular -one of its names. - - This section contains information about how you can inquire about and -modify these attributes of files. - -* Menu: - -* Attribute Meanings:: The names of the file attributes, - and what their values mean. -* Reading Attributes:: How to read the attributes of a file. -* Testing File Type:: Distinguishing ordinary files, - directories, links... -* File Owner:: How ownership for new files is determined, - and how to change it. -* Permission Bits:: How information about a file's access - mode is stored. -* Access Permission:: How the system decides who can access a file. -* Setting Permissions:: How permissions for new files are assigned, - and how to change them. -* Testing File Access:: How to find out if your process can - access a file. -* File Times:: About the time attributes of a file. diff -durpN glibc-2.0.1/manual/libc.info-11 glibc-2.0.2/manual/libc.info-11 --- glibc-2.0.1/manual/libc.info-11 Sat Jan 25 08:16:44 1997 +++ glibc-2.0.2/manual/libc.info-11 Tue Mar 18 13:35:58 1997 @@ -26,6 +26,88 @@ 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 whose name is + 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. + + 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 +=============== + + When you issue an `ls -l' shell command on a file, it gives you +information about the size of the file, who owns it, when it was last +modified, and the like. This kind of information is called the "file +attributes"; it is associated with the file itself and not a particular +one of its names. + + This section contains information about how you can inquire about and +modify these attributes of files. + +* Menu: + +* Attribute Meanings:: The names of the file attributes, + and what their values mean. +* Reading Attributes:: How to read the attributes of a file. +* Testing File Type:: Distinguishing ordinary files, + directories, links... +* File Owner:: How ownership for new files is determined, + and how to change it. +* Permission Bits:: How information about a file's access + mode is stored. +* Access Permission:: How the system decides who can access a file. +* Setting Permissions:: How permissions for new files are assigned, + and how to change them. +* Testing File Access:: How to find out if your process can + access a file. +* File Times:: About the time attributes of a file. + + File: libc.info, Node: Attribute Meanings, Next: Reading Attributes, Up: File Attributes What the File Attribute Values Mean @@ -1167,82 +1249,5 @@ read by the child process. write_to_pipe (mypipe[1]); return EXIT_SUCCESS; } - } - - -File: libc.info, Node: Pipe to a Subprocess, Next: FIFO Special Files, Prev: Creating a Pipe, Up: Pipes and FIFOs - -Pipe to a Subprocess -==================== - - A common use of pipes is to send data to or receive data from a -program being run as subprocess. One way of doing this is by using a -combination of `pipe' (to create the pipe), `fork' (to create the -subprocess), `dup2' (to force the subprocess to use the pipe as its -standard input or output channel), and `exec' (to execute the new -program). Or, you can use `popen' and `pclose'. - - The advantage of using `popen' and `pclose' is that the interface is -much simpler and easier to use. But it doesn't offer as much -flexibility as using the low-level functions directly. - - - Function: FILE * popen (const char *COMMAND, const char *MODE) - The `popen' function is closely related to the `system' function; - see *Note Running a Command::. It executes the shell command - COMMAND as a subprocess. However, instead of waiting for the - command to complete, it creates a pipe to the subprocess and - returns a stream that corresponds to that pipe. - - If you specify a MODE argument of `"r"', you can read from the - stream to retrieve data from the standard output channel of the - subprocess. The subprocess inherits its standard input channel - from the parent process. - - Similarly, if you specify a MODE argument of `"w"', you can write - to the stream to send data to the standard input channel of the - subprocess. The subprocess inherits its standard output channel - from the parent process. - - In the event of an error, `popen' returns a null pointer. This - might happen if the pipe or stream cannot be created, if the - subprocess cannot be forked, or if the program cannot be executed. - - - Function: int pclose (FILE *STREAM) - The `pclose' function is used to close a stream created by `popen'. - It waits for the child process to terminate and returns its status - value, as for the `system' function. - - Here is an example showing how to use `popen' and `pclose' to filter -output through another program, in this case the paging program `more'. - - #include - #include - - void - write_data (FILE * stream) - { - int i; - for (i = 0; i < 100; i++) - fprintf (stream, "%d\n", i); - if (ferror (stream)) - { - fprintf (stderr, "Output to stream failed.\n"); - exit (EXIT_FAILURE); - } - } - int - main (void) - { - FILE *output; - - output = popen ("more", "w"); - if (!output) - { - fprintf (stderr, "Could not run more.\n"); - return EXIT_FAILURE; - } - write_data (output); - pclose (output); - return EXIT_SUCCESS; } diff -durpN glibc-2.0.1/manual/libc.info-12 glibc-2.0.2/manual/libc.info-12 --- glibc-2.0.1/manual/libc.info-12 Sat Jan 25 08:16:44 1997 +++ glibc-2.0.2/manual/libc.info-12 Tue Mar 18 13:35:58 1997 @@ -26,6 +26,83 @@ entitled "GNU Library General Public Lic accuracy by the Foundation.  +File: libc.info, Node: Pipe to a Subprocess, Next: FIFO Special Files, Prev: Creating a Pipe, Up: Pipes and FIFOs + +Pipe to a Subprocess +==================== + + A common use of pipes is to send data to or receive data from a +program being run as subprocess. One way of doing this is by using a +combination of `pipe' (to create the pipe), `fork' (to create the +subprocess), `dup2' (to force the subprocess to use the pipe as its +standard input or output channel), and `exec' (to execute the new +program). Or, you can use `popen' and `pclose'. + + The advantage of using `popen' and `pclose' is that the interface is +much simpler and easier to use. But it doesn't offer as much +flexibility as using the low-level functions directly. + + - Function: FILE * popen (const char *COMMAND, const char *MODE) + The `popen' function is closely related to the `system' function; + see *Note Running a Command::. It executes the shell command + COMMAND as a subprocess. However, instead of waiting for the + command to complete, it creates a pipe to the subprocess and + returns a stream that corresponds to that pipe. + + If you specify a MODE argument of `"r"', you can read from the + stream to retrieve data from the standard output channel of the + subprocess. The subprocess inherits its standard input channel + from the parent process. + + Similarly, if you specify a MODE argument of `"w"', you can write + to the stream to send data to the standard input channel of the + subprocess. The subprocess inherits its standard output channel + from the parent process. + + In the event of an error, `popen' returns a null pointer. This + might happen if the pipe or stream cannot be created, if the + subprocess cannot be forked, or if the program cannot be executed. + + - Function: int pclose (FILE *STREAM) + The `pclose' function is used to close a stream created by `popen'. + It waits for the child process to terminate and returns its status + value, as for the `system' function. + + Here is an example showing how to use `popen' and `pclose' to filter +output through another program, in this case the paging program `more'. + + #include + #include + + void + write_data (FILE * stream) + { + int i; + for (i = 0; i < 100; i++) + fprintf (stream, "%d\n", i); + if (ferror (stream)) + { + fprintf (stderr, "Output to stream failed.\n"); + exit (EXIT_FAILURE); + } + } + int + main (void) + { + FILE *output; + + output = popen ("more", "w"); + if (!output) + { + fprintf (stderr, "Could not run more.\n"); + return EXIT_FAILURE; + } + write_data (output); + pclose (output); + return EXIT_SUCCESS; + } + + File: libc.info, Node: FIFO Special Files, Next: Pipe Atomicity, Prev: Pipe to a Subprocess, Up: Pipes and FIFOs FIFO Special Files @@ -1136,84 +1213,4 @@ functions are declared in `netinet/in.h' - Function: unsigned long int ntohl (unsigned long int NETLONG) This function converts the `long' integer NETLONG from network byte order to host byte order. - - -File: libc.info, Node: Protocols Database, Next: Ports, Prev: Host Addresses, Up: Internet Namespace - -Protocols Database ------------------- - - The communications protocol used with a socket controls low-level -details of how data is exchanged. For example, the protocol implements -things like checksums to detect errors in transmissions, and routing -instructions for messages. Normal user programs have little reason to -mess with these details directly. - - The default communications protocol for the Internet namespace -depends on the communication style. For stream communication, the -default is TCP ("transmission control protocol"). For datagram -communication, the default is UDP ("user datagram protocol"). For -reliable datagram communication, the default is RDP ("reliable datagram -protocol"). You should nearly always use the default. - - Internet protocols are generally specified by a name instead of a -number. The network protocols that a host knows about are stored in a -database. This is usually either derived from the file -`/etc/protocols', or it may be an equivalent provided by a name server. -You look up the protocol number associated with a named protocol in -the database using the `getprotobyname' function. - - Here are detailed descriptions of the utilities for accessing the -protocols database. These are declared in `netdb.h'. - - - Data Type: struct protoent - This data type is used to represent entries in the network - protocols database. It has the following members: - - `char *p_name' - This is the official name of the protocol. - - `char **p_aliases' - These are alternate names for the protocol, specified as an - array of strings. The last element of the array is a null - pointer. - - `int p_proto' - This is the protocol number (in host byte order); use this - member as the PROTOCOL argument to `socket'. - - You can use `getprotobyname' and `getprotobynumber' to search the -protocols database for a specific protocol. The information is -returned in a statically-allocated structure; you must copy the -information if you need to save it across calls. - - - Function: struct protoent * getprotobyname (const char *NAME) - The `getprotobyname' function returns information about the - network protocol named NAME. If there is no such protocol, it - returns a null pointer. - - - Function: struct protoent * getprotobynumber (int PROTOCOL) - The `getprotobynumber' function returns information about the - network protocol with number PROTOCOL. If there is no such - protocol, it returns a null pointer. - - You can also scan the whole protocols database one protocol at a -time by using `setprotoent', `getprotoent', and `endprotoent'. Be -careful in using these functions, because they are not reentrant. - - - Function: void setprotoent (int STAYOPEN) - This function opens the protocols database to begin scanning it. - - If the STAYOPEN argument is nonzero, this sets a flag so that - subsequent calls to `getprotobyname' or `getprotobynumber' 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 protoent * getprotoent (void) - This function returns the next entry in the protocols database. It - returns a null pointer if there are no more entries. - - - Function: void endprotoent (void) - This function closes the protocols database. diff -durpN glibc-2.0.1/manual/libc.info-13 glibc-2.0.2/manual/libc.info-13 --- glibc-2.0.1/manual/libc.info-13 Sat Jan 25 08:16:44 1997 +++ glibc-2.0.2/manual/libc.info-13 Tue Mar 18 13:35:58 1997 @@ -26,6 +26,86 @@ entitled "GNU Library General Public Lic accuracy by the Foundation.  +File: libc.info, Node: Protocols Database, Next: Ports, Prev: Host Addresses, Up: Internet Namespace + +Protocols Database +------------------ + + The communications protocol used with a socket controls low-level +details of how data is exchanged. For example, the protocol implements +things like checksums to detect errors in transmissions, and routing +instructions for messages. Normal user programs have little reason to +mess with these details directly. + + The default communications protocol for the Internet namespace +depends on the communication style. For stream communication, the +default is TCP ("transmission control protocol"). For datagram +communication, the default is UDP ("user datagram protocol"). For +reliable datagram communication, the default is RDP ("reliable datagram +protocol"). You should nearly always use the default. + + Internet protocols are generally specified by a name instead of a +number. The network protocols that a host knows about are stored in a +database. This is usually either derived from the file +`/etc/protocols', or it may be an equivalent provided by a name server. +You look up the protocol number associated with a named protocol in +the database using the `getprotobyname' function. + + Here are detailed descriptions of the utilities for accessing the +protocols database. These are declared in `netdb.h'. + + - Data Type: struct protoent + This data type is used to represent entries in the network + protocols database. It has the following members: + + `char *p_name' + This is the official name of the protocol. + + `char **p_aliases' + These are alternate names for the protocol, specified as an + array of strings. The last element of the array is a null + pointer. + + `int p_proto' + This is the protocol number (in host byte order); use this + member as the PROTOCOL argument to `socket'. + + You can use `getprotobyname' and `getprotobynumber' to search the +protocols database for a specific protocol. The information is +returned in a statically-allocated structure; you must copy the +information if you need to save it across calls. + + - Function: struct protoent * getprotobyname (const char *NAME) + The `getprotobyname' function returns information about the + network protocol named NAME. If there is no such protocol, it + returns a null pointer. + + - Function: struct protoent * getprotobynumber (int PROTOCOL) + The `getprotobynumber' function returns information about the + network protocol with number PROTOCOL. If there is no such + protocol, it returns a null pointer. + + You can also scan the whole protocols database one protocol at a +time by using `setprotoent', `getprotoent', and `endprotoent'. Be +careful in using these functions, because they are not reentrant. + + - Function: void setprotoent (int STAYOPEN) + This function opens the protocols database to begin scanning it. + + If the STAYOPEN argument is nonzero, this sets a flag so that + subsequent calls to `getprotobyname' or `getprotobynumber' 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 protoent * getprotoent (void) + This function returns the next entry in the protocols database. It + returns a null pointer if there are no more entries. + + - Function: void endprotoent (void) + This function closes the protocols database. + + File: libc.info, Node: Inet Example, Prev: Byte Order, Up: Internet Namespace Internet Socket Example @@ -1290,87 +1370,4 @@ ports and their programs in the file `/e * Inetd Servers:: * Configuring Inetd:: - - -File: libc.info, Node: Inetd Servers, Next: Configuring Inetd, Up: Inetd - -`inetd' Servers ---------------- - - Writing a server program to be run by `inetd' is very simple. Each -time someone requests a connection to the appropriate port, a new server -process starts. The connection already exists at this time; the socket -is available as the standard input descriptor and as the standard -output descriptor (descriptors 0 and 1) in the server process. So the -server program can begin reading and writing data right away. Often -the program needs only the ordinary I/O facilities; in fact, a -general-purpose filter program that knows nothing about sockets can -work as a byte stream server run by `inetd'. - - You can also use `inetd' for servers that use connectionless -communication styles. For these servers, `inetd' does not try to accept -a connection, since no connection is possible. It just starts the -server program, which can read the incoming datagram packet from -descriptor 0. The server program can handle one request and then exit, -or you can choose to write it to keep reading more requests until no -more arrive, and then exit. You must specify which of these two -techniques the server uses, when you configure `inetd'. - - -File: libc.info, Node: Configuring Inetd, Prev: Inetd Servers, Up: Inetd - -Configuring `inetd' -------------------- - - The file `/etc/inetd.conf' tells `inetd' which ports to listen to -and what server programs to run for them. Normally each entry in the -file is one line, but you can split it onto multiple lines provided all -but the first line of the entry start with whitespace. Lines that -start with `#' are comments. - - Here are two standard entries in `/etc/inetd.conf': - - ftp stream tcp nowait root /libexec/ftpd ftpd - talk dgram udp wait root /libexec/talkd talkd - - An entry has this format: - - SERVICE STYLE PROTOCOL WAIT USERNAME PROGRAM ARGUMENTS - - The SERVICE field says which service this program provides. It -should be the name of a service defined in `/etc/services'. `inetd' -uses SERVICE to decide which port to listen on for this entry. - - The fields STYLE and PROTOCOL specify the communication style and -the protocol to use for the listening socket. The style should be the -name of a communication style, converted to lower case and with `SOCK_' -deleted--for example, `stream' or `dgram'. PROTOCOL should be one of -the protocols listed in `/etc/protocols'. The typical protocol names -are `tcp' for byte stream connections and `udp' for unreliable -datagrams. - - The WAIT field should be either `wait' or `nowait'. Use `wait' if -STYLE is a connectionless style and the server, once started, handles -multiple requests, as many as come in. Use `nowait' if `inetd' should -start a new process for each message or request that comes in. If -STYLE uses connections, then WAIT *must* be `nowait'. - - USER is the user name that the server should run as. `inetd' runs -as root, so it can set the user ID of its children arbitrarily. It's -best to avoid using `root' for USER if you can; but some servers, such -as Telnet and FTP, read a username and password themselves. These -servers need to be root initially so they can log in as commanded by -the data coming over the network. - - PROGRAM together with ARGUMENTS specifies the command to run to -start the server. PROGRAM should be an absolute file name specifying -the executable file to run. ARGUMENTS consists of any number of -whitespace-separated words, which become the command-line arguments of -PROGRAM. The first word in ARGUMENTS is argument zero, which should by -convention be the program name itself (sans directories). - - If you edit `/etc/inetd.conf', you can tell `inetd' to reread the -file and obey its new contents by sending the `inetd' process the -`SIGHUP' signal. You'll have to use `ps' to determine the process ID -of the `inetd' process, as it is not fixed. diff -durpN glibc-2.0.1/manual/libc.info-14 glibc-2.0.2/manual/libc.info-14 --- glibc-2.0.1/manual/libc.info-14 Sat Jan 25 08:16:44 1997 +++ glibc-2.0.2/manual/libc.info-14 Tue Mar 18 13:35:58 1997 @@ -26,6 +26,89 @@ entitled "GNU Library General Public Lic accuracy by the Foundation.  +File: libc.info, Node: Inetd Servers, Next: Configuring Inetd, Up: Inetd + +`inetd' Servers +--------------- + + Writing a server program to be run by `inetd' is very simple. Each +time someone requests a connection to the appropriate port, a new server +process starts. The connection already exists at this time; the socket +is available as the standard input descriptor and as the standard +output descriptor (descriptors 0 and 1) in the server process. So the +server program can begin reading and writing data right away. Often +the program needs only the ordinary I/O facilities; in fact, a +general-purpose filter program that knows nothing about sockets can +work as a byte stream server run by `inetd'. + + You can also use `inetd' for servers that use connectionless +communication styles. For these servers, `inetd' does not try to accept +a connection, since no connection is possible. It just starts the +server program, which can read the incoming datagram packet from +descriptor 0. The server program can handle one request and then exit, +or you can choose to write it to keep reading more requests until no +more arrive, and then exit. You must specify which of these two +techniques the server uses, when you configure `inetd'. + + +File: libc.info, Node: Configuring Inetd, Prev: Inetd Servers, Up: Inetd + +Configuring `inetd' +------------------- + + The file `/etc/inetd.conf' tells `inetd' which ports to listen to +and what server programs to run for them. Normally each entry in the +file is one line, but you can split it onto multiple lines provided all +but the first line of the entry start with whitespace. Lines that +start with `#' are comments. + + Here are two standard entries in `/etc/inetd.conf': + + ftp stream tcp nowait root /libexec/ftpd ftpd + talk dgram udp wait root /libexec/talkd talkd + + An entry has this format: + + SERVICE STYLE PROTOCOL WAIT USERNAME PROGRAM ARGUMENTS + + The SERVICE field says which service this program provides. It +should be the name of a service defined in `/etc/services'. `inetd' +uses SERVICE to decide which port to listen on for this entry. + + The fields STYLE and PROTOCOL specify the communication style and +the protocol to use for the listening socket. The style should be the +name of a communication style, converted to lower case and with `SOCK_' +deleted--for example, `stream' or `dgram'. PROTOCOL should be one of +the protocols listed in `/etc/protocols'. The typical protocol names +are `tcp' for byte stream connections and `udp' for unreliable +datagrams. + + The WAIT field should be either `wait' or `nowait'. Use `wait' if +STYLE is a connectionless style and the server, once started, handles +multiple requests, as many as come in. Use `nowait' if `inetd' should +start a new process for each message or request that comes in. If +STYLE uses connections, then WAIT *must* be `nowait'. + + USER is the user name that the server should run as. `inetd' runs +as root, so it can set the user ID of its children arbitrarily. It's +best to avoid using `root' for USER if you can; but some servers, such +as Telnet and FTP, read a username and password themselves. These +servers need to be root initially so they can log in as commanded by +the data coming over the network. + + PROGRAM together with ARGUMENTS specifies the command to run to +start the server. PROGRAM should be an absolute file name specifying +the executable file to run. ARGUMENTS consists of any number of +whitespace-separated words, which become the command-line arguments of +PROGRAM. The first word in ARGUMENTS is argument zero, which should by +convention be the program name itself (sans directories). + + If you edit `/etc/inetd.conf', you can tell `inetd' to reread the +file and obey its new contents by sending the `inetd' process the +`SIGHUP' signal. You'll have to use `ps' to determine the process ID +of the `inetd' process, as it is not fixed. + + File: libc.info, Node: Socket Options, Next: Networks Database, Prev: Inetd, Up: Sockets Socket Options @@ -1117,43 +1200,4 @@ speeds that typical serial lines can sup BSD defines two additional speed symbols as aliases: `EXTA' is an alias for `B19200' and `EXTB' is an alias for `B38400'. These aliases are obsolete. - - -File: libc.info, Node: Special Characters, Next: Noncanonical Input, Prev: Line Speed, Up: Terminal Modes - -Special Characters ------------------- - - In canonical input, the terminal driver recognizes a number of -special characters which perform various control functions. These -include the ERASE character (usually ) for editing input, and -other editing characters. The INTR character (normally `C-c') for -sending a `SIGINT' signal, and other signal-raising characters, may be -available in either canonical or noncanonical input mode. All these -characters are described in this section. - - The particular characters used are specified in the `c_cc' member of -the `struct termios' structure. This member is an array; each element -specifies the character for a particular role. Each element has a -symbolic constant that stands for the index of that element--for -example, `INTR' is the index of the element that specifies the INTR -character, so storing `'='' in `TERMIOS.c_cc[INTR]' specifies `=' as -the INTR character. - - On some systems, you can disable a particular special character -function by specifying the value `_POSIX_VDISABLE' for that role. This -value is unequal to any possible character code. *Note Options for -Files::, for more information about how to tell whether the operating -system you are using supports `_POSIX_VDISABLE'. - -* Menu: - -* Editing Characters:: Special characters that terminate lines and - delete text, and other editing functions. -* Signal Characters:: Special characters that send or raise signals - to or for certain classes of processes. -* Start/Stop Characters:: Special characters that suspend or resume - suspended output. -* Other Special:: Other special characters for BSD systems: - they can discard output, and print status. diff -durpN glibc-2.0.1/manual/libc.info-15 glibc-2.0.2/manual/libc.info-15 --- glibc-2.0.1/manual/libc.info-15 Sat Jan 25 08:16:44 1997 +++ glibc-2.0.2/manual/libc.info-15 Tue Mar 18 13:35:58 1997 @@ -26,6 +26,45 @@ entitled "GNU Library General Public Lic accuracy by the Foundation.  +File: libc.info, Node: Special Characters, Next: Noncanonical Input, Prev: Line Speed, Up: Terminal Modes + +Special Characters +------------------ + + In canonical input, the terminal driver recognizes a number of +special characters which perform various control functions. These +include the ERASE character (usually ) for editing input, and +other editing characters. The INTR character (normally `C-c') for +sending a `SIGINT' signal, and other signal-raising characters, may be +available in either canonical or noncanonical input mode. All these +characters are described in this section. + + The particular characters used are specified in the `c_cc' member of +the `struct termios' structure. This member is an array; each element +specifies the character for a particular role. Each element has a +symbolic constant that stands for the index of that element--for +example, `INTR' is the index of the element that specifies the INTR +character, so storing `'='' in `TERMIOS.c_cc[INTR]' specifies `=' as +the INTR character. + + On some systems, you can disable a particular special character +function by specifying the value `_POSIX_VDISABLE' for that role. This +value is unequal to any possible character code. *Note Options for +Files::, for more information about how to tell whether the operating +system you are using supports `_POSIX_VDISABLE'. + +* Menu: + +* Editing Characters:: Special characters that terminate lines and + delete text, and other editing functions. +* Signal Characters:: Special characters that send or raise signals + to or for certain classes of processes. +* Start/Stop Characters:: Special characters that suspend or resume + suspended output. +* Other Special:: Other special characters for BSD systems: + they can discard output, and print status. + + File: libc.info, Node: Editing Characters, Next: Signal Characters, Up: Special Characters Characters for Input Editing diff -durpN glibc-2.0.1/manual/libc.info-16 glibc-2.0.2/manual/libc.info-16 --- glibc-2.0.1/manual/libc.info-16 Sat Jan 25 08:16:44 1997 +++ glibc-2.0.2/manual/libc.info-16 Tue Mar 18 13:35:58 1997 @@ -786,7 +786,7 @@ fit the pattern or not. The symbols des If you set both `FNM_PERIOD' and `FNM_FILE_NAME', then the special treatment applies to `.' following `/' as well as to `.' at the beginning of STRING. (The shell uses the `FNM_PERIOD' and - `FNM_FILE_NAME' falgs together for matching file names.) + `FNM_FILE_NAME' flags together for matching file names.) `FNM_NOESCAPE' Don't treat the `\' character specially in patterns. Normally, diff -durpN glibc-2.0.1/manual/libc.info-23 glibc-2.0.2/manual/libc.info-23 --- glibc-2.0.1/manual/libc.info-23 Sat Jan 25 08:16:44 1997 +++ glibc-2.0.2/manual/libc.info-23 Tue Mar 18 13:35:58 1997 @@ -239,7 +239,7 @@ file `stdlib.h'. On POSIX systems, the value of this macro is `1'. On other systems, the value might be some other (possibly non-constant) integer expression. Other nonzero status values also indicate - future. Certain programs use different nonzero status values to + failures. Certain programs use different nonzero status values to indicate particular kinds of "non-success". For example, `diff' uses status value `1' to mean that the files are different, and `2' or more to mean that there was difficulty in opening the files. diff -durpN glibc-2.0.1/manual/libc.info-24 glibc-2.0.2/manual/libc.info-24 --- glibc-2.0.1/manual/libc.info-24 Sat Jan 25 08:16:44 1997 +++ glibc-2.0.2/manual/libc.info-24 Tue Mar 18 13:35:58 1997 @@ -984,7 +984,7 @@ System Databases and Name Service Switch Various functions in the C Library need to be configured to work correctly in the local environment. Traditionally, this was done by -using files (e.g., `/etc/passwd'), but other nameservices (line the +using files (e.g., `/etc/passwd'), but other nameservices (like the Network Information Service (NIS) and the Domain Name Service (DNS)) became popular, and were hacked into the C library, usually with a fixed search order (*note frobnicate: (jargon)frobnicate.). @@ -996,8 +996,8 @@ Solaris 2. GNU C Library follows their Though the interface might be similar to Sun's version there is no common code. We never saw any source code of Sun's implementation and -so the internal interface is incompatible. This is also manifests in -the file names we use as we will see later. +so the internal interface is incompatible. This also manifests in the +file names we use as we will see later. * Menu: diff -durpN glibc-2.0.1/manual/libc.info-3 glibc-2.0.2/manual/libc.info-3 --- glibc-2.0.1/manual/libc.info-3 Sat Jan 25 08:16:44 1997 +++ glibc-2.0.2/manual/libc.info-3 Tue Mar 18 13:35:58 1997 @@ -951,9 +951,9 @@ in a specific obstack, which is in the v char * copystring (char *string) { - char *s = (char *) obstack_alloc (&string_obstack, - strlen (string) + 1); - memcpy (s, string, strlen (string)); + size_t len = strlen (string) + 1; + char *s = (char *) obstack_alloc (&string_obstack, len); + memcpy (s, string, len); return s; } diff -durpN glibc-2.0.1/manual/libc.info-32 glibc-2.0.2/manual/libc.info-32 --- glibc-2.0.1/manual/libc.info-32 Sat Jan 25 08:16:44 1997 +++ glibc-2.0.2/manual/libc.info-32 Tue Mar 18 13:35:58 1997 @@ -131,6 +131,7 @@ Function and Macro Index * adjtime: High-Resolution Calendar. * alarm: Setting an Alarm. * alloca: Variable Size Automatic. +* alphasort: Scanning Directory Content. * asctime: Formatting Date and Time. * asin: Inverse Trig Functions. * asinh: Hyperbolic Functions. @@ -470,6 +471,7 @@ Function and Macro Index * S_ISREG: Testing File Type. * S_ISSOCK: Testing File Type. * scalb: Normalization Functions. +* scandir: Scanning Directory Content. * scanf: Formatted Input Functions. * seekdir: Random Access Directory. * select: Waiting for I/O. diff -durpN glibc-2.0.1/manual/libc.info-5 glibc-2.0.2/manual/libc.info-5 --- glibc-2.0.1/manual/libc.info-5 Sat Jan 25 08:16:44 1997 +++ glibc-2.0.2/manual/libc.info-5 Tue Mar 18 13:35:58 1997 @@ -134,7 +134,7 @@ ordering may differ.) => -15 /* The character `'h'' comes before `'w''. */ strcmp ("hello", "hello, world") => -44 /* Comparing a null character against a comma. */ - strncmp ("hello", "hello, world"", 5) + strncmp ("hello", "hello, world", 5) => 0 /* The initial 5 characters are the same. */ strncmp ("hello, world", "hello, stupid world!!!", 5) => 0 /* The initial 5 characters are the same. */ diff -durpN glibc-2.0.1/manual/libc.pg glibc-2.0.2/manual/libc.pg --- glibc-2.0.1/manual/libc.pg Mon Nov 4 17:59:16 1996 +++ glibc-2.0.2/manual/libc.pg Tue Mar 18 22:31:15 1997 @@ -1,233 +1,233 @@ -\entry {gcc}{2}{\code {gcc}} -\entry {dirent.h}{7}{\code {dirent.h}} -\entry {fcntl.h}{8}{\code {fcntl.h}} -\entry {grp.h}{8}{\code {grp.h}} -\entry {limits.h}{8}{\code {limits.h}} -\entry {pwd.h}{8}{\code {pwd.h}} -\entry {signal.h}{8}{\code {signal.h}} -\entry {sys/stat.h}{8}{\code {sys/stat.h}} -\entry {sys/times.h}{8}{\code {sys/times.h}} -\entry {termios.h}{8}{\code {termios.h}} -\entry {-lbsd-compat}{9}{\code {-lbsd-compat}} -\entry {bsd-compat}{9}{\code {bsd-compat}} -\entry {errno.h}{15}{\code {errno.h}} -\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}{34}{\code {stdlib.h}} -\entry {stdlib.h}{35}{\code {stdlib.h}} -\entry {stdlib.h}{36}{\code {stdlib.h}} -\entry {stdlib.h}{37}{\code {stdlib.h}} -\entry {malloc.h}{37}{\code {malloc.h}} -\entry {malloc.h}{39}{\code {malloc.h}} -\entry {malloc.h}{40}{\code {malloc.h}} -\entry {obstack.h}{42}{\code {obstack.h}} -\entry {stdlib.h}{53}{\code {stdlib.h}} -\entry {malloc.h}{56}{\code {malloc.h}} -\entry {malloc.c}{57}{\code {malloc.c}} -\entry {ctype.h}{59}{\code {ctype.h}} -\entry {ctype.h}{59}{\code {ctype.h}} -\entry {ctype.h}{61}{\code {ctype.h}} -\entry {string.h}{65}{\code {string.h}} -\entry {string.h}{65}{\code {string.h}} -\entry {string.h}{71}{\code {string.h}} -\entry {string.h}{73}{\code {string.h}} -\entry {string.h}{76}{\code {string.h}} -\entry {string.h}{78}{\code {string.h}} -\entry {stdio.h}{89}{\code {stdio.h}} -\entry {stdio.h}{89}{\code {stdio.h}} -\entry {stdio.h}{90}{\code {stdio.h}} -\entry {stdio.h}{93}{\code {stdio.h}} -\entry {stdio.h}{94}{\code {stdio.h}} -\entry {stdio.h}{99}{\code {stdio.h}} -\entry {stdio.h}{109}{\code {stdio.h}} -\entry {stdio.h}{112}{\code {stdio.h}} -\entry {printf.h}{117}{\code {printf.h}} -\entry {printf.h}{117}{\code {printf.h}} -\entry {stdio.h}{129}{\code {stdio.h}} -\entry {stdio.h}{130}{\code {stdio.h}} -\entry {stdio.h}{132}{\code {stdio.h}} -\entry {stdio.h}{134}{\code {stdio.h}} -\entry {stdio.h}{136}{\code {stdio.h}} -\entry {stdio.h}{137}{\code {stdio.h}} -\entry {stdio.h}{139}{\code {stdio.h}} -\entry {stdio.h}{142}{\code {stdio.h}} -\entry {unistd.h}{145}{\code {unistd.h}} -\entry {fcntl.h}{145}{\code {fcntl.h}} -\entry {unistd.h}{147}{\code {unistd.h}} -\entry {stdio.h}{153}{\code {stdio.h}} -\entry {unistd.h}{153}{\code {unistd.h}} -\entry {sys/types.h}{156}{\code {sys/types.h}} -\entry {fcntl.h}{160}{\code {fcntl.h}} -\entry {unistd.h}{161}{\code {unistd.h}} -\entry {fcntl.h}{161}{\code {fcntl.h}} -\entry {fcntl.h}{162}{\code {fcntl.h}} -\entry {fcntl.h}{164}{\code {fcntl.h}} -\entry {fcntl.h}{170}{\code {fcntl.h}} -\entry {fcntl.h}{174}{\code {fcntl.h}} -\entry {cd}{175}{\code {cd}} -\entry {unistd.h}{175}{\code {unistd.h}} -\entry {dirent.h}{177}{\code {dirent.h}} -\entry {dirent.h}{178}{\code {dirent.h}} -\entry {dirent.h}{179}{\code {dirent.h}} -\entry {dirent.h}{181}{\code {dirent.h}} -\entry {unistd.h}{182}{\code {unistd.h}} -\entry {unistd.h}{183}{\code {unistd.h}} -\entry {unistd.h}{184}{\code {unistd.h}} -\entry {unistd.h}{185}{\code {unistd.h}} -\entry {stdio.h}{185}{\code {stdio.h}} -\entry {mkdir}{187}{\code {mkdir}} -\entry {sys/stat.h}{187}{\code {sys/stat.h}} -\entry {ls}{188}{\code {ls}} -\entry {sys/stat.h}{188}{\code {sys/stat.h}} -\entry {sys/stat.h}{191}{\code {sys/stat.h}} -\entry {chown}{193}{\code {chown}} -\entry {chgrp}{193}{\code {chgrp}} -\entry {unistd.h}{193}{\code {unistd.h}} -\entry {sys/stat.h}{194}{\code {sys/stat.h}} -\entry {umask}{197}{\code {umask}} -\entry {sys/stat.h}{197}{\code {sys/stat.h}} -\entry {unistd.h}{199}{\code {unistd.h}} -\entry {unistd.h}{200}{\code {unistd.h}} -\entry {time.h}{200}{\code {time.h}} -\entry {utime.h}{201}{\code {utime.h}} -\entry {sys/time.h}{202}{\code {sys/time.h}} -\entry {sys/stat.h}{202}{\code {sys/stat.h}} -\entry {stdio.h}{203}{\code {stdio.h}} -\entry {unistd.h}{207}{\code {unistd.h}} -\entry {sys/stat.h}{211}{\code {sys/stat.h}} -\entry {sys/socket.h}{214}{\code {sys/socket.h}} -\entry {sys/socket.h}{216}{\code {sys/socket.h}} -\entry {sys/socket.h}{217}{\code {sys/socket.h}} -\entry {sys/socket.h}{218}{\code {sys/socket.h}} -\entry {sys/socket.h}{219}{\code {sys/socket.h}} -\entry {sys/un.h}{219}{\code {sys/un.h}} -\entry {sys/socket.h}{221}{\code {sys/socket.h}} -\entry {netinet/in.h}{221}{\code {netinet/in.h}} -\entry {netinet/in.h}{223}{\code {netinet/in.h}} -\entry {arpa/inet.h}{224}{\code {arpa/inet.h}} -\entry {/etc/hosts}{225}{\code {/etc/hosts}} -\entry {netdb.h}{225}{\code {netdb.h}} -\entry {netinet/in.h}{228}{\code {netinet/in.h}} -\entry {/etc/services}{228}{\code {/etc/services}} -\entry {netdb.h}{228}{\code {netdb.h}} -\entry {netinet/in.h}{230}{\code {netinet/in.h}} -\entry {/etc/protocols}{231}{\code {/etc/protocols}} -\entry {netdb.h}{231}{\code {netdb.h}} -\entry {sys/socket.h}{234}{\code {sys/socket.h}} -\entry {sys/socket.h}{235}{\code {sys/socket.h}} -\entry {sys/socket.h}{235}{\code {sys/socket.h}} -\entry {sys/socket.h}{241}{\code {sys/socket.h}} -\entry {sys/socket.h}{242}{\code {sys/socket.h}} -\entry {sys/socket.h}{242}{\code {sys/socket.h}} -\entry {sys/socket.h}{250}{\code {sys/socket.h}} -\entry {sys/socket.h}{255}{\code {sys/socket.h}} -\entry {sys/socket.h}{256}{\code {sys/socket.h}} -\entry {/etc/networks}{258}{\code {/etc/networks}} -\entry {netdb.h}{258}{\code {netdb.h}} -\entry {unistd.h}{261}{\code {unistd.h}} -\entry {termios.h}{263}{\code {termios.h}} -\entry {math.h}{287}{\code {math.h}} -\entry {stdlib.h}{292}{\code {stdlib.h}} -\entry {stdlib.h}{293}{\code {stdlib.h}} -\entry {math.h}{295}{\code {math.h}} -\entry {math.h}{296}{\code {math.h}} -\entry {stdlib.h}{296}{\code {stdlib.h}} -\entry {math.h}{297}{\code {math.h}} -\entry {math.h}{298}{\code {math.h}} -\entry {stdlib.h}{299}{\code {stdlib.h}} -\entry {stdlib.h}{300}{\code {stdlib.h}} -\entry {stdlib.h}{304}{\code {stdlib.h}} -\entry {stdlib.h}{307}{\code {stdlib.h}} -\entry {stdlib.h}{308}{\code {stdlib.h}} -\entry {fnmatch.h}{313}{\code {fnmatch.h}} -\entry {time.h}{329}{\code {time.h}} -\entry {sys/times.h}{330}{\code {sys/times.h}} -\entry {time.h}{332}{\code {time.h}} -\entry {sys/time.h}{332}{\code {sys/time.h}} -\entry {time.h}{337}{\code {time.h}} -\entry {time.h}{342}{\code {time.h}} -\entry {/etc/localtime}{344}{\code {/etc/localtime}} -\entry {localtime}{344}{\code {localtime}} -\entry {/share/lib/zoneinfo}{344}{\code {/share/lib/zoneinfo}} -\entry {zoneinfo}{344}{\code {zoneinfo}} -\entry {unistd.h}{346}{\code {unistd.h}} -\entry {sys/time.h}{346}{\code {sys/time.h}} -\entry {sys/resource.h}{349}{\code {sys/resource.h}} -\entry {sys/resource.h}{351}{\code {sys/resource.h}} -\entry {sys/resource.h}{354}{\code {sys/resource.h}} -\entry {limits.h}{360}{\code {limits.h}} -\entry {stdlib.h}{360}{\code {stdlib.h}} -\entry {stddef.h}{361}{\code {stddef.h}} -\entry {stdlib.h}{362}{\code {stdlib.h}} -\entry {stdlib.h}{363}{\code {stdlib.h}} -\entry {stdlib.h}{364}{\code {stdlib.h}} -\entry {locale.h}{371}{\code {locale.h}} -\entry {locale.h}{373}{\code {locale.h}} -\entry {setjmp.h}{380}{\code {setjmp.h}} -\entry {setjmp.h}{382}{\code {setjmp.h}} -\entry {signal.h}{385}{\code {signal.h}} -\entry {kill}{389}{\code {kill}} -\entry {string.h}{395}{\code {string.h}} -\entry {stdio.h}{396}{\code {stdio.h}} -\entry {signal.h}{396}{\code {signal.h}} -\entry {signal.h}{398}{\code {signal.h}} -\entry {signal.h}{402}{\code {signal.h}} -\entry {signal.h}{415}{\code {signal.h}} -\entry {signal.h}{417}{\code {signal.h}} -\entry {signal.h}{421}{\code {signal.h}} -\entry {signal.h}{422}{\code {signal.h}} -\entry {signal.h}{425}{\code {signal.h}} -\entry {signal.h}{433}{\code {signal.h}} -\entry {unistd.h}{439}{\code {unistd.h}} -\entry {stdlib.h}{448}{\code {stdlib.h}} -\entry {stdlib.h}{452}{\code {stdlib.h}} -\entry {stdlib.h}{454}{\code {stdlib.h}} -\entry {unistd.h}{454}{\code {unistd.h}} -\entry {sh}{457}{\code {sh}} -\entry {stdlib.h}{457}{\code {stdlib.h}} -\entry {sys/types.h}{458}{\code {sys/types.h}} -\entry {unistd.h}{458}{\code {unistd.h}} -\entry {unistd.h}{459}{\code {unistd.h}} -\entry {unistd.h}{460}{\code {unistd.h}} -\entry {sys/wait.h}{463}{\code {sys/wait.h}} -\entry {sys/wait.h}{466}{\code {sys/wait.h}} -\entry {sys/wait.h}{467}{\code {sys/wait.h}} -\entry {stdio.h}{488}{\code {stdio.h}} -\entry {unistd.h}{489}{\code {unistd.h}} -\entry {sys/types.h}{489}{\code {sys/types.h}} -\entry {-lbsd-compat}{489}{\code {-lbsd-compat}} -\entry {bsd-compat}{489}{\code {bsd-compat}} -\entry {unistd.h}{490}{\code {unistd.h}} -\entry {sys/types.h}{490}{\code {sys/types.h}} -\entry {unistd.h}{505}{\code {unistd.h}} -\entry {sys/types.h}{505}{\code {sys/types.h}} -\entry {unistd.h}{506}{\code {unistd.h}} -\entry {sys/types.h}{506}{\code {sys/types.h}} -\entry {unistd.h}{507}{\code {unistd.h}} -\entry {sys/types.h}{507}{\code {sys/types.h}} -\entry {grp.h}{508}{\code {grp.h}} -\entry {stdio.h}{512}{\code {stdio.h}} -\entry {unistd.h}{512}{\code {unistd.h}} -\entry {/etc/passwd}{513}{\code {/etc/passwd}} -\entry {pwd.h}{513}{\code {pwd.h}} -\entry {/etc/group}{517}{\code {/etc/group}} -\entry {grp.h}{517}{\code {grp.h}} -\entry {hostname}{525}{\code {hostname}} -\entry {hostid}{525}{\code {hostid}} -\entry {unistd.h}{525}{\code {unistd.h}} -\entry {sys/param.h}{525}{\code {sys/param.h}} -\entry {sys/utsname.h}{526}{\code {sys/utsname.h}} -\entry {limits.h}{529}{\code {limits.h}} -\entry {unistd.h}{531}{\code {unistd.h}} -\entry {limits.h}{537}{\code {limits.h}} -\entry {unistd.h}{538}{\code {unistd.h}} -\entry {unistd.h}{539}{\code {unistd.h}} -\entry {assert.h}{545}{\code {assert.h}} -\entry {stdarg.h}{548}{\code {stdarg.h}} -\entry {stdarg.h}{551}{\code {stdarg.h}} -\entry {varargs.h}{552}{\code {varargs.h}} -\entry {stddef.h}{553}{\code {stddef.h}} -\entry {limits.h}{555}{\code {limits.h}} -\entry {float.h}{558}{\code {float.h}} +\entry{gcc}{2}{\code {gcc}} +\entry{dirent.h}{7}{\code {dirent.h}} +\entry{fcntl.h}{8}{\code {fcntl.h}} +\entry{grp.h}{8}{\code {grp.h}} +\entry{limits.h}{8}{\code {limits.h}} +\entry{pwd.h}{8}{\code {pwd.h}} +\entry{signal.h}{8}{\code {signal.h}} +\entry{sys/stat.h}{8}{\code {sys/stat.h}} +\entry{sys/times.h}{8}{\code {sys/times.h}} +\entry{termios.h}{8}{\code {termios.h}} +\entry{-lbsd-compat}{9}{\code {-lbsd-compat}} +\entry{bsd-compat}{9}{\code {bsd-compat}} +\entry{errno.h}{15}{\code {errno.h}} +\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}{34}{\code {stdlib.h}} +\entry{stdlib.h}{35}{\code {stdlib.h}} +\entry{stdlib.h}{36}{\code {stdlib.h}} +\entry{stdlib.h}{37}{\code {stdlib.h}} +\entry{malloc.h}{38}{\code {malloc.h}} +\entry{malloc.h}{39}{\code {malloc.h}} +\entry{malloc.h}{40}{\code {malloc.h}} +\entry{obstack.h}{42}{\code {obstack.h}} +\entry{stdlib.h}{54}{\code {stdlib.h}} +\entry{malloc.h}{57}{\code {malloc.h}} +\entry{malloc.c}{58}{\code {malloc.c}} +\entry{ctype.h}{59}{\code {ctype.h}} +\entry{ctype.h}{59}{\code {ctype.h}} +\entry{ctype.h}{61}{\code {ctype.h}} +\entry{string.h}{65}{\code {string.h}} +\entry{string.h}{65}{\code {string.h}} +\entry{string.h}{71}{\code {string.h}} +\entry{string.h}{73}{\code {string.h}} +\entry{string.h}{76}{\code {string.h}} +\entry{string.h}{78}{\code {string.h}} +\entry{stdio.h}{91}{\code {stdio.h}} +\entry{stdio.h}{91}{\code {stdio.h}} +\entry{stdio.h}{92}{\code {stdio.h}} +\entry{stdio.h}{95}{\code {stdio.h}} +\entry{stdio.h}{96}{\code {stdio.h}} +\entry{stdio.h}{102}{\code {stdio.h}} +\entry{stdio.h}{111}{\code {stdio.h}} +\entry{stdio.h}{114}{\code {stdio.h}} +\entry{printf.h}{119}{\code {printf.h}} +\entry{printf.h}{120}{\code {printf.h}} +\entry{stdio.h}{132}{\code {stdio.h}} +\entry{stdio.h}{133}{\code {stdio.h}} +\entry{stdio.h}{135}{\code {stdio.h}} +\entry{stdio.h}{137}{\code {stdio.h}} +\entry{stdio.h}{139}{\code {stdio.h}} +\entry{stdio.h}{139}{\code {stdio.h}} +\entry{stdio.h}{142}{\code {stdio.h}} +\entry{stdio.h}{145}{\code {stdio.h}} +\entry{unistd.h}{149}{\code {unistd.h}} +\entry{fcntl.h}{149}{\code {fcntl.h}} +\entry{unistd.h}{151}{\code {unistd.h}} +\entry{stdio.h}{157}{\code {stdio.h}} +\entry{unistd.h}{157}{\code {unistd.h}} +\entry{sys/types.h}{160}{\code {sys/types.h}} +\entry{fcntl.h}{163}{\code {fcntl.h}} +\entry{unistd.h}{164}{\code {unistd.h}} +\entry{fcntl.h}{164}{\code {fcntl.h}} +\entry{fcntl.h}{166}{\code {fcntl.h}} +\entry{fcntl.h}{168}{\code {fcntl.h}} +\entry{fcntl.h}{174}{\code {fcntl.h}} +\entry{fcntl.h}{177}{\code {fcntl.h}} +\entry{cd}{179}{\code {cd}} +\entry{unistd.h}{179}{\code {unistd.h}} +\entry{dirent.h}{181}{\code {dirent.h}} +\entry{dirent.h}{182}{\code {dirent.h}} +\entry{dirent.h}{183}{\code {dirent.h}} +\entry{dirent.h}{185}{\code {dirent.h}} +\entry{unistd.h}{187}{\code {unistd.h}} +\entry{unistd.h}{189}{\code {unistd.h}} +\entry{unistd.h}{190}{\code {unistd.h}} +\entry{unistd.h}{191}{\code {unistd.h}} +\entry{stdio.h}{191}{\code {stdio.h}} +\entry{mkdir}{192}{\code {mkdir}} +\entry{sys/stat.h}{193}{\code {sys/stat.h}} +\entry{ls}{193}{\code {ls}} +\entry{sys/stat.h}{194}{\code {sys/stat.h}} +\entry{sys/stat.h}{197}{\code {sys/stat.h}} +\entry{chown}{199}{\code {chown}} +\entry{chgrp}{199}{\code {chgrp}} +\entry{unistd.h}{199}{\code {unistd.h}} +\entry{sys/stat.h}{200}{\code {sys/stat.h}} +\entry{umask}{203}{\code {umask}} +\entry{sys/stat.h}{203}{\code {sys/stat.h}} +\entry{unistd.h}{205}{\code {unistd.h}} +\entry{unistd.h}{205}{\code {unistd.h}} +\entry{time.h}{206}{\code {time.h}} +\entry{utime.h}{206}{\code {utime.h}} +\entry{sys/time.h}{207}{\code {sys/time.h}} +\entry{sys/stat.h}{208}{\code {sys/stat.h}} +\entry{stdio.h}{209}{\code {stdio.h}} +\entry{unistd.h}{213}{\code {unistd.h}} +\entry{sys/stat.h}{217}{\code {sys/stat.h}} +\entry{sys/socket.h}{220}{\code {sys/socket.h}} +\entry{sys/socket.h}{222}{\code {sys/socket.h}} +\entry{sys/socket.h}{223}{\code {sys/socket.h}} +\entry{sys/socket.h}{224}{\code {sys/socket.h}} +\entry{sys/socket.h}{225}{\code {sys/socket.h}} +\entry{sys/un.h}{225}{\code {sys/un.h}} +\entry{sys/socket.h}{227}{\code {sys/socket.h}} +\entry{netinet/in.h}{227}{\code {netinet/in.h}} +\entry{netinet/in.h}{229}{\code {netinet/in.h}} +\entry{arpa/inet.h}{230}{\code {arpa/inet.h}} +\entry{/etc/hosts}{231}{\code {/etc/hosts}} +\entry{netdb.h}{231}{\code {netdb.h}} +\entry{netinet/in.h}{234}{\code {netinet/in.h}} +\entry{/etc/services}{234}{\code {/etc/services}} +\entry{netdb.h}{234}{\code {netdb.h}} +\entry{netinet/in.h}{236}{\code {netinet/in.h}} +\entry{/etc/protocols}{237}{\code {/etc/protocols}} +\entry{netdb.h}{237}{\code {netdb.h}} +\entry{sys/socket.h}{240}{\code {sys/socket.h}} +\entry{sys/socket.h}{241}{\code {sys/socket.h}} +\entry{sys/socket.h}{241}{\code {sys/socket.h}} +\entry{sys/socket.h}{247}{\code {sys/socket.h}} +\entry{sys/socket.h}{248}{\code {sys/socket.h}} +\entry{sys/socket.h}{248}{\code {sys/socket.h}} +\entry{sys/socket.h}{256}{\code {sys/socket.h}} +\entry{sys/socket.h}{262}{\code {sys/socket.h}} +\entry{sys/socket.h}{263}{\code {sys/socket.h}} +\entry{/etc/networks}{265}{\code {/etc/networks}} +\entry{netdb.h}{265}{\code {netdb.h}} +\entry{unistd.h}{267}{\code {unistd.h}} +\entry{termios.h}{269}{\code {termios.h}} +\entry{math.h}{293}{\code {math.h}} +\entry{stdlib.h}{298}{\code {stdlib.h}} +\entry{stdlib.h}{299}{\code {stdlib.h}} +\entry{math.h}{301}{\code {math.h}} +\entry{math.h}{302}{\code {math.h}} +\entry{stdlib.h}{302}{\code {stdlib.h}} +\entry{math.h}{303}{\code {math.h}} +\entry{math.h}{304}{\code {math.h}} +\entry{stdlib.h}{305}{\code {stdlib.h}} +\entry{stdlib.h}{306}{\code {stdlib.h}} +\entry{stdlib.h}{310}{\code {stdlib.h}} +\entry{stdlib.h}{313}{\code {stdlib.h}} +\entry{stdlib.h}{314}{\code {stdlib.h}} +\entry{fnmatch.h}{319}{\code {fnmatch.h}} +\entry{time.h}{335}{\code {time.h}} +\entry{sys/times.h}{336}{\code {sys/times.h}} +\entry{time.h}{338}{\code {time.h}} +\entry{sys/time.h}{338}{\code {sys/time.h}} +\entry{time.h}{343}{\code {time.h}} +\entry{time.h}{348}{\code {time.h}} +\entry{/etc/localtime}{350}{\code {/etc/localtime}} +\entry{localtime}{350}{\code {localtime}} +\entry{/share/lib/zoneinfo}{350}{\code {/share/lib/zoneinfo}} +\entry{zoneinfo}{350}{\code {zoneinfo}} +\entry{unistd.h}{353}{\code {unistd.h}} +\entry{sys/time.h}{353}{\code {sys/time.h}} +\entry{sys/resource.h}{356}{\code {sys/resource.h}} +\entry{sys/resource.h}{358}{\code {sys/resource.h}} +\entry{sys/resource.h}{360}{\code {sys/resource.h}} +\entry{limits.h}{366}{\code {limits.h}} +\entry{stdlib.h}{366}{\code {stdlib.h}} +\entry{stddef.h}{367}{\code {stddef.h}} +\entry{stdlib.h}{368}{\code {stdlib.h}} +\entry{stdlib.h}{369}{\code {stdlib.h}} +\entry{stdlib.h}{370}{\code {stdlib.h}} +\entry{locale.h}{377}{\code {locale.h}} +\entry{locale.h}{379}{\code {locale.h}} +\entry{setjmp.h}{387}{\code {setjmp.h}} +\entry{setjmp.h}{388}{\code {setjmp.h}} +\entry{signal.h}{391}{\code {signal.h}} +\entry{kill}{395}{\code {kill}} +\entry{string.h}{401}{\code {string.h}} +\entry{stdio.h}{402}{\code {stdio.h}} +\entry{signal.h}{402}{\code {signal.h}} +\entry{signal.h}{404}{\code {signal.h}} +\entry{signal.h}{408}{\code {signal.h}} +\entry{signal.h}{422}{\code {signal.h}} +\entry{signal.h}{424}{\code {signal.h}} +\entry{signal.h}{428}{\code {signal.h}} +\entry{signal.h}{430}{\code {signal.h}} +\entry{signal.h}{433}{\code {signal.h}} +\entry{signal.h}{441}{\code {signal.h}} +\entry{unistd.h}{445}{\code {unistd.h}} +\entry{stdlib.h}{455}{\code {stdlib.h}} +\entry{stdlib.h}{459}{\code {stdlib.h}} +\entry{stdlib.h}{461}{\code {stdlib.h}} +\entry{unistd.h}{461}{\code {unistd.h}} +\entry{sh}{463}{\code {sh}} +\entry{stdlib.h}{463}{\code {stdlib.h}} +\entry{sys/types.h}{464}{\code {sys/types.h}} +\entry{unistd.h}{464}{\code {unistd.h}} +\entry{unistd.h}{465}{\code {unistd.h}} +\entry{unistd.h}{466}{\code {unistd.h}} +\entry{sys/wait.h}{469}{\code {sys/wait.h}} +\entry{sys/wait.h}{472}{\code {sys/wait.h}} +\entry{sys/wait.h}{472}{\code {sys/wait.h}} +\entry{stdio.h}{493}{\code {stdio.h}} +\entry{unistd.h}{494}{\code {unistd.h}} +\entry{sys/types.h}{494}{\code {sys/types.h}} +\entry{-lbsd-compat}{494}{\code {-lbsd-compat}} +\entry{bsd-compat}{494}{\code {bsd-compat}} +\entry{unistd.h}{495}{\code {unistd.h}} +\entry{sys/types.h}{495}{\code {sys/types.h}} +\entry{unistd.h}{509}{\code {unistd.h}} +\entry{sys/types.h}{509}{\code {sys/types.h}} +\entry{unistd.h}{510}{\code {unistd.h}} +\entry{sys/types.h}{510}{\code {sys/types.h}} +\entry{unistd.h}{511}{\code {unistd.h}} +\entry{sys/types.h}{511}{\code {sys/types.h}} +\entry{grp.h}{512}{\code {grp.h}} +\entry{stdio.h}{516}{\code {stdio.h}} +\entry{unistd.h}{516}{\code {unistd.h}} +\entry{/etc/passwd}{517}{\code {/etc/passwd}} +\entry{pwd.h}{517}{\code {pwd.h}} +\entry{/etc/group}{521}{\code {/etc/group}} +\entry{grp.h}{521}{\code {grp.h}} +\entry{hostname}{529}{\code {hostname}} +\entry{hostid}{529}{\code {hostid}} +\entry{unistd.h}{529}{\code {unistd.h}} +\entry{sys/param.h}{529}{\code {sys/param.h}} +\entry{sys/utsname.h}{530}{\code {sys/utsname.h}} +\entry{limits.h}{533}{\code {limits.h}} +\entry{unistd.h}{534}{\code {unistd.h}} +\entry{limits.h}{541}{\code {limits.h}} +\entry{unistd.h}{542}{\code {unistd.h}} +\entry{unistd.h}{543}{\code {unistd.h}} +\entry{assert.h}{549}{\code {assert.h}} +\entry{stdarg.h}{552}{\code {stdarg.h}} +\entry{stdarg.h}{555}{\code {stdarg.h}} +\entry{varargs.h}{556}{\code {varargs.h}} +\entry{stddef.h}{558}{\code {stddef.h}} +\entry{limits.h}{559}{\code {limits.h}} +\entry{float.h}{562}{\code {float.h}} diff -durpN glibc-2.0.1/manual/libc.pgs glibc-2.0.2/manual/libc.pgs --- glibc-2.0.1/manual/libc.pgs Mon Nov 4 17:58:25 1996 +++ glibc-2.0.2/manual/libc.pgs Tue Mar 18 22:30:15 1997 @@ -1,85 +1,85 @@ \initial {-} -\entry {\code {-lbsd-compat}}{9, 489} +\entry {\code {-lbsd-compat}}{9, 494} \initial {/} -\entry {\code {/etc/group}}{517} -\entry {\code {/etc/hosts}}{225} -\entry {\code {/etc/localtime}}{344} -\entry {\code {/etc/networks}}{258} -\entry {\code {/etc/passwd}}{513} -\entry {\code {/etc/protocols}}{231} -\entry {\code {/etc/services}}{228} -\entry {\code {/share/lib/zoneinfo}}{344} +\entry {\code {/etc/group}}{521} +\entry {\code {/etc/hosts}}{231} +\entry {\code {/etc/localtime}}{350} +\entry {\code {/etc/networks}}{265} +\entry {\code {/etc/passwd}}{517} +\entry {\code {/etc/protocols}}{237} +\entry {\code {/etc/services}}{234} +\entry {\code {/share/lib/zoneinfo}}{350} \initial {A} -\entry {\code {arpa/inet.h}}{224} -\entry {\code {assert.h}}{545} +\entry {\code {arpa/inet.h}}{230} +\entry {\code {assert.h}}{549} \initial {B} -\entry {\code {bsd-compat}}{9, 489} +\entry {\code {bsd-compat}}{9, 494} \initial {C} -\entry {\code {cd}}{175} -\entry {\code {chgrp}}{193} -\entry {\code {chown}}{193} +\entry {\code {cd}}{179} +\entry {\code {chgrp}}{199} +\entry {\code {chown}}{199} \entry {\code {ctype.h}}{59, 61} \initial {D} -\entry {\code {dirent.h}}{7, 177, 178, 179, 181} +\entry {\code {dirent.h}}{7, 181, 182, 183, 185} \initial {E} \entry {\code {errno.h}}{15, 16} \initial {F} -\entry {\code {fcntl.h}}{8, 145, 160, 161, 162, 164, 170, 174} -\entry {\code {float.h}}{558} -\entry {\code {fnmatch.h}}{313} +\entry {\code {fcntl.h}}{8, 149, 163, 164, 166, 168, 174, 177} +\entry {\code {float.h}}{562} +\entry {\code {fnmatch.h}}{319} \initial {G} \entry {\code {gcc}}{2} -\entry {\code {grp.h}}{8, 508, 517} +\entry {\code {grp.h}}{8, 512, 521} \initial {H} -\entry {\code {hostid}}{525} -\entry {\code {hostname}}{525} +\entry {\code {hostid}}{529} +\entry {\code {hostname}}{529} \initial {K} -\entry {\code {kill}}{389} +\entry {\code {kill}}{395} \initial {L} -\entry {\code {limits.h}}{8, 360, 529, 537, 555} -\entry {\code {locale.h}}{371, 373} -\entry {\code {localtime}}{344} -\entry {\code {ls}}{188} +\entry {\code {limits.h}}{8, 366, 533, 541, 559} +\entry {\code {locale.h}}{377, 379} +\entry {\code {localtime}}{350} +\entry {\code {ls}}{193} \initial {M} -\entry {\code {malloc.c}}{57} -\entry {\code {malloc.h}}{37, 39, 40, 56} -\entry {\code {math.h}}{287, 295, 296, 297, 298} -\entry {\code {mkdir}}{187} +\entry {\code {malloc.c}}{58} +\entry {\code {malloc.h}}{38, 39, 40, 57} +\entry {\code {math.h}}{293, 301, 302, 303, 304} +\entry {\code {mkdir}}{192} \initial {N} -\entry {\code {netdb.h}}{225, 228, 231, 258} -\entry {\code {netinet/in.h}}{221, 223, 228, 230} +\entry {\code {netdb.h}}{231, 234, 237, 265} +\entry {\code {netinet/in.h}}{227, 229, 234, 236} \initial {O} \entry {\code {obstack.h}}{42} \initial {P} -\entry {\code {printf.h}}{117} -\entry {\code {pwd.h}}{8, 513} +\entry {\code {printf.h}}{119, 120} +\entry {\code {pwd.h}}{8, 517} \initial {S} -\entry {\code {setjmp.h}}{380, 382} -\entry {\code {sh}}{457} -\entry {\code {signal.h}}{8, 385, 396, 398, 402, 415, 417, 421, 422, 425, 433} -\entry {\code {stdarg.h}}{548, 551} -\entry {\code {stddef.h}}{361, 553} -\entry {\code {stdio.h}}{89, 90, 93, 94, 99, 109, 112, 129, 130, 132, 134, 136, 137, 139, 142, 153, 185, 203, 396, 488, 512} -\entry {\code {stdlib.h}}{32, 34, 35, 36, 37, 53, 292, 293, 296, 299, 300, 304, 307, 308, 360, 362, 363, 364, 448, 452, 454, 457} -\entry {\code {string.h}}{65, 71, 73, 76, 78, 395} -\entry {\code {sys/param.h}}{525} -\entry {\code {sys/resource.h}}{349, 351, 354} -\entry {\code {sys/socket.h}}{214, 216, 217, 218, 219, 221, 234, 235, 241, 242, 250, 255, 256} -\entry {\code {sys/stat.h}}{8, 187, 188, 191, 194, 197, 202, 211} -\entry {\code {sys/time.h}}{202, 332, 346} -\entry {\code {sys/times.h}}{8, 330} -\entry {\code {sys/types.h}}{156, 458, 489, 490, 505, 506, 507} -\entry {\code {sys/un.h}}{219} -\entry {\code {sys/utsname.h}}{526} -\entry {\code {sys/wait.h}}{463, 466, 467} +\entry {\code {setjmp.h}}{387, 388} +\entry {\code {sh}}{463} +\entry {\code {signal.h}}{8, 391, 402, 404, 408, 422, 424, 428, 430, 433, 441} +\entry {\code {stdarg.h}}{552, 555} +\entry {\code {stddef.h}}{367, 558} +\entry {\code {stdio.h}}{91, 92, 95, 96, 102, 111, 114, 132, 133, 135, 137, 139, 142, 145, 157, 191, 209, 402, 493, 516} +\entry {\code {stdlib.h}}{32, 34, 35, 36, 37, 54, 298, 299, 302, 305, 306, 310, 313, 314, 366, 368, 369, 370, 455, 459, 461, 463} +\entry {\code {string.h}}{65, 71, 73, 76, 78, 401} +\entry {\code {sys/param.h}}{529} +\entry {\code {sys/resource.h}}{356, 358, 360} +\entry {\code {sys/socket.h}}{220, 222, 223, 224, 225, 227, 240, 241, 247, 248, 256, 262, 263} +\entry {\code {sys/stat.h}}{8, 193, 194, 197, 200, 203, 208, 217} +\entry {\code {sys/time.h}}{207, 338, 353} +\entry {\code {sys/times.h}}{8, 336} +\entry {\code {sys/types.h}}{160, 464, 494, 495, 509, 510, 511} +\entry {\code {sys/un.h}}{225} +\entry {\code {sys/utsname.h}}{530} +\entry {\code {sys/wait.h}}{469, 472} \initial {T} -\entry {\code {termios.h}}{8, 263} -\entry {\code {time.h}}{200, 329, 332, 337, 342} +\entry {\code {termios.h}}{8, 269} +\entry {\code {time.h}}{206, 335, 338, 343, 348} \initial {U} -\entry {\code {umask}}{197} -\entry {\code {unistd.h}}{145, 147, 153, 161, 175, 182, 183, 184, 185, 193, 199, 200, 207, 261, 346, 439, 454, 458, 459, 460, 489, 490, 505, 506, 507, 512, 525, 531, 538, 539} -\entry {\code {utime.h}}{201} +\entry {\code {umask}}{203} +\entry {\code {unistd.h}}{149, 151, 157, 164, 179, 187, 189, 190, 191, 199, 205, 213, 267, 353, 445, 461, 464, 465, 466, 494, 495, 509, 510, 511, 516, 529, 534, 542, 543} +\entry {\code {utime.h}}{206} \initial {V} -\entry {\code {varargs.h}}{552} +\entry {\code {varargs.h}}{556} \initial {Z} -\entry {\code {zoneinfo}}{344} +\entry {\code {zoneinfo}}{350} diff -durpN glibc-2.0.1/manual/libc.tp glibc-2.0.2/manual/libc.tp --- glibc-2.0.1/manual/libc.tp Mon Nov 4 17:59:16 1996 +++ glibc-2.0.2/manual/libc.tp Tue Mar 18 22:31:15 1997 @@ -1,77 +1,77 @@ -\entry {enum mcheck{\_}status}{38}{\code {enum mcheck{\_}status}} -\entry {struct mstats}{40}{\code {struct mstats}} -\entry {struct obstack}{42}{\code {struct obstack}} -\entry {FILE}{89}{\code {FILE}} -\entry {struct printf{\_}info}{118}{\code {struct printf{\_}info}} -\entry {printf{\_}function}{119}{\code {printf{\_}function}} -\entry {printf{\_}arginfo{\_}function}{120}{\code {printf{\_}arginfo{\_}function}} -\entry {fpos{\_}t}{134}{\code {fpos{\_}t}} -\entry {cookie{\_}io{\_}functions{\_}t}{142}{\code {cookie{\_}io{\_}functions{\_}t}} -\entry {cookie{\_}read{\_}function}{144}{\code {cookie{\_}read{\_}function}} -\entry {cookie{\_}write{\_}function}{144}{\code {cookie{\_}write{\_}function}} -\entry {cookie{\_}seek{\_}function}{144}{\code {cookie{\_}seek{\_}function}} -\entry {cookie{\_}close{\_}function}{144}{\code {cookie{\_}close{\_}function}} -\entry {ssize{\_}t}{147}{\code {ssize{\_}t}} -\entry {off{\_}t}{152}{\code {off{\_}t}} -\entry {fd{\_}set}{157}{\code {fd{\_}set}} -\entry {struct flock}{170}{\code {struct flock}} -\entry {struct dirent}{177}{\code {struct dirent}} -\entry {DIR}{178}{\code {DIR}} -\entry {struct stat}{188}{\code {struct stat}} -\entry {mode{\_}t}{190}{\code {mode{\_}t}} -\entry {ino{\_}t}{190}{\code {ino{\_}t}} -\entry {dev{\_}t}{190}{\code {dev{\_}t}} -\entry {nlink{\_}t}{190}{\code {nlink{\_}t}} -\entry {struct utimbuf}{201}{\code {struct utimbuf}} -\entry {struct sockaddr}{216}{\code {struct sockaddr}} -\entry {struct sockaddr{\_}un}{219}{\code {struct sockaddr{\_}un}} -\entry {struct sockaddr{\_}in}{221}{\code {struct sockaddr{\_}in}} -\entry {struct in{\_}addr}{223}{\code {struct in{\_}addr}} -\entry {struct hostent}{225}{\code {struct hostent}} -\entry {struct servent}{228}{\code {struct servent}} -\entry {struct protoent}{231}{\code {struct protoent}} -\entry {struct linger}{257}{\code {struct linger}} -\entry {struct netent}{258}{\code {struct netent}} -\entry {struct termios}{263}{\code {struct termios}} -\entry {tcflag{\_}t}{264}{\code {tcflag{\_}t}} -\entry {cc{\_}t}{264}{\code {cc{\_}t}} -\entry {speed{\_}t}{276}{\code {speed{\_}t}} -\entry {div{\_}t}{299}{\code {div{\_}t}} -\entry {ldiv{\_}t}{300}{\code {ldiv{\_}t}} -\entry {comparison{\_}fn{\_}t}{307}{\code {comparison{\_}fn{\_}t}} -\entry {glob{\_}t}{314}{\code {glob{\_}t}} -\entry {regex{\_}t}{318}{\code {regex{\_}t}} -\entry {regmatch{\_}t}{321}{\code {regmatch{\_}t}} -\entry {regoff{\_}t}{321}{\code {regoff{\_}t}} -\entry {wordexp{\_}t}{325}{\code {wordexp{\_}t}} -\entry {clock{\_}t}{330}{\code {clock{\_}t}} -\entry {struct tms}{330}{\code {struct tms}} -\entry {time{\_}t}{332}{\code {time{\_}t}} -\entry {struct timeval}{332}{\code {struct timeval}} -\entry {struct timezone}{333}{\code {struct timezone}} -\entry {struct tm}{335}{\code {struct tm}} -\entry {struct itimerval}{347}{\code {struct itimerval}} -\entry {struct rusage}{350}{\code {struct rusage}} -\entry {struct rlimit}{352}{\code {struct rlimit}} -\entry {wchar{\_}t}{361}{\code {wchar{\_}t}} -\entry {struct lconv}{374}{\code {struct lconv}} -\entry {jmp{\_}buf}{381}{\code {jmp{\_}buf}} -\entry {sigjmp{\_}buf}{382}{\code {sigjmp{\_}buf}} -\entry {sighandler{\_}t}{396}{\code {sighandler{\_}t}} -\entry {struct sigaction}{398}{\code {struct sigaction}} -\entry {sig{\_}atomic{\_}t}{413}{\code {sig{\_}atomic{\_}t}} -\entry {sigset{\_}t}{421}{\code {sigset{\_}t}} -\entry {struct sigaltstack}{431}{\code {struct sigaltstack}} -\entry {struct sigstack}{432}{\code {struct sigstack}} -\entry {struct sigvec}{433}{\code {struct sigvec}} -\entry {struct option}{442}{\code {struct option}} -\entry {pid{\_}t}{458}{\code {pid{\_}t}} -\entry {union wait}{467}{\code {union wait}} -\entry {uid{\_}t}{505}{\code {uid{\_}t}} -\entry {gid{\_}t}{505}{\code {gid{\_}t}} -\entry {struct passwd}{513}{\code {struct passwd}} -\entry {struct group}{517}{\code {struct group}} -\entry {struct utsname}{526}{\code {struct utsname}} -\entry {va{\_}list}{551}{\code {va{\_}list}} -\entry {ptrdiff{\_}t}{554}{\code {ptrdiff{\_}t}} -\entry {size{\_}t}{554}{\code {size{\_}t}} +\entry{enum mcheck{\_}status}{38}{\code {enum mcheck_status}} +\entry{struct mstats}{40}{\code {struct mstats}} +\entry{struct obstack}{42}{\code {struct obstack}} +\entry{FILE}{91}{\code {FILE}} +\entry{struct printf{\_}info}{120}{\code {struct printf_info}} +\entry{printf{\_}function}{122}{\code {printf_function}} +\entry{printf{\_}arginfo{\_}function}{122}{\code {printf_arginfo_function}} +\entry{fpos{\_}t}{137}{\code {fpos_t}} +\entry{cookie{\_}io{\_}functions{\_}t}{145}{\code {cookie_io_functions_t}} +\entry{cookie{\_}read{\_}function}{147}{\code {cookie_read_function}} +\entry{cookie{\_}write{\_}function}{147}{\code {cookie_write_function}} +\entry{cookie{\_}seek{\_}function}{147}{\code {cookie_seek_function}} +\entry{cookie{\_}close{\_}function}{147}{\code {cookie_close_function}} +\entry{ssize{\_}t}{151}{\code {ssize_t}} +\entry{off{\_}t}{156}{\code {off_t}} +\entry{fd{\_}set}{160}{\code {fd_set}} +\entry{struct flock}{174}{\code {struct flock}} +\entry{struct dirent}{181}{\code {struct dirent}} +\entry{DIR}{182}{\code {DIR}} +\entry{struct stat}{194}{\code {struct stat}} +\entry{mode{\_}t}{195}{\code {mode_t}} +\entry{ino{\_}t}{196}{\code {ino_t}} +\entry{dev{\_}t}{196}{\code {dev_t}} +\entry{nlink{\_}t}{196}{\code {nlink_t}} +\entry{struct utimbuf}{206}{\code {struct utimbuf}} +\entry{struct sockaddr}{222}{\code {struct sockaddr}} +\entry{struct sockaddr{\_}un}{225}{\code {struct sockaddr_un}} +\entry{struct sockaddr{\_}in}{227}{\code {struct sockaddr_in}} +\entry{struct in{\_}addr}{229}{\code {struct in_addr}} +\entry{struct hostent}{231}{\code {struct hostent}} +\entry{struct servent}{234}{\code {struct servent}} +\entry{struct protoent}{237}{\code {struct protoent}} +\entry{struct linger}{264}{\code {struct linger}} +\entry{struct netent}{265}{\code {struct netent}} +\entry{struct termios}{269}{\code {struct termios}} +\entry{tcflag{\_}t}{270}{\code {tcflag_t}} +\entry{cc{\_}t}{270}{\code {cc_t}} +\entry{speed{\_}t}{282}{\code {speed_t}} +\entry{div{\_}t}{305}{\code {div_t}} +\entry{ldiv{\_}t}{306}{\code {ldiv_t}} +\entry{comparison{\_}fn{\_}t}{313}{\code {comparison_fn_t}} +\entry{glob{\_}t}{320}{\code {glob_t}} +\entry{regex{\_}t}{324}{\code {regex_t}} +\entry{regmatch{\_}t}{327}{\code {regmatch_t}} +\entry{regoff{\_}t}{327}{\code {regoff_t}} +\entry{wordexp{\_}t}{331}{\code {wordexp_t}} +\entry{clock{\_}t}{336}{\code {clock_t}} +\entry{struct tms}{336}{\code {struct tms}} +\entry{time{\_}t}{338}{\code {time_t}} +\entry{struct timeval}{338}{\code {struct timeval}} +\entry{struct timezone}{339}{\code {struct timezone}} +\entry{struct tm}{341}{\code {struct tm}} +\entry{struct itimerval}{353}{\code {struct itimerval}} +\entry{struct rusage}{356}{\code {struct rusage}} +\entry{struct rlimit}{358}{\code {struct rlimit}} +\entry{wchar{\_}t}{367}{\code {wchar_t}} +\entry{struct lconv}{380}{\code {struct lconv}} +\entry{jmp{\_}buf}{387}{\code {jmp_buf}} +\entry{sigjmp{\_}buf}{388}{\code {sigjmp_buf}} +\entry{sighandler{\_}t}{402}{\code {sighandler_t}} +\entry{struct sigaction}{404}{\code {struct sigaction}} +\entry{sig{\_}atomic{\_}t}{420}{\code {sig_atomic_t}} +\entry{sigset{\_}t}{428}{\code {sigset_t}} +\entry{struct sigaltstack}{438}{\code {struct sigaltstack}} +\entry{struct sigstack}{440}{\code {struct sigstack}} +\entry{struct sigvec}{441}{\code {struct sigvec}} +\entry{struct option}{448}{\code {struct option}} +\entry{pid{\_}t}{464}{\code {pid_t}} +\entry{union wait}{472}{\code {union wait}} +\entry{uid{\_}t}{509}{\code {uid_t}} +\entry{gid{\_}t}{509}{\code {gid_t}} +\entry{struct passwd}{517}{\code {struct passwd}} +\entry{struct group}{521}{\code {struct group}} +\entry{struct utsname}{530}{\code {struct utsname}} +\entry{va{\_}list}{555}{\code {va_list}} +\entry{ptrdiff{\_}t}{558}{\code {ptrdiff_t}} +\entry{size{\_}t}{558}{\code {size_t}} diff -durpN glibc-2.0.1/manual/libc.tps glibc-2.0.2/manual/libc.tps --- glibc-2.0.1/manual/libc.tps Mon Nov 4 17:58:25 1996 +++ glibc-2.0.2/manual/libc.tps Tue Mar 18 22:30:15 1997 @@ -1,95 +1,95 @@ \initial {C} -\entry {\code {cc{\_}t}}{264} -\entry {\code {clock{\_}t}}{330} -\entry {\code {comparison{\_}fn{\_}t}}{307} -\entry {\code {cookie{\_}close{\_}function}}{144} -\entry {\code {cookie{\_}io{\_}functions{\_}t}}{142} -\entry {\code {cookie{\_}read{\_}function}}{144} -\entry {\code {cookie{\_}seek{\_}function}}{144} -\entry {\code {cookie{\_}write{\_}function}}{144} +\entry {\code {cc_t}}{270} +\entry {\code {clock_t}}{336} +\entry {\code {comparison_fn_t}}{313} +\entry {\code {cookie_close_function}}{147} +\entry {\code {cookie_io_functions_t}}{145} +\entry {\code {cookie_read_function}}{147} +\entry {\code {cookie_seek_function}}{147} +\entry {\code {cookie_write_function}}{147} \initial {D} -\entry {\code {dev{\_}t}}{190} -\entry {\code {DIR}}{178} -\entry {\code {div{\_}t}}{299} +\entry {\code {dev_t}}{196} +\entry {\code {DIR}}{182} +\entry {\code {div_t}}{305} \initial {E} -\entry {\code {enum mcheck{\_}status}}{38} +\entry {\code {enum mcheck_status}}{38} \initial {F} -\entry {\code {fd{\_}set}}{157} -\entry {\code {FILE}}{89} -\entry {\code {fpos{\_}t}}{134} +\entry {\code {fd_set}}{160} +\entry {\code {FILE}}{91} +\entry {\code {fpos_t}}{137} \initial {G} -\entry {\code {gid{\_}t}}{505} -\entry {\code {glob{\_}t}}{314} +\entry {\code {gid_t}}{509} +\entry {\code {glob_t}}{320} \initial {I} -\entry {\code {ino{\_}t}}{190} +\entry {\code {ino_t}}{196} \initial {J} -\entry {\code {jmp{\_}buf}}{381} +\entry {\code {jmp_buf}}{387} \initial {L} -\entry {\code {ldiv{\_}t}}{300} +\entry {\code {ldiv_t}}{306} \initial {M} -\entry {\code {mode{\_}t}}{190} +\entry {\code {mode_t}}{195} \initial {N} -\entry {\code {nlink{\_}t}}{190} +\entry {\code {nlink_t}}{196} \initial {O} -\entry {\code {off{\_}t}}{152} +\entry {\code {off_t}}{156} \initial {P} -\entry {\code {pid{\_}t}}{458} -\entry {\code {printf{\_}arginfo{\_}function}}{120} -\entry {\code {printf{\_}function}}{119} -\entry {\code {ptrdiff{\_}t}}{554} +\entry {\code {pid_t}}{464} +\entry {\code {printf_arginfo_function}}{122} +\entry {\code {printf_function}}{122} +\entry {\code {ptrdiff_t}}{558} \initial {R} -\entry {\code {regex{\_}t}}{318} -\entry {\code {regmatch{\_}t}}{321} -\entry {\code {regoff{\_}t}}{321} +\entry {\code {regex_t}}{324} +\entry {\code {regmatch_t}}{327} +\entry {\code {regoff_t}}{327} \initial {S} -\entry {\code {sig{\_}atomic{\_}t}}{413} -\entry {\code {sighandler{\_}t}}{396} -\entry {\code {sigjmp{\_}buf}}{382} -\entry {\code {sigset{\_}t}}{421} -\entry {\code {size{\_}t}}{554} -\entry {\code {speed{\_}t}}{276} -\entry {\code {ssize{\_}t}}{147} -\entry {\code {struct dirent}}{177} -\entry {\code {struct flock}}{170} -\entry {\code {struct group}}{517} -\entry {\code {struct hostent}}{225} -\entry {\code {struct in{\_}addr}}{223} -\entry {\code {struct itimerval}}{347} -\entry {\code {struct lconv}}{374} -\entry {\code {struct linger}}{257} +\entry {\code {sig_atomic_t}}{420} +\entry {\code {sighandler_t}}{402} +\entry {\code {sigjmp_buf}}{388} +\entry {\code {sigset_t}}{428} +\entry {\code {size_t}}{558} +\entry {\code {speed_t}}{282} +\entry {\code {ssize_t}}{151} +\entry {\code {struct dirent}}{181} +\entry {\code {struct flock}}{174} +\entry {\code {struct group}}{521} +\entry {\code {struct hostent}}{231} +\entry {\code {struct in_addr}}{229} +\entry {\code {struct itimerval}}{353} +\entry {\code {struct lconv}}{380} +\entry {\code {struct linger}}{264} \entry {\code {struct mstats}}{40} -\entry {\code {struct netent}}{258} +\entry {\code {struct netent}}{265} \entry {\code {struct obstack}}{42} -\entry {\code {struct option}}{442} -\entry {\code {struct passwd}}{513} -\entry {\code {struct printf{\_}info}}{118} -\entry {\code {struct protoent}}{231} -\entry {\code {struct rlimit}}{352} -\entry {\code {struct rusage}}{350} -\entry {\code {struct servent}}{228} -\entry {\code {struct sigaction}}{398} -\entry {\code {struct sigaltstack}}{431} -\entry {\code {struct sigstack}}{432} -\entry {\code {struct sigvec}}{433} -\entry {\code {struct sockaddr}}{216} -\entry {\code {struct sockaddr{\_}in}}{221} -\entry {\code {struct sockaddr{\_}un}}{219} -\entry {\code {struct stat}}{188} -\entry {\code {struct termios}}{263} -\entry {\code {struct timeval}}{332} -\entry {\code {struct timezone}}{333} -\entry {\code {struct tm}}{335} -\entry {\code {struct tms}}{330} -\entry {\code {struct utimbuf}}{201} -\entry {\code {struct utsname}}{526} +\entry {\code {struct option}}{448} +\entry {\code {struct passwd}}{517} +\entry {\code {struct printf_info}}{120} +\entry {\code {struct protoent}}{237} +\entry {\code {struct rlimit}}{358} +\entry {\code {struct rusage}}{356} +\entry {\code {struct servent}}{234} +\entry {\code {struct sigaction}}{404} +\entry {\code {struct sigaltstack}}{438} +\entry {\code {struct sigstack}}{440} +\entry {\code {struct sigvec}}{441} +\entry {\code {struct sockaddr}}{222} +\entry {\code {struct sockaddr_in}}{227} +\entry {\code {struct sockaddr_un}}{225} +\entry {\code {struct stat}}{194} +\entry {\code {struct termios}}{269} +\entry {\code {struct timeval}}{338} +\entry {\code {struct timezone}}{339} +\entry {\code {struct tm}}{341} +\entry {\code {struct tms}}{336} +\entry {\code {struct utimbuf}}{206} +\entry {\code {struct utsname}}{530} \initial {T} -\entry {\code {tcflag{\_}t}}{264} -\entry {\code {time{\_}t}}{332} +\entry {\code {tcflag_t}}{270} +\entry {\code {time_t}}{338} \initial {U} -\entry {\code {uid{\_}t}}{505} -\entry {\code {union wait}}{467} +\entry {\code {uid_t}}{509} +\entry {\code {union wait}}{472} \initial {V} -\entry {\code {va{\_}list}}{551} +\entry {\code {va_list}}{555} \initial {W} -\entry {\code {wchar{\_}t}}{361} -\entry {\code {wordexp{\_}t}}{325} +\entry {\code {wchar_t}}{367} +\entry {\code {wordexp_t}}{331} diff -durpN glibc-2.0.1/manual/libc.vr glibc-2.0.2/manual/libc.vr --- glibc-2.0.1/manual/libc.vr Mon Nov 4 17:59:16 1996 +++ glibc-2.0.2/manual/libc.vr Tue Mar 18 22:31:15 1997 @@ -1,536 +1,556 @@ -\entry {{\_}POSIX{\_}SOURCE}{8}{\code {{\_}POSIX{\_}SOURCE}} -\entry {{\_}POSIX{\_}C{\_}SOURCE}{8}{\code {{\_}POSIX{\_}C{\_}SOURCE}} -\entry {{\_}BSD{\_}SOURCE}{8}{\code {{\_}BSD{\_}SOURCE}} -\entry {{\_}SVID{\_}SOURCE}{9}{\code {{\_}SVID{\_}SOURCE}} -\entry {{\_}XOPEN{\_}SOURCE}{9}{\code {{\_}XOPEN{\_}SOURCE}} -\entry {{\_}GNU{\_}SOURCE}{9}{\code {{\_}GNU{\_}SOURCE}} -\entry {{\_}REENTRANT,{\_}THREAD{\_}SAFE}{10}{\code {{\_}REENTRANT,{\_}THREAD{\_}SAFE}} -\entry {errno \relax }{15}{\code {errno \relax }} -\entry {EPERM \relax }{16}{\code {EPERM \relax }} -\entry {ENOENT \relax }{17}{\code {ENOENT \relax }} -\entry {ESRCH \relax }{17}{\code {ESRCH \relax }} -\entry {EINTR \relax }{17}{\code {EINTR \relax }} -\entry {EIO \relax }{17}{\code {EIO \relax }} -\entry {ENXIO \relax }{17}{\code {ENXIO \relax }} -\entry {E2BIG \relax }{17}{\code {E2BIG \relax }} -\entry {ENOEXEC \relax }{17}{\code {ENOEXEC \relax }} -\entry {EBADF \relax }{17}{\code {EBADF \relax }} -\entry {ECHILD \relax }{17}{\code {ECHILD \relax }} -\entry {EDEADLK \relax }{17}{\code {EDEADLK \relax }} -\entry {ENOMEM \relax }{18}{\code {ENOMEM \relax }} -\entry {EACCES \relax }{18}{\code {EACCES \relax }} -\entry {EFAULT \relax }{18}{\code {EFAULT \relax }} -\entry {ENOTBLK \relax }{18}{\code {ENOTBLK \relax }} -\entry {EBUSY \relax }{18}{\code {EBUSY \relax }} -\entry {EEXIST \relax }{18}{\code {EEXIST \relax }} -\entry {EXDEV \relax }{18}{\code {EXDEV \relax }} -\entry {ENODEV \relax }{18}{\code {ENODEV \relax }} -\entry {ENOTDIR \relax }{18}{\code {ENOTDIR \relax }} -\entry {EISDIR \relax }{18}{\code {EISDIR \relax }} -\entry {EINVAL \relax }{19}{\code {EINVAL \relax }} -\entry {EMFILE \relax }{19}{\code {EMFILE \relax }} -\entry {ENFILE \relax }{19}{\code {ENFILE \relax }} -\entry {ENOTTY \relax }{19}{\code {ENOTTY \relax }} -\entry {ETXTBSY \relax }{19}{\code {ETXTBSY \relax }} -\entry {EFBIG \relax }{19}{\code {EFBIG \relax }} -\entry {ENOSPC \relax }{19}{\code {ENOSPC \relax }} -\entry {ESPIPE \relax }{19}{\code {ESPIPE \relax }} -\entry {EROFS \relax }{19}{\code {EROFS \relax }} -\entry {EMLINK \relax }{19}{\code {EMLINK \relax }} -\entry {EPIPE \relax }{20}{\code {EPIPE \relax }} -\entry {EDOM \relax }{20}{\code {EDOM \relax }} -\entry {ERANGE \relax }{20}{\code {ERANGE \relax }} -\entry {EAGAIN \relax }{20}{\code {EAGAIN \relax }} -\entry {EWOULDBLOCK \relax }{20}{\code {EWOULDBLOCK \relax }} -\entry {EINPROGRESS \relax }{21}{\code {EINPROGRESS \relax }} -\entry {EALREADY \relax }{21}{\code {EALREADY \relax }} -\entry {ENOTSOCK \relax }{21}{\code {ENOTSOCK \relax }} -\entry {EMSGSIZE \relax }{21}{\code {EMSGSIZE \relax }} -\entry {EPROTOTYPE \relax }{21}{\code {EPROTOTYPE \relax }} -\entry {ENOPROTOOPT \relax }{21}{\code {ENOPROTOOPT \relax }} -\entry {EPROTONOSUPPORT \relax }{21}{\code {EPROTONOSUPPORT \relax }} -\entry {ESOCKTNOSUPPORT \relax }{21}{\code {ESOCKTNOSUPPORT \relax }} -\entry {EOPNOTSUPP \relax }{21}{\code {EOPNOTSUPP \relax }} -\entry {EPFNOSUPPORT \relax }{22}{\code {EPFNOSUPPORT \relax }} -\entry {EAFNOSUPPORT \relax }{22}{\code {EAFNOSUPPORT \relax }} -\entry {EADDRINUSE \relax }{22}{\code {EADDRINUSE \relax }} -\entry {EADDRNOTAVAIL \relax }{22}{\code {EADDRNOTAVAIL \relax }} -\entry {ENETDOWN \relax }{22}{\code {ENETDOWN \relax }} -\entry {ENETUNREACH \relax }{22}{\code {ENETUNREACH \relax }} -\entry {ENETRESET \relax }{22}{\code {ENETRESET \relax }} -\entry {ECONNABORTED \relax }{22}{\code {ECONNABORTED \relax }} -\entry {ECONNRESET \relax }{22}{\code {ECONNRESET \relax }} -\entry {ENOBUFS \relax }{22}{\code {ENOBUFS \relax }} -\entry {EISCONN \relax }{22}{\code {EISCONN \relax }} -\entry {ENOTCONN \relax }{22}{\code {ENOTCONN \relax }} -\entry {EDESTADDRREQ \relax }{23}{\code {EDESTADDRREQ \relax }} -\entry {ESHUTDOWN \relax }{23}{\code {ESHUTDOWN \relax }} -\entry {ETOOMANYREFS \relax }{23}{\code {ETOOMANYREFS \relax }} -\entry {ETIMEDOUT \relax }{23}{\code {ETIMEDOUT \relax }} -\entry {ECONNREFUSED \relax }{23}{\code {ECONNREFUSED \relax }} -\entry {ELOOP \relax }{23}{\code {ELOOP \relax }} -\entry {ENAMETOOLONG \relax }{23}{\code {ENAMETOOLONG \relax }} -\entry {EHOSTDOWN \relax }{23}{\code {EHOSTDOWN \relax }} -\entry {EHOSTUNREACH \relax }{23}{\code {EHOSTUNREACH \relax }} -\entry {ENOTEMPTY \relax }{23}{\code {ENOTEMPTY \relax }} -\entry {EPROCLIM \relax }{23}{\code {EPROCLIM \relax }} -\entry {EUSERS \relax }{23}{\code {EUSERS \relax }} -\entry {EDQUOT \relax }{24}{\code {EDQUOT \relax }} -\entry {ESTALE \relax }{24}{\code {ESTALE \relax }} -\entry {EREMOTE \relax }{24}{\code {EREMOTE \relax }} -\entry {EBADRPC \relax }{24}{\code {EBADRPC \relax }} -\entry {ERPCMISMATCH \relax }{24}{\code {ERPCMISMATCH \relax }} -\entry {EPROGUNAVAIL \relax }{24}{\code {EPROGUNAVAIL \relax }} -\entry {EPROGMISMATCH \relax }{24}{\code {EPROGMISMATCH \relax }} -\entry {EPROCUNAVAIL \relax }{24}{\code {EPROCUNAVAIL \relax }} -\entry {ENOLCK \relax }{24}{\code {ENOLCK \relax }} -\entry {EFTYPE \relax }{24}{\code {EFTYPE \relax }} -\entry {EAUTH \relax }{24}{\code {EAUTH \relax }} -\entry {ENEEDAUTH \relax }{24}{\code {ENEEDAUTH \relax }} -\entry {ENOSYS \relax }{25}{\code {ENOSYS \relax }} -\entry {EILSEQ \relax }{25}{\code {EILSEQ \relax }} -\entry {EBACKGROUND \relax }{25}{\code {EBACKGROUND \relax }} -\entry {EDIED \relax }{25}{\code {EDIED \relax }} -\entry {ED \relax }{25}{\code {ED \relax }} -\entry {EGREGIOUS \relax }{25}{\code {EGREGIOUS \relax }} -\entry {EIEIO \relax }{25}{\code {EIEIO \relax }} -\entry {EGRATUITOUS \relax }{25}{\code {EGRATUITOUS \relax }} -\entry {ERESTART \relax }{25}{\code {ERESTART \relax }} -\entry {ENOMSG \relax }{25}{\code {ENOMSG \relax }} -\entry {EIDRM \relax }{25}{\code {EIDRM \relax }} -\entry {ECHRNG \relax }{25}{\code {ECHRNG \relax }} -\entry {EL2NSYNC \relax }{25}{\code {EL2NSYNC \relax }} -\entry {EL3HLT \relax }{25}{\code {EL3HLT \relax }} -\entry {EL3RST \relax }{26}{\code {EL3RST \relax }} -\entry {ELNRNG \relax }{26}{\code {ELNRNG \relax }} -\entry {EUNATCH \relax }{26}{\code {EUNATCH \relax }} -\entry {ENOCSI \relax }{26}{\code {ENOCSI \relax }} -\entry {EL2HLT \relax }{26}{\code {EL2HLT \relax }} -\entry {EBADE \relax }{26}{\code {EBADE \relax }} -\entry {EBADR \relax }{26}{\code {EBADR \relax }} -\entry {EXFULL \relax }{26}{\code {EXFULL \relax }} -\entry {ENOANO \relax }{26}{\code {ENOANO \relax }} -\entry {EBADRQC \relax }{26}{\code {EBADRQC \relax }} -\entry {EBADSLT \relax }{26}{\code {EBADSLT \relax }} -\entry {EDEADLOCK \relax }{26}{\code {EDEADLOCK \relax }} -\entry {EBFONT \relax }{26}{\code {EBFONT \relax }} -\entry {ENOSTR \relax }{26}{\code {ENOSTR \relax }} -\entry {ENODATA \relax }{26}{\code {ENODATA \relax }} -\entry {ETIME \relax }{26}{\code {ETIME \relax }} -\entry {ENOSR \relax }{26}{\code {ENOSR \relax }} -\entry {ENONET \relax }{26}{\code {ENONET \relax }} -\entry {ENOPKG \relax }{26}{\code {ENOPKG \relax }} -\entry {ENOLINK \relax }{26}{\code {ENOLINK \relax }} -\entry {EADV \relax }{26}{\code {EADV \relax }} -\entry {ESRMNT \relax }{26}{\code {ESRMNT \relax }} -\entry {ECOMM \relax }{26}{\code {ECOMM \relax }} -\entry {EPROTO \relax }{26}{\code {EPROTO \relax }} -\entry {EMULTIHOP \relax }{26}{\code {EMULTIHOP \relax }} -\entry {EDOTDOT \relax }{26}{\code {EDOTDOT \relax }} -\entry {EBADMSG \relax }{26}{\code {EBADMSG \relax }} -\entry {EOVERFLOW \relax }{26}{\code {EOVERFLOW \relax }} -\entry {ENOTUNIQ \relax }{26}{\code {ENOTUNIQ \relax }} -\entry {EBADFD \relax }{26}{\code {EBADFD \relax }} -\entry {EREMCHG \relax }{27}{\code {EREMCHG \relax }} -\entry {ELIBACC \relax }{27}{\code {ELIBACC \relax }} -\entry {ELIBBAD \relax }{27}{\code {ELIBBAD \relax }} -\entry {ELIBSCN \relax }{27}{\code {ELIBSCN \relax }} -\entry {ELIBMAX \relax }{27}{\code {ELIBMAX \relax }} -\entry {ELIBEXEC \relax }{27}{\code {ELIBEXEC \relax }} -\entry {ESTRPIPE \relax }{27}{\code {ESTRPIPE \relax }} -\entry {EUCLEAN \relax }{27}{\code {EUCLEAN \relax }} -\entry {ENOTNAM \relax }{27}{\code {ENOTNAM \relax }} -\entry {ENAVAIL \relax }{27}{\code {ENAVAIL \relax }} -\entry {EISNAM \relax }{27}{\code {EISNAM \relax }} -\entry {EREMOTEIO \relax }{27}{\code {EREMOTEIO \relax }} -\entry {program{\_}invocation{\_}name \relax }{28}{\code {program{\_}invocation{\_}name \relax }} -\entry {program{\_}invocation{\_}short{\_}name \relax }{28}{\code {program{\_}invocation{\_}short{\_}name \relax }} -\entry {{\_}{\_}malloc{\_}hook}{39}{\code {{\_}{\_}malloc{\_}hook}} -\entry {{\_}{\_}realloc{\_}hook}{39}{\code {{\_}{\_}realloc{\_}hook}} -\entry {{\_}{\_}free{\_}hook}{39}{\code {{\_}{\_}free{\_}hook}} -\entry {stdin \relax }{89}{\code {stdin \relax }} -\entry {stdout \relax }{89}{\code {stdout \relax }} -\entry {stderr \relax }{90}{\code {stderr \relax }} -\entry {FOPEN{\_}MAX \relax }{92}{\code {FOPEN{\_}MAX \relax }} -\entry {PA{\_}FLAG{\_}MASK \relax }{114}{\code {PA{\_}FLAG{\_}MASK \relax }} -\entry {PA{\_}INT}{114}{\code {PA{\_}INT}} -\entry {PA{\_}CHAR}{114}{\code {PA{\_}CHAR}} -\entry {PA{\_}STRING}{114}{\code {PA{\_}STRING}} -\entry {PA{\_}POINTER}{114}{\code {PA{\_}POINTER}} -\entry {PA{\_}FLOAT}{114}{\code {PA{\_}FLOAT}} -\entry {PA{\_}DOUBLE}{114}{\code {PA{\_}DOUBLE}} -\entry {PA{\_}LAST}{114}{\code {PA{\_}LAST}} -\entry {PA{\_}FLAG{\_}PTR}{114}{\code {PA{\_}FLAG{\_}PTR}} -\entry {PA{\_}FLAG{\_}SHORT}{115}{\code {PA{\_}FLAG{\_}SHORT}} -\entry {PA{\_}FLAG{\_}LONG}{115}{\code {PA{\_}FLAG{\_}LONG}} -\entry {PA{\_}FLAG{\_}LONG{\_}LONG}{115}{\code {PA{\_}FLAG{\_}LONG{\_}LONG}} -\entry {PA{\_}FLAG{\_}LONG{\_}DOUBLE}{115}{\code {PA{\_}FLAG{\_}LONG{\_}DOUBLE}} -\entry {EOF \relax }{130}{\code {EOF \relax }} -\entry {SEEK{\_}SET \relax }{133}{\code {SEEK{\_}SET \relax }} -\entry {SEEK{\_}CUR \relax }{133}{\code {SEEK{\_}CUR \relax }} -\entry {SEEK{\_}END \relax }{133}{\code {SEEK{\_}END \relax }} -\entry {L{\_}SET}{133}{\code {L{\_}SET}} -\entry {L{\_}INCR}{133}{\code {L{\_}INCR}} -\entry {L{\_}XTND}{133}{\code {L{\_}XTND}} -\entry {{\_}IOFBF \relax }{137}{\code {{\_}IOFBF \relax }} -\entry {{\_}IOLBF \relax }{137}{\code {{\_}IOLBF \relax }} -\entry {{\_}IONBF \relax }{137}{\code {{\_}IONBF \relax }} -\entry {BUFSIZ \relax }{137}{\code {BUFSIZ \relax }} -\entry {STDIN{\_}FILENO}{154}{\code {STDIN{\_}FILENO}} -\entry {STDOUT{\_}FILENO}{154}{\code {STDOUT{\_}FILENO}} -\entry {STDERR{\_}FILENO}{154}{\code {STDERR{\_}FILENO}} -\entry {FD{\_}SETSIZE \relax }{157}{\code {FD{\_}SETSIZE \relax }} -\entry {F{\_}DUPFD \relax }{161}{\code {F{\_}DUPFD \relax }} -\entry {F{\_}GETFD \relax }{162}{\code {F{\_}GETFD \relax }} -\entry {F{\_}SETFD \relax }{163}{\code {F{\_}SETFD \relax }} -\entry {FD{\_}CLOEXEC \relax }{163}{\code {FD{\_}CLOEXEC \relax }} -\entry {O{\_}RDONLY \relax }{164}{\code {O{\_}RDONLY \relax }} -\entry {O{\_}WRONLY \relax }{164}{\code {O{\_}WRONLY \relax }} -\entry {O{\_}RDWR \relax }{164}{\code {O{\_}RDWR \relax }} -\entry {O{\_}READ \relax }{165}{\code {O{\_}READ \relax }} -\entry {O{\_}WRITE \relax }{165}{\code {O{\_}WRITE \relax }} -\entry {O{\_}EXEC \relax }{165}{\code {O{\_}EXEC \relax }} -\entry {O{\_}ACCMODE \relax }{165}{\code {O{\_}ACCMODE \relax }} -\entry {O{\_}CREAT \relax }{166}{\code {O{\_}CREAT \relax }} -\entry {O{\_}EXCL \relax }{166}{\code {O{\_}EXCL \relax }} -\entry {O{\_}NONBLOCK \relax }{166}{\code {O{\_}NONBLOCK \relax }} -\entry {O{\_}NOCTTY \relax }{166}{\code {O{\_}NOCTTY \relax }} -\entry {O{\_}IGNORE{\_}CTTY \relax }{166}{\code {O{\_}IGNORE{\_}CTTY \relax }} -\entry {O{\_}NOLINK \relax }{166}{\code {O{\_}NOLINK \relax }} -\entry {O{\_}NOTRANS \relax }{167}{\code {O{\_}NOTRANS \relax }} -\entry {O{\_}TRUNC \relax }{167}{\code {O{\_}TRUNC \relax }} -\entry {O{\_}SHLOCK \relax }{167}{\code {O{\_}SHLOCK \relax }} -\entry {O{\_}EXLOCK \relax }{167}{\code {O{\_}EXLOCK \relax }} -\entry {O{\_}APPEND \relax }{167}{\code {O{\_}APPEND \relax }} -\entry {O{\_}NONBLOCK \relax }{168}{\code {O{\_}NONBLOCK \relax }} -\entry {O{\_}NDELAY \relax }{168}{\code {O{\_}NDELAY \relax }} -\entry {O{\_}ASYNC \relax }{168}{\code {O{\_}ASYNC \relax }} -\entry {O{\_}FSYNC \relax }{168}{\code {O{\_}FSYNC \relax }} -\entry {O{\_}SYNC \relax }{168}{\code {O{\_}SYNC \relax }} -\entry {O{\_}NOATIME \relax }{168}{\code {O{\_}NOATIME \relax }} -\entry {F{\_}GETFL \relax }{168}{\code {F{\_}GETFL \relax }} -\entry {F{\_}SETFL \relax }{169}{\code {F{\_}SETFL \relax }} -\entry {F{\_}GETLK \relax }{171}{\code {F{\_}GETLK \relax }} -\entry {F{\_}SETLK \relax }{171}{\code {F{\_}SETLK \relax }} -\entry {F{\_}SETLKW \relax }{172}{\code {F{\_}SETLKW \relax }} -\entry {F{\_}RDLCK}{173}{\code {F{\_}RDLCK}} -\entry {F{\_}WRLCK}{173}{\code {F{\_}WRLCK}} -\entry {F{\_}UNLCK}{173}{\code {F{\_}UNLCK}} -\entry {F{\_}GETOWN \relax }{174}{\code {F{\_}GETOWN \relax }} -\entry {F{\_}SETOWN \relax }{174}{\code {F{\_}SETOWN \relax }} -\entry {S{\_}IFMT \relax }{192}{\code {S{\_}IFMT \relax }} -\entry {S{\_}IFDIR}{192}{\code {S{\_}IFDIR}} -\entry {S{\_}IFCHR}{192}{\code {S{\_}IFCHR}} -\entry {S{\_}IFBLK}{192}{\code {S{\_}IFBLK}} -\entry {S{\_}IFREG}{192}{\code {S{\_}IFREG}} -\entry {S{\_}IFLNK}{192}{\code {S{\_}IFLNK}} -\entry {S{\_}IFSOCK}{192}{\code {S{\_}IFSOCK}} -\entry {S{\_}IFIFO}{193}{\code {S{\_}IFIFO}} -\entry {S{\_}IRUSR}{194}{\code {S{\_}IRUSR}} -\entry {S{\_}IREAD}{194}{\code {S{\_}IREAD}} -\entry {S{\_}IWUSR}{195}{\code {S{\_}IWUSR}} -\entry {S{\_}IWRITE}{195}{\code {S{\_}IWRITE}} -\entry {S{\_}IXUSR}{195}{\code {S{\_}IXUSR}} -\entry {S{\_}IEXEC}{195}{\code {S{\_}IEXEC}} -\entry {S{\_}IRWXU}{195}{\code {S{\_}IRWXU}} -\entry {S{\_}IRGRP}{195}{\code {S{\_}IRGRP}} -\entry {S{\_}IWGRP}{195}{\code {S{\_}IWGRP}} -\entry {S{\_}IXGRP}{195}{\code {S{\_}IXGRP}} -\entry {S{\_}IRWXG}{195}{\code {S{\_}IRWXG}} -\entry {S{\_}IROTH}{195}{\code {S{\_}IROTH}} -\entry {S{\_}IWOTH}{195}{\code {S{\_}IWOTH}} -\entry {S{\_}IXOTH}{195}{\code {S{\_}IXOTH}} -\entry {S{\_}IRWXO}{195}{\code {S{\_}IRWXO}} -\entry {S{\_}ISUID}{195}{\code {S{\_}ISUID}} -\entry {S{\_}ISGID}{195}{\code {S{\_}ISGID}} -\entry {S{\_}ISVTX}{195}{\code {S{\_}ISVTX}} -\entry {R{\_}OK \relax }{200}{\code {R{\_}OK \relax }} -\entry {W{\_}OK \relax }{200}{\code {W{\_}OK \relax }} -\entry {X{\_}OK \relax }{200}{\code {X{\_}OK \relax }} -\entry {F{\_}OK \relax }{200}{\code {F{\_}OK \relax }} -\entry {L{\_}tmpnam \relax }{204}{\code {L{\_}tmpnam \relax }} -\entry {TMP{\_}MAX \relax }{204}{\code {TMP{\_}MAX \relax }} -\entry {P{\_}tmpdir \relax }{205}{\code {P{\_}tmpdir \relax }} -\entry {SOCK{\_}STREAM \relax }{214}{\code {SOCK{\_}STREAM \relax }} -\entry {SOCK{\_}DGRAM \relax }{214}{\code {SOCK{\_}DGRAM \relax }} -\entry {SOCK{\_}RAW \relax }{215}{\code {SOCK{\_}RAW \relax }} -\entry {AF{\_}FILE}{216}{\code {AF{\_}FILE}} -\entry {AF{\_}UNIX}{216}{\code {AF{\_}UNIX}} -\entry {AF{\_}INET}{216}{\code {AF{\_}INET}} -\entry {AF{\_}UNSPEC}{217}{\code {AF{\_}UNSPEC}} -\entry {PF{\_}FILE \relax }{219}{\code {PF{\_}FILE \relax }} -\entry {PF{\_}UNIX \relax }{219}{\code {PF{\_}UNIX \relax }} -\entry {PF{\_}INET \relax }{221}{\code {PF{\_}INET \relax }} -\entry {INADDR{\_}LOOPBACK \relax }{224}{\code {INADDR{\_}LOOPBACK \relax }} -\entry {INADDR{\_}ANY \relax }{224}{\code {INADDR{\_}ANY \relax }} -\entry {INADDR{\_}BROADCAST \relax }{224}{\code {INADDR{\_}BROADCAST \relax }} -\entry {INADDR{\_}NONE \relax }{224}{\code {INADDR{\_}NONE \relax }} -\entry {h{\_}errno}{227}{\code {h{\_}errno}} -\entry {HOST{\_}NOT{\_}FOUND}{227}{\code {HOST{\_}NOT{\_}FOUND}} -\entry {TRY{\_}AGAIN}{227}{\code {TRY{\_}AGAIN}} -\entry {NO{\_}RECOVERY}{227}{\code {NO{\_}RECOVERY}} -\entry {NO{\_}ADDRESS}{227}{\code {NO{\_}ADDRESS}} -\entry {IPPORT{\_}RESERVED \relax }{228}{\code {IPPORT{\_}RESERVED \relax }} -\entry {IPPORT{\_}USERRESERVED \relax }{228}{\code {IPPORT{\_}USERRESERVED \relax }} -\entry {PF{\_}NS}{234}{\code {PF{\_}NS}} -\entry {PF{\_}ISO}{234}{\code {PF{\_}ISO}} -\entry {PF{\_}CCITT}{234}{\code {PF{\_}CCITT}} -\entry {PF{\_}IMPLINK}{234}{\code {PF{\_}IMPLINK}} -\entry {PF{\_}ROUTE}{234}{\code {PF{\_}ROUTE}} -\entry {MSG{\_}OOB \relax }{243}{\code {MSG{\_}OOB \relax }} -\entry {MSG{\_}PEEK \relax }{243}{\code {MSG{\_}PEEK \relax }} -\entry {MSG{\_}DONTROUTE \relax }{243}{\code {MSG{\_}DONTROUTE \relax }} -\entry {SOL{\_}SOCKET \relax }{256}{\code {SOL{\_}SOCKET \relax }} -\entry {NCCS \relax }{264}{\code {NCCS \relax }} -\entry {TCSANOW}{264}{\code {TCSANOW}} -\entry {TCSADRAIN}{264}{\code {TCSADRAIN}} -\entry {TCSAFLUSH}{265}{\code {TCSAFLUSH}} -\entry {TCSASOFT}{265}{\code {TCSASOFT}} -\entry {INPCK \relax }{267}{\code {INPCK \relax }} -\entry {IGNPAR \relax }{267}{\code {IGNPAR \relax }} -\entry {PARMRK \relax }{267}{\code {PARMRK \relax }} -\entry {ISTRIP \relax }{267}{\code {ISTRIP \relax }} -\entry {IGNBRK \relax }{268}{\code {IGNBRK \relax }} -\entry {BRKINT \relax }{268}{\code {BRKINT \relax }} -\entry {IGNCR \relax }{268}{\code {IGNCR \relax }} -\entry {ICRNL \relax }{268}{\code {ICRNL \relax }} -\entry {INLCR \relax }{268}{\code {INLCR \relax }} -\entry {IXOFF \relax }{268}{\code {IXOFF \relax }} -\entry {IXON \relax }{268}{\code {IXON \relax }} -\entry {IXANY \relax }{268}{\code {IXANY \relax }} -\entry {IMAXBEL \relax }{269}{\code {IMAXBEL \relax }} -\entry {OPOST \relax }{269}{\code {OPOST \relax }} -\entry {ONLCR \relax }{269}{\code {ONLCR \relax }} -\entry {OXTABS \relax }{269}{\code {OXTABS \relax }} -\entry {ONOEOT \relax }{269}{\code {ONOEOT \relax }} -\entry {CLOCAL \relax }{270}{\code {CLOCAL \relax }} -\entry {HUPCL \relax }{270}{\code {HUPCL \relax }} -\entry {CREAD \relax }{270}{\code {CREAD \relax }} -\entry {CSTOPB \relax }{270}{\code {CSTOPB \relax }} -\entry {PARENB \relax }{270}{\code {PARENB \relax }} -\entry {PARODD \relax }{271}{\code {PARODD \relax }} -\entry {CSIZE \relax }{271}{\code {CSIZE \relax }} -\entry {CS5 \relax }{271}{\code {CS5 \relax }} -\entry {CS6 \relax }{271}{\code {CS6 \relax }} -\entry {CS7 \relax }{271}{\code {CS7 \relax }} -\entry {CS8 \relax }{271}{\code {CS8 \relax }} -\entry {CCTS{\_}OFLOW \relax }{271}{\code {CCTS{\_}OFLOW \relax }} -\entry {CRTS{\_}IFLOW \relax }{271}{\code {CRTS{\_}IFLOW \relax }} -\entry {MDMBUF \relax }{271}{\code {MDMBUF \relax }} -\entry {CIGNORE \relax }{271}{\code {CIGNORE \relax }} -\entry {ICANON \relax }{272}{\code {ICANON \relax }} -\entry {ECHO \relax }{272}{\code {ECHO \relax }} -\entry {ECHOE \relax }{272}{\code {ECHOE \relax }} -\entry {ECHOPRT \relax }{272}{\code {ECHOPRT \relax }} -\entry {ECHOK \relax }{272}{\code {ECHOK \relax }} -\entry {ECHOKE \relax }{273}{\code {ECHOKE \relax }} -\entry {ECHONL \relax }{273}{\code {ECHONL \relax }} -\entry {ECHOCTL \relax }{273}{\code {ECHOCTL \relax }} -\entry {ISIG \relax }{273}{\code {ISIG \relax }} -\entry {IEXTEN \relax }{273}{\code {IEXTEN \relax }} -\entry {NOFLSH \relax }{274}{\code {NOFLSH \relax }} -\entry {TOSTOP \relax }{274}{\code {TOSTOP \relax }} -\entry {ALTWERASE \relax }{274}{\code {ALTWERASE \relax }} -\entry {FLUSHO \relax }{274}{\code {FLUSHO \relax }} -\entry {NOKERNINFO \relax }{274}{\code {NOKERNINFO \relax }} -\entry {PENDIN \relax }{274}{\code {PENDIN \relax }} -\entry {B0}{276}{\code {B0}} -\entry {B50}{276}{\code {B50}} -\entry {B75}{276}{\code {B75}} -\entry {B110}{276}{\code {B110}} -\entry {B134}{276}{\code {B134}} -\entry {B150}{276}{\code {B150}} -\entry {B200}{276}{\code {B200}} -\entry {B300}{276}{\code {B300}} -\entry {B600}{276}{\code {B600}} -\entry {B1200}{276}{\code {B1200}} -\entry {B1800}{276}{\code {B1800}} -\entry {B2400}{276}{\code {B2400}} -\entry {B4800}{276}{\code {B4800}} -\entry {B9600}{276}{\code {B9600}} -\entry {B19200}{276}{\code {B19200}} -\entry {B38400}{276}{\code {B38400}} -\entry {EXTA}{276}{\code {EXTA}} -\entry {EXTB}{276}{\code {EXTB}} -\entry {{\_}POSIX{\_}VDISABLE}{276}{\code {{\_}POSIX{\_}VDISABLE}} -\entry {VEOF \relax }{277}{\code {VEOF \relax }} -\entry {VEOL \relax }{277}{\code {VEOL \relax }} -\entry {VEOL2 \relax }{277}{\code {VEOL2 \relax }} -\entry {VERASE \relax }{277}{\code {VERASE \relax }} -\entry {VWERASE \relax }{278}{\code {VWERASE \relax }} -\entry {VKILL \relax }{278}{\code {VKILL \relax }} -\entry {VREPRINT \relax }{278}{\code {VREPRINT \relax }} -\entry {VINTR \relax }{278}{\code {VINTR \relax }} -\entry {VQUIT \relax }{279}{\code {VQUIT \relax }} -\entry {VSUSP \relax }{279}{\code {VSUSP \relax }} -\entry {VDSUSP \relax }{279}{\code {VDSUSP \relax }} -\entry {VSTART \relax }{280}{\code {VSTART \relax }} -\entry {VSTOP \relax }{280}{\code {VSTOP \relax }} -\entry {VLNEXT \relax }{280}{\code {VLNEXT \relax }} -\entry {VDISCARD \relax }{281}{\code {VDISCARD \relax }} -\entry {VSTATUS \relax }{281}{\code {VSTATUS \relax }} -\entry {VMIN \relax }{281}{\code {VMIN \relax }} -\entry {VTIME \relax }{282}{\code {VTIME \relax }} -\entry {TCIFLUSH}{284}{\code {TCIFLUSH}} -\entry {TCOFLUSH}{284}{\code {TCOFLUSH}} -\entry {TCIOFLUSH}{284}{\code {TCIOFLUSH}} -\entry {TCOOFF}{284}{\code {TCOOFF}} -\entry {TCOON}{284}{\code {TCOON}} -\entry {TCIOFF}{284}{\code {TCIOFF}} -\entry {TCION}{284}{\code {TCION}} -\entry {EBADF}{285}{\code {EBADF}} -\entry {ENOTTY}{285}{\code {ENOTTY}} -\entry {EINVAL}{285}{\code {EINVAL}} -\entry {HUGE{\_}VAL \relax }{288}{\code {HUGE{\_}VAL \relax }} -\entry {HUGE{\_}VALf \relax }{288}{\code {HUGE{\_}VALf \relax }} -\entry {HUGE{\_}VALl \relax }{288}{\code {HUGE{\_}VALl \relax }} -\entry {RAND{\_}MAX \relax }{292}{\code {RAND{\_}MAX \relax }} -\entry {NAN \relax }{295}{\code {NAN \relax }} -\entry {CLOCKS{\_}PER{\_}SEC \relax }{330}{\code {CLOCKS{\_}PER{\_}SEC \relax }} -\entry {CLK{\_}TCK \relax }{330}{\code {CLK{\_}TCK \relax }} -\entry {tzname [2] \relax }{344}{\code {tzname [2] \relax }} -\entry {timezone \relax }{345}{\code {timezone \relax }} -\entry {daylight \relax }{345}{\code {daylight \relax }} -\entry {RLIMIT{\_}CPU}{352}{\code {RLIMIT{\_}CPU}} -\entry {RLIMIT{\_}FSIZE}{352}{\code {RLIMIT{\_}FSIZE}} -\entry {RLIMIT{\_}DATA}{352}{\code {RLIMIT{\_}DATA}} -\entry {RLIMIT{\_}STACK}{353}{\code {RLIMIT{\_}STACK}} -\entry {RLIMIT{\_}CORE}{353}{\code {RLIMIT{\_}CORE}} -\entry {RLIMIT{\_}RSS}{353}{\code {RLIMIT{\_}RSS}} -\entry {RLIMIT{\_}NOFILE}{353}{\code {RLIMIT{\_}NOFILE}} -\entry {RLIMIT{\_}OFILE}{353}{\code {RLIMIT{\_}OFILE}} -\entry {RLIM{\_}NLIMITS}{353}{\code {RLIM{\_}NLIMITS}} -\entry {int}{353}{\code {int}} -\entry {PRIO{\_}MIN}{354}{\code {PRIO{\_}MIN}} -\entry {PRIO{\_}MAX}{354}{\code {PRIO{\_}MAX}} -\entry {PRIO{\_}PROCESS}{355}{\code {PRIO{\_}PROCESS}} -\entry {PRIO{\_}PGRP}{355}{\code {PRIO{\_}PGRP}} -\entry {PRIO{\_}USER}{355}{\code {PRIO{\_}USER}} -\entry {MB{\_}LEN{\_}MAX \relax }{360}{\code {MB{\_}LEN{\_}MAX \relax }} -\entry {MB{\_}CUR{\_}MAX \relax }{360}{\code {MB{\_}CUR{\_}MAX \relax }} -\entry {LC{\_}COLLATE}{370}{\code {LC{\_}COLLATE}} -\entry {LC{\_}CTYPE}{370}{\code {LC{\_}CTYPE}} -\entry {LC{\_}MONETARY}{371}{\code {LC{\_}MONETARY}} -\entry {LC{\_}NUMERIC}{371}{\code {LC{\_}NUMERIC}} -\entry {LC{\_}TIME}{371}{\code {LC{\_}TIME}} -\entry {LC{\_}ALL}{371}{\code {LC{\_}ALL}} -\entry {LANG}{371}{\code {LANG}} -\entry {NSIG \relax }{386}{\code {NSIG \relax }} -\entry {COREFILE}{386}{\code {COREFILE}} -\entry {SIGFPE \relax }{387}{\code {SIGFPE \relax }} -\entry {FPE{\_}INTOVF{\_}TRAP}{387}{\code {FPE{\_}INTOVF{\_}TRAP}} -\entry {FPE{\_}INTDIV{\_}TRAP}{387}{\code {FPE{\_}INTDIV{\_}TRAP}} -\entry {FPE{\_}SUBRNG{\_}TRAP}{387}{\code {FPE{\_}SUBRNG{\_}TRAP}} -\entry {FPE{\_}FLTOVF{\_}TRAP}{387}{\code {FPE{\_}FLTOVF{\_}TRAP}} -\entry {FPE{\_}FLTDIV{\_}TRAP}{387}{\code {FPE{\_}FLTDIV{\_}TRAP}} -\entry {FPE{\_}FLTUND{\_}TRAP}{387}{\code {FPE{\_}FLTUND{\_}TRAP}} -\entry {FPE{\_}DECOVF{\_}TRAP}{387}{\code {FPE{\_}DECOVF{\_}TRAP}} -\entry {SIGILL \relax }{388}{\code {SIGILL \relax }} -\entry {SIGSEGV \relax }{388}{\code {SIGSEGV \relax }} -\entry {SIGBUS \relax }{388}{\code {SIGBUS \relax }} -\entry {SIGABRT \relax }{388}{\code {SIGABRT \relax }} -\entry {SIGIOT \relax }{388}{\code {SIGIOT \relax }} -\entry {SIGTRAP \relax }{389}{\code {SIGTRAP \relax }} -\entry {SIGEMT \relax }{389}{\code {SIGEMT \relax }} -\entry {SIGSYS \relax }{389}{\code {SIGSYS \relax }} -\entry {SIGTERM \relax }{389}{\code {SIGTERM \relax }} -\entry {SIGINT \relax }{389}{\code {SIGINT \relax }} -\entry {SIGQUIT \relax }{390}{\code {SIGQUIT \relax }} -\entry {SIGKILL \relax }{390}{\code {SIGKILL \relax }} -\entry {SIGHUP \relax }{390}{\code {SIGHUP \relax }} -\entry {SIGALRM \relax }{391}{\code {SIGALRM \relax }} -\entry {SIGVTALRM \relax }{391}{\code {SIGVTALRM \relax }} -\entry {SIGPROF \relax }{391}{\code {SIGPROF \relax }} -\entry {SIGIO \relax }{391}{\code {SIGIO \relax }} -\entry {SIGURG \relax }{391}{\code {SIGURG \relax }} -\entry {SIGPOLL \relax }{392}{\code {SIGPOLL \relax }} -\entry {SIGCHLD \relax }{392}{\code {SIGCHLD \relax }} -\entry {SIGCLD \relax }{392}{\code {SIGCLD \relax }} -\entry {SIGCONT \relax }{392}{\code {SIGCONT \relax }} -\entry {SIGSTOP \relax }{392}{\code {SIGSTOP \relax }} -\entry {SIGTSTP \relax }{392}{\code {SIGTSTP \relax }} -\entry {SIGTTIN \relax }{393}{\code {SIGTTIN \relax }} -\entry {SIGTTOU \relax }{393}{\code {SIGTTOU \relax }} -\entry {SIGPIPE \relax }{394}{\code {SIGPIPE \relax }} -\entry {SIGLOST \relax }{394}{\code {SIGLOST \relax }} -\entry {SIGXCPU \relax }{394}{\code {SIGXCPU \relax }} -\entry {SIGXFSZ \relax }{394}{\code {SIGXFSZ \relax }} -\entry {SIGUSR1 \relax }{394}{\code {SIGUSR1 \relax }} -\entry {SIGUSR2 \relax }{394}{\code {SIGUSR2 \relax }} -\entry {SIGWINCH \relax }{395}{\code {SIGWINCH \relax }} -\entry {SIGINFO \relax }{395}{\code {SIGINFO \relax }} -\entry {sys{\_}siglist}{396}{\code {sys{\_}siglist}} -\entry {SIG{\_}DFL}{397}{\code {SIG{\_}DFL}} -\entry {SIG{\_}IGN}{397}{\code {SIG{\_}IGN}} -\entry {SIG{\_}ERR \relax }{398}{\code {SIG{\_}ERR \relax }} -\entry {SA{\_}NOCLDSTOP \relax }{402}{\code {SA{\_}NOCLDSTOP \relax }} -\entry {SA{\_}ONSTACK \relax }{402}{\code {SA{\_}ONSTACK \relax }} -\entry {SA{\_}RESTART \relax }{402}{\code {SA{\_}RESTART \relax }} -\entry {SIG{\_}BLOCK}{422}{\code {SIG{\_}BLOCK}} -\entry {SIG{\_}UNBLOCK}{422}{\code {SIG{\_}UNBLOCK}} -\entry {SIG{\_}SETMASK}{422}{\code {SIG{\_}SETMASK}} -\entry {SIGSTKSZ}{431}{\code {SIGSTKSZ}} -\entry {MINSIGSTKSZ}{431}{\code {MINSIGSTKSZ}} -\entry {SA{\_}DISABLE}{431}{\code {SA{\_}DISABLE}} -\entry {SA{\_}ONSTACK}{431}{\code {SA{\_}ONSTACK}} -\entry {SV{\_}ONSTACK \relax }{434}{\code {SV{\_}ONSTACK \relax }} -\entry {SV{\_}INTERRUPT \relax }{434}{\code {SV{\_}INTERRUPT \relax }} -\entry {SV{\_}RESETHAND \relax }{434}{\code {SV{\_}RESETHAND \relax }} -\entry {opterr \relax }{439}{\code {opterr \relax }} -\entry {optopt \relax }{439}{\code {optopt \relax }} -\entry {optind \relax }{439}{\code {optind \relax }} -\entry {optarg \relax }{439}{\code {optarg \relax }} -\entry {environ \relax }{449}{\code {environ \relax }} -\entry {EXIT{\_}SUCCESS \relax }{452}{\code {EXIT{\_}SUCCESS \relax }} -\entry {EXIT{\_}FAILURE \relax }{452}{\code {EXIT{\_}FAILURE \relax }} -\entry {L{\_}ctermid \relax }{489}{\code {L{\_}ctermid \relax }} -\entry {ethers}{493}{\code {ethers}} -\entry {group}{493}{\code {group}} -\entry {hosts}{493}{\code {hosts}} -\entry {netgroup}{493}{\code {netgroup}} -\entry {network}{494}{\code {network}} -\entry {protocols}{494}{\code {protocols}} -\entry {passwd}{494}{\code {passwd}} -\entry {rpc}{494}{\code {rpc}} -\entry {services}{494}{\code {services}} -\entry {shadow}{494}{\code {shadow}} -\entry {L{\_}cuserid \relax }{513}{\code {L{\_}cuserid \relax }} -\entry {ARG{\_}MAX \relax }{529}{\code {ARG{\_}MAX \relax }} -\entry {CHILD{\_}MAX \relax }{529}{\code {CHILD{\_}MAX \relax }} -\entry {OPEN{\_}MAX \relax }{529}{\code {OPEN{\_}MAX \relax }} -\entry {STREAM{\_}MAX \relax }{530}{\code {STREAM{\_}MAX \relax }} -\entry {TZNAME{\_}MAX \relax }{530}{\code {TZNAME{\_}MAX \relax }} -\entry {NGROUPS{\_}MAX \relax }{530}{\code {NGROUPS{\_}MAX \relax }} -\entry {SSIZE{\_}MAX \relax }{530}{\code {SSIZE{\_}MAX \relax }} -\entry {RE{\_}DUP{\_}MAX \relax }{530}{\code {RE{\_}DUP{\_}MAX \relax }} -\entry {{\_}POSIX{\_}JOB{\_}CONTROL \relax }{531}{\code {{\_}POSIX{\_}JOB{\_}CONTROL \relax }} -\entry {{\_}POSIX{\_}SAVED{\_}IDS \relax }{531}{\code {{\_}POSIX{\_}SAVED{\_}IDS \relax }} -\entry {{\_}POSIX2{\_}C{\_}DEV \relax }{531}{\code {{\_}POSIX2{\_}C{\_}DEV \relax }} -\entry {{\_}POSIX2{\_}FORT{\_}DEV \relax }{531}{\code {{\_}POSIX2{\_}FORT{\_}DEV \relax }} -\entry {{\_}POSIX2{\_}FORT{\_}RUN \relax }{531}{\code {{\_}POSIX2{\_}FORT{\_}RUN \relax }} -\entry {{\_}POSIX2{\_}LOCALEDEF \relax }{532}{\code {{\_}POSIX2{\_}LOCALEDEF \relax }} -\entry {{\_}POSIX2{\_}SW{\_}DEV \relax }{532}{\code {{\_}POSIX2{\_}SW{\_}DEV \relax }} -\entry {{\_}POSIX{\_}VERSION \relax }{532}{\code {{\_}POSIX{\_}VERSION \relax }} -\entry {{\_}POSIX2{\_}C{\_}VERSION \relax }{532}{\code {{\_}POSIX2{\_}C{\_}VERSION \relax }} -\entry {LINK{\_}MAX \relax }{537}{\code {LINK{\_}MAX \relax }} -\entry {MAX{\_}CANON \relax }{537}{\code {MAX{\_}CANON \relax }} -\entry {MAX{\_}INPUT \relax }{537}{\code {MAX{\_}INPUT \relax }} -\entry {NAME{\_}MAX \relax }{537}{\code {NAME{\_}MAX \relax }} -\entry {PATH{\_}MAX \relax }{537}{\code {PATH{\_}MAX \relax }} -\entry {PIPE{\_}BUF \relax }{538}{\code {PIPE{\_}BUF \relax }} -\entry {MAXNAMLEN \relax }{538}{\code {MAXNAMLEN \relax }} -\entry {FILENAME{\_}MAX \relax }{538}{\code {FILENAME{\_}MAX \relax }} -\entry {{\_}POSIX{\_}CHOWN{\_}RESTRICTED \relax }{538}{\code {{\_}POSIX{\_}CHOWN{\_}RESTRICTED \relax }} -\entry {{\_}POSIX{\_}NO{\_}TRUNC \relax }{539}{\code {{\_}POSIX{\_}NO{\_}TRUNC \relax }} -\entry {{\_}POSIX{\_}VDISABLE \relax }{539}{\code {{\_}POSIX{\_}VDISABLE \relax }} -\entry {BC{\_}BASE{\_}MAX \relax }{541}{\code {BC{\_}BASE{\_}MAX \relax }} -\entry {BC{\_}SCALE{\_}MAX \relax }{541}{\code {BC{\_}SCALE{\_}MAX \relax }} -\entry {BC{\_}DIM{\_}MAX \relax }{542}{\code {BC{\_}DIM{\_}MAX \relax }} -\entry {BC{\_}STRING{\_}MAX \relax }{542}{\code {BC{\_}STRING{\_}MAX \relax }} -\entry {BC{\_}DIM{\_}MAX \relax }{542}{\code {BC{\_}DIM{\_}MAX \relax }} -\entry {COLL{\_}WEIGHTS{\_}MAX \relax }{542}{\code {COLL{\_}WEIGHTS{\_}MAX \relax }} -\entry {EXPR{\_}NEST{\_}MAX \relax }{542}{\code {EXPR{\_}NEST{\_}MAX \relax }} -\entry {LINE{\_}MAX \relax }{542}{\code {LINE{\_}MAX \relax }} -\entry {EQUIV{\_}CLASS{\_}MAX \relax }{542}{\code {EQUIV{\_}CLASS{\_}MAX \relax }} -\entry {NDEBUG}{545}{\code {NDEBUG}} -\entry {NULL \relax }{553}{\code {NULL \relax }} +\entry{{\_}POSIX{\_}SOURCE}{8}{\code {_POSIX_SOURCE}} +\entry{{\_}POSIX{\_}C{\_}SOURCE}{8}{\code {_POSIX_C_SOURCE}} +\entry{{\_}BSD{\_}SOURCE}{8}{\code {_BSD_SOURCE}} +\entry{{\_}SVID{\_}SOURCE}{9}{\code {_SVID_SOURCE}} +\entry{{\_}XOPEN{\_}SOURCE}{9}{\code {_XOPEN_SOURCE}} +\entry{{\_}GNU{\_}SOURCE}{9}{\code {_GNU_SOURCE}} +\entry{{\_}REENTRANT}{10}{\code {_REENTRANT}} +\entry{{\_}THREAD{\_}SAFE}{10}{\code {_THREAD_SAFE}} +\entry{errno}{15}{\code {errno}} +\entry{EPERM}{16}{\code {EPERM}} +\entry{ENOENT}{16}{\code {ENOENT}} +\entry{ESRCH}{17}{\code {ESRCH}} +\entry{EINTR}{17}{\code {EINTR}} +\entry{EIO}{17}{\code {EIO}} +\entry{ENXIO}{17}{\code {ENXIO}} +\entry{E2BIG}{17}{\code {E2BIG}} +\entry{ENOEXEC}{17}{\code {ENOEXEC}} +\entry{EBADF}{17}{\code {EBADF}} +\entry{ECHILD}{17}{\code {ECHILD}} +\entry{EDEADLK}{17}{\code {EDEADLK}} +\entry{ENOMEM}{18}{\code {ENOMEM}} +\entry{EACCES}{18}{\code {EACCES}} +\entry{EFAULT}{18}{\code {EFAULT}} +\entry{ENOTBLK}{18}{\code {ENOTBLK}} +\entry{EBUSY}{18}{\code {EBUSY}} +\entry{EEXIST}{18}{\code {EEXIST}} +\entry{EXDEV}{18}{\code {EXDEV}} +\entry{ENODEV}{18}{\code {ENODEV}} +\entry{ENOTDIR}{18}{\code {ENOTDIR}} +\entry{EISDIR}{18}{\code {EISDIR}} +\entry{EINVAL}{18}{\code {EINVAL}} +\entry{EMFILE}{19}{\code {EMFILE}} +\entry{ENFILE}{19}{\code {ENFILE}} +\entry{ENOTTY}{19}{\code {ENOTTY}} +\entry{ETXTBSY}{19}{\code {ETXTBSY}} +\entry{EFBIG}{19}{\code {EFBIG}} +\entry{ENOSPC}{19}{\code {ENOSPC}} +\entry{ESPIPE}{19}{\code {ESPIPE}} +\entry{EROFS}{19}{\code {EROFS}} +\entry{EMLINK}{19}{\code {EMLINK}} +\entry{EPIPE}{19}{\code {EPIPE}} +\entry{EDOM}{20}{\code {EDOM}} +\entry{ERANGE}{20}{\code {ERANGE}} +\entry{EAGAIN}{20}{\code {EAGAIN}} +\entry{EWOULDBLOCK}{20}{\code {EWOULDBLOCK}} +\entry{EINPROGRESS}{20}{\code {EINPROGRESS}} +\entry{EALREADY}{21}{\code {EALREADY}} +\entry{ENOTSOCK}{21}{\code {ENOTSOCK}} +\entry{EMSGSIZE}{21}{\code {EMSGSIZE}} +\entry{EPROTOTYPE}{21}{\code {EPROTOTYPE}} +\entry{ENOPROTOOPT}{21}{\code {ENOPROTOOPT}} +\entry{EPROTONOSUPPORT}{21}{\code {EPROTONOSUPPORT}} +\entry{ESOCKTNOSUPPORT}{21}{\code {ESOCKTNOSUPPORT}} +\entry{EOPNOTSUPP}{21}{\code {EOPNOTSUPP}} +\entry{EPFNOSUPPORT}{21}{\code {EPFNOSUPPORT}} +\entry{EAFNOSUPPORT}{22}{\code {EAFNOSUPPORT}} +\entry{EADDRINUSE}{22}{\code {EADDRINUSE}} +\entry{EADDRNOTAVAIL}{22}{\code {EADDRNOTAVAIL}} +\entry{ENETDOWN}{22}{\code {ENETDOWN}} +\entry{ENETUNREACH}{22}{\code {ENETUNREACH}} +\entry{ENETRESET}{22}{\code {ENETRESET}} +\entry{ECONNABORTED}{22}{\code {ECONNABORTED}} +\entry{ECONNRESET}{22}{\code {ECONNRESET}} +\entry{ENOBUFS}{22}{\code {ENOBUFS}} +\entry{EISCONN}{22}{\code {EISCONN}} +\entry{ENOTCONN}{22}{\code {ENOTCONN}} +\entry{EDESTADDRREQ}{23}{\code {EDESTADDRREQ}} +\entry{ESHUTDOWN}{23}{\code {ESHUTDOWN}} +\entry{ETOOMANYREFS}{23}{\code {ETOOMANYREFS}} +\entry{ETIMEDOUT}{23}{\code {ETIMEDOUT}} +\entry{ECONNREFUSED}{23}{\code {ECONNREFUSED}} +\entry{ELOOP}{23}{\code {ELOOP}} +\entry{ENAMETOOLONG}{23}{\code {ENAMETOOLONG}} +\entry{EHOSTDOWN}{23}{\code {EHOSTDOWN}} +\entry{EHOSTUNREACH}{23}{\code {EHOSTUNREACH}} +\entry{ENOTEMPTY}{23}{\code {ENOTEMPTY}} +\entry{EPROCLIM}{23}{\code {EPROCLIM}} +\entry{EUSERS}{23}{\code {EUSERS}} +\entry{EDQUOT}{23}{\code {EDQUOT}} +\entry{ESTALE}{24}{\code {ESTALE}} +\entry{EREMOTE}{24}{\code {EREMOTE}} +\entry{EBADRPC}{24}{\code {EBADRPC}} +\entry{ERPCMISMATCH}{24}{\code {ERPCMISMATCH}} +\entry{EPROGUNAVAIL}{24}{\code {EPROGUNAVAIL}} +\entry{EPROGMISMATCH}{24}{\code {EPROGMISMATCH}} +\entry{EPROCUNAVAIL}{24}{\code {EPROCUNAVAIL}} +\entry{ENOLCK}{24}{\code {ENOLCK}} +\entry{EFTYPE}{24}{\code {EFTYPE}} +\entry{EAUTH}{24}{\code {EAUTH}} +\entry{ENEEDAUTH}{24}{\code {ENEEDAUTH}} +\entry{ENOSYS}{24}{\code {ENOSYS}} +\entry{EILSEQ}{25}{\code {EILSEQ}} +\entry{EBACKGROUND}{25}{\code {EBACKGROUND}} +\entry{EDIED}{25}{\code {EDIED}} +\entry{ED}{25}{\code {ED}} +\entry{EGREGIOUS}{25}{\code {EGREGIOUS}} +\entry{EIEIO}{25}{\code {EIEIO}} +\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}} +\entry{ETIME}{26}{\code {ETIME}} +\entry{ERESTART}{26}{\code {ERESTART}} +\entry{ECHRNG}{26}{\code {ECHRNG}} +\entry{EL2NSYNC}{26}{\code {EL2NSYNC}} +\entry{EL3HLT}{26}{\code {EL3HLT}} +\entry{EL3RST}{26}{\code {EL3RST}} +\entry{ELNRNG}{26}{\code {ELNRNG}} +\entry{EUNATCH}{26}{\code {EUNATCH}} +\entry{ENOCSI}{26}{\code {ENOCSI}} +\entry{EL2HLT}{26}{\code {EL2HLT}} +\entry{EBADE}{26}{\code {EBADE}} +\entry{EBADR}{26}{\code {EBADR}} +\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}{27}{\code {ELIBSCN}} +\entry{ELIBMAX}{27}{\code {ELIBMAX}} +\entry{ELIBEXEC}{27}{\code {ELIBEXEC}} +\entry{ESTRPIPE}{27}{\code {ESTRPIPE}} +\entry{EUCLEAN}{27}{\code {EUCLEAN}} +\entry{ENOTNAM}{27}{\code {ENOTNAM}} +\entry{ENAVAIL}{27}{\code {ENAVAIL}} +\entry{EISNAM}{27}{\code {EISNAM}} +\entry{EREMOTEIO}{27}{\code {EREMOTEIO}} +\entry{program{\_}invocation{\_}name}{28}{\code {program_invocation_name}} +\entry{program{\_}invocation{\_}short{\_}name}{28}{\code {program_invocation_short_name}} +\entry{{\_}{\_}malloc{\_}hook}{39}{\code {__malloc_hook}} +\entry{{\_}{\_}realloc{\_}hook}{39}{\code {__realloc_hook}} +\entry{{\_}{\_}free{\_}hook}{39}{\code {__free_hook}} +\entry{stdin}{91}{\code {stdin}} +\entry{stdout}{91}{\code {stdout}} +\entry{stderr}{92}{\code {stderr}} +\entry{FOPEN{\_}MAX}{94}{\code {FOPEN_MAX}} +\entry{PA{\_}FLAG{\_}MASK}{116}{\code {PA_FLAG_MASK}} +\entry{PA{\_}INT}{116}{\code {PA_INT}} +\entry{PA{\_}CHAR}{116}{\code {PA_CHAR}} +\entry{PA{\_}STRING}{116}{\code {PA_STRING}} +\entry{PA{\_}POINTER}{116}{\code {PA_POINTER}} +\entry{PA{\_}FLOAT}{116}{\code {PA_FLOAT}} +\entry{PA{\_}DOUBLE}{117}{\code {PA_DOUBLE}} +\entry{PA{\_}LAST}{117}{\code {PA_LAST}} +\entry{PA{\_}FLAG{\_}PTR}{117}{\code {PA_FLAG_PTR}} +\entry{PA{\_}FLAG{\_}SHORT}{117}{\code {PA_FLAG_SHORT}} +\entry{PA{\_}FLAG{\_}LONG}{117}{\code {PA_FLAG_LONG}} +\entry{PA{\_}FLAG{\_}LONG{\_}LONG}{117}{\code {PA_FLAG_LONG_LONG}} +\entry{PA{\_}FLAG{\_}LONG{\_}DOUBLE}{117}{\code {PA_FLAG_LONG_DOUBLE}} +\entry{EOF}{133}{\code {EOF}} +\entry{SEEK{\_}SET}{136}{\code {SEEK_SET}} +\entry{SEEK{\_}CUR}{136}{\code {SEEK_CUR}} +\entry{SEEK{\_}END}{136}{\code {SEEK_END}} +\entry{L{\_}SET}{136}{\code {L_SET}} +\entry{L{\_}INCR}{136}{\code {L_INCR}} +\entry{L{\_}XTND}{136}{\code {L_XTND}} +\entry{{\_}IOFBF}{140}{\code {_IOFBF}} +\entry{{\_}IOLBF}{140}{\code {_IOLBF}} +\entry{{\_}IONBF}{140}{\code {_IONBF}} +\entry{BUFSIZ}{140}{\code {BUFSIZ}} +\entry{STDIN{\_}FILENO}{157}{\code {STDIN_FILENO}} +\entry{STDOUT{\_}FILENO}{158}{\code {STDOUT_FILENO}} +\entry{STDERR{\_}FILENO}{158}{\code {STDERR_FILENO}} +\entry{FD{\_}SETSIZE}{161}{\code {FD_SETSIZE}} +\entry{F{\_}DUPFD}{165}{\code {F_DUPFD}} +\entry{F{\_}GETFD}{166}{\code {F_GETFD}} +\entry{F{\_}SETFD}{167}{\code {F_SETFD}} +\entry{FD{\_}CLOEXEC}{167}{\code {FD_CLOEXEC}} +\entry{O{\_}RDONLY}{168}{\code {O_RDONLY}} +\entry{O{\_}WRONLY}{168}{\code {O_WRONLY}} +\entry{O{\_}RDWR}{168}{\code {O_RDWR}} +\entry{O{\_}READ}{169}{\code {O_READ}} +\entry{O{\_}WRITE}{169}{\code {O_WRITE}} +\entry{O{\_}EXEC}{169}{\code {O_EXEC}} +\entry{O{\_}ACCMODE}{169}{\code {O_ACCMODE}} +\entry{O{\_}CREAT}{169}{\code {O_CREAT}} +\entry{O{\_}EXCL}{169}{\code {O_EXCL}} +\entry{O{\_}NONBLOCK}{169}{\code {O_NONBLOCK}} +\entry{O{\_}NOCTTY}{170}{\code {O_NOCTTY}} +\entry{O{\_}IGNORE{\_}CTTY}{170}{\code {O_IGNORE_CTTY}} +\entry{O{\_}NOLINK}{170}{\code {O_NOLINK}} +\entry{O{\_}NOTRANS}{170}{\code {O_NOTRANS}} +\entry{O{\_}TRUNC}{170}{\code {O_TRUNC}} +\entry{O{\_}SHLOCK}{171}{\code {O_SHLOCK}} +\entry{O{\_}EXLOCK}{171}{\code {O_EXLOCK}} +\entry{O{\_}APPEND}{171}{\code {O_APPEND}} +\entry{O{\_}NONBLOCK}{171}{\code {O_NONBLOCK}} +\entry{O{\_}NDELAY}{171}{\code {O_NDELAY}} +\entry{O{\_}ASYNC}{172}{\code {O_ASYNC}} +\entry{O{\_}FSYNC}{172}{\code {O_FSYNC}} +\entry{O{\_}SYNC}{172}{\code {O_SYNC}} +\entry{O{\_}NOATIME}{172}{\code {O_NOATIME}} +\entry{F{\_}GETFL}{172}{\code {F_GETFL}} +\entry{F{\_}SETFL}{173}{\code {F_SETFL}} +\entry{F{\_}GETLK}{175}{\code {F_GETLK}} +\entry{F{\_}SETLK}{175}{\code {F_SETLK}} +\entry{F{\_}SETLKW}{176}{\code {F_SETLKW}} +\entry{F{\_}RDLCK}{176}{\code {F_RDLCK}} +\entry{F{\_}WRLCK}{177}{\code {F_WRLCK}} +\entry{F{\_}UNLCK}{177}{\code {F_UNLCK}} +\entry{F{\_}GETOWN}{177}{\code {F_GETOWN}} +\entry{F{\_}SETOWN}{178}{\code {F_SETOWN}} +\entry{S{\_}IFMT}{198}{\code {S_IFMT}} +\entry{S{\_}IFDIR}{198}{\code {S_IFDIR}} +\entry{S{\_}IFCHR}{198}{\code {S_IFCHR}} +\entry{S{\_}IFBLK}{198}{\code {S_IFBLK}} +\entry{S{\_}IFREG}{198}{\code {S_IFREG}} +\entry{S{\_}IFLNK}{198}{\code {S_IFLNK}} +\entry{S{\_}IFSOCK}{198}{\code {S_IFSOCK}} +\entry{S{\_}IFIFO}{198}{\code {S_IFIFO}} +\entry{S{\_}IRUSR}{200}{\code {S_IRUSR}} +\entry{S{\_}IREAD}{200}{\code {S_IREAD}} +\entry{S{\_}IWUSR}{200}{\code {S_IWUSR}} +\entry{S{\_}IWRITE}{200}{\code {S_IWRITE}} +\entry{S{\_}IXUSR}{200}{\code {S_IXUSR}} +\entry{S{\_}IEXEC}{200}{\code {S_IEXEC}} +\entry{S{\_}IRWXU}{200}{\code {S_IRWXU}} +\entry{S{\_}IRGRP}{200}{\code {S_IRGRP}} +\entry{S{\_}IWGRP}{200}{\code {S_IWGRP}} +\entry{S{\_}IXGRP}{200}{\code {S_IXGRP}} +\entry{S{\_}IRWXG}{200}{\code {S_IRWXG}} +\entry{S{\_}IROTH}{200}{\code {S_IROTH}} +\entry{S{\_}IWOTH}{200}{\code {S_IWOTH}} +\entry{S{\_}IXOTH}{200}{\code {S_IXOTH}} +\entry{S{\_}IRWXO}{200}{\code {S_IRWXO}} +\entry{S{\_}ISUID}{201}{\code {S_ISUID}} +\entry{S{\_}ISGID}{201}{\code {S_ISGID}} +\entry{S{\_}ISVTX}{201}{\code {S_ISVTX}} +\entry{R{\_}OK}{205}{\code {R_OK}} +\entry{W{\_}OK}{205}{\code {W_OK}} +\entry{X{\_}OK}{206}{\code {X_OK}} +\entry{F{\_}OK}{206}{\code {F_OK}} +\entry{L{\_}tmpnam}{209}{\code {L_tmpnam}} +\entry{TMP{\_}MAX}{209}{\code {TMP_MAX}} +\entry{P{\_}tmpdir}{210}{\code {P_tmpdir}} +\entry{SOCK{\_}STREAM}{220}{\code {SOCK_STREAM}} +\entry{SOCK{\_}DGRAM}{220}{\code {SOCK_DGRAM}} +\entry{SOCK{\_}RAW}{221}{\code {SOCK_RAW}} +\entry{AF{\_}FILE}{222}{\code {AF_FILE}} +\entry{AF{\_}UNIX}{222}{\code {AF_UNIX}} +\entry{AF{\_}INET}{222}{\code {AF_INET}} +\entry{AF{\_}UNSPEC}{222}{\code {AF_UNSPEC}} +\entry{PF{\_}FILE}{225}{\code {PF_FILE}} +\entry{PF{\_}UNIX}{225}{\code {PF_UNIX}} +\entry{PF{\_}INET}{227}{\code {PF_INET}} +\entry{INADDR{\_}LOOPBACK}{230}{\code {INADDR_LOOPBACK}} +\entry{INADDR{\_}ANY}{230}{\code {INADDR_ANY}} +\entry{INADDR{\_}BROADCAST}{230}{\code {INADDR_BROADCAST}} +\entry{INADDR{\_}NONE}{230}{\code {INADDR_NONE}} +\entry{h{\_}errno}{232}{\code {h_errno}} +\entry{HOST{\_}NOT{\_}FOUND}{233}{\code {HOST_NOT_FOUND}} +\entry{TRY{\_}AGAIN}{233}{\code {TRY_AGAIN}} +\entry{NO{\_}RECOVERY}{233}{\code {NO_RECOVERY}} +\entry{NO{\_}ADDRESS}{233}{\code {NO_ADDRESS}} +\entry{IPPORT{\_}RESERVED}{234}{\code {IPPORT_RESERVED}} +\entry{IPPORT{\_}USERRESERVED}{234}{\code {IPPORT_USERRESERVED}} +\entry{PF{\_}NS}{239}{\code {PF_NS}} +\entry{PF{\_}ISO}{239}{\code {PF_ISO}} +\entry{PF{\_}CCITT}{239}{\code {PF_CCITT}} +\entry{PF{\_}IMPLINK}{239}{\code {PF_IMPLINK}} +\entry{PF{\_}ROUTE}{239}{\code {PF_ROUTE}} +\entry{MSG{\_}OOB}{248}{\code {MSG_OOB}} +\entry{MSG{\_}PEEK}{248}{\code {MSG_PEEK}} +\entry{MSG{\_}DONTROUTE}{248}{\code {MSG_DONTROUTE}} +\entry{SOL{\_}SOCKET}{263}{\code {SOL_SOCKET}} +\entry{NCCS}{270}{\code {NCCS}} +\entry{TCSANOW}{270}{\code {TCSANOW}} +\entry{TCSADRAIN}{270}{\code {TCSADRAIN}} +\entry{TCSAFLUSH}{271}{\code {TCSAFLUSH}} +\entry{TCSASOFT}{271}{\code {TCSASOFT}} +\entry{INPCK}{273}{\code {INPCK}} +\entry{IGNPAR}{273}{\code {IGNPAR}} +\entry{PARMRK}{273}{\code {PARMRK}} +\entry{ISTRIP}{273}{\code {ISTRIP}} +\entry{IGNBRK}{274}{\code {IGNBRK}} +\entry{BRKINT}{274}{\code {BRKINT}} +\entry{IGNCR}{274}{\code {IGNCR}} +\entry{ICRNL}{274}{\code {ICRNL}} +\entry{INLCR}{274}{\code {INLCR}} +\entry{IXOFF}{274}{\code {IXOFF}} +\entry{IXON}{274}{\code {IXON}} +\entry{IXANY}{274}{\code {IXANY}} +\entry{IMAXBEL}{275}{\code {IMAXBEL}} +\entry{OPOST}{275}{\code {OPOST}} +\entry{ONLCR}{275}{\code {ONLCR}} +\entry{OXTABS}{275}{\code {OXTABS}} +\entry{ONOEOT}{275}{\code {ONOEOT}} +\entry{CLOCAL}{276}{\code {CLOCAL}} +\entry{HUPCL}{276}{\code {HUPCL}} +\entry{CREAD}{276}{\code {CREAD}} +\entry{CSTOPB}{276}{\code {CSTOPB}} +\entry{PARENB}{276}{\code {PARENB}} +\entry{PARODD}{277}{\code {PARODD}} +\entry{CSIZE}{277}{\code {CSIZE}} +\entry{CS5}{277}{\code {CS5}} +\entry{CS6}{277}{\code {CS6}} +\entry{CS7}{277}{\code {CS7}} +\entry{CS8}{277}{\code {CS8}} +\entry{CCTS{\_}OFLOW}{277}{\code {CCTS_OFLOW}} +\entry{CRTS{\_}IFLOW}{277}{\code {CRTS_IFLOW}} +\entry{MDMBUF}{277}{\code {MDMBUF}} +\entry{CIGNORE}{277}{\code {CIGNORE}} +\entry{ICANON}{278}{\code {ICANON}} +\entry{ECHO}{278}{\code {ECHO}} +\entry{ECHOE}{278}{\code {ECHOE}} +\entry{ECHOPRT}{278}{\code {ECHOPRT}} +\entry{ECHOK}{278}{\code {ECHOK}} +\entry{ECHOKE}{279}{\code {ECHOKE}} +\entry{ECHONL}{279}{\code {ECHONL}} +\entry{ECHOCTL}{279}{\code {ECHOCTL}} +\entry{ISIG}{279}{\code {ISIG}} +\entry{IEXTEN}{279}{\code {IEXTEN}} +\entry{NOFLSH}{280}{\code {NOFLSH}} +\entry{TOSTOP}{280}{\code {TOSTOP}} +\entry{ALTWERASE}{280}{\code {ALTWERASE}} +\entry{FLUSHO}{280}{\code {FLUSHO}} +\entry{NOKERNINFO}{280}{\code {NOKERNINFO}} +\entry{PENDIN}{280}{\code {PENDIN}} +\entry{B0}{282}{\code {B0}} +\entry{B50}{282}{\code {B50}} +\entry{B75}{282}{\code {B75}} +\entry{B110}{282}{\code {B110}} +\entry{B134}{282}{\code {B134}} +\entry{B150}{282}{\code {B150}} +\entry{B200}{282}{\code {B200}} +\entry{B300}{282}{\code {B300}} +\entry{B600}{282}{\code {B600}} +\entry{B1200}{282}{\code {B1200}} +\entry{B1800}{282}{\code {B1800}} +\entry{B2400}{282}{\code {B2400}} +\entry{B4800}{282}{\code {B4800}} +\entry{B9600}{282}{\code {B9600}} +\entry{B19200}{282}{\code {B19200}} +\entry{B38400}{282}{\code {B38400}} +\entry{EXTA}{282}{\code {EXTA}} +\entry{EXTB}{282}{\code {EXTB}} +\entry{{\_}POSIX{\_}VDISABLE}{282}{\code {_POSIX_VDISABLE}} +\entry{VEOF}{283}{\code {VEOF}} +\entry{VEOL}{283}{\code {VEOL}} +\entry{VEOL2}{283}{\code {VEOL2}} +\entry{VERASE}{283}{\code {VERASE}} +\entry{VWERASE}{284}{\code {VWERASE}} +\entry{VKILL}{284}{\code {VKILL}} +\entry{VREPRINT}{284}{\code {VREPRINT}} +\entry{VINTR}{284}{\code {VINTR}} +\entry{VQUIT}{285}{\code {VQUIT}} +\entry{VSUSP}{285}{\code {VSUSP}} +\entry{VDSUSP}{285}{\code {VDSUSP}} +\entry{VSTART}{286}{\code {VSTART}} +\entry{VSTOP}{286}{\code {VSTOP}} +\entry{VLNEXT}{286}{\code {VLNEXT}} +\entry{VDISCARD}{287}{\code {VDISCARD}} +\entry{VSTATUS}{287}{\code {VSTATUS}} +\entry{VMIN}{287}{\code {VMIN}} +\entry{VTIME}{287}{\code {VTIME}} +\entry{TCIFLUSH}{290}{\code {TCIFLUSH}} +\entry{TCOFLUSH}{290}{\code {TCOFLUSH}} +\entry{TCIOFLUSH}{290}{\code {TCIOFLUSH}} +\entry{TCOOFF}{290}{\code {TCOOFF}} +\entry{TCOON}{290}{\code {TCOON}} +\entry{TCIOFF}{290}{\code {TCIOFF}} +\entry{TCION}{290}{\code {TCION}} +\entry{EBADF}{291}{\code {EBADF}} +\entry{ENOTTY}{291}{\code {ENOTTY}} +\entry{EINVAL}{291}{\code {EINVAL}} +\entry{HUGE{\_}VAL}{294}{\code {HUGE_VAL}} +\entry{HUGE{\_}VALf}{294}{\code {HUGE_VALf}} +\entry{HUGE{\_}VALl}{294}{\code {HUGE_VALl}} +\entry{RAND{\_}MAX}{298}{\code {RAND_MAX}} +\entry{NAN}{301}{\code {NAN}} +\entry{CLOCKS{\_}PER{\_}SEC}{336}{\code {CLOCKS_PER_SEC}} +\entry{CLK{\_}TCK}{336}{\code {CLK_TCK}} +\entry{tzname}{350}{\code {tzname}} +\entry{timezone}{351}{\code {timezone}} +\entry{daylight}{351}{\code {daylight}} +\entry{RLIMIT{\_}CPU}{358}{\code {RLIMIT_CPU}} +\entry{RLIMIT{\_}FSIZE}{359}{\code {RLIMIT_FSIZE}} +\entry{RLIMIT{\_}DATA}{359}{\code {RLIMIT_DATA}} +\entry{RLIMIT{\_}STACK}{359}{\code {RLIMIT_STACK}} +\entry{RLIMIT{\_}CORE}{359}{\code {RLIMIT_CORE}} +\entry{RLIMIT{\_}RSS}{359}{\code {RLIMIT_RSS}} +\entry{RLIMIT{\_}NOFILE}{359}{\code {RLIMIT_NOFILE}} +\entry{RLIMIT{\_}OFILE}{359}{\code {RLIMIT_OFILE}} +\entry{RLIM{\_}NLIMITS}{359}{\code {RLIM_NLIMITS}} +\entry{int}{359}{\code {int}} +\entry{PRIO{\_}MIN}{360}{\code {PRIO_MIN}} +\entry{PRIO{\_}MAX}{360}{\code {PRIO_MAX}} +\entry{PRIO{\_}PROCESS}{361}{\code {PRIO_PROCESS}} +\entry{PRIO{\_}PGRP}{361}{\code {PRIO_PGRP}} +\entry{PRIO{\_}USER}{361}{\code {PRIO_USER}} +\entry{MB{\_}LEN{\_}MAX}{366}{\code {MB_LEN_MAX}} +\entry{MB{\_}CUR{\_}MAX}{366}{\code {MB_CUR_MAX}} +\entry{LC{\_}COLLATE}{376}{\code {LC_COLLATE}} +\entry{LC{\_}CTYPE}{376}{\code {LC_CTYPE}} +\entry{LC{\_}MONETARY}{377}{\code {LC_MONETARY}} +\entry{LC{\_}NUMERIC}{377}{\code {LC_NUMERIC}} +\entry{LC{\_}TIME}{377}{\code {LC_TIME}} +\entry{LC{\_}MESSAGES}{377}{\code {LC_MESSAGES}} +\entry{LC{\_}ALL}{377}{\code {LC_ALL}} +\entry{LANG}{377}{\code {LANG}} +\entry{NSIG}{392}{\code {NSIG}} +\entry{COREFILE}{392}{\code {COREFILE}} +\entry{SIGFPE}{392}{\code {SIGFPE}} +\entry{FPE{\_}INTOVF{\_}TRAP}{393}{\code {FPE_INTOVF_TRAP}} +\entry{FPE{\_}INTDIV{\_}TRAP}{393}{\code {FPE_INTDIV_TRAP}} +\entry{FPE{\_}SUBRNG{\_}TRAP}{393}{\code {FPE_SUBRNG_TRAP}} +\entry{FPE{\_}FLTOVF{\_}TRAP}{393}{\code {FPE_FLTOVF_TRAP}} +\entry{FPE{\_}FLTDIV{\_}TRAP}{393}{\code {FPE_FLTDIV_TRAP}} +\entry{FPE{\_}FLTUND{\_}TRAP}{393}{\code {FPE_FLTUND_TRAP}} +\entry{FPE{\_}DECOVF{\_}TRAP}{393}{\code {FPE_DECOVF_TRAP}} +\entry{SIGILL}{394}{\code {SIGILL}} +\entry{SIGSEGV}{394}{\code {SIGSEGV}} +\entry{SIGBUS}{394}{\code {SIGBUS}} +\entry{SIGABRT}{394}{\code {SIGABRT}} +\entry{SIGIOT}{394}{\code {SIGIOT}} +\entry{SIGTRAP}{395}{\code {SIGTRAP}} +\entry{SIGEMT}{395}{\code {SIGEMT}} +\entry{SIGSYS}{395}{\code {SIGSYS}} +\entry{SIGTERM}{395}{\code {SIGTERM}} +\entry{SIGINT}{395}{\code {SIGINT}} +\entry{SIGQUIT}{396}{\code {SIGQUIT}} +\entry{SIGKILL}{396}{\code {SIGKILL}} +\entry{SIGHUP}{396}{\code {SIGHUP}} +\entry{SIGALRM}{397}{\code {SIGALRM}} +\entry{SIGVTALRM}{397}{\code {SIGVTALRM}} +\entry{SIGPROF}{397}{\code {SIGPROF}} +\entry{SIGIO}{397}{\code {SIGIO}} +\entry{SIGURG}{397}{\code {SIGURG}} +\entry{SIGPOLL}{398}{\code {SIGPOLL}} +\entry{SIGCHLD}{398}{\code {SIGCHLD}} +\entry{SIGCLD}{398}{\code {SIGCLD}} +\entry{SIGCONT}{398}{\code {SIGCONT}} +\entry{SIGSTOP}{398}{\code {SIGSTOP}} +\entry{SIGTSTP}{398}{\code {SIGTSTP}} +\entry{SIGTTIN}{399}{\code {SIGTTIN}} +\entry{SIGTTOU}{399}{\code {SIGTTOU}} +\entry{SIGPIPE}{400}{\code {SIGPIPE}} +\entry{SIGLOST}{400}{\code {SIGLOST}} +\entry{SIGXCPU}{400}{\code {SIGXCPU}} +\entry{SIGXFSZ}{400}{\code {SIGXFSZ}} +\entry{SIGUSR1}{400}{\code {SIGUSR1}} +\entry{SIGUSR2}{400}{\code {SIGUSR2}} +\entry{SIGWINCH}{401}{\code {SIGWINCH}} +\entry{SIGINFO}{401}{\code {SIGINFO}} +\entry{sys{\_}siglist}{402}{\code {sys_siglist}} +\entry{SIG{\_}DFL}{403}{\code {SIG_DFL}} +\entry{SIG{\_}IGN}{403}{\code {SIG_IGN}} +\entry{SIG{\_}ERR}{404}{\code {SIG_ERR}} +\entry{SA{\_}NOCLDSTOP}{408}{\code {SA_NOCLDSTOP}} +\entry{SA{\_}ONSTACK}{408}{\code {SA_ONSTACK}} +\entry{SA{\_}RESTART}{408}{\code {SA_RESTART}} +\entry{SIG{\_}BLOCK}{430}{\code {SIG_BLOCK}} +\entry{SIG{\_}UNBLOCK}{430}{\code {SIG_UNBLOCK}} +\entry{SIG{\_}SETMASK}{430}{\code {SIG_SETMASK}} +\entry{SIGSTKSZ}{438}{\code {SIGSTKSZ}} +\entry{MINSIGSTKSZ}{438}{\code {MINSIGSTKSZ}} +\entry{SA{\_}DISABLE}{438}{\code {SA_DISABLE}} +\entry{SA{\_}ONSTACK}{438}{\code {SA_ONSTACK}} +\entry{SIGSTKSZ}{439}{\code {SIGSTKSZ}} +\entry{MINSIGSTKSZ}{439}{\code {MINSIGSTKSZ}} +\entry{SA{\_}DISABLE}{439}{\code {SA_DISABLE}} +\entry{SA{\_}ONSTACK}{439}{\code {SA_ONSTACK}} +\entry{SV{\_}ONSTACK}{441}{\code {SV_ONSTACK}} +\entry{SV{\_}INTERRUPT}{441}{\code {SV_INTERRUPT}} +\entry{SV{\_}RESETHAND}{442}{\code {SV_RESETHAND}} +\entry{opterr}{445}{\code {opterr}} +\entry{optopt}{445}{\code {optopt}} +\entry{optind}{445}{\code {optind}} +\entry{optarg}{445}{\code {optarg}} +\entry{environ}{456}{\code {environ}} +\entry{EXIT{\_}SUCCESS}{459}{\code {EXIT_SUCCESS}} +\entry{EXIT{\_}FAILURE}{459}{\code {EXIT_FAILURE}} +\entry{L{\_}ctermid}{494}{\code {L_ctermid}} +\entry{ethers}{497}{\code {ethers}} +\entry{group}{497}{\code {group}} +\entry{hosts}{497}{\code {hosts}} +\entry{netgroup}{497}{\code {netgroup}} +\entry{network}{497}{\code {network}} +\entry{protocols}{497}{\code {protocols}} +\entry{passwd}{497}{\code {passwd}} +\entry{rpc}{497}{\code {rpc}} +\entry{services}{497}{\code {services}} +\entry{shadow}{497}{\code {shadow}} +\entry{ethers}{497}{\code {ethers}} +\entry{group}{497}{\code {group}} +\entry{hosts}{497}{\code {hosts}} +\entry{netgroup}{497}{\code {netgroup}} +\entry{network}{497}{\code {network}} +\entry{protocols}{498}{\code {protocols}} +\entry{passwd}{498}{\code {passwd}} +\entry{rpc}{498}{\code {rpc}} +\entry{services}{498}{\code {services}} +\entry{shadow}{498}{\code {shadow}} +\entry{NSS{\_}STATUS{\_}TRYAGAIN}{502}{\code {NSS_STATUS_TRYAGAIN}} +\entry{NSS{\_}STATUS{\_}UNAVAIL}{502}{\code {NSS_STATUS_UNAVAIL}} +\entry{NSS{\_}STATUS{\_}NOTFOUND}{502}{\code {NSS_STATUS_NOTFOUND}} +\entry{NSS{\_}STATUS{\_}SUCCESS}{502}{\code {NSS_STATUS_SUCCESS}} +\entry{L{\_}cuserid}{517}{\code {L_cuserid}} +\entry{ARG{\_}MAX}{533}{\code {ARG_MAX}} +\entry{CHILD{\_}MAX}{533}{\code {CHILD_MAX}} +\entry{OPEN{\_}MAX}{533}{\code {OPEN_MAX}} +\entry{STREAM{\_}MAX}{533}{\code {STREAM_MAX}} +\entry{TZNAME{\_}MAX}{534}{\code {TZNAME_MAX}} +\entry{NGROUPS{\_}MAX}{534}{\code {NGROUPS_MAX}} +\entry{SSIZE{\_}MAX}{534}{\code {SSIZE_MAX}} +\entry{RE{\_}DUP{\_}MAX}{534}{\code {RE_DUP_MAX}} +\entry{{\_}POSIX{\_}JOB{\_}CONTROL}{535}{\code {_POSIX_JOB_CONTROL}} +\entry{{\_}POSIX{\_}SAVED{\_}IDS}{535}{\code {_POSIX_SAVED_IDS}} +\entry{{\_}POSIX2{\_}C{\_}DEV}{535}{\code {_POSIX2_C_DEV}} +\entry{{\_}POSIX2{\_}FORT{\_}DEV}{535}{\code {_POSIX2_FORT_DEV}} +\entry{{\_}POSIX2{\_}FORT{\_}RUN}{535}{\code {_POSIX2_FORT_RUN}} +\entry{{\_}POSIX2{\_}LOCALEDEF}{535}{\code {_POSIX2_LOCALEDEF}} +\entry{{\_}POSIX2{\_}SW{\_}DEV}{536}{\code {_POSIX2_SW_DEV}} +\entry{{\_}POSIX{\_}VERSION}{536}{\code {_POSIX_VERSION}} +\entry{{\_}POSIX2{\_}C{\_}VERSION}{536}{\code {_POSIX2_C_VERSION}} +\entry{LINK{\_}MAX}{541}{\code {LINK_MAX}} +\entry{MAX{\_}CANON}{541}{\code {MAX_CANON}} +\entry{MAX{\_}INPUT}{541}{\code {MAX_INPUT}} +\entry{NAME{\_}MAX}{541}{\code {NAME_MAX}} +\entry{PATH{\_}MAX}{542}{\code {PATH_MAX}} +\entry{PIPE{\_}BUF}{542}{\code {PIPE_BUF}} +\entry{MAXNAMLEN}{542}{\code {MAXNAMLEN}} +\entry{FILENAME{\_}MAX}{542}{\code {FILENAME_MAX}} +\entry{{\_}POSIX{\_}CHOWN{\_}RESTRICTED}{543}{\code {_POSIX_CHOWN_RESTRICTED}} +\entry{{\_}POSIX{\_}NO{\_}TRUNC}{543}{\code {_POSIX_NO_TRUNC}} +\entry{{\_}POSIX{\_}VDISABLE}{543}{\code {_POSIX_VDISABLE}} +\entry{BC{\_}BASE{\_}MAX}{545}{\code {BC_BASE_MAX}} +\entry{BC{\_}SCALE{\_}MAX}{545}{\code {BC_SCALE_MAX}} +\entry{BC{\_}DIM{\_}MAX}{546}{\code {BC_DIM_MAX}} +\entry{BC{\_}STRING{\_}MAX}{546}{\code {BC_STRING_MAX}} +\entry{BC{\_}DIM{\_}MAX}{546}{\code {BC_DIM_MAX}} +\entry{COLL{\_}WEIGHTS{\_}MAX}{546}{\code {COLL_WEIGHTS_MAX}} +\entry{EXPR{\_}NEST{\_}MAX}{546}{\code {EXPR_NEST_MAX}} +\entry{LINE{\_}MAX}{546}{\code {LINE_MAX}} +\entry{EQUIV{\_}CLASS{\_}MAX}{546}{\code {EQUIV_CLASS_MAX}} +\entry{NDEBUG}{549}{\code {NDEBUG}} +\entry{NULL}{557}{\code {NULL}} diff -durpN glibc-2.0.1/manual/libc.vrs glibc-2.0.2/manual/libc.vrs --- glibc-2.0.1/manual/libc.vrs Mon Nov 4 17:58:25 1996 +++ glibc-2.0.2/manual/libc.vrs Tue Mar 18 22:30:15 1997 @@ -1,555 +1,556 @@ \initial {{\_}} -\entry {\code {{\_}{\_}free{\_}hook}}{39} -\entry {\code {{\_}{\_}malloc{\_}hook}}{39} -\entry {\code {{\_}{\_}realloc{\_}hook}}{39} -\entry {\code {{\_}BSD{\_}SOURCE}}{8} -\entry {\code {{\_}GNU{\_}SOURCE}}{9} -\entry {\code {{\_}IOFBF \relax }}{137} -\entry {\code {{\_}IOLBF \relax }}{137} -\entry {\code {{\_}IONBF \relax }}{137} -\entry {\code {{\_}POSIX{\_}C{\_}SOURCE}}{8} -\entry {\code {{\_}POSIX{\_}CHOWN{\_}RESTRICTED \relax }}{538} -\entry {\code {{\_}POSIX{\_}JOB{\_}CONTROL \relax }}{531} -\entry {\code {{\_}POSIX{\_}NO{\_}TRUNC \relax }}{539} -\entry {\code {{\_}POSIX{\_}SAVED{\_}IDS \relax }}{531} -\entry {\code {{\_}POSIX{\_}SOURCE}}{8} -\entry {\code {{\_}POSIX{\_}VDISABLE}}{276} -\entry {\code {{\_}POSIX{\_}VDISABLE \relax }}{539} -\entry {\code {{\_}POSIX{\_}VERSION \relax }}{532} -\entry {\code {{\_}POSIX2{\_}C{\_}DEV \relax }}{531} -\entry {\code {{\_}POSIX2{\_}C{\_}VERSION \relax }}{532} -\entry {\code {{\_}POSIX2{\_}FORT{\_}DEV \relax }}{531} -\entry {\code {{\_}POSIX2{\_}FORT{\_}RUN \relax }}{531} -\entry {\code {{\_}POSIX2{\_}LOCALEDEF \relax }}{532} -\entry {\code {{\_}POSIX2{\_}SW{\_}DEV \relax }}{532} -\entry {\code {{\_}REENTRANT,{\_}THREAD{\_}SAFE}}{10} -\entry {\code {{\_}SVID{\_}SOURCE}}{9} -\entry {\code {{\_}XOPEN{\_}SOURCE}}{9} +\entry {\code {__free_hook}}{39} +\entry {\code {__malloc_hook}}{39} +\entry {\code {__realloc_hook}}{39} +\entry {\code {_BSD_SOURCE}}{8} +\entry {\code {_GNU_SOURCE}}{9} +\entry {\code {_IOFBF}}{140} +\entry {\code {_IOLBF}}{140} +\entry {\code {_IONBF}}{140} +\entry {\code {_POSIX_C_SOURCE}}{8} +\entry {\code {_POSIX_CHOWN_RESTRICTED}}{543} +\entry {\code {_POSIX_JOB_CONTROL}}{535} +\entry {\code {_POSIX_NO_TRUNC}}{543} +\entry {\code {_POSIX_SAVED_IDS}}{535} +\entry {\code {_POSIX_SOURCE}}{8} +\entry {\code {_POSIX_VDISABLE}}{282, 543} +\entry {\code {_POSIX_VERSION}}{536} +\entry {\code {_POSIX2_C_DEV}}{535} +\entry {\code {_POSIX2_C_VERSION}}{536} +\entry {\code {_POSIX2_FORT_DEV}}{535} +\entry {\code {_POSIX2_FORT_RUN}}{535} +\entry {\code {_POSIX2_LOCALEDEF}}{535} +\entry {\code {_POSIX2_SW_DEV}}{536} +\entry {\code {_REENTRANT}}{10} +\entry {\code {_SVID_SOURCE}}{9} +\entry {\code {_THREAD_SAFE}}{10} +\entry {\code {_XOPEN_SOURCE}}{9} \initial {A} -\entry {\code {AF{\_}FILE}}{216} -\entry {\code {AF{\_}INET}}{216} -\entry {\code {AF{\_}UNIX}}{216} -\entry {\code {AF{\_}UNSPEC}}{217} -\entry {\code {ALTWERASE \relax }}{274} -\entry {\code {ARG{\_}MAX \relax }}{529} +\entry {\code {AF_FILE}}{222} +\entry {\code {AF_INET}}{222} +\entry {\code {AF_UNIX}}{222} +\entry {\code {AF_UNSPEC}}{222} +\entry {\code {ALTWERASE}}{280} +\entry {\code {ARG_MAX}}{533} \initial {B} -\entry {\code {B0}}{276} -\entry {\code {B110}}{276} -\entry {\code {B1200}}{276} -\entry {\code {B134}}{276} -\entry {\code {B150}}{276} -\entry {\code {B1800}}{276} -\entry {\code {B19200}}{276} -\entry {\code {B200}}{276} -\entry {\code {B2400}}{276} -\entry {\code {B300}}{276} -\entry {\code {B38400}}{276} -\entry {\code {B4800}}{276} -\entry {\code {B50}}{276} -\entry {\code {B600}}{276} -\entry {\code {B75}}{276} -\entry {\code {B9600}}{276} -\entry {\code {BC{\_}BASE{\_}MAX \relax }}{541} -\entry {\code {BC{\_}DIM{\_}MAX \relax }}{542} -\entry {\code {BC{\_}SCALE{\_}MAX \relax }}{541} -\entry {\code {BC{\_}STRING{\_}MAX \relax }}{542} -\entry {\code {BRKINT \relax }}{268} -\entry {\code {BUFSIZ \relax }}{137} +\entry {\code {B0}}{282} +\entry {\code {B110}}{282} +\entry {\code {B1200}}{282} +\entry {\code {B134}}{282} +\entry {\code {B150}}{282} +\entry {\code {B1800}}{282} +\entry {\code {B19200}}{282} +\entry {\code {B200}}{282} +\entry {\code {B2400}}{282} +\entry {\code {B300}}{282} +\entry {\code {B38400}}{282} +\entry {\code {B4800}}{282} +\entry {\code {B50}}{282} +\entry {\code {B600}}{282} +\entry {\code {B75}}{282} +\entry {\code {B9600}}{282} +\entry {\code {BC_BASE_MAX}}{545} +\entry {\code {BC_DIM_MAX}}{546} +\entry {\code {BC_SCALE_MAX}}{545} +\entry {\code {BC_STRING_MAX}}{546} +\entry {\code {BRKINT}}{274} +\entry {\code {BUFSIZ}}{140} \initial {C} -\entry {\code {CCTS{\_}OFLOW \relax }}{271} -\entry {\code {CHILD{\_}MAX \relax }}{529} -\entry {\code {CIGNORE \relax }}{271} -\entry {\code {CLK{\_}TCK \relax }}{330} -\entry {\code {CLOCAL \relax }}{270} -\entry {\code {CLOCKS{\_}PER{\_}SEC \relax }}{330} -\entry {\code {COLL{\_}WEIGHTS{\_}MAX \relax }}{542} -\entry {\code {COREFILE}}{386} -\entry {\code {CREAD \relax }}{270} -\entry {\code {CRTS{\_}IFLOW \relax }}{271} -\entry {\code {CS5 \relax }}{271} -\entry {\code {CS6 \relax }}{271} -\entry {\code {CS7 \relax }}{271} -\entry {\code {CS8 \relax }}{271} -\entry {\code {CSIZE \relax }}{271} -\entry {\code {CSTOPB \relax }}{270} +\entry {\code {CCTS_OFLOW}}{277} +\entry {\code {CHILD_MAX}}{533} +\entry {\code {CIGNORE}}{277} +\entry {\code {CLK_TCK}}{336} +\entry {\code {CLOCAL}}{276} +\entry {\code {CLOCKS_PER_SEC}}{336} +\entry {\code {COLL_WEIGHTS_MAX}}{546} +\entry {\code {COREFILE}}{392} +\entry {\code {CREAD}}{276} +\entry {\code {CRTS_IFLOW}}{277} +\entry {\code {CS5}}{277} +\entry {\code {CS6}}{277} +\entry {\code {CS7}}{277} +\entry {\code {CS8}}{277} +\entry {\code {CSIZE}}{277} +\entry {\code {CSTOPB}}{276} \initial {D} -\entry {\code {daylight \relax }}{345} +\entry {\code {daylight}}{351} \initial {E} -\entry {\code {E2BIG \relax }}{17} -\entry {\code {EACCES \relax }}{18} -\entry {\code {EADDRINUSE \relax }}{22} -\entry {\code {EADDRNOTAVAIL \relax }}{22} -\entry {\code {EADV \relax }}{26} -\entry {\code {EAFNOSUPPORT \relax }}{22} -\entry {\code {EAGAIN \relax }}{20} -\entry {\code {EALREADY \relax }}{21} -\entry {\code {EAUTH \relax }}{24} -\entry {\code {EBACKGROUND \relax }}{25} -\entry {\code {EBADE \relax }}{26} -\entry {\code {EBADF}}{285} -\entry {\code {EBADF \relax }}{17} -\entry {\code {EBADFD \relax }}{26} -\entry {\code {EBADMSG \relax }}{26} -\entry {\code {EBADR \relax }}{26} -\entry {\code {EBADRPC \relax }}{24} -\entry {\code {EBADRQC \relax }}{26} -\entry {\code {EBADSLT \relax }}{26} -\entry {\code {EBFONT \relax }}{26} -\entry {\code {EBUSY \relax }}{18} -\entry {\code {ECHILD \relax }}{17} -\entry {\code {ECHO \relax }}{272} -\entry {\code {ECHOCTL \relax }}{273} -\entry {\code {ECHOE \relax }}{272} -\entry {\code {ECHOK \relax }}{272} -\entry {\code {ECHOKE \relax }}{273} -\entry {\code {ECHONL \relax }}{273} -\entry {\code {ECHOPRT \relax }}{272} -\entry {\code {ECHRNG \relax }}{25} -\entry {\code {ECOMM \relax }}{26} -\entry {\code {ECONNABORTED \relax }}{22} -\entry {\code {ECONNREFUSED \relax }}{23} -\entry {\code {ECONNRESET \relax }}{22} -\entry {\code {ED \relax }}{25} -\entry {\code {EDEADLK \relax }}{17} -\entry {\code {EDEADLOCK \relax }}{26} -\entry {\code {EDESTADDRREQ \relax }}{23} -\entry {\code {EDIED \relax }}{25} -\entry {\code {EDOM \relax }}{20} -\entry {\code {EDOTDOT \relax }}{26} -\entry {\code {EDQUOT \relax }}{24} -\entry {\code {EEXIST \relax }}{18} -\entry {\code {EFAULT \relax }}{18} -\entry {\code {EFBIG \relax }}{19} -\entry {\code {EFTYPE \relax }}{24} -\entry {\code {EGRATUITOUS \relax }}{25} -\entry {\code {EGREGIOUS \relax }}{25} -\entry {\code {EHOSTDOWN \relax }}{23} -\entry {\code {EHOSTUNREACH \relax }}{23} -\entry {\code {EIDRM \relax }}{25} -\entry {\code {EIEIO \relax }}{25} -\entry {\code {EILSEQ \relax }}{25} -\entry {\code {EINPROGRESS \relax }}{21} -\entry {\code {EINTR \relax }}{17} -\entry {\code {EINVAL}}{285} -\entry {\code {EINVAL \relax }}{19} -\entry {\code {EIO \relax }}{17} -\entry {\code {EISCONN \relax }}{22} -\entry {\code {EISDIR \relax }}{18} -\entry {\code {EISNAM \relax }}{27} -\entry {\code {EL2HLT \relax }}{26} -\entry {\code {EL2NSYNC \relax }}{25} -\entry {\code {EL3HLT \relax }}{25} -\entry {\code {EL3RST \relax }}{26} -\entry {\code {ELIBACC \relax }}{27} -\entry {\code {ELIBBAD \relax }}{27} -\entry {\code {ELIBEXEC \relax }}{27} -\entry {\code {ELIBMAX \relax }}{27} -\entry {\code {ELIBSCN \relax }}{27} -\entry {\code {ELNRNG \relax }}{26} -\entry {\code {ELOOP \relax }}{23} -\entry {\code {EMFILE \relax }}{19} -\entry {\code {EMLINK \relax }}{19} -\entry {\code {EMSGSIZE \relax }}{21} -\entry {\code {EMULTIHOP \relax }}{26} -\entry {\code {ENAMETOOLONG \relax }}{23} -\entry {\code {ENAVAIL \relax }}{27} -\entry {\code {ENEEDAUTH \relax }}{24} -\entry {\code {ENETDOWN \relax }}{22} -\entry {\code {ENETRESET \relax }}{22} -\entry {\code {ENETUNREACH \relax }}{22} -\entry {\code {ENFILE \relax }}{19} -\entry {\code {ENOANO \relax }}{26} -\entry {\code {ENOBUFS \relax }}{22} -\entry {\code {ENOCSI \relax }}{26} -\entry {\code {ENODATA \relax }}{26} -\entry {\code {ENODEV \relax }}{18} -\entry {\code {ENOENT \relax }}{17} -\entry {\code {ENOEXEC \relax }}{17} -\entry {\code {ENOLCK \relax }}{24} -\entry {\code {ENOLINK \relax }}{26} -\entry {\code {ENOMEM \relax }}{18} -\entry {\code {ENOMSG \relax }}{25} -\entry {\code {ENONET \relax }}{26} -\entry {\code {ENOPKG \relax }}{26} -\entry {\code {ENOPROTOOPT \relax }}{21} -\entry {\code {ENOSPC \relax }}{19} -\entry {\code {ENOSR \relax }}{26} -\entry {\code {ENOSTR \relax }}{26} -\entry {\code {ENOSYS \relax }}{25} -\entry {\code {ENOTBLK \relax }}{18} -\entry {\code {ENOTCONN \relax }}{22} -\entry {\code {ENOTDIR \relax }}{18} -\entry {\code {ENOTEMPTY \relax }}{23} -\entry {\code {ENOTNAM \relax }}{27} -\entry {\code {ENOTSOCK \relax }}{21} -\entry {\code {ENOTTY}}{285} -\entry {\code {ENOTTY \relax }}{19} -\entry {\code {ENOTUNIQ \relax }}{26} -\entry {\code {environ \relax }}{449} -\entry {\code {ENXIO \relax }}{17} -\entry {\code {EOF \relax }}{130} -\entry {\code {EOPNOTSUPP \relax }}{21} -\entry {\code {EOVERFLOW \relax }}{26} -\entry {\code {EPERM \relax }}{16} -\entry {\code {EPFNOSUPPORT \relax }}{22} -\entry {\code {EPIPE \relax }}{20} -\entry {\code {EPROCLIM \relax }}{23} -\entry {\code {EPROCUNAVAIL \relax }}{24} -\entry {\code {EPROGMISMATCH \relax }}{24} -\entry {\code {EPROGUNAVAIL \relax }}{24} -\entry {\code {EPROTO \relax }}{26} -\entry {\code {EPROTONOSUPPORT \relax }}{21} -\entry {\code {EPROTOTYPE \relax }}{21} -\entry {\code {EQUIV{\_}CLASS{\_}MAX \relax }}{542} -\entry {\code {ERANGE \relax }}{20} -\entry {\code {EREMCHG \relax }}{27} -\entry {\code {EREMOTE \relax }}{24} -\entry {\code {EREMOTEIO \relax }}{27} -\entry {\code {ERESTART \relax }}{25} -\entry {\code {EROFS \relax }}{19} -\entry {\code {ERPCMISMATCH \relax }}{24} -\entry {\code {errno \relax }}{15} -\entry {\code {ESHUTDOWN \relax }}{23} -\entry {\code {ESOCKTNOSUPPORT \relax }}{21} -\entry {\code {ESPIPE \relax }}{19} -\entry {\code {ESRCH \relax }}{17} -\entry {\code {ESRMNT \relax }}{26} -\entry {\code {ESTALE \relax }}{24} -\entry {\code {ESTRPIPE \relax }}{27} -\entry {\code {ethers}}{493} -\entry {\code {ETIME \relax }}{26} -\entry {\code {ETIMEDOUT \relax }}{23} -\entry {\code {ETOOMANYREFS \relax }}{23} -\entry {\code {ETXTBSY \relax }}{19} -\entry {\code {EUCLEAN \relax }}{27} -\entry {\code {EUNATCH \relax }}{26} -\entry {\code {EUSERS \relax }}{23} -\entry {\code {EWOULDBLOCK \relax }}{20} -\entry {\code {EXDEV \relax }}{18} -\entry {\code {EXFULL \relax }}{26} -\entry {\code {EXIT{\_}FAILURE \relax }}{452} -\entry {\code {EXIT{\_}SUCCESS \relax }}{452} -\entry {\code {EXPR{\_}NEST{\_}MAX \relax }}{542} -\entry {\code {EXTA}}{276} -\entry {\code {EXTB}}{276} +\entry {\code {E2BIG}}{17} +\entry {\code {EACCES}}{18} +\entry {\code {EADDRINUSE}}{22} +\entry {\code {EADDRNOTAVAIL}}{22} +\entry {\code {EADV}}{26} +\entry {\code {EAFNOSUPPORT}}{22} +\entry {\code {EAGAIN}}{20} +\entry {\code {EALREADY}}{21} +\entry {\code {EAUTH}}{24} +\entry {\code {EBACKGROUND}}{25} +\entry {\code {EBADE}}{26} +\entry {\code {EBADF}}{17, 291} +\entry {\code {EBADFD}}{26} +\entry {\code {EBADMSG}}{25} +\entry {\code {EBADR}}{26} +\entry {\code {EBADRPC}}{24} +\entry {\code {EBADRQC}}{26} +\entry {\code {EBADSLT}}{26} +\entry {\code {EBFONT}}{26} +\entry {\code {EBUSY}}{18} +\entry {\code {ECHILD}}{17} +\entry {\code {ECHO}}{278} +\entry {\code {ECHOCTL}}{279} +\entry {\code {ECHOE}}{278} +\entry {\code {ECHOK}}{278} +\entry {\code {ECHOKE}}{279} +\entry {\code {ECHONL}}{279} +\entry {\code {ECHOPRT}}{278} +\entry {\code {ECHRNG}}{26} +\entry {\code {ECOMM}}{26} +\entry {\code {ECONNABORTED}}{22} +\entry {\code {ECONNREFUSED}}{23} +\entry {\code {ECONNRESET}}{22} +\entry {\code {ED}}{25} +\entry {\code {EDEADLK}}{17} +\entry {\code {EDEADLOCK}}{26} +\entry {\code {EDESTADDRREQ}}{23} +\entry {\code {EDIED}}{25} +\entry {\code {EDOM}}{20} +\entry {\code {EDOTDOT}}{26} +\entry {\code {EDQUOT}}{23} +\entry {\code {EEXIST}}{18} +\entry {\code {EFAULT}}{18} +\entry {\code {EFBIG}}{19} +\entry {\code {EFTYPE}}{24} +\entry {\code {EGRATUITOUS}}{25} +\entry {\code {EGREGIOUS}}{25} +\entry {\code {EHOSTDOWN}}{23} +\entry {\code {EHOSTUNREACH}}{23} +\entry {\code {EIDRM}}{25} +\entry {\code {EIEIO}}{25} +\entry {\code {EILSEQ}}{25} +\entry {\code {EINPROGRESS}}{20} +\entry {\code {EINTR}}{17} +\entry {\code {EINVAL}}{18, 291} +\entry {\code {EIO}}{17} +\entry {\code {EISCONN}}{22} +\entry {\code {EISDIR}}{18} +\entry {\code {EISNAM}}{27} +\entry {\code {EL2HLT}}{26} +\entry {\code {EL2NSYNC}}{26} +\entry {\code {EL3HLT}}{26} +\entry {\code {EL3RST}}{26} +\entry {\code {ELIBACC}}{26} +\entry {\code {ELIBBAD}}{26} +\entry {\code {ELIBEXEC}}{27} +\entry {\code {ELIBMAX}}{27} +\entry {\code {ELIBSCN}}{27} +\entry {\code {ELNRNG}}{26} +\entry {\code {ELOOP}}{23} +\entry {\code {EMFILE}}{19} +\entry {\code {EMLINK}}{19} +\entry {\code {EMSGSIZE}}{21} +\entry {\code {EMULTIHOP}}{25} +\entry {\code {ENAMETOOLONG}}{23} +\entry {\code {ENAVAIL}}{27} +\entry {\code {ENEEDAUTH}}{24} +\entry {\code {ENETDOWN}}{22} +\entry {\code {ENETRESET}}{22} +\entry {\code {ENETUNREACH}}{22} +\entry {\code {ENFILE}}{19} +\entry {\code {ENOANO}}{26} +\entry {\code {ENOBUFS}}{22} +\entry {\code {ENOCSI}}{26} +\entry {\code {ENODATA}}{25} +\entry {\code {ENODEV}}{18} +\entry {\code {ENOENT}}{16} +\entry {\code {ENOEXEC}}{17} +\entry {\code {ENOLCK}}{24} +\entry {\code {ENOLINK}}{25} +\entry {\code {ENOMEM}}{18} +\entry {\code {ENOMSG}}{25} +\entry {\code {ENONET}}{26} +\entry {\code {ENOPKG}}{26} +\entry {\code {ENOPROTOOPT}}{21} +\entry {\code {ENOSPC}}{19} +\entry {\code {ENOSR}}{25} +\entry {\code {ENOSTR}}{25} +\entry {\code {ENOSYS}}{24} +\entry {\code {ENOTBLK}}{18} +\entry {\code {ENOTCONN}}{22} +\entry {\code {ENOTDIR}}{18} +\entry {\code {ENOTEMPTY}}{23} +\entry {\code {ENOTNAM}}{27} +\entry {\code {ENOTSOCK}}{21} +\entry {\code {ENOTTY}}{19, 291} +\entry {\code {ENOTUNIQ}}{26} +\entry {\code {environ}}{456} +\entry {\code {ENXIO}}{17} +\entry {\code {EOF}}{133} +\entry {\code {EOPNOTSUPP}}{21} +\entry {\code {EOVERFLOW}}{25} +\entry {\code {EPERM}}{16} +\entry {\code {EPFNOSUPPORT}}{21} +\entry {\code {EPIPE}}{19} +\entry {\code {EPROCLIM}}{23} +\entry {\code {EPROCUNAVAIL}}{24} +\entry {\code {EPROGMISMATCH}}{24} +\entry {\code {EPROGUNAVAIL}}{24} +\entry {\code {EPROTO}}{25} +\entry {\code {EPROTONOSUPPORT}}{21} +\entry {\code {EPROTOTYPE}}{21} +\entry {\code {EQUIV_CLASS_MAX}}{546} +\entry {\code {ERANGE}}{20} +\entry {\code {EREMCHG}}{26} +\entry {\code {EREMOTE}}{24} +\entry {\code {EREMOTEIO}}{27} +\entry {\code {ERESTART}}{26} +\entry {\code {EROFS}}{19} +\entry {\code {ERPCMISMATCH}}{24} +\entry {\code {errno}}{15} +\entry {\code {ESHUTDOWN}}{23} +\entry {\code {ESOCKTNOSUPPORT}}{21} +\entry {\code {ESPIPE}}{19} +\entry {\code {ESRCH}}{17} +\entry {\code {ESRMNT}}{26} +\entry {\code {ESTALE}}{24} +\entry {\code {ESTRPIPE}}{27} +\entry {\code {ethers}}{497} +\entry {\code {ETIME}}{26} +\entry {\code {ETIMEDOUT}}{23} +\entry {\code {ETOOMANYREFS}}{23} +\entry {\code {ETXTBSY}}{19} +\entry {\code {EUCLEAN}}{27} +\entry {\code {EUNATCH}}{26} +\entry {\code {EUSERS}}{23} +\entry {\code {EWOULDBLOCK}}{20} +\entry {\code {EXDEV}}{18} +\entry {\code {EXFULL}}{26} +\entry {\code {EXIT_FAILURE}}{459} +\entry {\code {EXIT_SUCCESS}}{459} +\entry {\code {EXPR_NEST_MAX}}{546} +\entry {\code {EXTA}}{282} +\entry {\code {EXTB}}{282} \initial {F} -\entry {\code {F{\_}DUPFD \relax }}{161} -\entry {\code {F{\_}GETFD \relax }}{162} -\entry {\code {F{\_}GETFL \relax }}{168} -\entry {\code {F{\_}GETLK \relax }}{171} -\entry {\code {F{\_}GETOWN \relax }}{174} -\entry {\code {F{\_}OK \relax }}{200} -\entry {\code {F{\_}RDLCK}}{173} -\entry {\code {F{\_}SETFD \relax }}{163} -\entry {\code {F{\_}SETFL \relax }}{169} -\entry {\code {F{\_}SETLK \relax }}{171} -\entry {\code {F{\_}SETLKW \relax }}{172} -\entry {\code {F{\_}SETOWN \relax }}{174} -\entry {\code {F{\_}UNLCK}}{173} -\entry {\code {F{\_}WRLCK}}{173} -\entry {\code {FD{\_}CLOEXEC \relax }}{163} -\entry {\code {FD{\_}SETSIZE \relax }}{157} -\entry {\code {FILENAME{\_}MAX \relax }}{538} -\entry {\code {FLUSHO \relax }}{274} -\entry {\code {FOPEN{\_}MAX \relax }}{92} -\entry {\code {FPE{\_}DECOVF{\_}TRAP}}{387} -\entry {\code {FPE{\_}FLTDIV{\_}TRAP}}{387} -\entry {\code {FPE{\_}FLTOVF{\_}TRAP}}{387} -\entry {\code {FPE{\_}FLTUND{\_}TRAP}}{387} -\entry {\code {FPE{\_}INTDIV{\_}TRAP}}{387} -\entry {\code {FPE{\_}INTOVF{\_}TRAP}}{387} -\entry {\code {FPE{\_}SUBRNG{\_}TRAP}}{387} +\entry {\code {F_DUPFD}}{165} +\entry {\code {F_GETFD}}{166} +\entry {\code {F_GETFL}}{172} +\entry {\code {F_GETLK}}{175} +\entry {\code {F_GETOWN}}{177} +\entry {\code {F_OK}}{206} +\entry {\code {F_RDLCK}}{176} +\entry {\code {F_SETFD}}{167} +\entry {\code {F_SETFL}}{173} +\entry {\code {F_SETLK}}{175} +\entry {\code {F_SETLKW}}{176} +\entry {\code {F_SETOWN}}{178} +\entry {\code {F_UNLCK}}{177} +\entry {\code {F_WRLCK}}{177} +\entry {\code {FD_CLOEXEC}}{167} +\entry {\code {FD_SETSIZE}}{161} +\entry {\code {FILENAME_MAX}}{542} +\entry {\code {FLUSHO}}{280} +\entry {\code {FOPEN_MAX}}{94} +\entry {\code {FPE_DECOVF_TRAP}}{393} +\entry {\code {FPE_FLTDIV_TRAP}}{393} +\entry {\code {FPE_FLTOVF_TRAP}}{393} +\entry {\code {FPE_FLTUND_TRAP}}{393} +\entry {\code {FPE_INTDIV_TRAP}}{393} +\entry {\code {FPE_INTOVF_TRAP}}{393} +\entry {\code {FPE_SUBRNG_TRAP}}{393} \initial {G} -\entry {\code {group}}{493} +\entry {\code {group}}{497} \initial {H} -\entry {\code {h{\_}errno}}{227} -\entry {\code {HOST{\_}NOT{\_}FOUND}}{227} -\entry {\code {hosts}}{493} -\entry {\code {HUGE{\_}VAL \relax }}{288} -\entry {\code {HUGE{\_}VALf \relax }}{288} -\entry {\code {HUGE{\_}VALl \relax }}{288} -\entry {\code {HUPCL \relax }}{270} +\entry {\code {h_errno}}{232} +\entry {\code {HOST_NOT_FOUND}}{233} +\entry {\code {hosts}}{497} +\entry {\code {HUGE_VAL}}{294} +\entry {\code {HUGE_VALf}}{294} +\entry {\code {HUGE_VALl}}{294} +\entry {\code {HUPCL}}{276} \initial {I} -\entry {\code {ICANON \relax }}{272} -\entry {\code {ICRNL \relax }}{268} -\entry {\code {IEXTEN \relax }}{273} -\entry {\code {IGNBRK \relax }}{268} -\entry {\code {IGNCR \relax }}{268} -\entry {\code {IGNPAR \relax }}{267} -\entry {\code {IMAXBEL \relax }}{269} -\entry {\code {INADDR{\_}ANY \relax }}{224} -\entry {\code {INADDR{\_}BROADCAST \relax }}{224} -\entry {\code {INADDR{\_}LOOPBACK \relax }}{224} -\entry {\code {INADDR{\_}NONE \relax }}{224} -\entry {\code {INLCR \relax }}{268} -\entry {\code {INPCK \relax }}{267} -\entry {\code {int}}{353} -\entry {\code {IPPORT{\_}RESERVED \relax }}{228} -\entry {\code {IPPORT{\_}USERRESERVED \relax }}{228} -\entry {\code {ISIG \relax }}{273} -\entry {\code {ISTRIP \relax }}{267} -\entry {\code {IXANY \relax }}{268} -\entry {\code {IXOFF \relax }}{268} -\entry {\code {IXON \relax }}{268} +\entry {\code {ICANON}}{278} +\entry {\code {ICRNL}}{274} +\entry {\code {IEXTEN}}{279} +\entry {\code {IGNBRK}}{274} +\entry {\code {IGNCR}}{274} +\entry {\code {IGNPAR}}{273} +\entry {\code {IMAXBEL}}{275} +\entry {\code {INADDR_ANY}}{230} +\entry {\code {INADDR_BROADCAST}}{230} +\entry {\code {INADDR_LOOPBACK}}{230} +\entry {\code {INADDR_NONE}}{230} +\entry {\code {INLCR}}{274} +\entry {\code {INPCK}}{273} +\entry {\code {int}}{359} +\entry {\code {IPPORT_RESERVED}}{234} +\entry {\code {IPPORT_USERRESERVED}}{234} +\entry {\code {ISIG}}{279} +\entry {\code {ISTRIP}}{273} +\entry {\code {IXANY}}{274} +\entry {\code {IXOFF}}{274} +\entry {\code {IXON}}{274} \initial {L} -\entry {\code {L{\_}ctermid \relax }}{489} -\entry {\code {L{\_}cuserid \relax }}{513} -\entry {\code {L{\_}INCR}}{133} -\entry {\code {L{\_}SET}}{133} -\entry {\code {L{\_}tmpnam \relax }}{204} -\entry {\code {L{\_}XTND}}{133} -\entry {\code {LANG}}{371} -\entry {\code {LC{\_}ALL}}{371} -\entry {\code {LC{\_}COLLATE}}{370} -\entry {\code {LC{\_}CTYPE}}{370} -\entry {\code {LC{\_}MONETARY}}{371} -\entry {\code {LC{\_}NUMERIC}}{371} -\entry {\code {LC{\_}TIME}}{371} -\entry {\code {LINE{\_}MAX \relax }}{542} -\entry {\code {LINK{\_}MAX \relax }}{537} +\entry {\code {L_ctermid}}{494} +\entry {\code {L_cuserid}}{517} +\entry {\code {L_INCR}}{136} +\entry {\code {L_SET}}{136} +\entry {\code {L_tmpnam}}{209} +\entry {\code {L_XTND}}{136} +\entry {\code {LANG}}{377} +\entry {\code {LC_ALL}}{377} +\entry {\code {LC_COLLATE}}{376} +\entry {\code {LC_CTYPE}}{376} +\entry {\code {LC_MESSAGES}}{377} +\entry {\code {LC_MONETARY}}{377} +\entry {\code {LC_NUMERIC}}{377} +\entry {\code {LC_TIME}}{377} +\entry {\code {LINE_MAX}}{546} +\entry {\code {LINK_MAX}}{541} \initial {M} -\entry {\code {MAX{\_}CANON \relax }}{537} -\entry {\code {MAX{\_}INPUT \relax }}{537} -\entry {\code {MAXNAMLEN \relax }}{538} -\entry {\code {MB{\_}CUR{\_}MAX \relax }}{360} -\entry {\code {MB{\_}LEN{\_}MAX \relax }}{360} -\entry {\code {MDMBUF \relax }}{271} -\entry {\code {MINSIGSTKSZ}}{431} -\entry {\code {MSG{\_}DONTROUTE \relax }}{243} -\entry {\code {MSG{\_}OOB \relax }}{243} -\entry {\code {MSG{\_}PEEK \relax }}{243} +\entry {\code {MAX_CANON}}{541} +\entry {\code {MAX_INPUT}}{541} +\entry {\code {MAXNAMLEN}}{542} +\entry {\code {MB_CUR_MAX}}{366} +\entry {\code {MB_LEN_MAX}}{366} +\entry {\code {MDMBUF}}{277} +\entry {\code {MINSIGSTKSZ}}{438, 439} +\entry {\code {MSG_DONTROUTE}}{248} +\entry {\code {MSG_OOB}}{248} +\entry {\code {MSG_PEEK}}{248} \initial {N} -\entry {\code {NAME{\_}MAX \relax }}{537} -\entry {\code {NAN \relax }}{295} -\entry {\code {NCCS \relax }}{264} -\entry {\code {NDEBUG}}{545} -\entry {\code {netgroup}}{493} -\entry {\code {network}}{494} -\entry {\code {NGROUPS{\_}MAX \relax }}{530} -\entry {\code {NO{\_}ADDRESS}}{227} -\entry {\code {NO{\_}RECOVERY}}{227} -\entry {\code {NOFLSH \relax }}{274} -\entry {\code {NOKERNINFO \relax }}{274} -\entry {\code {NSIG \relax }}{386} -\entry {\code {NULL \relax }}{553} +\entry {\code {NAME_MAX}}{541} +\entry {\code {NAN}}{301} +\entry {\code {NCCS}}{270} +\entry {\code {NDEBUG}}{549} +\entry {\code {netgroup}}{497} +\entry {\code {network}}{497} +\entry {\code {NGROUPS_MAX}}{534} +\entry {\code {NO_ADDRESS}}{233} +\entry {\code {NO_RECOVERY}}{233} +\entry {\code {NOFLSH}}{280} +\entry {\code {NOKERNINFO}}{280} +\entry {\code {NSIG}}{392} +\entry {\code {NSS_STATUS_NOTFOUND}}{502} +\entry {\code {NSS_STATUS_SUCCESS}}{502} +\entry {\code {NSS_STATUS_TRYAGAIN}}{502} +\entry {\code {NSS_STATUS_UNAVAIL}}{502} +\entry {\code {NULL}}{557} \initial {O} -\entry {\code {O{\_}ACCMODE \relax }}{165} -\entry {\code {O{\_}APPEND \relax }}{167} -\entry {\code {O{\_}ASYNC \relax }}{168} -\entry {\code {O{\_}CREAT \relax }}{166} -\entry {\code {O{\_}EXCL \relax }}{166} -\entry {\code {O{\_}EXEC \relax }}{165} -\entry {\code {O{\_}EXLOCK \relax }}{167} -\entry {\code {O{\_}FSYNC \relax }}{168} -\entry {\code {O{\_}IGNORE{\_}CTTY \relax }}{166} -\entry {\code {O{\_}NDELAY \relax }}{168} -\entry {\code {O{\_}NOATIME \relax }}{168} -\entry {\code {O{\_}NOCTTY \relax }}{166} -\entry {\code {O{\_}NOLINK \relax }}{166} -\entry {\code {O{\_}NONBLOCK \relax }}{166, 168} -\entry {\code {O{\_}NOTRANS \relax }}{167} -\entry {\code {O{\_}RDONLY \relax }}{164} -\entry {\code {O{\_}RDWR \relax }}{164} -\entry {\code {O{\_}READ \relax }}{165} -\entry {\code {O{\_}SHLOCK \relax }}{167} -\entry {\code {O{\_}SYNC \relax }}{168} -\entry {\code {O{\_}TRUNC \relax }}{167} -\entry {\code {O{\_}WRITE \relax }}{165} -\entry {\code {O{\_}WRONLY \relax }}{164} -\entry {\code {ONLCR \relax }}{269} -\entry {\code {ONOEOT \relax }}{269} -\entry {\code {OPEN{\_}MAX \relax }}{529} -\entry {\code {OPOST \relax }}{269} -\entry {\code {optarg \relax }}{439} -\entry {\code {opterr \relax }}{439} -\entry {\code {optind \relax }}{439} -\entry {\code {optopt \relax }}{439} -\entry {\code {OXTABS \relax }}{269} +\entry {\code {O_ACCMODE}}{169} +\entry {\code {O_APPEND}}{171} +\entry {\code {O_ASYNC}}{172} +\entry {\code {O_CREAT}}{169} +\entry {\code {O_EXCL}}{169} +\entry {\code {O_EXEC}}{169} +\entry {\code {O_EXLOCK}}{171} +\entry {\code {O_FSYNC}}{172} +\entry {\code {O_IGNORE_CTTY}}{170} +\entry {\code {O_NDELAY}}{171} +\entry {\code {O_NOATIME}}{172} +\entry {\code {O_NOCTTY}}{170} +\entry {\code {O_NOLINK}}{170} +\entry {\code {O_NONBLOCK}}{169, 171} +\entry {\code {O_NOTRANS}}{170} +\entry {\code {O_RDONLY}}{168} +\entry {\code {O_RDWR}}{168} +\entry {\code {O_READ}}{169} +\entry {\code {O_SHLOCK}}{171} +\entry {\code {O_SYNC}}{172} +\entry {\code {O_TRUNC}}{170} +\entry {\code {O_WRITE}}{169} +\entry {\code {O_WRONLY}}{168} +\entry {\code {ONLCR}}{275} +\entry {\code {ONOEOT}}{275} +\entry {\code {OPEN_MAX}}{533} +\entry {\code {OPOST}}{275} +\entry {\code {optarg}}{445} +\entry {\code {opterr}}{445} +\entry {\code {optind}}{445} +\entry {\code {optopt}}{445} +\entry {\code {OXTABS}}{275} \initial {P} -\entry {\code {P{\_}tmpdir \relax }}{205} -\entry {\code {PA{\_}CHAR}}{114} -\entry {\code {PA{\_}DOUBLE}}{114} -\entry {\code {PA{\_}FLAG{\_}LONG}}{115} -\entry {\code {PA{\_}FLAG{\_}LONG{\_}DOUBLE}}{115} -\entry {\code {PA{\_}FLAG{\_}LONG{\_}LONG}}{115} -\entry {\code {PA{\_}FLAG{\_}MASK \relax }}{114} -\entry {\code {PA{\_}FLAG{\_}PTR}}{114} -\entry {\code {PA{\_}FLAG{\_}SHORT}}{115} -\entry {\code {PA{\_}FLOAT}}{114} -\entry {\code {PA{\_}INT}}{114} -\entry {\code {PA{\_}LAST}}{114} -\entry {\code {PA{\_}POINTER}}{114} -\entry {\code {PA{\_}STRING}}{114} -\entry {\code {PARENB \relax }}{270} -\entry {\code {PARMRK \relax }}{267} -\entry {\code {PARODD \relax }}{271} -\entry {\code {passwd}}{494} -\entry {\code {PATH{\_}MAX \relax }}{537} -\entry {\code {PENDIN \relax }}{274} -\entry {\code {PF{\_}CCITT}}{234} -\entry {\code {PF{\_}FILE \relax }}{219} -\entry {\code {PF{\_}IMPLINK}}{234} -\entry {\code {PF{\_}INET \relax }}{221} -\entry {\code {PF{\_}ISO}}{234} -\entry {\code {PF{\_}NS}}{234} -\entry {\code {PF{\_}ROUTE}}{234} -\entry {\code {PF{\_}UNIX \relax }}{219} -\entry {\code {PIPE{\_}BUF \relax }}{538} -\entry {\code {PRIO{\_}MAX}}{354} -\entry {\code {PRIO{\_}MIN}}{354} -\entry {\code {PRIO{\_}PGRP}}{355} -\entry {\code {PRIO{\_}PROCESS}}{355} -\entry {\code {PRIO{\_}USER}}{355} -\entry {\code {program{\_}invocation{\_}name \relax }}{28} -\entry {\code {program{\_}invocation{\_}short{\_}name \relax }}{28} -\entry {\code {protocols}}{494} +\entry {\code {P_tmpdir}}{210} +\entry {\code {PA_CHAR}}{116} +\entry {\code {PA_DOUBLE}}{117} +\entry {\code {PA_FLAG_LONG}}{117} +\entry {\code {PA_FLAG_LONG_DOUBLE}}{117} +\entry {\code {PA_FLAG_LONG_LONG}}{117} +\entry {\code {PA_FLAG_MASK}}{116} +\entry {\code {PA_FLAG_PTR}}{117} +\entry {\code {PA_FLAG_SHORT}}{117} +\entry {\code {PA_FLOAT}}{116} +\entry {\code {PA_INT}}{116} +\entry {\code {PA_LAST}}{117} +\entry {\code {PA_POINTER}}{116} +\entry {\code {PA_STRING}}{116} +\entry {\code {PARENB}}{276} +\entry {\code {PARMRK}}{273} +\entry {\code {PARODD}}{277} +\entry {\code {passwd}}{497, 498} +\entry {\code {PATH_MAX}}{542} +\entry {\code {PENDIN}}{280} +\entry {\code {PF_CCITT}}{239} +\entry {\code {PF_FILE}}{225} +\entry {\code {PF_IMPLINK}}{239} +\entry {\code {PF_INET}}{227} +\entry {\code {PF_ISO}}{239} +\entry {\code {PF_NS}}{239} +\entry {\code {PF_ROUTE}}{239} +\entry {\code {PF_UNIX}}{225} +\entry {\code {PIPE_BUF}}{542} +\entry {\code {PRIO_MAX}}{360} +\entry {\code {PRIO_MIN}}{360} +\entry {\code {PRIO_PGRP}}{361} +\entry {\code {PRIO_PROCESS}}{361} +\entry {\code {PRIO_USER}}{361} +\entry {\code {program_invocation_name}}{28} +\entry {\code {program_invocation_short_name}}{28} +\entry {\code {protocols}}{497, 498} \initial {R} -\entry {\code {R{\_}OK \relax }}{200} -\entry {\code {RAND{\_}MAX \relax }}{292} -\entry {\code {RE{\_}DUP{\_}MAX \relax }}{530} -\entry {\code {RLIM{\_}NLIMITS}}{353} -\entry {\code {RLIMIT{\_}CORE}}{353} -\entry {\code {RLIMIT{\_}CPU}}{352} -\entry {\code {RLIMIT{\_}DATA}}{352} -\entry {\code {RLIMIT{\_}FSIZE}}{352} -\entry {\code {RLIMIT{\_}NOFILE}}{353} -\entry {\code {RLIMIT{\_}OFILE}}{353} -\entry {\code {RLIMIT{\_}RSS}}{353} -\entry {\code {RLIMIT{\_}STACK}}{353} -\entry {\code {rpc}}{494} +\entry {\code {R_OK}}{205} +\entry {\code {RAND_MAX}}{298} +\entry {\code {RE_DUP_MAX}}{534} +\entry {\code {RLIM_NLIMITS}}{359} +\entry {\code {RLIMIT_CORE}}{359} +\entry {\code {RLIMIT_CPU}}{358} +\entry {\code {RLIMIT_DATA}}{359} +\entry {\code {RLIMIT_FSIZE}}{359} +\entry {\code {RLIMIT_NOFILE}}{359} +\entry {\code {RLIMIT_OFILE}}{359} +\entry {\code {RLIMIT_RSS}}{359} +\entry {\code {RLIMIT_STACK}}{359} +\entry {\code {rpc}}{497, 498} \initial {S} -\entry {\code {S{\_}IEXEC}}{195} -\entry {\code {S{\_}IFBLK}}{192} -\entry {\code {S{\_}IFCHR}}{192} -\entry {\code {S{\_}IFDIR}}{192} -\entry {\code {S{\_}IFIFO}}{193} -\entry {\code {S{\_}IFLNK}}{192} -\entry {\code {S{\_}IFMT \relax }}{192} -\entry {\code {S{\_}IFREG}}{192} -\entry {\code {S{\_}IFSOCK}}{192} -\entry {\code {S{\_}IREAD}}{194} -\entry {\code {S{\_}IRGRP}}{195} -\entry {\code {S{\_}IROTH}}{195} -\entry {\code {S{\_}IRUSR}}{194} -\entry {\code {S{\_}IRWXG}}{195} -\entry {\code {S{\_}IRWXO}}{195} -\entry {\code {S{\_}IRWXU}}{195} -\entry {\code {S{\_}ISGID}}{195} -\entry {\code {S{\_}ISUID}}{195} -\entry {\code {S{\_}ISVTX}}{195} -\entry {\code {S{\_}IWGRP}}{195} -\entry {\code {S{\_}IWOTH}}{195} -\entry {\code {S{\_}IWRITE}}{195} -\entry {\code {S{\_}IWUSR}}{195} -\entry {\code {S{\_}IXGRP}}{195} -\entry {\code {S{\_}IXOTH}}{195} -\entry {\code {S{\_}IXUSR}}{195} -\entry {\code {SA{\_}DISABLE}}{431} -\entry {\code {SA{\_}NOCLDSTOP \relax }}{402} -\entry {\code {SA{\_}ONSTACK}}{431} -\entry {\code {SA{\_}ONSTACK \relax }}{402} -\entry {\code {SA{\_}RESTART \relax }}{402} -\entry {\code {SEEK{\_}CUR \relax }}{133} -\entry {\code {SEEK{\_}END \relax }}{133} -\entry {\code {SEEK{\_}SET \relax }}{133} -\entry {\code {services}}{494} -\entry {\code {shadow}}{494} -\entry {\code {SIG{\_}BLOCK}}{422} -\entry {\code {SIG{\_}DFL}}{397} -\entry {\code {SIG{\_}ERR \relax }}{398} -\entry {\code {SIG{\_}IGN}}{397} -\entry {\code {SIG{\_}SETMASK}}{422} -\entry {\code {SIG{\_}UNBLOCK}}{422} -\entry {\code {SIGABRT \relax }}{388} -\entry {\code {SIGALRM \relax }}{391} -\entry {\code {SIGBUS \relax }}{388} -\entry {\code {SIGCHLD \relax }}{392} -\entry {\code {SIGCLD \relax }}{392} -\entry {\code {SIGCONT \relax }}{392} -\entry {\code {SIGEMT \relax }}{389} -\entry {\code {SIGFPE \relax }}{387} -\entry {\code {SIGHUP \relax }}{390} -\entry {\code {SIGILL \relax }}{388} -\entry {\code {SIGINFO \relax }}{395} -\entry {\code {SIGINT \relax }}{389} -\entry {\code {SIGIO \relax }}{391} -\entry {\code {SIGIOT \relax }}{388} -\entry {\code {SIGKILL \relax }}{390} -\entry {\code {SIGLOST \relax }}{394} -\entry {\code {SIGPIPE \relax }}{394} -\entry {\code {SIGPOLL \relax }}{392} -\entry {\code {SIGPROF \relax }}{391} -\entry {\code {SIGQUIT \relax }}{390} -\entry {\code {SIGSEGV \relax }}{388} -\entry {\code {SIGSTKSZ}}{431} -\entry {\code {SIGSTOP \relax }}{392} -\entry {\code {SIGSYS \relax }}{389} -\entry {\code {SIGTERM \relax }}{389} -\entry {\code {SIGTRAP \relax }}{389} -\entry {\code {SIGTSTP \relax }}{392} -\entry {\code {SIGTTIN \relax }}{393} -\entry {\code {SIGTTOU \relax }}{393} -\entry {\code {SIGURG \relax }}{391} -\entry {\code {SIGUSR1 \relax }}{394} -\entry {\code {SIGUSR2 \relax }}{394} -\entry {\code {SIGVTALRM \relax }}{391} -\entry {\code {SIGWINCH \relax }}{395} -\entry {\code {SIGXCPU \relax }}{394} -\entry {\code {SIGXFSZ \relax }}{394} -\entry {\code {SOCK{\_}DGRAM \relax }}{214} -\entry {\code {SOCK{\_}RAW \relax }}{215} -\entry {\code {SOCK{\_}STREAM \relax }}{214} -\entry {\code {SOL{\_}SOCKET \relax }}{256} -\entry {\code {SSIZE{\_}MAX \relax }}{530} -\entry {\code {stderr \relax }}{90} -\entry {\code {STDERR{\_}FILENO}}{154} -\entry {\code {stdin \relax }}{89} -\entry {\code {STDIN{\_}FILENO}}{154} -\entry {\code {stdout \relax }}{89} -\entry {\code {STDOUT{\_}FILENO}}{154} -\entry {\code {STREAM{\_}MAX \relax }}{530} -\entry {\code {SV{\_}INTERRUPT \relax }}{434} -\entry {\code {SV{\_}ONSTACK \relax }}{434} -\entry {\code {SV{\_}RESETHAND \relax }}{434} -\entry {\code {sys{\_}siglist}}{396} +\entry {\code {S_IEXEC}}{200} +\entry {\code {S_IFBLK}}{198} +\entry {\code {S_IFCHR}}{198} +\entry {\code {S_IFDIR}}{198} +\entry {\code {S_IFIFO}}{198} +\entry {\code {S_IFLNK}}{198} +\entry {\code {S_IFMT}}{198} +\entry {\code {S_IFREG}}{198} +\entry {\code {S_IFSOCK}}{198} +\entry {\code {S_IREAD}}{200} +\entry {\code {S_IRGRP}}{200} +\entry {\code {S_IROTH}}{200} +\entry {\code {S_IRUSR}}{200} +\entry {\code {S_IRWXG}}{200} +\entry {\code {S_IRWXO}}{200} +\entry {\code {S_IRWXU}}{200} +\entry {\code {S_ISGID}}{201} +\entry {\code {S_ISUID}}{201} +\entry {\code {S_ISVTX}}{201} +\entry {\code {S_IWGRP}}{200} +\entry {\code {S_IWOTH}}{200} +\entry {\code {S_IWRITE}}{200} +\entry {\code {S_IWUSR}}{200} +\entry {\code {S_IXGRP}}{200} +\entry {\code {S_IXOTH}}{200} +\entry {\code {S_IXUSR}}{200} +\entry {\code {SA_DISABLE}}{438, 439} +\entry {\code {SA_NOCLDSTOP}}{408} +\entry {\code {SA_ONSTACK}}{408, 438, 439} +\entry {\code {SA_RESTART}}{408} +\entry {\code {SEEK_CUR}}{136} +\entry {\code {SEEK_END}}{136} +\entry {\code {SEEK_SET}}{136} +\entry {\code {services}}{497, 498} +\entry {\code {shadow}}{497, 498} +\entry {\code {SIG_BLOCK}}{430} +\entry {\code {SIG_DFL}}{403} +\entry {\code {SIG_ERR}}{404} +\entry {\code {SIG_IGN}}{403} +\entry {\code {SIG_SETMASK}}{430} +\entry {\code {SIG_UNBLOCK}}{430} +\entry {\code {SIGABRT}}{394} +\entry {\code {SIGALRM}}{397} +\entry {\code {SIGBUS}}{394} +\entry {\code {SIGCHLD}}{398} +\entry {\code {SIGCLD}}{398} +\entry {\code {SIGCONT}}{398} +\entry {\code {SIGEMT}}{395} +\entry {\code {SIGFPE}}{392} +\entry {\code {SIGHUP}}{396} +\entry {\code {SIGILL}}{394} +\entry {\code {SIGINFO}}{401} +\entry {\code {SIGINT}}{395} +\entry {\code {SIGIO}}{397} +\entry {\code {SIGIOT}}{394} +\entry {\code {SIGKILL}}{396} +\entry {\code {SIGLOST}}{400} +\entry {\code {SIGPIPE}}{400} +\entry {\code {SIGPOLL}}{398} +\entry {\code {SIGPROF}}{397} +\entry {\code {SIGQUIT}}{396} +\entry {\code {SIGSEGV}}{394} +\entry {\code {SIGSTKSZ}}{438, 439} +\entry {\code {SIGSTOP}}{398} +\entry {\code {SIGSYS}}{395} +\entry {\code {SIGTERM}}{395} +\entry {\code {SIGTRAP}}{395} +\entry {\code {SIGTSTP}}{398} +\entry {\code {SIGTTIN}}{399} +\entry {\code {SIGTTOU}}{399} +\entry {\code {SIGURG}}{397} +\entry {\code {SIGUSR1}}{400} +\entry {\code {SIGUSR2}}{400} +\entry {\code {SIGVTALRM}}{397} +\entry {\code {SIGWINCH}}{401} +\entry {\code {SIGXCPU}}{400} +\entry {\code {SIGXFSZ}}{400} +\entry {\code {SOCK_DGRAM}}{220} +\entry {\code {SOCK_RAW}}{221} +\entry {\code {SOCK_STREAM}}{220} +\entry {\code {SOL_SOCKET}}{263} +\entry {\code {SSIZE_MAX}}{534} +\entry {\code {stderr}}{92} +\entry {\code {STDERR_FILENO}}{158} +\entry {\code {stdin}}{91} +\entry {\code {STDIN_FILENO}}{157} +\entry {\code {stdout}}{91} +\entry {\code {STDOUT_FILENO}}{158} +\entry {\code {STREAM_MAX}}{533} +\entry {\code {SV_INTERRUPT}}{441} +\entry {\code {SV_ONSTACK}}{441} +\entry {\code {SV_RESETHAND}}{442} +\entry {\code {sys_siglist}}{402} \initial {T} -\entry {\code {TCIFLUSH}}{284} -\entry {\code {TCIOFF}}{284} -\entry {\code {TCIOFLUSH}}{284} -\entry {\code {TCION}}{284} -\entry {\code {TCOFLUSH}}{284} -\entry {\code {TCOOFF}}{284} -\entry {\code {TCOON}}{284} -\entry {\code {TCSADRAIN}}{264} -\entry {\code {TCSAFLUSH}}{265} -\entry {\code {TCSANOW}}{264} -\entry {\code {TCSASOFT}}{265} -\entry {\code {timezone \relax }}{345} -\entry {\code {TMP{\_}MAX \relax }}{204} -\entry {\code {TOSTOP \relax }}{274} -\entry {\code {TRY{\_}AGAIN}}{227} -\entry {\code {tzname [2] \relax }}{344} -\entry {\code {TZNAME{\_}MAX \relax }}{530} +\entry {\code {TCIFLUSH}}{290} +\entry {\code {TCIOFF}}{290} +\entry {\code {TCIOFLUSH}}{290} +\entry {\code {TCION}}{290} +\entry {\code {TCOFLUSH}}{290} +\entry {\code {TCOOFF}}{290} +\entry {\code {TCOON}}{290} +\entry {\code {TCSADRAIN}}{270} +\entry {\code {TCSAFLUSH}}{271} +\entry {\code {TCSANOW}}{270} +\entry {\code {TCSASOFT}}{271} +\entry {\code {timezone}}{351} +\entry {\code {TMP_MAX}}{209} +\entry {\code {TOSTOP}}{280} +\entry {\code {TRY_AGAIN}}{233} +\entry {\code {tzname}}{350} +\entry {\code {TZNAME_MAX}}{534} \initial {V} -\entry {\code {VDISCARD \relax }}{281} -\entry {\code {VDSUSP \relax }}{279} -\entry {\code {VEOF \relax }}{277} -\entry {\code {VEOL \relax }}{277} -\entry {\code {VEOL2 \relax }}{277} -\entry {\code {VERASE \relax }}{277} -\entry {\code {VINTR \relax }}{278} -\entry {\code {VKILL \relax }}{278} -\entry {\code {VLNEXT \relax }}{280} -\entry {\code {VMIN \relax }}{281} -\entry {\code {VQUIT \relax }}{279} -\entry {\code {VREPRINT \relax }}{278} -\entry {\code {VSTART \relax }}{280} -\entry {\code {VSTATUS \relax }}{281} -\entry {\code {VSTOP \relax }}{280} -\entry {\code {VSUSP \relax }}{279} -\entry {\code {VTIME \relax }}{282} -\entry {\code {VWERASE \relax }}{278} +\entry {\code {VDISCARD}}{287} +\entry {\code {VDSUSP}}{285} +\entry {\code {VEOF}}{283} +\entry {\code {VEOL}}{283} +\entry {\code {VEOL2}}{283} +\entry {\code {VERASE}}{283} +\entry {\code {VINTR}}{284} +\entry {\code {VKILL}}{284} +\entry {\code {VLNEXT}}{286} +\entry {\code {VMIN}}{287} +\entry {\code {VQUIT}}{285} +\entry {\code {VREPRINT}}{284} +\entry {\code {VSTART}}{286} +\entry {\code {VSTATUS}}{287} +\entry {\code {VSTOP}}{286} +\entry {\code {VSUSP}}{285} +\entry {\code {VTIME}}{287} +\entry {\code {VWERASE}}{284} \initial {W} -\entry {\code {W{\_}OK \relax }}{200} +\entry {\code {W_OK}}{205} \initial {X} -\entry {\code {X{\_}OK \relax }}{200} +\entry {\code {X_OK}}{206} diff -durpN glibc-2.0.1/manual/memory.texi glibc-2.0.2/manual/memory.texi --- glibc-2.0.1/manual/memory.texi Sat Dec 7 14:05:32 1996 +++ glibc-2.0.2/manual/memory.texi Sun Feb 9 22:18:26 1997 @@ -905,9 +905,9 @@ struct obstack string_obstack; char * copystring (char *string) @{ - char *s = (char *) obstack_alloc (&string_obstack, - strlen (string) + 1); - memcpy (s, string, strlen (string)); + size_t len = strlen (string) + 1; + char *s = (char *) obstack_alloc (&string_obstack, len); + memcpy (s, string, len); return s; @} @end smallexample diff -durpN glibc-2.0.1/manual/stamp-summary glibc-2.0.2/manual/stamp-summary --- glibc-2.0.1/manual/stamp-summary Sat Jan 25 08:16:35 1997 +++ glibc-2.0.2/manual/stamp-summary Tue Mar 18 13:35:51 1997 @@ -1 +1 @@ -Sat Jan 25 14:16:35 MET 1997 +Die Mär 18 19:35:51 CET 1997 diff -durpN glibc-2.0.1/manual/startup.texi glibc-2.0.2/manual/startup.texi --- glibc-2.0.1/manual/startup.texi Wed Dec 18 16:35:05 1996 +++ glibc-2.0.2/manual/startup.texi Sun Mar 16 19:17:06 1997 @@ -830,7 +830,7 @@ unsuccessful program completion in a gen On POSIX systems, the value of this macro is @code{1}. On other systems, the value might be some other (possibly non-constant) integer -expression. Other nonzero status values also indicate future. Certain +expression. Other nonzero status values also indicate failures. Certain programs use different nonzero status values to indicate particular kinds of "non-success". For example, @code{diff} uses status value @code{1} to mean that the files are different, and @code{2} or more to diff -durpN glibc-2.0.1/manual/texinfo.tex glibc-2.0.2/manual/texinfo.tex --- glibc-2.0.1/manual/texinfo.tex Sun Jan 5 05:42:26 1997 +++ glibc-2.0.2/manual/texinfo.tex Sat Jan 4 14:24:13 1997 @@ -1,5 +1,5 @@ %% TeX macros to handle Texinfo files. -%% $Id: texinfo.tex,v 2.196 1997/01/05 10:42:26 drepper Exp $ +%% $Id: texinfo.tex,v 2.196 1997/01/04 19:24:13 karl Exp $ % Copyright (C) 1985, 86, 88, 90, 91, 92, 93, % 94, 95, 96, 97 Free Software Foundation, Inc. @@ -4046,19 +4046,21 @@ width0pt\relax} \fi \def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader} -% #1 is the data type. #2 is the name. +% #1 is the data type. #2 is the name, perhaps followed by text that +% is actually part of the data type, which should not be put into the index. \def\deftypevarheader #1#2{% -\doind {vr}{\code{#2}}% Make entry in variables index +\dovarind#2 \relax% Make entry in variables index \begingroup\defname {\defheaderxcond#1\relax$$$#2}{Variable}% \interlinepenalty=10000 \endgraf\penalty 10000\vskip -\parskip\penalty 10000 \endgroup} +\def\dovarind#1 #2\relax{\doind{vr}{\code{#1}}} % @deftypevr {Global Flag} int enable \def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader} -\def\deftypevrheader #1#2#3{\doind {vr}{\code{#3}}% +\def\deftypevrheader #1#2#3{\dovarind#3 \relax% \begingroup\defname {\defheaderxcond#2\relax$$$#3}{#1} \interlinepenalty=10000 \endgraf\penalty 10000\vskip -\parskip\penalty 10000 diff -durpN glibc-2.0.1/manual/xtract-typefun.awk glibc-2.0.2/manual/xtract-typefun.awk --- glibc-2.0.1/manual/xtract-typefun.awk Wed Dec 31 19:00:00 1969 +++ glibc-2.0.2/manual/xtract-typefun.awk Wed Mar 5 15:59:46 1997 @@ -0,0 +1,26 @@ +#! /usr/local/bin/gawk -f +BEGIN { + last_node=""; +} + +/^@node/ { + last_node = gensub (/@node +([^@,]+).*/, "\\1", 1); +} + +/^@deftypefun/ { + printf ("* %s: (libc)%s.\n", + gensub (/@deftypefun +([^{ ]+|\{[^}]+\}) +([[:alpha:]_][[:alnum:]_]+).*/, "\\2", 1), + last_node); +} + +/^@deftypevr/ { + printf ("* %s: (libc)%s.\n", + gensub (/@deftypevr +([^{ ]+|\{[^}]+\}) +([^{ ]+|\{[^}]+\}) +([[:alpha:]_][[:alnum:]_]+).*/, "\\3", 1), + last_node); +} + +/^@deftypefn/ { + printf ("* %s: (libc)%s.\n", + gensub (/@deftypefn +([^{ ]+|\{[^}]+\}) +[^{ ]*(\{[^}]+\})? +([[:alpha:]_][[:alnum:]_]+).*/, "\\3", 1), + last_node); +} diff -durpN glibc-2.0.1/math/math.h glibc-2.0.2/math/math.h --- glibc-2.0.1/math/math.h Wed Dec 18 18:30:11 1996 +++ glibc-2.0.2/math/math.h Wed Mar 19 15:40:08 1997 @@ -1,5 +1,5 @@ /* Declarations for math functions. - Copyright (C) 1991, 92, 93, 95, 96 Free Software Foundation, Inc. + Copyright (C) 1991, 92, 93, 95, 96, 97 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,15 +44,15 @@ __BEGIN_DECLS and can declare the float versions `namef' and `__namef'. */ #define __MATHCALL(function,suffix, args) \ - __MATHDECL (_Mdouble_, function,suffix, args) + __MATHDECL (_Mdouble_,function,suffix, args) #define __MATHDECL(type, function,suffix, args) \ __MATHDECL_1(type, function,suffix, args); \ - __MATHDECL_1(type, __##function,suffix, args) + __MATHDECL_1(type, __CONCAT(__,function),suffix, args) #define __MATHDECL_1(type, function,suffix, args) \ extern type __MATH_PRECNAME(function,suffix) args #define _Mdouble_ double -#define __MATH_PRECNAME(name,r) name##r +#define __MATH_PRECNAME(name,r) __CONCAT(name,r) #include #undef _Mdouble_ #undef __MATH_PRECNAME @@ -67,7 +67,11 @@ __BEGIN_DECLS #define _Mfloat_ float #endif #define _Mdouble_ _Mfloat_ +#ifdef __STDC__ #define __MATH_PRECNAME(name,r) name##f##r +#else +#define __MATH_PRECNAME(name,r) name/**/f/**/r +#endif #include #undef _Mdouble_ #undef __MATH_PRECNAME @@ -79,7 +83,11 @@ __BEGIN_DECLS #define _Mlong_double_ long double #endif #define _Mdouble_ _Mlong_double_ +#ifdef __STDC__ #define __MATH_PRECNAME(name,r) name##l##r +#else +#define __MATH_PRECNAME(name,r) name/**/l/**/r +#endif #include #undef _Mdouble_ #undef __MATH_PRECNAME @@ -87,6 +95,12 @@ __BEGIN_DECLS #endif /* Use misc. */ +#if defined __USE_MISC || defined __USE_XOPEN || defined __USE_ISOC9X +/* This variable is used by `gamma' and `lgamma'. */ +extern int signgam; +#endif + + #ifdef __USE_MISC /* Support for various different standard error handling behaviors. */ @@ -101,8 +115,15 @@ extern _LIB_VERSION_TYPE _LIB_VERSION; #ifdef __USE_SVID /* In SVID error handling, `matherr' is called with this description - of the exceptional condition. */ + of the exceptional condition. + + We have a problem when using C++ since `exception' is reserved in + C++. */ +#ifdef __cplusplus +struct __exception +#else struct exception +#endif { int type; char *name; @@ -111,8 +132,13 @@ struct exception double retval; }; +#ifdef __cplusplus +extern int __matherr __P ((struct __exception *)); +extern int matherr __P ((struct __exception *)); +#else extern int __matherr __P ((struct exception *)); extern int matherr __P ((struct exception *)); +#endif #define X_TLOSS 1.41484755040568800000e+16 @@ -128,8 +154,16 @@ extern int matherr __P ((struct exceptio #define HUGE FLT_MAX #include /* Defines FLT_MAX. */ +#else /* !SVID */ + +#ifdef __USE_XOPEN +/* X/Open wants another strange constant. */ +#define MAXFLOAT FLT_MAX +#include #endif +#endif /* SVID */ + #ifdef __USE_BSD @@ -161,7 +195,8 @@ extern int matherr __P ((struct exceptio /* Get machine-dependent inline versions (if there are any). */ -#if defined (__NO_MATH_INLINES) || defined (__OPTIMIZE__) +#if (!defined __NO_MATH_INLINES && defined __OPTIMIZE__) \ + || defined __LIBC_M81_MATH_INLINES #include <__math.h> #endif diff -durpN glibc-2.0.1/math/math_private.h glibc-2.0.2/math/math_private.h --- glibc-2.0.1/math/math_private.h Fri Aug 30 19:34:02 1996 +++ glibc-2.0.2/math/math_private.h Fri Aug 30 20:11:53 1996 @@ -11,7 +11,7 @@ /* * from: @(#)fdlibm.h 5.1 93/09/24 - * $Id: math_private.h,v 1.4 1996/08/30 23:34:02 drepper Exp $ + * $Id: math_private.h,v 1.4 1996/08/31 00:11:53 drepper Exp $ */ #ifndef _MATH_PRIVATE_H_ diff -durpN glibc-2.0.1/math/mathcalls.h glibc-2.0.2/math/mathcalls.h --- glibc-2.0.1/math/mathcalls.h Wed Jan 29 22:02:45 1997 +++ glibc-2.0.2/math/mathcalls.h Wed Mar 19 15:42:43 1997 @@ -147,10 +147,10 @@ __MATHCALL (fmod,, (_Mdouble_ __x, _Mdou /* Return 0 if VALUE is finite or NaN, +1 if it is +Infinity, -1 if it is -Infinity. */ -__MATHDECL (int, isinf,, (_Mdouble_ __value)); +__MATHDECL (int,isinf,, (_Mdouble_ __value)); /* Return nonzero if VALUE is finite and not NaN. */ -__MATHDECL (int, finite,, (_Mdouble_ __value)); +__MATHDECL (int,finite,, (_Mdouble_ __value)); /* Deal with an infinite or NaN result. If ERROR is ERANGE, result is +Inf; @@ -186,10 +186,10 @@ __MATHCALL (significand,, (_Mdouble_ __x #if defined(__USE_MISC) || defined(__USE_XOPEN) /* Return nonzero if VALUE is not a number. */ -__MATHDECL (int, isnan,, (_Mdouble_ __value)); +__MATHDECL (int,isnan,, (_Mdouble_ __value)); /* Return the binary exponent of X, which must be nonzero. */ -__MATHDECL (int, ilogb,, (_Mdouble_ __x)); +__MATHDECL (int,ilogb,, (_Mdouble_ __x)); /* Return `sqrt(X*X + Y*Y)'. */ __MATHCALL (hypot,, (_Mdouble_ __x, _Mdouble_ __y)); @@ -207,8 +207,6 @@ __MATHCALL (y0,, (_Mdouble_)); __MATHCALL (y1,, (_Mdouble_)); __MATHCALL (yn,, (int, _Mdouble_)); -/* This variable is used by `gamma' and `lgamma'. */ -extern int signgam; #ifdef __USE_MISC diff -durpN glibc-2.0.1/misc/error.c glibc-2.0.2/misc/error.c --- glibc-2.0.1/misc/error.c Wed Jan 29 11:47:47 1997 +++ glibc-2.0.2/misc/error.c Tue Feb 25 20:05:27 1997 @@ -71,6 +71,11 @@ unsigned int error_message_count; #define program_name program_invocation_name #include +/* In GNU libc we want do not want to use the common name `error' directly. + Instead make it a weak alias. */ +#define error __error +#define error_at_line __error_at_line + #else /* The calling program should define program_name and set it to the @@ -230,3 +235,11 @@ error_at_line (status, errnum, file_name if (status) exit (status); } + +#ifdef _LIBC +/* Make the weak alias. */ +#undef error +#undef error_at_line +weak_alias (__error, error) +weak_alias (__error_at_line, error_at_line) +#endif diff -durpN glibc-2.0.1/misc/getpass.c glibc-2.0.2/misc/getpass.c --- glibc-2.0.1/misc/getpass.c Sun Jan 5 19:34:57 1997 +++ glibc-2.0.2/misc/getpass.c Wed Mar 5 16:09:41 1997 @@ -59,9 +59,7 @@ getpass (prompt) /* Save the old one. */ s = t; /* Tricky, tricky. */ - t.c_lflag &= ~(ECHO|ISIG|ICANON); - t.c_cc[VTIME] = 0; - t.c_cc[VMIN] = 1; + t.c_lflag &= ~(ECHO|ISIG); tty_changed = (tcsetattr (fileno (in), TCSAFLUSH|TCSASOFT, &t) == 0); } else diff -durpN glibc-2.0.1/misc/libgen.h glibc-2.0.2/misc/libgen.h --- glibc-2.0.1/misc/libgen.h Sun Nov 3 10:06:13 1996 +++ glibc-2.0.2/misc/libgen.h Mon Feb 17 23:07:49 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -21,10 +21,14 @@ #define _LIBGEN_H 1 #include +__BEGIN_DECLS + /* Return directory part of PATH or "." if none is available. */ extern char *dirname __P ((char *__path)); /* Return filename part of PATH. */ extern char *basename __P ((__const char *__path)); + +__END_DECLS #endif /* libgen.h */ diff -durpN glibc-2.0.1/misc/search.h glibc-2.0.2/misc/search.h --- glibc-2.0.1/misc/search.h Wed Dec 18 16:39:57 1996 +++ glibc-2.0.2/misc/search.h Mon Feb 17 23:07:52 1997 @@ -1,5 +1,5 @@ -/* search.h -- declarations for System V style searching functions. - Copyright (C) 1995, 1996 Free Software Foundation, Inc. +/* Declarations for System V style searching functions. + Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or diff -durpN glibc-2.0.1/misc/sys/syslog.h glibc-2.0.2/misc/sys/syslog.h --- glibc-2.0.1/misc/sys/syslog.h Tue May 21 22:18:31 1996 +++ glibc-2.0.2/misc/sys/syslog.h Mon Feb 17 23:07:54 1997 @@ -67,21 +67,22 @@ typedef struct _code { int c_val; } CODE; -CODE prioritynames[] = { - "alert", LOG_ALERT, - "crit", LOG_CRIT, - "debug", LOG_DEBUG, - "emerg", LOG_EMERG, - "err", LOG_ERR, - "error", LOG_ERR, /* DEPRECATED */ - "info", LOG_INFO, - "none", INTERNAL_NOPRI, /* INTERNAL */ - "notice", LOG_NOTICE, - "panic", LOG_EMERG, /* DEPRECATED */ - "warn", LOG_WARNING, /* DEPRECATED */ - "warning", LOG_WARNING, - NULL, -1, -}; +CODE prioritynames[] = + { + { "alert", LOG_ALERT }, + { "crit", LOG_CRIT }, + { "debug", LOG_DEBUG }, + { "emerg", LOG_EMERG }, + { "err", LOG_ERR }, + { "error", LOG_ERR }, /* DEPRECATED */ + { "info", LOG_INFO }, + { "none", INTERNAL_NOPRI }, /* INTERNAL */ + { "notice", LOG_NOTICE }, + { "panic", LOG_EMERG }, /* DEPRECATED */ + { "warn", LOG_WARNING }, /* DEPRECATED */ + { "warning", LOG_WARNING }, + { NULL, -1 } + }; #endif /* facility codes */ @@ -114,31 +115,32 @@ CODE prioritynames[] = { #define LOG_FAC(p) (((p) & LOG_FACMASK) >> 3) #ifdef SYSLOG_NAMES -CODE facilitynames[] = { - "auth", LOG_AUTH, - "authpriv", LOG_AUTHPRIV, - "cron", LOG_CRON, - "daemon", LOG_DAEMON, - "ftp", LOG_FTP, - "kern", LOG_KERN, - "lpr", LOG_LPR, - "mail", LOG_MAIL, - "mark", INTERNAL_MARK, /* INTERNAL */ - "news", LOG_NEWS, - "security", LOG_AUTH, /* DEPRECATED */ - "syslog", LOG_SYSLOG, - "user", LOG_USER, - "uucp", LOG_UUCP, - "local0", LOG_LOCAL0, - "local1", LOG_LOCAL1, - "local2", LOG_LOCAL2, - "local3", LOG_LOCAL3, - "local4", LOG_LOCAL4, - "local5", LOG_LOCAL5, - "local6", LOG_LOCAL6, - "local7", LOG_LOCAL7, - NULL, -1, -}; +CODE facilitynames[] = + { + { "auth", LOG_AUTH }, + { "authpriv", LOG_AUTHPRIV }, + { "cron", LOG_CRON }, + { "daemon", LOG_DAEMON }, + { "ftp", LOG_FTP }, + { "kern", LOG_KERN }, + { "lpr", LOG_LPR }, + { "mail", LOG_MAIL }, + { "mark", INTERNAL_MARK }, /* INTERNAL */ + { "news", LOG_NEWS }, + { "security", LOG_AUTH }, /* DEPRECATED */ + { "syslog", LOG_SYSLOG }, + { "user", LOG_USER }, + { "uucp", LOG_UUCP }, + { "local0", LOG_LOCAL0 }, + { "local1", LOG_LOCAL1 }, + { "local2", LOG_LOCAL2 }, + { "local3", LOG_LOCAL3 }, + { "local4", LOG_LOCAL4 }, + { "local5", LOG_LOCAL5 }, + { "local6", LOG_LOCAL6 }, + { "local7", LOG_LOCAL7 }, + { NULL, -1 } + }; #endif #ifdef KERNEL @@ -186,11 +188,23 @@ CODE facilitynames[] = { #include __BEGIN_DECLS -void closelog __P((void)); -void openlog __P((const char *, int, int)); -int setlogmask __P((int)); -void syslog __P((int, const char *, ...)); -void vsyslog __P((int, const char *, _BSD_VA_LIST_)); + +/* Close desriptor used to write to system logger. */ +extern void closelog __P ((void)); + +/* Open connection to system logger. */ +extern void openlog __P ((__const char *__ident, int __option, + int __facility)); + +/* Set the log mask level. */ +extern int setlogmask __P ((int __mask)); + +/* Generate a log message using FMT string and option arguments. */ +extern void syslog __P ((int __pri, __const char *__fmt, ...)); + +/* Generate a log message using FMT and using arguments pointed to by AP. */ +extern void vsyslog __P ((int __pri, __const char *__fmt, _BSD_VA_LIST_ __ap)); + __END_DECLS #endif /* !KERNEL */ diff -durpN glibc-2.0.1/misc/sys/uio.h glibc-2.0.2/misc/sys/uio.h --- glibc-2.0.1/misc/sys/uio.h Tue Nov 19 11:33:08 1996 +++ glibc-2.0.2/misc/sys/uio.h Thu Mar 20 14:19:36 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1992, 1996 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1992, 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -34,6 +34,8 @@ __BEGIN_DECLS The buffers are filled in the order specified. Operates just like `read' (see ) except that data are put in VECTOR instead of a contiguous buffer. */ +extern ssize_t __readv __P ((int __fd, __const struct iovec *__vector, + int __count)); extern ssize_t readv __P ((int __fd, __const struct iovec *__vector, int __count)); @@ -42,6 +44,8 @@ extern ssize_t readv __P ((int __fd, __c The data is written in the order specified. Operates just like `write' (see ) except that the data are taken from VECTOR instead of a contiguous buffer. */ +extern ssize_t __writev __P ((int __fd, __const struct iovec *__vector, + int __count)); extern ssize_t writev __P ((int __fd, __const struct iovec *__vector, int __count)); diff -durpN glibc-2.0.1/mkinstalldirs glibc-2.0.2/mkinstalldirs --- glibc-2.0.1/mkinstalldirs Thu Aug 1 20:30:22 1996 +++ glibc-2.0.2/mkinstalldirs Fri May 3 03:37:52 1996 @@ -4,7 +4,7 @@ # Created: 1993-05-16 # Public domain -# $Id: mkinstalldirs,v 1.1 1996/08/02 00:30:22 drepper Exp $ +# $Id: mkinstalldirs,v 1.10 1996/05/03 07:37:52 friedman Exp $ errstatus=0 diff -durpN glibc-2.0.1/nis/nss_nis/nis-ethers.c glibc-2.0.2/nis/nss_nis/nis-ethers.c --- glibc-2.0.1/nis/nss_nis/nis-ethers.c Fri Dec 20 06:30:17 1996 +++ glibc-2.0.2/nis/nss_nis/nis-ethers.c Sun Mar 16 19:12:18 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1996. @@ -43,26 +43,82 @@ struct ether #define EXTERN_PARSER #include "../nss/nss_files/files-parse.c" -static bool_t new_start = 1; -static char *oldkey = NULL; -static int oldkeylen = 0; +struct response +{ + char *val; + struct response *next; +}; + +static struct response *start = NULL; +static struct response *next = NULL; + +static int +saveit (int instatus, char *inkey, int inkeylen, char *inval, + int invallen, char *indata) +{ + if (instatus != YP_TRUE) + return instatus; + + if (inkey && inkeylen > 0 && inval && invallen > 0) + { + if (start == NULL) + { + start = malloc (sizeof (struct response)); + next = start; + } + else + { + next->next = malloc (sizeof (struct response)); + next = next->next; + } + next->next = NULL; + next->val = malloc (invallen + 1); + strncpy (next->val, inval, invallen); + next->val[invallen] = '\0'; + } + + return 0; +} enum nss_status -_nss_nis_setetherent (void) +internal_nis_setetherent (void) { - __libc_lock_lock (lock); + char *domainname; + struct ypall_callback ypcb; + enum nss_status status; - new_start = 1; - if (oldkey != NULL) + yp_get_default_domain (&domainname); + + while (start != NULL) { - free (oldkey); - oldkey = NULL; - oldkeylen = 0; + if (start->val != NULL) + free (start->val); + next = start; + start = start->next; + free (next); } + start = NULL; + + ypcb.foreach = saveit; + ypcb.data = NULL; + status = yperr2nss (yp_all (domainname, "ethers.byname", &ypcb)); + next = start; + + return status; +} + +enum nss_status +_nss_nis_setetherent (void) +{ + enum nss_status result; + + __libc_lock_lock (lock); + + result = internal_nis_setetherent (); __libc_lock_unlock (lock); - return NSS_STATUS_SUCCESS; + return result; } enum nss_status @@ -70,13 +126,16 @@ _nss_nis_endetherent (void) { __libc_lock_lock (lock); - new_start = 1; - if (oldkey != NULL) + while (start != NULL) { - free (oldkey); - oldkey = NULL; - oldkeylen = 0; + if (start->val != NULL) + free (start->val); + next = start; + start = start->next; + free (next); } + start = NULL; + next = NULL; __libc_lock_unlock (lock); @@ -87,54 +146,27 @@ static enum nss_status internal_nis_getetherent_r (struct ether *eth, char *buffer, size_t buflen) { struct parser_data *data = (void *) buffer; - char *domain, *result, *outkey; - int len, keylen, parse_res; + int parse_res; - if (yp_get_default_domain (&domain)) - return NSS_STATUS_UNAVAIL; + if (start == NULL) + internal_nis_setetherent (); /* Get the next entry until we found a correct one. */ do { - enum nss_status retval; char *p; - if (new_start) - retval = yperr2nss (yp_first (domain, "ethers.byaddr", - &outkey, &keylen, &result, &len)); - else - retval = yperr2nss ( yp_next (domain, "ethers.byaddr", - oldkey, oldkeylen, - &outkey, &keylen, &result, &len)); - - if (retval != NSS_STATUS_SUCCESS) - { - if (retval == NSS_STATUS_TRYAGAIN) - __set_errno (EAGAIN); - return retval; - } - - if ((size_t) (len + 1) > buflen) - { - free (result); - __set_errno (ERANGE); - return NSS_STATUS_TRYAGAIN; - } + if (next == NULL) + return NSS_STATUS_NOTFOUND; + p = strcpy (buffer, next->val); + next = next->next; - p = strncpy (buffer, result, len); - buffer[len] = '\0'; while (isspace (*p)) ++p; - free (result); parse_res = _nss_files_parse_etherent (p, eth, data, buflen); if (!parse_res && errno == ERANGE) return NSS_STATUS_TRYAGAIN; - - free (oldkey); - oldkey = outkey; - oldkeylen = keylen; - new_start = 0; } while (!parse_res); @@ -156,8 +188,8 @@ _nss_nis_getetherent_r (struct ether *re } enum nss_status -_nss_nis_getethernam_r (const char *name, struct ether *eth, - char *buffer, size_t buflen) +_nss_nis_gethostton_r (const char *name, struct ether *eth, + char *buffer, size_t buflen) { struct parser_data *data = (void *) buffer; enum nss_status retval; @@ -210,8 +242,8 @@ _nss_nis_getethernam_r (const char *name } enum nss_status -_nss_nis_getetherbyaddr_r (struct ether_addr *addr, struct ether *eth, - char *buffer, size_t buflen) +_nss_nis_getntohost_r (struct ether_addr *addr, struct ether *eth, + char *buffer, size_t buflen) { struct parser_data *data = (void *) buffer; enum nss_status retval; diff -durpN glibc-2.0.1/nis/nss_nis/nis-hosts.c glibc-2.0.2/nis/nss_nis/nis-hosts.c --- glibc-2.0.1/nis/nss_nis/nis-hosts.c Wed Dec 11 17:45:11 1996 +++ glibc-2.0.2/nis/nss_nis/nis-hosts.c Sun Mar 16 19:52:53 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1996. @@ -242,7 +242,7 @@ _nss_nis_gethostent_r (struct hostent *h } enum nss_status -_nss_nis_gethostbyname_r (const char *name, struct hostent *host, +_nss_nis_gethostbyname2_r (const char *name, int af, struct hostent *host, char *buffer, size_t buflen, int *h_errnop) { enum nss_status retval; @@ -297,9 +297,9 @@ _nss_nis_gethostbyname_r (const char *na parse_res = parse_line (p, host, data, buflen); - if (!parse_res) + if (!parse_res || host->h_addrtype != af) { - if (errno == ERANGE) + if (!parse_res && errno == ERANGE) { *h_errnop = NETDB_INTERNAL; return NSS_STATUS_TRYAGAIN; @@ -313,6 +313,24 @@ _nss_nis_gethostbyname_r (const char *na *h_errnop = NETDB_SUCCESS; return NSS_STATUS_SUCCESS; +} + +enum nss_status +_nss_nis_gethostbyname_r (const char *name, struct hostent *host, + char *buffer, size_t buflen, int *h_errnop) +{ + if (_res.options & RES_USE_INET6) + { + enum nss_status status; + + status = _nss_nis_gethostbyname2_r (name, AF_INET6, host, buffer, buflen, + h_errnop); + if (status == NSS_STATUS_SUCCESS) + return status; + } + + return _nss_nis_gethostbyname2_r (name, AF_INET, host, buffer, buflen, + h_errnop); } enum nss_status diff -durpN glibc-2.0.1/nis/nss_nis/nis-proto.c glibc-2.0.2/nis/nss_nis/nis-proto.c --- glibc-2.0.1/nis/nss_nis/nis-proto.c Fri Dec 20 06:30:17 1996 +++ glibc-2.0.2/nis/nss_nis/nis-proto.c Sun Mar 16 19:12:23 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1996. @@ -35,26 +35,82 @@ __libc_lock_define_initialized (static, lock) -static bool_t new_start = 1; -static char *oldkey = NULL; -static int oldkeylen = 0; +struct response +{ + char *val; + struct response *next; +}; + +static struct response *start = NULL; +static struct response *next = NULL; + +static int +saveit (int instatus, char *inkey, int inkeylen, char *inval, + int invallen, char *indata) +{ + if (instatus != YP_TRUE) + return instatus; + + if (inkey && inkeylen > 0 && inval && invallen > 0) + { + if (start == NULL) + { + start = malloc (sizeof (struct response)); + next = start; + } + else + { + next->next = malloc (sizeof (struct response)); + next = next->next; + } + next->next = NULL; + next->val = malloc (invallen + 1); + strncpy (next->val, inval, invallen); + next->val[invallen] = '\0'; + } + + return 0; +} + +enum nss_status +internal_nis_setprotoent (void) +{ + char *domainname; + struct ypall_callback ypcb; + enum nss_status status; + + yp_get_default_domain (&domainname); + + while (start != NULL) + { + if (start->val != NULL) + free (start->val); + next = start; + start = start->next; + free (next); + } + start = NULL; + + ypcb.foreach = saveit; + ypcb.data = NULL; + status = yperr2nss (yp_all (domainname, "protocols.bynumber", &ypcb)); + next = start; + + return status; +} enum nss_status _nss_nis_setprotoent (void) { + enum nss_status status; + __libc_lock_lock (lock); - new_start = 1; - if (oldkey != NULL) - { - free (oldkey); - oldkey = NULL; - oldkeylen = 0; - } + status = internal_nis_setprotoent (); __libc_lock_unlock (lock); - return NSS_STATUS_SUCCESS; + return status; } enum nss_status @@ -62,16 +118,19 @@ _nss_nis_endprotoent (void) { __libc_lock_lock (lock); - new_start = 1; - if (oldkey != NULL) + while (start != NULL) { - free (oldkey); - oldkey = NULL; - oldkeylen = 0; + if (start->val != NULL) + free (start->val); + next = start; + start = start->next; + free (next); } - + start = NULL; + next = NULL; + __libc_lock_unlock (lock); - + return NSS_STATUS_SUCCESS; } @@ -80,57 +139,30 @@ internal_nis_getprotoent_r (struct proto char *buffer, size_t buflen) { struct parser_data *data = (void *) buffer; - char *domain, *result, *outkey; - int len, keylen, parse_res; + int parse_res; - if (yp_get_default_domain (&domain)) - return NSS_STATUS_UNAVAIL; + if (start == NULL) + internal_nis_setprotoent (); /* Get the next entry until we found a correct one. */ do { - enum nss_status retval; char *p; - - if (new_start) - retval = yperr2nss (yp_first (domain, "protocols.bynumber", - &outkey, &keylen, &result, &len)); - else - retval = yperr2nss ( yp_next (domain, "protocols.bynumber", - oldkey, oldkeylen, - &outkey, &keylen, &result, &len)); - - if (retval != NSS_STATUS_SUCCESS) - { - if (retval == NSS_STATUS_TRYAGAIN) - __set_errno (EAGAIN); - return retval; - } - - if ((size_t) (len + 1) > buflen) - { - free (result); - __set_errno (ERANGE); - return NSS_STATUS_TRYAGAIN; - } - - p = strncpy (buffer, result, len); - buffer[len] = '\0'; + + if (next == NULL) + return NSS_STATUS_NOTFOUND; + p = strcpy (buffer, next->val); + next = next->next; + while (isspace (*p)) ++p; - free (result); parse_res = _nss_files_parse_protoent (p, proto, data, buflen); if (!parse_res && errno == ERANGE) return NSS_STATUS_TRYAGAIN; - - free (oldkey); - oldkey = outkey; - oldkeylen = keylen; - new_start = 0; } while (!parse_res); - + return NSS_STATUS_SUCCESS; } diff -durpN glibc-2.0.1/nis/nss_nis/nis-rpc.c glibc-2.0.2/nis/nss_nis/nis-rpc.c --- glibc-2.0.1/nis/nss_nis/nis-rpc.c Fri Dec 20 06:30:17 1996 +++ glibc-2.0.2/nis/nss_nis/nis-rpc.c Sun Mar 16 19:12:31 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1996. @@ -35,27 +35,77 @@ __libc_lock_define_initialized (static, lock) +struct response_t +{ + char *val; + struct response_t *next; +}; + struct intern_t { - bool_t new_start; - char *oldkey; - int oldkeylen; + struct response_t *start; + struct response_t *next; }; typedef struct intern_t intern_t; -static intern_t intern = {TRUE, NULL, 0}; +static intern_t intern = {NULL, NULL}; + +static int +saveit (int instatus, char *inkey, int inkeylen, char *inval, + int invallen, char *indata) +{ + intern_t *intern = (intern_t *)indata; + + if (instatus != YP_TRUE) + return instatus; + + if (inkey && inkeylen > 0 && inval && invallen > 0) + { + if (intern->start == NULL) + { + intern->start = malloc (sizeof (struct response_t)); + intern->next = intern->start; + } + else + { + intern->next->next = malloc (sizeof (struct response_t)); + intern->next = intern->next->next; + } + intern->next->next = NULL; + intern->next->val = malloc (invallen + 1); + strncpy (intern->next->val, inval, invallen); + intern->next->val[invallen] = '\0'; + } + + return 0; +} static enum nss_status -internal_nis_setrpcent (intern_t *data) +internal_nis_setrpcent (intern_t *intern) { - data->new_start = 1; - if (data->oldkey != NULL) + char *domainname; + struct ypall_callback ypcb; + enum nss_status status; + + if (yp_get_default_domain (&domainname)) + return NSS_STATUS_UNAVAIL; + + while (intern->start != NULL) { - free (data->oldkey); - data->oldkey = NULL; - data->oldkeylen = 0; + if (intern->start->val != NULL) + free (intern->start->val); + intern->next = intern->start; + intern->start = intern->start->next; + free (intern->next); } - return NSS_STATUS_SUCCESS; + intern->start = NULL; + + ypcb.foreach = saveit; + ypcb.data = (char *)intern; + status = yperr2nss (yp_all(domainname, "rpc.bynumber", &ypcb)); + intern->next = intern->start; + + return status; } enum nss_status @@ -73,15 +123,18 @@ _nss_nis_setrpcent (void) } static enum nss_status -internal_nis_endrpcent (intern_t *data) +internal_nis_endrpcent (intern_t *intern) { - data->new_start = 1; - if (data->oldkey != NULL) + while (intern->start != NULL) { - free (data->oldkey); - data->oldkey = NULL; - data->oldkeylen = 0; + if (intern->start->val != NULL) + free (intern->start->val); + intern->next = intern->start; + intern->start = intern->start->next; + free (intern->next); } + intern->start = NULL; + return NSS_STATUS_SUCCESS; } @@ -104,60 +157,28 @@ internal_nis_getrpcent_r (struct rpcent intern_t *data) { struct parser_data *pdata = (void *) buffer; - char *domain; - char *result; - int len, parse_res; - char *outkey; - int keylen; + int parse_res; char *p; - - if (yp_get_default_domain (&domain)) - return NSS_STATUS_UNAVAIL; - + + if (data->start == NULL) + internal_nis_setrpcent (data); + /* Get the next entry until we found a correct one. */ do { - enum nss_status retval; - - if (data->new_start) - retval = yperr2nss (yp_first (domain, "rpc.bynumber", - &outkey, &keylen, &result, &len)); - else - retval = yperr2nss ( yp_next (domain, "rpc.bynumber", - data->oldkey, data->oldkeylen, - &outkey, &keylen, &result, &len)); - - if (retval != NSS_STATUS_SUCCESS) - { - if (retval == NSS_STATUS_TRYAGAIN) - __set_errno (EAGAIN); - return retval; - } - - if ((size_t) (len + 1) > buflen) - { - free (result); - __set_errno (ERANGE); - return NSS_STATUS_TRYAGAIN; - } - - p = strncpy (buffer, result, len); - buffer[len] = '\0'; + if (data->next == NULL) + return NSS_STATUS_NOTFOUND; + p = strcpy (buffer, data->next->val); + data->next = data->next->next; while (isspace (*p)) ++p; - free (result); - + parse_res = _nss_files_parse_rpcent (p, rpc, pdata, buflen); if (!parse_res && errno == ERANGE) return NSS_STATUS_TRYAGAIN; - - free (data->oldkey); - data->oldkey = outkey; - data->oldkeylen = keylen; - data->new_start = 0; } while (!parse_res); - + return NSS_STATUS_SUCCESS; } @@ -179,7 +200,7 @@ enum nss_status _nss_nis_getrpcbyname_r (const char *name, struct rpcent *rpc, char *buffer, size_t buflen) { - intern_t data = {TRUE, NULL, 0}; + intern_t data = {NULL, NULL}; enum nss_status status; int found; diff -durpN glibc-2.0.1/nis/nss_nis/nis-service.c glibc-2.0.2/nis/nss_nis/nis-service.c --- glibc-2.0.1/nis/nss_nis/nis-service.c Wed Dec 11 17:43:51 1996 +++ glibc-2.0.2/nis/nss_nis/nis-service.c Mon Mar 17 23:24:32 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1996. @@ -37,27 +37,77 @@ extern int _nss_files_parse_servent (cha __libc_lock_define_initialized (static, lock) +struct response_t +{ + char *val; + struct response_t *next; +}; + struct intern_t { - bool_t new_start; - char *oldkey; - int oldkeylen; + struct response_t *start; + struct response_t *next; }; typedef struct intern_t intern_t; -static intern_t intern = {TRUE, NULL, 0}; +static intern_t intern = { NULL, NULL }; + +static int +saveit (int instatus, char *inkey, int inkeylen, char *inval, + int invallen, char *indata) +{ + intern_t *intern = (intern_t *) indata; + + if (instatus != YP_TRUE) + return instatus; + + if (inkey && inkeylen > 0 && inval && invallen > 0) + { + if (intern->start == NULL) + { + intern->start = malloc (sizeof (struct response_t)); + intern->next = intern->start; + } + else + { + intern->next->next = malloc (sizeof (struct response_t)); + intern->next = intern->next->next; + } + intern->next->next = NULL; + intern->next->val = malloc (invallen + 1); + strncpy (intern->next->val, inval, invallen); + intern->next->val[invallen] = '\0'; + } + + return 0; +} static enum nss_status -internal_nis_setservent (intern_t * intern) +internal_nis_setservent (intern_t *intern) { - intern->new_start = 1; - if (intern->oldkey != NULL) + char *domainname; + struct ypall_callback ypcb; + enum nss_status status; + + if (yp_get_default_domain (&domainname)) + return NSS_STATUS_UNAVAIL; + + while (intern->start != NULL) { - free (intern->oldkey); - intern->oldkey = NULL; - intern->oldkeylen = 0; + if (intern->start->val != NULL) + free (intern->start->val); + intern->next = intern->start; + intern->start = intern->start->next; + free (intern->next); } - return NSS_STATUS_SUCCESS; + intern->start = NULL; + + ypcb.foreach = saveit; + ypcb.data = (char *) intern; + status = yperr2nss (yp_all (domainname, "services.byname", &ypcb)); + intern->next = intern->start; + + return status; } enum nss_status _nss_nis_setservent (void) @@ -76,13 +126,16 @@ _nss_nis_setservent (void) static enum nss_status internal_nis_endservent (intern_t * intern) { - intern->new_start = 1; - if (intern->oldkey != NULL) + while (intern->start != NULL) { - free (intern->oldkey); - intern->oldkey = NULL; - intern->oldkeylen = 0; + if (intern->start->val != NULL) + free (intern->start->val); + intern->next = intern->start; + intern->start = intern->start->next; + free (intern->next); } + intern->start = NULL; + return NSS_STATUS_SUCCESS; } @@ -104,57 +157,25 @@ static enum nss_status internal_nis_getservent_r (struct servent *serv, char *buffer, size_t buflen, intern_t *data) { - char *domain; - char *result; - int len, parse_res; - char *outkey; - int keylen; + int parse_res; char *p; - if (yp_get_default_domain (&domain)) - return NSS_STATUS_UNAVAIL; + if (data->start == NULL) + internal_nis_setservent (data); /* Get the next entry until we found a correct one. */ do { - enum nss_status retval; - - if (data->new_start) - retval = yperr2nss (yp_first (domain, "services.byname", - &outkey, &keylen, &result, &len)); - else - retval = yperr2nss ( yp_next (domain, "services.byname", - data->oldkey, data->oldkeylen, - &outkey, &keylen, &result, &len)); - - if (retval != NSS_STATUS_SUCCESS) - { - if (retval == NSS_STATUS_TRYAGAIN) - __set_errno (EAGAIN); - return retval; - } - - if ((size_t) (len + 1) > buflen) - { - free (result); - __set_errno (ERANGE); - return NSS_STATUS_TRYAGAIN; - } - - p = strncpy (buffer, result, len); - buffer[len] = '\0'; + if (data->next == NULL) + return NSS_STATUS_NOTFOUND; + p = strcpy (buffer, data->next->val); + data->next = data->next->next; while (isspace (*p)) ++p; - free (result); parse_res = _nss_files_parse_servent (p, serv, buffer, buflen); if (!parse_res && errno == ERANGE) return NSS_STATUS_TRYAGAIN; - - free (data->oldkey); - data->oldkey = outkey; - data->oldkeylen = keylen; - data->new_start = 0; } while (!parse_res); @@ -179,11 +200,11 @@ enum nss_status _nss_nis_getservbyname_r (const char *name, char *protocol, struct servent *serv, char *buffer, size_t buflen) { - intern_t data = {TRUE, NULL, 0}; + intern_t data = { NULL, NULL }; enum nss_status status; int found; - if (name == NULL || protocol == NULL) + if (name == NULL) { __set_errno (EINVAL); return NSS_STATUS_UNAVAIL; @@ -198,13 +219,17 @@ _nss_nis_getservbyname_r (const char *na ((status = internal_nis_getservent_r (serv, buffer, buflen, &data)) == NSS_STATUS_SUCCESS)) { - if (strcmp (serv->s_name, name) == 0) - { - if (strcmp (serv->s_proto, protocol) == 0) - { - found = 1; - } - } + if (protocol == NULL || strcmp (serv->s_proto, protocol) == 0) + { + char **cp; + + if (strcmp (serv->s_name, name) == 0) + found = 1; + else + for (cp = serv->s_aliases; *cp; cp++) + if (strcmp (name, *cp) == 0) + found = 1; + } } internal_nis_endservent (&data); @@ -219,7 +244,7 @@ enum nss_status _nss_nis_getservbyport_r (int port, char *protocol, struct servent *serv, char *buffer, size_t buflen) { - intern_t data = {TRUE, NULL, 0}; + intern_t data = { NULL, NULL }; enum nss_status status; int found; diff -durpN glibc-2.0.1/nis/rpcsvc/yp_prot.h glibc-2.0.2/nis/rpcsvc/yp_prot.h --- glibc-2.0.1/nis/rpcsvc/yp_prot.h Mon Feb 3 21:03:33 1997 +++ glibc-2.0.2/nis/rpcsvc/yp_prot.h Thu Feb 13 00:09:24 1997 @@ -160,11 +160,11 @@ struct ypresp_key_val { implementation somehow must change the order internally. We don't want to follow this bad example since the user should be able to use rpcgen on this file. */ - keydat key; - valdat val; + keydat keydat; + valdat valdat; #else - valdat val; - keydat key; + valdat valdat; + keydat keydat; #endif }; diff -durpN glibc-2.0.1/nis/ypclnt.c glibc-2.0.2/nis/ypclnt.c --- glibc-2.0.1/nis/ypclnt.c Tue Dec 17 07:38:27 1996 +++ glibc-2.0.2/nis/ypclnt.c Sun Mar 16 19:44:36 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Thorsten Kukuk , 1996. @@ -167,7 +167,8 @@ __yp_bind (const char *domain, dom_bindi ypbr.ypbind_resp_u.ypbind_bindinfo.ypbind_binding_addr, sizeof (ysd->dom_server_addr.sin_addr.s_addr)); ysd->dom_vers = YPVERS; - strcpy (ysd->dom_domain, domain); + strncpy (ysd->dom_domain, domain, YPMAXDOMAIN); + ysd->dom_domain[YPMAXDOMAIN] = '\0'; } if (ysd->dom_client) diff -durpN glibc-2.0.1/nss/digits_dots.c glibc-2.0.2/nss/digits_dots.c --- glibc-2.0.1/nss/digits_dots.c Tue Jan 7 06:06:46 1997 +++ glibc-2.0.2/nss/digits_dots.c Mon Feb 17 23:08:01 1997 @@ -236,7 +236,10 @@ { if (!*cp) { - if (*--cp == '.') break; + if (*--cp == '.') + break; + if (!strchr (name, ':')) + break; /* All-IPv6-legal, no dot at the end. Fake up a hostent as if we'd actually done a lookup. */ diff -durpN glibc-2.0.1/nss/nss_files/files-hosts.c glibc-2.0.2/nss/nss_files/files-hosts.c --- glibc-2.0.1/nss/nss_files/files-hosts.c Wed Jan 29 10:24:12 1997 +++ glibc-2.0.2/nss/nss_files/files-hosts.c Sun Mar 16 19:52:11 1997 @@ -98,6 +98,13 @@ DB_LOOKUP (hostbyname, ,, LOOKUP_NAME (h_name, h_aliases), const char *name) +DB_LOOKUP (hostbyname2, ,, + { + if (result->h_addrtype != af) + continue; + LOOKUP_NAME (h_name, h_aliases) + }, const char *name, int af) + DB_LOOKUP (hostbyaddr, ,, { if (result->h_addrtype == type && result->h_length == len && diff -durpN glibc-2.0.1/nss/nss_files/files-service.c glibc-2.0.2/nss/nss_files/files-service.c --- glibc-2.0.1/nss/nss_files/files-service.c Wed Jan 29 10:25:58 1997 +++ glibc-2.0.2/nss/nss_files/files-service.c Mon Mar 17 23:22:01 1997 @@ -41,8 +41,8 @@ LINE_PARSER DB_LOOKUP (servbyname, 1 + strlen (name), (".%s/%s", name, proto), { - /* Must match both protocol and name. */ - if (strcmp (result->s_proto, proto)) + /* Must match both protocol (if specified) and name. */ + if (proto != NULL && strcmp (result->s_proto, proto)) continue; LOOKUP_NAME (s_name, s_aliases) }, diff -durpN glibc-2.0.1/po/libc.pot glibc-2.0.2/po/libc.pot --- glibc-2.0.1/po/libc.pot Sun Jan 26 09:14:37 1997 +++ glibc-2.0.2/po/libc.pot Sun Feb 9 22:18:31 1997 @@ -5,8 +5,8 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: libc 2.0\n" -"POT-Creation-Date: 1997-01-26 15:14+0100\n" +"Project-Id-Version: libc 2.0.1\n" +"POT-Creation-Date: 1997-02-04 16:58+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+DIST\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -178,47 +178,47 @@ msgstr "" msgid "%s: error in state machine" msgstr "" -#: posix/getopt.c:733 +#: posix/getopt.c:788 #, c-format msgid "%s: illegal option -- %c\n" msgstr "" -#: posix/getopt.c:736 +#: posix/getopt.c:791 #, c-format msgid "%s: invalid option -- %c\n" msgstr "" -#: posix/getopt.c:657 +#: posix/getopt.c:712 #, c-format msgid "%s: option `%c%s' doesn't allow an argument\n" msgstr "" -#: posix/getopt.c:628 +#: posix/getopt.c:683 #, c-format msgid "%s: option `%s' is ambiguous\n" msgstr "" -#: posix/getopt.c:674 posix/getopt.c:847 +#: posix/getopt.c:729 posix/getopt.c:902 #, c-format msgid "%s: option `%s' requires an argument\n" msgstr "" -#: posix/getopt.c:652 +#: posix/getopt.c:707 #, c-format msgid "%s: option `--%s' doesn't allow an argument\n" msgstr "" -#: posix/getopt.c:831 +#: posix/getopt.c:886 #, c-format msgid "%s: option `-W %s' doesn't allow an argument\n" msgstr "" -#: posix/getopt.c:813 +#: posix/getopt.c:868 #, c-format msgid "%s: option `-W %s' is ambiguous\n" msgstr "" -#: posix/getopt.c:766 posix/getopt.c:896 +#: posix/getopt.c:821 posix/getopt.c:951 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "" @@ -233,12 +233,12 @@ msgstr "" msgid "%s: premature end of file" msgstr "" -#: posix/getopt.c:707 +#: posix/getopt.c:762 #, c-format msgid "%s: unrecognized option `%c%s'\n" msgstr "" -#: posix/getopt.c:703 +#: posix/getopt.c:758 #, c-format msgid "%s: unrecognized option `--%s'\n" msgstr "" Binary files glibc-2.0.1/po/sv.mo and glibc-2.0.2/po/sv.mo differ diff -durpN glibc-2.0.1/po/sv.po glibc-2.0.2/po/sv.po --- glibc-2.0.1/po/sv.po Sun Jan 5 21:50:49 1997 +++ glibc-2.0.2/po/sv.po Mon Jan 6 17:05:35 1997 @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 1.99\n" "POT-Creation-Date: 1996-12-03 13:50+0100\n" -"PO-Revision-Date: $Date: 1997/01/06 02:50:49 $\n" +"PO-Revision-Date: $Date: 1997/01/06 22:05:35 $\n" "Last-Translator: Jan Djärv \n" "Language-Team: Swedish \n" "MIME-Version: 1.0\n" diff -durpN glibc-2.0.1/posix/Makefile glibc-2.0.2/posix/Makefile --- glibc-2.0.1/posix/Makefile Sun Dec 29 11:36:52 1996 +++ glibc-2.0.2/posix/Makefile Sun Mar 16 19:10:51 1997 @@ -1,4 +1,4 @@ -# Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc. +# Copyright (C) 1991, 92, 93, 94, 95, 96, 97 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 @@ -27,7 +27,7 @@ headers := sys/utsname.h sys/times.h sys utsnamelen.h confname.h waitflags.h waitstatus.h sys/unistd.h \ sched.h schedbits.h re_comp.h wait.h -distribute := confstr.h +distribute := confstr.h TESTS TESTS2C.sed testcases.h routines := \ uname \ @@ -43,18 +43,20 @@ routines := \ pathconf sysconf fpathconf \ glob fnmatch regex \ confstr \ - getopt getopt1 \ + getopt getopt1 getopt_init \ sched_setp sched_getp sched_sets sched_gets sched_yield sched_primax \ sched_primin sched_rr_gi \ getaddrinfo aux := init-posix environ -tests := tstgetopt testfnm +tests := tstgetopt testfnm runtests others := getconf install-bin := getconf install-lib := libposix.a gpl2lgpl := getopt.c getopt1.c getopt.h regex.c regex.h +before-compile := testcases.h + include ../Rules CFLAGS-regex.c = -Wno-unused -Wno-strict-prototypes @@ -62,6 +64,11 @@ CFLAGS-getaddrinfo.c = -DRESOLVER $(objpfx)libposix.a: $(dep-dummy-lib); $(make-dummy-lib) lib: $(objpfx)libposix.a + +testcases.h: TESTS TESTS2C.sed + sed -f TESTS2C.sed < $< > $@T + mv -f $@T $@ + test ! -d CVS || cvs commit -mRegenerated $@ # Make the standalone glob/fnmatch package. diff -durpN glibc-2.0.1/posix/TESTS glibc-2.0.2/posix/TESTS --- glibc-2.0.1/posix/TESTS Wed Dec 31 19:00:00 1969 +++ glibc-2.0.2/posix/TESTS Sun Mar 16 19:08:56 1997 @@ -0,0 +1,159 @@ +0:(.*)*\1:xx +0:^: +0:$: +0:^$: +0:^a$:a +0:abc:abc +1:abc:xbc +1:abc:axc +1:abc:abx +0:abc:xabcy +0:abc:ababc +0:ab*c:abc +0:ab*bc:abc +0:ab*bc:abbc +0:ab*bc:abbbbc +0:ab+bc:abbc +1:ab+bc:abc +1:ab+bc:abq +0:ab+bc:abbbbc +0:ab?bc:abbc +0:ab?bc:abc +1:ab?bc:abbbbc +0:ab?c:abc +0:^abc$:abc +1:^abc$:abcc +0:^abc:abcc +1:^abc$:aabc +0:abc$:aabc +0:^:abc +0:$:abc +0:a.c:abc +0:a.c:axc +0:a.*c:axyzc +1:a.*c:axyzd +1:a[bc]d:abc +0:a[bc]d:abd +1:a[b-d]e:abd +0:a[b-d]e:ace +0:a[b-d]:aac +0:a[-b]:a- +0:a[b-]:a- +1:a[b-a]:- +2:a[]b:- +2:a[:- +0:a]:a] +0:a[]]b:a]b +0:a[^bc]d:aed +1:a[^bc]d:abd +0:a[^-b]c:adc +1:a[^-b]c:a-c +1:a[^]b]c:a]c +0:a[^]b]c:adc +0:ab|cd:abc +0:ab|cd:abcd +0:()ef:def +0:()*:- +1:*a:- +0:^*:- +0:$*:- +1:(*)b:- +1:$b:b +2:a\:- +0:a\(b:a(b +0:a\(*b:ab +0:a\(*b:a((b +1:a\x:a\x +1:abc):- +2:(abc:- +0:((a)):abc +0:(a)b(c):abc +0:a+b+c:aabbabc +0:a**:- +0:a*?:- +0:(a*)*:- +0:(a*)+:- +0:(a|)*:- +0:(a*|b)*:- +0:(a+|b)*:ab +0:(a+|b)+:ab +0:(a+|b)?:ab +0:[^ab]*:cde +0:(^)*:- +0:(ab|)*:- +2:)(:- +1:abc: +1:abc: +0:a*: +0:([abc])*d:abbbcd +0:([abc])*bcd:abcd +0:a|b|c|d|e:e +0:(a|b|c|d|e)f:ef +0:((a*|b))*:- +0:abcd*efg:abcdefg +0:ab*:xabyabbbz +0:ab*:xayabbbz +0:(ab|cd)e:abcde +0:[abhgefdc]ij:hij +1:^(ab|cd)e:abcde +0:(abc|)ef:abcdef +0:(a|b)c*d:abcd +0:(ab|ab*)bc:abc +0:a([bc]*)c*:abc +0:a([bc]*)(c*d):abcd +0:a([bc]+)(c*d):abcd +0:a([bc]*)(c+d):abcd +0:a[bcd]*dcdcde:adcdcde +1:a[bcd]+dcdcde:adcdcde +0:(ab|a)b*c:abc +0:((a)(b)c)(d):abcd +0:[A-Za-z_][A-Za-z0-9_]*:alpha +0:^a(bc+|b[eh])g|.h$:abh +0:(bc+d$|ef*g.|h?i(j|k)):effgz +0:(bc+d$|ef*g.|h?i(j|k)):ij +1:(bc+d$|ef*g.|h?i(j|k)):effg +1:(bc+d$|ef*g.|h?i(j|k)):bcdd +0:(bc+d$|ef*g.|h?i(j|k)):reffgz +1:((((((((((a)))))))))):- +0:(((((((((a))))))))):a +1:multiple words of text:uh-uh +0:multiple words:multiple words, yeah +0:(.*)c(.*):abcde +1:\((.*),:(.*)\) +1:[k]:ab +0:abcd:abcd +0:a(bc)d:abcd +0:a[-]?c:ac +0:(....).*\1:beriberi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Qaddafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mo'ammar Gadhafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Kaddafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Qadhafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Moammar El Kadhafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Gadafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mu'ammar al-Qadafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Moamer El Kazzafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Moamar al-Gaddafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mu'ammar Al Qathafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Al Qathafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mo'ammar el-Gadhafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Moamar El Kadhafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar al-Qadhafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mu'ammar al-Qadhdhafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mu'ammar Qadafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Moamar Gaddafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mu'ammar Qadhdhafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Khaddafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar al-Khaddafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mu'amar al-Kadafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Ghaddafy +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Ghadafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Ghaddafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muamar Kaddafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Quathafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muammar Gheddafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Muamar Al-Kaddafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Moammar Khadafy +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Moammar Qudhafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mu'ammar al-Qaddafi +0:M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]:Mulazim Awwal Mu'ammar Muhammad Abu Minyar al-Qadhafi diff -durpN glibc-2.0.1/posix/TESTS2C.sed glibc-2.0.2/posix/TESTS2C.sed --- glibc-2.0.1/posix/TESTS2C.sed Wed Dec 31 19:00:00 1969 +++ glibc-2.0.2/posix/TESTS2C.sed Sun Mar 16 19:08:56 1997 @@ -0,0 +1,2 @@ +s/\\/\\\\/g +s/\(.*\):\(.*\):\(.*\)/ {\1, "\2", "\3"},/ diff -durpN glibc-2.0.1/posix/getopt.c glibc-2.0.2/posix/getopt.c --- glibc-2.0.1/posix/getopt.c Mon Jan 27 22:15:03 1997 +++ glibc-2.0.2/posix/getopt.c Sun Feb 9 22:18:33 1997 @@ -253,37 +253,39 @@ static int last_nonopt; /* Bash 2.0 gives us an environment variable containing flags indicating ARGV elements that should not be considered arguments. */ -static char *nonoption_flags; +char *__getopt_nonoption_flags; static int nonoption_flags_max_len; static int nonoption_flags_len; static int original_argc; static char *const *original_argv; +extern pid_t __libc_pid; + /* Make sure the environment variable bash 2.0 puts in the environment is valid for the getopt call we must make sure that the ARGV passed to getopt is that one passed to the process. */ -static void store_args (int argc, char *const *argv) __attribute__ ((unused)); static void -store_args (int argc, char *const *argv) +__attribute__ ((unused)) +store_args_and_env (int argc, char *const *argv) { /* XXX This is no good solution. We should rather copy the args so that we can compare them later. But we must not use malloc(3). */ original_argc = argc; original_argv = argv; } -text_set_element (__libc_subinit, store_args); +text_set_element (__libc_subinit, store_args_and_env); # define SWAP_FLAGS(ch1, ch2) \ if (nonoption_flags_len > 0) \ { \ - char __tmp = nonoption_flags[ch1]; \ - nonoption_flags[ch1] = nonoption_flags[ch2]; \ - nonoption_flags[ch2] = __tmp; \ + char __tmp = __getopt_nonoption_flags[ch1]; \ + __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \ + __getopt_nonoption_flags[ch2] = __tmp; \ } -#else +#else /* !_LIBC */ # define SWAP_FLAGS(ch1, ch2) -#endif +#endif /* _LIBC */ /* Exchange two adjacent subsequences of ARGV. One subsequence is elements [first_nonopt,last_nonopt) @@ -313,10 +315,10 @@ exchange (argv) but it consists of two parts that need to be swapped next. */ #ifdef _LIBC - /* First make sure the handling of the `nonoption_flags' string can - work normally. Our top argument must be in the range of the - string. */ - if (nonoption_flags_len != 0 && top >= nonoption_flags_max_len) + /* First make sure the handling of the `__getopt_nonoption_flags' + string can work normally. Our top argument must be in the range + of the string. */ + if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len) { /* We must extend the array. The user plays games with us and presents new arguments. */ @@ -325,11 +327,11 @@ exchange (argv) nonoption_flags_len = nonoption_flags_max_len = 0; else { - memcpy (new_str, nonoption_flags, nonoption_flags_max_len); + memcpy (new_str, __getopt_nonoption_flags, nonoption_flags_max_len); memset (&new_str[nonoption_flags_max_len], '\0', top + 1 - nonoption_flags_max_len); nonoption_flags_max_len = top + 1; - nonoption_flags = new_str; + __getopt_nonoption_flags = new_str; } } #endif @@ -420,36 +422,29 @@ _getopt_initialize (argc, argv, optstrin if (posixly_correct == NULL && argc == original_argc && argv == original_argv) { - /* Bash 2.0 puts a special variable in the environment for each - command it runs, specifying which ARGV elements are the results of - file name wildcard expansion and therefore should not be - considered as options. */ - if (nonoption_flags_max_len == 0) { - char var[100]; - const char *orig_str; - sprintf (var, "_%d_GNU_nonoption_argv_flags_", getpid ()); - orig_str = getenv (var); - if (orig_str == NULL || orig_str[0] == '\0') + if (__getopt_nonoption_flags == NULL + || __getopt_nonoption_flags[0] == '\0') nonoption_flags_max_len = -1; else { + const char *orig_str = __getopt_nonoption_flags; int len = nonoption_flags_max_len = strlen (orig_str); if (nonoption_flags_max_len < argc) nonoption_flags_max_len = argc; - nonoption_flags = (char *) malloc (nonoption_flags_max_len); - if (nonoption_flags == NULL) + __getopt_nonoption_flags = + (char *) malloc (nonoption_flags_max_len); + if (__getopt_nonoption_flags == NULL) nonoption_flags_max_len = -1; else { - memcpy (nonoption_flags, orig_str, len); - memset (&nonoption_flags[len], '\0', + memcpy (__getopt_nonoption_flags, orig_str, len); + memset (&__getopt_nonoption_flags[len], '\0', nonoption_flags_max_len - len); } } } - nonoption_flags_len = nonoption_flags_max_len; } else @@ -540,7 +535,7 @@ _getopt_internal (argc, argv, optstring, #ifdef _LIBC #define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \ || (optind < nonoption_flags_len \ - && nonoption_flags[optind] == '1')) + && __getopt_nonoption_flags[optind] == '1')) #else #define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0') #endif diff -durpN glibc-2.0.1/posix/getopt_init.c glibc-2.0.2/posix/getopt_init.c --- glibc-2.0.1/posix/getopt_init.c Wed Dec 31 19:00:00 1969 +++ glibc-2.0.2/posix/getopt_init.c Mon Feb 10 23:45:17 1997 @@ -0,0 +1,77 @@ +/* Perform additional initialization for getopt functions in GNU libc. + Copyright (C) 1997 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. */ + +/* Attention: this file is *not* necessary when the GNU getopt functions + are used outside the GNU libc. Some additional functionality of the + getopt functions in GNU libc require this additional work. */ + +#include +#include +#include +#include + +#include "../stdio-common/_itoa.h" + +/* External variable to synchronize work. */ +extern char *__getopt_nonoption_flags; + +extern pid_t __libc_pid; + + +/* Remove the environment variable "__GNU_nonoption_argv_flags_" if + it is still available. If the getopt functions are also used in the + application it does not exist anymore since it was saved for the use + in getopt. */ +void +__getopt_clean_environment (void) +{ + /* Bash 2.0 puts a special variable in the environment for each + command it runs, specifying which ARGV elements are the results + of file name wildcard expansion and therefore should not be + considered as options. */ + static const char envvar_tail[] = "_GNU_nonoption_argv_flags_"; + char var[100]; + char *cp, **ep; + size_t len; + + /* Generate name of the environment variable. We must know the PID + and we must not use `sprintf'. */ + if (__libc_pid == 0) + __libc_pid = getpid (); + + /* Construct "__GNU_nonoption_argv_flags_" string. */ + cp = memcpy (&var[sizeof (var) - sizeof (envvar_tail)], envvar_tail, + sizeof (envvar_tail)); + cp = _itoa_word (__libc_pid, cp, 10, 0); + *--cp = '_'; + len = (var + sizeof (var) - 1) - cp; + + for (ep = __environ; *ep != NULL; ++ep) + if (!strncmp (*ep, cp, len) && (*ep)[len] == '=') + { + /* Found it. Store this pointer and move later ones back. */ + char **dp = ep; + __getopt_nonoption_flags = &(*ep)[len + 1]; + do + dp[0] = dp[1]; + while (*dp++); + /* Continue the loop in case the name appears again. */ + } +} diff -durpN glibc-2.0.1/posix/glob.c glibc-2.0.2/posix/glob.c --- glibc-2.0.1/posix/glob.c Mon Dec 16 23:22:51 1996 +++ glibc-2.0.2/posix/glob.c Thu Mar 20 23:55:43 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc. +/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 Free Software Foundation, Inc. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as @@ -33,6 +33,10 @@ #include #include +/* Outcomment the following line for production quality code. */ +/* #define NDEBUG 1 */ +#include + /* Comment out all this code if we are using the GNU C Library, and are not actually compiling the library itself. This code is part of the GNU C @@ -159,7 +163,7 @@ extern void bcopy (); ((void) ((better_be_zero) == 0 ? (bzero((s), (n)), 0) : (abort(), 0))) #endif /* Not ANSI_STRING. */ -#ifndef HAVE_STRCOLL +#if !defined HAVE_STRCOLL && !defined _LIBC #define strcoll strcmp #endif @@ -254,6 +258,51 @@ static int glob_in_dir __P ((const char static int prefix_array __P ((const char *prefix, char **array, size_t n)); static int collated_compare __P ((const __ptr_t, const __ptr_t)); + +/* Find the end of the sub-pattern in a brace expression. We define + this as an inline function if the compiler permits. */ +static +#if __GNUC__ - 0 >= 2 +inline +#endif +const char * +next_brace_sub (const char *begin) +{ + unsigned int depth = 0; + const char *cp = begin; + + while (1) + { + if (depth == 0) + { + if (*cp != ',' && *cp != '}' && *cp != '\0') + { + if (*cp == '{') + ++depth; + ++cp; + continue; + } + } + else + { + while (*cp != '\0' && (*cp != '}' || depth > 0)) + { + if (*cp == '}') + ++depth; + ++cp; + } + if (*cp == '\0') + /* An incorrectly terminated brace expression. */ + return NULL; + + continue; + } + break; + } + + return cp; +} + /* Do glob searching for PATTERN, placing results in PGLOB. The bits defined above may be set in FLAGS. If a directory cannot be opened or read and ERRFUNC is not nil, @@ -286,38 +335,59 @@ glob (pattern, flags, errfunc, pglob) const char *begin = strchr (pattern, '{'); if (begin != NULL) { + /* Allocate working buffer large enough for our work. Note that + we have at least an opening and closing brace. */ int firstc; - size_t restlen; - const char *p, *end, *next; - unsigned int depth = 0; + char *alt_start; + const char *p; + const char *next; + const char *rest; + size_t rest_len; +#ifdef __GNUC__ + char onealt[strlen (pattern) - 1]; +#else + char *onealt = (char *) malloc (strlen (pattern) - 1); + if (onealt == NULL) + { + if (!(flags & GLOB_APPEND)) + globfree (pglob); + return GLOB_NOSPACE; + } +#endif - /* Find the end of the brace expression, by counting braces. - While we're at it, notice the first comma at top brace level. */ - end = begin + 1; - next = NULL; - while (1) + /* We know the prefix for all sub-patterns. */ + memcpy (onealt, pattern, begin - pattern); + alt_start = &onealt[begin - pattern]; + + /* Find the first sub-pattern and at the same time find the + rest after the closing brace. */ + next = next_brace_sub (begin + 1); + if (next == NULL) { - switch (*end++) + /* It is an illegal expression. */ +#ifndef __GNUC__ + free (onealt); +#endif + return glob (pattern, flags & ~GLOB_BRACE, errfunc, pglob); + } + + /* Now find the end of the whole brace expression. */ + rest = next; + while (*rest != '}') + { + rest = next_brace_sub (rest + 1); + if (rest == NULL) { - case ',': - if (depth == 0 && next == NULL) - next = end; - continue; - case '{': - ++depth; - continue; - case '}': - if (depth-- == 0) - break; - continue; - case '\0': - return glob (pattern, flags &~ GLOB_BRACE, errfunc, pglob); + /* It is an illegal expression. */ +#ifndef __GNUC__ + free (onealt); +#endif + return glob (pattern, flags & ~GLOB_BRACE, errfunc, pglob); } - break; } - restlen = strlen (end) + 1; - if (next == NULL) - next = end; + /* Please note that we now can be sure the brace expression + is well-formed. */ + rest_len = strlen (++rest) + 1; /* We have a brace expression. BEGIN points to the opening {, NEXT points past the terminator of the first element, and END @@ -334,72 +404,47 @@ glob (pattern, flags, errfunc, pglob) } firstc = pglob->gl_pathc; - /* In this loop P points to the beginning of the current element - and NEXT points past its terminator. */ p = begin + 1; while (1) { - /* Construct a whole name that is one of the brace - alternatives in a temporary buffer. */ int result; - size_t bufsz = (begin - pattern) + (next - 1 - p) + restlen; -#ifdef __GNUC__ - char onealt[bufsz]; -#else - char *onealt = malloc (bufsz); - if (onealt == NULL) - { - if (!(flags & GLOB_APPEND)) - globfree (pglob); - return GLOB_NOSPACE; - } -#endif - memcpy (onealt, pattern, begin - pattern); - memcpy (&onealt[begin - pattern], p, next - 1 - p); - memcpy (&onealt[(begin - pattern) + (next - 1 - p)], - end, restlen); + + /* Construct the new glob expression. */ + memcpy (alt_start, p, next - p); + memcpy (&alt_start[next - p], rest, rest_len); + result = glob (onealt, - ((flags & ~(GLOB_NOCHECK|GLOB_NOMAGIC)) | - GLOB_APPEND), errfunc, pglob); -#ifndef __GNUC__ - free (onealt); -#endif + ((flags & ~(GLOB_NOCHECK|GLOB_NOMAGIC)) + | GLOB_APPEND), errfunc, pglob); /* If we got an error, return it. */ if (result && result != GLOB_NOMATCH) { +#ifndef __GNUC__ + free (onealt); +#endif if (!(flags & GLOB_APPEND)) globfree (pglob); return result; } - /* Advance past this alternative and process the next. */ - p = next; - depth = 0; - scan: - switch (*p++) - { - case ',': - if (depth == 0) - { - /* Found the next alternative. Loop to glob it. */ - next = p; - continue; - } - goto scan; - case '{': - ++depth; - goto scan; - case '}': - if (depth-- == 0) - /* End of the brace expression. Break out of the loop. */ - break; - goto scan; - } + if (*next == '}') + /* We saw the last entry. */ + break; + + p = next + 1; + next = next_brace_sub (p); + assert (next != NULL); } - if (pglob->gl_pathc == firstc && - !(flags & (GLOB_NOCHECK|GLOB_NOMAGIC))) +#ifndef __GNUC__ + free (onealt); +#endif + + if (pglob->gl_pathc != firstc) + /* We found some entries. */ + return 0; + else if (!(flags & (GLOB_NOCHECK|GLOB_NOMAGIC))) return GLOB_NOMATCH; } } @@ -452,19 +497,19 @@ glob (pattern, flags, errfunc, pglob) #ifndef VMS if ((flags & GLOB_TILDE) && dirname[0] == '~') { - if (dirname[1] == '\0') + if (dirname[1] == '\0' || dirname[1] == '/') { /* Look up home directory. */ - dirname = getenv ("HOME"); + char *home_dir = getenv ("HOME"); #ifdef _AMIGA - if (dirname == NULL || dirname[0] == '\0') - dirname = "SYS:"; + if (home_dir == NULL || home_dir[0] == '\0') + home_dir = "SYS:"; #else #ifdef WIN32 - if (dirname == NULL || dirname[0] == '\0') - dirname = "c:/users/default"; /* poor default */ + if (home_dir == NULL || home_dir[0] == '\0') + home_dir = "c:/users/default"; /* poor default */ #else - if (dirname == NULL || dirname[0] == '\0') + if (home_dir == NULL || home_dir[0] == '\0') { extern char *getlogin __P ((void)); extern int getlogin_r __P ((char *, size_t)); @@ -501,39 +546,74 @@ glob (pattern, flags, errfunc, pglob) success = p != NULL; #endif if (success) - dirname = p->pw_dir; + home_dir = p->pw_dir; } } - if (dirname == NULL || dirname[0] == '\0') - dirname = (char *) "~"; /* No luck. */ + if (home_dir == NULL || home_dir[0] == '\0') + home_dir = (char *) "~"; /* No luck. */ #endif /* WIN32 */ #endif + /* Now construct the full directory. */ + if (dirname[1] == '\0') + dirname = home_dir; + else + { + char *newp; + size_t home_len = strlen (home_dir); + newp = __alloca (home_len + dirlen); + memcpy (newp, home_dir, home_len); + memcpy (&newp[home_len], &dirname[1], dirlen); + dirname = newp; + } } +#if !defined _AMIGA && !defined WIN32 else { -#ifdef _AMIGA - if (dirname == NULL || dirname[0] == '\0') - dirname = "SYS:"; -#else -#ifdef WIN32 - if (dirname == NULL || dirname[0] == '\0') - dirname = "c:/users/default"; /* poor default */ -#else + char *end_name = strchr (dirname, '/'); + char *user_name; + char *home_dir; + + if (end_name == NULL) + user_name = dirname + 1; + else + { + user_name = __alloca (end_name - dirname); + memcpy (user_name, dirname + 1, end_name - dirname); + user_name[end_name - dirname - 1] = '\0'; + } + /* Look up specific user's home directory. */ + { #if defined HAVE_GETPWNAM_R || defined _LIBC - size_t buflen = sysconf (_SC_GETPW_R_SIZE_MAX); - char *pwtmpbuf = __alloca (buflen); - struct passwd pwbuf, *p; - if (__getpwnam_r (dirname + 1, &pwbuf, pwtmpbuf, buflen, &p) >= 0) - dirname = p->pw_dir; + size_t buflen = sysconf (_SC_GETPW_R_SIZE_MAX); + char *pwtmpbuf = __alloca (buflen); + struct passwd pwbuf, *p; + if (__getpwnam_r (user_name, &pwbuf, pwtmpbuf, buflen, &p) >= 0) + home_dir = p->pw_dir; + else + home_dir = NULL; #else - struct passwd *p = getpwnam (dirname + 1); - if (p != NULL) - dirname = p->pw_dir; -#endif -#endif /* WIN32 */ + struct passwd *p = getpwnam (user_name); + if (p != NULL) + home_dir = p->pw_dir; + else + home_dir = NULL; #endif + } + /* If we found a home directory use this. */ + if (home_dir != NULL) + { + char *newp; + size_t home_len = strlen (home_dir); + size_t rest_len = end_name == NULL ? 0 : strlen (end_name); + newp = __alloca (home_len + rest_len + 1); + memcpy (newp, home_dir, home_len); + memcpy (&newp[home_len], end_name, rest_len); + newp[home_len + rest_len] = '\0'; + dirname = newp; + } } +#endif /* Not Amiga && not Win32. */ } #endif /* Not VMS. */ diff -durpN glibc-2.0.1/posix/regex.c glibc-2.0.2/posix/regex.c --- glibc-2.0.1/posix/regex.c Tue Oct 29 15:05:23 1996 +++ glibc-2.0.2/posix/regex.c Sun Mar 16 19:11:08 1997 @@ -3,25 +3,25 @@ (Implements POSIX draft P10003.2/D11.2, except for internationalization features.) - Copyright (C) 1993, 1994, 1995, 1996 Free Software Foundation, Inc. + Copyright (C) 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc. -This file is part of the GNU C Library. Its master source is NOT part of -the C library, however. The master source lives in /gd/gnu/lib. + This file is part of the GNU C Library. Its master source is NOT part of + the C library, however. The master source lives in /gd/gnu/lib. -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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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. */ /* AIX requires this to be the first thing in the file. */ #if defined (_AIX) && !defined (REGEX_MALLOC) @@ -35,8 +35,12 @@ Cambridge, MA 02139, USA. */ #include #endif +#if defined(STDC_HEADERS) && !defined(emacs) +#include +#else /* We need this for `regex.h', and perhaps for the Emacs include files. */ #include +#endif /* This is for other GNU distributions with internationalized messages. */ #if HAVE_LIBINTL_H || defined (_LIBC) @@ -500,6 +504,7 @@ typedef enum } while (0) #ifdef DEBUG +static void extract_number _RE_ARGS ((int *dest, unsigned char *source)); static void extract_number (dest, source) int *dest; @@ -527,6 +532,8 @@ extract_number (dest, source) } while (0) #ifdef DEBUG +static void extract_number_and_incr _RE_ARGS ((int *destination, + unsigned char **source)); static void extract_number_and_incr (destination, source) int *destination; @@ -890,6 +897,13 @@ print_double_string (where, string1, siz } } +void +printchar (c) + int c; +{ + putc (c, stderr); +} + #else /* not DEBUG */ #undef assert @@ -1007,9 +1021,35 @@ static const char *re_error_msgid[] = #endif /* Roughly the maximum number of failure points on the stack. Would be - exactly that if always used MAX_FAILURE_ITEMS items each time we failed. + exactly that if always used MAX_FAILURE_SPACE each time we failed. This is a variable only so users of regex can assign to it; we never change it ourselves. */ + +#ifdef INT_IS_16BIT + +#if defined (MATCH_MAY_ALLOCATE) +long re_max_failures = 4000; +#else +long re_max_failures = 2000; +#endif + +union fail_stack_elt +{ + unsigned char *pointer; + long integer; +}; + +typedef union fail_stack_elt fail_stack_elt_t; + +typedef struct +{ + fail_stack_elt_t *stack; + unsigned long size; + unsigned long avail; /* Offset of next open position. */ +} fail_stack_type; + +#else /* not INT_IS_16BIT */ + #if defined (MATCH_MAY_ALLOCATE) /* 4400 was enough to cause a crash on Alpha OSF/1, whose default stack limit is 2mb. */ @@ -1033,6 +1073,8 @@ typedef struct unsigned avail; /* Offset of next open position. */ } fail_stack_type; +#endif /* INT_IS_16BIT */ + #define FAIL_STACK_EMPTY() (fail_stack.avail == 0) #define FAIL_STACK_PTR_EMPTY() (fail_stack_ptr->avail == 0) #define FAIL_STACK_FULL() (fail_stack.avail == fail_stack.size) @@ -1123,7 +1165,7 @@ typedef struct /* Used to omit pushing failure point id's when we're not debugging. */ #ifdef DEBUG #define DEBUG_PUSH PUSH_FAILURE_INT -#define DEBUG_POP(item_addr) *(item_addr) = POP_FAILURE_INT () +#define DEBUG_POP(item_addr) (item_addr)->integer = POP_FAILURE_INT () #else #define DEBUG_PUSH(item) #define DEBUG_POP(item_addr) @@ -1144,7 +1186,10 @@ typedef struct char *destination; \ /* Must be int, so when we don't save any registers, the arithmetic \ of 0 + -1 isn't done as unsigned. */ \ - unsigned this_reg; \ + /* Can't be int, since there is not a shred of a guarantee that int \ + is wide enough to hold a value of something to which pointer can \ + be assigned */ \ + s_reg_t this_reg; \ \ DEBUG_STATEMENT (failure_id++); \ DEBUG_STATEMENT (nfailure_points_pushed++); \ @@ -1257,7 +1302,7 @@ typedef struct #define POP_FAILURE_POINT(str, pat, low_reg, high_reg, regstart, regend, reg_info)\ { \ DEBUG_STATEMENT (fail_stack_elt_t failure_id;) \ - unsigned this_reg; \ + s_reg_t this_reg; \ const unsigned char *string_temp; \ \ assert (!FAIL_STACK_EMPTY ()); \ @@ -1288,10 +1333,10 @@ typedef struct DEBUG_PRINT_COMPILED_PATTERN (bufp, pat, pend); \ \ /* Restore register info. */ \ - high_reg = (unsigned) POP_FAILURE_INT (); \ + high_reg = (active_reg_t) POP_FAILURE_INT (); \ DEBUG_PRINT2 (" Popping high active reg: %d\n", high_reg); \ \ - low_reg = (unsigned) POP_FAILURE_INT (); \ + low_reg = (active_reg_t) POP_FAILURE_INT (); \ DEBUG_PRINT2 (" Popping low active reg: %d\n", low_reg); \ \ if (1) \ @@ -1336,6 +1381,9 @@ typedef struct the type of `word', i.e., is something that fits into one item on the failure stack. */ + +/* Declarations and macros for re_match_2. */ + typedef union { fail_stack_elt_t word; @@ -1365,7 +1413,7 @@ typedef union { \ if (!set_regs_matched_done) \ { \ - unsigned r; \ + active_reg_t r; \ set_regs_matched_done = 1; \ for (r = lowest_active_reg; r <= highest_active_reg; r++) \ { \ @@ -1384,11 +1432,25 @@ static char reg_unset_dummy; /* Subroutine declarations and macros for regex_compile. */ -static void store_op1 (), store_op2 (); -static void insert_op1 (), insert_op2 (); -static boolean at_begline_loc_p (), at_endline_loc_p (); -static boolean group_in_compile_stack (); -static reg_errcode_t compile_range (); +static reg_errcode_t regex_compile _RE_ARGS ((const char *pattern, size_t size, + reg_syntax_t syntax, + struct re_pattern_buffer *bufp)); +static void store_op1 _RE_ARGS ((re_opcode_t op, unsigned char *loc, int arg)); +static void store_op2 _RE_ARGS ((re_opcode_t op, unsigned char *loc, + int arg1, int arg2)); +static void insert_op1 _RE_ARGS ((re_opcode_t op, unsigned char *loc, + int arg, unsigned char *end)); +static void insert_op2 _RE_ARGS ((re_opcode_t op, unsigned char *loc, + int arg1, int arg2, unsigned char *end)); +static boolean at_begline_loc_p _RE_ARGS ((const char *pattern, const char *p, + reg_syntax_t syntax)); +static boolean at_endline_loc_p _RE_ARGS ((const char *p, const char *pend, + reg_syntax_t syntax)); +static reg_errcode_t compile_range _RE_ARGS ((const char **p_ptr, + const char *pend, + char *translate, + reg_syntax_t syntax, + unsigned char *b)); /* Fetch the next character in the uncompiled pattern---translating it if necessary. Also cast from a signed character in the constant @@ -1463,26 +1525,39 @@ static reg_errcode_t compile_range (); /* Store a jump with opcode OP at LOC to location TO. We store a relative address offset by the three bytes the jump itself occupies. */ #define STORE_JUMP(op, loc, to) \ - store_op1 (op, loc, (to) - (loc) - 3) + store_op1 (op, loc, (int) ((to) - (loc) - 3)) /* Likewise, for a two-argument jump. */ #define STORE_JUMP2(op, loc, to, arg) \ - store_op2 (op, loc, (to) - (loc) - 3, arg) + store_op2 (op, loc, (int) ((to) - (loc) - 3), arg) /* Like `STORE_JUMP', but for inserting. Assume `b' is the buffer end. */ #define INSERT_JUMP(op, loc, to) \ - insert_op1 (op, loc, (to) - (loc) - 3, b) + insert_op1 (op, loc, (int) ((to) - (loc) - 3), b) /* Like `STORE_JUMP2', but for inserting. Assume `b' is the buffer end. */ #define INSERT_JUMP2(op, loc, to, arg) \ - insert_op2 (op, loc, (to) - (loc) - 3, arg, b) + insert_op2 (op, loc, (int) ((to) - (loc) - 3), arg, b) /* This is not an arbitrary limit: the arguments which represent offsets into the pattern are two bytes long. So if 2^16 bytes turns out to be too small, many things would have to change. */ +/* Any other compiler which, like MSC, has allocation limit below 2^16 + bytes will have to use approach similar to what was done below for + MSC and drop MAX_BUF_SIZE a bit. Otherwise you may end up + reallocating to 0 bytes. Such thing is not going to work too well. + You have been warned!! */ +#ifdef _MSC_VER +/* Microsoft C 16-bit versions limit malloc to approx 65512 bytes. + The REALLOC define eliminates a flurry of conversion warnings, + but is not required. */ +#define MAX_BUF_SIZE 65500L +#define REALLOC(p,s) realloc ((p), (size_t) (s)) +#else #define MAX_BUF_SIZE (1L << 16) - +#define REALLOC(p,s) realloc ((p), (s)) +#endif /* Extend the buffer by twice its current size via realloc and reset the pointers that pointed into the old block to point to the @@ -1496,7 +1571,7 @@ static reg_errcode_t compile_range (); bufp->allocated <<= 1; \ if (bufp->allocated > MAX_BUF_SIZE) \ bufp->allocated = MAX_BUF_SIZE; \ - bufp->buffer = (unsigned char *) realloc (bufp->buffer, bufp->allocated);\ + bufp->buffer = (unsigned char *) REALLOC (bufp->buffer, bufp->allocated);\ if (bufp->buffer == NULL) \ return REG_ESPACE; \ /* If the buffer moved, move all the pointers into it. */ \ @@ -1528,7 +1603,8 @@ typedef unsigned regnum_t; /* Since offsets can go either forwards or backwards, this type needs to be able to hold values from -(MAX_BUF_SIZE - 1) to MAX_BUF_SIZE - 1. */ -typedef int pattern_offset_t; +/* int may be not enough when sizeof(int) == 2. */ +typedef long pattern_offset_t; typedef struct { @@ -1638,6 +1714,10 @@ regex_grow_registers (num_regs) #endif /* not MATCH_MAY_ALLOCATE */ +static boolean group_in_compile_stack _RE_ARGS ((compile_stack_type + compile_stack, + regnum_t regnum)); + /* `regex_compile' compiles PATTERN (of length SIZE) according to SYNTAX. Returns one of error codes defined in `regex.h', or zero for success. @@ -1663,7 +1743,7 @@ regex_grow_registers (num_regs) static reg_errcode_t regex_compile (pattern, size, syntax, bufp) const char *pattern; - int size; + size_t size; reg_syntax_t syntax; struct re_pattern_buffer *bufp; { @@ -2104,6 +2184,9 @@ regex_compile (pattern, size, syntax, bu || (is_upper && ISUPPER (ch)) || (is_xdigit && ISXDIGIT (ch))) SET_LIST_BIT (ch); + if ( translate && (is_upper || is_lower) + && (ISUPPER (ch) || ISLOWER (ch))) + SET_LIST_BIT (ch); } had_char_class = true; } @@ -2529,38 +2612,54 @@ regex_compile (pattern, size, syntax, bu case 'w': + if (re_syntax_options & RE_NO_GNU_OPS) + goto normal_char; laststart = b; BUF_PUSH (wordchar); break; case 'W': + if (re_syntax_options & RE_NO_GNU_OPS) + goto normal_char; laststart = b; BUF_PUSH (notwordchar); break; case '<': + if (re_syntax_options & RE_NO_GNU_OPS) + goto normal_char; BUF_PUSH (wordbeg); break; case '>': + if (re_syntax_options & RE_NO_GNU_OPS) + goto normal_char; BUF_PUSH (wordend); break; case 'b': + if (re_syntax_options & RE_NO_GNU_OPS) + goto normal_char; BUF_PUSH (wordbound); break; case 'B': + if (re_syntax_options & RE_NO_GNU_OPS) + goto normal_char; BUF_PUSH (notwordbound); break; case '`': + if (re_syntax_options & RE_NO_GNU_OPS) + goto normal_char; BUF_PUSH (begbuf); break; case '\'': + if (re_syntax_options & RE_NO_GNU_OPS) + goto normal_char; BUF_PUSH (endbuf); break; @@ -2575,7 +2674,7 @@ regex_compile (pattern, size, syntax, bu FREE_STACK_RETURN (REG_ESUBREG); /* Can't back reference to a subexpression if inside of it. */ - if (group_in_compile_stack (compile_stack, c1)) + if (group_in_compile_stack (compile_stack, (regnum_t) c1)) goto normal_char; laststart = b; @@ -2802,7 +2901,7 @@ at_begline_loc_p (pattern, p, syntax) static boolean at_endline_loc_p (p, pend, syntax) const char *p, *pend; - int syntax; + reg_syntax_t syntax; { const char *next = p; boolean next_backslash = *next == '\\'; @@ -2924,13 +3023,14 @@ re_compile_fastmap (bufp) register char *fastmap = bufp->fastmap; unsigned char *pattern = bufp->buffer; - unsigned long size = bufp->used; unsigned char *p = pattern; - register unsigned char *pend = pattern + size; + register unsigned char *pend = pattern + bufp->used; +#ifdef REL_ALLOC /* This holds the pointer to the failure stack, when it is allocated relocatably. */ fail_stack_elt_t *failure_stack_ptr; +#endif /* Assume that each path through the pattern can be null until proven otherwise. We set this false at the bottom of switch @@ -3406,13 +3506,6 @@ re_search_2 (bufp, string1, size1, strin return -1; } /* re_search_2 */ -/* Declarations and macros for re_match_2. */ - -static int bcmp_translate (); -static boolean alt_match_null_string_p (), - common_op_match_null_string_p (), - group_match_null_string_p (); - /* This converts PTR, a pointer into one of the search strings `string1' and `string2' into an offset from the beginning of that string. */ #define POINTER_TO_OFFSET(ptr) \ @@ -3453,14 +3546,12 @@ static boolean alt_match_null_string_p ( : (d) == string2 - 1 ? *(end1 - 1) : *(d)) \ == Sword) -/* Disabled due to a compiler bug -- see comment at case wordbound */ -#if 0 /* Test if the character before D and the one at D differ with respect to being word-constituent. */ #define AT_WORD_BOUNDARY(d) \ (AT_STRINGS_BEG (d) || AT_STRINGS_END (d) \ || WORDCHAR_P (d - 1) != WORDCHAR_P (d)) -#endif + /* Free everything we malloc. */ #ifdef MATCH_MAY_ALLOCATE @@ -3506,11 +3597,26 @@ re_match (bufp, string, size, pos, regs) { int result = re_match_2_internal (bufp, NULL, 0, string, size, pos, regs, size); +#ifndef REGEX_MALLOC +#ifdef C_ALLOCA alloca (0); +#endif +#endif return result; } #endif /* not emacs */ +static boolean group_match_null_string_p _RE_ARGS ((unsigned char **p, + unsigned char *end, + register_info_type *reg_info)); +static boolean alt_match_null_string_p _RE_ARGS ((unsigned char *p, + unsigned char *end, + register_info_type *reg_info)); +static boolean common_op_match_null_string_p _RE_ARGS ((unsigned char **p, + unsigned char *end, + register_info_type *reg_info)); +static int bcmp_translate _RE_ARGS ((const char *s1, const char *s2, + int len, char *translate)); /* re_match_2 matches the compiled pattern in BUFP against the the (virtual) concatenation of STRING1 and STRING2 (of length SIZE1 @@ -3536,7 +3642,11 @@ re_match_2 (bufp, string1, size1, string { int result = re_match_2_internal (bufp, string1, size1, string2, size2, pos, regs, stop); +#ifndef REGEX_MALLOC +#ifdef C_ALLOCA alloca (0); +#endif +#endif return result; } @@ -3593,18 +3703,20 @@ re_match_2_internal (bufp, string1, size unsigned nfailure_points_pushed = 0, nfailure_points_popped = 0; #endif +#ifdef REL_ALLOC /* This holds the pointer to the failure stack, when it is allocated relocatably. */ fail_stack_elt_t *failure_stack_ptr; +#endif /* We fill all the registers internally, independent of what we return, for use in backreferences. The number here includes an element for register zero. */ - unsigned num_regs = bufp->re_nsub + 1; + size_t num_regs = bufp->re_nsub + 1; /* The currently active registers. */ - unsigned lowest_active_reg = NO_LOWEST_ACTIVE_REG; - unsigned highest_active_reg = NO_HIGHEST_ACTIVE_REG; + active_reg_t lowest_active_reg = NO_LOWEST_ACTIVE_REG; + active_reg_t highest_active_reg = NO_HIGHEST_ACTIVE_REG; /* Information on the contents of registers. These are pointers into the input strings; they record just what was matched (on this @@ -4511,10 +4623,17 @@ re_match_2_internal (bufp, string1, size = *p2 == (unsigned char) endline ? '\n' : p2[2]; #endif +#if 0 if ((re_opcode_t) p1[3] == exactn && ! ((int) p2[1] * BYTEWIDTH > (int) p1[5] && (p2[2 + p1[5] / BYTEWIDTH] & (1 << (p1[5] % BYTEWIDTH))))) +#else + if ((re_opcode_t) p1[3] == exactn + && ! ((int) p2[1] * BYTEWIDTH > (int) p1[4] + && (p2[2 + p1[4] / BYTEWIDTH] + & (1 << (p1[4] % BYTEWIDTH))))) +#endif { p[-3] = (unsigned char) pop_failure_jump; DEBUG_PRINT3 (" %c != %c => pop_failure_jump.\n", @@ -4580,7 +4699,7 @@ re_match_2_internal (bufp, string1, size actual values. Otherwise, we will restore only one register from the stack, since lowest will == highest in `pop_failure_point'. */ - unsigned dummy_low_reg, dummy_high_reg; + active_reg_t dummy_low_reg, dummy_high_reg; unsigned char *pdummy; const char *sdummy; @@ -5133,11 +5252,12 @@ common_op_match_null_string_p (p, end, r static int bcmp_translate (s1, s2, len, translate) - unsigned char *s1, *s2; + const char *s1, *s2; register int len; RE_TRANSLATE_TYPE translate; { - register unsigned char *p1 = s1, *p2 = s2; + register const unsigned char *p1 = (const unsigned char *) s1; + register const unsigned char *p2 = (const unsigned char *) s2; while (len) { if (translate[*p1++] != translate[*p2++]) return 1; @@ -5160,7 +5280,7 @@ bcmp_translate (s1, s2, len, translate) const char * re_compile_pattern (pattern, length, bufp) const char *pattern; - int length; + size_t length; struct re_pattern_buffer *bufp; { reg_errcode_t ret; @@ -5289,7 +5409,7 @@ regcomp (preg, pattern, cflags) int cflags; { reg_errcode_t ret; - unsigned syntax + reg_syntax_t syntax = (cflags & REG_EXTENDED) ? RE_SYNTAX_POSIX_EXTENDED : RE_SYNTAX_POSIX_BASIC; diff -durpN glibc-2.0.1/posix/regex.h glibc-2.0.2/posix/regex.h --- glibc-2.0.1/posix/regex.h Thu Nov 14 09:04:57 1996 +++ glibc-2.0.2/posix/regex.h Sun Mar 16 19:11:08 1997 @@ -1,6 +1,6 @@ /* Definitions for data structures and routines for the regular expression library, version 0.12. - Copyright (C) 1985,89,90,91,92,93,95,96 Free Software Foundation, Inc. + Copyright (C) 1985,89,90,91,92,93,95,96,97 Free Software Foundation, Inc. This file is part of the GNU C Library. Its master source is NOT part of the C library, however. The master source lives in /gd/gnu/lib. @@ -23,6 +23,11 @@ #ifndef __REGEXP_LIBRARY_H__ #define __REGEXP_LIBRARY_H__ +/* Allow the use in C++ code. */ +#ifdef __cplusplus +extern "C" { +#endif + /* POSIX says that must be included (by the caller) before . */ @@ -32,17 +37,23 @@ #include #endif +/* The following two types have to be signed and unsigned integer type + wide enough to hold a value of a pointer. For most ANSI compilers + ptrdiff_t and size_t should be likely OK. Still size of these two + types is 2 for Microsoft C. Ugh... */ +typedef long int s_reg_t; +typedef unsigned long int active_reg_t; /* The following bits are used to determine the regexp syntax we recognize. The set/not-set meanings are chosen so that Emacs syntax remains the value 0. The bits are given in alphabetical order, and the definitions shifted by one from the previous bit; thus, when we add or remove a bit, only one other definition need change. */ -typedef unsigned reg_syntax_t; +typedef unsigned long int reg_syntax_t; /* If this bit is not set, then \ inside a bracket expression is literal. If set, then such a \ quotes the following character. */ -#define RE_BACKSLASH_ESCAPE_IN_LISTS (1) +#define RE_BACKSLASH_ESCAPE_IN_LISTS ((unsigned long int) 1) /* If this bit is not set, then + and ? are operators, and \+ and \? are literals. @@ -137,6 +148,10 @@ typedef unsigned reg_syntax_t; without further backtracking. */ #define RE_NO_POSIX_BACKTRACKING (RE_UNMATCHED_RIGHT_PAREN_ORD << 1) +/* If this bit is set, do not process the GNU regex operators. + If not set, then the GNU regex operators are recognized. */ +#define RE_NO_GNU_OPS (RE_NO_POSIX_BACKTRACKING << 1) + /* This global variable defines the particular regexp syntax to use (for some interfaces). When a regexp is compiled, the syntax used is stored in the pattern buffer, so changing this does not affect @@ -150,13 +165,18 @@ extern reg_syntax_t re_syntax_options; #define RE_SYNTAX_EMACS 0 #define RE_SYNTAX_AWK \ - (RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DOT_NOT_NULL \ - | RE_NO_BK_PARENS | RE_NO_BK_REFS \ - | RE_NO_BK_VBAR | RE_NO_EMPTY_RANGES \ - | RE_UNMATCHED_RIGHT_PAREN_ORD) + (RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DOT_NOT_NULL \ + | RE_NO_BK_PARENS | RE_NO_BK_REFS \ + | RE_NO_BK_VBAR | RE_NO_EMPTY_RANGES \ + | RE_DOT_NEWLINE \ + | RE_UNMATCHED_RIGHT_PAREN_ORD | RE_NO_GNU_OPS) + +#define RE_SYNTAX_GNU_AWK \ + ((RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS) \ + & ~(RE_DOT_NOT_NULL | RE_INTERVALS)) #define RE_SYNTAX_POSIX_AWK \ - (RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS) + (RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS | RE_NO_GNU_OPS) #define RE_SYNTAX_GREP \ (RE_BK_PLUS_QM | RE_CHAR_CLASSES \ @@ -212,7 +232,8 @@ extern reg_syntax_t re_syntax_options; #ifdef RE_DUP_MAX #undef RE_DUP_MAX #endif -#define RE_DUP_MAX ((1 << 15) - 1) +/* If sizeof(int) == 2, then ((1 << 15) - 1) overflows. */ +#define RE_DUP_MAX (0x7fff) /* POSIX `cflags' bits (i.e., information for `regcomp'). */ @@ -413,7 +434,7 @@ extern reg_syntax_t re_set_syntax _RE_AR and syntax given by the global `re_syntax_options', into the buffer BUFFER. Return NULL if successful, and an error string if not. */ extern const char *re_compile_pattern - _RE_ARGS ((const char *pattern, int length, + _RE_ARGS ((const char *pattern, size_t length, struct re_pattern_buffer *buffer)); @@ -472,10 +493,12 @@ extern void re_set_registers unsigned num_regs, regoff_t *starts, regoff_t *ends)); #ifdef _REGEX_RE_COMP +#ifndef _CRAY /* 4.2 bsd compatibility. */ extern char *re_comp _RE_ARGS ((const char *)); extern int re_exec _RE_ARGS ((const char *)); #endif +#endif /* POSIX compatibility. */ extern int regcomp _RE_ARGS ((regex_t *preg, const char *pattern, int cflags)); @@ -486,6 +509,11 @@ extern size_t regerror _RE_ARGS ((int errcode, const regex_t *preg, char *errbuf, size_t errbuf_size)); extern void regfree _RE_ARGS ((regex_t *preg)); + + +#ifdef __cplusplus +} +#endif /* C++ */ #endif /* not __REGEXP_LIBRARY_H__ */ diff -durpN glibc-2.0.1/posix/runtests.c glibc-2.0.2/posix/runtests.c --- glibc-2.0.1/posix/runtests.c Wed Dec 31 19:00:00 1969 +++ glibc-2.0.2/posix/runtests.c Sun Mar 16 19:09:02 1997 @@ -0,0 +1,132 @@ +/*********************************************************** + +Copyright 1995 by Tom Lord + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of the copyright holder not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +Tom Lord DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL TOM LORD BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF +USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + +******************************************************************/ + + + +#include +#include +#include +#include + + + +struct a_test +{ + int expected; + const char * pattern; + const unsigned char * data; +}; + +static const struct a_test the_tests[] = +{ +#include "testcases.h" + {-1, 0, 0} +}; + + + + +int +run_a_test (int id, const struct a_test * t) +{ + static const char * last_pattern = 0; + static regex_t r; + int err; + char errmsg[100]; + int x; + regmatch_t regs[10]; + + if (!last_pattern || strcmp (last_pattern, t->pattern)) + { + if (last_pattern) + regfree (&r); + last_pattern = t->pattern; + err = regcomp (&r, t->pattern, REG_EXTENDED); + if (err) + { + if (t->expected) + { + puts (" OK."); + return 0; + } + regerror (err, &r, errmsg, 100); + printf ("test %d\n", id); + puts (errmsg); + return 1; + } + } + + err = regexec (&r, t->data, 10, regs, 0); + + if (err != t->expected) + { + printf ("test %d\n", id); + printf ("pattern \"%s\" data \"%s\" wanted %d got %d\n", + t->pattern, t->data, t->expected, err); + for (x = 0; x < 10; ++x) + printf ("reg %d == (%d, %d) %.*s\n", + x, + regs[x].rm_so, + regs[x].rm_eo, + regs[x].rm_eo - regs[x].rm_so, + t->data + regs[x].rm_so); + return 1; + } + puts (" OK."); + return 0; +} + + + +int +main (int argc, char * argv[]) +{ + int x; + int lo; + int hi; + int res = 0; + + lo = 0; + hi = (sizeof (the_tests) / sizeof (the_tests[0])) - 1; + + if (argc > 1) + { + lo = atoi (argv[1]); + hi = lo + 1; + + if (argc > 2) + hi = atoi (argv[2]); + } + + for (x = lo; x < hi; ++x) + { + printf ("#%d:", x); + res |= run_a_test (x, &the_tests[x]); + } + { + exit (0); + } +} + + diff -durpN glibc-2.0.1/posix/testcases.h glibc-2.0.2/posix/testcases.h --- glibc-2.0.1/posix/testcases.h Wed Dec 31 19:00:00 1969 +++ glibc-2.0.2/posix/testcases.h Sun Mar 16 19:09:09 1997 @@ -0,0 +1,159 @@ + {0, "(.*)*\\1", "xx"}, + {0, "^", ""}, + {0, "$", ""}, + {0, "^$", ""}, + {0, "^a$", "a"}, + {0, "abc", "abc"}, + {1, "abc", "xbc"}, + {1, "abc", "axc"}, + {1, "abc", "abx"}, + {0, "abc", "xabcy"}, + {0, "abc", "ababc"}, + {0, "ab*c", "abc"}, + {0, "ab*bc", "abc"}, + {0, "ab*bc", "abbc"}, + {0, "ab*bc", "abbbbc"}, + {0, "ab+bc", "abbc"}, + {1, "ab+bc", "abc"}, + {1, "ab+bc", "abq"}, + {0, "ab+bc", "abbbbc"}, + {0, "ab?bc", "abbc"}, + {0, "ab?bc", "abc"}, + {1, "ab?bc", "abbbbc"}, + {0, "ab?c", "abc"}, + {0, "^abc$", "abc"}, + {1, "^abc$", "abcc"}, + {0, "^abc", "abcc"}, + {1, "^abc$", "aabc"}, + {0, "abc$", "aabc"}, + {0, "^", "abc"}, + {0, "$", "abc"}, + {0, "a.c", "abc"}, + {0, "a.c", "axc"}, + {0, "a.*c", "axyzc"}, + {1, "a.*c", "axyzd"}, + {1, "a[bc]d", "abc"}, + {0, "a[bc]d", "abd"}, + {1, "a[b-d]e", "abd"}, + {0, "a[b-d]e", "ace"}, + {0, "a[b-d]", "aac"}, + {0, "a[-b]", "a-"}, + {0, "a[b-]", "a-"}, + {1, "a[b-a]", "-"}, + {2, "a[]b", "-"}, + {2, "a[", "-"}, + {0, "a]", "a]"}, + {0, "a[]]b", "a]b"}, + {0, "a[^bc]d", "aed"}, + {1, "a[^bc]d", "abd"}, + {0, "a[^-b]c", "adc"}, + {1, "a[^-b]c", "a-c"}, + {1, "a[^]b]c", "a]c"}, + {0, "a[^]b]c", "adc"}, + {0, "ab|cd", "abc"}, + {0, "ab|cd", "abcd"}, + {0, "()ef", "def"}, + {0, "()*", "-"}, + {1, "*a", "-"}, + {0, "^*", "-"}, + {0, "$*", "-"}, + {1, "(*)b", "-"}, + {1, "$b", "b"}, + {2, "a\\", "-"}, + {0, "a\\(b", "a(b"}, + {0, "a\\(*b", "ab"}, + {0, "a\\(*b", "a((b"}, + {1, "a\\x", "a\\x"}, + {1, "abc)", "-"}, + {2, "(abc", "-"}, + {0, "((a))", "abc"}, + {0, "(a)b(c)", "abc"}, + {0, "a+b+c", "aabbabc"}, + {0, "a**", "-"}, + {0, "a*?", "-"}, + {0, "(a*)*", "-"}, + {0, "(a*)+", "-"}, + {0, "(a|)*", "-"}, + {0, "(a*|b)*", "-"}, + {0, "(a+|b)*", "ab"}, + {0, "(a+|b)+", "ab"}, + {0, "(a+|b)?", "ab"}, + {0, "[^ab]*", "cde"}, + {0, "(^)*", "-"}, + {0, "(ab|)*", "-"}, + {2, ")(", "-"}, + {1, "abc", ""}, + {1, "abc", ""}, + {0, "a*", ""}, + {0, "([abc])*d", "abbbcd"}, + {0, "([abc])*bcd", "abcd"}, + {0, "a|b|c|d|e", "e"}, + {0, "(a|b|c|d|e)f", "ef"}, + {0, "((a*|b))*", "-"}, + {0, "abcd*efg", "abcdefg"}, + {0, "ab*", "xabyabbbz"}, + {0, "ab*", "xayabbbz"}, + {0, "(ab|cd)e", "abcde"}, + {0, "[abhgefdc]ij", "hij"}, + {1, "^(ab|cd)e", "abcde"}, + {0, "(abc|)ef", "abcdef"}, + {0, "(a|b)c*d", "abcd"}, + {0, "(ab|ab*)bc", "abc"}, + {0, "a([bc]*)c*", "abc"}, + {0, "a([bc]*)(c*d)", "abcd"}, + {0, "a([bc]+)(c*d)", "abcd"}, + {0, "a([bc]*)(c+d)", "abcd"}, + {0, "a[bcd]*dcdcde", "adcdcde"}, + {1, "a[bcd]+dcdcde", "adcdcde"}, + {0, "(ab|a)b*c", "abc"}, + {0, "((a)(b)c)(d)", "abcd"}, + {0, "[A-Za-z_][A-Za-z0-9_]*", "alpha"}, + {0, "^a(bc+|b[eh])g|.h$", "abh"}, + {0, "(bc+d$|ef*g.|h?i(j|k))", "effgz"}, + {0, "(bc+d$|ef*g.|h?i(j|k))", "ij"}, + {1, "(bc+d$|ef*g.|h?i(j|k))", "effg"}, + {1, "(bc+d$|ef*g.|h?i(j|k))", "bcdd"}, + {0, "(bc+d$|ef*g.|h?i(j|k))", "reffgz"}, + {1, "((((((((((a))))))))))", "-"}, + {0, "(((((((((a)))))))))", "a"}, + {1, "multiple words of text", "uh-uh"}, + {0, "multiple words", "multiple words, yeah"}, + {0, "(.*)c(.*)", "abcde"}, + {1, "\\((.*),", "(.*)\\)"}, + {1, "[k]", "ab"}, + {0, "abcd", "abcd"}, + {0, "a(bc)d", "abcd"}, + {0, "a[-]?c", "ac"}, + {0, "(....).*\\1", "beriberi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Muammar Qaddafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Mo'ammar Gadhafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Muammar Kaddafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Muammar Qadhafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Moammar El Kadhafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Muammar Gadafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Mu'ammar al-Qadafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Moamer El Kazzafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Moamar al-Gaddafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Mu'ammar Al Qathafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Muammar Al Qathafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Mo'ammar el-Gadhafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Moamar El Kadhafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Muammar al-Qadhafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Mu'ammar al-Qadhdhafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Mu'ammar Qadafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Moamar Gaddafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Mu'ammar Qadhdhafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Muammar Khaddafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Muammar al-Khaddafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Mu'amar al-Kadafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Muammar Ghaddafy"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Muammar Ghadafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Muammar Ghaddafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Muamar Kaddafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Muammar Quathafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Muammar Gheddafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Muamar Al-Kaddafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Moammar Khadafy "}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Moammar Qudhafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Mu'ammar al-Qaddafi"}, + {0, "M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]", "Mulazim Awwal Mu'ammar Muhammad Abu Minyar al-Qadhafi"}, diff -durpN glibc-2.0.1/posix/unistd.h glibc-2.0.2/posix/unistd.h --- glibc-2.0.1/posix/unistd.h Thu Jan 23 12:41:52 1997 +++ glibc-2.0.2/posix/unistd.h Sun Mar 16 19:20:58 1997 @@ -171,6 +171,7 @@ extern int access __P ((__const char *__ #ifdef __USE_GNU /* Test for access to NAME using the effective UID and GID (as normal file operations use). */ +extern int __euidaccess __P ((__const char *__name, int __type)); extern int euidaccess __P ((__const char *__name, int __type)); #endif diff -durpN glibc-2.0.1/rellns-sh glibc-2.0.2/rellns-sh --- glibc-2.0.1/rellns-sh Fri Dec 13 07:30:57 1996 +++ glibc-2.0.2/rellns-sh Sun Feb 9 22:18:09 1997 @@ -22,12 +22,6 @@ if test $# -ne 2; then exit 1 fi -# We only handle the case where SOURCE is the name of an existing file -if test ! -f $1; then - echo "rellns: $1 must name an existing file" >&2 - exit 1 -fi - case $1 in /*) # Make both paths absolute. diff -durpN glibc-2.0.1/resolv/arpa/nameser.h glibc-2.0.2/resolv/arpa/nameser.h --- glibc-2.0.1/resolv/arpa/nameser.h Thu Dec 19 16:17:20 1996 +++ glibc-2.0.2/resolv/arpa/nameser.h Thu Dec 19 20:33:21 1996 @@ -77,7 +77,7 @@ /* * @(#)nameser.h 8.1 (Berkeley) 6/2/93 - * $Id: nameser.h,v 1.12 1996/12/19 21:17:20 drepper Exp $ + * $Id: nameser.h,v 1.12 1996/12/20 01:33:21 drepper Exp $ */ #ifndef _NAMESER_H_ diff -durpN glibc-2.0.1/resolv/gethnamaddr.c glibc-2.0.2/resolv/gethnamaddr.c --- glibc-2.0.1/resolv/gethnamaddr.c Tue Nov 19 21:42:14 1996 +++ glibc-2.0.2/resolv/gethnamaddr.c Mon Feb 17 23:08:10 1997 @@ -55,7 +55,7 @@ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)gethostnamadr.c 8.1 (Berkeley) 6/4/93"; -static char rcsid[] = "$Id: gethnamaddr.c,v 1.19 1996/11/20 02:42:14 drepper Exp $"; +static char rcsid[] = "$Id: gethnamaddr.c,v 1.20.2.1 1997/02/18 04:08:10 drepper Exp $"; #endif /* LIBC_SCCS and not lint */ #include @@ -513,6 +513,8 @@ gethostbyname2(name, af) if (!*cp) { if (*--cp == '.') break; + if (!strchr (name, ':')) + break; /* * All-IPv6-legal, no dot at the end. * Fake up a hostent as if we'd actually @@ -539,7 +541,7 @@ gethostbyname2(name, af) break; } - if ((n = res_search(name, C_IN, type, buf.buf, sizeof(buf))) < 0) { + if ((n = res_search(name, C_IN, type, buf.buf, sizeof(buf.buf))) < 0) { dprintf("res_search failed (%d)\n", n); if (errno == ECONNREFUSED) return (_gethtbyname2(name, af)); diff -durpN glibc-2.0.1/resolv/herror.c glibc-2.0.2/resolv/herror.c --- glibc-2.0.1/resolv/herror.c Tue Nov 19 21:42:35 1996 +++ glibc-2.0.2/resolv/herror.c Tue Nov 19 22:43:44 1996 @@ -55,7 +55,7 @@ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)herror.c 8.1 (Berkeley) 6/4/93"; -static char rcsid[] = "$Id: herror.c,v 1.8 1996/11/20 02:42:35 drepper Exp $"; +static char rcsid[] = "$Id: herror.c,v 1.8 1996/11/20 03:43:44 drepper Exp $"; #endif /* LIBC_SCCS and not lint */ #include diff -durpN glibc-2.0.1/resolv/inet_addr.c glibc-2.0.2/resolv/inet_addr.c --- glibc-2.0.1/resolv/inet_addr.c Tue Aug 13 19:48:35 1996 +++ glibc-2.0.2/resolv/inet_addr.c Tue Aug 13 23:48:37 1996 @@ -55,7 +55,7 @@ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)inet_addr.c 8.1 (Berkeley) 6/17/93"; -static char rcsid[] = "$Id: inet_addr.c,v 1.5 1996/08/13 23:48:35 drepper Exp $"; +static char rcsid[] = "$Id: inet_addr.c,v 1.5 1996/08/14 03:48:37 drepper Exp $"; #endif /* LIBC_SCCS and not lint */ #include diff -durpN glibc-2.0.1/resolv/inet_net_ntop.c glibc-2.0.2/resolv/inet_net_ntop.c --- glibc-2.0.1/resolv/inet_net_ntop.c Thu Sep 26 11:36:06 1996 +++ glibc-2.0.2/resolv/inet_net_ntop.c Thu Sep 26 23:24:07 1996 @@ -16,7 +16,7 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static const char rcsid[] = "$Id: inet_net_ntop.c,v 1.2 1996/09/26 15:36:06 drepper Exp $"; +static const char rcsid[] = "$Id: inet_net_ntop.c,v 1.2 1996/09/27 03:24:07 drepper Exp $"; #endif #include diff -durpN glibc-2.0.1/resolv/inet_net_pton.c glibc-2.0.2/resolv/inet_net_pton.c --- glibc-2.0.1/resolv/inet_net_pton.c Thu Dec 19 16:16:38 1996 +++ glibc-2.0.2/resolv/inet_net_pton.c Thu Dec 19 20:33:15 1996 @@ -16,7 +16,7 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static const char rcsid[] = "$Id: inet_net_pton.c,v 1.4 1996/12/19 21:16:38 drepper Exp $"; +static const char rcsid[] = "$Id: inet_net_pton.c,v 1.4 1996/12/20 01:33:15 drepper Exp $"; #endif #include diff -durpN glibc-2.0.1/resolv/inet_neta.c glibc-2.0.2/resolv/inet_neta.c --- glibc-2.0.1/resolv/inet_neta.c Tue Oct 1 19:59:35 1996 +++ glibc-2.0.2/resolv/inet_neta.c Tue Oct 1 21:37:22 1996 @@ -16,7 +16,7 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static const char rcsid[] = "$Id: inet_neta.c,v 1.3 1996/10/01 23:59:35 drepper Exp $"; +static const char rcsid[] = "$Id: inet_neta.c,v 1.3 1996/10/02 01:37:22 drepper Exp $"; #endif #include diff -durpN glibc-2.0.1/resolv/inet_ntop.c glibc-2.0.2/resolv/inet_ntop.c --- glibc-2.0.1/resolv/inet_ntop.c Thu Sep 26 11:36:18 1996 +++ glibc-2.0.2/resolv/inet_ntop.c Thu Sep 26 23:24:13 1996 @@ -15,7 +15,7 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static char rcsid[] = "$Id: inet_ntop.c,v 1.4 1996/09/26 15:36:18 drepper Exp $"; +static char rcsid[] = "$Id: inet_ntop.c,v 1.4 1996/09/27 03:24:13 drepper Exp $"; #endif /* LIBC_SCCS and not lint */ #include diff -durpN glibc-2.0.1/resolv/inet_pton.c glibc-2.0.2/resolv/inet_pton.c --- glibc-2.0.1/resolv/inet_pton.c Thu Sep 26 11:36:23 1996 +++ glibc-2.0.2/resolv/inet_pton.c Thu Sep 26 23:24:16 1996 @@ -15,7 +15,7 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static char rcsid[] = "$Id: inet_pton.c,v 1.5 1996/09/26 15:36:23 drepper Exp $"; +static char rcsid[] = "$Id: inet_pton.c,v 1.5 1996/09/27 03:24:16 drepper Exp $"; #endif /* LIBC_SCCS and not lint */ #include diff -durpN glibc-2.0.1/resolv/nsap_addr.c glibc-2.0.2/resolv/nsap_addr.c --- glibc-2.0.1/resolv/nsap_addr.c Sat Dec 21 18:32:22 1996 +++ glibc-2.0.2/resolv/nsap_addr.c Sat Dec 21 19:32:11 1996 @@ -16,7 +16,7 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static char rcsid[] = "$Id: nsap_addr.c,v 1.4 1996/12/21 23:32:22 drepper Exp $"; +static char rcsid[] = "$Id: nsap_addr.c,v 1.4 1996/12/22 00:32:11 drepper Exp $"; #endif /* LIBC_SCCS and not lint */ #include diff -durpN glibc-2.0.1/resolv/nss_dns/dns-host.c glibc-2.0.2/resolv/nss_dns/dns-host.c --- glibc-2.0.1/resolv/nss_dns/dns-host.c Thu Jan 16 15:54:00 1997 +++ glibc-2.0.2/resolv/nss_dns/dns-host.c Thu Feb 13 00:09:34 1997 @@ -151,7 +151,7 @@ _nss_dns_gethostbyname2_r (const char *n if (strchr (name, '.') == NULL && (cp = __hostalias (name)) != NULL) name = cp; - n = res_search (name, C_IN, type, host_buffer.buf, sizeof (host_buffer)); + n = res_search (name, C_IN, type, host_buffer.buf, sizeof (host_buffer.buf)); if (n < 0) return errno == ECONNREFUSED ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND; diff -durpN glibc-2.0.1/resolv/res_comp.c glibc-2.0.2/resolv/res_comp.c --- glibc-2.0.1/resolv/res_comp.c Thu Dec 19 18:41:15 1996 +++ glibc-2.0.2/resolv/res_comp.c Thu Dec 19 20:33:16 1996 @@ -55,7 +55,7 @@ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)res_comp.c 8.1 (Berkeley) 6/4/93"; -static char rcsid[] = "$Id: res_comp.c,v 1.13 1996/12/19 23:41:15 drepper Exp $"; +static char rcsid[] = "$Id: res_comp.c,v 1.12 1996/12/20 01:33:16 drepper Exp $"; #endif /* LIBC_SCCS and not lint */ #include diff -durpN glibc-2.0.1/resolv/res_data.c glibc-2.0.2/resolv/res_data.c --- glibc-2.0.1/resolv/res_data.c Tue Aug 13 19:49:58 1996 +++ glibc-2.0.2/resolv/res_data.c Tue Aug 13 23:48:55 1996 @@ -54,7 +54,7 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static char rcsid[] = "$Id: res_data.c,v 1.2 1996/08/13 23:49:58 drepper Exp $"; +static char rcsid[] = "$Id: res_data.c,v 1.2 1996/08/14 03:48:55 drepper Exp $"; #endif /* LIBC_SCCS and not lint */ #include diff -durpN glibc-2.0.1/resolv/res_debug.c glibc-2.0.2/resolv/res_debug.c --- glibc-2.0.1/resolv/res_debug.c Sun Jan 5 21:55:02 1997 +++ glibc-2.0.2/resolv/res_debug.c Mon Jan 6 17:05:42 1997 @@ -77,7 +77,7 @@ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)res_debug.c 8.1 (Berkeley) 6/4/93"; -static char rcsid[] = "$Id: res_debug.c,v 1.21 1997/01/06 02:55:02 drepper Exp $"; +static char rcsid[] = "$Id: res_debug.c,v 1.21 1997/01/06 22:05:42 drepper Exp $"; #endif /* LIBC_SCCS and not lint */ #include diff -durpN glibc-2.0.1/resolv/res_init.c glibc-2.0.2/resolv/res_init.c --- glibc-2.0.1/resolv/res_init.c Thu Dec 19 16:16:55 1996 +++ glibc-2.0.2/resolv/res_init.c Thu Dec 19 20:33:18 1996 @@ -55,7 +55,7 @@ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)res_init.c 8.1 (Berkeley) 6/7/93"; -static char rcsid[] = "$Id: res_init.c,v 1.12 1996/12/19 21:16:55 drepper Exp $"; +static char rcsid[] = "$Id: res_init.c,v 1.12 1996/12/20 01:33:18 drepper Exp $"; #endif /* LIBC_SCCS and not lint */ #include diff -durpN glibc-2.0.1/resolv/res_mkquery.c glibc-2.0.2/resolv/res_mkquery.c --- glibc-2.0.1/resolv/res_mkquery.c Tue Oct 1 20:00:27 1996 +++ glibc-2.0.2/resolv/res_mkquery.c Tue Oct 1 21:37:29 1996 @@ -55,7 +55,7 @@ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)res_mkquery.c 8.1 (Berkeley) 6/4/93"; -static char rcsid[] = "$Id: res_mkquery.c,v 1.7 1996/10/02 00:00:27 drepper Exp $"; +static char rcsid[] = "$Id: res_mkquery.c,v 1.7 1996/10/02 01:37:29 drepper Exp $"; #endif /* LIBC_SCCS and not lint */ #include diff -durpN glibc-2.0.1/resolv/res_query.c glibc-2.0.2/resolv/res_query.c --- glibc-2.0.1/resolv/res_query.c Sun Jan 5 21:55:05 1997 +++ glibc-2.0.2/resolv/res_query.c Mon Jan 6 17:05:43 1997 @@ -55,7 +55,7 @@ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)res_query.c 8.1 (Berkeley) 6/4/93"; -static char rcsid[] = "$Id: res_query.c,v 1.11 1997/01/06 02:55:05 drepper Exp $"; +static char rcsid[] = "$Id: res_query.c,v 1.11 1997/01/06 22:05:43 drepper Exp $"; #endif /* LIBC_SCCS and not lint */ #include diff -durpN glibc-2.0.1/resolv/res_send.c glibc-2.0.2/resolv/res_send.c --- glibc-2.0.1/resolv/res_send.c Thu Dec 19 16:17:03 1996 +++ glibc-2.0.2/resolv/res_send.c Thu Dec 19 20:33:19 1996 @@ -55,7 +55,7 @@ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)res_send.c 8.1 (Berkeley) 6/4/93"; -static char rcsid[] = "$Id: res_send.c,v 1.13 1996/12/19 21:17:03 drepper Exp $"; +static char rcsid[] = "$Id: res_send.c,v 1.13 1996/12/20 01:33:19 drepper Exp $"; #endif /* LIBC_SCCS and not lint */ /* change this to "0" diff -durpN glibc-2.0.1/resolv/resolv.h glibc-2.0.2/resolv/resolv.h --- glibc-2.0.1/resolv/resolv.h Thu Dec 19 18:41:38 1996 +++ glibc-2.0.2/resolv/resolv.h Thu Dec 19 20:33:20 1996 @@ -55,7 +55,7 @@ /* * @(#)resolv.h 8.1 (Berkeley) 6/2/93 - * $Id: resolv.h,v 1.17 1996/12/19 23:41:38 drepper Exp $ + * $Id: resolv.h,v 1.16 1996/12/20 01:33:20 drepper Exp $ */ #ifndef _RESOLV_H_ diff -durpN glibc-2.0.1/setjmp/setjmp.h glibc-2.0.2/setjmp/setjmp.h --- glibc-2.0.1/setjmp/setjmp.h Tue Oct 29 08:51:13 1996 +++ glibc-2.0.2/setjmp/setjmp.h Wed Mar 19 21:23:13 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc. +/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 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 @@ -51,7 +51,7 @@ extern int __sigsetjmp __P ((jmp_buf __e #ifndef __FAVOR_BSD /* Set ENV to the current position and return 0, not saving the signal mask. This is just like `sigsetjmp (ENV, 0)'. - The ANSI C standard says `setjmp' is a macro. */ + The ISO C standard says `setjmp' is a macro. */ #define setjmp(env) __sigsetjmp ((env), 0) #else /* We are in 4.3 BSD-compatibility mode in which `setjmp' @@ -61,7 +61,7 @@ extern int __sigsetjmp __P ((jmp_buf __e #ifdef __USE_BSD /* Set ENV to the current position and return 0, not saving the signal mask. - This is the 4.3 BSD name for ANSI `setjmp'. */ + This is the 4.3 BSD name for ISO `setjmp'. */ #define _setjmp(env) __sigsetjmp ((env), 0) #endif diff -durpN glibc-2.0.1/shadow/sgetspent_r.c glibc-2.0.2/shadow/sgetspent_r.c --- glibc-2.0.1/shadow/sgetspent_r.c Wed Jan 29 10:43:53 1997 +++ glibc-2.0.2/shadow/sgetspent_r.c Tue Feb 25 22:30:27 1997 @@ -51,9 +51,12 @@ LINE_PARSER else { STRING_FIELD (result->sp_pwdp, ISCOLON, 0); - INT_FIELD (result->sp_lstchg, ISCOLON, 0, 10, (long int)); - INT_FIELD (result->sp_min, ISCOLON, 0, 10, (long int)); - INT_FIELD (result->sp_max, ISCOLON, 0, 10, (long int)); + INT_FIELD_MAYBE_NULL (result->sp_lstchg, ISCOLON, 0, 10, (long int), + (long int) -1); + INT_FIELD_MAYBE_NULL (result->sp_min, ISCOLON, 0, 10, (long int), + (long int) -1); + INT_FIELD_MAYBE_NULL (result->sp_max, ISCOLON, 0, 10, (long int), + (long int) -1); while (isspace (*line)) ++line; if (*line == '\0') diff -durpN glibc-2.0.1/stab.def glibc-2.0.2/stab.def --- glibc-2.0.1/stab.def Fri Feb 17 19:01:03 1995 +++ glibc-2.0.2/stab.def Wed Dec 31 19:00:00 1969 @@ -1 +0,0 @@ -#include diff -durpN glibc-2.0.1/stab.h glibc-2.0.2/stab.h --- glibc-2.0.1/stab.h Wed Mar 11 20:20:24 1992 +++ glibc-2.0.2/stab.h Wed Dec 31 19:00:00 1969 @@ -1 +0,0 @@ -#include diff -durpN glibc-2.0.1/stdio/freopen.c glibc-2.0.2/stdio/freopen.c --- glibc-2.0.1/stdio/freopen.c Wed Oct 9 17:35:16 1996 +++ glibc-2.0.2/stdio/freopen.c Tue Oct 8 11:21:52 1996 @@ -25,7 +25,7 @@ extern int __getmode __P ((const char *, /* Defined in sysd-stdio.c. */ extern int __stdio_reopen __P ((const char *filename, __io_mode mode, - void **cookieptr, __io_close_fn closefn)); + void *cookieptr, __io_close_fn closefn)); /* Replace STREAM, opening it on FILENAME. */ FILE * diff -durpN glibc-2.0.1/stdio/getdelim.c glibc-2.0.2/stdio/getdelim.c --- glibc-2.0.1/stdio/getdelim.c Wed Oct 9 17:35:40 1996 +++ glibc-2.0.2/stdio/getdelim.c Tue Oct 8 11:21:53 1996 @@ -135,7 +135,7 @@ __getdelim (lineptr, n, terminator, stre if (i > copy) i = copy; - found = (char *) __memccpy ((void *) p, stream->__bufp, + found = (char *) __memccpy ((void *) p, stream->__bufp, terminator, i); if (found != NULL) { diff -durpN glibc-2.0.1/stdio/vasprintf.c glibc-2.0.2/stdio/vasprintf.c --- glibc-2.0.1/stdio/vasprintf.c Mon Oct 16 22:36:53 1995 +++ glibc-2.0.2/stdio/vasprintf.c Sun Mar 16 19:33:07 1997 @@ -1,22 +1,21 @@ -/* Copyright (C) 1991, 1992 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1991, 1992, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + The GNU C Library is 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 @@ -27,17 +26,18 @@ Cambridge, MA 02139, USA. */ /* Enlarge STREAM's buffer. */ static void -DEFUN(enlarge_buffer, (stream, c), - register FILE *stream AND int c) +enlarge_buffer (stream, c) + FILE *stream; + int c; { ptrdiff_t bufp_offset = stream->__bufp - stream->__buffer; char *newbuf; stream->__bufsize += 100; - newbuf = (char *) realloc ((PTR) stream->__buffer, stream->__bufsize); + newbuf = (char *) realloc ((void *) stream->__buffer, stream->__bufsize); if (newbuf == NULL) { - free ((PTR) stream->__buffer); + free ((void *) stream->__buffer); stream->__buffer = stream->__bufp = stream->__put_limit = stream->__get_limit = NULL; stream->__error = 1; @@ -56,13 +56,14 @@ DEFUN(enlarge_buffer, (stream, c), /* Write formatted output from FORMAT to a string which is allocated with malloc and stored in *STRING_PTR. */ int -DEFUN(vasprintf, (string_ptr, format, args), - char **string_ptr AND CONST char *format AND va_list args) +vasprintf (char **string_ptr, + const char *format, + va_list args) { FILE f; int done; - memset ((PTR) &f, 0, sizeof (f)); + memset ((void *) &f, 0, sizeof (f)); f.__magic = _IOMAGIC; f.__bufsize = 100; f.__buffer = (char *) malloc (f.__bufsize); diff -durpN glibc-2.0.1/stdio/vsnprintf.c glibc-2.0.2/stdio/vsnprintf.c --- glibc-2.0.1/stdio/vsnprintf.c Tue Oct 17 01:20:15 1995 +++ glibc-2.0.2/stdio/vsnprintf.c Sun Feb 9 22:18:37 1997 @@ -1,22 +1,21 @@ -/* Copyright (C) 1991, 1992, 1995 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1991, 1992, 1995, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + The GNU C Library is 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 @@ -33,7 +32,11 @@ __vsnprintf (char *s, size_t maxlen, con int done; FILE f; - memset((PTR) &f, 0, sizeof(f)); + /* We have to handle the case of MAXLEN == 0 special. */ + if (maxlen == 0) + return 0; + + memset((void *) &f, 0, sizeof(f)); f.__magic = _IOMAGIC; f.__mode.__write = 1; /* The buffer size is one less than MAXLEN diff -durpN glibc-2.0.1/stdio-common/bug10.c glibc-2.0.2/stdio-common/bug10.c --- glibc-2.0.1/stdio-common/bug10.c Wed Jan 22 10:52:21 1997 +++ glibc-2.0.2/stdio-common/bug10.c Mon Feb 17 23:08:15 1997 @@ -1,7 +1,7 @@ #include int -main (int arc, char *argv) +main (int arc, char *argv[]) { int n, res; unsigned int val; diff -durpN glibc-2.0.1/stdio-common/test-fseek.c glibc-2.0.2/stdio-common/test-fseek.c --- glibc-2.0.1/stdio-common/test-fseek.c Mon Oct 16 19:46:51 1995 +++ glibc-2.0.2/stdio-common/test-fseek.c Fri Feb 21 20:07:02 1997 @@ -1,10 +1,27 @@ -#include +/* Copyright (C) 1991, 1992, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + 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 TESTFILE "/tmp/test.dat" int -main __P((void)) +main (void) { FILE *fp; int i, j; @@ -61,6 +78,7 @@ main __P((void)) } } fclose (fp); + remove (TESTFILE); puts ((i > 255) ? "Test succeeded." : "Test FAILED!"); return (i > 255) ? 0 : 1; diff -durpN glibc-2.0.1/stdio-common/vfprintf.c glibc-2.0.2/stdio-common/vfprintf.c --- glibc-2.0.1/stdio-common/vfprintf.c Sat Dec 21 12:16:49 1996 +++ glibc-2.0.2/stdio-common/vfprintf.c Tue Feb 25 20:05:35 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc. +/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 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 @@ -880,7 +880,13 @@ vfprintf (FILE *s, const CHAR_T *format, /* Initialize local variables. */ done = 0; grouping = (const char *) -1; +#ifdef __va_copy + /* This macro will be available soon in gcc's . Me need it + since on some systems `va_list' is not an integral type. */ + __va_copy (ap_save, ap); +#else ap_save = ap; +#endif nspecs_done = 0; /* Find the first format specifier. */ @@ -1203,12 +1209,12 @@ do_positional: /* Now we know all the types and the order. Fill in the argument values. */ - for (cnt = 0, ap = ap_save; cnt < nargs; ++cnt) + for (cnt = 0; cnt < nargs; ++cnt) switch (args_type[cnt]) { #define T(tag, mem, type) \ case tag: \ - args_value[cnt].mem = va_arg (ap, type); \ + args_value[cnt].mem = va_arg (ap_save, type); \ break T (PA_CHAR, pa_char, int); /* Promoted. */ @@ -1226,7 +1232,7 @@ do_positional: #undef T default: if ((args_type[cnt] & PA_FLAG_PTR) != 0) - args_value[cnt].pa_pointer = va_arg (ap, void *); + args_value[cnt].pa_pointer = va_arg (ap_save, void *); else args_value[cnt].pa_long_double = 0.0; break; @@ -1399,16 +1405,16 @@ printf_unknown (FILE *s, const struct pr if (info->width != 0) { w = _itoa_word (info->width, workend + 1, 10, 0); - while (++w <= workend) - outchar (*w); + while (w <= workend) + outchar (*w++); } if (info->prec != -1) { outchar ('.'); w = _itoa_word (info->prec, workend + 1, 10, 0); - while (++w <= workend) - outchar (*w); + while (w <= workend) + outchar (*w++); } if (info->spec != '\0') diff -durpN glibc-2.0.1/stdio-common/vfscanf.c glibc-2.0.2/stdio-common/vfscanf.c --- glibc-2.0.1/stdio-common/vfscanf.c Wed Jan 22 10:37:45 1997 +++ glibc-2.0.2/stdio-common/vfscanf.c Sun Mar 16 19:03:14 1997 @@ -163,8 +163,7 @@ int __vfscanf (FILE *s, const char *format, va_list argptr) #endif { - va_list arg = (va_list) argptr; - + va_list arg; register const char *f = format; register unsigned char fc; /* Current character of the format. */ register size_t done = 0; /* Assignments done. */ @@ -222,6 +221,12 @@ __vfscanf (FILE *s, const char *format, } \ while (0) +#ifdef __va_copy + __va_copy (arg, argptr); +#else + arg = (va_list) argptr; +#endif + ARGCHECK (s, format); /* Figure out the decimal point character. */ @@ -243,23 +248,34 @@ __vfscanf (FILE *s, const char *format, /* Extract the next argument, which is of type TYPE. For a %N$... spec, this is the Nth argument from the beginning; otherwise it is the next argument after the state now in ARG. */ -#if 0 +#ifdef __va_copy +# define ARG(type) (argpos == 0 ? va_arg (arg, type) : \ + ({ unsigned int pos = argpos; \ + va_list arg; \ + __va_copy (arg, argptr); \ + while (--pos > 0) \ + (void) va_arg (arg, void *); \ + va_arg (arg, type); \ + })) +#else +# if 0 /* XXX Possible optimization. */ -# define ARG(type) (argpos == 0 ? va_arg (arg, type) : \ +# define ARG(type) (argpos == 0 ? va_arg (arg, type) : \ ({ va_list arg = (va_list) argptr; \ arg = (va_list) ((char *) arg \ + (argpos - 1) \ * __va_rounded_size (void *)); \ va_arg (arg, type); \ })) -#else -# define ARG(type) (argpos == 0 ? va_arg (arg, type) : \ +# else +# define ARG(type) (argpos == 0 ? va_arg (arg, type) : \ ({ unsigned int pos = argpos; \ va_list arg = (va_list) argptr; \ while (--pos > 0) \ (void) va_arg (arg, void *); \ va_arg (arg, type); \ })) +# endif #endif if (!isascii (*f)) diff -durpN glibc-2.0.1/stdlib/Makefile glibc-2.0.2/stdlib/Makefile --- glibc-2.0.1/stdlib/Makefile Fri Dec 20 09:39:12 1996 +++ glibc-2.0.2/stdlib/Makefile Sun Feb 9 22:18:41 1997 @@ -1,4 +1,4 @@ -# Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc. +# Copyright (C) 1991, 92, 93, 94, 95, 96, 97 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 @@ subdir := stdlib headers := stdlib.h alloca.h monetary.h routines := \ - atof atoi atol \ + atof atoi atol atoll \ abort \ bsearch qsort msort \ getenv putenv setenv secure-getenv \ diff -durpN glibc-2.0.1/stdlib/a64l.c glibc-2.0.2/stdlib/a64l.c --- glibc-2.0.1/stdlib/a64l.c Sun Sep 17 16:00:43 1995 +++ glibc-2.0.2/stdlib/a64l.c Sun Feb 9 22:18:42 1997 @@ -1,21 +1,21 @@ -/* Copyright (C) 1995 Free Software Foundation, Inc. -This file is part of the GNU C Library. -Contributed by Ulrich Drepper , August 1995. +/* Copyright (C) 1995, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , August 1995. -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 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. + 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. */ + 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 diff -durpN glibc-2.0.1/stdlib/abs.c glibc-2.0.2/stdlib/abs.c --- glibc-2.0.1/stdlib/abs.c Tue Jan 16 21:01:27 1996 +++ glibc-2.0.2/stdlib/abs.c Sun Feb 9 22:18:42 1997 @@ -1,29 +1,28 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1991, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + The GNU C Library is 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 #undef abs /* Return the absolute value of I. */ int -DEFUN(abs, (i), int i) +abs (int i) { - return(i < 0 ? -i : i); + return i < 0 ? -i : i; } diff -durpN glibc-2.0.1/stdlib/atof.c glibc-2.0.2/stdlib/atof.c --- glibc-2.0.1/stdlib/atof.c Fri Mar 17 12:35:32 1995 +++ glibc-2.0.2/stdlib/atof.c Sun Feb 9 22:18:43 1997 @@ -1,22 +1,21 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1991, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + The GNU C Library is 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 #undef atof @@ -24,7 +23,7 @@ Cambridge, MA 02139, USA. */ /* Convert a string to a double. */ double -DEFUN(atof, (nptr), CONST char *nptr) +atof (const char *nptr) { - return(strtod(nptr, (char **) NULL)); + return strtod (nptr, (char **) NULL); } diff -durpN glibc-2.0.1/stdlib/atoi.c glibc-2.0.2/stdlib/atoi.c --- glibc-2.0.1/stdlib/atoi.c Fri Mar 17 12:35:34 1995 +++ glibc-2.0.2/stdlib/atoi.c Sun Feb 9 22:18:44 1997 @@ -1,22 +1,21 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1991, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + The GNU C Library is 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 #undef atoi @@ -24,7 +23,7 @@ Cambridge, MA 02139, USA. */ /* Convert a string to an int. */ int -DEFUN(atoi, (nptr), CONST char *nptr) +atoi (const char *nptr) { - return((int) strtol(nptr, (char **) NULL, 10)); + return (int) strtol (nptr, (char **) NULL, 10); } diff -durpN glibc-2.0.1/stdlib/atol.c glibc-2.0.2/stdlib/atol.c --- glibc-2.0.1/stdlib/atol.c Fri Mar 17 12:35:35 1995 +++ glibc-2.0.2/stdlib/atol.c Sun Feb 9 22:18:44 1997 @@ -1,22 +1,21 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1991, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + The GNU C Library is 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 #undef atol @@ -24,7 +23,7 @@ Cambridge, MA 02139, USA. */ /* Convert a string to a long int. */ long int -DEFUN(atol, (nptr), CONST char *nptr) +atol (const char *nptr) { - return(strtol(nptr, (char **) NULL, 10)); + return strtol (nptr, (char **) NULL, 10); } diff -durpN glibc-2.0.1/stdlib/atoll.c glibc-2.0.2/stdlib/atoll.c --- glibc-2.0.1/stdlib/atoll.c Wed Dec 31 19:00:00 1969 +++ glibc-2.0.2/stdlib/atoll.c Thu Feb 13 00:09:40 1997 @@ -0,0 +1,29 @@ +/* Copyright (C) 1991, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include + +#undef atoll + + +/* Convert a string to a long int. */ +long long int +atoll (const char *nptr) +{ + return strtoll (nptr, (char **) NULL, 10); +} diff -durpN glibc-2.0.1/stdlib/bsearch.c glibc-2.0.2/stdlib/bsearch.c --- glibc-2.0.1/stdlib/bsearch.c Tue Apr 14 16:50:21 1992 +++ glibc-2.0.2/stdlib/bsearch.c Sun Feb 9 22:18:45 1997 @@ -1,50 +1,47 @@ -/* Copyright (C) 1991, 1992 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1991, 1992, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + The GNU C Library is 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 /* Perform a binary search for KEY in BASE which has NMEMB elements of SIZE bytes each. The comparisons are done by (*COMPAR)(). */ -PTR -DEFUN(bsearch, (key, base, nmemb, size, compar), - register CONST PTR key AND register CONST PTR base AND - size_t nmemb AND register size_t size AND - register int EXFUN((*compar), (CONST PTR, CONST PTR))) +void * +bsearch (const void *key, const void *base, size_t nmemb, size_t size, + int (*compar) __P ((const void *, const void *))) { - register size_t l, u, idx; - register CONST PTR p; - register int comparison; + size_t l, u, idx; + const void *p; + int comparison; l = 0; u = nmemb; while (l < u) { idx = (l + u) / 2; - p = (PTR) (((CONST char *) base) + (idx * size)); - comparison = (*compar)(key, p); + p = (void *) (((const char *) base) + (idx * size)); + comparison = (*compar) (key, p); if (comparison < 0) u = idx; else if (comparison > 0) l = idx + 1; else - return (PTR) p; + return (void *) p; } return NULL; diff -durpN glibc-2.0.1/stdlib/exit.c glibc-2.0.2/stdlib/exit.c --- glibc-2.0.1/stdlib/exit.c Sat Oct 26 21:03:30 1996 +++ glibc-2.0.2/stdlib/exit.c Sun Feb 9 22:18:46 1997 @@ -1,20 +1,20 @@ -/* Copyright (C) 1991, 1995, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 diff -durpN glibc-2.0.1/stdlib/fpioconst.c glibc-2.0.2/stdlib/fpioconst.c --- glibc-2.0.1/stdlib/fpioconst.c Tue May 7 22:06:25 1996 +++ glibc-2.0.2/stdlib/fpioconst.c Sun Feb 9 22:18:46 1997 @@ -1,21 +1,21 @@ /* Table of MP integer constants 10^(2^i), used for floating point <-> decimal. -Copyright (C) 1995, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. + Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 "fpioconst.h" #include /* This defines BITS_PER_MP_LIMB. */ diff -durpN glibc-2.0.1/stdlib/fpioconst.h glibc-2.0.2/stdlib/fpioconst.h --- glibc-2.0.1/stdlib/fpioconst.h Tue May 7 22:06:28 1996 +++ glibc-2.0.2/stdlib/fpioconst.h Sun Feb 9 22:18:47 1997 @@ -1,21 +1,21 @@ /* Header file for constants used in floating point <-> decimal conversions. -Copyright (C) 1995, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. + Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 _FPIOCONST_H #define _FPIOCONST_H diff -durpN glibc-2.0.1/stdlib/jrand48.c glibc-2.0.2/stdlib/jrand48.c --- glibc-2.0.1/stdlib/jrand48.c Fri Sep 20 21:47:38 1996 +++ glibc-2.0.2/stdlib/jrand48.c Sun Feb 9 22:18:48 1997 @@ -1,21 +1,21 @@ -/* Copyright (C) 1995, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. -Contributed by Ulrich Drepper , August 1995. +/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , August 1995. -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 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. + 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. */ + 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 diff -durpN glibc-2.0.1/stdlib/jrand48_r.c glibc-2.0.2/stdlib/jrand48_r.c --- glibc-2.0.1/stdlib/jrand48_r.c Mon Sep 18 17:47:47 1995 +++ glibc-2.0.2/stdlib/jrand48_r.c Sun Feb 9 22:18:49 1997 @@ -1,21 +1,21 @@ -/* Copyright (C) 1995 Free Software Foundation, Inc. -This file is part of the GNU C Library. -Contributed by Ulrich Drepper , August 1995. +/* Copyright (C) 1995, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , August 1995. -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 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. + 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. */ + 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 diff -durpN glibc-2.0.1/stdlib/labs.c glibc-2.0.2/stdlib/labs.c --- glibc-2.0.1/stdlib/labs.c Tue Jan 16 21:01:31 1996 +++ glibc-2.0.2/stdlib/labs.c Sun Feb 9 22:18:50 1997 @@ -1,22 +1,21 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1991, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + The GNU C Library is 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 #undef labs @@ -24,7 +23,7 @@ Cambridge, MA 02139, USA. */ /* Return the absolute value of I. */ long int -DEFUN(labs, (i), long int i) +labs (long int i) { - return(i < 0 ? -i : i); + return i < 0 ? -i : i; } diff -durpN glibc-2.0.1/stdlib/lcong48.c glibc-2.0.2/stdlib/lcong48.c --- glibc-2.0.1/stdlib/lcong48.c Fri Sep 20 21:48:15 1996 +++ glibc-2.0.2/stdlib/lcong48.c Sun Feb 9 22:18:51 1997 @@ -1,21 +1,21 @@ -/* Copyright (C) 1995, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. -Contributed by Ulrich Drepper , August 1995. +/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , August 1995. -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 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. + 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. */ + 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 diff -durpN glibc-2.0.1/stdlib/lcong48_r.c glibc-2.0.2/stdlib/lcong48_r.c --- glibc-2.0.1/stdlib/lcong48_r.c Sun Jun 2 14:49:09 1996 +++ glibc-2.0.2/stdlib/lcong48_r.c Sun Feb 9 22:18:51 1997 @@ -1,21 +1,21 @@ -/* Copyright (C) 1995 Free Software Foundation, Inc. -This file is part of the GNU C Library. -Contributed by Ulrich Drepper , August 1995. +/* Copyright (C) 1995, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , August 1995. -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 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. + 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. */ + 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 diff -durpN glibc-2.0.1/stdlib/llabs.c glibc-2.0.2/stdlib/llabs.c --- glibc-2.0.1/stdlib/llabs.c Sun May 26 13:52:05 1996 +++ glibc-2.0.2/stdlib/llabs.c Sun Feb 9 22:18:52 1997 @@ -1,21 +1,21 @@ /* `long long int' absolute value. -Copyright (C) 1991, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. + Copyright (C) 1991, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -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 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. + 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. */ + 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 diff -durpN glibc-2.0.1/stdlib/lrand48.c glibc-2.0.2/stdlib/lrand48.c --- glibc-2.0.1/stdlib/lrand48.c Fri Sep 20 21:48:35 1996 +++ glibc-2.0.2/stdlib/lrand48.c Sun Feb 9 22:18:52 1997 @@ -1,21 +1,21 @@ -/* Copyright (C) 1995, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. -Contributed by Ulrich Drepper , August 1995. +/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , August 1995. -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 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. + 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. */ + 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 diff -durpN glibc-2.0.1/stdlib/lrand48_r.c glibc-2.0.2/stdlib/lrand48_r.c --- glibc-2.0.1/stdlib/lrand48_r.c Sun Sep 17 16:01:00 1995 +++ glibc-2.0.2/stdlib/lrand48_r.c Sun Feb 9 22:18:53 1997 @@ -1,21 +1,21 @@ -/* Copyright (C) 1995 Free Software Foundation, Inc. -This file is part of the GNU C Library. -Contributed by Ulrich Drepper , August 1995. +/* Copyright (C) 1995, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , August 1995. -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 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. + 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. */ + 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 diff -durpN glibc-2.0.1/stdlib/mblen.c glibc-2.0.2/stdlib/mblen.c --- glibc-2.0.1/stdlib/mblen.c Wed Jun 12 14:17:47 1991 +++ glibc-2.0.2/stdlib/mblen.c Sun Feb 9 22:18:54 1997 @@ -1,22 +1,21 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1991, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + The GNU C Library is 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 #undef mblen @@ -25,7 +24,7 @@ Cambridge, MA 02139, USA. */ /* Return the length of the multibyte character (if there is one) at S which is no longer than N characters. */ int -DEFUN(mblen, (s, n), CONST char *s AND size_t n) +mblen (const char *s, size_t n) { - return(mbtowc((wchar_t *) NULL, s, n)); + return mbtowc ((wchar_t *) NULL, s, n); } diff -durpN glibc-2.0.1/stdlib/mbstowcs.c glibc-2.0.2/stdlib/mbstowcs.c --- glibc-2.0.1/stdlib/mbstowcs.c Mon Aug 5 09:01:51 1996 +++ glibc-2.0.2/stdlib/mbstowcs.c Sun Feb 9 22:18:54 1997 @@ -1,20 +1,20 @@ -/* Copyright (C) 1991, 1992, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1991, 1992, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 diff -durpN glibc-2.0.1/stdlib/mbtowc.c glibc-2.0.2/stdlib/mbtowc.c --- glibc-2.0.1/stdlib/mbtowc.c Mon Aug 5 09:01:34 1996 +++ glibc-2.0.2/stdlib/mbtowc.c Sun Feb 9 22:18:55 1997 @@ -1,20 +1,20 @@ -/* Copyright (C) 1991, 1992, 1995, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1991, 1992, 1995, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 diff -durpN glibc-2.0.1/stdlib/mp_clz_tab.c glibc-2.0.2/stdlib/mp_clz_tab.c --- glibc-2.0.1/stdlib/mp_clz_tab.c Mon Mar 20 23:42:54 1995 +++ glibc-2.0.2/stdlib/mp_clz_tab.c Sun Feb 9 22:18:56 1997 @@ -1,32 +1,31 @@ /* __clz_tab -- support for longlong.h + Copyright (C) 1991, 1993, 1994, 1997 Free Software Foundation, Inc. -Copyright (C) 1991, 1993, 1994 Free Software Foundation, Inc. - -This file is part of the GNU MP Library. + This file is part of the GNU C Library. Its master source is NOT part of + the C library, however. The master source lives in 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 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 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 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 Library General Public -License for more details. + 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 MP Library; see the file COPYING.LIB. If not, write to -the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + 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. */ #if 0 #include "gmp.h" #include "gmp-impl.h" #endif -#if 0 const -#endif - unsigned char __clz_tab[] = +unsigned char __clz_tab[] = { 0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, diff -durpN glibc-2.0.1/stdlib/mrand48.c glibc-2.0.2/stdlib/mrand48.c --- glibc-2.0.1/stdlib/mrand48.c Fri Sep 20 21:48:53 1996 +++ glibc-2.0.2/stdlib/mrand48.c Sun Feb 9 22:18:56 1997 @@ -1,21 +1,21 @@ -/* Copyright (C) 1995, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. -Contributed by Ulrich Drepper , August 1995. +/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , August 1995. -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 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. + 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. */ + 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 diff -durpN glibc-2.0.1/stdlib/mrand48_r.c glibc-2.0.2/stdlib/mrand48_r.c --- glibc-2.0.1/stdlib/mrand48_r.c Sun Sep 17 16:01:04 1995 +++ glibc-2.0.2/stdlib/mrand48_r.c Sun Feb 9 22:18:57 1997 @@ -1,21 +1,21 @@ -/* Copyright (C) 1995 Free Software Foundation, Inc. -This file is part of the GNU C Library. -Contributed by Ulrich Drepper , August 1995. +/* Copyright (C) 1995, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , August 1995. -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 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. + 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. */ + 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 diff -durpN glibc-2.0.1/stdlib/msort.c glibc-2.0.2/stdlib/msort.c --- glibc-2.0.1/stdlib/msort.c Tue Sep 24 16:36:05 1996 +++ glibc-2.0.2/stdlib/msort.c Fri Feb 14 21:32:38 1997 @@ -1,23 +1,22 @@ -/* msort -- an alternative to qsort, with an identical interface. - Copyright (C) 1992, 1995, 1996 Free Software Foundation, Inc. +/* An alternative to qsort, with an identical interface. + This file is part of the GNU C Library. + Copyright (C) 1992, 1995, 1996, 1997 Free Software Foundation, Inc. Written by Mike Haertel, September 1988. -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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 @@ -110,7 +109,7 @@ qsort (b, n, s, cmp) { /* Couldn't get space, so use the slower algorithm that doesn't need a temporary array. */ - extern void _quicksort __P ((void *__base, + extern void _quicksort __P ((void *const __base, size_t __nmemb, size_t __size, __compar_fn_t __compar)); _quicksort (b, n, s, cmp); diff -durpN glibc-2.0.1/stdlib/nrand48.c glibc-2.0.2/stdlib/nrand48.c --- glibc-2.0.1/stdlib/nrand48.c Fri Sep 20 21:49:07 1996 +++ glibc-2.0.2/stdlib/nrand48.c Sun Feb 9 22:18:58 1997 @@ -1,21 +1,21 @@ -/* Copyright (C) 1995, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. -Contributed by Ulrich Drepper , August 1995. +/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , August 1995. -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 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. + 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. */ + 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 diff -durpN glibc-2.0.1/stdlib/nrand48_r.c glibc-2.0.2/stdlib/nrand48_r.c --- glibc-2.0.1/stdlib/nrand48_r.c Mon Sep 18 17:46:58 1995 +++ glibc-2.0.2/stdlib/nrand48_r.c Sun Feb 9 22:18:59 1997 @@ -1,21 +1,21 @@ -/* Copyright (C) 1995 Free Software Foundation, Inc. -This file is part of the GNU C Library. -Contributed by Ulrich Drepper , August 1995. +/* Copyright (C) 1995, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , August 1995. -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 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. + 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. */ + 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 diff -durpN glibc-2.0.1/stdlib/qsort.c glibc-2.0.2/stdlib/qsort.c --- glibc-2.0.1/stdlib/qsort.c Wed Dec 18 16:55:39 1996 +++ glibc-2.0.2/stdlib/qsort.c Fri Feb 14 21:32:39 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1992, 1996 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1992, 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Written by Douglas C. Schmidt (schmidt@ics.uci.edu). @@ -17,10 +17,12 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include #include #include +extern void _quicksort __P ((void *const pbase, size_t total_elems, + size_t size, __compar_fn_t cmp)); + /* Byte-wise swap two items of size SIZE. */ #define SWAP(a, b, size) \ do \ @@ -77,16 +79,18 @@ typedef struct stack size is needed (actually O(1) in this case)! */ void -DEFUN(_quicksort, (pbase, total_elems, size, cmp), - PTR CONST pbase AND size_t total_elems AND size_t size AND - int EXFUN((*cmp), (CONST PTR, CONST PTR))) +_quicksort (pbase, total_elems, size, cmp) + void *const pbase; + size_t total_elems; + size_t size; + int (*cmp) __P ((const void *, const void *)); { register char *base_ptr = (char *) pbase; /* Allocating SIZE bytes for a pivot buffer facilitates a better algorithm below since we can do comparisons directly on the pivot. */ char *pivot_buffer = (char *) __alloca (size); - CONST size_t max_thresh = MAX_THRESH * size; + const size_t max_thresh = MAX_THRESH * size; if (total_elems == 0) /* Avoid lossage with unsigned arithmetic below. */ @@ -114,16 +118,16 @@ DEFUN(_quicksort, (pbase, total_elems, s char *mid = lo + size * ((hi - lo) / size >> 1); - if ((*cmp)((PTR) mid, (PTR) lo) < 0) - SWAP(mid, lo, size); - if ((*cmp)((PTR) hi, (PTR) mid) < 0) - SWAP(mid, hi, size); + if ((*cmp) ((void *) mid, (void *) lo) < 0) + SWAP (mid, lo, size); + if ((*cmp) ((void *) hi, (void *) mid) < 0) + SWAP (mid, hi, size); else goto jump_over; - if ((*cmp)((PTR) mid, (PTR) lo) < 0) - SWAP(mid, lo, size); + if ((*cmp) ((void *) mid, (void *) lo) < 0) + SWAP (mid, lo, size); jump_over:; - memcpy(pivot, mid, size); + memcpy (pivot, mid, size); pivot = pivot_buffer; left_ptr = lo + size; @@ -134,15 +138,15 @@ DEFUN(_quicksort, (pbase, total_elems, s that this algorithm runs much faster than others. */ do { - while ((*cmp)((PTR) left_ptr, (PTR) pivot) < 0) + while ((*cmp) ((void *) left_ptr, (void *) pivot) < 0) left_ptr += size; - while ((*cmp)((PTR) pivot, (PTR) right_ptr) < 0) + while ((*cmp) ((void *) pivot, (void *) right_ptr) < 0) right_ptr -= size; if (left_ptr < right_ptr) { - SWAP(left_ptr, right_ptr, size); + SWAP (left_ptr, right_ptr, size); left_ptr += size; right_ptr -= size; } @@ -164,7 +168,7 @@ DEFUN(_quicksort, (pbase, total_elems, s { if ((size_t) (hi - left_ptr) <= max_thresh) /* Ignore both small partitions. */ - POP(lo, hi); + POP (lo, hi); else /* Ignore small left partition. */ lo = left_ptr; @@ -175,13 +179,13 @@ DEFUN(_quicksort, (pbase, total_elems, s else if ((right_ptr - lo) > (hi - left_ptr)) { /* Push larger left partition indices. */ - PUSH(lo, right_ptr); + PUSH (lo, right_ptr); lo = left_ptr; } else { /* Push larger right partition indices. */ - PUSH(left_ptr, hi); + PUSH (left_ptr, hi); hi = right_ptr; } } @@ -196,7 +200,7 @@ DEFUN(_quicksort, (pbase, total_elems, s #define min(x, y) ((x) < (y) ? (x) : (y)) { - char *CONST end_ptr = &base_ptr[size * (total_elems - 1)]; + char *const end_ptr = &base_ptr[size * (total_elems - 1)]; char *tmp_ptr = base_ptr; char *thresh = min(end_ptr, base_ptr + max_thresh); register char *run_ptr; @@ -206,11 +210,11 @@ DEFUN(_quicksort, (pbase, total_elems, s and the operation speeds up insertion sort's inner loop. */ for (run_ptr = tmp_ptr + size; run_ptr <= thresh; run_ptr += size) - if ((*cmp)((PTR) run_ptr, (PTR) tmp_ptr) < 0) + if ((*cmp) ((void *) run_ptr, (void *) tmp_ptr) < 0) tmp_ptr = run_ptr; if (tmp_ptr != base_ptr) - SWAP(tmp_ptr, base_ptr, size); + SWAP (tmp_ptr, base_ptr, size); /* Insertion sort, running from left-hand-side up to right-hand-side. */ @@ -218,7 +222,7 @@ DEFUN(_quicksort, (pbase, total_elems, s while ((run_ptr += size) <= end_ptr) { tmp_ptr = run_ptr - size; - while ((*cmp)((PTR) run_ptr, (PTR) tmp_ptr) < 0) + while ((*cmp) ((void *) run_ptr, (void *) tmp_ptr) < 0) tmp_ptr -= size; tmp_ptr += size; diff -durpN glibc-2.0.1/stdlib/rpmatch.c glibc-2.0.2/stdlib/rpmatch.c --- glibc-2.0.1/stdlib/rpmatch.c Fri Apr 19 20:04:20 1996 +++ glibc-2.0.2/stdlib/rpmatch.c Sun Feb 9 22:19:00 1997 @@ -1,23 +1,22 @@ -/* rpmatch - determine whether string value is affirmation or negative - response according to current locale's data -Copyright (C) 1996 Free Software Foundation, Inc. - -This file is part of the GNU C Library. +/* Determine whether string value is affirmation or negative response + according to current locale's data. + This file is part of the GNU C Library. + Copyright (C) 1996, 1997 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 -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + 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. + 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. */ + 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 diff -durpN glibc-2.0.1/stdlib/seed48.c glibc-2.0.2/stdlib/seed48.c --- glibc-2.0.1/stdlib/seed48.c Fri Sep 20 21:49:41 1996 +++ glibc-2.0.2/stdlib/seed48.c Sun Feb 9 22:19:01 1997 @@ -1,21 +1,21 @@ -/* Copyright (C) 1995, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. -Contributed by Ulrich Drepper , August 1995. +/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , August 1995. -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 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. + 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. */ + 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 diff -durpN glibc-2.0.1/stdlib/seed48_r.c glibc-2.0.2/stdlib/seed48_r.c --- glibc-2.0.1/stdlib/seed48_r.c Sun Jun 2 14:49:08 1996 +++ glibc-2.0.2/stdlib/seed48_r.c Sun Feb 9 22:19:02 1997 @@ -1,21 +1,21 @@ -/* Copyright (C) 1995 Free Software Foundation, Inc. -This file is part of the GNU C Library. -Contributed by Ulrich Drepper , August 1995. +/* Copyright (C) 1995, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , August 1995. -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 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. + 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. */ + 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 diff -durpN glibc-2.0.1/stdlib/srand48.c glibc-2.0.2/stdlib/srand48.c --- glibc-2.0.1/stdlib/srand48.c Fri Sep 20 21:50:01 1996 +++ glibc-2.0.2/stdlib/srand48.c Sun Feb 9 22:19:03 1997 @@ -1,21 +1,21 @@ -/* Copyright (C) 1995, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. -Contributed by Ulrich Drepper , August 1995. +/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , August 1995. -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 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. + 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. */ + 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 diff -durpN glibc-2.0.1/stdlib/srand48_r.c glibc-2.0.2/stdlib/srand48_r.c --- glibc-2.0.1/stdlib/srand48_r.c Mon Jan 22 14:22:18 1996 +++ glibc-2.0.2/stdlib/srand48_r.c Sun Feb 9 22:19:03 1997 @@ -1,21 +1,21 @@ -/* Copyright (C) 1995, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. -Contributed by Ulrich Drepper , August 1995. +/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , August 1995. -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 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. + 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. */ + 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 diff -durpN glibc-2.0.1/stdlib/stdlib.h glibc-2.0.2/stdlib/stdlib.h --- glibc-2.0.1/stdlib/stdlib.h Wed Jan 29 22:10:20 1997 +++ glibc-2.0.2/stdlib/stdlib.h Sun Feb 9 22:19:04 1997 @@ -79,6 +79,11 @@ extern int atoi __P ((__const char *__np /* Convert a string to a long integer. */ extern long int atol __P ((__const char *__nptr)); +#if defined (__GNUC__) && defined (__USE_MISC) +/* These functions will part of the standard C library in ISO C 9X. */ +extern long long int atoll __P ((__const char *__nptr)); +#endif + /* Convert a string to a floating-point number. */ extern double strtod __P ((__const char *__nptr, char **__endptr)); @@ -105,6 +110,8 @@ extern unsigned long long int strtouq __ #endif /* GCC and use BSD. */ #if defined (__GNUC__) && defined (__USE_MISC) +/* These functions will part of the standard C library in ISO C 9X. */ + /* Convert a string to a quadword integer. */ extern long long int strtoll __P ((__const char *__nptr, char **__endptr, int __base)); @@ -182,6 +189,11 @@ extern __inline int atoi (__const char * { return (int) strtol (__nptr, (char **) NULL, 10); } extern __inline long int atol (__const char *__nptr) { return strtol (__nptr, (char **) NULL, 10); } + +#ifdef __USE_MISC +extern __inline long long int atoll (__const char *__nptr) +{ return strtoll (__nptr, (char **) NULL, 10); } +#endif #endif /* Optimizing GCC >=2. */ diff -durpN glibc-2.0.1/stdlib/strtod.c glibc-2.0.2/stdlib/strtod.c --- glibc-2.0.1/stdlib/strtod.c Wed Dec 18 16:59:08 1996 +++ glibc-2.0.2/stdlib/strtod.c Tue Mar 11 23:42:21 1997 @@ -1,23 +1,22 @@ /* Read decimal floating point numbers. -Copyright (C) 1995, 1996 Free Software Foundation, Inc. -Contributed by Ulrich Drepper , 1995. - -This file is part of the GNU C Library. + This file is part of the GNU C Library. + Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + Contributed by Ulrich Drepper , 1995. -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 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. + 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. */ + 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. */ /* Configuration part. These macros are defined by `strtold.c', `strtof.c', `wcstod.c', `wcstold.c', and `wcstof.c' to produce the @@ -107,10 +106,10 @@ static const mp_limb_t _tens_in_limb[MAX 1000000, 10000000, 100000000, 1000000000 #if BITS_PER_MP_LIMB > 32 - , 10000000000, 100000000000, - 1000000000000, 10000000000000, 100000000000000, - 1000000000000000, 10000000000000000, 100000000000000000, - 1000000000000000000, 10000000000000000000U + , 10000000000U, 100000000000U, + 1000000000000U, 10000000000000U, 100000000000000U, + 1000000000000000U, 10000000000000000U, 100000000000000000U, + 1000000000000000000U, 10000000000000000000U #endif #if BITS_PER_MP_LIMB > 64 #error "Need to expand tens_in_limb table to" MAX_DIG_PER_LIMB @@ -1077,7 +1076,9 @@ INTERNAL (STRTOF) (nptr, endptr, group) for (i = RETURN_LIMB_SIZE; i > empty; --i) retval[i] = retval[i - empty]; #endif +#if RETURN_LIMB_SIZE > 1 retval[1] = 0; +#endif for (i = numsize; i > 0; --i) num[i + empty] = num[i - 1]; MPN_ZERO (num, empty + 1); diff -durpN glibc-2.0.1/stdlib/strtol.c glibc-2.0.2/stdlib/strtol.c --- glibc-2.0.1/stdlib/strtol.c Fri Jan 17 10:21:19 1997 +++ glibc-2.0.2/stdlib/strtol.c Fri Mar 21 13:51:00 1997 @@ -312,8 +312,6 @@ INTERNAL (strtol) (nptr, endptr, base, g ? -((unsigned LONG int) (LONG_MIN + 1)) + 1 : (unsigned LONG int) LONG_MAX)) overflow = 1; -#else - overflow |= negative; #endif if (overflow) diff -durpN glibc-2.0.1/stdlib/testdiv.c glibc-2.0.2/stdlib/testdiv.c --- glibc-2.0.1/stdlib/testdiv.c Tue Jul 14 20:55:57 1992 +++ glibc-2.0.2/stdlib/testdiv.c Thu Mar 20 14:20:53 1997 @@ -1,33 +1,40 @@ -/* Copyright (C) 1992 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1992, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + The GNU C Library is 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 int -DEFUN_VOID(main) +main (void) { + int err = 0; int i, j; while (scanf ("%d %d\n", &i, &j) == 2) { div_t d = div (i, j); - printf ("%d / %d = %d + %d/%d\n", i, j, d.quot, d.rem, j); + printf ("%d / %d = %d + %d/%d", i, j, d.quot, d.rem, j); + if (i == d.quot * j + d.rem) + fputs (" OK\n", stdout); + else + { + fputs (" FAILED\n", stdout); + err = 1; + } } - return 0; + return err; } diff -durpN glibc-2.0.1/stdlib/tst-strtod.c glibc-2.0.2/stdlib/tst-strtod.c --- glibc-2.0.1/stdlib/tst-strtod.c Tue Dec 10 14:58:39 1996 +++ glibc-2.0.2/stdlib/tst-strtod.c Fri Mar 21 00:08:46 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1996 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -49,6 +49,7 @@ main (int argc, char ** argv) register const struct ltest *lt; char *ep; int status = 0; + int save_errno; for (lt = tests; lt->str != NULL; ++lt) { @@ -56,30 +57,32 @@ main (int argc, char ** argv) errno = 0; d = strtod(lt->str, &ep); - printf("strtod(\"%s\") test %u", + save_errno = errno; + printf ("strtod (\"%s\") test %u", lt->str, (unsigned int) (lt - tests)); - if (d == lt->expect && *ep == lt->left && errno == lt->err) - puts("\tOK"); + if (d == lt->expect && *ep == lt->left && save_errno == lt->err) + puts ("\tOK"); else { - puts("\tBAD"); + puts ("\tBAD"); if (d != lt->expect) - printf(" returns %.60g, expected %.60g\n", d, lt->expect); + printf (" returns %.60g, expected %.60g\n", d, lt->expect); if (lt->left != *ep) { char exp1[5], exp2[5]; - expand(exp1, *ep); - expand(exp2, lt->left); - printf(" leaves '%s', expected '%s'\n", exp1, exp2); + expand (exp1, *ep); + expand (exp2, lt->left); + printf (" leaves '%s', expected '%s'\n", exp1, exp2); } - if (errno != lt->err) - printf(" errno %d (%s) instead of %d (%s)\n", - errno, strerror(errno), lt->err, strerror(lt->err)); + if (save_errno != lt->err) + printf (" errno %d (%s) instead of %d (%s)\n", + save_errno, strerror (save_errno), + lt->err, strerror (lt->err)); status = 1; } } - exit(status ? EXIT_FAILURE : EXIT_SUCCESS); + exit (status ? EXIT_FAILURE : EXIT_SUCCESS); } static void @@ -87,11 +90,11 @@ expand (dst, c) char *dst; register int c; { - if (isprint(c)) + if (isprint (c)) { dst[0] = c; dst[1] = '\0'; } else - (void) sprintf(dst, "%#.3o", (unsigned int) c); + (void) sprintf (dst, "%#.3o", (unsigned int) c); } diff -durpN glibc-2.0.1/stdlib/tst-strtol.c glibc-2.0.2/stdlib/tst-strtol.c --- glibc-2.0.1/stdlib/tst-strtol.c Fri Jan 17 09:58:39 1997 +++ glibc-2.0.2/stdlib/tst-strtol.c Fri Mar 21 00:08:46 1997 @@ -38,7 +38,7 @@ static const struct ltest tests[] = { "0xffffffffg", 0xffffffff, 0, 'g', 0 }, { "0xf1f2f3f4f5", 0xffffffff, 0, 0, ERANGE }, { "-0x123456789", 0xffffffff, 0, 0, ERANGE }, - { "-0xfedcba98", 0xffffffff, 0, 0, ERANGE }, + { "-0xfedcba98", 0x01234568, 0, 0, 0 }, { NULL, 0, 0, 0, 0 }, #else /* assume 64 bit long... */ @@ -66,7 +66,7 @@ static const struct ltest tests[] = { "0xffffffffffffffffg", 0xffffffffffffffff, 0, 'g', 0 }, { "0xf1f2f3f4f5f6f7f8f9", 0xffffffffffffffff, 0, 0, ERANGE }, { "-0x123456789abcdef01", 0xffffffffffffffff, 0, 0, ERANGE }, - { "-0xfedcba987654321", 0xffffffffffffffff, 0, 0, ERANGE }, + { "-0xfedcba987654321", 0x0123456789abcdf, 0, 0, 0 }, { NULL, 0, 0, 0, 0 }, #endif }; @@ -79,16 +79,19 @@ main (int argc, char ** argv) register const struct ltest *lt; char *ep; int status = 0; + int save_errno; for (lt = tests; lt->str != NULL; ++lt) { register long int l; errno = 0; - l = strtol(lt->str, &ep, lt->base); - printf("strtol(\"%s\", , %d) test %u", - lt->str, lt->base, (unsigned int) (lt - tests)); - if (l == (long int) lt->expect && *ep == lt->left && errno == lt->err) + l = strtol (lt->str, &ep, lt->base); + save_errno = errno; + printf ("strtol(\"%s\", , %d) test %u", + lt->str, lt->base, (unsigned int) (lt - tests)); + if (l == (long int) lt->expect && *ep == lt->left + && save_errno == lt->err) puts("\tOK"); else { @@ -99,13 +102,14 @@ main (int argc, char ** argv) if (lt->left != *ep) { char exp1[5], exp2[5]; - expand(exp1, *ep); - expand(exp2, lt->left); - printf(" leaves '%s', expected '%s'\n", exp1, exp2); + expand (exp1, *ep); + expand (exp2, lt->left); + printf (" leaves '%s', expected '%s'\n", exp1, exp2); } - if (errno != lt->err) - printf(" errno %d (%s) instead of %d (%s)\n", - errno, strerror(errno), lt->err, strerror(lt->err)); + if (save_errno != lt->err) + printf (" errno %d (%s) instead of %d (%s)\n", + save_errno, strerror (save_errno), + lt->err, strerror (lt->err)); status = 1; } } @@ -115,32 +119,34 @@ main (int argc, char ** argv) register unsigned long int ul; errno = 0; - ul = strtoul(lt->str, &ep, lt->base); - printf("strtoul(\"%s\", , %d) test %u", - lt->str, lt->base, (unsigned int) (lt - tests)); - if (ul == lt->expect && *ep == lt->left && errno == lt->err) + ul = strtoul (lt->str, &ep, lt->base); + save_errno = errno; + printf ("strtoul(\"%s\", , %d) test %u", + lt->str, lt->base, (unsigned int) (lt - tests)); + if (ul == lt->expect && *ep == lt->left && save_errno == lt->err) puts("\tOK"); else { - puts("\tBAD"); + puts ("\tBAD"); if (ul != lt->expect) - printf(" returns %lu, expected %lu\n", - ul, lt->expect); + printf (" returns %lu, expected %lu\n", + ul, lt->expect); if (lt->left != *ep) { char exp1[5], exp2[5]; - expand(exp1, *ep); - expand(exp2, lt->left); - printf(" leaves '%s', expected '%s'\n", exp1, exp2); + expand (exp1, *ep); + expand (exp2, lt->left); + printf (" leaves '%s', expected '%s'\n", exp1, exp2); } - if (errno != lt->err) - printf(" errno %d (%s) instead of %d (%s)\n", - errno, strerror(errno), lt->err, strerror(lt->err)); + if (save_errno != lt->err) + printf (" errno %d (%s) instead of %d (%s)\n", + save_errno, strerror (save_errno), + lt->err, strerror (lt->err)); status = 1; } } - exit(status ? EXIT_FAILURE : EXIT_SUCCESS); + exit (status ? EXIT_FAILURE : EXIT_SUCCESS); } static void @@ -148,11 +154,11 @@ expand (dst, c) char *dst; int c; { - if (isprint(c)) + if (isprint (c)) { dst[0] = c; dst[1] = '\0'; } else - (void) sprintf(dst, "%#.3o", (unsigned int) c); + (void) sprintf (dst, "%#.3o", (unsigned int) c); } diff -durpN glibc-2.0.1/stdlib/wcstombs.c glibc-2.0.2/stdlib/wcstombs.c --- glibc-2.0.1/stdlib/wcstombs.c Mon Aug 5 09:02:01 1996 +++ glibc-2.0.2/stdlib/wcstombs.c Sun Feb 9 22:19:06 1997 @@ -1,20 +1,20 @@ -/* Copyright (C) 1991, 1992, 1995, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1991, 1992, 1995, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 diff -durpN glibc-2.0.1/stdlib/wctomb.c glibc-2.0.2/stdlib/wctomb.c --- glibc-2.0.1/stdlib/wctomb.c Mon Aug 5 09:01:42 1996 +++ glibc-2.0.2/stdlib/wctomb.c Sun Feb 9 22:19:06 1997 @@ -1,20 +1,20 @@ -/* Copyright (C) 1991, 1992, 1995, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1991, 1992, 1995, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 diff -durpN glibc-2.0.1/string/argz-ctsep.c glibc-2.0.2/string/argz-ctsep.c --- glibc-2.0.1/string/argz-ctsep.c Sun Dec 1 10:08:20 1996 +++ glibc-2.0.2/string/argz-ctsep.c Mon Feb 10 23:45:23 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -57,6 +57,8 @@ __argz_create_sep (const char *string, i *argz = NULL; *len = 0; } + + *len = nlen; } else { diff -durpN glibc-2.0.1/string/argz.h glibc-2.0.2/string/argz.h --- glibc-2.0.1/string/argz.h Sun Dec 1 10:15:31 1996 +++ glibc-2.0.2/string/argz.h Sun Mar 16 19:30:57 1997 @@ -1,5 +1,5 @@ /* Routines for dealing with '\0' separated arg vectors. - Copyright (C) 1995, 1996 Free Software Foundation, Inc. + Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. Written by Miles Bader The GNU C Library is free software; you can redistribute it and/or @@ -22,8 +22,17 @@ #define __ARGZ_H__ 1 #include -#include /* Define error_t. */ +#define __need_error_t +#include #include /* Need size_t, and strchr is called below. */ + +#ifndef __const +#define __const const +#endif + +#ifndef __error_t_defined +typedef int error_t; +#endif __BEGIN_DECLS diff -durpN glibc-2.0.1/string/strcoll.c glibc-2.0.2/string/strcoll.c --- glibc-2.0.1/string/strcoll.c Sun Dec 1 10:38:57 1996 +++ glibc-2.0.2/string/strcoll.c Wed Mar 5 12:58:24 1997 @@ -1,21 +1,21 @@ -/* Copyright (C) 1995, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. -Written by Ulrich Drepper , 1995. +/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Written by Ulrich Drepper , 1995. -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 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. + 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. */ + 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 @@ -67,16 +67,18 @@ STRCOLL (s1, s2) int s1idx = forward ? 0 : s1run->data[pass].number - 1; int s2idx = forward ? 0 : s2run->data[pass].number - 1; - do + while (1) { int s1ignore = 0; int s2ignore = 0; - u_int32_t w1, w2; + u_int32_t w1 = 0; + u_int32_t w2 = 0; /* Here we have to check for IGNORE entries. If these are found we count them and go on with the next value. */ - while ((w1 = s1run->data[pass].value[s1idx]) - == (u_int32_t) IGNORE_CHAR) + while (s1run != NULL + && ((w1 = s1run->data[pass].value[s1idx]) + == (u_int32_t) IGNORE_CHAR)) { ++s1ignore; if ((forward && ++s1idx >= s1run->data[pass].number) @@ -86,15 +88,19 @@ STRCOLL (s1, s2) if (nextp == NULL) { w1 = 0; - break; + /* No more non-INGOREd elements means lowest + possible value. */ + s1ignore = -1; } + else + s1idx = forward ? 0 : nextp->data[pass].number - 1; s1run = nextp; - s1idx = forward ? 0 : s1run->data[pass].number - 1; } } - while ((w2 = s2run->data[pass].value[s2idx]) - == (u_int32_t) IGNORE_CHAR) + while (s2run != NULL + && ((w2 = s2run->data[pass].value[s2idx]) + == (u_int32_t) IGNORE_CHAR)) { ++s2ignore; if ((forward && ++s2idx >= s2run->data[pass].number) @@ -104,13 +110,20 @@ STRCOLL (s1, s2) if (nextp == NULL) { w2 = 0; - break; + /* No more non-INGOREd elements means lowest + possible value. */ + s2ignore = -1; } + else + s2idx = forward ? 0 : nextp->data[pass].number - 1; s2run = nextp; - s2idx = forward ? 0 : s2run->data[pass].number - 1; } } + /* If one string is completely processed stop. */ + if (s1run == NULL || s2run == NULL) + break; + /* Now we have information of the number of ignored weights and the value of the next weight. */ if ((collate_rules[pass] & sort_position) != 0 @@ -150,7 +163,6 @@ STRCOLL (s1, s2) } } - while (s1run != NULL && s2run != NULL); if (s1run != s2run) return s1run != NULL ? 1 : -1; diff -durpN glibc-2.0.1/string/strxfrm.c glibc-2.0.2/string/strxfrm.c --- glibc-2.0.1/string/strxfrm.c Wed Dec 18 17:02:06 1996 +++ glibc-2.0.2/string/strxfrm.c Wed Mar 5 12:55:31 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1995, 1996 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Written by Ulrich Drepper , 1995. @@ -172,14 +172,16 @@ STRXFRM (STRING_TYPE *dest, const STRING const weight_t *run = forward ? forw : backw; int idx = forward ? 0 : run->data[pass].number - 1; - do + while (1) { int ignore = 0; - u_int32_t w; + u_int32_t w = 0; /* Here we have to check for IGNORE entries. If these are found we count them and go on with he next value. */ - while ((w = run->data[pass].value[idx]) == (u_int32_t) IGNORE_CHAR) + while (run != NULL + && ((w = run->data[pass].value[idx]) + == (u_int32_t) IGNORE_CHAR)) { ++ignore; if ((forward && ++idx >= run->data[pass].number) @@ -189,13 +191,20 @@ STRXFRM (STRING_TYPE *dest, const STRING if (nextp == NULL) { w = 0; - break; + /* No more non-INGOREd elements means lowest + possible value. */ + ignore = -1; } + else + idx = forward ? 0 : nextp->data[pass].number - 1; run = nextp; - idx = forward ? 0 : run->data[pass].number - 1; } } + /* Stop if all characters are processed. */ + if (run == NULL) + break; + /* Now we have information of the number of ignored weights and the value of the next weight. We have to add 2 because 0 means EOS and 1 is the intermediate string end. */ @@ -220,7 +229,6 @@ STRXFRM (STRING_TYPE *dest, const STRING idx = run->data[pass].number - 1; } } - while (run != NULL); /* Write marker for end of word. */ if (pass + 1 < collate_nrules) diff -durpN glibc-2.0.1/sunrpc/auth_unix.c glibc-2.0.2/sunrpc/auth_unix.c --- glibc-2.0.1/sunrpc/auth_unix.c Mon Dec 30 08:21:31 1996 +++ glibc-2.0.2/sunrpc/auth_unix.c Sun Feb 9 22:19:08 1997 @@ -215,14 +215,15 @@ authunix_marshal(auth, xdrs) static bool_t authunix_validate(auth, verf) register AUTH *auth; - struct opaque_auth verf; + struct opaque_auth *verf; { register struct audata *au; XDR xdrs; - if (verf.oa_flavor == AUTH_SHORT) { + if (verf->oa_flavor == AUTH_SHORT) { au = AUTH_PRIVATE(auth); - xdrmem_create(&xdrs, verf.oa_base, verf.oa_length, XDR_DECODE); + xdrmem_create(&xdrs, verf->oa_base, verf->oa_length, + XDR_DECODE); if (au->au_shcred.oa_base != NULL) { mem_free(au->au_shcred.oa_base, diff -durpN glibc-2.0.1/sunrpc/authuxprot.c glibc-2.0.2/sunrpc/authuxprot.c --- glibc-2.0.1/sunrpc/authuxprot.c Sun Feb 6 16:42:41 1994 +++ glibc-2.0.2/sunrpc/authuxprot.c Sun Feb 9 22:19:08 1997 @@ -6,23 +6,23 @@ * may copy or modify Sun RPC without charge, but are not authorized * to license or distribute it to anyone else except as part of a product or * program developed by the user. - * + * * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * + * * Sun RPC is provided with no support and without any obligation on the * part of Sun Microsystems, Inc. to assist in its use, correction, * modification or enhancement. - * + * * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC * OR ANY PART THEREOF. - * + * * In no event will Sun Microsystems, Inc. be liable for any lost revenue * or profits or other special, indirect and consequential damages, even if * Sun has been advised of the possibility of such damages. - * + * * Sun Microsystems, Inc. * 2550 Garcia Avenue * Mountain View, California 94043 @@ -55,12 +55,17 @@ xdr_authunix_parms(xdrs, p) if (xdr_u_long(xdrs, &(p->aup_time)) && xdr_string(xdrs, &(p->aup_machname), MAX_MACHINE_NAME) - && xdr_int(xdrs, &(p->aup_uid)) - && xdr_int(xdrs, &(p->aup_gid)) - && xdr_array(xdrs, (caddr_t *)&(p->aup_gids), - &(p->aup_len), NGRPS, sizeof(int), xdr_int) ) { + && (sizeof (uid_t) == sizeof (short int) + ? xdr_u_short(xdrs, (u_short *) &(p->aup_uid)) + : xdr_u_int(xdrs, (u_int *) &(p->aup_uid))) + && (sizeof (gid_t) == sizeof (short int) + ? xdr_u_short(xdrs, (u_short *) &(p->aup_gid)) + : xdr_u_int(xdrs, (u_int *) &(p->aup_gid))) + && xdr_array(xdrs, (caddr_t *)&(p->aup_gids), + &(p->aup_len), NGRPS, sizeof(gid_t), + (sizeof (gid_t) == sizeof (short int) + ? xdr_u_short : xdr_u_int)) ) { return (TRUE); } return (FALSE); } - diff -durpN glibc-2.0.1/sunrpc/clnt_tcp.c glibc-2.0.2/sunrpc/clnt_tcp.c --- glibc-2.0.1/sunrpc/clnt_tcp.c Wed Dec 18 17:03:20 1996 +++ glibc-2.0.2/sunrpc/clnt_tcp.c Sun Feb 9 22:19:09 1997 @@ -417,9 +417,10 @@ readtcp(ct, buf, len) #endif /* def FD_SETSIZE */ while (TRUE) { + struct timeval timeout = ct->ct_wait; readfds = mask; switch (select(_rpc_dtablesize(), &readfds, (int*)NULL, (int*)NULL, - &(ct->ct_wait))) { + &timeout)) { case 0: ct->ct_error.re_status = RPC_TIMEDOUT; return (-1); diff -durpN glibc-2.0.1/sunrpc/clnt_udp.c glibc-2.0.2/sunrpc/clnt_udp.c --- glibc-2.0.1/sunrpc/clnt_udp.c Wed Dec 18 17:03:49 1996 +++ glibc-2.0.2/sunrpc/clnt_udp.c Sun Feb 9 22:19:10 1997 @@ -287,9 +287,10 @@ send_again: mask = 1 << cu->cu_sock; #endif /* def FD_SETSIZE */ for (;;) { + struct timeval timeout = cu->cu_wait; readfds = mask; switch (select(_rpc_dtablesize(), &readfds, (int *)NULL, - (int *)NULL, &(cu->cu_wait))) { + (int *)NULL, &timeout)) { case 0: time_waited.tv_sec += cu->cu_wait.tv_sec; diff -durpN glibc-2.0.1/sunrpc/pmap_rmt.c glibc-2.0.2/sunrpc/pmap_rmt.c --- glibc-2.0.1/sunrpc/pmap_rmt.c Wed Dec 18 17:04:03 1996 +++ glibc-2.0.2/sunrpc/pmap_rmt.c Sun Feb 9 22:19:11 1997 @@ -244,7 +244,7 @@ clnt_broadcast(prog, vers, proc, xargs, struct rmtcallargs a; struct rmtcallres r; struct rpc_msg msg; - struct timeval t; + struct timeval t, t1; char outbuf[MAX_BROADCAST_SIZE], inbuf[UDPMSGSIZE]; /* @@ -324,8 +324,9 @@ clnt_broadcast(prog, vers, proc, xargs, msg.acpted_rply.ar_results.where = (caddr_t)&r; msg.acpted_rply.ar_results.proc = xdr_rmtcallres; readfds = mask; + t1 = t; switch (select(_rpc_dtablesize(), &readfds, (int *)NULL, - (int *)NULL, &t)) { + (int *)NULL, &t1)) { case 0: /* timed out */ stat = RPC_TIMEDOUT; diff -durpN glibc-2.0.1/sunrpc/rpc/auth_des.h glibc-2.0.2/sunrpc/rpc/auth_des.h --- glibc-2.0.1/sunrpc/rpc/auth_des.h Wed Dec 18 17:05:02 1996 +++ glibc-2.0.2/sunrpc/rpc/auth_des.h Mon Feb 17 23:08:18 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -21,6 +21,8 @@ #define _RPC_AUTH_DES_H 1 #include +__BEGIN_DECLS + /* This is no complete version of this header. More definitions with the real authentication stuff will come in 1997. For now we only need to define the function for handling public keys. */ @@ -38,5 +40,7 @@ extern int getpublickey __P ((__const ch the key. */ extern int getsecretkey __P ((__const char *__name, char *__key, __const char *__passwd)); + +__END_DECLS #endif /* rpc/auth_des.h */ diff -durpN glibc-2.0.1/sunrpc/rpc/pmap_rmt.h glibc-2.0.2/sunrpc/rpc/pmap_rmt.h --- glibc-2.0.1/sunrpc/rpc/pmap_rmt.h Sun Jul 28 20:16:54 1996 +++ glibc-2.0.2/sunrpc/rpc/pmap_rmt.h Mon Feb 17 23:08:19 1997 @@ -40,6 +40,7 @@ #define _RPC_PMAP_RMT_H 1 #include +__BEGIN_DECLS struct rmtcallargs { u_long prog, vers, proc, arglen; @@ -47,7 +48,7 @@ struct rmtcallargs { xdrproc_t xdr_args; }; -bool_t xdr_rmtcall_args __P ((XDR *__xdrs, struct rmtcallargs *__crp)); +extern bool_t xdr_rmtcall_args __P ((XDR *__xdrs, struct rmtcallargs *__crp)); struct rmtcallres { u_long *port_ptr; @@ -56,7 +57,8 @@ struct rmtcallres { xdrproc_t xdr_results; }; -bool_t xdr_rmtcallres __P ((XDR *__xdrs, struct rmtcallres *__crp)); +extern bool_t xdr_rmtcallres __P ((XDR *__xdrs, struct rmtcallres *__crp)); +__END_DECLS #endif /* rpc/pmap_rmt.h */ diff -durpN glibc-2.0.1/sunrpc/rpc/rpc_msg.h glibc-2.0.2/sunrpc/rpc/rpc_msg.h --- glibc-2.0.1/sunrpc/rpc/rpc_msg.h Mon Jul 29 01:30:07 1996 +++ glibc-2.0.2/sunrpc/rpc/rpc_msg.h Fri Feb 21 20:07:05 1997 @@ -33,6 +33,8 @@ #define _RPC_MSG_H 1 #include +#include + /* * rpc_msg.h * rpc message definition diff -durpN glibc-2.0.1/sunrpc/rpc_clntout.c glibc-2.0.2/sunrpc/rpc_clntout.c --- glibc-2.0.1/sunrpc/rpc_clntout.c Thu Dec 19 16:32:00 1996 +++ glibc-2.0.2/sunrpc/rpc_clntout.c Thu Dec 19 20:33:47 1996 @@ -31,8 +31,8 @@ /* * From: @(#)rpc_clntout.c 1.11 89/02/22 (C) 1987 SMI */ -char clntout_rcsid[] = - "$Id: rpc_clntout.c,v 1.3 1996/12/19 21:32:00 drepper Exp $"; +char clntout_rcsid[] = + "$Id: rpc_clntout.c,v 1.3 1996/12/20 01:33:47 drepper Exp $"; /* * rpc_clntout.c, Client-stub outputter for the RPC protocol compiler diff -durpN glibc-2.0.1/sunrpc/rpc_cout.c glibc-2.0.2/sunrpc/rpc_cout.c --- glibc-2.0.1/sunrpc/rpc_cout.c Thu Dec 19 16:32:07 1996 +++ glibc-2.0.2/sunrpc/rpc_cout.c Thu Dec 19 20:33:48 1996 @@ -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.3 1996/12/19 21:32:07 drepper Exp $"; + "$Id: rpc_cout.c,v 1.3 1996/12/20 01:33:48 drepper Exp $"; /* * rpc_cout.c, XDR routine outputter for the RPC protocol compiler diff -durpN glibc-2.0.1/sunrpc/rpc_hout.c glibc-2.0.2/sunrpc/rpc_hout.c --- glibc-2.0.1/sunrpc/rpc_hout.c Wed Oct 16 20:33:58 1996 +++ glibc-2.0.2/sunrpc/rpc_hout.c Wed Oct 16 21:50:45 1996 @@ -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.2 1996/10/17 00:33:58 drepper Exp $"; + "$Id: rpc_hout.c,v 1.2 1996/10/17 01:50:45 drepper Exp $"; /* * rpc_hout.c, Header file outputter for the RPC protocol compiler diff -durpN glibc-2.0.1/sunrpc/rpc_main.c glibc-2.0.2/sunrpc/rpc_main.c --- glibc-2.0.1/sunrpc/rpc_main.c Wed Oct 16 20:34:05 1996 +++ glibc-2.0.2/sunrpc/rpc_main.c Wed Oct 16 21:50:46 1996 @@ -32,7 +32,7 @@ * From @(#)rpc_main.c 1.30 89/03/30 (C) 1987 SMI; */ char main_rcsid[] = - "$Id: rpc_main.c,v 1.4 1996/10/17 00:34:05 drepper Exp $"; + "$Id: rpc_main.c,v 1.4 1996/10/17 01:50:46 drepper Exp $"; /* * rpc_main.c, Top level of the RPC protocol compiler. diff -durpN glibc-2.0.1/sunrpc/rpc_parse.c glibc-2.0.2/sunrpc/rpc_parse.c --- glibc-2.0.1/sunrpc/rpc_parse.c Wed Oct 16 20:34:08 1996 +++ glibc-2.0.2/sunrpc/rpc_parse.c Wed Oct 16 21:50:47 1996 @@ -32,7 +32,7 @@ * From: @(#)rpc_parse.c 1.8 89/02/22 (C) 1987 SMI */ char parse_rcsid[] = - "$Id: rpc_parse.c,v 1.3 1996/10/17 00:34:08 drepper Exp $"; + "$Id: rpc_parse.c,v 1.3 1996/10/17 01:50:47 drepper Exp $"; /* * rpc_parse.c, Parser for the RPC protocol compiler diff -durpN glibc-2.0.1/sunrpc/rpc_sample.c glibc-2.0.2/sunrpc/rpc_sample.c --- glibc-2.0.1/sunrpc/rpc_sample.c Wed Oct 16 20:33:23 1996 +++ glibc-2.0.2/sunrpc/rpc_sample.c Wed Oct 16 21:50:49 1996 @@ -32,7 +32,7 @@ * From: @(#)rpc_sample.c 1.1 90/08/30 (C) 1987 SMI */ char sample_rcsid[] = - "$Id: rpc_sample.c,v 1.1 1996/10/17 00:33:23 drepper Exp $"; + "$Id: rpc_sample.c,v 1.1 1996/10/17 01:50:49 drepper Exp $"; /* * rpc_sample.c, Sample client-server code outputter for the RPC protocol compiler diff -durpN glibc-2.0.1/sunrpc/rpc_scan.c glibc-2.0.2/sunrpc/rpc_scan.c --- glibc-2.0.1/sunrpc/rpc_scan.c Wed Oct 16 20:34:15 1996 +++ glibc-2.0.2/sunrpc/rpc_scan.c Wed Oct 16 21:50:50 1996 @@ -32,7 +32,7 @@ * From: @(#)rpc_scan.c 1.11 89/02/22 (C) 1987 SMI */ char scan_rcsid[] = - "$Id: rpc_scan.c,v 1.3 1996/10/17 00:34:15 drepper Exp $"; + "$Id: rpc_scan.c,v 1.3 1996/10/17 01:50:50 drepper Exp $"; /* * rpc_scan.c, Scanner for the RPC protocol compiler diff -durpN glibc-2.0.1/sunrpc/rpc_svcout.c glibc-2.0.2/sunrpc/rpc_svcout.c --- glibc-2.0.1/sunrpc/rpc_svcout.c Wed Oct 16 20:34:23 1996 +++ glibc-2.0.2/sunrpc/rpc_svcout.c Wed Oct 16 21:50:51 1996 @@ -32,7 +32,7 @@ * From: @(#)rpc_svcout.c 1.29 89/03/30 (C) 1987 SMI */ char svcout_rcsid[] = - "$Id: rpc_svcout.c,v 1.2 1996/10/17 00:34:23 drepper Exp $"; + "$Id: rpc_svcout.c,v 1.2 1996/10/17 01:50:51 drepper Exp $"; /* * rpc_svcout.c, Server-skeleton outputter for the RPC protocol compiler diff -durpN glibc-2.0.1/sunrpc/rpc_tblout.c glibc-2.0.2/sunrpc/rpc_tblout.c --- glibc-2.0.1/sunrpc/rpc_tblout.c Wed Oct 16 20:33:28 1996 +++ glibc-2.0.2/sunrpc/rpc_tblout.c Wed Oct 16 21:50:51 1996 @@ -32,7 +32,7 @@ * From: @(#)rpc_tblout.c 1.4 89/02/22 (C) 1988 SMI */ char tblout_rcsid[] = - "$Id: rpc_tblout.c,v 1.1 1996/10/17 00:33:28 drepper Exp $"; + "$Id: rpc_tblout.c,v 1.1 1996/10/17 01:50:51 drepper Exp $"; /* * rpc_tblout.c, Dispatch table outputter for the RPC protocol compiler diff -durpN glibc-2.0.1/sunrpc/rpc_util.c glibc-2.0.2/sunrpc/rpc_util.c --- glibc-2.0.1/sunrpc/rpc_util.c Wed Oct 16 20:34:44 1996 +++ glibc-2.0.2/sunrpc/rpc_util.c Wed Oct 16 21:50:52 1996 @@ -32,7 +32,7 @@ * From: @(#)rpc_util.c 1.11 89/02/22 (C) 1987 SMI */ char util_rcsid[] = - "$Id: rpc_util.c,v 1.3 1996/10/17 00:34:44 drepper Exp $"; + "$Id: rpc_util.c,v 1.3 1996/10/17 01:50:52 drepper Exp $"; /* * rpc_util.c, Utility routines for the RPC protocol compiler diff -durpN glibc-2.0.1/sunrpc/svc_authux.c glibc-2.0.2/sunrpc/svc_authux.c --- glibc-2.0.1/sunrpc/svc_authux.c Tue Mar 19 15:28:09 1996 +++ glibc-2.0.2/sunrpc/svc_authux.c Sun Feb 9 22:19:12 1997 @@ -6,23 +6,23 @@ * may copy or modify Sun RPC without charge, but are not authorized * to license or distribute it to anyone else except as part of a product or * program developed by the user. - * + * * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * + * * Sun RPC is provided with no support and without any obligation on the * part of Sun Microsystems, Inc. to assist in its use, correction, * modification or enhancement. - * + * * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC * OR ANY PART THEREOF. - * + * * In no event will Sun Microsystems, Inc. be liable for any lost revenue * or profits or other special, indirect and consequential damages, even if * Sun has been advised of the possibility of such damages. - * + * * Sun Microsystems, Inc. * 2550 Garcia Avenue * Mountain View, California 94043 @@ -60,7 +60,7 @@ _svcauth_unix(rqst, msg) struct area { struct authunix_parms area_aup; char area_machname[MAX_MACHINE_NAME+1]; - int area_gids[NGRPS]; + gid_t area_gids[NGRPS]; } *area; u_int auth_len; int str_len, gid_len; @@ -125,7 +125,7 @@ done: * Looks up longhand in a cache. */ /*ARGSUSED*/ -enum auth_stat +enum auth_stat _svcauth_short(rqst, msg) struct svc_req *rqst; struct rpc_msg *msg; diff -durpN glibc-2.0.1/sunrpc/svc_tcp.c glibc-2.0.2/sunrpc/svc_tcp.c --- glibc-2.0.1/sunrpc/svc_tcp.c Wed Dec 18 17:11:40 1996 +++ glibc-2.0.2/sunrpc/svc_tcp.c Sun Feb 9 22:19:13 1997 @@ -305,9 +305,10 @@ readtcp(xprt, buf, len) int readfds; #endif /* def FD_SETSIZE */ do { + struct timeval timeout = wait_per_try; readfds = mask; if (select(_rpc_dtablesize(), &readfds, (int*)NULL, (int*)NULL, - &wait_per_try) <= 0) { + &timeout) <= 0) { if (errno == EINTR) { continue; } diff -durpN glibc-2.0.1/sysdeps/alpha/div.S glibc-2.0.2/sysdeps/alpha/div.S --- glibc-2.0.1/sysdeps/alpha/div.S Tue Nov 5 16:58:19 1996 +++ glibc-2.0.2/sysdeps/alpha/div.S Thu Mar 20 14:21:10 1997 @@ -1,7 +1,6 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. - Contributed by Richard Henderson (rth@tamu.edu) - +/* Copyright (C) 1996, 1997 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 @@ -14,10 +13,9 @@ 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., 675 Mass Ave, - Cambridge, MA 02139, USA. */ - + 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 @@ -44,7 +42,6 @@ div: .prologue 0 #endif -#define dividend t0 #define divisor t1 #define mask t2 #define quotient t3 @@ -54,11 +51,13 @@ div: #define compare t7 /* find correct sign for input to unsigned divide loop. */ + negl a1, modulus # e0 : + negl a2, divisor # .. e1 : sextl a1, a1 # e0 : sextl a2, a2 # .. e1 : - negl a1, dividend # e0 : - negl a2, divisor # .. e1 : - cmovge a1, a1, dividend # e0 : + mov zero, quotient # e0 : + mov 1, mask # .. e1 : + cmovge a1, a1, modulus # e0 : cmovge a2, a2, divisor # .. e1 : beq a2, $divbyzero # e1 : unop # : diff -durpN glibc-2.0.1/sysdeps/alpha/ldiv.S glibc-2.0.2/sysdeps/alpha/ldiv.S --- glibc-2.0.1/sysdeps/alpha/ldiv.S Tue Nov 5 16:58:19 1996 +++ glibc-2.0.2/sysdeps/alpha/ldiv.S Thu Mar 20 14:21:12 1997 @@ -1,7 +1,6 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. - Contributed by Richard Henderson (rth@tamu.edu) - +/* Copyright (C) 1996, 1997 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 @@ -14,10 +13,9 @@ 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., 675 Mass Ave, - Cambridge, MA 02139, USA. */ - + 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 @@ -44,7 +42,6 @@ ldiv: .prologue 0 #endif -#define dividend t0 #define divisor t1 #define mask t2 #define quotient t3 @@ -54,11 +51,13 @@ ldiv: #define compare t7 /* find correct sign for input to unsigned divide loop. */ - mov a1, dividend # e0 : + mov a1, modulus # e0 : mov a2, divisor # .. e1 : negq a1, tmp1 # e0 : negq a2, tmp2 # .. e1 : - cmovlt a1, tmp1, dividend # e0 : + mov zero, quotient # e0 : + mov 1, mask # .. e1 : + cmovlt a1, tmp1, modulus # e0 : cmovlt a2, tmp2, divisor # .. e1 : beq a2, $divbyzero # e1 : unop # : diff -durpN glibc-2.0.1/sysdeps/generic/crypt-entry.c glibc-2.0.2/sysdeps/generic/crypt-entry.c --- glibc-2.0.1/sysdeps/generic/crypt-entry.c Wed Dec 18 17:16:20 1996 +++ glibc-2.0.2/sysdeps/generic/crypt-entry.c Sun Feb 9 22:19:16 1997 @@ -1,5 +1,5 @@ /* Wrapper around MD5 sum replacement for crypt function. - Copyright (C) 1996 Free Software Foundation, Inc. + Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -48,7 +48,7 @@ crypt_r (key, salt, data) return md5_crypt_r (key, salt, (char *) data, sizeof (struct crypt_data)); /* We don't have DES encryption. */ - __set_errno (ENOSYS); + __set_errno (EOPNOTSUPP); return NULL; } @@ -63,6 +63,6 @@ crypt (key, salt) return md5_crypt (key, salt); /* We don't have DES encryption. */ - __set_errno (ENOSYS); + __set_errno (EOPNOTSUPP); return NULL; } diff -durpN glibc-2.0.1/sysdeps/generic/dl-cache.c glibc-2.0.2/sysdeps/generic/dl-cache.c --- glibc-2.0.1/sysdeps/generic/dl-cache.c Fri Dec 27 07:52:07 1996 +++ glibc-2.0.2/sysdeps/generic/dl-cache.c Thu Mar 6 15:35:57 1997 @@ -1,5 +1,5 @@ /* Support for reading /etc/ld.so.cache files written by Linux ldconfig. - Copyright (C) 1996 Free Software Foundation, Inc. + Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -27,6 +27,10 @@ extern void *_dl_sysdep_read_whole_file size_t *filesize_ptr, int mmap_prot); +#ifndef LD_SO_CACHE +#define LD_SO_CACHE "/etc/ld.so.cache" +#endif + #define CACHEMAGIC "ld.so-1.7.0" struct cache_file @@ -57,7 +61,7 @@ _dl_load_cache_lookup (const char *name) if (cache == NULL) { /* Read the contents of the file. */ - void *file = _dl_sysdep_read_whole_file ("/etc/ld.so.cache", &cachesize, + void *file = _dl_sysdep_read_whole_file (LD_SO_CACHE, &cachesize, PROT_READ); if (file && cachesize > sizeof *cache && !memcmp (file, CACHEMAGIC, sizeof CACHEMAGIC - 1)) @@ -73,7 +77,8 @@ _dl_load_cache_lookup (const char *name) } for (i = 0; i < cache->nlibs; ++i) - if (cache->libs[i].flags == 1 && /* ELF library entry. */ + if ((cache->libs[i].flags == 1 || + cache->libs[i].flags == 3) && /* ELF library entry. */ /* Make sure string table indices are not bogus before using them. */ cache->libs[i].key < cachesize - sizeof *cache && cache->libs[i].value < cachesize - sizeof *cache && diff -durpN glibc-2.0.1/sysdeps/generic/dl-sysdep.c glibc-2.0.2/sysdeps/generic/dl-sysdep.c --- glibc-2.0.1/sysdeps/generic/dl-sysdep.c Mon Jan 20 20:42:11 1997 +++ glibc-2.0.2/sysdeps/generic/dl-sysdep.c Sun Feb 9 22:19:17 1997 @@ -31,6 +31,7 @@ extern int _dl_argc; extern char **_dl_argv; extern char **_environ; +extern size_t _dl_pagesize; extern void _end; extern void _start (void); @@ -74,6 +75,9 @@ _dl_sysdep_start (void **start_argptr, break; case AT_PHNUM: phnum = av->a_un.a_val; + break; + case AT_PAGESZ: + _dl_pagesize = av->a_un.a_val; break; case AT_ENTRY: user_entry = av->a_un.a_val; diff -durpN glibc-2.0.1/sysdeps/generic/htonl.c glibc-2.0.2/sysdeps/generic/htonl.c --- glibc-2.0.1/sysdeps/generic/htonl.c Wed Mar 10 18:46:48 1993 +++ glibc-2.0.2/sysdeps/generic/htonl.c Wed Mar 5 16:07:10 1997 @@ -1,28 +1,28 @@ -/* Copyright (C) 1993 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1993, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + The GNU C Library is 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 #undef htonl -unsigned long int -DEFUN(htonl, (x), unsigned long int x) +u_int32_t +htonl (x) + u_int32_t x; { #if BYTE_ORDER == LITTLE_ENDIAN x = (x << 24) | ((x & 0xff00) << 8) | ((x & 0xff0000) >> 8) | (x >> 24); diff -durpN glibc-2.0.1/sysdeps/generic/htons.c glibc-2.0.2/sysdeps/generic/htons.c --- glibc-2.0.1/sysdeps/generic/htons.c Wed Mar 10 18:46:41 1993 +++ glibc-2.0.2/sysdeps/generic/htons.c Wed Mar 5 16:07:38 1997 @@ -1,28 +1,28 @@ -/* Copyright (C) 1993 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1993, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + The GNU C Library is 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 #undef htons -unsigned short int -DEFUN(htons, (x), unsigned short int x) +u_int16_t +htons (x) + u_int16_t x; { #if BYTE_ORDER == LITTLE_ENDIAN x = (x << 8) | (x >> 8); diff -durpN glibc-2.0.1/sysdeps/generic/netinet/in.h glibc-2.0.2/sysdeps/generic/netinet/in.h --- glibc-2.0.1/sysdeps/generic/netinet/in.h Thu Nov 14 09:43:57 1996 +++ glibc-2.0.2/sysdeps/generic/netinet/in.h Wed Mar 19 20:21:02 1997 @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc. +/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 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 @@ -22,7 +22,9 @@ #include #include +#include +__BEGIN_DECLS /* Standard well-defined IP protocols. */ enum @@ -189,12 +191,17 @@ struct ip_mreq struct in_addr imr_interface; /* local IP address of interface */ }; -/* Functions to convert between host and network byte order. */ +/* Functions to convert between host and network byte order. -extern unsigned long int ntohl __P ((unsigned long int)); -extern unsigned short int ntohs __P ((unsigned short int)); -extern unsigned long int htonl __P ((unsigned long int)); -extern unsigned short int htons __P ((unsigned short int)); + Please note that these functions normally take `unsigned long int' or + `unsigned short int' values as arguments and also return them. But + this was a short-sighted decision since on different systems the types + may have different representations but the values are always the same. */ + +extern u_int32_t ntohl __P ((u_int32_t __netlong)); +extern u_int16_t ntohs __P ((u_int16_t __netshort)); +extern u_int32_t htonl __P ((u_int32_t __hostlong)); +extern u_int16_t htons __P ((u_int16_t __hostshort)); #include @@ -206,5 +213,7 @@ extern unsigned short int htons __P ((un #define htonl(x) (x) #define htons(x) (x) #endif + +__END_DECLS #endif /* netinet/in.h */ diff -durpN glibc-2.0.1/sysdeps/generic/netinet/ip.h glibc-2.0.2/sysdeps/generic/netinet/ip.h --- glibc-2.0.1/sysdeps/generic/netinet/ip.h Wed Dec 31 19:00:00 1969 +++ glibc-2.0.2/sysdeps/generic/netinet/ip.h Mon Feb 17 23:08:22 1997 @@ -0,0 +1,172 @@ +/* + * Copyright (c) 1982, 1986, 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: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 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 + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)ip.h 8.1 (Berkeley) 6/10/93 + */ + +#ifndef _NETINET_IP_H +#define _NETINET_IP_H + +#include +#include +#include + +/* + * Definitions for internet protocol version 4. + * Per RFC 791, September 1981. + */ +#define IPVERSION 4 + +/* + * Structure of an internet header, naked of options. + */ +struct ip { +#if __BYTE_ORDER == __LITTLE_ENDIAN + __u_char ip_hl:4, /* header length */ + ip_v:4; /* version */ +#endif +#if __BYTE_ORDER == __BIG_ENDIAN + __u_char ip_v:4, /* version */ + ip_hl:4; /* header length */ +#endif + __u_char ip_tos; /* type of service */ + __u_short ip_len; /* total length */ + __u_short ip_id; /* identification */ + __u_short ip_off; /* fragment offset field */ +#define IP_RF 0x8000 /* reserved fragment flag */ +#define IP_DF 0x4000 /* dont fragment flag */ +#define IP_MF 0x2000 /* more fragments flag */ +#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */ + __u_char ip_ttl; /* time to live */ + __u_char ip_p; /* protocol */ + __u_short ip_sum; /* checksum */ + struct in_addr ip_src, ip_dst; /* source and dest address */ +}; + +#define IP_MAXPACKET 65535 /* maximum packet size */ + +/* + * Definitions for IP type of service (ip_tos) + */ +#define IPTOS_LOWDELAY 0x10 +#define IPTOS_THROUGHPUT 0x08 +#define IPTOS_RELIABILITY 0x04 +#define IPTOS_LOWCOST 0x02 +#define IPTOS_MINCOST IPTOS_LOWCOST + +/* + * Definitions for IP precedence (also in ip_tos) (hopefully unused) + */ +#define IPTOS_PREC_NETCONTROL 0xe0 +#define IPTOS_PREC_INTERNETCONTROL 0xc0 +#define IPTOS_PREC_CRITIC_ECP 0xa0 +#define IPTOS_PREC_FLASHOVERRIDE 0x80 +#define IPTOS_PREC_FLASH 0x60 +#define IPTOS_PREC_IMMEDIATE 0x40 +#define IPTOS_PREC_PRIORITY 0x20 +#define IPTOS_PREC_ROUTINE 0x00 + +/* + * Definitions for options. + */ +#define IPOPT_COPIED(o) ((o)&0x80) +#define IPOPT_CLASS(o) ((o)&0x60) +#define IPOPT_NUMBER(o) ((o)&0x1f) + +#define IPOPT_CONTROL 0x00 +#define IPOPT_RESERVED1 0x20 +#define IPOPT_DEBMEAS 0x40 +#define IPOPT_RESERVED2 0x60 + +#define IPOPT_EOL 0 /* end of option list */ +#define IPOPT_NOP 1 /* no operation */ + +#define IPOPT_RR 7 /* record packet route */ +#define IPOPT_TS 68 /* timestamp */ +#define IPOPT_SECURITY 130 /* provide s,c,h,tcc */ +#define IPOPT_LSRR 131 /* loose source route */ +#define IPOPT_SATID 136 /* satnet id */ +#define IPOPT_SSRR 137 /* strict source route */ + +/* + * Offsets to fields in options other than EOL and NOP. + */ +#define IPOPT_OPTVAL 0 /* option ID */ +#define IPOPT_OLEN 1 /* option length */ +#define IPOPT_OFFSET 2 /* offset within option */ +#define IPOPT_MINOFF 4 /* min value of above */ + +#define MAX_IPOPTLEN 40 + +/* + * Time stamp option structure. + */ +struct ip_timestamp { + __u_char ipt_code; /* IPOPT_TS */ + __u_char ipt_len; /* size of structure (variable) */ + __u_char ipt_ptr; /* index of current entry */ +#if __BYTE_ORDER == __LITTLE_ENDIAN + __u_char ipt_flg:4, /* flags, see below */ + ipt_oflw:4; /* overflow counter */ +#endif +#if __BYTE_ORDER == __BIG_ENDIAN + __u_char ipt_oflw:4, /* overflow counter */ + ipt_flg:4; /* flags, see below */ +#endif + __u_long data[9]; +}; + +/* flag bits for ipt_flg */ +#define IPOPT_TS_TSONLY 0 /* timestamps only */ +#define IPOPT_TS_TSANDADDR 1 /* timestamps and addresses */ +#define IPOPT_TS_PRESPEC 3 /* specified modules only */ + +/* bits for security (not byte swapped) */ +#define IPOPT_SECUR_UNCLASS 0x0000 +#define IPOPT_SECUR_CONFID 0xf135 +#define IPOPT_SECUR_EFTO 0x789a +#define IPOPT_SECUR_MMMM 0xbc4d +#define IPOPT_SECUR_RESTR 0xaf13 +#define IPOPT_SECUR_SECRET 0xd788 +#define IPOPT_SECUR_TOPSECRET 0x6bc5 + +/* + * Internet implementation parameters. + */ +#define MAXTTL 255 /* maximum time to live (seconds) */ +#define IPDEFTTL 64 /* default ttl, from RFC 1340 */ +#define IPFRAGTTL 60 /* time to live for frags, slowhz */ +#define IPTTLDEC 1 /* subtracted when forwarding */ + +#define IP_MSS 576 /* default maximum segment size */ + +#endif /* netinet/ip.h. */ diff -durpN glibc-2.0.1/sysdeps/generic/ntohl.c glibc-2.0.2/sysdeps/generic/ntohl.c --- glibc-2.0.1/sysdeps/generic/ntohl.c Wed Mar 10 18:46:43 1993 +++ glibc-2.0.2/sysdeps/generic/ntohl.c Wed Mar 5 16:08:04 1997 @@ -1,28 +1,28 @@ -/* Copyright (C) 1993 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1993, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + The GNU C Library is 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 #undef ntohl -unsigned long int -DEFUN(ntohl, (x), unsigned long int x) +u_int32_t +ntohl (x) + u_int32_t x; { #if BYTE_ORDER == LITTLE_ENDIAN x = (x << 24) | ((x & 0xff00) << 8) | ((x & 0xff0000) >> 8) | (x >> 24); diff -durpN glibc-2.0.1/sysdeps/generic/ntohs.c glibc-2.0.2/sysdeps/generic/ntohs.c --- glibc-2.0.1/sysdeps/generic/ntohs.c Wed Mar 10 18:46:40 1993 +++ glibc-2.0.2/sysdeps/generic/ntohs.c Wed Mar 5 16:08:25 1997 @@ -1,28 +1,28 @@ -/* Copyright (C) 1993 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1993, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + The GNU C Library is 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 #undef ntohs -unsigned short int -DEFUN(ntohs, (x), unsigned short int x) +u_int16_t +ntohs (x) + u_int16_t x; { #if BYTE_ORDER == LITTLE_ENDIAN x = (x << 8) | (x >> 8); diff -durpN glibc-2.0.1/sysdeps/generic/setenv.c glibc-2.0.2/sysdeps/generic/setenv.c --- glibc-2.0.1/sysdeps/generic/setenv.c Tue Jan 7 05:14:25 1997 +++ glibc-2.0.2/sysdeps/generic/setenv.c Mon Mar 17 23:13:45 1997 @@ -132,9 +132,9 @@ setenv (name, value, replace) return -1; } *ep = new; + memcpy (*ep, name, namelen); + (*ep)[namelen] = '='; } - memcpy (*ep, name, namelen); - (*ep)[namelen] = '='; memcpy (&(*ep)[namelen + 1], value, vallen); } diff -durpN glibc-2.0.1/sysdeps/generic/socketbits.h glibc-2.0.2/sysdeps/generic/socketbits.h --- glibc-2.0.1/sysdeps/generic/socketbits.h Sun Jan 26 08:50:23 1997 +++ glibc-2.0.2/sysdeps/generic/socketbits.h Sun Mar 16 19:28:36 1997 @@ -50,6 +50,7 @@ enum __socket_type #define PF_UNSPEC 0 /* Unspecified. */ #define PF_LOCAL 1 /* Local to host (pipes and file-domain). */ #define PF_UNIX PF_LOCAL /* Old BSD name for PF_LOCAL. */ +#define PF_FILE PF_LOCAL /* POSIX name for PF_LOCAL. */ #define PF_INET 2 /* IP protocol family. */ #define PF_IMPLINK 3 /* ARPAnet IMP protocol. */ #define PF_PUP 4 /* PUP protocols. */ @@ -82,6 +83,7 @@ enum __socket_type #define AF_UNSPEC PF_UNSPEC #define AF_LOCAL PF_LOCAL #define AF_UNIX PF_UNIX +#define AF_FILE PF_FILE #define AF_INET PF_INET #define AF_IMPLINK PF_IMPLINK #define AF_PUP PF_PUP diff -durpN glibc-2.0.1/sysdeps/generic/sys/mman.h glibc-2.0.2/sysdeps/generic/sys/mman.h --- glibc-2.0.1/sysdeps/generic/sys/mman.h Thu Nov 14 09:53:25 1996 +++ glibc-2.0.2/sysdeps/generic/sys/mman.h Sun Mar 16 19:38:24 1997 @@ -1,5 +1,5 @@ /* Definitions for BSD-style memory management. Generic/4.4 BSD version. - Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc. + Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -97,8 +97,8 @@ int mprotect __P ((__caddr_t __addr, siz /* Synchronize the region starting at ADDR and extending LEN bytes with the file it maps. Filesystem operations on a file being mapped are - unpredictable before this is done. */ -int msync __P ((__caddr_t __addr, size_t __len)); + unpredictable before this is done. Flags are from the MS_* set. */ +int msync __P ((__caddr_t __addr, size_t __len, int flags)); /* Advise the system about particular usage patterns the program follows for the region starting at ADDR and extending LEN bytes. */ diff -durpN glibc-2.0.1/sysdeps/generic/sysd-stdio.c glibc-2.0.2/sysdeps/generic/sysd-stdio.c --- glibc-2.0.1/sysdeps/generic/sysd-stdio.c Fri Jan 17 13:50:50 1997 +++ glibc-2.0.2/sysdeps/generic/sysd-stdio.c Sun Feb 9 22:19:20 1997 @@ -16,6 +16,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include #include #include #include @@ -155,7 +156,7 @@ __stdio_open (filename, m, cookieptr) if (fd < 0) return -1; - *cookieptr = (PTR) fd; + *cookieptr = (void *) fd; return 0; } diff -durpN glibc-2.0.1/sysdeps/i386/Dist glibc-2.0.2/sysdeps/i386/Dist --- glibc-2.0.1/sysdeps/i386/Dist Wed Dec 31 19:00:00 1969 +++ glibc-2.0.2/sysdeps/i386/Dist Fri Mar 21 01:12:47 1997 @@ -0,0 +1,2 @@ +i386-mcount.S +machine-gmon.h diff -durpN glibc-2.0.1/sysdeps/i386/Makefile glibc-2.0.2/sysdeps/i386/Makefile --- glibc-2.0.1/sysdeps/i386/Makefile Mon Jan 27 12:10:25 1997 +++ glibc-2.0.2/sysdeps/i386/Makefile Fri Mar 21 09:11:36 1997 @@ -5,8 +5,12 @@ asm-CPPFLAGS := $(asm-CPPFLAGS) -DGAS_SY # The i386 `long double' is a distinct type we support. long-double-fcts = yes +ifeq ($(subdir),gmon) +sysdep_routines += i386-mcount +endif + ifeq ($(subdir),elf) -CFLAGS-rtld.c += -Wno-uninitialized +CFLAGS-rtld.c += -Wno-uninitialized -Wno-unused CFLAGS-dl-load.c += -Wno-unused CFLAGS-dl-reloc.c += -Wno-unused endif diff -durpN glibc-2.0.1/sysdeps/i386/bsd-_setjmp.S glibc-2.0.2/sysdeps/i386/bsd-_setjmp.S --- glibc-2.0.1/sysdeps/i386/bsd-_setjmp.S Mon Oct 21 10:20:25 1996 +++ glibc-2.0.2/sysdeps/i386/bsd-_setjmp.S Wed Mar 19 21:24:19 1997 @@ -1,21 +1,21 @@ /* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'. i386 version. -Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. + Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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. */ /* This just does a tail-call to `__sigsetjmp (ARG, 0)'. We cannot do it in C because it must be a tail-call, so frame-unwinding @@ -29,5 +29,17 @@ ENTRY (_setjmp) pushl $0 /* Push second argument of zero. */ pushl %ecx /* Push back first argument. */ pushl %eax /* Push back return PC. */ - jmp JUMPTARGET (C_SYMBOL_NAME (__sigsetjmp)) +#ifdef PIC + /* We cannot use the PLT, because it requires that %ebx be set, but + we can't save and restore our caller's value. Instead, we do an + indirect jump through the GOT, using for the temporary register + %ecx, which is call-clobbered. */ + call here +here: popl %ecx + addl $_GLOBAL_OFFSET_TABLE_+[.-here], %ecx + movl C_SYMBOL_NAME(__sigsetjmp@GOT)(%ecx), %ecx + jmp *%ecx +#else + jmp __sigsetjmp +#endif END (_setjmp) diff -durpN glibc-2.0.1/sysdeps/i386/bsd-setjmp.S glibc-2.0.2/sysdeps/i386/bsd-setjmp.S --- glibc-2.0.1/sysdeps/i386/bsd-setjmp.S Mon Oct 21 10:20:51 1996 +++ glibc-2.0.2/sysdeps/i386/bsd-setjmp.S Wed Mar 19 21:24:25 1997 @@ -1,21 +1,21 @@ /* BSD `setjmp' entry point to `sigsetjmp (..., 1)'. i386 version. -Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. + Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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. */ /* This just does a tail-call to `__sigsetjmp (ARG, 1)'. We cannot do it in C because it must be a tail-call, so frame-unwinding @@ -29,5 +29,17 @@ ENTRY (setjmp) pushl $1 /* Push second argument of one. */ pushl %ecx /* Push back first argument. */ pushl %eax /* Push back return PC. */ - jmp JUMPTARGET (C_SYMBOL_NAME (__sigsetjmp)) +#ifdef PIC + /* We cannot use the PLT, because it requires that %ebx be set, but + we can't save and restore our caller's value. Instead, we do an + indirect jump through the GOT, using for the temporary register + %ecx, which is call-clobbered. */ + call here +here: popl %ecx + addl $_GLOBAL_OFFSET_TABLE_+[.-here], %ecx + movl C_SYMBOL_NAME(__sigsetjmp@GOT)(%ecx), %ecx + jmp *%ecx +#else + jmp __sigsetjmp +#endif END (setjmp) diff -durpN glibc-2.0.1/sysdeps/i386/dl-machine.h glibc-2.0.2/sysdeps/i386/dl-machine.h --- glibc-2.0.1/sysdeps/i386/dl-machine.h Mon Jan 27 12:10:29 1997 +++ glibc-2.0.2/sysdeps/i386/dl-machine.h Fri Mar 21 12:05:41 1997 @@ -70,11 +70,16 @@ elf_machine_load_address (void) (dynamic_info)[DT_RELSZ]->d_un.d_val -= sizeof (Elf32_Rel); +#ifndef PROF /* We add a declaration of this function here so that in dl-runtime.c the ELF_MACHINE_RUNTIME_TRAMPOLINE macro really can pass the parameters - in registers. */ + in registers. + + We cannot use this scheme for profiling because the _mcount call + destroys the passed register information. */ static ElfW(Addr) fixup (struct link_map *l, ElfW(Word) reloc_offset) __attribute__ ((regparm (2), unused)); +#endif /* Set up the loaded object described by L so its unrelocated PLT entries will jump to the on-demand fixup code in dl-runtime.c. */ @@ -101,7 +106,8 @@ elf_machine_runtime_setup (struct link_m /* This code is used in dl-runtime.c to call the `fixup' function and then redirect to the address it returns. */ -#define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\ +#ifndef PROF +# define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\ .globl _dl_runtime_resolve .type _dl_runtime_resolve, @function _dl_runtime_resolve: @@ -117,6 +123,28 @@ _dl_runtime_resolve: ret $8 # Jump to function address. .size _dl_runtime_resolve, .-_dl_runtime_resolve "); +#else +# define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\ + .globl _dl_runtime_resolve + .type _dl_runtime_resolve, @function +_dl_runtime_resolve: + pushl %eax # Preserve registers otherwise clobbered. + pushl %ecx + pushl %edx + movl 16(%esp), %edx # Push the arguments for `fixup' + movl 12(%esp), %eax + pushl %edx + pushl %eax + call fixup # Call resolver. + popl %edx # Pop the parameters + popl %ecx + popl %edx # Get register content back. + popl %ecx + xchgl %eax, (%esp) # Get %eax contents end store function address. + ret $8 # Jump to function address. + .size _dl_runtime_resolve, .-_dl_runtime_resolve +"); +#endif /* The PLT uses Elf32_Rel relocs. */ #define elf_machine_relplt elf_machine_rel } diff -durpN glibc-2.0.1/sysdeps/i386/elf/start.S glibc-2.0.2/sysdeps/i386/elf/start.S --- glibc-2.0.1/sysdeps/i386/elf/start.S Wed Jan 29 21:26:19 1997 +++ glibc-2.0.2/sysdeps/i386/elf/start.S Sun Mar 16 19:15:44 1997 @@ -73,6 +73,8 @@ nofini: boundary to avoid penalties from misaligned accesses. Thanks to Edward Seidl for pointing this out. */ andl $0xfffffff8, %esp + pushl %eax /* Push garbage because we allocate + twelve more bytes. */ pushl %eax /* Push third argument: envp. */ pushl %edx /* Push second argument: argv. */ diff -durpN glibc-2.0.1/sysdeps/i386/huge_val.h glibc-2.0.2/sysdeps/i386/huge_val.h --- glibc-2.0.1/sysdeps/i386/huge_val.h Wed Dec 31 19:00:00 1969 +++ glibc-2.0.2/sysdeps/i386/huge_val.h Sun Mar 16 20:34:15 1997 @@ -0,0 +1,87 @@ +/* `HUGE_VAL' constants for ix86 (where it is infinity). + Used by and functions for overflow. + Copyright (C) 1992, 1995, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + 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 _HUGE_VAL_H +#define _HUGE_VAL_H 1 + +#include +#include +#include + +/* IEEE positive infinity (-HUGE_VAL is negative infinity). */ + +#if __BYTE_ORDER == __BIG_ENDIAN +#define __HUGE_VAL_bytes { 0x7f, 0xf0, 0, 0, 0, 0, 0, 0 } +#endif +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define __HUGE_VAL_bytes { 0, 0, 0, 0, 0, 0, 0xf0, 0x7f } +#endif + +#define __huge_val_t union { unsigned char __c[8]; double __d; } +#ifdef __GNUC__ +#define HUGE_VAL (__extension__ \ + ((__huge_val_t) { __c: __HUGE_VAL_bytes }).__d) +#else /* Not GCC. */ +static __huge_val_t __huge_val = { __HUGE_VAL_bytes }; +#define HUGE_VAL (__huge_val.__d) +#endif /* GCC. */ + + +/* GNU extensions: (float) HUGE_VALF and (long double) HUGE_VALL. */ + +#ifdef __USE_GNU + +#if __BYTE_ORDER == __BIG_ENDIAN +#define __HUGE_VALf_bytes { 0x7f, 0x80, 0, 0 } +#endif +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define __HUGE_VALf_bytes { 0, 0, 0x80, 0x7f } +#endif + +#define __huge_valf_t union { unsigned char __c[4]; float __f; } +#ifdef __GNUC__ +#define HUGE_VALf (__extension__ \ + ((__huge_valf_t) { __c: __HUGE_VALf_bytes }).__f) +#else /* Not GCC. */ +static __huge_valf_t __huge_valf = { __HUGE_VALf_bytes }; +#define HUGE_VALf (__huge_valf.__f) +#endif /* GCC. */ + + +#if __BYTE_ORDER == __BIG_ENDIAN +#define __HUGE_VALl_bytes { 0x7f, 0xff, 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0 } +#endif +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define __HUGE_VALl_bytes { 0, 0, 0, 0, 0, 0, 0, 0x80, 0xff, 0x7f, 0, 0 } +#endif + +#define __huge_vall_t union { unsigned char __c[12]; long double __ld; } +#ifdef __GNUC__ +#define HUGE_VALl (__extension__ \ + ((__huge_vall_t) { __c: __HUGE_VALl_bytes }).__ld) +#else /* Not GCC. */ +static __huge_vall_t __huge_vall = { __HUGE_VALl_bytes }; +#define HUGE_VALl (__huge_vall.__ld) +#endif /* GCC. */ + +#endif /* __USE_GNU. */ + + +#endif /* huge_val.h */ diff -durpN glibc-2.0.1/sysdeps/i386/i386-mcount.S glibc-2.0.2/sysdeps/i386/i386-mcount.S --- glibc-2.0.1/sysdeps/i386/i386-mcount.S Wed Dec 31 19:00:00 1969 +++ glibc-2.0.2/sysdeps/i386/i386-mcount.S Fri Mar 21 09:43:37 1997 @@ -0,0 +1,65 @@ +/* i386-specific implemetation of profiling support. + Copyright (C) 1997 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 + +/* We need a special version of the `mcount' function since for ix86 it + must not clobber any register. This has several reasons: + - there is a bug in gcc as of version 2.7.2.2 which prohibits the + use of profiling together with nested functions + - the ELF `fixup' function uses GCC's regparm feature + - some (future) systems might want to pass parameters in registers. */ + + ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(_mcount) + ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(_mcount), @function) + .align ALIGNARG(4) +C_LABEL(_mcount) + /* Save the caller-clobbered registers. */ + pushl %eax + pushl %ecx + pushl %edx + + movl 12(%esp), %eax + movl 4(%ebp), %ecx + pushl %eax + pushl %ecx + +#ifdef PIC + call 1f +1: popl %ecx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx + movl C_SYMBOL_NAME(__mcount_internal@GOTOFF)(%ecx), %eax + call *%eax +#else + call C_SYMBOL_NAME(__mcount_internal) +#endif + popl %ecx + popl %eax /* Pop the parameters. */ + + /* Pop the saved registers. Please note that `mcount' has no + return value. */ + popl %edx + popl %ecx + popl %eax + ret + ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(_mcount)) + +#undef mcount +weak_alias(_mcount, mcount) diff -durpN glibc-2.0.1/sysdeps/i386/init-first.c glibc-2.0.2/sysdeps/i386/init-first.c --- glibc-2.0.1/sysdeps/i386/init-first.c Wed Jan 29 20:38:28 1997 +++ glibc-2.0.2/sysdeps/i386/init-first.c Sun Feb 9 22:19:21 1997 @@ -20,6 +20,7 @@ #include extern void __libc_init (int, char **, char **); +extern void __getopt_clean_environment (void); extern void __libc_global_ctors (void); int __libc_multiple_libcs = 1; @@ -33,6 +34,9 @@ init (int *data) __environ = envp; __libc_init (argc, argv, envp); + + /* This is a hack to make the special getopt in GNU libc working. */ + __getopt_clean_environment (); } #ifdef PIC diff -durpN glibc-2.0.1/sysdeps/i386/machine-gmon.h glibc-2.0.2/sysdeps/i386/machine-gmon.h --- glibc-2.0.1/sysdeps/i386/machine-gmon.h Wed Dec 31 19:00:00 1969 +++ glibc-2.0.2/sysdeps/i386/machine-gmon.h Fri Mar 21 01:02:01 1997 @@ -0,0 +1,41 @@ +/* i386-specific implemetation of profiling support. + Copyright (C) 1997 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 + +/* We need a special version of the `mcount' function since for ix86 it + must not clobber any register. This has several reasons: + - there is a bug in gcc as of version 2.7.2.2 which prohibits the + use of profiling together with nested functions + - the ELF `fixup' function uses GCC's regparm feature + - some (future) systems might want to pass parameters in registers. */ + +/* We must not pollute the global namespace. */ +#define mcount_internal __mcount_internal + +void mcount_internal (u_long frompc, u_long selfpc); + +#define _MCOUNT_DECL(frompc, selfpc) \ +void mcount_internal (u_long frompc, u_long selfpc) + + +/* Define MCOUNT as empty since we have a the implementation in another + file. */ +#define MCOUNT diff -durpN glibc-2.0.1/sysdeps/i386/setjmp.S glibc-2.0.2/sysdeps/i386/setjmp.S --- glibc-2.0.1/sysdeps/i386/setjmp.S Mon Oct 21 10:22:10 1996 +++ glibc-2.0.2/sysdeps/i386/setjmp.S Tue Mar 18 19:44:53 1997 @@ -1,21 +1,21 @@ /* setjmp for i386. -Copyright (C) 1995, 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. + Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 _ASM @@ -24,7 +24,9 @@ Cambridge, MA 02139, USA. */ /* Binary compatibility entry point. */ ENTRY (__setjmp) popl %eax /* Pop return address. */ + popl %ecx /* Pop jmp_buf. */ pushl $0 /* Push zero argument. */ + pushl %ecx /* Push jmp_buf. */ pushl %eax /* Push back return address. */ ENTRY (__sigsetjmp) diff -durpN glibc-2.0.1/sysdeps/ieee754/huge_val.h glibc-2.0.2/sysdeps/ieee754/huge_val.h --- glibc-2.0.1/sysdeps/ieee754/huge_val.h Thu Nov 14 08:42:18 1996 +++ glibc-2.0.2/sysdeps/ieee754/huge_val.h Sun Mar 16 20:35:17 1997 @@ -1,6 +1,6 @@ -/* `HUGE_VAL' constant for IEEE 754 machines (where it is infinity). +/* `HUGE_VAL' constants for IEEE 754 machines (where it is infinity). Used by and functions for overflow. - Copyright (C) 1992, 1995, 1996 Free Software Foundation, Inc. + Copyright (C) 1992, 1995, 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -46,7 +46,7 @@ static __huge_val_t __huge_val = { __HUG /* GNU extensions: (float) HUGE_VALf and (long double) HUGE_VALl. */ -#ifdef __USE_GNU +#ifdef __USE_GNU #if __BYTE_ORDER == __BIG_ENDIAN #define __HUGE_VALf_bytes { 0x7f, 0x80, 0, 0 } @@ -64,21 +64,10 @@ static __huge_valf_t __huge_valf = { __H #define HUGE_VALf (__huge_valf.__f) #endif /* GCC. */ -#if __BYTE_ORDER == __BIG_ENDIAN -#define __HUGE_VALl_bytes { 0x7f, 0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } -#endif -#if __BYTE_ORDER == __LITTLE_ENDIAN -#define __HUGE_VALl_bytes { 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0x7f, 0, 0 } -#endif -#define __huge_vall_t union { unsigned char __c[12]; long double __ld; } -#ifdef __GNUC__ -#define HUGE_VALl (__extension__ \ - ((__huge_vall_t) { __c: __HUGE_VALl_bytes }).__ld) -#else /* Not GCC. */ -static __huge_vall_t __huge_vall = { __HUGE_VALl_bytes }; -#define HUGE_VALl (__huge_vall.__ld) -#endif /* GCC. */ +/* Generally there is no separate `long double' format and it is the + same as `double'. */ +#define HUGE_VALl HUGE_VAL #endif /* __USE_GNU. */ diff -durpN glibc-2.0.1/sysdeps/libm-i387/e_acos.S glibc-2.0.2/sysdeps/libm-i387/e_acos.S --- glibc-2.0.1/sysdeps/libm-i387/e_acos.S Sat Dec 21 20:57:22 1996 +++ glibc-2.0.2/sysdeps/libm-i387/e_acos.S Sun Mar 16 20:00:56 1997 @@ -10,12 +10,12 @@ RCSID("$NetBSD: e_acos.S,v 1.4 1995/05/0 /* acos = atan (sqrt(1 - x^2) / x) */ ENTRY(__ieee754_acos) fldl 4(%esp) /* x */ - fst %st(1) - fmul %st(0) /* x^2 */ - fld1 - fsubp /* 1 - x^2 */ - fsqrt /* sqrt (1 - x^2) */ - fxch %st(1) - fpatan + fld %st /* x : x */ + fmul %st(0) /* x^2 : x */ + fld1 /* 1 : x^2 : x */ + fsubp /* 1 - x^2 : x */ + fsqrt /* sqrt (1 - x^2) : x */ + fxch %st(1) /* x : sqrt (1 - x^2) */ + fpatan /* atan (sqrt(1 - x^2) / x) */ ret END (__ieee754_acos) diff -durpN glibc-2.0.1/sysdeps/libm-i387/e_acosf.S glibc-2.0.2/sysdeps/libm-i387/e_acosf.S --- glibc-2.0.1/sysdeps/libm-i387/e_acosf.S Sun Dec 29 06:25:54 1996 +++ glibc-2.0.2/sysdeps/libm-i387/e_acosf.S Sun Mar 16 20:00:56 1997 @@ -11,7 +11,7 @@ RCSID("$NetBSD: $") /* acos = atan (sqrt(1 - x^2) / x) */ ENTRY(__ieee754_acosf) flds 4(%esp) /* x */ - fst %st(1) + fld %st fmul %st(0) /* x^2 */ fld1 fsubp /* 1 - x^2 */ diff -durpN glibc-2.0.1/sysdeps/libm-i387/e_acoshf.S glibc-2.0.2/sysdeps/libm-i387/e_acoshf.S --- glibc-2.0.1/sysdeps/libm-i387/e_acoshf.S Sun Dec 29 08:07:16 1996 +++ glibc-2.0.2/sysdeps/libm-i387/e_acoshf.S Tue Feb 25 20:05:42 1997 @@ -1,5 +1,5 @@ /* ix87 specific implementation of arcsinh. - Copyright (C) 1996 Free Software Foundation, Inc. + Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -42,7 +42,7 @@ limit: .double 0.29 .text ENTRY(__ieee754_acoshf) - movl 8(%esp), %ecx + movl 4(%esp), %ecx cmpl $0x3f800000, %ecx jl 5f // < 1 => invalid fldln2 // log(2) diff -durpN glibc-2.0.1/sysdeps/libm-i387/e_acoshl.S glibc-2.0.2/sysdeps/libm-i387/e_acoshl.S --- glibc-2.0.1/sysdeps/libm-i387/e_acoshl.S Sun Dec 29 04:57:59 1996 +++ glibc-2.0.2/sysdeps/libm-i387/e_acoshl.S Wed Mar 5 16:01:12 1997 @@ -1,5 +1,5 @@ /* ix87 specific implementation of arcsinh. - Copyright (C) 1996 Free Software Foundation, Inc. + Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -49,6 +49,7 @@ limit: .double 0.29 .text ENTRY(__ieee754_acoshl) movl 12(%esp), %ecx + andl $0xffff, %ecx cmpl $0x3fff, %ecx jl 5f // < 1 => invalid fldln2 // log(2) diff -durpN glibc-2.0.1/sysdeps/libm-i387/e_acosl.S glibc-2.0.2/sysdeps/libm-i387/e_acosl.S --- glibc-2.0.1/sysdeps/libm-i387/e_acosl.S Sat Dec 21 20:57:59 1996 +++ glibc-2.0.2/sysdeps/libm-i387/e_acosl.S Sun Mar 16 20:00:56 1997 @@ -11,7 +11,7 @@ /* acosl = atanl (sqrtl(1 - x^2) / x) */ ENTRY(__ieee754_acosl) fldt 4(%esp) /* x */ - fst %st(1) + fld %st fmul %st(0) /* x^2 */ fld1 fsubp /* 1 - x^2 */ diff -durpN glibc-2.0.1/sysdeps/libm-i387/e_asin.S glibc-2.0.2/sysdeps/libm-i387/e_asin.S --- glibc-2.0.1/sysdeps/libm-i387/e_asin.S Sat Dec 21 20:58:08 1996 +++ glibc-2.0.2/sysdeps/libm-i387/e_asin.S Sun Mar 16 20:01:01 1997 @@ -10,7 +10,7 @@ RCSID("$NetBSD: e_asin.S,v 1.4 1995/05/0 /* asin = atan (x / sqrt(1 - x^2)) */ ENTRY(__ieee754_asin) fldl 4(%esp) /* x */ - fst %st(1) + fld %st fmul %st(0) /* x^2 */ fld1 fsubp /* 1 - x^2 */ diff -durpN glibc-2.0.1/sysdeps/libm-i387/e_asinf.S glibc-2.0.2/sysdeps/libm-i387/e_asinf.S --- glibc-2.0.1/sysdeps/libm-i387/e_asinf.S Sun Dec 29 06:26:48 1996 +++ glibc-2.0.2/sysdeps/libm-i387/e_asinf.S Sun Mar 16 20:01:01 1997 @@ -11,7 +11,7 @@ RCSID("$NetBSD: $") /* asin = atan (x / sqrt(1 - x^2)) */ ENTRY(__ieee754_asinf) flds 4(%esp) /* x */ - fst %st(1) + fld %st fmul %st(0) /* x^2 */ fld1 fsubp /* 1 - x^2 */ diff -durpN glibc-2.0.1/sysdeps/libm-i387/e_asinl.S glibc-2.0.2/sysdeps/libm-i387/e_asinl.S --- glibc-2.0.1/sysdeps/libm-i387/e_asinl.S Sat Dec 21 20:58:15 1996 +++ glibc-2.0.2/sysdeps/libm-i387/e_asinl.S Sun Mar 16 20:01:01 1997 @@ -12,7 +12,7 @@ RCSID("$NetBSD: $") /* asinl = atanl (x / sqrtl(1 - x^2)) */ ENTRY(__ieee754_asinl) fldt 4(%esp) /* x */ - fst %st(1) + fld %st fmul %st(0) /* x^2 */ fld1 fsubp /* 1 - x^2 */ diff -durpN glibc-2.0.1/sysdeps/libm-i387/e_exp.S glibc-2.0.2/sysdeps/libm-i387/e_exp.S --- glibc-2.0.1/sysdeps/libm-i387/e_exp.S Sat Jan 18 18:57:41 1997 +++ glibc-2.0.2/sysdeps/libm-i387/e_exp.S Sun Mar 16 20:01:05 1997 @@ -22,7 +22,7 @@ ENTRY(__ieee754_exp) je 1f /* Is +-Inf, jump. */ fldl2e fmulp /* x * log2(e) */ - fstl %st(1) + fld %st frndint /* int(x * log2(e)) */ fsubr %st,%st(1) /* fract(x * log2(e)) */ fxch @@ -35,6 +35,7 @@ ENTRY(__ieee754_exp) 1: testl $0x200, %eax /* Test sign. */ jz 2f /* If positive, jump. */ + fstp %st fldz /* Set result to 0. */ 2: ret END (__ieee754_exp) diff -durpN glibc-2.0.1/sysdeps/libm-i387/e_expf.S glibc-2.0.2/sysdeps/libm-i387/e_expf.S --- glibc-2.0.1/sysdeps/libm-i387/e_expf.S Sat Jan 18 18:57:53 1997 +++ glibc-2.0.2/sysdeps/libm-i387/e_expf.S Sun Mar 16 20:01:05 1997 @@ -23,7 +23,7 @@ ENTRY(__ieee754_expf) je 1f /* Is +-Inf, jump. */ fldl2e fmulp /* x * log2(e) */ - fstl %st(1) + fld %st frndint /* int(x * log2(e)) */ fsubr %st,%st(1) /* fract(x * log2(e)) */ fxch @@ -36,6 +36,7 @@ ENTRY(__ieee754_expf) 1: testl $0x200, %eax /* Test sign. */ jz 2f /* If positive, jump. */ + fstp %st fldz /* Set result to 0. */ 2: ret END (__ieee754_expf) diff -durpN glibc-2.0.1/sysdeps/libm-i387/e_expl.S glibc-2.0.2/sysdeps/libm-i387/e_expl.S --- glibc-2.0.1/sysdeps/libm-i387/e_expl.S Sat Jan 18 18:59:06 1997 +++ glibc-2.0.2/sysdeps/libm-i387/e_expl.S Sun Mar 16 20:01:05 1997 @@ -24,7 +24,7 @@ ENTRY(__ieee754_expl) je 1f /* Is +-Inf, jump. */ fldl2e fmulp /* x * log2(e) */ - fstl %st(1) + fld %st frndint /* int(x * log2(e)) */ fsubr %st,%st(1) /* fract(x * log2(e)) */ fxch @@ -37,6 +37,7 @@ ENTRY(__ieee754_expl) 1: testl $0x200, %eax /* Test sign. */ jz 2f /* If positive, jump. */ + fstp %st fldz /* Set result to 0. */ 2: ret END (__ieee754_expl) diff -durpN glibc-2.0.1/sysdeps/libm-i387/e_log.S glibc-2.0.2/sysdeps/libm-i387/e_log.S --- glibc-2.0.1/sysdeps/libm-i387/e_log.S Tue Dec 31 17:02:54 1996 +++ glibc-2.0.2/sysdeps/libm-i387/e_log.S Sun Mar 16 20:02:07 1997 @@ -47,8 +47,8 @@ ENTRY(__ieee754_log) fabs // |x-1| : x-1 : x : log(2) fcompl MO(limit) // x-1 : x : log(2) fnstsw // x-1 : x : log(2) - sahf - ja 2f + andb $0x45, %ah + jz 2f fstp %st(1) // x-1 : log(2) fyl2xp1 // log(x) ret diff -durpN glibc-2.0.1/sysdeps/libm-i387/e_log10.S glibc-2.0.2/sysdeps/libm-i387/e_log10.S --- glibc-2.0.1/sysdeps/libm-i387/e_log10.S Tue Dec 31 17:04:59 1996 +++ glibc-2.0.2/sysdeps/libm-i387/e_log10.S Sun Mar 16 20:02:09 1997 @@ -47,8 +47,8 @@ ENTRY(__ieee754_log10) fabs // |x-1| : x-1 : x : log10(2) fcompl MO(limit) // x-1 : x : log10(2) fnstsw // x-1 : x : log10(2) - sahf - ja 2f + andb $0x45, %ah + jz 2f fstp %st(1) // x-1 : log10(2) fyl2xp1 // log10(x) ret diff -durpN glibc-2.0.1/sysdeps/libm-i387/e_log10f.S glibc-2.0.2/sysdeps/libm-i387/e_log10f.S --- glibc-2.0.1/sysdeps/libm-i387/e_log10f.S Tue Dec 31 17:05:12 1996 +++ glibc-2.0.2/sysdeps/libm-i387/e_log10f.S Sun Mar 16 20:02:09 1997 @@ -48,8 +48,8 @@ ENTRY(__ieee754_log10f) fabs // |x-1| : x-1 : x : log10(2) fcompl MO(limit) // x-1 : x : log10(2) fnstsw // x-1 : x : log10(2) - sahf - ja 2f + andb $0x45, %ah + jz 2f fstp %st(1) // x-1 : log10(2) fyl2xp1 // log10(x) ret diff -durpN glibc-2.0.1/sysdeps/libm-i387/e_log10l.S glibc-2.0.2/sysdeps/libm-i387/e_log10l.S --- glibc-2.0.1/sysdeps/libm-i387/e_log10l.S Tue Dec 31 17:05:23 1996 +++ glibc-2.0.2/sysdeps/libm-i387/e_log10l.S Sun Mar 16 20:02:09 1997 @@ -49,8 +49,8 @@ ENTRY(__ieee754_log10l) fabs // |x-1| : x-1 : x : log10(2) fcompl MO(limit) // x-1 : x : log10(2) fnstsw // x-1 : x : log10(2) - sahf - ja 2f + andb $0x45, %ah + jz 2f fstp %st(1) // x-1 : log10(2) fyl2xp1 // log10(x) ret diff -durpN glibc-2.0.1/sysdeps/libm-i387/e_logf.S glibc-2.0.2/sysdeps/libm-i387/e_logf.S --- glibc-2.0.1/sysdeps/libm-i387/e_logf.S Tue Dec 31 17:05:34 1996 +++ glibc-2.0.2/sysdeps/libm-i387/e_logf.S Sun Mar 16 20:02:07 1997 @@ -48,8 +48,8 @@ ENTRY(__ieee754_logf) fabs // |x-1| : x-1 : x : log(2) fcompl MO(limit) // x-1 : x : log(2) fnstsw // x-1 : x : log(2) - sahf - ja 2f + andb $0x45, %ah + jz 2f fstp %st(1) // x-1 : log(2) fyl2xp1 // log(x) ret diff -durpN glibc-2.0.1/sysdeps/libm-i387/e_logl.S glibc-2.0.2/sysdeps/libm-i387/e_logl.S --- glibc-2.0.1/sysdeps/libm-i387/e_logl.S Tue Dec 31 17:05:43 1996 +++ glibc-2.0.2/sysdeps/libm-i387/e_logl.S Sun Mar 16 20:02:07 1997 @@ -48,8 +48,8 @@ ENTRY(__ieee754_logl) fabs // |x-1| : x-1 : x : log(2) fcompl MO(limit) // x-1 : x : log(2) fnstsw // x-1 : x : log(2) - sahf - ja 2f + andb $0x45, %ah + jz 2f fstp %st(1) // x-1 : log(2) fyl2xp1 // log(x) ret diff -durpN glibc-2.0.1/sysdeps/libm-i387/e_pow.S glibc-2.0.2/sysdeps/libm-i387/e_pow.S --- glibc-2.0.1/sysdeps/libm-i387/e_pow.S Tue Dec 31 17:32:06 1996 +++ glibc-2.0.2/sysdeps/libm-i387/e_pow.S Wed Mar 19 21:27:03 1997 @@ -1,5 +1,5 @@ /* ix87 specific implementation of pow function. - Copyright (C) 1996 Free Software Foundation, Inc. + Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -27,31 +27,78 @@ #endif .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(infinity,@object) +inf_zero: +infinity: + .byte 0, 0, 0, 0, 0, 0, 0xf0, 0x7f + ASM_SIZE_DIRECTIVE(infinity) + ASM_TYPE_DIRECTIVE(zero,@object) +zero: .double 0.0 + ASM_SIZE_DIRECTIVE(zero) + ASM_TYPE_DIRECTIVE(minf_mzero,@object) +minf_mzero: +minfinity: + .byte 0, 0, 0, 0, 0, 0, 0xf0, 0xff +mzero: + .byte 0, 0, 0, 0, 0, 0, 0, 0x80 + ASM_SIZE_DIRECTIVE(minf_mzero) ASM_TYPE_DIRECTIVE(one,@object) one: .double 1.0 ASM_SIZE_DIRECTIVE(one) ASM_TYPE_DIRECTIVE(limit,@object) limit: .double 0.29 ASM_SIZE_DIRECTIVE(limit) + ASM_TYPE_DIRECTIVE(nan,@object) +nan: .byte 0, 0, 0, 0, 0, 0, 0xff, 0x7f + ASM_SIZE_DIRECTIVE(nan) #ifdef PIC #define MO(op) op##@GOTOFF(%ecx) +#define MOX(op,x,f) op##@GOTOFF(%ecx,x,f) #else #define MO(op) op +#define MOX(op,x,f) op(,x,f) #endif .text ENTRY(__ieee754_pow) - fldl 4(%esp) // x - fldl 12(%esp) // y : x + fldl 12(%esp) // y + fxam #ifdef PIC call 1f 1: popl %ecx addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx #endif + + fnstsw + movb %ah, %dl + andb $0x45, %ah + cmpb $0x40, %ah // is y == 0 ? + je 11f + + cmpb $0x05, %ah // is y == ±inf ? + je 12f + + cmpb $0x01, %ah // is y == NaN ? + je 30f + + fldl 4(%esp) // x : y + subl $8,%esp + fxam + fnstsw + movb %ah, %dh + andb $0x45, %ah + cmpb $0x40, %ah + je 20f // x is ±0 + + cmpb $0x05, %ah + je 15f // x is ±inf + + fxch // y : x + /* First see whether `y' is a natural number. In this case we can use a more precise algorithm. */ fld %st // y : y : x @@ -63,13 +110,11 @@ ENTRY(__ieee754_pow) jne 2f /* OK, we have an integer value for y. */ - ftst // y : x - fstp %st(0) // x - fnstsw - sahf popl %eax popl %edx - jnc 4f // y >= 0, jump + orl $0, %edx + fstp %st(0) // x + jns 4f // y >= 0, jump fdivrl MO(one) // 1/x (now referred to as x) negl %eax adcl $0, %edx @@ -87,7 +132,7 @@ ENTRY(__ieee754_pow) orl %edx, %ecx jnz 6b fstp %st(0) // ST*x - ret +30: ret .align ALIGNARG(4) 2: /* y is a real number. */ @@ -117,4 +162,161 @@ ENTRY(__ieee754_pow) addl $8, %esp fstp %st(1) // 2^fract(y*log2(x))*2^int(y*log2(x)) ret + + + // pow(x,±0) = 1 + .align ALIGNARG(4) +11: fstp %st(0) // pop y + fldl MO(one) + ret + + // y == ±inf + .align ALIGNARG(4) +12: fstp %st(0) // pop y + fldl 4(%esp) // x + fabs + fcompl MO(one) // < 1, == 1, or > 1 + fnstsw + andb $0x45, %ah + cmpb $0x45, %ah + je 13f // jump if x is NaN + + cmpb $0x40, %ah + je 14f // jump if |x| == 1 + + shlb $1, %ah + xorb %ah, %dl + andl $2, %edx + fldl MOX(inf_zero, %edx, 4) + ret + + .align ALIGNARG(4) +14: fldl MO(nan) + faddl MO(zero) // raise invalid exception + ret + + .align ALIGNARG(4) +13: fldl 4(%esp) // load x == NaN + ret + + .align ALIGNARG(4) + // x is ±inf +15: fstp %st(0) // y + testb $2, %dh + jz 16f // jump if x == +inf + + // We must find out whether y is an odd integer. + fld %st // y : y + fistpll (%esp) // y + fildll (%esp) // int(y) : y + fucompp // + fnstsw + sahf + jne 17f + + // OK, the value is an integer, but is the number of bits small + // enough so that all are coming from the mantissa? + popl %eax + popl %edx + andb $1, %al + jz 18f // jump if not odd + movl %edx, %eax + orl %edx, %edx + jns 155f + negl %eax +155: cmpl $0x00200000, %eax + ja 18f // does not fit in mantissa bits + // It's an odd integer. + shrl $31, %edx + fldl MOX(minf_mzero, %edx, 8) + ret + + .align ALIGNARG(4) +16: fcompl MO(zero) + addl $8, %esp + fnstsw + shrl $5, %eax + andl $8, %eax + fldl MOX(inf_zero, %eax, 1) + ret + + .align ALIGNARG(4) +17: shll $30, %edx // sign bit for y in right position + addl $8, %esp +18: shrl $31, %edx + fldl MOX(inf_zero, %edx, 8) + ret + + .align ALIGNARG(4) + // x is ±0 +20: fstp %st(0) // y + testb $2, %dl + jz 21f // y > 0 + + // x is ±0 and y is < 0. We must find out whether y is an odd integer. + testb $2, %dh + jz 25f + + fld %st // y : y + fistpll (%esp) // y + fildll (%esp) // int(y) : y + fucompp // + fnstsw + sahf + jne 26f + + // OK, the value is an integer, but is the number of bits small + // enough so that all are coming from the mantissa? + popl %eax + popl %edx + andb $1, %al + jz 27f // jump if not odd + cmpl $0xffe00000, %edx + jbe 27f // does not fit in mantissa bits + // It's an odd integer. + // Raise divide-by-zero exception and get minus infinity value. + fldl MO(one) + fdivl MO(zero) + fchs + ret + +25: fstp %st(0) +26: popl %eax + popl %edx +27: // Raise divide-by-zero exception and get infinity value. + fldl MO(one) + fdivl MO(zero) + ret + + .align ALIGNARG(4) + // x is ±0 and y is > 0. We must find out whether y is an odd integer. +21: testb $2, %dh + jz 22f + + fld %st // y : y + fistpll (%esp) // y + fildll (%esp) // int(y) : y + fucompp // + fnstsw + sahf + jne 23f + + // OK, the value is an integer, but is the number of bits small + // enough so that all are coming from the mantissa? + popl %eax + popl %edx + andb $1, %al + jz 24f // jump if not odd + cmpl $0xffe00000, %edx + jae 24f // does not fit in mantissa bits + // It's an odd integer. + fldl MO(mzero) + ret + +22: fstp %st(0) +23: popl %eax + popl %edx +24: fldl MO(zero) + ret + END(__ieee754_pow) diff -durpN glibc-2.0.1/sysdeps/libm-i387/e_powf.S glibc-2.0.2/sysdeps/libm-i387/e_powf.S --- glibc-2.0.1/sysdeps/libm-i387/e_powf.S Tue Dec 31 17:31:56 1996 +++ glibc-2.0.2/sysdeps/libm-i387/e_powf.S Wed Mar 19 21:27:03 1997 @@ -1,5 +1,5 @@ /* ix87 specific implementation of pow function. - Copyright (C) 1996 Free Software Foundation, Inc. + Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -27,67 +27,108 @@ #endif .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(infinity,@object) +inf_zero: +infinity: + .byte 0, 0, 0, 0, 0, 0, 0xf0, 0x7f + ASM_SIZE_DIRECTIVE(infinity) + ASM_TYPE_DIRECTIVE(zero,@object) +zero: .double 0.0 + ASM_SIZE_DIRECTIVE(zero) + ASM_TYPE_DIRECTIVE(minf_mzero,@object) +minf_mzero: +minfinity: + .byte 0, 0, 0, 0, 0, 0, 0xf0, 0xff +mzero: + .byte 0, 0, 0, 0, 0, 0, 0, 0x80 + ASM_SIZE_DIRECTIVE(minf_mzero) ASM_TYPE_DIRECTIVE(one,@object) one: .double 1.0 ASM_SIZE_DIRECTIVE(one) ASM_TYPE_DIRECTIVE(limit,@object) limit: .double 0.29 ASM_SIZE_DIRECTIVE(limit) + ASM_TYPE_DIRECTIVE(nan,@object) +nan: .byte 0, 0, 0, 0, 0, 0, 0xff, 0x7f + ASM_SIZE_DIRECTIVE(nan) #ifdef PIC #define MO(op) op##@GOTOFF(%ecx) +#define MOX(op,x,f) op##@GOTOFF(%ecx,x,f) #else #define MO(op) op +#define MOX(op,x,f) op(,x,f) #endif .text ENTRY(__ieee754_powf) - flds 4(%esp) // x - flds 8(%esp) // y : x + flds 8(%esp) // y + fxam #ifdef PIC call 1f 1: popl %ecx addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx #endif - subl $8,%esp + + fnstsw + movb %ah, %dl + andb $0x45, %ah + cmpb $0x40, %ah // is y == 0 ? + je 11f + + cmpb $0x05, %ah // is y == ±inf ? + je 12f + + cmpb $0x01, %ah // is y == NaN ? + je 30f + + flds 4(%esp) // x : y + + subl $4, %esp + + fxam + fnstsw + movb %ah, %dh + andb $0x45, %ah + cmpb $0x40, %ah + je 20f // x is ±0 + + cmpb $0x05, %ah + je 15f // x is ±inf + + fxch // y : x /* First see whether `y' is a natural number. In this case we can use a more precise algorithm. */ fld %st // y : y : x - fistpll (%esp) // y : x - fildll (%esp) // int(y) : y : x + fistpl (%esp) // y : x + fildl (%esp) // int(y) : y : x fucomp %st(1) // y : x fnstsw sahf jne 2f /* OK, we have an integer value for y. */ - ftst // y : x - fstp %st(0) // x - fnstsw - sahf - popl %eax popl %edx - jnc 4f // y >= 0, jump + orl $0, %edx + fstp %st(0) // x + jns 4f // y >= 0, jump fdivrl MO(one) // 1/x (now referred to as x) - negl %eax - adcl $0, %edx negl %edx 4: fldl MO(one) // 1 : x fxch -6: shrdl $1, %edx, %eax +6: shrl $1, %edx jnc 5f fxch fmul %st(1) // x : ST*x fxch 5: fmul %st(0), %st // x*x : ST*x - movl %eax, %ecx - orl %edx, %ecx + testl %edx, %edx jnz 6b fstp %st(0) // ST*x - ret +30: ret .align ALIGNARG(4) 2: /* y is a real number. */ @@ -114,7 +155,159 @@ ENTRY(__ieee754_powf) f2xm1 // 2^fract(y*log2(x))-1 : int(y*log2(x)) faddl MO(one) // 2^fract(y*log2(x)) : int(y*log2(x)) fscale // 2^fract(y*log2(x))*2^int(y*log2(x)) : int(y*log2(x)) - addl $8, %esp + addl $4, %esp fstp %st(1) // 2^fract(y*log2(x))*2^int(y*log2(x)) ret + + + // pow(x,±0) = 1 + .align ALIGNARG(4) +11: fstp %st(0) // pop y + fldl MO(one) + ret + + // y == ±inf + .align ALIGNARG(4) +12: fstp %st(0) // pop y + flds 4(%esp) // x + fabs + fcompl MO(one) // < 1, == 1, or > 1 + fnstsw + andb $0x45, %ah + cmpb $0x45, %ah + je 13f // jump if x is NaN + + cmpb $0x40, %ah + je 14f // jump if |x| == 1 + + shlb $1, %ah + xorb %ah, %dl + andl $2, %edx + fldl MOX(inf_zero, %edx, 4) + ret + + .align ALIGNARG(4) +14: fldl MO(nan) + faddl MO(zero) // raise invalid exception + ret + + .align ALIGNARG(4) +13: flds 4(%esp) // load x == NaN + ret + + .align ALIGNARG(4) + // x is ±inf +15: fstp %st(0) // y + testb $2, %dh + jz 16f // jump if x == +inf + + // We must find out whether y is an odd integer. + fld %st // y : y + fistpl (%esp) // y + fildl (%esp) // int(y) : y + fucompp // + fnstsw + sahf + jne 17f + + // OK, the value is an integer, but is the number of bits small + // enough so that all are coming from the mantissa? + popl %edx + testb $1, %dl + jz 18f // jump if not odd + movl %edx, %eax + orl %edx, %edx + jns 155f + negl %eax +155: cmpl $0x01000000, %eax + ja 18f // does not fit in mantissa bits + // It's an odd integer. + shrl $31, %edx + fldl MOX(minf_mzero, %edx, 8) + ret + + .align ALIGNARG(4) +16: fcompl MO(zero) + addl $4, %esp + fnstsw + shrl $5, %eax + andl $8, %eax + fldl MOX(inf_zero, %eax, 1) + ret + + .align ALIGNARG(4) +17: shll $30, %edx // sign bit for y in right position + addl $4, %esp +18: shrl $31, %edx + fldl MOX(inf_zero, %edx, 8) + ret + + .align ALIGNARG(4) + // x is ±0 +20: fstp %st(0) // y + testb $2, %dl + jz 21f // y > 0 + + // x is ±0 and y is < 0. We must find out whether y is an odd integer. + testb $2, %dh + jz 25f + + fld %st // y : y + fistpl (%esp) // y + fildl (%esp) // int(y) : y + fucompp // + fnstsw + sahf + jne 26f + + // OK, the value is an integer, but is the number of bits small + // enough so that all are coming from the mantissa? + popl %edx + testb $1, %dl + jz 27f // jump if not odd + cmpl $0xff000000, %edx + jbe 27f // does not fit in mantissa bits + // It's an odd integer. + // Raise divide-by-zero exception and get minus infinity value. + fldl MO(one) + fdivl MO(zero) + fchs + ret + +25: fstp %st(0) +26: popl %eax +27: // Raise divide-by-zero exception and get infinity value. + fldl MO(one) + fdivl MO(zero) + ret + + .align ALIGNARG(4) + // x is ±0 and y is > 0. We must find out whether y is an odd integer. +21: testb $2, %dh + jz 22f + + fld %st // y : y + fistpl (%esp) // y + fildl (%esp) // int(y) : y + fucompp // + fnstsw + sahf + jne 23f + + // OK, the value is an integer, but is the number of bits small + // enough so that all are coming from the mantissa? + popl %edx + testb $1, %dl + jz 24f // jump if not odd + cmpl $0xff000000, %edx + jae 24f // does not fit in mantissa bits + // It's an odd integer. + fldl MO(mzero) + ret + +22: fstp %st(0) +23: popl %eax +24: fldl MO(zero) + ret + END(__ieee754_powf) diff -durpN glibc-2.0.1/sysdeps/libm-i387/e_powl.S glibc-2.0.2/sysdeps/libm-i387/e_powl.S --- glibc-2.0.1/sysdeps/libm-i387/e_powl.S Tue Dec 31 17:33:31 1996 +++ glibc-2.0.2/sysdeps/libm-i387/e_powl.S Sun Mar 16 20:02:19 1997 @@ -1,5 +1,5 @@ /* ix87 specific implementation of pow function. - Copyright (C) 1996 Free Software Foundation, Inc. + Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1996. @@ -27,31 +27,77 @@ #endif .align ALIGNARG(4) + ASM_TYPE_DIRECTIVE(infinity,@object) +inf_zero: +infinity: + .byte 0, 0, 0, 0, 0, 0, 0xf0, 0x7f + ASM_SIZE_DIRECTIVE(infinity) + ASM_TYPE_DIRECTIVE(zero,@object) +zero: .double 0.0 + ASM_SIZE_DIRECTIVE(zero) + ASM_TYPE_DIRECTIVE(minf_mzero,@object) +minf_mzero: +minfinity: + .byte 0, 0, 0, 0, 0, 0, 0xf0, 0xff +mzero: + .byte 0, 0, 0, 0, 0, 0, 0, 0x80 + ASM_SIZE_DIRECTIVE(minf_mzero) ASM_TYPE_DIRECTIVE(one,@object) one: .double 1.0 ASM_SIZE_DIRECTIVE(one) ASM_TYPE_DIRECTIVE(limit,@object) limit: .double 0.29 ASM_SIZE_DIRECTIVE(limit) + ASM_TYPE_DIRECTIVE(nan,@object) +nan: .byte 0, 0, 0, 0, 0, 0, 0xff, 0x7f + ASM_SIZE_DIRECTIVE(nan) #ifdef PIC #define MO(op) op##@GOTOFF(%ecx) +#define MOX(op,x,f) op##@GOTOFF(%ecx,x,f) #else #define MO(op) op +#define MOX(op,x,f) op(,x,f) #endif .text ENTRY(__ieee754_powl) - fldt 4(%esp) // x - fldt 16(%esp) // y : x + fldt 16(%esp) // y + fxam + fnstsw + movb %ah, %dl + andb $0x45, %ah + cmpb $0x40, %ah // is y == 0 ? + je 11f + + cmpb $0x05, %ah // is y == ±inf ? + je 12f + + cmpb $0x01, %ah // is y == NaN ? + je 30f #ifdef PIC call 1f 1: popl %ecx addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx #endif + + fldt 4(%esp) // x : y + subl $8,%esp + fxam + fnstsw + movb %ah, %dh + andb $0x45, %ah + cmpb $0x40, %ah + je 20f // x is ±0 + + cmpb $0x05, %ah + je 15f // x is ±inf + + fxch // y : x + /* First see whether `y' is a natural number. In this case we can use a more precise algorithm. */ fld %st // y : y : x @@ -63,13 +109,11 @@ ENTRY(__ieee754_powl) jne 2f /* OK, we have an integer value for y. */ - ftst // y : x - fstp %st(0) // x - fnstsw - sahf popl %eax popl %edx - jnc 4f // y >= 0, jump + orl $0, %edx + fstp %st(0) // x + jns 4f // y >= 0, jump fdivrl MO(one) // 1/x (now referred to as x) negl %eax adcl $0, %edx @@ -87,7 +131,7 @@ ENTRY(__ieee754_powl) orl %edx, %ecx jnz 6b fstp %st(0) // ST*x - ret +30: ret .align ALIGNARG(4) 2: /* y is a real number. */ @@ -117,4 +161,148 @@ ENTRY(__ieee754_powl) addl $8, %esp fstp %st(1) // 2^fract(y*log2(x))*2^int(y*log2(x)) ret + + + // pow(x,±0) = 1 + .align ALIGNARG(4) +11: fstp %st(0) // pop y + fldl MO(one) + ret + + // y == ±inf + .align ALIGNARG(4) +12: fstp %st(0) // pop y + fldt 4(%esp) // x + fabs + fcompl MO(one) // < 1, == 1, or > 1 + fnstsw + andb $0x45, %ah + cmpb $0x45, %ah + je 13f // jump if x is NaN + + cmpb $0x40, %ah + je 14f // jump if |x| == 1 + + shlb $1, %ah + xorb %ah, %dl + andl $2, %edx + fldl MOX(inf_zero, %edx, 4) + ret + + .align ALIGNARG(4) +14: fldl MO(nan) + faddl MO(zero) // raise invalid exception + ret + + .align ALIGNARG(4) +13: fldt 4(%esp) // load x == NaN + ret + + .align ALIGNARG(4) + // x is ±inf +15: fstp %st(0) // y + testb $2, %dh + jz 16f // jump if x == +inf + + // We must find out whether y is an odd integer. + fld %st // y : y + fistpll (%esp) // y + fildll (%esp) // int(y) : y + fucompp // + fnstsw + sahf + jne 17f + + // OK, the value is an integer, but is it odd? + popl %eax + popl %edx + andb $1, %al + jz 18f // jump if not odd + // It's an odd integer. + shrl $31, %edx + fldl MOX(minf_mzero, %edx, 8) + ret + + .align ALIGNARG(4) +16: fcompl MO(zero) + addl $8, %esp + fnstsw + shrl $5, %eax + andl $8, %eax + fldl MOX(inf_zero, %eax, 1) + ret + + .align ALIGNARG(4) +17: shll $30, %edx // sign bit for y in right position + addl $8, %esp +18: shrl $31, %edx + fldl MOX(inf_zero, %edx, 8) + ret + + .align ALIGNARG(4) + // x is ±0 +20: fstp %st(0) // y + testb $2, %dl + jz 21f // y > 0 + + // x is ±0 and y is < 0. We must find out whether y is an odd integer. + testb $2, %dh + jz 25f + + fld %st // y : y + fistpll (%esp) // y + fildll (%esp) // int(y) : y + fucompp // + fnstsw + sahf + jne 26f + + // OK, the value is an integer, but is it odd? + popl %eax + popl %edx + andb $1, %al + jz 27f // jump if not odd + // It's an odd integer. + // Raise divide-by-zero exception and get minus infinity value. + fldl MO(one) + fdivl MO(zero) + fchs + ret + +25: fstp %st(0) +26: popl %eax + popl %edx +27: // Raise divide-by-zero exception and get infinity value. + fldl MO(one) + fdivl MO(zero) + ret + + .align ALIGNARG(4) + // x is ±0 and y is > 0. We must find out whether y is an odd integer. +21: testb $2, %dh + jz 22f + + fld %st // y : y + fistpll (%esp) // y + fildll (%esp) // int(y) : y + fucompp // + fnstsw + sahf + jne 23f + + // OK, the value is an integer, but is it odd? + popl %eax + popl %edx + andb $1, %al + jz 24f // jump if not odd + // It's an odd integer. + fldl MO(mzero) + ret + +22: fstp %st(0) +23: popl %eax + popl %edx +24: fldl MO(zero) + ret + END(__ieee754_powl) diff -durpN glibc-2.0.1/sysdeps/libm-i387/s_expm1.S glibc-2.0.2/sysdeps/libm-i387/s_expm1.S --- glibc-2.0.1/sysdeps/libm-i387/s_expm1.S Sat Jan 18 19:39:42 1997 +++ glibc-2.0.2/sysdeps/libm-i387/s_expm1.S Wed Mar 19 21:27:19 1997 @@ -30,9 +30,9 @@ .text #endif .align ALIGNARG(4) - ASM_TYPE_DIRECTIVE(zero,@object) -zero: .double 0.0 - ASM_SIZE_DIRECTIVE(zero) + ASM_TYPE_DIRECTIVE(minus1,@object) +minus1: .double -1.0 + ASM_SIZE_DIRECTIVE(minus1) ASM_TYPE_DIRECTIVE(one,@object) one: .double 1.0 ASM_SIZE_DIRECTIVE(one) @@ -51,15 +51,17 @@ ENTRY(__expm1) fldl 4(%esp) // x fxam // Is NaN or +-Inf? fstsw %ax + movb $0x45, %ch + andb %ah, %ch + cmpb $0x40, %ch + je 3f // If +-0, jump. #ifdef PIC call 1f 1: popl %edx addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx #endif - movb $0x45, %ch - andb %ah, %ch cmpb $0x05, %ch - je 2f // Is +-Inf, jump. + je 2f // If +-Inf, jump. fldt MO(l2e) // log2(e) : x fmulp // log2(e)*x @@ -79,7 +81,8 @@ ENTRY(__expm1) 2: testl $0x200, %eax // Test sign. jz 3f // If positive, jump. - fldl MO(zero) // Set result to 0. + fstp %st + fldl MO(minus1) // Set result to -1.0. 3: ret END(__expm1) weak_alias (__expm1, expm1) diff -durpN glibc-2.0.1/sysdeps/libm-i387/s_expm1f.S glibc-2.0.2/sysdeps/libm-i387/s_expm1f.S --- glibc-2.0.1/sysdeps/libm-i387/s_expm1f.S Sat Jan 18 19:39:32 1997 +++ glibc-2.0.2/sysdeps/libm-i387/s_expm1f.S Wed Mar 19 21:27:19 1997 @@ -30,9 +30,9 @@ .text #endif .align ALIGNARG(4) - ASM_TYPE_DIRECTIVE(zero,@object) -zero: .double 0.0 - ASM_SIZE_DIRECTIVE(zero) + ASM_TYPE_DIRECTIVE(minus1,@object) +minus1: .double -1.0 + ASM_SIZE_DIRECTIVE(minus1) ASM_TYPE_DIRECTIVE(one,@object) one: .double 1.0 ASM_SIZE_DIRECTIVE(one) @@ -51,15 +51,17 @@ ENTRY(__expm1f) flds 4(%esp) // x fxam // Is NaN or +-Inf? fstsw %ax + movb $0x45, %ch + andb %ah, %ch + cmpb $0x40, %ch + je 3f // If +-0, jump. #ifdef PIC call 1f 1: popl %edx addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx #endif - movb $0x45, %ch - andb %ah, %ch cmpb $0x05, %ch - je 2f // Is +-Inf, jump. + je 2f // If +-Inf, jump. fldt MO(l2e) // log2(e) : x fmulp // log2(e)*x @@ -79,7 +81,8 @@ ENTRY(__expm1f) 2: testl $0x200, %eax // Test sign. jz 3f // If positive, jump. - fldl MO(zero) // Set result to 0. + fstp %st + fldl MO(minus1) // Set result to -1.0. 3: ret END(__expm1f) weak_alias (__expm1f, expm1f) diff -durpN glibc-2.0.1/sysdeps/libm-i387/s_expm1l.S glibc-2.0.2/sysdeps/libm-i387/s_expm1l.S --- glibc-2.0.1/sysdeps/libm-i387/s_expm1l.S Sat Jan 18 19:39:25 1997 +++ glibc-2.0.2/sysdeps/libm-i387/s_expm1l.S Wed Mar 19 21:27:19 1997 @@ -30,9 +30,9 @@ .text #endif .align ALIGNARG(4) - ASM_TYPE_DIRECTIVE(zero,@object) -zero: .double 0.0 - ASM_SIZE_DIRECTIVE(zero) + ASM_TYPE_DIRECTIVE(minus1,@object) +minus1: .double -1.0 + ASM_SIZE_DIRECTIVE(minus1) ASM_TYPE_DIRECTIVE(one,@object) one: .double 1.0 ASM_SIZE_DIRECTIVE(one) @@ -51,15 +51,17 @@ ENTRY(__expm1l) fldt 4(%esp) // x fxam // Is NaN or +-Inf? fstsw %ax + movb $0x45, %ch + andb %ah, %ch + cmpb $0x40, %ch + je 3f // If +-0, jump. #ifdef PIC call 1f 1: popl %edx addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx #endif - movb $0x45, %ch - andb %ah, %ch cmpb $0x05, %ch - je 2f // Is +-Inf, jump. + je 2f // If +-Inf, jump. fldt MO(l2e) // log2(e) : x fmulp // log2(e)*x @@ -79,7 +81,8 @@ ENTRY(__expm1l) 2: testl $0x200, %eax // Test sign. jz 3f // If positive, jump. - fldl MO(zero) // Set result to 0. + fstp %st + fldl MO(minus1) // Set result to -1.0. 3: ret END(__expm1l) weak_alias (__expm1l, expm1l) diff -durpN glibc-2.0.1/sysdeps/libm-i387/s_isinfl.c glibc-2.0.2/sysdeps/libm-i387/s_isinfl.c --- glibc-2.0.1/sysdeps/libm-i387/s_isinfl.c Thu May 30 12:08:06 1996 +++ glibc-2.0.2/sysdeps/libm-i387/s_isinfl.c Sun Mar 16 20:03:49 1997 @@ -10,7 +10,7 @@ static char rcsid[] = "$NetBSD: $"; #endif /* - * isinfl(x) returns 1 is x is inf, else 0; + * isinfl(x) returns 1 if x is inf, -1 if x is -inf, else 0; * no branching! */ @@ -26,11 +26,11 @@ static char rcsid[] = "$NetBSD: $"; { int32_t se,hx,lx; GET_LDOUBLE_WORDS(se,hx,lx,x); - se &= 0x7fff; - se ^= 0x7fff; /* This additional ^ 0x80000000 is necessary because in Intel's - internal representation the implicit one is explicit. */ - se |= (hx ^ 0x80000000) | lx; - return (se == 0); + internal representation of the implicit one is explicit. */ + lx |= (hx ^ 0x80000000) | ((se & 0x7fff) ^ 0x7fff); + lx |= -lx; + se &= 0x8000; + return ~(lx >> 31) & (1 - (se >> 14)); } weak_alias (__isinfl, isinfl) diff -durpN glibc-2.0.1/sysdeps/libm-i387/s_logbl.S glibc-2.0.2/sysdeps/libm-i387/s_logbl.S --- glibc-2.0.1/sysdeps/libm-i387/s_logbl.S Sat Dec 21 21:09:34 1996 +++ glibc-2.0.2/sysdeps/libm-i387/s_logbl.S Sun Mar 16 20:04:12 1997 @@ -11,6 +11,7 @@ RCSID("$NetBSD: $") ENTRY(__logbl) fldt 4(%esp) fxtract + fstp %st ret END (__logbl) weak_alias (__logbl, logbl) diff -durpN glibc-2.0.1/sysdeps/libm-i387/s_scalbn.S glibc-2.0.2/sysdeps/libm-i387/s_scalbn.S --- glibc-2.0.1/sysdeps/libm-i387/s_scalbn.S Sat Dec 21 21:10:13 1996 +++ glibc-2.0.2/sysdeps/libm-i387/s_scalbn.S Sun Mar 16 20:01:59 1997 @@ -11,6 +11,7 @@ ENTRY(__scalbn) fildl 12(%esp) fldl 4(%esp) fscale + fstp %st(1) ret END (__scalbn) weak_alias (__scalbn, scalbn) diff -durpN glibc-2.0.1/sysdeps/libm-i387/s_scalbnf.S glibc-2.0.2/sysdeps/libm-i387/s_scalbnf.S --- glibc-2.0.1/sysdeps/libm-i387/s_scalbnf.S Sat Dec 21 21:10:20 1996 +++ glibc-2.0.2/sysdeps/libm-i387/s_scalbnf.S Sun Mar 16 20:01:59 1997 @@ -11,6 +11,7 @@ ENTRY(__scalbnf) fildl 8(%esp) flds 4(%esp) fscale + fstp %st(1) ret END (__scalbnf) weak_alias (__scalbnf, scalbnf) diff -durpN glibc-2.0.1/sysdeps/libm-i387/s_scalbnl.S glibc-2.0.2/sysdeps/libm-i387/s_scalbnl.S --- glibc-2.0.1/sysdeps/libm-i387/s_scalbnl.S Sat Dec 21 21:10:26 1996 +++ glibc-2.0.2/sysdeps/libm-i387/s_scalbnl.S Sun Mar 16 20:01:59 1997 @@ -12,6 +12,7 @@ ENTRY(__scalbnl) fildl 16(%esp) fldt 4(%esp) fscale + fstp %st(1) ret END (__scalbnl) weak_alias (__scalbnl, scalbnl) diff -durpN glibc-2.0.1/sysdeps/libm-ieee754/=generic/__math.h glibc-2.0.2/sysdeps/libm-ieee754/=generic/__math.h --- glibc-2.0.1/sysdeps/libm-ieee754/=generic/__math.h Sun Jul 7 13:09:57 1996 +++ glibc-2.0.2/sysdeps/libm-ieee754/=generic/__math.h Wed Dec 31 19:00:00 1969 @@ -1,511 +0,0 @@ -/* Inline math functions for i387. -Copyright (C) 1995, 1996 Free Software Foundation, Inc. -Contributed by John C. Bowman - -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 __MATH_H -#define __MATH_H - -#ifdef __GNUC__ -#ifndef __NO_MATH_INLINES - -#ifdef __cplusplus -#define __MATH_INLINE __inline -#else -#define __MATH_INLINE extern __inline -#endif - -__MATH_INLINE double cos (double); -__MATH_INLINE double sin (double); - - -__MATH_INLINE double __expm1 (double __x); -__MATH_INLINE double -__expm1 (double __x) -{ - register double __value, __exponent, __temp; - __asm __volatile__ - ("fldl2e # e^x - 1 = 2^(x * log2(e)) - 1\n\t" - "fmul %%st(1) # x * log2(e)\n\t" - "fstl %%st(1)\n\t" - "frndint # int(x * log2(e))\n\t" - "fxch\n\t" - "fsub %%st(1) # fract(x * log2(e))\n\t" - "f2xm1 # 2^(fract(x * log2(e))) - 1\n\t" - "fscale # 2^(x * log2(e)) - 2^(int(x * log2(e)))\n\t" - : "=t" (__value), "=u" (__exponent) : "0" (__x)); - __asm __volatile__ - ("fscale # 2^int(x * log2(e))\n\t" - : "=t" (__temp) : "0" (1.0), "u" (__exponent)); - __temp -= 1.0; - - return __temp + __value; -} - -__MATH_INLINE double __sgn1 (double __x); -__MATH_INLINE double -__sgn1 (double __x) -{ - return __x >= 0.0 ? 1.0 : -1.0; -} - -__MATH_INLINE double sqrt (double __x); -__MATH_INLINE double -sqrt (double __x) -{ - register double __value; - __asm __volatile__ - ("fsqrt" - : "=t" (__value) : "0" (__x)); - - return __value; -} - -__MATH_INLINE double fabs (double __x); -__MATH_INLINE double -fabs (double __x) -{ - register double __value; - __asm __volatile__ - ("fabs" - : "=t" (__value) : "0" (__x)); - - return __value; -} - -__MATH_INLINE double sin (double __x); -__MATH_INLINE double -sin (double __x) -{ - register double __value; - __asm __volatile__ - ("fsin" - : "=t" (__value) : "0" (__x)); - - return __value; -} - -__MATH_INLINE double cos (double __x); -__MATH_INLINE double -cos (double __x) -{ - register double __value; - __asm __volatile__ - ("fcos" - : "=t" (__value): "0" (__x)); - - return __value; -} - -__MATH_INLINE double tan (double __x); -__MATH_INLINE double -tan (double __x) -{ - register double __value; - __asm __volatile__ - ("fptan" - : "=u" (__value) : "t" (__x)); - - return __value; -} - -__MATH_INLINE double atan2 (double __y, double __x); -__MATH_INLINE double -atan2 (double __y, double __x) -{ - register double __value; - __asm __volatile__ - ("fpatan\n\t" - "fldl %%st(0)" - : "=t" (__value) : "0" (__x), "u" (__y)); - - return __value; -} - -__MATH_INLINE double asin (double __x); -__MATH_INLINE double -asin (double __x) -{ - return atan2 (__x, sqrt (1.0 - __x * __x)); -} - -__MATH_INLINE double acos (double __x); -__MATH_INLINE double -acos (double __x) -{ - return atan2 (sqrt (1.0 - __x * __x), __x); -} - -__MATH_INLINE double atan (double __x); -__MATH_INLINE double -atan (double __x) -{ - register double __value; - __asm __volatile__ - ("fld1\n\t" - "fpatan" - : "=t" (__value) : "0" (__x)); - - return __value; -} - -__MATH_INLINE double exp (double __x); -__MATH_INLINE double -exp (double __x) -{ - register double __value, __exponent; - __asm __volatile__ - ("fldl2e # e^x = 2^(x * log2(e))\n\t" - "fmul %%st(1) # x * log2(e)\n\t" - "fstl %%st(1)\n\t" - "frndint # int(x * log2(e))\n\t" - "fxch\n\t" - "fsub %%st(1) # fract(x * log2(e))\n\t" - "f2xm1 # 2^(fract(x * log2(e))) - 1\n\t" - : "=t" (__value), "=u" (__exponent) : "0" (__x)); - __value += 1.0; - __asm __volatile__ - ("fscale" - : "=t" (__value) : "0" (__value), "u" (__exponent)); - - return __value; -} - -__MATH_INLINE double sinh (double __x); -__MATH_INLINE double -sinh (double __x) -{ - register double __exm1 = __expm1 (fabs (__x)); - - return 0.5 * (__exm1 / (__exm1 + 1.0) + __exm1) * __sgn1 (__x); -} - -__MATH_INLINE double cosh (double __x); -__MATH_INLINE double -cosh (double __x) -{ - register double __ex = exp (__x); - - return 0.5 * (__ex + 1.0 / __ex); -} - -__MATH_INLINE double tanh (double __x); -__MATH_INLINE double -tanh (double __x) -{ - register double __exm1 = __expm1 (-fabs (__x + __x)); - - return __exm1 / (__exm1 + 2.0) * __sgn1 (-__x); -} - -__MATH_INLINE double log (double __x); -__MATH_INLINE double -log (double __x) -{ - register double __value; - __asm __volatile__ - ("fldln2\n\t" - "fxch\n\t" - "fyl2x" - : "=t" (__value) : "0" (__x)); - - return __value; -} - -__MATH_INLINE double log10 (double __x); -__MATH_INLINE double -log10 (double __x) -{ - register double __value; - __asm __volatile__ - ("fldlg2\n\t" - "fxch\n\t" - "fyl2x" - : "=t" (__value) : "0" (__x)); - - return __value; -} - -__MATH_INLINE double __log2 (double __x); -__MATH_INLINE double -__log2 (double __x) -{ - register double __value; - __asm __volatile__ - ("fld1\n\t" - "fxch\n\t" - "fyl2x" - : "=t" (__value) : "0" (__x)); - - return __value; -} - -__MATH_INLINE double fmod (double __x, double __y); -__MATH_INLINE double -fmod (double __x, double __y) -{ - register double __value; - __asm __volatile__ - ("1: fprem\n\t" - "fstsw %%ax\n\t" - "sahf\n\t" - "jp 1b" - : "=t" (__value) : "0" (__x), "u" (__y) : "ax", "cc"); - - return __value; -} - -__MATH_INLINE double ldexp (double __x, int __y); -__MATH_INLINE double -ldexp (double __x, int __y) -{ - register double __value; - __asm __volatile__ - ("fscale" - : "=t" (__value) : "0" (__x), "u" ((double) __y)); - - return __value; -} - -__MATH_INLINE double pow (double __x, double __y); -__MATH_INLINE double -pow (double __x, double __y) -{ - register double __value, __exponent; - long __p = (long) __y; - - if (__x == 0.0 && __y > 0.0) - return 0.0; - if (__y == (double) __p) - { - double __r = 1.0; - if (__p == 0) - return 1.0; - if (__p < 0) - { - __p = -__p; - __x = 1.0 / __x; - } - while (1) - { - if (__p & 1) - __r *= __x; - __p >>= 1; - if (__p == 0) - return __r; - __x *= __x; - } - /* NOTREACHED */ - } - __asm __volatile__ - ("fmul %%st(1) # y * log2(x)\n\t" - "fstl %%st(1)\n\t" - "frndint # int(y * log2(x))\n\t" - "fxch\n\t" - "fsub %%st(1) # fract(y * log2(x))\n\t" - "f2xm1 # 2^(fract(y * log2(x))) - 1\n\t" - : "=t" (__value), "=u" (__exponent) : "0" (__log2 (__x)), "1" (__y)); - __value += 1.0; - __asm __volatile__ - ("fscale" - : "=t" (__value) : "0" (__value), "u" (__exponent)); - - return __value; -} - -__MATH_INLINE double floor (double __x); -__MATH_INLINE double -floor (double __x) -{ - register double __value; - volatile short __cw, __cwtmp; - - __asm volatile ("fnstcw %0" : "=m" (__cw)); - __cwtmp = (__cw & 0xf3ff) | 0x0400; /* rounding down */ - __asm volatile ("fldcw %0" : : "m" (__cwtmp)); - __asm volatile ("frndint" : "=t" (__value) : "0" (__x)); - __asm volatile ("fldcw %0" : : "m" (__cw)); - - return __value; -} - -__MATH_INLINE double ceil (double __x); -__MATH_INLINE double -ceil (double __x) -{ - register double __value; - volatile short __cw, __cwtmp; - - __asm volatile ("fnstcw %0" : "=m" (__cw)); - __cwtmp = (__cw & 0xf3ff) | 0x0800; /* rounding up */ - __asm volatile ("fldcw %0" : : "m" (__cwtmp)); - __asm volatile ("frndint" : "=t" (__value) : "0" (__x)); - __asm volatile ("fldcw %0" : : "m" (__cw)); - - return __value; -} - - -/* Optimized versions for some non-standardized functions. */ -#ifdef __USE_MISC - -__MATH_INLINE double __hypot (double __x, double __y); -__MATH_INLINE double -hypot (double __x, double __y) -{ - return sqrt (__x * __x + __y * __y); -} - -__MATH_INLINE double -log1p (double __x) -{ - register double __value; - - if (fabs (__x) >= 1.0 - 0.5 * M_SQRT2) - __value = log (1.0 + __x); - else - __asm __volatile__ - ("fldln2\n\t" - "fxch\n\t" - "fyl2xp1" - : "=t" (__value) : "0" (__x)); - - return __value; -} - -__MATH_INLINE double __asinh (double __x); -__MATH_INLINE double -asinh (double __x) -{ - register double __y = fabs (__x); - - return log1p ((__y * __y / (sqrt (__y * __y + 1.0) + 1.0) + __y) - * __sgn1 (__x)); -} - -__MATH_INLINE double __acosh (double __x); -__MATH_INLINE double -acosh (double __x) -{ - return log (__x + sqrt (__x - 1.0) * sqrt (__x + 1.0)); -} - -__MATH_INLINE double __atanh (double __x); -__MATH_INLINE double -atanh (double __x) -{ - register double __y = fabs (__x); - - return -0.5 * __log1p (-(__y + __y) / (1.0 + __y)) * __sgn1 (__x); -} - -__MATH_INLINE double __coshm1 (double __x); -__MATH_INLINE double -coshm1 (double __x) -{ - register double __exm1 = __expm1 (fabs (__x)); - - return 0.5 * (__exm1 / (__exm1 + 1.0)) * __exm1; -} - -__MATH_INLINE double __acosh1p (double __x); -__MATH_INLINE double -acosh1p (double __x) -{ - return __log1p (__x + sqrt (__x) * sqrt (__x + 2.0)); -} - -__MATH_INLINE double __logb (double __x); -__MATH_INLINE double -logb (double __x) -{ - register double __value; - __asm __volatile__ - ("fxtract\n\t" - : "=t" (__value) : "0" (__x)); - - return __value; -} - -__MATH_INLINE double __drem (double __x, double __y); -__MATH_INLINE double -drem (double __x, double __y) -{ - register double __value; - __asm __volatile__ - ("1: fprem1\n\t" - "fstsw %%ax\n\t" - "sahf\n\t" - "jp 1b" - : "=t" (__value) : "0" (__x), "u" (__y) : "ax", "cc"); - - return __value; -} - -__MATH_INLINE void __sincos (double __x, double *__sinx, double *__cosx); -__MATH_INLINE void -sincos (double __x, double *__sinx, double *__cosx) -{ - register double __cosr, __sinr; - __asm __volatile__ - ("fsincos" - : "=t" (__cosr), "=u" (__sinr) : "0" (__x)); - - *__sinx = __sinr; - *__cosx = __cosr; -} - -__MATH_INLINE double __sgn (double __x); -__MATH_INLINE double -sgn (double __x) -{ - return (__x == 0.0 ? 0.0 : (__x > 0.0 ? 1.0 : -1.0)); -} - -__MATH_INLINE double __pow2 (double __x); -__MATH_INLINE double -pow2 (double __x) -{ - register double __value, __exponent; - long __p = (long) __x; - - if (__x == (double) __p) - return ldexp (1.0, __p); - - __asm __volatile__ - ("fldl %%st(0)\n\t" - "frndint # int(x)\n\t" - "fxch\n\t" - "fsub %%st(1) # fract(x)\n\t" - "f2xm1 # 2^(fract(x)) - 1\n\t" - : "=t" (__value), "=u" (__exponent) : "0" (__x)); - __value += 1.0; - __asm __volatile__ - ("fscale" - : "=t" (__value) : "0" (__value), "u" (__exponent)); - - return __value; -} - -#endif /* __USE_MISC */ - -#endif /* __NO_MATH_INLINES */ -#endif /* __GNUC__ */ - -#endif /* __MATH_H */ diff -durpN glibc-2.0.1/sysdeps/libm-ieee754/k_standard.c glibc-2.0.2/sysdeps/libm-ieee754/k_standard.c --- glibc-2.0.1/sysdeps/libm-ieee754/k_standard.c Thu Sep 26 08:51:01 1996 +++ glibc-2.0.2/sysdeps/libm-ieee754/k_standard.c Sun Mar 16 20:04:43 1997 @@ -18,6 +18,8 @@ static char rcsid[] = "$NetBSD: k_standa #include "math_private.h" #include +#include + #ifndef _USE_WRITE #include /* fputs(), stderr */ #define WRITE2(u,v) fputs(u, stderr) @@ -109,7 +111,10 @@ static double zero = 0.0; /* used as con exc.type = DOMAIN; exc.name = type < 100 ? "acos" : (type < 200 ? "acosf" : "acosl");; - exc.retval = zero; + if (_LIB_VERSION == _SVID_) + exc.retval = HUGE; + else + exc.retval = NAN; if (_LIB_VERSION == _POSIX_) __set_errno (EDOM); else if (!__matherr(&exc)) { @@ -126,7 +131,10 @@ static double zero = 0.0; /* used as con exc.type = DOMAIN; exc.name = type < 100 ? "asin" : (type < 200 ? "asinf" : "asinl"); - exc.retval = zero; + if (_LIB_VERSION == _SVID_) + exc.retval = HUGE; + else + exc.retval = NAN; if(_LIB_VERSION == _POSIX_) __set_errno (EDOM); else if (!__matherr(&exc)) { @@ -145,7 +153,8 @@ static double zero = 0.0; /* used as con exc.type = DOMAIN; exc.name = type < 100 ? "atan2" : (type < 200 ? "atan2f" : "atan2l"); - exc.retval = zero; + assert (_LIB_VERSION == _SVID_); + exc.retval = HUGE; if(_LIB_VERSION == _POSIX_) __set_errno (EDOM); else if (!__matherr(&exc)) { @@ -399,7 +408,7 @@ static double zero = 0.0; /* used as con if (_LIB_VERSION == _SVID_) exc.retval = -HUGE; else - exc.retval = -HUGE_VAL; + exc.retval = NAN; if (_LIB_VERSION == _POSIX_) __set_errno (EDOM); else if (!__matherr(&exc)) { @@ -439,7 +448,7 @@ static double zero = 0.0; /* used as con if (_LIB_VERSION == _SVID_) exc.retval = -HUGE; else - exc.retval = -HUGE_VAL; + exc.retval = NAN; if (_LIB_VERSION == _POSIX_) __set_errno (EDOM); else if (!__matherr(&exc)) { @@ -500,7 +509,7 @@ static double zero = 0.0; /* used as con case 23: case 123: case 223: - /* 0**neg */ + /* -0**neg */ exc.type = DOMAIN; exc.name = type < 100 ? "pow" : (type < 200 ? "powf" : "powl"); if (_LIB_VERSION == _SVID_) @@ -516,6 +525,25 @@ static double zero = 0.0; /* used as con __set_errno (EDOM); } break; + case 43: + case 143: + case 243: + /* +0**neg */ + exc.type = DOMAIN; + exc.name = type < 100 ? "pow" : (type < 200 ? "powf" : "powl"); + if (_LIB_VERSION == _SVID_) + exc.retval = zero; + else + exc.retval = HUGE_VAL; + if (_LIB_VERSION == _POSIX_) + __set_errno (EDOM); + else if (!__matherr(&exc)) { + if (_LIB_VERSION == _SVID_) { + (void) WRITE2("pow(0,neg): DOMAIN error\n", 25); + } + __set_errno (EDOM); + } + break; case 24: case 124: case 224: @@ -842,6 +870,8 @@ static double zero = 0.0; /* used as con __set_errno (EDOM); } break; + + /* #### Last used is 43/143/243 ### */ } return exc.retval; } diff -durpN glibc-2.0.1/sysdeps/libm-ieee754/s_cbrtl.c glibc-2.0.2/sysdeps/libm-ieee754/s_cbrtl.c --- glibc-2.0.1/sysdeps/libm-ieee754/s_cbrtl.c Fri Sep 13 08:23:59 1996 +++ glibc-2.0.2/sysdeps/libm-ieee754/s_cbrtl.c Tue Feb 25 20:05:45 1997 @@ -90,7 +90,7 @@ G = 3.57142857142857150787e-01L; /* 5/1 { u_int64_t xxl = ((u_int64_t) se) << 32 | x0; xxl /= 3; - xxl += B1_EXP << 16 | B1_MANT; + xxl += ((u_int64_t) B1_EXP) << 32 | B1_MANT; SET_LDOUBLE_MSW(t,xxl&0xffffffffu); xxl >>= 32; SET_LDOUBLE_EXP(t,xxl); diff -durpN glibc-2.0.1/sysdeps/libm-ieee754/s_isinf.c glibc-2.0.2/sysdeps/libm-ieee754/s_isinf.c --- glibc-2.0.1/sysdeps/libm-ieee754/s_isinf.c Tue Jun 4 21:03:30 1996 +++ glibc-2.0.2/sysdeps/libm-ieee754/s_isinf.c Sun Mar 16 20:04:57 1997 @@ -1,5 +1,6 @@ /* * Written by J.T. Conklin . + * Changed to return -1 for -Inf by Ulrich Drepper . * Public domain. */ @@ -8,7 +9,7 @@ static char rcsid[] = "$NetBSD: s_isinf. #endif /* - * isinf(x) returns 1 is x is inf, else 0; + * isinf(x) returns 1 is x is inf, -1 if x is -inf, else 0; * no branching! */ @@ -22,12 +23,12 @@ static char rcsid[] = "$NetBSD: s_isinf. double x; #endif { - int32_t hx,lx; + u_int32_t hx; + int32_t lx; EXTRACT_WORDS(hx,lx,x); - hx &= 0x7fffffff; - hx ^= 0x7ff00000; - hx |= lx; - return (hx == 0); + lx |= (hx & 0x7fffffff) ^ 0x7ff00000; + lx |= -lx; + return ~(lx >> 31) & (1 - ((hx >> 30) & 2)); } weak_alias (__isinf, isinf) #ifdef NO_LONG_DOUBLE diff -durpN glibc-2.0.1/sysdeps/libm-ieee754/s_isinff.c glibc-2.0.2/sysdeps/libm-ieee754/s_isinff.c --- glibc-2.0.1/sysdeps/libm-ieee754/s_isinff.c Tue Mar 5 14:08:09 1996 +++ glibc-2.0.2/sysdeps/libm-ieee754/s_isinff.c Sun Mar 16 20:04:57 1997 @@ -8,7 +8,7 @@ static char rcsid[] = "$NetBSD: s_isinff #endif /* - * isinff(x) returns 1 is x is inf, else 0; + * isinff(x) returns 1 if x is inf, -1 if x is -inf, else 0; * no branching! */ @@ -22,10 +22,11 @@ static char rcsid[] = "$NetBSD: s_isinff float x; #endif { - int32_t ix; + int32_t ix,t; GET_FLOAT_WORD(ix,x); - ix &= 0x7fffffff; - ix ^= 0x7f800000; - return (ix == 0); + t = ix & 0x7fffffff; + t ^= 0x7f800000; + t |= -t; + return ~(t >> 31) & (1 - ((ix & 0x80000000) >> 30)); } weak_alias (__isinff, isinff) diff -durpN glibc-2.0.1/sysdeps/libm-ieee754/s_isinfl.c glibc-2.0.2/sysdeps/libm-ieee754/s_isinfl.c --- glibc-2.0.1/sysdeps/libm-ieee754/s_isinfl.c Thu May 30 12:07:38 1996 +++ glibc-2.0.2/sysdeps/libm-ieee754/s_isinfl.c Sun Mar 16 20:04:57 1997 @@ -9,7 +9,7 @@ static char rcsid[] = "$NetBSD: $"; #endif /* - * isinfl(x) returns 1 is x is inf, else 0; + * isinfl(x) returns 1 if x is inf, -1 if x is -inf, else 0; * no branching! */ @@ -25,9 +25,9 @@ static char rcsid[] = "$NetBSD: $"; { int32_t se,hx,lx; GET_LDOUBLE_WORDS(se,hx,lx,x); - se &= 0x7fff; - se ^= 0x7fff; - se |= hx | lx; - return (se == 0); + hx |= lx | ((se & 0x7fff) ^ 0x7fff); + hx |= -hx; + se &= 0x8000; + return ~(hx >> 31) & (1 - (se >> 14)); } weak_alias (__isinfl, isinfl) diff -durpN glibc-2.0.1/sysdeps/libm-ieee754/s_modf.c glibc-2.0.2/sysdeps/libm-ieee754/s_modf.c --- glibc-2.0.1/sysdeps/libm-ieee754/s_modf.c Sat Oct 5 09:22:37 1996 +++ glibc-2.0.2/sysdeps/libm-ieee754/s_modf.c Wed Mar 19 22:43:58 1997 @@ -51,10 +51,8 @@ static double one = 1.0; } else { i = (0x000fffff)>>j0; if(((i0&i)|i1)==0) { /* x is integral */ - u_int32_t high; *iptr = x; - GET_HIGH_WORD(high,x); - INSERT_WORDS(x,high&0x80000000,0); /* return +-0 */ + INSERT_WORDS(x,i0&0x80000000,0); /* return +-0 */ return x; } else { INSERT_WORDS(*iptr,i0&(~i),0); @@ -62,18 +60,17 @@ static double one = 1.0; } } } else if (j0>51) { /* no fraction part */ - u_int32_t high; *iptr = x*one; - GET_HIGH_WORD(high,x); - INSERT_WORDS(x,high&0x80000000,0); /* return +-0 */ + /* We must handle NaNs separately. */ + if (j0 == 0x400 && ((i0 & 0xfffff) | i1)) + return x*one; + INSERT_WORDS(x,i0&0x80000000,0); /* return +-0 */ return x; } else { /* fraction part in low x */ i = ((u_int32_t)(0xffffffff))>>(j0-20); if((i1&i)==0) { /* x is integral */ - u_int32_t high; *iptr = x; - GET_HIGH_WORD(high,x); - INSERT_WORDS(x,high&0x80000000,0); /* return +-0 */ + INSERT_WORDS(x,i0&0x80000000,0); /* return +-0 */ return x; } else { INSERT_WORDS(*iptr,i0,i1&(~i)); diff -durpN glibc-2.0.1/sysdeps/libm-ieee754/s_modff.c glibc-2.0.2/sysdeps/libm-ieee754/s_modff.c --- glibc-2.0.1/sysdeps/libm-ieee754/s_modff.c Tue Mar 5 14:08:18 1996 +++ glibc-2.0.2/sysdeps/libm-ieee754/s_modff.c Wed Mar 19 22:44:34 1997 @@ -8,7 +8,7 @@ * * Developed at SunPro, a Sun Microsystems, Inc. business. * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice + * software is freely granted, provided that this notice * is preserved. * ==================================================== */ @@ -55,10 +55,11 @@ static float one = 1.0; } } } else { /* no fraction part */ - u_int32_t ix; *iptr = x*one; - GET_FLOAT_WORD(ix,x); - SET_FLOAT_WORD(x,ix&0x80000000); /* return +-0 */ + /* We must handle NaNs separately. */ + if (j0 == 0x80 && (i0 & 0x7fffff)) + return x*one; + SET_FLOAT_WORD(x,i0&0x80000000); /* return +-0 */ return x; } } diff -durpN glibc-2.0.1/sysdeps/libm-ieee754/s_modfl.c glibc-2.0.2/sysdeps/libm-ieee754/s_modfl.c --- glibc-2.0.1/sysdeps/libm-ieee754/s_modfl.c Tue Jun 4 21:05:08 1996 +++ glibc-2.0.2/sysdeps/libm-ieee754/s_modfl.c Wed Mar 19 21:27:55 1997 @@ -55,32 +55,29 @@ static long double one = 1.0; } else { i = (0xffffffff)>>j0; if(((i0&i)|i1)==0) { /* x is integral */ - u_int32_t high; *iptr = x; - GET_HIGH_WORD(high,x); - INSERT_WORDS(x,high&0x80000000,0); /* return +-0 */ + SET_LDOUBLE_WORDS(x,se&0x8000,0,0); /* return +-0 */ return x; } else { - INSERT_WORDS(*iptr,i0&(~i),0); + SET_LDOUBLE_WORDS(*iptr,se,i0&(~i),0); return x - *iptr; } } } else if (j0>63) { /* no fraction part */ - u_int32_t high; *iptr = x*one; - GET_HIGH_WORD(high,x); - INSERT_WORDS(x,high&0x80000000,0); /* return +-0 */ + /* We must handle NaNs separately. */ + if (j0 == 0x4000 && ((i0 & 0x7fffffff) | i1)) + return x*one; + SET_LDOUBLE_WORDS(x,se&0x8000,0,0); /* return +-0 */ return x; } else { /* fraction part in low x */ i = ((u_int32_t)(0xffffffff))>>(j0-20); if((i1&i)==0) { /* x is integral */ - u_int32_t high; *iptr = x; - GET_HIGH_WORD(high,x); - INSERT_WORDS(x,high&0x80000000,0); /* return +-0 */ + INSERT_WORDS(x,se&0x8000,0); /* return +-0 */ return x; } else { - INSERT_WORDS(*iptr,i0,i1&(~i)); + SET_LDOUBLE_WORDS(*iptr,se,i0,i1&(~i)); return x - *iptr; } } diff -durpN glibc-2.0.1/sysdeps/libm-ieee754/s_scalbnl.c glibc-2.0.2/sysdeps/libm-ieee754/s_scalbnl.c --- glibc-2.0.1/sysdeps/libm-ieee754/s_scalbnl.c Thu May 30 12:07:35 1996 +++ glibc-2.0.2/sysdeps/libm-ieee754/s_scalbnl.c Sun Mar 16 20:05:16 1997 @@ -33,10 +33,10 @@ static const long double #else static long double #endif -two54 = 1.80143985094819840000e+16, /* 0x43500000, 0x00000000 */ -twom54 = 5.55111512312578270212e-17, /* 0x3C900000, 0x00000000 */ -huge = 1.0e+300, -tiny = 1.0e-300; +two54 = 1.80143985094819840000e+16, /* 0x4035, 0x00000000, 0x00000000 */ +twom54 = 5.55111512312578270212e-17, /* 0x3FC9, 0x00000000, 0x00000000 */ +huge = 1.0e+4900L, +tiny = 1.0e-4900L; #ifdef __STDC__ long double __scalbnl (long double x, int n) diff -durpN glibc-2.0.1/sysdeps/libm-ieee754/s_tanh.c glibc-2.0.2/sysdeps/libm-ieee754/s_tanh.c --- glibc-2.0.1/sysdeps/libm-ieee754/s_tanh.c Sat Oct 5 09:27:28 1996 +++ glibc-2.0.2/sysdeps/libm-ieee754/s_tanh.c Wed Mar 19 21:28:07 1997 @@ -55,10 +55,10 @@ static double one=1.0, two=2.0, tiny = 1 #endif { double t,z; - int32_t jx,ix; + int32_t jx,ix,lx; /* High word of |x|. */ - GET_HIGH_WORD(jx,x); + EXTRACT_WORDS(jx,lx,x); ix = jx&0x7fffffff; /* x is INF or NaN */ @@ -69,6 +69,8 @@ static double one=1.0, two=2.0, tiny = 1 /* |x| < 22 */ if (ix < 0x40360000) { /* |x|<22 */ + if ((ix | lx) == 0) + return x; /* x == +-0 */ if (ix<0x3c800000) /* |x|<2**-55 */ return x*(one+x); /* tanh(small) = small */ if (ix>=0x3ff00000) { /* |x|>=1 */ diff -durpN glibc-2.0.1/sysdeps/libm-ieee754/s_tanhf.c glibc-2.0.2/sysdeps/libm-ieee754/s_tanhf.c --- glibc-2.0.1/sysdeps/libm-ieee754/s_tanhf.c Tue Mar 5 14:08:29 1996 +++ glibc-2.0.2/sysdeps/libm-ieee754/s_tanhf.c Wed Mar 19 21:28:07 1997 @@ -8,7 +8,7 @@ * * Developed at SunPro, a Sun Microsystems, Inc. business. * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice + * software is freely granted, provided that this notice * is preserved. * ==================================================== */ @@ -40,13 +40,15 @@ static float one=1.0, two=2.0, tiny = 1. ix = jx&0x7fffffff; /* x is INF or NaN */ - if(ix>=0x7f800000) { + if(ix>=0x7f800000) { if (jx>=0) return one/x+one; /* tanh(+-inf)=+-1 */ else return one/x-one; /* tanh(NaN) = NaN */ } /* |x| < 22 */ if (ix < 0x41b00000) { /* |x|<22 */ + if (ix == 0) + return x; /* x == +-0 */ if (ix<0x24000000) /* |x|<2**-55 */ return x*(one+x); /* tanh(small) = small */ if (ix>=0x3f800000) { /* |x|>=1 */ diff -durpN glibc-2.0.1/sysdeps/libm-ieee754/s_tanhl.c glibc-2.0.2/sysdeps/libm-ieee754/s_tanhl.c --- glibc-2.0.1/sysdeps/libm-ieee754/s_tanhl.c Mon Feb 3 21:05:12 1997 +++ glibc-2.0.2/sysdeps/libm-ieee754/s_tanhl.c Wed Mar 19 21:28:07 1997 @@ -68,12 +68,15 @@ static long double one=1.0, two=2.0, tin /* x is INF or NaN */ if(ix==0x7fff) { - if (se>=0x7fff) return one/x+one; /* tanhl(+-inf)=+-1 */ - else return one/x-one; /* tanhl(NaN) = NaN */ + /* for NaN it's not important which branch: tanhl(NaN) = NaN */ + if (se&0x8000) return one/x-one; /* tanhl(-inf)= -1; */ + else return one/x+one; /* tanhl(+inf)=+1 */ } /* |x| < 23 */ if (ix < 0x4003 || (ix == 0x4003 && j0 < 0xb8000000u)) {/* |x|<23 */ + if ((ix|j0|j1) == 0) + return x; /* x == +- 0 */ if (ix<0x3fc8) /* |x|<2**-55 */ return x*(one+x); /* tanh(small) = small */ if (ix>=0x3fff) { /* |x|>=1 */ diff -durpN glibc-2.0.1/sysdeps/libm-ieee754/w_atan2.c glibc-2.0.2/sysdeps/libm-ieee754/w_atan2.c --- glibc-2.0.1/sysdeps/libm-ieee754/w_atan2.c Sat Oct 5 09:31:31 1996 +++ glibc-2.0.2/sysdeps/libm-ieee754/w_atan2.c Sun Mar 16 21:37:18 1997 @@ -34,11 +34,10 @@ static char rcsid[] = "$NetBSD: w_atan2. #else double z; z = __ieee754_atan2(y,x); - if(_LIB_VERSION == _IEEE_||__isnan(x)||__isnan(y)) return z; - if(x==0.0&&y==0.0) { - return __kernel_standard(y,x,3); /* atan2(+-0,+-0) */ - } else - return z; + if(_LIB_VERSION != _SVID_||__isnan(x)||__isnan(y)) return z; + if(x==0.0&&y==0.0) + return __kernel_standard(y,x,3); /* atan2(+-0,+-0) */ + return z; #endif } weak_alias (__atan2, atan2) diff -durpN glibc-2.0.1/sysdeps/libm-ieee754/w_atan2f.c glibc-2.0.2/sysdeps/libm-ieee754/w_atan2f.c --- glibc-2.0.1/sysdeps/libm-ieee754/w_atan2f.c Tue Mar 5 14:08:35 1996 +++ glibc-2.0.2/sysdeps/libm-ieee754/w_atan2f.c Sun Mar 16 21:38:03 1997 @@ -8,7 +8,7 @@ * * Developed at SunPro, a Sun Microsystems, Inc. business. * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice + * software is freely granted, provided that this notice * is preserved. * ==================================================== */ @@ -17,7 +17,7 @@ static char rcsid[] = "$NetBSD: w_atan2f.c,v 1.3 1995/05/10 20:48:42 jtc Exp $"; #endif -/* +/* * wrapper atan2f(y,x) */ @@ -37,12 +37,10 @@ static char rcsid[] = "$NetBSD: w_atan2f #else float z; z = __ieee754_atan2f(y,x); - if(_LIB_VERSION == _IEEE_||__isnanf(x)||__isnanf(y)) return z; - if(x==(float)0.0&&y==(float)0.0) { - /* atan2f(+-0,+-0) */ - return (float)__kernel_standard((double)y,(double)x,103); - } else - return z; + if(_LIB_VERSION != _SVID_||__isnanf(x)||__isnanf(y)) return z; + if(x==0.0&&y==0.0) + return __kernel_standard(y,x,103); /* atan2(+-0,+-0) */ + return z; #endif } weak_alias (__atan2f, atan2f) diff -durpN glibc-2.0.1/sysdeps/libm-ieee754/w_atan2l.c glibc-2.0.2/sysdeps/libm-ieee754/w_atan2l.c --- glibc-2.0.1/sysdeps/libm-ieee754/w_atan2l.c Tue Jun 4 21:04:28 1996 +++ glibc-2.0.2/sysdeps/libm-ieee754/w_atan2l.c Sun Mar 16 21:38:25 1997 @@ -38,11 +38,10 @@ static char rcsid[] = "$NetBSD: $"; #else long double z; z = __ieee754_atan2l(y,x); - if(_LIB_VERSION == _IEEE_||__isnanl(x)||__isnanl(y)) return z; - if(x==0.0&&y==0.0) { - return __kernel_standard(y,x,203); /* atan2l(+-0,+-0) */ - } else - return z; + if(_LIB_VERSION != _SVID_||__isnanl(x)||__isnanl(y)) return z; + if(x==0.0&&y==0.0) + return __kernel_standard(y,x,203); /* atan2(+-0,+-0) */ + return z; #endif } weak_alias (__atan2l, atan2l) diff -durpN glibc-2.0.1/sysdeps/libm-ieee754/w_pow.c glibc-2.0.2/sysdeps/libm-ieee754/w_pow.c --- glibc-2.0.1/sysdeps/libm-ieee754/w_pow.c Sat Oct 5 09:45:04 1996 +++ glibc-2.0.2/sysdeps/libm-ieee754/w_pow.c Wed Mar 19 22:06:45 1997 @@ -20,6 +20,18 @@ #include "math_private.h" +/* This is a quick hack for now. In version 2.1.x we'll have a real + function. */ +static inline int +signbit (double x) +{ + int32_t hx; + + GET_HIGH_WORD (hx, x); + return hx & 0x80000000; +} + + #ifdef __STDC__ double __pow(double x, double y) /* wrapper pow */ #else @@ -43,7 +55,10 @@ if(y==0.0) return __kernel_standard(x,y,20); /* pow(0.0,0.0) */ if(__finite(y)&&y<0.0) - return __kernel_standard(x,y,23); /* pow(0.0,negative) */ + if (signbit (x) && signbit (z)) + return __kernel_standard(x,y,23); /* pow(-0.0,negative) */ + else + return __kernel_standard(x,y,43); /* pow(+0.0,negative) */ return z; } if(!__finite(z)) { diff -durpN glibc-2.0.1/sysdeps/libm-ieee754/w_powf.c glibc-2.0.2/sysdeps/libm-ieee754/w_powf.c --- glibc-2.0.1/sysdeps/libm-ieee754/w_powf.c Tue Mar 5 14:09:04 1996 +++ glibc-2.0.2/sysdeps/libm-ieee754/w_powf.c Wed Mar 19 22:06:41 1997 @@ -8,7 +8,7 @@ * * Developed at SunPro, a Sun Microsystems, Inc. business. * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice + * software is freely granted, provided that this notice * is preserved. * ==================================================== */ @@ -17,7 +17,7 @@ static char rcsid[] = "$NetBSD: w_powf.c,v 1.3 1995/05/10 20:49:41 jtc Exp $"; #endif -/* +/* * wrapper powf(x,y) return x**y */ @@ -25,6 +25,18 @@ static char rcsid[] = "$NetBSD: w_powf.c #include "math_private.h" +/* This is a quick hack for now. In version 2.1.x we'll have a real + function. */ +static inline int +signbit (float x) +{ + int32_t hx; + + GET_FLOAT_WORD (hx, x); + return hx & 0x80000000; +} + + #ifdef __STDC__ float __powf(float x, float y) /* wrapper powf */ #else @@ -39,19 +51,22 @@ static char rcsid[] = "$NetBSD: w_powf.c z=__ieee754_powf(x,y); if(_LIB_VERSION == _IEEE_|| __isnanf(y)) return z; if(__isnanf(x)) { - if(y==(float)0.0) + if(y==(float)0.0) /* powf(NaN,0.0) */ return (float)__kernel_standard((double)x,(double)y,142); - else + else return z; } - if(x==(float)0.0){ + if(x==(float)0.0){ if(y==(float)0.0) /* powf(0.0,0.0) */ return (float)__kernel_standard((double)x,(double)y,120); if(__finitef(y)&&y<(float)0.0) + if (signbit (x) && signbit (z)) /* powf(0.0,negative) */ return (float)__kernel_standard((double)x,(double)y,123); + else + return (float)__kernel_standard((double)x,(double)y,143); return z; } if(!__finitef(z)) { @@ -59,11 +74,11 @@ static char rcsid[] = "$NetBSD: w_powf.c if(__isnanf(z)) /* powf neg**non-int */ return (float)__kernel_standard((double)x,(double)y,124); - else + else /* powf overflow */ return (float)__kernel_standard((double)x,(double)y,121); } - } + } if(z==(float)0.0&&__finitef(x)&&__finitef(y)) /* powf underflow */ return (float)__kernel_standard((double)x,(double)y,122); diff -durpN glibc-2.0.1/sysdeps/libm-ieee754/w_powl.c glibc-2.0.2/sysdeps/libm-ieee754/w_powl.c --- glibc-2.0.1/sysdeps/libm-ieee754/w_powl.c Tue Jun 4 21:04:30 1996 +++ glibc-2.0.2/sysdeps/libm-ieee754/w_powl.c Wed Mar 19 22:06:37 1997 @@ -22,6 +22,18 @@ #include "math_private.h" +/* This is a quick hack for now. In version 2.1.x we'll have a real + function. */ +static inline int +signbit (long double x) +{ + int32_t e; + + GET_LDOUBLE_EXP (e, x); + return e & 0x8000; +} + + #ifdef __STDC__ long double __powl(long double x, long double y)/* wrapper powl */ #else @@ -45,7 +57,10 @@ if(y==0.0) return __kernel_standard(x,y,220); /* pow(0.0,0.0) */ if(__finite(y)&&y<0.0) - return __kernel_standard(x,y,223); /* pow(0.0,negative) */ + if (signbit (x) && signbit (z)) + return __kernel_standard(x,y,223); /* pow(-0.0,negative) */ + else + return __kernel_standard(x,y,243); /* pow(+0.0,negative) */ return z; } if(!__finitel(z)) { diff -durpN glibc-2.0.1/sysdeps/m68k/fpu/__math.h glibc-2.0.2/sysdeps/m68k/fpu/__math.h --- glibc-2.0.1/sysdeps/m68k/fpu/__math.h Wed Sep 18 07:38:14 1996 +++ glibc-2.0.2/sysdeps/m68k/fpu/__math.h Wed Mar 19 15:55:46 1997 @@ -1,26 +1,27 @@ -/* Copyright (C) 1991, 92, 93, 94, 96 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Definitions of inline math functions implemented by the m68881/2. + Copyright (C) 1991, 92, 93, 94, 96, 97 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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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. */ #ifdef __GNUC__ #include -#ifdef __NO_M81_MATH_INLINES +#ifdef __LIBC_M81_MATH_INLINES /* This is used when defining the functions themselves. Define them with __ names, and with `static inline' instead of `extern inline' so the bodies will always be used, never an external function call. */ @@ -34,36 +35,35 @@ Cambridge, MA 02139, USA. */ /* Define a const math function. */ #define __m81_defun(rettype, func, args) \ - __m81_inline rettype \ - __m81_u(func) args __attribute__((__const__)); \ - __m81_inline rettype \ + __m81_inline rettype __attribute__((__const__)) \ __m81_u(func) args /* Define the three variants of a math function that has a direct implementation in the m68k fpu. FUNC is the name for C (which will be suffixed with f and l for the float and long double version, resp). OP is the name of the fpu operation (without leading f). */ -#define __inline_mathop(func, op) \ - __m81_defun (double, func, (double __mathop_x)) \ - { \ - double __result; \ - __asm("f" __STRING(op) "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x));\ - return __result; \ - } \ - __m81_defun (float, func##f, (float __mathop_x)) \ - { \ - float __result; \ - __asm("f" __STRING(op) "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x));\ - return __result; \ - } \ - __m81_defun (long double, func##l, (long double __mathop_x)) \ + +#if defined __USE_MISC +#define __inline_mathop(func, op) \ + __inline_mathop1(double, func, op) \ + __inline_mathop1(float, __CONCAT(func,f), op) \ + __inline_mathop1(long double, __CONCAT(func,l), op) +#else +#define __inline_mathop(func, op) \ + __inline_mathop1(double, func, op) +#endif + +#define __inline_mathop1(float_type,func, op) \ + __m81_defun (float_type, func, (float_type __mathop_x)) \ { \ - long double __result; \ + float_type __result; \ __asm("f" __STRING(op) "%.x %1, %0" : "=f" (__result) : "f" (__mathop_x));\ return __result; \ } +#ifdef __LIBC_M81_MATH_INLINES /* ieee style elementary functions */ +/* These are internal to the implementation of libm. */ __inline_mathop(__ieee754_acos, acos) __inline_mathop(__ieee754_asin, asin) __inline_mathop(__ieee754_cosh, cosh) @@ -73,6 +73,7 @@ __inline_mathop(__ieee754_log10, log10) __inline_mathop(__ieee754_log, logn) __inline_mathop(__ieee754_sqrt, sqrt) __inline_mathop(__ieee754_atanh, atanh) +#endif __inline_mathop(__atan, atan) __inline_mathop(__cos, cos) @@ -80,7 +81,6 @@ __inline_mathop(__sin, sin) __inline_mathop(__tan, tan) __inline_mathop(__tanh, tanh) __inline_mathop(__fabs, abs) -__inline_mathop(__sqrt, sqrt) __inline_mathop(__rint, int) __inline_mathop(__expm1, etoxm1) @@ -88,31 +88,62 @@ __inline_mathop(__log1p, lognp1) __inline_mathop(__logb, log2) __inline_mathop(__significand, getman) +__inline_mathop(__log2, log2) +__inline_mathop(__exp2, twotox) + +#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__ + +__inline_mathop(atan, atan) +__inline_mathop(cos, cos) +__inline_mathop(sin, sin) +__inline_mathop(tan, tan) +__inline_mathop(tanh, tanh) + +#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED +__inline_mathop(rint, int) +__inline_mathop(expm1, etoxm1) +__inline_mathop(log1p, lognp1) +__inline_mathop(logb, log2) +#endif + +#ifdef __USE_MISC +__inline_mathop(significand, getman) +#endif + +#ifdef __USE_MISC +__inline_mathop(log2, log2) +__inline_mathop(exp2, twotox) +#endif + +#endif /* !__NO_MATH_INLINES && __OPTIMIZE__ */ + /* This macro contains the definition for the rest of the inline functions, using __FLOAT_TYPE as the domain type and __S as the suffix for the function names. */ -#define __inline_functions(__float_type, __s) \ -__m81_defun (__float_type, \ - __ieee754_remainder##__s, (__float_type __x, __float_type __y)) \ +#ifdef __LIBC_M81_MATH_INLINES +/* Internally used functions. */ +#define __internal_inline_functions(float_type, s) \ +__m81_defun (float_type, __CONCAT(__ieee754_remainder,s), \ + (float_type __x, float_type __y)) \ { \ - __float_type __result; \ + float_type __result; \ __asm("frem%.x %1, %0" : "=f" (__result) : "f" (__y), "0" (__x)); \ return __result; \ } \ \ -__m81_defun (__float_type, \ - __ieee754_fmod##__s, (__float_type __x, __float_type __y)) \ +__m81_defun (float_type, __CONCAT(__ieee754_fmod,s), \ + (float_type __x, float_type __y)) \ { \ - __float_type __result; \ + float_type __result; \ __asm("fmod%.x %1, %0" : "=f" (__result) : "f" (__y), "0" (__x)); \ return __result; \ } \ \ -__m81_defun (__float_type, \ - __ieee754_atan2##__s, (__float_type __y, __float_type __x)) \ +__m81_defun (float_type, __CONCAT(__ieee754_atan2,s), \ + (float_type __y, float_type __x)) \ { \ - __float_type __pi, __pi_2; \ + float_type __pi, __pi_2; \ \ __asm ("fmovecr%.x %#0, %0" : "=f" (__pi)); \ __asm ("fscale%.w %#-1, %0" : "=f" (__pi_2) : "0" (__pi)); \ @@ -121,16 +152,16 @@ __m81_defun (__float_type, \ if (__y > 0) \ { \ if (__x > __y) \ - return __m81_u(__atan##__s) (__y / __x); \ + return __m81_u(__CONCAT(__atan,s)) (__y / __x); \ else \ - return __pi_2 - __m81_u(__atan##__s) (__x / __y); \ + return __pi_2 - __m81_u(__CONCAT(__atan,s)) (__x / __y); \ } \ else \ { \ if (__x > -__y) \ - return __m81_u(__atan##__s) (__y / __x); \ + return __m81_u(__CONCAT(__atan,s)) (__y / __x); \ else \ - return -__pi_2 - __m81_u(__atan##__s) (__x / __y); \ + return -__pi_2 - __m81_u(__CONCAT(__atan,s)) (__x / __y); \ } \ } \ else \ @@ -138,58 +169,24 @@ __m81_defun (__float_type, \ if (__y > 0) \ { \ if (-__x < __y) \ - return __pi + __m81_u(__atan##__s) (__y / __x); \ + return __pi + __m81_u(__CONCAT(__atan,s)) (__y / __x); \ else \ - return __pi_2 - __m81_u(__atan##__s) (__x / __y); \ + return __pi_2 - __m81_u(__CONCAT(__atan,s)) (__x / __y); \ } \ else \ { \ if (-__x > -__y) \ - return -__pi + __m81_u(__atan##__s) (__y / __x); \ + return -__pi + __m81_u(__CONCAT(__atan,s)) (__y / __x); \ else \ - return -__pi_2 - __m81_u(__atan##__s) (__x / __y); \ + return -__pi_2 - __m81_u(__CONCAT(__atan,s)) (__x / __y); \ } \ } \ } \ \ -__m81_inline __float_type \ -__m81_u(__frexp##__s)(__float_type __value, int *__expptr) \ -{ \ - __float_type __mantissa, __exponent; \ - int __iexponent; \ - if (__value == 0.0) \ - { \ - *__expptr = 0; \ - return __value; \ - } \ - __asm("fgetexp%.x %1, %0" : "=f" (__exponent) : "f" (__value)); \ - __iexponent = (int) __exponent + 1; \ - *__expptr = __iexponent; \ - __asm("fscale%.l %2, %0" : "=f" (__mantissa) \ - : "0" (__value), "dmi" (-__iexponent)); \ - return __mantissa; \ -} \ - \ -__m81_defun (__float_type, __floor##__s, (__float_type __x)) \ -{ \ - __float_type __result; \ - unsigned long int __ctrl_reg; \ - __asm __volatile__ ("fmove%.l %!, %0" : "=dm" (__ctrl_reg)); \ - /* Set rounding towards negative infinity. */ \ - __asm __volatile__ ("fmove%.l %0, %!" : /* No outputs. */ \ - : "dmi" ((__ctrl_reg & ~0x10) | 0x20)); \ - /* Convert X to an integer, using -Inf rounding. */ \ - __asm __volatile__ ("fint%.x %1, %0" : "=f" (__result) : "f" (__x)); \ - /* Restore the previous rounding mode. */ \ - __asm __volatile__ ("fmove%.l %0, %!" : /* No outputs. */ \ - : "dmi" (__ctrl_reg)); \ - return __result; \ -} \ - \ -__m81_defun (__float_type, \ - __ieee754_pow##__s, (__float_type __x, __float_type __y)) \ +__m81_defun (float_type, __CONCAT(__ieee754_pow,s), \ + (float_type __x, float_type __y)) \ { \ - __float_type __result; \ + float_type __result; \ if (__x == 0.0) \ { \ if (__y <= 0.0) \ @@ -209,12 +206,12 @@ __m81_defun (__float_type, \ __asm("ftwotox%.x %1, %0" : "=f" (__result) : "f" (__y)); \ else if (__x < 0.0) \ { \ - __float_type __temp = __m81_u (__rint##__s) (__y); \ + float_type __temp = __m81_u (__CONCAT(__rint,s)) (__y); \ if (__y == __temp) \ { \ int __i = (int) __y; \ - __result = (__m81_u(__ieee754_exp##__s) \ - (__y * __m81_u(__ieee754_log##__s) (-__x))); \ + __result = (__m81_u(__CONCAT(__ieee754_exp,s)) \ + (__y * __m81_u(__CONCAT(__ieee754_log,s)) (-__x))); \ if (__i & 1) \ __result = -__result; \ } \ @@ -222,14 +219,66 @@ __m81_defun (__float_type, \ __result = 0.0 / 0.0; \ } \ else \ - __result = (__m81_u(__ieee754_exp##__s) \ - (__y * __m81_u(__ieee754_log##__s) (__x))); \ + __result = (__m81_u(__CONCAT(__ieee754_exp,s)) \ + (__y * __m81_u(__CONCAT(__ieee754_log,s)) (__x))); \ return __result; \ } \ \ -__m81_defun (__float_type, __ceil##__s, (__float_type __x)) \ +__m81_defun (float_type, __CONCAT(__ieee754_scalb,s), \ + (float_type __x, float_type __n)) \ { \ - __float_type __result; \ + float_type __result; \ + __asm ("fscale%.x %1, %0" : "=f" (__result) : "f" (__n), "0" (__x)); \ + return __result; \ +} + +__internal_inline_functions (double,) +__internal_inline_functions (float,f) +__internal_inline_functions (long double,l) +#undef __internal_inline_functions + +#endif /* __LIBC_M81_MATH_INLINES */ + +/* The rest of the functions are available to the user. */ + +#define __inline_functions(float_type, s) \ +__m81_inline float_type \ +__m81_u(__CONCAT(__frexp,s))(float_type __value, int *__expptr) \ +{ \ + float_type __mantissa, __exponent; \ + int __iexponent; \ + if (__value == 0.0) \ + { \ + *__expptr = 0; \ + return __value; \ + } \ + __asm("fgetexp%.x %1, %0" : "=f" (__exponent) : "f" (__value)); \ + __iexponent = (int) __exponent + 1; \ + *__expptr = __iexponent; \ + __asm("fscale%.l %2, %0" : "=f" (__mantissa) \ + : "0" (__value), "dmi" (-__iexponent)); \ + return __mantissa; \ +} \ + \ +__m81_defun (float_type, __CONCAT(__floor,s), (float_type __x)) \ +{ \ + float_type __result; \ + unsigned long int __ctrl_reg; \ + __asm __volatile__ ("fmove%.l %!, %0" : "=dm" (__ctrl_reg)); \ + /* Set rounding towards negative infinity. */ \ + __asm __volatile__ ("fmove%.l %0, %!" : /* No outputs. */ \ + : "dmi" ((__ctrl_reg & ~0x10) | 0x20)); \ + /* Convert X to an integer, using -Inf rounding. */ \ + __asm __volatile__ ("fint%.x %1, %0" : "=f" (__result) : "f" (__x)); \ + /* Restore the previous rounding mode. */ \ + __asm __volatile__ ("fmove%.l %0, %!" : /* No outputs. */ \ + : "dmi" (__ctrl_reg)); \ + return __result; \ +} \ + \ +__m81_defun (float_type, __CONCAT(__ceil,s), (float_type __x)) \ +{ \ + float_type __result; \ unsigned long int __ctrl_reg; \ __asm __volatile__ ("fmove%.l %!, %0" : "=dm" (__ctrl_reg)); \ /* Set rounding towards positive infinity. */ \ @@ -243,16 +292,16 @@ __m81_defun (__float_type, __ceil##__s, return __result; \ } \ \ -__m81_inline __float_type \ -__m81_u(__modf##__s)(__float_type __value, __float_type *__iptr) \ +__m81_inline float_type \ +__m81_u(__CONCAT(__modf,s))(float_type __value, float_type *__iptr) \ { \ - __float_type __modf_int; \ + float_type __modf_int; \ __asm ("fintrz%.x %1, %0" : "=f" (__modf_int) : "f" (__value)); \ *__iptr = __modf_int; \ return __value - __modf_int; \ } \ \ -__m81_defun (int, __isinf##__s, (__float_type __value)) \ +__m81_defun (int, __CONCAT(__isinf,s), (float_type __value)) \ { \ /* There is no branch-condition for infinity, \ so we must extract and examine the condition codes manually. */ \ @@ -262,7 +311,7 @@ __m81_defun (int, __isinf##__s, (__float return (__fpsr & (2 << 24)) ? (__fpsr & (8 << 24) ? -1 : 1) : 0; \ } \ \ -__m81_defun (int, __isnan##__s, (__float_type __value)) \ +__m81_defun (int, __CONCAT(__isnan,s), (float_type __value)) \ { \ char __result; \ __asm("ftst%.x %1\n" \ @@ -270,7 +319,7 @@ __m81_defun (int, __isnan##__s, (__float return __result; \ } \ \ -__m81_defun (int, __finite##__s, (__float_type __value)) \ +__m81_defun (int, __CONCAT(__finite,s), (float_type __value)) \ { \ /* There is no branch-condition for infinity, so we must extract and \ examine the condition codes manually. */ \ @@ -280,34 +329,98 @@ __m81_defun (int, __finite##__s, (__floa return (__fpsr & (3 << 24)) == 0; \ } \ \ -__m81_defun (int, __ilogb##__s, (__float_type __x)) \ +__m81_defun (int, __CONCAT(__ilogb,s), (float_type __x)) \ { \ - __float_type __result; \ + float_type __result; \ if (__x == 0.0) \ return 0x80000001; \ __asm("fgetexp%.x %1, %0" : "=f" (__result) : "f" (__x)); \ return (int) __result; \ } \ \ -__m81_defun (__float_type, \ - __ieee754_scalb##__s, (__float_type __x, __float_type __n)) \ -{ \ - __float_type __result; \ - __asm ("fscale%.x %1, %0" : "=f" (__result) : "f" (__n), "0" (__x)); \ - return __result; \ -} \ - \ -__m81_defun (__float_type, __scalbn##__s, (__float_type __x, int __n)) \ +__m81_defun (float_type, __CONCAT(__scalbn,s), (float_type __x, int __n)) \ { \ - __float_type __result; \ + float_type __result; \ __asm ("fscale%.l %1, %0" : "=f" (__result) : "dmi" (__n), "0" (__x)); \ return __result; \ } /* This defines the three variants of the inline functions. */ -__inline_functions (double, ) -__inline_functions (float, f) -__inline_functions (long double, l) +__inline_functions (double,) +__inline_functions (float,f) +__inline_functions (long double,l) #undef __inline_functions + +#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__ + +/* Define inline versions of the user visible functions. */ + +#define __inline_forward_c(rettype, name, args1, args2) \ +extern __inline rettype __attribute__((__const__)) \ +name args1 \ +{ \ + return __CONCAT(__,name) args2; \ +} + +#define __inline_forward(rettype, name, args1, args2) \ +extern __inline rettype name args1 \ +{ \ + return __CONCAT(__,name) args2; \ +} + +__inline_forward(double,frexp, (double __value, int *__expptr), + (__value, __expptr)) +__inline_forward_c(double,floor, (double __x), (__x)) +__inline_forward_c(double,ceil, (double __x), (__x)) +__inline_forward(double,modf, (double __value, double *__iptr), + (__value, __iptr)) +#ifdef __USE_MISC +__inline_forward_c(int,isinf, (double __value), (__value)) +__inline_forward_c(int,finite, (double __value), (__value)) +__inline_forward_c(double,scalbn, (double __x, int __n), (__x, __n)) +#endif +#if defined __USE_MISC || defined __USE_XOPEN +__inline_forward_c(int,isnan, (double __value), (__value)) +__inline_forward_c(int,ilogb, (double __value), (__value)) +#endif + +#if defined __USE_MISC + +__inline_forward(float,frexpf, (float __value, int *__expptr), + (__value, __expptr)) +__inline_forward_c(float,floorf, (float __x), (__x)) +__inline_forward_c(float,ceilf, (float __x), (__x)) +__inline_forward(float,modff, (float __value, float *__iptr), + (__value, __iptr)) +#ifdef __USE_MISC +__inline_forward_c(int,isinff, (float __value), (__value)) +__inline_forward_c(int,finitef, (float __value), (__value)) +__inline_forward_c(float,scalbnf, (float __x, int __n), (__x, __n)) +__inline_forward_c(int,isnanf, (float __value), (__value)) +__inline_forward_c(int,ilogbf, (float __value), (__value)) +#endif + +__inline_forward(long double,frexpl, (long double __value, int *__expptr), + (__value, __expptr)) +__inline_forward_c(long double,floorl, (long double __x), (__x)) +__inline_forward_c(long double,ceill, (long double __x), (__x)) +__inline_forward(long double,modfl, + (long double __value, long double *__iptr), + (__value, __iptr)) +#ifdef __USE_MISC +__inline_forward_c(int,isinfl, (long double __value), (__value)) +__inline_forward_c(int,finitel, (long double __value), (__value)) +__inline_forward_c(long double,scalbnl, (long double __x, int __n), + (__x, __n)) +__inline_forward_c(int,isnanl, (long double __value), (__value)) +__inline_forward_c(int,ilogbl, (long double __value), (__value)) +#endif + +#endif /* Use misc */ + +#undef __inline_forward +#undef __inline_forward_c + +#endif /* !__NO_MATH_INLINES && __OPTIMIZE__ */ #endif /* GCC. */ diff -durpN glibc-2.0.1/sysdeps/m68k/fpu/e_acos.c glibc-2.0.2/sysdeps/m68k/fpu/e_acos.c --- glibc-2.0.1/sysdeps/m68k/fpu/e_acos.c Mon Sep 9 07:38:24 1996 +++ glibc-2.0.2/sysdeps/m68k/fpu/e_acos.c Fri Mar 21 15:29:29 1997 @@ -1,22 +1,22 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 __NO_M81_MATH_INLINES +#define __LIBC_M81_MATH_INLINES #include #include "math_private.h" diff -durpN glibc-2.0.1/sysdeps/m68k/fpu/e_fmod.c glibc-2.0.2/sysdeps/m68k/fpu/e_fmod.c --- glibc-2.0.1/sysdeps/m68k/fpu/e_fmod.c Mon Sep 9 07:39:09 1996 +++ glibc-2.0.2/sysdeps/m68k/fpu/e_fmod.c Wed Mar 19 22:12:14 1997 @@ -1,22 +1,22 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 __NO_M81_MATH_INLINES +#define __LIBC_M81_MATH_INLINES #include #include "math_private.h" diff -durpN glibc-2.0.1/sysdeps/m68k/fpu/k_cos.c glibc-2.0.2/sysdeps/m68k/fpu/k_cos.c --- glibc-2.0.1/sysdeps/m68k/fpu/k_cos.c Mon Sep 9 07:39:30 1996 +++ glibc-2.0.2/sysdeps/m68k/fpu/k_cos.c Wed Mar 19 22:12:23 1997 @@ -1,22 +1,22 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 __NO_M81_MATH_INLINES +#define __LIBC_M81_MATH_INLINES #include #include "math_private.h" diff -durpN glibc-2.0.1/sysdeps/m68k/fpu/k_sin.c glibc-2.0.2/sysdeps/m68k/fpu/k_sin.c --- glibc-2.0.1/sysdeps/m68k/fpu/k_sin.c Mon Sep 9 07:40:16 1996 +++ glibc-2.0.2/sysdeps/m68k/fpu/k_sin.c Wed Mar 19 22:12:26 1997 @@ -1,22 +1,22 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 __NO_M81_MATH_INLINES +#define __LIBC_M81_MATH_INLINES #include #include "math_private.h" diff -durpN glibc-2.0.1/sysdeps/m68k/fpu/k_tan.c glibc-2.0.2/sysdeps/m68k/fpu/k_tan.c --- glibc-2.0.1/sysdeps/m68k/fpu/k_tan.c Mon Sep 9 07:40:47 1996 +++ glibc-2.0.2/sysdeps/m68k/fpu/k_tan.c Wed Mar 19 22:12:29 1997 @@ -1,22 +1,22 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 __NO_M81_MATH_INLINES +#define __LIBC_M81_MATH_INLINES #include #include "math_private.h" diff -durpN glibc-2.0.1/sysdeps/m68k/fpu/s_atan.c glibc-2.0.2/sysdeps/m68k/fpu/s_atan.c --- glibc-2.0.1/sysdeps/m68k/fpu/s_atan.c Mon Sep 9 07:32:54 1996 +++ glibc-2.0.2/sysdeps/m68k/fpu/s_atan.c Wed Mar 19 22:13:18 1997 @@ -1,23 +1,22 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 __NO_M81_MATH_INLINES +#define __LIBC_M81_MATH_INLINES #include #ifndef FUNC @@ -30,7 +29,8 @@ Cambridge, MA 02139, USA. */ #define __CONCATX(a,b) __CONCAT(a,b) float_type -DEFUN(__CONCATX(__,FUNC), (x), float_type x) +__CONCATX(__,FUNC) (x) + float_type x; { return __m81_u(__CONCATX(__,FUNC))(x); } diff -durpN glibc-2.0.1/sysdeps/m68k/fpu/s_frexp.c glibc-2.0.2/sysdeps/m68k/fpu/s_frexp.c --- glibc-2.0.1/sysdeps/m68k/fpu/s_frexp.c Mon Sep 9 07:32:54 1996 +++ glibc-2.0.2/sysdeps/m68k/fpu/s_frexp.c Wed Mar 19 22:13:27 1997 @@ -1,23 +1,22 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 __NO_M81_MATH_INLINES +#define __LIBC_M81_MATH_INLINES #include #ifndef FUNC @@ -30,9 +29,12 @@ Cambridge, MA 02139, USA. */ #define __CONCATX(a,b) __CONCAT(a,b) float_type -DEFUN(__CONCATX(__,FUNC), (value, expptr), float_type value AND int *expptr) +__CONCATX(__,FUNC) (value, expptr) + float_type value; + int *expptr; { return __m81_u(__CONCATX(__,FUNC))(value, expptr); } + #define weak_aliasx(a,b) weak_alias(a,b) weak_aliasx (__CONCATX(__,FUNC), FUNC) diff -durpN glibc-2.0.1/sysdeps/m68k/fpu/s_ilogb.c glibc-2.0.2/sysdeps/m68k/fpu/s_ilogb.c --- glibc-2.0.1/sysdeps/m68k/fpu/s_ilogb.c Mon Sep 9 07:32:54 1996 +++ glibc-2.0.2/sysdeps/m68k/fpu/s_ilogb.c Wed Mar 19 22:13:32 1997 @@ -1,23 +1,22 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 __NO_M81_MATH_INLINES +#define __LIBC_M81_MATH_INLINES #include #ifndef FUNC @@ -30,7 +29,8 @@ Cambridge, MA 02139, USA. */ #define __CONCATX(a,b) __CONCAT(a,b) int -DEFUN(__CONCATX(__,FUNC), (x), float_type x) +__CONCATX(__,FUNC) (x) + float_type x; { return __m81_u(__CONCATX(__,FUNC))(x); } diff -durpN glibc-2.0.1/sysdeps/m68k/fpu/s_isinf.c glibc-2.0.2/sysdeps/m68k/fpu/s_isinf.c --- glibc-2.0.1/sysdeps/m68k/fpu/s_isinf.c Mon Sep 9 07:32:54 1996 +++ glibc-2.0.2/sysdeps/m68k/fpu/s_isinf.c Wed Mar 19 22:13:38 1997 @@ -1,23 +1,22 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 __NO_M81_MATH_INLINES +#define __LIBC_M81_MATH_INLINES #include #ifndef FUNC @@ -30,7 +29,8 @@ Cambridge, MA 02139, USA. */ #define __CONCATX(a,b) __CONCAT(a,b) int -DEFUN(__CONCATX(__,FUNC), (x), float_type x) +__CONCATX(__,FUNC) (x) + float_type x; { return __m81_u(__CONCATX(__,FUNC))(x); } diff -durpN glibc-2.0.1/sysdeps/m68k/fpu/s_modf.c glibc-2.0.2/sysdeps/m68k/fpu/s_modf.c --- glibc-2.0.1/sysdeps/m68k/fpu/s_modf.c Mon Sep 9 07:32:54 1996 +++ glibc-2.0.2/sysdeps/m68k/fpu/s_modf.c Wed Mar 19 22:13:42 1997 @@ -1,23 +1,22 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 __NO_M81_MATH_INLINES +#define __LIBC_M81_MATH_INLINES #include #ifndef FUNC @@ -30,9 +29,12 @@ Cambridge, MA 02139, USA. */ #define __CONCATX(a,b) __CONCAT(a,b) float_type -DEFUN(__CONCATX(__,FUNC), (x, iptr), float_type x AND float_type *iptr) +__CONCATX(__,FUNC) (x, iptr) +