+2005-12-18 Ulrich Drepper <drepper@redhat.com>
+
+ * iconv/gconv.c: Demangle pointers before use if necessary.
+ * iconv/gconv_cache.c: Likewise.
+ * iconv/skeleton.c: Likewise.
+ * libio/iofwide.c: Likewise.
+ * wcsmbs/btowc.c: Likewise.
+ * wcsmbs/mbrtowc.c: Likewise.
+ * wcsmbs/mbsnrtowcs.c: Likewise.
+ * wcsmbs/mbsrtowcs_l.c: Likewise.
+ * wcsmbs/wcrtomb.c: Likewise.
+ * wcsmbs/wcsnrtombs.c: Likewise.
+ * wcsmbs/wcsrtombs.c: Likewise.
+ * wcsmbs/wctob.c: Likewise.
+ * iconv_gconv_db.c: Likewise. After init functions returns mangle
+ btowc pointer if necessary.
+ * iconv/gconv_dl.c: Mangle function pointers retrieved from dlsym.
+
+ * iconv/gconv_builtin.c (builtin_map): Change type of size
+ information fields to int8_t.
+
+ * libio/iofwide.c (__libio_codecvt): Mark as const.
+ (__libio_translit): Likewise.
+ * libio/libioP.h (__libio_codecvt): Adjust declaraction.
+
+ * wcsmbs/wcsmbsload.c (to_wc): Mark as const.
+ (to_mb): Likewise.
+
+2005-12-18 Richard Henderson <rth@redhat.com>
+
+ * sysdeps/alpha/libc-tls.c: Fix directory on include of base file.
+
+2005-12-18 Ulrich Drepper <drepper@redhat.com>
+
+ * iconv/gconv_builtin.c: Mark map with attribute_relro.
+
+ * sysdeps/unix/sysv/linux/x86_64/sysdep.h (PTR_MANGLE): Define C
+ version for inside ld.so.
+
+ * elf/rtld.c (dl_main): Don't use hp timing code unless it's available.
+
+ * sysdeps/powerpc/powerpc32/setjmp-common.S [IS_IN_rtld]: Avoid
+ call to __sigjmp_save.
+ * sysdeps/powerpc/powerpc64/setjmp-common.S: Likewise.
+
+ * stdlib/cxa_atexit.c: Use PTR_MANGLE on function pointer. Fill in
+ flavor field last and protect with memory barrier.
+ * stdlib/on_exit.c: Likewise.
+ * stdlib/cxa_finalize.c: Use PTR_DEMANGLE on function pointer before
+ using it.
+ * stdlib/exit.c: Likewise.
+
+ * sysdeps/unix/sysv/linux/i386/sysdep.h: Define PTR_MANGLE and
+ PTR_DEMANGLE for C code in libc.
+ * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise.
+
+2005-12-17 Ulrich Drepper <drepper@redhat.com>
+
+ * elf/Versions [GLIBC_PRIVATE]: Export __pointer_chk_guard if defined.
+ * elf/rtld.c: Define __pointer_chk_guard_local and if necessary
+ __pointer_chk_guard.
+ (_rtld_global_ro): Initialize _dl_pointer_guard.
+ (dl_main): Initialize __pointer_chk_guard_local and either
+ __pointer_chk_guard or TLS value if necessary.
+ (process_envvars): Recognize and handle LD_POINTER_GUARD.
+ * sysdeps/generic/ldsodefs.h (rtld_global_ro): Add _dl_pointer_guard.
+ * sysdeps/i386/__longjmp.S: Use PTR_DEMANGLE for PC if defined.
+ * sysdeps/x86_64/__longjmp.S: Likewise.
+ * sysdeps/i386/bsd-_setjmp.S: Use PTR_MANGLE for PC if defined.
+ * sysdeps/i386/bsd-_setjmp.S: Likewise.
+ * sysdeps/i386/setjmp.S: Likewise.
+ [IS_IN_rtld]: Avoid call to __sigjmp_save.
+ * sysdeps/i386/setjmp.S: Likewise.
+ * sysdeps/unix/sysv/linux/i386/sysdep.h: Define PTR_MANGLE and
+ PTR_DEMANGLE.
+ * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise.
+
+ * sysdeps/i386/elf/setjmp.S: Removed.
+ * sysdeps/i386/elf/bsd-setjmp.S: Removed.
+
+ * elf/dl-error.c (_dl_catch_error): Use __sigsetgjmp instead of
+ setjmp.
+ * elf/dl-error.c (_dl_signal_error): Use __longjmp instead of longjmp.
+ * elf/dl-minimal.c (longjmp): Remove definition.
+
+ * sysdeps/x86_64/bsd-setjmp.S [PIC] (setjmp): Add missing jmp.
+
+2005-12-14 Thorsten Kukuk <kukuk@suse.de>
+
+ * nscd/Makefile: Don't build nscd_nischeck.
+ * nscd/nscd_nischeck.c: Removed.
+
+2005-12-15 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/renameat.c: Move errno setting code in
+ separate function __atfct_seterrno_2.
+ * include/fcntl.h: Declare __atfct_seterrno_2.
+ * posix/unistd.h: Declare linkat, symlinkat, readlinkat.
+ * io/Makefile (routines): Add linkat, symlinkat, readlinkat.
+ * io/Versions [GLIBC_2.4]: Export linkat, symlinkat, readlinkat.
+ * io/linkat.c: New file.
+ * io/readlinkat.c: New file.
+ * io/symlinkat.c: New file.
+ * sysdeps/unix/sysv/linux/linkat.c: New file.
+ * sysdeps/unix/sysv/linux/readlinkat.c: New file.
+ * sysdeps/unix/sysv/linux/symlinkat.c: New file.
+
+2005-12-15 Roland McGrath <roland@redhat.com>
+
+ [BZ #1997]
+ * manual/stdio.texi (String Streams): For open_memstream, elaborate a
+ little on malloc reference.
+
+ * sysdeps/alpha/fpu/s_cacosf.c: Don't use sysdeps/generic/.
+ * sysdeps/alpha/fpu/s_cacoshf.c: Likewise.
+ * sysdeps/alpha/fpu/s_casinf.c: Likewise.
+ * sysdeps/alpha/fpu/s_casinhf.c: Likewise.
+ * sysdeps/alpha/fpu/s_catanf.c: Likewise.
+ * sysdeps/alpha/fpu/s_catanhf.c: Likewise.
+ * sysdeps/alpha/fpu/s_ccosf.c: Likewise.
+ * sysdeps/alpha/fpu/s_ccoshf.c: Likewise.
+ * sysdeps/alpha/fpu/s_cexpf.c: Likewise.
+ * sysdeps/alpha/fpu/s_clog10f.c: Likewise.
+ * sysdeps/alpha/fpu/s_clogf.c: Likewise.
+ * sysdeps/alpha/fpu/s_cpowf.c: Likewise.
+ * sysdeps/alpha/fpu/s_cprojf.c: Likewise.
+ * sysdeps/alpha/fpu/s_csinf.c: Likewise.
+ * sysdeps/alpha/fpu/s_csinhf.c: Likewise.
+ * sysdeps/alpha/fpu/s_csqrtf.c: Likewise.
+ * sysdeps/alpha/fpu/s_ctanf.c: Likewise.
+ * sysdeps/alpha/fpu/s_ctanhf.c: Likewise.
+ * sysdeps/alpha/libc-tls.c: Likewise.
+ * sysdeps/gnu/glob64.c: Likewise.
+ * sysdeps/gnu/updwtmp.c: Likewise.
+ * sysdeps/gnu/utmp_file.c: Likewise.
+ * sysdeps/i386/bzero.c: Likewise.
+ * sysdeps/i386/ffs.c: Likewise.
+ * sysdeps/i386/i686/ffs.c: Likewise.
+ * sysdeps/i386/memset.c: Likewise.
+ * sysdeps/ia64/fpu/printf_fphex.c: Likewise.
+ * sysdeps/ia64/libc-tls.c: Likewise.
+ * sysdeps/ieee754/ldbl-128/printf_fphex.c: Likewise.
+ * sysdeps/m68k/ffs.c: Likewise.
+ * sysdeps/mach/hurd/getdents.c: Likewise.
+ * sysdeps/mach/hurd/init-posix.c: Likewise.
+ * sysdeps/mach/msync.c: Likewise.
+ * sysdeps/mips/libc-tls.c: Likewise.
+ * sysdeps/posix/profil.c: Likewise.
+ * sysdeps/posix/shm_open.c: Likewise.
+ * sysdeps/posix/shm_unlink.c: Likewise.
+ * sysdeps/posix/sprofil.c: Likewise.
+ * sysdeps/powerpc/ffs.c: Likewise.
+ * sysdeps/rs6000/ffs.c: Likewise.
+ * sysdeps/s390/libc-tls.c: Likewise.
+ * sysdeps/unix/sysv/linux/aio_sigqueue.c: Likewise.
+ * sysdeps/unix/sysv/linux/alpha/glob.c: Likewise.
+ * sysdeps/unix/sysv/linux/alpha/wordexp.c: Likewise.
+ * sysdeps/unix/sysv/linux/ftruncate64.c: Likewise.
+ * sysdeps/unix/sysv/linux/gai_sigqueue.c: Likewise.
+ * sysdeps/unix/sysv/linux/i386/getmsg.c: Likewise.
+ * sysdeps/unix/sysv/linux/i386/getresgid.c: Likewise.
+ * sysdeps/unix/sysv/linux/i386/getresuid.c: Likewise.
+ * sysdeps/unix/sysv/linux/i386/lchown.c: Likewise.
+ * sysdeps/unix/sysv/linux/i386/putmsg.c: Likewise.
+ * sysdeps/unix/sysv/linux/i386/readelflib.c: Likewise.
+ * sysdeps/unix/sysv/linux/i386/setresgid.c: Likewise.
+ * sysdeps/unix/sysv/linux/i386/setresuid.c: Likewise.
+ * sysdeps/unix/sysv/linux/ia64/readelflib.c: Likewise.
+ * sysdeps/unix/sysv/linux/mips/ftruncate64.c: Likewise.
+ * sysdeps/unix/sysv/linux/mips/readelflib.c: Likewise.
+ * sysdeps/unix/sysv/linux/mips/truncate64.c: Likewise.
+ * sysdeps/unix/sysv/linux/mq_close.c: Likewise.
+ * sysdeps/unix/sysv/linux/mq_getattr.c: Likewise.
+ * sysdeps/unix/sysv/linux/mq_notify.c: Likewise.
+ * sysdeps/unix/sysv/linux/mq_open.c: Likewise.
+ * sysdeps/unix/sysv/linux/mq_receive.c: Likewise.
+ * sysdeps/unix/sysv/linux/mq_send.c: Likewise.
+ * sysdeps/unix/sysv/linux/mq_unlink.c: Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/ftruncate64.c: Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/truncate64.c: Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/readelflib.c: Likewise.
+ * sysdeps/unix/sysv/linux/s390/readelflib.c: Likewise.
+ * sysdeps/unix/sysv/linux/sched_getaffinity.c: Likewise.
+ * sysdeps/unix/sysv/linux/sched_setaffinity.c: Likewise.
+ * sysdeps/unix/sysv/linux/sigqueue.c: Likewise.
+ * sysdeps/unix/sysv/linux/sigstack.c: Likewise.
+ * sysdeps/unix/sysv/linux/sigtimedwait.c: Likewise.
+ * sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/readelflib.c: Likewise.
+ * sysdeps/unix/sysv/linux/truncate64.c: Likewise.
+ * sysdeps/unix/sysv/linux/vfork.c: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/readelflib.c: Likewise.
+
+ * sysdeps/unix/sysv/linux/Makefile (inhibit-siglist): Removed.
+
+2005-12-13 Ulrich Drepper <drepper@redhat.com>
+
+ * locale/programs/charmap-kw.h: Regenerated with new gperf.
+ * locale/programs/locfile-kw.h: Likewise.
+
+ * Makeconfig (+includes): Look in current directory late.
+ * Makerules: Add rules from rules before the rules for the current
+ directory.
+ * sysdeps/generic/__longjmp.c: Moved to...
+ * setjmp/__longjmp.c: ...here.
+ * sysdeps/generic/_exit.c: Moved to...
+ * posix/_exit.c: ...here.
+ * sysdeps/generic/_strerror.c: Moved to...
+ * string/_strerror.c: ...here.
+ * sysdeps/generic/abort.c: Moved to...
+ * stdlib/abort.c: ...here.
+ * sysdeps/generic/accept.c: Moved to...
+ * socket/accept.c: ...here.
+ * sysdeps/generic/access.c: Moved to...
+ * io/access.c: ...here.
+ * sysdeps/generic/acct.c: Moved to...
+ * misc/acct.c: ...here.
+ * sysdeps/generic/add_n.c: Moved to...
+ * stdlib/add_n.c: ...here.
+ * sysdeps/generic/addmul_1.c: Moved to...
+ * stdlib/addmul_1.c: ...here.
+ * sysdeps/generic/adjtime.c: Moved to...
+ * time/adjtime.c: ...here.
+ * sysdeps/generic/aio_cancel.c: Moved to...
+ * rt/aio_cancel.c: ...here.
+ * sysdeps/generic/aio_fsync.c: Moved to...
+ * rt/aio_fsync.c: ...here.
+ * sysdeps/generic/aio_misc.c: Moved to...
+ * rt/aio_misc.c: ...here.
+ * sysdeps/generic/aio_notify.c: Moved to...
+ * rt/aio_notify.c: ...here.
+ * sysdeps/generic/aio_read.c: Moved to...
+ * rt/aio_read.c: ...here.
+ * sysdeps/generic/aio_read64.c: Moved to...
+ * rt/aio_read64.c: ...here.
+ * sysdeps/generic/aio_sigqueue.c: Moved to...
+ * rt/aio_sigqueue.c: ...here.
+ * sysdeps/generic/aio_suspend.c: Moved to...
+ * rt/aio_suspend.c: ...here.
+ * sysdeps/generic/aio_write.c: Moved to...
+ * rt/aio_write.c: ...here.
+ * sysdeps/generic/aio_write64.c: Moved to...
+ * rt/aio_write64.c: ...here.
+ * sysdeps/generic/alarm.c: Moved to...
+ * posix/alarm.c: ...here.
+ * sysdeps/generic/allocrtsig.c: Moved to...
+ * signal/allocrtsig.c: ...here.
+ * sysdeps/generic/alphasort64.c: Moved to...
+ * dirent/alphasort64.c: ...here.
+ * sysdeps/generic/backtrace.c: Moved to...
+ * debug/backtrace.c: ...here.
+ * sysdeps/generic/backtracesyms.c: Moved to...
+ * debug/backtracesyms.c: ...here.
+ * sysdeps/generic/backtracesymsfd.c: Moved to...
+ * debug/backtracesymsfd.c: ...here.
+ * sysdeps/generic/bb_init_func.c: Moved to...
+ * gmon/bb_init_func.c: ...here.
+ * sysdeps/generic/bcopy.c: Moved to...
+ * string/bcopy.c: ...here.
+ * sysdeps/generic/bind.c: Moved to...
+ * socket/bind.c: ...here.
+ * sysdeps/generic/brdinit.c: Moved to...
+ * bare/brdinit.c: ...here.
+ * sysdeps/generic/brk.c: Moved to...
+ * misc/brk.c: ...here.
+ * sysdeps/generic/bsd-_setjmp.c: Moved to...
+ * setjmp/bsd-_setjmp.c: ...here.
+ * sysdeps/generic/bsd-setjmp.c: Moved to...
+ * setjmp/bsd-setjmp.c: ...here.
+ * sysdeps/generic/bzero.c: Moved to...
+ * string/bzero.c: ...here.
+ * sysdeps/generic/cabsf.c: Moved to...
+ * math/cabsf.c: ...here.
+ * sysdeps/generic/cargf.c: Moved to...
+ * math/cargf.c: ...here.
+ * sysdeps/generic/chdir.c: Moved to...
+ * io/chdir.c: ...here.
+ * sysdeps/generic/check_fds.c: Moved to...
+ * csu/check_fds.c: ...here.
+ * sysdeps/generic/check_pf.c: Moved to...
+ * inet/check_pf.c: ...here.
+ * sysdeps/generic/chflags.c: Moved to...
+ * misc/chflags.c: ...here.
+ * sysdeps/generic/chmod.c: Moved to...
+ * io/chmod.c: ...here.
+ * sysdeps/generic/chown.c: Moved to...
+ * io/chown.c: ...here.
+ * sysdeps/generic/chroot.c: Moved to...
+ * misc/chroot.c: ...here.
+ * sysdeps/generic/cimagf.c: Moved to...
+ * math/cimagf.c: ...here.
+ * sysdeps/generic/clock.c: Moved to...
+ * time/clock.c: ...here.
+ * sysdeps/generic/clock_getcpuclockid.c: Moved to...
+ * rt/clock_getcpuclockid.c: ...here.
+ * sysdeps/generic/clock_getres.c: Moved to...
+ * rt/clock_getres.c: ...here.
+ * sysdeps/generic/clock_gettime.c: Moved to...
+ * rt/clock_gettime.c: ...here.
+ * sysdeps/generic/clock_nanosleep.c: Moved to...
+ * rt/clock_nanosleep.c: ...here.
+ * sysdeps/generic/clock_settime.c: Moved to...
+ * rt/clock_settime.c: ...here.
+ * sysdeps/generic/close.c: Moved to...
+ * io/close.c: ...here.
+ * sysdeps/generic/closedir.c: Moved to...
+ * dirent/closedir.c: ...here.
+ * sysdeps/generic/cmp.c: Moved to...
+ * stdlib/cmp.c: ...here.
+ * sysdeps/generic/conjf.c: Moved to...
+ * math/conjf.c: ...here.
+ * sysdeps/generic/connect.c: Moved to...
+ * socket/connect.c: ...here.
+ * sysdeps/generic/console.c: Moved to...
+ * bare/console.c: ...here.
+ * sysdeps/generic/crealf.c: Moved to...
+ * math/crealf.c: ...here.
+ * sysdeps/generic/creat.c: Moved to...
+ * io/creat.c: ...here.
+ * sysdeps/generic/creat64.c: Moved to...
+ * io/creat64.c: ...here.
+ * sysdeps/generic/ctermid.c: Moved to...
+ * stdio-common/ctermid.c: ...here.
+ * sysdeps/generic/cuserid.c: Moved to...
+ * stdio-common/cuserid.c: ...here.
+ * sysdeps/generic/dbl2mpn.c: Moved to...
+ * stdlib/dbl2mpn.c: ...here.
+ * sysdeps/generic/dirfd.c: Moved to...
+ * dirent/dirfd.c: ...here.
+ * sysdeps/generic/div.c: Moved to...
+ * stdlib/div.c: ...here.
+ * sysdeps/generic/divmod_1.c: Moved to...
+ * stdlib/divmod_1.c: ...here.
+ * sysdeps/generic/divrem.c: Moved to...
+ * stdlib/divrem.c: ...here.
+ * sysdeps/generic/dl-brk.c: Moved to...
+ * elf/dl-brk.c: ...here.
+ * sysdeps/generic/dl-cache.c: Moved to...
+ * elf/dl-cache.c: ...here.
+ * sysdeps/generic/dl-environ.c: Moved to...
+ * elf/dl-environ.c: ...here.
+ * sysdeps/generic/dl-execstack.c: Moved to...
+ * elf/dl-execstack.c: ...here.
+ * sysdeps/generic/dl-fptr.c: Moved to...
+ * elf/dl-fptr.c: ...here.
+ * sysdeps/generic/dl-origin.c: Moved to...
+ * elf/dl-origin.c: ...here.
+ * sysdeps/generic/dl-sbrk.c: Moved to...
+ * elf/dl-sbrk.c: ...here.
+ * sysdeps/generic/dl-symaddr.c: Moved to...
+ * elf/dl-symaddr.c: ...here.
+ * sysdeps/generic/dl-sysdep.c: Moved to...
+ * elf/dl-sysdep.c: ...here.
+ * sysdeps/generic/dl-tls.c: Moved to...
+ * elf/dl-tls.c: ...here.
+ * sysdeps/generic/dl-trampoline.c: Moved to...
+ * elf/dl-trampoline.c: ...here.
+ * sysdeps/generic/dup.c: Moved to...
+ * io/dup.c: ...here.
+ * sysdeps/generic/dup2.c: Moved to...
+ * io/dup2.c: ...here.
+ * sysdeps/generic/e_acoshl.c: Moved to...
+ * math/e_acoshl.c: ...here.
+ * sysdeps/generic/e_acosl.c: Moved to...
+ * math/e_acosl.c: ...here.
+ * sysdeps/generic/e_asinl.c: Moved to...
+ * math/e_asinl.c: ...here.
+ * sysdeps/generic/e_atan2l.c: Moved to...
+ * math/e_atan2l.c: ...here.
+ * sysdeps/generic/e_atanhl.c: Moved to...
+ * math/e_atanhl.c: ...here.
+ * sysdeps/generic/e_coshl.c: Moved to...
+ * math/e_coshl.c: ...here.
+ * sysdeps/generic/e_exp10.c: Moved to...
+ * math/e_exp10.c: ...here.
+ * sysdeps/generic/e_exp10f.c: Moved to...
+ * math/e_exp10f.c: ...here.
+ * sysdeps/generic/e_exp10l.c: Moved to...
+ * math/e_exp10l.c: ...here.
+ * sysdeps/generic/e_exp2l.c: Moved to...
+ * math/e_exp2l.c: ...here.
+ * sysdeps/generic/e_expl.c: Moved to...
+ * math/e_expl.c: ...here.
+ * sysdeps/generic/e_fmodl.c: Moved to...
+ * math/e_fmodl.c: ...here.
+ * sysdeps/generic/e_gammal_r.c: Moved to...
+ * math/e_gammal_r.c: ...here.
+ * sysdeps/generic/e_hypotl.c: Moved to...
+ * math/e_hypotl.c: ...here.
+ * sysdeps/generic/e_j0l.c: Moved to...
+ * math/e_j0l.c: ...here.
+ * sysdeps/generic/e_j1l.c: Moved to...
+ * math/e_j1l.c: ...here.
+ * sysdeps/generic/e_jnl.c: Moved to...
+ * math/e_jnl.c: ...here.
+ * sysdeps/generic/e_lgammal_r.c: Moved to...
+ * math/e_lgammal_r.c: ...here.
+ * sysdeps/generic/e_log10l.c: Moved to...
+ * math/e_log10l.c: ...here.
+ * sysdeps/generic/e_log2l.c: Moved to...
+ * math/e_log2l.c: ...here.
+ * sysdeps/generic/e_logl.c: Moved to...
+ * math/e_logl.c: ...here.
+ * sysdeps/generic/e_powl.c: Moved to...
+ * math/e_powl.c: ...here.
+ * sysdeps/generic/e_rem_pio2l.c: Moved to...
+ * math/e_rem_pio2l.c: ...here.
+ * sysdeps/generic/e_scalb.c: Moved to...
+ * math/e_scalb.c: ...here.
+ * sysdeps/generic/e_scalbf.c: Moved to...
+ * math/e_scalbf.c: ...here.
+ * sysdeps/generic/e_scalbl.c: Moved to...
+ * math/e_scalbl.c: ...here.
+ * sysdeps/generic/e_sinhl.c: Moved to...
+ * math/e_sinhl.c: ...here.
+ * sysdeps/generic/e_sqrtl.c: Moved to...
+ * math/e_sqrtl.c: ...here.
+ * sysdeps/generic/enbl-secure.c: Moved to...
+ * elf/enbl-secure.c: ...here.
+ * sysdeps/generic/endutxent.c: Moved to...
+ * login/endutxent.c: ...here.
+ * sysdeps/generic/environ.c: Moved to...
+ * posix/environ.c: ...here.
+ * sysdeps/generic/errlist.c: Moved to...
+ * stdio-common/errlist.c: ...here.
+ * sysdeps/generic/errno-loc.c: Moved to...
+ * csu/errno-loc.c: ...here.
+ * sysdeps/generic/errno-loc.c: Moved to...
+ * csu/errno-loc.c: ...here.
+ * sysdeps/generic/errno.c: Moved to...
+ * csu/errno.c: ...here.
+ * sysdeps/generic/euidaccess.c: Moved to...
+ * io/euidaccess.c: ...here.
+ * sysdeps/generic/exc2signal.c: Moved to...
+ * hurd/exc2signal.c: ...here.
+ * sysdeps/generic/execve.c: Moved to...
+ * posix/execve.c: ...here.
+ * sysdeps/generic/fattach.c: Moved to...
+ * streams/fattach.c: ...here.
+ * sysdeps/generic/fchdir.c: Moved to...
+ * io/fchdir.c: ...here.
+ * sysdeps/generic/fchflags.c: Moved to...
+ * misc/fchflags.c: ...here.
+ * sysdeps/generic/fchmod.c: Moved to...
+ * io/fchmod.c: ...here.
+ * sysdeps/generic/fchown.c: Moved to...
+ * io/fchown.c: ...here.
+ * sysdeps/generic/fchownat.c: Moved to...
+ * io/fchownat.c: ...here.
+ * sysdeps/generic/fclrexcpt.c: Moved to...
+ * math/fclrexcpt.c: ...here.
+ * sysdeps/generic/fcntl.c: Moved to...
+ * io/fcntl.c: ...here.
+ * sysdeps/generic/fdatasync.c: Moved to...
+ * misc/fdatasync.c: ...here.
+ * sysdeps/generic/fdetach.c: Moved to...
+ * streams/fdetach.c: ...here.
+ * sysdeps/generic/fdopendir.c: Moved to...
+ * dirent/fdopendir.c: ...here.
+ * sysdeps/generic/fedisblxcpt.c: Moved to...
+ * math/fedisblxcpt.c: ...here.
+ * sysdeps/generic/feenablxcpt.c: Moved to...
+ * math/feenablxcpt.c: ...here.
+ * sysdeps/generic/fegetenv.c: Moved to...
+ * math/fegetenv.c: ...here.
+ * sysdeps/generic/fegetexcept.c: Moved to...
+ * math/fegetexcept.c: ...here.
+ * sysdeps/generic/fegetround.c: Moved to...
+ * math/fegetround.c: ...here.
+ * sysdeps/generic/feholdexcpt.c: Moved to...
+ * math/feholdexcpt.c: ...here.
+ * sysdeps/generic/fesetenv.c: Moved to...
+ * math/fesetenv.c: ...here.
+ * sysdeps/generic/fesetround.c: Moved to...
+ * math/fesetround.c: ...here.
+ * sysdeps/generic/feupdateenv.c: Moved to...
+ * math/feupdateenv.c: ...here.
+ * sysdeps/generic/fexecve.c: Moved to...
+ * posix/fexecve.c: ...here.
+ * sysdeps/generic/ffs.c: Moved to...
+ * string/ffs.c: ...here.
+ * sysdeps/generic/ffsll.c: Moved to...
+ * string/ffsll.c: ...here.
+ * sysdeps/generic/fgetexcptflg.c: Moved to...
+ * math/fgetexcptflg.c: ...here.
+ * sysdeps/generic/fgetxattr.c: Moved to...
+ * misc/fgetxattr.c: ...here.
+ * sysdeps/generic/flistxattr.c: Moved to...
+ * misc/flistxattr.c: ...here.
+ * sysdeps/generic/flock.c: Moved to...
+ * io/flock.c: ...here.
+ * sysdeps/generic/flockfile.c: Moved to...
+ * stdio-common/flockfile.c: ...here.
+ * sysdeps/generic/fork.c: Moved to...
+ * posix/fork.c: ...here.
+ * sysdeps/generic/fpathconf.c: Moved to...
+ * posix/fpathconf.c: ...here.
+ * sysdeps/generic/fpu_control.c: Moved to...
+ * math/fpu_control.c: ...here.
+ * sysdeps/generic/fraiseexcpt.c: Moved to...
+ * math/fraiseexcpt.c: ...here.
+ * sysdeps/generic/fremovexattr.c: Moved to...
+ * misc/fremovexattr.c: ...here.
+ * sysdeps/generic/fsetexcptflg.c: Moved to...
+ * math/fsetexcptflg.c: ...here.
+ * sysdeps/generic/fsetxattr.c: Moved to...
+ * misc/fsetxattr.c: ...here.
+ * sysdeps/generic/fstatfs.c: Moved to...
+ * io/fstatfs.c: ...here.
+ * sysdeps/generic/fstatfs64.c: Moved to...
+ * io/fstatfs64.c: ...here.
+ * sysdeps/generic/fstatvfs.c: Moved to...
+ * io/fstatvfs.c: ...here.
+ * sysdeps/generic/fstatvfs64.c: Moved to...
+ * io/fstatvfs64.c: ...here.
+ * sysdeps/generic/fsync.c: Moved to...
+ * misc/fsync.c: ...here.
+ * sysdeps/generic/ftestexcept.c: Moved to...
+ * math/ftestexcept.c: ...here.
+ * sysdeps/generic/ftime.c: Moved to...
+ * time/ftime.c: ...here.
+ * sysdeps/generic/ftruncate.c: Moved to...
+ * misc/ftruncate.c: ...here.
+ * sysdeps/generic/ftruncate64.c: Moved to...
+ * misc/ftruncate64.c: ...here.
+ * sysdeps/generic/ftrylockfile.c: Moved to...
+ * stdio-common/ftrylockfile.c: ...here.
+ * sysdeps/generic/funlockfile.c: Moved to...
+ * stdio-common/funlockfile.c: ...here.
+ * sysdeps/generic/futimes.c: Moved to...
+ * misc/futimes.c: ...here.
+ * sysdeps/generic/futimesat.c: Moved to...
+ * misc/futimesat.c: ...here.
+ * sysdeps/generic/fxstat.c: Moved to...
+ * io/fxstat.c: ...here.
+ * sysdeps/generic/fxstat64.c: Moved to...
+ * io/fxstat64.c: ...here.
+ * sysdeps/generic/fxstatat.c: Moved to...
+ * io/fxstatat.c: ...here.
+ * sysdeps/generic/fxstatat64.c: Moved to...
+ * io/fxstatat64.c: ...here.
+ * sysdeps/generic/gai_sigqueue.c: Moved to...
+ * resolv/gai_sigqueue.c: ...here.
+ * sysdeps/generic/gai_strerror.c: Moved to...
+ * posix/gai_strerror.c: ...here.
+ * sysdeps/generic/get_clockfreq.c: Moved to...
+ * rt/get_clockfreq.c: ...here.
+ * sysdeps/generic/getaddrinfo.c: Moved to...
+ * posix/getaddrinfo.c: ...here.
+ * sysdeps/generic/getclktck.c: Moved to...
+ * misc/getclktck.c: ...here.
+ * sysdeps/generic/getcontext.c: Moved to...
+ * stdlib/getcontext.c: ...here.
+ * sysdeps/generic/getcwd.c: Moved to...
+ * io/getcwd.c: ...here.
+ * sysdeps/generic/getdents.c: Moved to...
+ * dirent/getdents.c: ...here.
+ * sysdeps/generic/getdents64.c: Moved to...
+ * dirent/getdents64.c: ...here.
+ * sysdeps/generic/getdomain.c: Moved to...
+ * misc/getdomain.c: ...here.
+ * sysdeps/generic/getdtsz.c: Moved to...
+ * misc/getdtsz.c: ...here.
+ * sysdeps/generic/getegid.c: Moved to...
+ * posix/getegid.c: ...here.
+ * sysdeps/generic/getenv.c: Moved to...
+ * stdlib/getenv.c: ...here.
+ * sysdeps/generic/geteuid.c: Moved to...
+ * posix/geteuid.c: ...here.
+ * sysdeps/generic/getgid.c: Moved to...
+ * posix/getgid.c: ...here.
+ * sysdeps/generic/getgroups.c: Moved to...
+ * posix/getgroups.c: ...here.
+ * sysdeps/generic/gethostid.c: Moved to...
+ * misc/gethostid.c: ...here.
+ * sysdeps/generic/gethostname.c: Moved to...
+ * misc/gethostname.c: ...here.
+ * sysdeps/generic/getipv4sourcefilter.c: Moved to...
+ * inet/getipv4sourcefilter.c: ...here.
+ * sysdeps/generic/getitimer.c: Moved to...
+ * time/getitimer.c: ...here.
+ * sysdeps/generic/getloadavg.c: Moved to...
+ * misc/getloadavg.c: ...here.
+ * sysdeps/generic/getlogin.c: Moved to...
+ * posix/getlogin.c: ...here.
+ * sysdeps/generic/getlogin_r.c: Moved to...
+ * posix/getlogin_r.c: ...here.
+ * sysdeps/generic/getmsg.c: Moved to...
+ * streams/getmsg.c: ...here.
+ * sysdeps/generic/getpagesize.c: Moved to...
+ * misc/getpagesize.c: ...here.
+ * sysdeps/generic/getpeername.c: Moved to...
+ * socket/getpeername.c: ...here.
+ * sysdeps/generic/getpgid.c: Moved to...
+ * posix/getpgid.c: ...here.
+ * sysdeps/generic/getpgrp.c: Moved to...
+ * posix/getpgrp.c: ...here.
+ * sysdeps/generic/getpid.c: Moved to...
+ * posix/getpid.c: ...here.
+ * sysdeps/generic/getpmsg.c: Moved to...
+ * streams/getpmsg.c: ...here.
+ * sysdeps/generic/getppid.c: Moved to...
+ * posix/getppid.c: ...here.
+ * sysdeps/generic/getpriority.c: Moved to...
+ * resource/getpriority.c: ...here.
+ * sysdeps/generic/getpt.c: Moved to...
+ * login/getpt.c: ...here.
+ * sysdeps/generic/getresgid.c: Moved to...
+ * posix/getresgid.c: ...here.
+ * sysdeps/generic/getresuid.c: Moved to...
+ * posix/getresuid.c: ...here.
+ * sysdeps/generic/getrlimit.c: Moved to...
+ * resource/getrlimit.c: ...here.
+ * sysdeps/generic/getrlimit64.c: Moved to...
+ * resource/getrlimit64.c: ...here.
+ * sysdeps/generic/getrusage.c: Moved to...
+ * resource/getrusage.c: ...here.
+ * sysdeps/generic/getsid.c: Moved to...
+ * posix/getsid.c: ...here.
+ * sysdeps/generic/getsockname.c: Moved to...
+ * socket/getsockname.c: ...here.
+ * sysdeps/generic/getsockopt.c: Moved to...
+ * socket/getsockopt.c: ...here.
+ * sysdeps/generic/getsourcefilter.c: Moved to...
+ * inet/getsourcefilter.c: ...here.
+ * sysdeps/generic/getsysstats.c: Moved to...
+ * misc/getsysstats.c: ...here.
+ * sysdeps/generic/gettimeofday.c: Moved to...
+ * time/gettimeofday.c: ...here.
+ * sysdeps/generic/getuid.c: Moved to...
+ * posix/getuid.c: ...here.
+ * sysdeps/generic/getutmp.c: Moved to...
+ * login/getutmp.c: ...here.
+ * sysdeps/generic/getutmpx.c: Moved to...
+ * login/getutmpx.c: ...here.
+ * sysdeps/generic/getutxent.c: Moved to...
+ * login/getutxent.c: ...here.
+ * sysdeps/generic/getutxid.c: Moved to...
+ * login/getutxid.c: ...here.
+ * sysdeps/generic/getutxline.c: Moved to...
+ * login/getutxline.c: ...here.
+ * sysdeps/generic/getxattr.c: Moved to...
+ * misc/getxattr.c: ...here.
+ * sysdeps/generic/glob.c: Moved to...
+ * posix/glob.c: ...here.
+ * sysdeps/generic/glob64.c: Moved to...
+ * posix/glob64.c: ...here.
+ * sysdeps/generic/grantpt.c: Moved to...
+ * login/grantpt.c: ...here.
+ * sysdeps/generic/group_member.c: Moved to...
+ * posix/group_member.c: ...here.
+ * sysdeps/generic/gtty.c: Moved to...
+ * misc/gtty.c: ...here.
+ * sysdeps/generic/herrno-loc.c: Moved to...
+ * inet/herrno-loc.c: ...here.
+ * sysdeps/generic/htonl.c: Moved to...
+ * inet/htonl.c: ...here.
+ * sysdeps/generic/htons.c: Moved to...
+ * inet/htons.c: ...here.
+ * sysdeps/generic/if_index.c: Moved to...
+ * inet/if_index.c: ...here.
+ * sysdeps/generic/ifaddrs.c: Moved to...
+ * inet/ifaddrs.c: ...here.
+ * sysdeps/generic/ifreq.c: Moved to...
+ * inet/ifreq.c: ...here.
+ * sysdeps/generic/init-first.c: Moved to...
+ * csu/init-first.c: ...here.
+ * sysdeps/generic/init-posix.c: Moved to...
+ * posix/init-posix.c: ...here.
+ * sysdeps/generic/inlines.c: Moved to...
+ * stdlib/inlines.c: ...here.
+ * sysdeps/generic/ioctl.c: Moved to...
+ * misc/ioctl.c: ...here.
+ * sysdeps/generic/isastream.c: Moved to...
+ * streams/isastream.c: ...here.
+ * sysdeps/generic/isatty.c: Moved to...
+ * io/isatty.c: ...here.
+ * sysdeps/generic/isfdtype.c: Moved to...
+ * socket/isfdtype.c: ...here.
+ * sysdeps/generic/jmp-unwind.c: Moved to...
+ * setjmp/jmp-unwind.c: ...here.
+ * sysdeps/generic/k_cosl.c: Moved to...
+ * math/k_cosl.c: ...here.
+ * sysdeps/generic/k_rem_pio2l.c: Moved to...
+ * math/k_rem_pio2l.c: ...here.
+ * sysdeps/generic/k_sincosl.c: Moved to...
+ * math/k_sincosl.c: ...here.
+ * sysdeps/generic/k_sinl.c: Moved to...
+ * math/k_sinl.c: ...here.
+ * sysdeps/generic/k_tanl.c: Moved to...
+ * math/k_tanl.c: ...here.
+ * sysdeps/generic/kill.c: Moved to...
+ * signal/kill.c: ...here.
+ * sysdeps/generic/killpg.c: Moved to...
+ * signal/killpg.c: ...here.
+ * sysdeps/generic/labs.c: Moved to...
+ * stdlib/labs.c: ...here.
+ * sysdeps/generic/lchmod.c: Moved to...
+ * io/lchmod.c: ...here.
+ * sysdeps/generic/lchown.c: Moved to...
+ * io/lchown.c: ...here.
+ * sysdeps/generic/ldbl2mpn.c: Moved to...
+ * stdlib/ldbl2mpn.c: ...here.
+ * sysdeps/generic/ldiv.c: Moved to...
+ * stdlib/ldiv.c: ...here.
+ * sysdeps/generic/lgetxattr.c: Moved to...
+ * misc/lgetxattr.c: ...here.
+ * sysdeps/generic/libc-start.c: Moved to...
+ * csu/libc-start.c: ...here.
+ * sysdeps/generic/libc-tls.c: Moved to...
+ * csu/libc-tls.c: ...here.
+ * sysdeps/generic/libc_fatal.c: Moved to...
+ * libio/libc_fatal.c: ...here.
+ * sysdeps/generic/link.c: Moved to...
+ * io/link.c: ...here.
+ * sysdeps/generic/lio_listio.c: Moved to...
+ * rt/lio_listio.c: ...here.
+ * sysdeps/generic/lio_listio64.c: Moved to...
+ * rt/lio_listio64.c: ...here.
+ * sysdeps/generic/listen.c: Moved to...
+ * socket/listen.c: ...here.
+ * sysdeps/generic/listxattr.c: Moved to...
+ * misc/listxattr.c: ...here.
+ * sysdeps/generic/llabs.c: Moved to...
+ * stdlib/llabs.c: ...here.
+ * sysdeps/generic/lldiv.c: Moved to...
+ * stdlib/lldiv.c: ...here.
+ * sysdeps/generic/llistxattr.c: Moved to...
+ * misc/llistxattr.c: ...here.
+ * sysdeps/generic/lockf.c: Moved to...
+ * io/lockf.c: ...here.
+ * sysdeps/generic/lockf64.c: Moved to...
+ * io/lockf64.c: ...here.
+ * sysdeps/generic/longjmp-ts.c: Moved to...
+ * hurd/longjmp-ts.c: ...here.
+ * sysdeps/generic/longjmp.c: Moved to...
+ * setjmp/longjmp.c: ...here.
+ * sysdeps/generic/lremovexattr.c: Moved to...
+ * misc/lremovexattr.c: ...here.
+ * sysdeps/generic/lseek.c: Moved to...
+ * misc/lseek.c: ...here.
+ * sysdeps/generic/lseek64.c: Moved to...
+ * io/lseek64.c: ...here.
+ * sysdeps/generic/lsetxattr.c: Moved to...
+ * misc/lsetxattr.c: ...here.
+ * sysdeps/generic/lshift.c: Moved to...
+ * stdlib/lshift.c: ...here.
+ * sysdeps/generic/lutimes.c: Moved to...
+ * misc/lutimes.c: ...here.
+ * sysdeps/generic/lxstat.c: Moved to...
+ * io/lxstat.c: ...here.
+ * sysdeps/generic/lxstat64.c: Moved to...
+ * io/lxstat64.c: ...here.
+ * sysdeps/generic/madvise.c: Moved to...
+ * misc/madvise.c: ...here.
+ * sysdeps/generic/makecontext.c: Moved to...
+ * stdlib/makecontext.c: ...here.
+ * sysdeps/generic/memccpy.c: Moved to...
+ * string/memccpy.c: ...here.
+ * sysdeps/generic/memchr.c: Moved to...
+ * string/memchr.c: ...here.
+ * sysdeps/generic/memcmp.c: Moved to...
+ * string/memcmp.c: ...here.
+ * sysdeps/generic/memcpy.c: Moved to...
+ * string/memcpy.c: ...here.
+ * sysdeps/generic/memcpy_chk.c: Moved to...
+ * debug/memcpy_chk.c: ...here.
+ * sysdeps/generic/memmem.c: Moved to...
+ * string/memmem.c: ...here.
+ * sysdeps/generic/memmove.c: Moved to...
+ * string/memmove.c: ...here.
+ * sysdeps/generic/memmove_chk.c: Moved to...
+ * debug/memmove_chk.c: ...here.
+ * sysdeps/generic/mempcpy.c: Moved to...
+ * string/mempcpy.c: ...here.
+ * sysdeps/generic/mempcpy_chk.c: Moved to...
+ * debug/mempcpy_chk.c: ...here.
+ * sysdeps/generic/memrchr.c: Moved to...
+ * string/memrchr.c: ...here.
+ * sysdeps/generic/memset.c: Moved to...
+ * string/memset.c: ...here.
+ * sysdeps/generic/memset_chk.c: Moved to...
+ * debug/memset_chk.c: ...here.
+ * sysdeps/generic/mig-reply.c: Moved to...
+ * mach/mig-reply.c: ...here.
+ * sysdeps/generic/mincore.c: Moved to...
+ * misc/mincore.c: ...here.
+ * sysdeps/generic/mkdir.c: Moved to...
+ * io/mkdir.c: ...here.
+ * sysdeps/generic/mkdirat.c: Moved to...
+ * io/mkdirat.c: ...here.
+ * sysdeps/generic/mkfifo.c: Moved to...
+ * io/mkfifo.c: ...here.
+ * sysdeps/generic/mkfifoat.c: Moved to...
+ * io/mkfifoat.c: ...here.
+ * sysdeps/generic/mknod.c: Moved to...
+ * io/mknod.c: ...here.
+ * sysdeps/generic/mknodat.c: Moved to...
+ * io/mknodat.c: ...here.
+ * sysdeps/generic/mlock.c: Moved to...
+ * misc/mlock.c: ...here.
+ * sysdeps/generic/mlockall.c: Moved to...
+ * misc/mlockall.c: ...here.
+ * sysdeps/generic/mmap.c: Moved to...
+ * misc/mmap.c: ...here.
+ * sysdeps/generic/mmap64.c: Moved to...
+ * misc/mmap64.c: ...here.
+ * sysdeps/generic/mod_1.c: Moved to...
+ * stdlib/mod_1.c: ...here.
+ * sysdeps/generic/morecore.c: Moved to...
+ * malloc/morecore.c: ...here.
+ * sysdeps/generic/mp_clz_tab.c: Moved to...
+ * stdlib/mp_clz_tab.c: ...here.
+ * sysdeps/generic/mpn2dbl.c: Moved to...
+ * stdlib/mpn2dbl.c: ...here.
+ * sysdeps/generic/mpn2flt.c: Moved to...
+ * stdlib/mpn2flt.c: ...here.
+ * sysdeps/generic/mpn2ldbl.c: Moved to...
+ * stdlib/mpn2ldbl.c: ...here.
+ * sysdeps/generic/mprotect.c: Moved to...
+ * misc/mprotect.c: ...here.
+ * sysdeps/generic/mq_close.c: Moved to...
+ * rt/mq_close.c: ...here.
+ * sysdeps/generic/mq_getattr.c: Moved to...
+ * rt/mq_getattr.c: ...here.
+ * sysdeps/generic/mq_notify.c: Moved to...
+ * rt/mq_notify.c: ...here.
+ * sysdeps/generic/mq_open.c: Moved to...
+ * rt/mq_open.c: ...here.
+ * sysdeps/generic/mq_receive.c: Moved to...
+ * rt/mq_receive.c: ...here.
+ * sysdeps/generic/mq_send.c: Moved to...
+ * rt/mq_send.c: ...here.
+ * sysdeps/generic/mq_setattr.c: Moved to...
+ * rt/mq_setattr.c: ...here.
+ * sysdeps/generic/mq_timedreceive.c: Moved to...
+ * rt/mq_timedreceive.c: ...here.
+ * sysdeps/generic/mq_timedsend.c: Moved to...
+ * rt/mq_timedsend.c: ...here.
+ * sysdeps/generic/mq_unlink.c: Moved to...
+ * rt/mq_unlink.c: ...here.
+ * sysdeps/generic/msgctl.c: Moved to...
+ * sysvipc/msgctl.c: ...here.
+ * sysdeps/generic/msgget.c: Moved to...
+ * sysvipc/msgget.c: ...here.
+ * sysdeps/generic/msgrcv.c: Moved to...
+ * sysvipc/msgrcv.c: ...here.
+ * sysdeps/generic/msgsnd.c: Moved to...
+ * sysvipc/msgsnd.c: ...here.
+ * sysdeps/generic/msync.c: Moved to...
+ * misc/msync.c: ...here.
+ * sysdeps/generic/mul.c: Moved to...
+ * stdlib/mul.c: ...here.
+ * sysdeps/generic/mul_1.c: Moved to...
+ * stdlib/mul_1.c: ...here.
+ * sysdeps/generic/mul_n.c: Moved to...
+ * stdlib/mul_n.c: ...here.
+ * sysdeps/generic/munlock.c: Moved to...
+ * misc/munlock.c: ...here.
+ * sysdeps/generic/munlockall.c: Moved to...
+ * misc/munlockall.c: ...here.
+ * sysdeps/generic/munmap.c: Moved to...
+ * misc/munmap.c: ...here.
+ * sysdeps/generic/nanosleep.c: Moved to...
+ * posix/nanosleep.c: ...here.
+ * sysdeps/generic/nice.c: Moved to...
+ * resource/nice.c: ...here.
+ * sysdeps/generic/nscd_setup_thread.c: Moved to...
+ * nscd/nscd_setup_thread.c: ...here.
+ * sysdeps/generic/open.c: Moved to...
+ * io/open.c: ...here.
+ * sysdeps/generic/open64.c: Moved to...
+ * io/open64.c: ...here.
+ * sysdeps/generic/openat.c: Moved to...
+ * io/openat.c: ...here.
+ * sysdeps/generic/openat64.c: Moved to...
+ * io/openat64.c: ...here.
+ * sysdeps/generic/opendir.c: Moved to...
+ * dirent/opendir.c: ...here.
+ * sysdeps/generic/opensock.c: Moved to...
+ * socket/opensock.c: ...here.
+ * sysdeps/generic/pathconf.c: Moved to...
+ * posix/pathconf.c: ...here.
+ * sysdeps/generic/pause.c: Moved to...
+ * posix/pause.c: ...here.
+ * sysdeps/generic/pipe.c: Moved to...
+ * io/pipe.c: ...here.
+ * sysdeps/generic/poll.c: Moved to...
+ * io/poll.c: ...here.
+ * sysdeps/generic/posix_fadvise.c: Moved to...
+ * io/posix_fadvise.c: ...here.
+ * sysdeps/generic/posix_fadvise64.c: Moved to...
+ * io/posix_fadvise64.c: ...here.
+ * sysdeps/generic/posix_fallocate.c: Moved to...
+ * io/posix_fallocate.c: ...here.
+ * sysdeps/generic/posix_fallocate64.c: Moved to...
+ * io/posix_fallocate64.c: ...here.
+ * sysdeps/generic/posix_madvise.c: Moved to...
+ * posix/posix_madvise.c: ...here.
+ * sysdeps/generic/pread.c: Moved to...
+ * posix/pread.c: ...here.
+ * sysdeps/generic/pread64.c: Moved to...
+ * posix/pread64.c: ...here.
+ * sysdeps/generic/printf_fphex.c: Moved to...
+ * stdio-common/printf_fphex.c: ...here.
+ * sysdeps/generic/prof-freq.c: Moved to...
+ * gmon/prof-freq.c: ...here.
+ * sysdeps/generic/profil.c: Moved to...
+ * gmon/profil.c: ...here.
+ * sysdeps/generic/pselect.c: Moved to...
+ * misc/pselect.c: ...here.
+ * sysdeps/generic/ptrace.c: Moved to...
+ * misc/ptrace.c: ...here.
+ * sysdeps/generic/ptsname.c: Moved to...
+ * login/ptsname.c: ...here.
+ * sysdeps/generic/putenv.c: Moved to...
+ * stdlib/putenv.c: ...here.
+ * sysdeps/generic/putmsg.c: Moved to...
+ * streams/putmsg.c: ...here.
+ * sysdeps/generic/putpmsg.c: Moved to...
+ * streams/putpmsg.c: ...here.
+ * sysdeps/generic/pututxline.c: Moved to...
+ * login/pututxline.c: ...here.
+ * sysdeps/generic/pwrite.c: Moved to...
+ * posix/pwrite.c: ...here.
+ * sysdeps/generic/pwrite64.c: Moved to...
+ * posix/pwrite64.c: ...here.
+ * sysdeps/generic/raise.c: Moved to...
+ * signal/raise.c: ...here.
+ * sysdeps/generic/rawmemchr.c: Moved to...
+ * string/rawmemchr.c: ...here.
+ * sysdeps/generic/read.c: Moved to...
+ * io/read.c: ...here.
+ * sysdeps/generic/readdir.c: Moved to...
+ * dirent/readdir.c: ...here.
+ * sysdeps/generic/readdir64.c: Moved to...
+ * dirent/readdir64.c: ...here.
+ * sysdeps/generic/readdir64_r.c: Moved to...
+ * dirent/readdir64_r.c: ...here.
+ * sysdeps/generic/readdir_r.c: Moved to...
+ * dirent/readdir_r.c: ...here.
+ * sysdeps/generic/readelflib.c: Moved to...
+ * elf/readelflib.c: ...here.
+ * sysdeps/generic/readlink.c: Moved to...
+ * io/readlink.c: ...here.
+ * sysdeps/generic/readonly-area.c: Moved to...
+ * debug/readonly-area.c: ...here.
+ * sysdeps/generic/readv.c: Moved to...
+ * misc/readv.c: ...here.
+ * sysdeps/generic/reboot.c: Moved to...
+ * misc/reboot.c: ...here.
+ * sysdeps/generic/recv.c: Moved to...
+ * socket/recv.c: ...here.
+ * sysdeps/generic/recvfrom.c: Moved to...
+ * socket/recvfrom.c: ...here.
+ * sysdeps/generic/recvmsg.c: Moved to...
+ * socket/recvmsg.c: ...here.
+ * sysdeps/generic/remap_file_pages.c: Moved to...
+ * misc/remap_file_pages.c: ...here.
+ * sysdeps/generic/remove.c: Moved to...
+ * stdio-common/remove.c: ...here.
+ * sysdeps/generic/removexattr.c: Moved to...
+ * misc/removexattr.c: ...here.
+ * sysdeps/generic/rename.c: Moved to...
+ * stdio-common/rename.c: ...here.
+ * sysdeps/generic/renameat.c: Moved to...
+ * stdio-common/renameat.c: ...here.
+ * sysdeps/generic/res-state.c: Moved to...
+ * resolv/res-state.c: ...here.
+ * sysdeps/generic/revoke.c: Moved to...
+ * misc/revoke.c: ...here.
+ * sysdeps/generic/rewinddir.c: Moved to...
+ * dirent/rewinddir.c: ...here.
+ * sysdeps/generic/rmdir.c: Moved to...
+ * io/rmdir.c: ...here.
+ * sysdeps/generic/rshift.c: Moved to...
+ * stdlib/rshift.c: ...here.
+ * sysdeps/generic/s_asinhl.c: Moved to...
+ * math/s_asinhl.c: ...here.
+ * sysdeps/generic/s_atanl.c: Moved to...
+ * math/s_atanl.c: ...here.
+ * sysdeps/generic/s_cacos.c: Moved to...
+ * math/s_cacos.c: ...here.
+ * sysdeps/generic/s_cacosf.c: Moved to...
+ * math/s_cacosf.c: ...here.
+ * sysdeps/generic/s_cacosh.c: Moved to...
+ * math/s_cacosh.c: ...here.
+ * sysdeps/generic/s_cacoshf.c: Moved to...
+ * math/s_cacoshf.c: ...here.
+ * sysdeps/generic/s_cacoshl.c: Moved to...
+ * math/s_cacoshl.c: ...here.
+ * sysdeps/generic/s_cacosl.c: Moved to...
+ * math/s_cacosl.c: ...here.
+ * sysdeps/generic/s_casin.c: Moved to...
+ * math/s_casin.c: ...here.
+ * sysdeps/generic/s_casinf.c: Moved to...
+ * math/s_casinf.c: ...here.
+ * sysdeps/generic/s_casinh.c: Moved to...
+ * math/s_casinh.c: ...here.
+ * sysdeps/generic/s_casinhf.c: Moved to...
+ * math/s_casinhf.c: ...here.
+ * sysdeps/generic/s_casinhl.c: Moved to...
+ * math/s_casinhl.c: ...here.
+ * sysdeps/generic/s_casinl.c: Moved to...
+ * math/s_casinl.c: ...here.
+ * sysdeps/generic/s_catan.c: Moved to...
+ * math/s_catan.c: ...here.
+ * sysdeps/generic/s_catanf.c: Moved to...
+ * math/s_catanf.c: ...here.
+ * sysdeps/generic/s_catanh.c: Moved to...
+ * math/s_catanh.c: ...here.
+ * sysdeps/generic/s_catanhf.c: Moved to...
+ * math/s_catanhf.c: ...here.
+ * sysdeps/generic/s_catanhl.c: Moved to...
+ * math/s_catanhl.c: ...here.
+ * sysdeps/generic/s_catanl.c: Moved to...
+ * math/s_catanl.c: ...here.
+ * sysdeps/generic/s_cbrtl.c: Moved to...
+ * math/s_cbrtl.c: ...here.
+ * sysdeps/generic/s_ccos.c: Moved to...
+ * math/s_ccos.c: ...here.
+ * sysdeps/generic/s_ccosf.c: Moved to...
+ * math/s_ccosf.c: ...here.
+ * sysdeps/generic/s_ccosh.c: Moved to...
+ * math/s_ccosh.c: ...here.
+ * sysdeps/generic/s_ccoshf.c: Moved to...
+ * math/s_ccoshf.c: ...here.
+ * sysdeps/generic/s_ccoshl.c: Moved to...
+ * math/s_ccoshl.c: ...here.
+ * sysdeps/generic/s_ccosl.c: Moved to...
+ * math/s_ccosl.c: ...here.
+ * sysdeps/generic/s_cexp.c: Moved to...
+ * math/s_cexp.c: ...here.
+ * sysdeps/generic/s_cexpf.c: Moved to...
+ * math/s_cexpf.c: ...here.
+ * sysdeps/generic/s_cexpl.c: Moved to...
+ * math/s_cexpl.c: ...here.
+ * sysdeps/generic/s_clog.c: Moved to...
+ * math/s_clog.c: ...here.
+ * sysdeps/generic/s_clog10.c: Moved to...
+ * math/s_clog10.c: ...here.
+ * sysdeps/generic/s_clog10f.c: Moved to...
+ * math/s_clog10f.c: ...here.
+ * sysdeps/generic/s_clog10l.c: Moved to...
+ * math/s_clog10l.c: ...here.
+ * sysdeps/generic/s_clogf.c: Moved to...
+ * math/s_clogf.c: ...here.
+ * sysdeps/generic/s_clogl.c: Moved to...
+ * math/s_clogl.c: ...here.
+ * sysdeps/generic/s_cpow.c: Moved to...
+ * math/s_cpow.c: ...here.
+ * sysdeps/generic/s_cpowf.c: Moved to...
+ * math/s_cpowf.c: ...here.
+ * sysdeps/generic/s_cpowl.c: Moved to...
+ * math/s_cpowl.c: ...here.
+ * sysdeps/generic/s_cproj.c: Moved to...
+ * math/s_cproj.c: ...here.
+ * sysdeps/generic/s_cprojf.c: Moved to...
+ * math/s_cprojf.c: ...here.
+ * sysdeps/generic/s_cprojl.c: Moved to...
+ * math/s_cprojl.c: ...here.
+ * sysdeps/generic/s_csin.c: Moved to...
+ * math/s_csin.c: ...here.
+ * sysdeps/generic/s_csinf.c: Moved to...
+ * math/s_csinf.c: ...here.
+ * sysdeps/generic/s_csinh.c: Moved to...
+ * math/s_csinh.c: ...here.
+ * sysdeps/generic/s_csinhf.c: Moved to...
+ * math/s_csinhf.c: ...here.
+ * sysdeps/generic/s_csinhl.c: Moved to...
+ * math/s_csinhl.c: ...here.
+ * sysdeps/generic/s_csinl.c: Moved to...
+ * math/s_csinl.c: ...here.
+ * sysdeps/generic/s_csqrt.c: Moved to...
+ * math/s_csqrt.c: ...here.
+ * sysdeps/generic/s_csqrtf.c: Moved to...
+ * math/s_csqrtf.c: ...here.
+ * sysdeps/generic/s_csqrtl.c: Moved to...
+ * math/s_csqrtl.c: ...here.
+ * sysdeps/generic/s_ctan.c: Moved to...
+ * math/s_ctan.c: ...here.
+ * sysdeps/generic/s_ctanf.c: Moved to...
+ * math/s_ctanf.c: ...here.
+ * sysdeps/generic/s_ctanh.c: Moved to...
+ * math/s_ctanh.c: ...here.
+ * sysdeps/generic/s_ctanhf.c: Moved to...
+ * math/s_ctanhf.c: ...here.
+ * sysdeps/generic/s_ctanhl.c: Moved to...
+ * math/s_ctanhl.c: ...here.
+ * sysdeps/generic/s_ctanl.c: Moved to...
+ * math/s_ctanl.c: ...here.
+ * sysdeps/generic/s_erfl.c: Moved to...
+ * math/s_erfl.c: ...here.
+ * sysdeps/generic/s_expm1l.c: Moved to...
+ * math/s_expm1l.c: ...here.
+ * sysdeps/generic/s_fdim.c: Moved to...
+ * math/s_fdim.c: ...here.
+ * sysdeps/generic/s_fdimf.c: Moved to...
+ * math/s_fdimf.c: ...here.
+ * sysdeps/generic/s_fdiml.c: Moved to...
+ * math/s_fdiml.c: ...here.
+ * sysdeps/generic/s_fma.c: Moved to...
+ * math/s_fma.c: ...here.
+ * sysdeps/generic/s_fmaf.c: Moved to...
+ * math/s_fmaf.c: ...here.
+ * sysdeps/generic/s_fmal.c: Moved to...
+ * math/s_fmal.c: ...here.
+ * sysdeps/generic/s_fmax.c: Moved to...
+ * math/s_fmax.c: ...here.
+ * sysdeps/generic/s_fmaxf.c: Moved to...
+ * math/s_fmaxf.c: ...here.
+ * sysdeps/generic/s_fmaxl.c: Moved to...
+ * math/s_fmaxl.c: ...here.
+ * sysdeps/generic/s_fmin.c: Moved to...
+ * math/s_fmin.c: ...here.
+ * sysdeps/generic/s_fminf.c: Moved to...
+ * math/s_fminf.c: ...here.
+ * sysdeps/generic/s_fminl.c: Moved to...
+ * math/s_fminl.c: ...here.
+ * sysdeps/generic/s_ldexp.c: Moved to...
+ * math/s_ldexp.c: ...here.
+ * sysdeps/generic/s_ldexpf.c: Moved to...
+ * math/s_ldexpf.c: ...here.
+ * sysdeps/generic/s_ldexpl.c: Moved to...
+ * math/s_ldexpl.c: ...here.
+ * sysdeps/generic/s_log1pl.c: Moved to...
+ * math/s_log1pl.c: ...here.
+ * sysdeps/generic/s_nan.c: Moved to...
+ * math/s_nan.c: ...here.
+ * sysdeps/generic/s_nanf.c: Moved to...
+ * math/s_nanf.c: ...here.
+ * sysdeps/generic/s_nanl.c: Moved to...
+ * math/s_nanl.c: ...here.
+ * sysdeps/generic/s_nextafter.c: Moved to...
+ * math/s_nextafter.c: ...here.
+ * sysdeps/generic/s_nexttowardf.c: Moved to...
+ * math/s_nexttowardf.c: ...here.
+ * sysdeps/generic/s_nexttowardl.c: Moved to...
+ * math/s_nexttowardl.c: ...here.
+ * sysdeps/generic/s_significand.c: Moved to...
+ * math/s_significand.c: ...here.
+ * sysdeps/generic/s_significandf.c: Moved to...
+ * math/s_significandf.c: ...here.
+ * sysdeps/generic/s_significandl.c: Moved to...
+ * math/s_significandl.c: ...here.
+ * sysdeps/generic/s_tanhl.c: Moved to...
+ * math/s_tanhl.c: ...here.
+ * sysdeps/generic/sbrk.c: Moved to...
+ * misc/sbrk.c: ...here.
+ * sysdeps/generic/scandir64.c: Moved to...
+ * dirent/scandir64.c: ...here.
+ * sysdeps/generic/sched_getaffinity.c: Moved to...
+ * posix/sched_getaffinity.c: ...here.
+ * sysdeps/generic/sched_getp.c: Moved to...
+ * posix/sched_getp.c: ...here.
+ * sysdeps/generic/sched_gets.c: Moved to...
+ * posix/sched_gets.c: ...here.
+ * sysdeps/generic/sched_primax.c: Moved to...
+ * posix/sched_primax.c: ...here.
+ * sysdeps/generic/sched_primin.c: Moved to...
+ * posix/sched_primin.c: ...here.
+ * sysdeps/generic/sched_rr_gi.c: Moved to...
+ * posix/sched_rr_gi.c: ...here.
+ * sysdeps/generic/sched_setaffinity.c: Moved to...
+ * posix/sched_setaffinity.c: ...here.
+ * sysdeps/generic/sched_setp.c: Moved to...
+ * posix/sched_setp.c: ...here.
+ * sysdeps/generic/sched_sets.c: Moved to...
+ * posix/sched_sets.c: ...here.
+ * sysdeps/generic/sched_yield.c: Moved to...
+ * posix/sched_yield.c: ...here.
+ * sysdeps/generic/seekdir.c: Moved to...
+ * dirent/seekdir.c: ...here.
+ * sysdeps/generic/segfault.c: Moved to...
+ * debug/segfault.c: ...here.
+ * sysdeps/generic/select.c: Moved to...
+ * misc/select.c: ...here.
+ * sysdeps/generic/semctl.c: Moved to...
+ * sysvipc/semctl.c: ...here.
+ * sysdeps/generic/semget.c: Moved to...
+ * sysvipc/semget.c: ...here.
+ * sysdeps/generic/semop.c: Moved to...
+ * sysvipc/semop.c: ...here.
+ * sysdeps/generic/semtimedop.c: Moved to...
+ * sysvipc/semtimedop.c: ...here.
+ * sysdeps/generic/send.c: Moved to...
+ * socket/send.c: ...here.
+ * sysdeps/generic/sendfile.c: Moved to...
+ * io/sendfile.c: ...here.
+ * sysdeps/generic/sendfile64.c: Moved to...
+ * io/sendfile64.c: ...here.
+ * sysdeps/generic/sendmsg.c: Moved to...
+ * socket/sendmsg.c: ...here.
+ * sysdeps/generic/sendto.c: Moved to...
+ * socket/sendto.c: ...here.
+ * sysdeps/generic/setcontext.c: Moved to...
+ * stdlib/setcontext.c: ...here.
+ * sysdeps/generic/setdomain.c: Moved to...
+ * misc/setdomain.c: ...here.
+ * sysdeps/generic/setegid.c: Moved to...
+ * misc/setegid.c: ...here.
+ * sysdeps/generic/setenv.c: Moved to...
+ * stdlib/setenv.c: ...here.
+ * sysdeps/generic/seteuid.c: Moved to...
+ * misc/seteuid.c: ...here.
+ * sysdeps/generic/setfpucw.c: Moved to...
+ * math/setfpucw.c: ...here.
+ * sysdeps/generic/setgid.c: Moved to...
+ * posix/setgid.c: ...here.
+ * sysdeps/generic/setgroups.c: Moved to...
+ * grp/setgroups.c: ...here.
+ * sysdeps/generic/sethostid.c: Moved to...
+ * misc/sethostid.c: ...here.
+ * sysdeps/generic/sethostname.c: Moved to...
+ * misc/sethostname.c: ...here.
+ * sysdeps/generic/setipv4sourcefilter.c: Moved to...
+ * inet/setipv4sourcefilter.c: ...here.
+ * sysdeps/generic/setitimer.c: Moved to...
+ * time/setitimer.c: ...here.
+ * sysdeps/generic/setjmp.c: Moved to...
+ * setjmp/setjmp.c: ...here.
+ * sysdeps/generic/setlogin.c: Moved to...
+ * posix/setlogin.c: ...here.
+ * sysdeps/generic/setpgid.c: Moved to...
+ * posix/setpgid.c: ...here.
+ * sysdeps/generic/setpgrp.c: Moved to...
+ * posix/setpgrp.c: ...here.
+ * sysdeps/generic/setpriority.c: Moved to...
+ * resource/setpriority.c: ...here.
+ * sysdeps/generic/setregid.c: Moved to...
+ * misc/setregid.c: ...here.
+ * sysdeps/generic/setresgid.c: Moved to...
+ * posix/setresgid.c: ...here.
+ * sysdeps/generic/setresuid.c: Moved to...
+ * posix/setresuid.c: ...here.
+ * sysdeps/generic/setreuid.c: Moved to...
+ * misc/setreuid.c: ...here.
+ * sysdeps/generic/setrlimit.c: Moved to...
+ * resource/setrlimit.c: ...here.
+ * sysdeps/generic/setrlimit64.c: Moved to...
+ * resource/setrlimit64.c: ...here.
+ * sysdeps/generic/setsid.c: Moved to...
+ * posix/setsid.c: ...here.
+ * sysdeps/generic/setsockopt.c: Moved to...
+ * socket/setsockopt.c: ...here.
+ * sysdeps/generic/setsourcefilter.c: Moved to...
+ * inet/setsourcefilter.c: ...here.
+ * sysdeps/generic/settimeofday.c: Moved to...
+ * time/settimeofday.c: ...here.
+ * sysdeps/generic/setuid.c: Moved to...
+ * posix/setuid.c: ...here.
+ * sysdeps/generic/setutxent.c: Moved to...
+ * login/setutxent.c: ...here.
+ * sysdeps/generic/setxattr.c: Moved to...
+ * misc/setxattr.c: ...here.
+ * sysdeps/generic/shm_open.c: Moved to...
+ * rt/shm_open.c: ...here.
+ * sysdeps/generic/shm_unlink.c: Moved to...
+ * rt/shm_unlink.c: ...here.
+ * sysdeps/generic/shmat.c: Moved to...
+ * sysvipc/shmat.c: ...here.
+ * sysdeps/generic/shmctl.c: Moved to...
+ * sysvipc/shmctl.c: ...here.
+ * sysdeps/generic/shmdt.c: Moved to...
+ * sysvipc/shmdt.c: ...here.
+ * sysdeps/generic/shmget.c: Moved to...
+ * sysvipc/shmget.c: ...here.
+ * sysdeps/generic/shutdown.c: Moved to...
+ * socket/shutdown.c: ...here.
+ * sysdeps/generic/sigaction.c: Moved to...
+ * signal/sigaction.c: ...here.
+ * sysdeps/generic/sigaltstack.c: Moved to...
+ * signal/sigaltstack.c: ...here.
+ * sysdeps/generic/sigblock.c: Moved to...
+ * signal/sigblock.c: ...here.
+ * sysdeps/generic/sigfillset.c: Moved to...
+ * signal/sigfillset.c: ...here.
+ * sysdeps/generic/sigignore.c: Moved to...
+ * signal/sigignore.c: ...here.
+ * sysdeps/generic/sigintr.c: Moved to...
+ * signal/sigintr.c: ...here.
+ * sysdeps/generic/sigjmp.c: Moved to...
+ * setjmp/sigjmp.c: ...here.
+ * sysdeps/generic/siglist.c: Moved to...
+ * stdio-common/siglist.c: ...here.
+ * sysdeps/generic/signal.c: Moved to...
+ * signal/signal.c: ...here.
+ * sysdeps/generic/sigpause.c: Moved to...
+ * signal/sigpause.c: ...here.
+ * sysdeps/generic/sigpending.c: Moved to...
+ * signal/sigpending.c: ...here.
+ * sysdeps/generic/sigprocmask.c: Moved to...
+ * signal/sigprocmask.c: ...here.
+ * sysdeps/generic/sigqueue.c: Moved to...
+ * signal/sigqueue.c: ...here.
+ * sysdeps/generic/sigreturn.c: Moved to...
+ * signal/sigreturn.c: ...here.
+ * sysdeps/generic/sigset.c: Moved to...
+ * signal/sigset.c: ...here.
+ * sysdeps/generic/sigsetmask.c: Moved to...
+ * signal/sigsetmask.c: ...here.
+ * sysdeps/generic/sigstack.c: Moved to...
+ * signal/sigstack.c: ...here.
+ * sysdeps/generic/sigsuspend.c: Moved to...
+ * signal/sigsuspend.c: ...here.
+ * sysdeps/generic/sigtimedwait.c: Moved to...
+ * signal/sigtimedwait.c: ...here.
+ * sysdeps/generic/sigvec.c: Moved to...
+ * signal/sigvec.c: ...here.
+ * sysdeps/generic/sigwait.c: Moved to...
+ * signal/sigwait.c: ...here.
+ * sysdeps/generic/sigwaitinfo.c: Moved to...
+ * signal/sigwaitinfo.c: ...here.
+ * sysdeps/generic/sleep.c: Moved to...
+ * posix/sleep.c: ...here.
+ * sysdeps/generic/sockatmark.c: Moved to...
+ * socket/sockatmark.c: ...here.
+ * sysdeps/generic/socket.c: Moved to...
+ * socket/socket.c: ...here.
+ * sysdeps/generic/socketpair.c: Moved to...
+ * socket/socketpair.c: ...here.
+ * sysdeps/generic/spawni.c: Moved to...
+ * posix/spawni.c: ...here.
+ * sysdeps/generic/speed.c: Moved to...
+ * termios/speed.c: ...here.
+ * sysdeps/generic/sprofil.c: Moved to...
+ * gmon/sprofil.c: ...here.
+ * sysdeps/generic/sstk.c: Moved to...
+ * misc/sstk.c: ...here.
+ * sysdeps/generic/start.c: Moved to...
+ * csu/start.c: ...here.
+ * sysdeps/generic/statfs.c: Moved to...
+ * io/statfs.c: ...here.
+ * sysdeps/generic/statfs64.c: Moved to...
+ * io/statfs64.c: ...here.
+ * sysdeps/generic/statvfs.c: Moved to...
+ * io/statvfs.c: ...here.
+ * sysdeps/generic/statvfs64.c: Moved to...
+ * io/statvfs64.c: ...here.
+ * sysdeps/generic/stime.c: Moved to...
+ * time/stime.c: ...here.
+ * sysdeps/generic/stpcpy.c: Moved to...
+ * string/stpcpy.c: ...here.
+ * sysdeps/generic/stpcpy_chk.c: Moved to...
+ * debug/stpcpy_chk.c: ...here.
+ * sysdeps/generic/stpncpy.c: Moved to...
+ * string/stpncpy.c: ...here.
+ * sysdeps/generic/stpncpy_chk.c: Moved to...
+ * debug/stpncpy_chk.c: ...here.
+ * sysdeps/generic/strcasecmp.c: Moved to...
+ * string/strcasecmp.c: ...here.
+ * sysdeps/generic/strcasecmp_l.c: Moved to...
+ * string/strcasecmp_l.c: ...here.
+ * sysdeps/generic/strcasestr.c: Moved to...
+ * string/strcasestr.c: ...here.
+ * sysdeps/generic/strcat.c: Moved to...
+ * string/strcat.c: ...here.
+ * sysdeps/generic/strcat_chk.c: Moved to...
+ * debug/strcat_chk.c: ...here.
+ * sysdeps/generic/strchr.c: Moved to...
+ * string/strchr.c: ...here.
+ * sysdeps/generic/strchrnul.c: Moved to...
+ * string/strchrnul.c: ...here.
+ * sysdeps/generic/strcmp.c: Moved to...
+ * string/strcmp.c: ...here.
+ * sysdeps/generic/strcpy.c: Moved to...
+ * string/strcpy.c: ...here.
+ * sysdeps/generic/strcpy_chk.c: Moved to...
+ * debug/strcpy_chk.c: ...here.
+ * sysdeps/generic/strcspn.c: Moved to...
+ * string/strcspn.c: ...here.
+ * sysdeps/generic/string-inlines.c: Moved to...
+ * string/string-inlines.c: ...here.
+ * sysdeps/generic/strlen.c: Moved to...
+ * string/strlen.c: ...here.
+ * sysdeps/generic/strncase.c: Moved to...
+ * string/strncase.c: ...here.
+ * sysdeps/generic/strncase_l.c: Moved to...
+ * string/strncase_l.c: ...here.
+ * sysdeps/generic/strncat.c: Moved to...
+ * string/strncat.c: ...here.
+ * sysdeps/generic/strncat_chk.c: Moved to...
+ * debug/strncat_chk.c: ...here.
+ * sysdeps/generic/strncmp.c: Moved to...
+ * string/strncmp.c: ...here.
+ * sysdeps/generic/strncpy.c: Moved to...
+ * string/strncpy.c: ...here.
+ * sysdeps/generic/strncpy_chk.c: Moved to...
+ * debug/strncpy_chk.c: ...here.
+ * sysdeps/generic/strnlen.c: Moved to...
+ * string/strnlen.c: ...here.
+ * sysdeps/generic/strpbrk.c: Moved to...
+ * string/strpbrk.c: ...here.
+ * sysdeps/generic/strrchr.c: Moved to...
+ * string/strrchr.c: ...here.
+ * sysdeps/generic/strsep.c: Moved to...
+ * string/strsep.c: ...here.
+ * sysdeps/generic/strspn.c: Moved to...
+ * string/strspn.c: ...here.
+ * sysdeps/generic/strstr.c: Moved to...
+ * string/strstr.c: ...here.
+ * sysdeps/generic/strtoimax.c: Moved to...
+ * stdlib/strtoimax.c: ...here.
+ * sysdeps/generic/strtok.c: Moved to...
+ * string/strtok.c: ...here.
+ * sysdeps/generic/strtok_r.c: Moved to...
+ * string/strtok_r.c: ...here.
+ * sysdeps/generic/strtol.c: Moved to...
+ * stdlib/strtol.c: ...here.
+ * sysdeps/generic/strtol_l.c: Moved to...
+ * stdlib/strtol_l.c: ...here.
+ * sysdeps/generic/strtold_l.c: Moved to...
+ * stdlib/strtold_l.c: ...here.
+ * sysdeps/generic/strtoll.c: Moved to...
+ * stdlib/strtoll.c: ...here.
+ * sysdeps/generic/strtoll_l.c: Moved to...
+ * stdlib/strtoll_l.c: ...here.
+ * sysdeps/generic/strtoul.c: Moved to...
+ * stdlib/strtoul.c: ...here.
+ * sysdeps/generic/strtoul_l.c: Moved to...
+ * stdlib/strtoul_l.c: ...here.
+ * sysdeps/generic/strtoull.c: Moved to...
+ * stdlib/strtoull.c: ...here.
+ * sysdeps/generic/strtoull_l.c: Moved to...
+ * stdlib/strtoull_l.c: ...here.
+ * sysdeps/generic/strtoumax.c: Moved to...
+ * stdlib/strtoumax.c: ...here.
+ * sysdeps/generic/strtsupp.c: Moved to...
+ * bare/strtsupp.c: ...here.
+ * sysdeps/generic/stty.c: Moved to...
+ * misc/stty.c: ...here.
+ * sysdeps/generic/sub_n.c: Moved to...
+ * stdlib/sub_n.c: ...here.
+ * sysdeps/generic/submul_1.c: Moved to...
+ * stdlib/submul_1.c: ...here.
+ * sysdeps/generic/swapcontext.c: Moved to...
+ * stdlib/swapcontext.c: ...here.
+ * sysdeps/generic/swapoff.c: Moved to...
+ * misc/swapoff.c: ...here.
+ * sysdeps/generic/swapon.c: Moved to...
+ * misc/swapon.c: ...here.
+ * sysdeps/generic/symlink.c: Moved to...
+ * io/symlink.c: ...here.
+ * sysdeps/generic/sync.c: Moved to...
+ * misc/sync.c: ...here.
+ * sysdeps/generic/syscall.c: Moved to...
+ * misc/syscall.c: ...here.
+ * sysdeps/generic/sysconf.c: Moved to...
+ * posix/sysconf.c: ...here.
+ * sysdeps/generic/sysdep.c: Moved to...
+ * csu/sysdep.c: ...here.
+ * sysdeps/generic/syslog.c: Moved to...
+ * misc/syslog.c: ...here.
+ * sysdeps/generic/system.c: Moved to...
+ * stdlib/system.c: ...here.
+ * sysdeps/generic/sysv_signal.c: Moved to...
+ * signal/sysv_signal.c: ...here.
+ * sysdeps/generic/t_sincosl.c: Moved to...
+ * math/t_sincosl.c: ...here.
+ * sysdeps/generic/tcdrain.c: Moved to...
+ * termios/tcdrain.c: ...here.
+ * sysdeps/generic/tcflow.c: Moved to...
+ * termios/tcflow.c: ...here.
+ * sysdeps/generic/tcflush.c: Moved to...
+ * termios/tcflush.c: ...here.
+ * sysdeps/generic/tcgetattr.c: Moved to...
+ * termios/tcgetattr.c: ...here.
+ * sysdeps/generic/tcgetpgrp.c: Moved to...
+ * termios/tcgetpgrp.c: ...here.
+ * sysdeps/generic/tcsendbrk.c: Moved to...
+ * termios/tcsendbrk.c: ...here.
+ * sysdeps/generic/tcsetattr.c: Moved to...
+ * termios/tcsetattr.c: ...here.
+ * sysdeps/generic/tcsetpgrp.c: Moved to...
+ * termios/tcsetpgrp.c: ...here.
+ * sysdeps/generic/telldir.c: Moved to...
+ * dirent/telldir.c: ...here.
+ * sysdeps/generic/tempname.c: Moved to...
+ * stdio-common/tempname.c: ...here.
+ * sysdeps/generic/time.c: Moved to...
+ * time/time.c: ...here.
+ * sysdeps/generic/timer_create.c: Moved to...
+ * rt/timer_create.c: ...here.
+ * sysdeps/generic/timer_delete.c: Moved to...
+ * rt/timer_delete.c: ...here.
+ * sysdeps/generic/timer_getoverr.c: Moved to...
+ * rt/timer_getoverr.c: ...here.
+ * sysdeps/generic/timer_gettime.c: Moved to...
+ * rt/timer_gettime.c: ...here.
+ * sysdeps/generic/timer_settime.c: Moved to...
+ * rt/timer_settime.c: ...here.
+ * sysdeps/generic/times.c: Moved to...
+ * posix/times.c: ...here.
+ * sysdeps/generic/tmpfile.c: Moved to...
+ * stdio-common/tmpfile.c: ...here.
+ * sysdeps/generic/tmpfile64.c: Moved to...
+ * stdio-common/tmpfile64.c: ...here.
+ * sysdeps/generic/trampoline.c: Moved to...
+ * hurd/trampoline.c: ...here.
+ * sysdeps/generic/truncate.c: Moved to...
+ * misc/truncate.c: ...here.
+ * sysdeps/generic/truncate64.c: Moved to...
+ * misc/truncate64.c: ...here.
+ * sysdeps/generic/tst-timer.c: Moved to...
+ * rt/tst-timer.c: ...here.
+ * sysdeps/generic/ttyname.c: Moved to...
+ * io/ttyname.c: ...here.
+ * sysdeps/generic/ttyname_r.c: Moved to...
+ * io/ttyname_r.c: ...here.
+ * sysdeps/generic/ualarm.c: Moved to...
+ * misc/ualarm.c: ...here.
+ * sysdeps/generic/udiv_qrnnd.c: Moved to...
+ * stdlib/udiv_qrnnd.c: ...here.
+ * sysdeps/generic/ulimit.c: Moved to...
+ * resource/ulimit.c: ...here.
+ * sysdeps/generic/umask.c: Moved to...
+ * io/umask.c: ...here.
+ * sysdeps/generic/uname.c: Moved to...
+ * posix/uname.c: ...here.
+ * sysdeps/generic/unlink.c: Moved to...
+ * io/unlink.c: ...here.
+ * sysdeps/generic/unlinkat.c: Moved to...
+ * io/unlinkat.c: ...here.
+ * sysdeps/generic/unlockpt.c: Moved to...
+ * login/unlockpt.c: ...here.
+ * sysdeps/generic/updwtmp.c: Moved to...
+ * login/updwtmp.c: ...here.
+ * sysdeps/generic/updwtmpx.c: Moved to...
+ * login/updwtmpx.c: ...here.
+ * sysdeps/generic/usleep.c: Moved to...
+ * misc/usleep.c: ...here.
+ * sysdeps/generic/ustat.c: Moved to...
+ * misc/ustat.c: ...here.
+ * sysdeps/generic/utime.c: Moved to...
+ * io/utime.c: ...here.
+ * sysdeps/generic/utimes.c: Moved to...
+ * misc/utimes.c: ...here.
+ * sysdeps/generic/utmp_file.c: Moved to...
+ * login/utmp_file.c: ...here.
+ * sysdeps/generic/utmpxname.c: Moved to...
+ * login/utmpxname.c: ...here.
+ * sysdeps/generic/versionsort64.c: Moved to...
+ * dirent/versionsort64.c: ...here.
+ * sysdeps/generic/vfork.c: Moved to...
+ * posix/vfork.c: ...here.
+ * sysdeps/generic/vhangup.c: Moved to...
+ * misc/vhangup.c: ...here.
+ * sysdeps/generic/vlimit.c: Moved to...
+ * resource/vlimit.c: ...here.
+ * sysdeps/generic/vtimes.c: Moved to...
+ * resource/vtimes.c: ...here.
+ * sysdeps/generic/w_acos.c: Moved to...
+ * math/w_acos.c: ...here.
+ * sysdeps/generic/w_acosf.c: Moved to...
+ * math/w_acosf.c: ...here.
+ * sysdeps/generic/w_acosh.c: Moved to...
+ * math/w_acosh.c: ...here.
+ * sysdeps/generic/w_acoshf.c: Moved to...
+ * math/w_acoshf.c: ...here.
+ * sysdeps/generic/w_acoshl.c: Moved to...
+ * math/w_acoshl.c: ...here.
+ * sysdeps/generic/w_acosl.c: Moved to...
+ * math/w_acosl.c: ...here.
+ * sysdeps/generic/w_asin.c: Moved to...
+ * math/w_asin.c: ...here.
+ * sysdeps/generic/w_asinf.c: Moved to...
+ * math/w_asinf.c: ...here.
+ * sysdeps/generic/w_asinl.c: Moved to...
+ * math/w_asinl.c: ...here.
+ * sysdeps/generic/w_atan2.c: Moved to...
+ * math/w_atan2.c: ...here.
+ * sysdeps/generic/w_atan2f.c: Moved to...
+ * math/w_atan2f.c: ...here.
+ * sysdeps/generic/w_atan2l.c: Moved to...
+ * math/w_atan2l.c: ...here.
+ * sysdeps/generic/w_atanh.c: Moved to...
+ * math/w_atanh.c: ...here.
+ * sysdeps/generic/w_atanhf.c: Moved to...
+ * math/w_atanhf.c: ...here.
+ * sysdeps/generic/w_atanhl.c: Moved to...
+ * math/w_atanhl.c: ...here.
+ * sysdeps/generic/w_cosh.c: Moved to...
+ * math/w_cosh.c: ...here.
+ * sysdeps/generic/w_coshf.c: Moved to...
+ * math/w_coshf.c: ...here.
+ * sysdeps/generic/w_coshl.c: Moved to...
+ * math/w_coshl.c: ...here.
+ * sysdeps/generic/w_drem.c: Moved to...
+ * math/w_drem.c: ...here.
+ * sysdeps/generic/w_dremf.c: Moved to...
+ * math/w_dremf.c: ...here.
+ * sysdeps/generic/w_dreml.c: Moved to...
+ * math/w_dreml.c: ...here.
+ * sysdeps/generic/w_exp10.c: Moved to...
+ * math/w_exp10.c: ...here.
+ * sysdeps/generic/w_exp10f.c: Moved to...
+ * math/w_exp10f.c: ...here.
+ * sysdeps/generic/w_exp10l.c: Moved to...
+ * math/w_exp10l.c: ...here.
+ * sysdeps/generic/w_exp2.c: Moved to...
+ * math/w_exp2.c: ...here.
+ * sysdeps/generic/w_exp2f.c: Moved to...
+ * math/w_exp2f.c: ...here.
+ * sysdeps/generic/w_exp2l.c: Moved to...
+ * math/w_exp2l.c: ...here.
+ * sysdeps/generic/w_expl.c: Moved to...
+ * math/w_expl.c: ...here.
+ * sysdeps/generic/w_fmod.c: Moved to...
+ * math/w_fmod.c: ...here.
+ * sysdeps/generic/w_fmodf.c: Moved to...
+ * math/w_fmodf.c: ...here.
+ * sysdeps/generic/w_fmodl.c: Moved to...
+ * math/w_fmodl.c: ...here.
+ * sysdeps/generic/w_hypot.c: Moved to...
+ * math/w_hypot.c: ...here.
+ * sysdeps/generic/w_hypotf.c: Moved to...
+ * math/w_hypotf.c: ...here.
+ * sysdeps/generic/w_hypotl.c: Moved to...
+ * math/w_hypotl.c: ...here.
+ * sysdeps/generic/w_j0.c: Moved to...
+ * math/w_j0.c: ...here.
+ * sysdeps/generic/w_j0f.c: Moved to...
+ * math/w_j0f.c: ...here.
+ * sysdeps/generic/w_j0l.c: Moved to...
+ * math/w_j0l.c: ...here.
+ * sysdeps/generic/w_j1.c: Moved to...
+ * math/w_j1.c: ...here.
+ * sysdeps/generic/w_j1f.c: Moved to...
+ * math/w_j1f.c: ...here.
+ * sysdeps/generic/w_j1l.c: Moved to...
+ * math/w_j1l.c: ...here.
+ * sysdeps/generic/w_jn.c: Moved to...
+ * math/w_jn.c: ...here.
+ * sysdeps/generic/w_jnf.c: Moved to...
+ * math/w_jnf.c: ...here.
+ * sysdeps/generic/w_jnl.c: Moved to...
+ * math/w_jnl.c: ...here.
+ * sysdeps/generic/w_lgamma.c: Moved to...
+ * math/w_lgamma.c: ...here.
+ * sysdeps/generic/w_lgamma_r.c: Moved to...
+ * math/w_lgamma_r.c: ...here.
+ * sysdeps/generic/w_lgammaf.c: Moved to...
+ * math/w_lgammaf.c: ...here.
+ * sysdeps/generic/w_lgammaf_r.c: Moved to...
+ * math/w_lgammaf_r.c: ...here.
+ * sysdeps/generic/w_lgammal.c: Moved to...
+ * math/w_lgammal.c: ...here.
+ * sysdeps/generic/w_lgammal_r.c: Moved to...
+ * math/w_lgammal_r.c: ...here.
+ * sysdeps/generic/w_log.c: Moved to...
+ * math/w_log.c: ...here.
+ * sysdeps/generic/w_log10.c: Moved to...
+ * math/w_log10.c: ...here.
+ * sysdeps/generic/w_log10f.c: Moved to...
+ * math/w_log10f.c: ...here.
+ * sysdeps/generic/w_log10l.c: Moved to...
+ * math/w_log10l.c: ...here.
+ * sysdeps/generic/w_log2.c: Moved to...
+ * math/w_log2.c: ...here.
+ * sysdeps/generic/w_log2f.c: Moved to...
+ * math/w_log2f.c: ...here.
+ * sysdeps/generic/w_log2l.c: Moved to...
+ * math/w_log2l.c: ...here.
+ * sysdeps/generic/w_logf.c: Moved to...
+ * math/w_logf.c: ...here.
+ * sysdeps/generic/w_logl.c: Moved to...
+ * math/w_logl.c: ...here.
+ * sysdeps/generic/w_pow.c: Moved to...
+ * math/w_pow.c: ...here.
+ * sysdeps/generic/w_powf.c: Moved to...
+ * math/w_powf.c: ...here.
+ * sysdeps/generic/w_powl.c: Moved to...
+ * math/w_powl.c: ...here.
+ * sysdeps/generic/w_remainder.c: Moved to...
+ * math/w_remainder.c: ...here.
+ * sysdeps/generic/w_remainderf.c: Moved to...
+ * math/w_remainderf.c: ...here.
+ * sysdeps/generic/w_remainderl.c: Moved to...
+ * math/w_remainderl.c: ...here.
+ * sysdeps/generic/w_scalb.c: Moved to...
+ * math/w_scalb.c: ...here.
+ * sysdeps/generic/w_scalbf.c: Moved to...
+ * math/w_scalbf.c: ...here.
+ * sysdeps/generic/w_scalbl.c: Moved to...
+ * math/w_scalbl.c: ...here.
+ * sysdeps/generic/w_sinh.c: Moved to...
+ * math/w_sinh.c: ...here.
+ * sysdeps/generic/w_sinhf.c: Moved to...
+ * math/w_sinhf.c: ...here.
+ * sysdeps/generic/w_sinhl.c: Moved to...
+ * math/w_sinhl.c: ...here.
+ * sysdeps/generic/w_sqrt.c: Moved to...
+ * math/w_sqrt.c: ...here.
+ * sysdeps/generic/w_sqrtf.c: Moved to...
+ * math/w_sqrtf.c: ...here.
+ * sysdeps/generic/w_sqrtl.c: Moved to...
+ * math/w_sqrtl.c: ...here.
+ * sysdeps/generic/w_tgamma.c: Moved to...
+ * math/w_tgamma.c: ...here.
+ * sysdeps/generic/w_tgammaf.c: Moved to...
+ * math/w_tgammaf.c: ...here.
+ * sysdeps/generic/w_tgammal.c: Moved to...
+ * math/w_tgammal.c: ...here.
+ * sysdeps/generic/wait.c: Moved to...
+ * posix/wait.c: ...here.
+ * sysdeps/generic/wait3.c: Moved to...
+ * posix/wait3.c: ...here.
+ * sysdeps/generic/wait4.c: Moved to...
+ * posix/wait4.c: ...here.
+ * sysdeps/generic/waitid.c: Moved to...
+ * posix/waitid.c: ...here.
+ * sysdeps/generic/waitpid.c: Moved to...
+ * posix/waitpid.c: ...here.
+ * sysdeps/generic/wcstoimax.c: Moved to...
+ * stdlib/wcstoimax.c: ...here.
+ * sysdeps/generic/wcstol.c: Moved to...
+ * wcsmbs/wcstol.c: ...here.
+ * sysdeps/generic/wcstol_l.c: Moved to...
+ * wcsmbs/wcstol_l.c: ...here.
+ * sysdeps/generic/wcstoll.c: Moved to...
+ * wcsmbs/wcstoll.c: ...here.
+ * sysdeps/generic/wcstoll_l.c: Moved to...
+ * wcsmbs/wcstoll_l.c: ...here.
+ * sysdeps/generic/wcstoul.c: Moved to...
+ * wcsmbs/wcstoul.c: ...here.
+ * sysdeps/generic/wcstoul_l.c: Moved to...
+ * wcsmbs/wcstoul_l.c: ...here.
+ * sysdeps/generic/wcstoull.c: Moved to...
+ * wcsmbs/wcstoull.c: ...here.
+ * sysdeps/generic/wcstoull_l.c: Moved to...
+ * wcsmbs/wcstoull_l.c: ...here.
+ * sysdeps/generic/wcstoumax.c: Moved to...
+ * stdlib/wcstoumax.c: ...here.
+ * sysdeps/generic/wordcopy.c: Moved to...
+ * string/wordcopy.c: ...here.
+ * sysdeps/generic/wordexp.c: Moved to...
+ * posix/wordexp.c: ...here.
+ * sysdeps/generic/write.c: Moved to...
+ * io/write.c: ...here.
+ * sysdeps/generic/writev.c: Moved to...
+ * misc/writev.c: ...here.
+ * sysdeps/generic/xmknod.c: Moved to...
+ * io/xmknod.c: ...here.
+ * sysdeps/generic/xmknodat.c: Moved to...
+ * io/xmknodat.c: ...here.
+ * sysdeps/generic/xpg-strerror.c: Moved to...
+ * string/xpg-strerror.c: ...here.
+ * sysdeps/generic/xstat.c: Moved to...
+ * io/xstat.c: ...here.
+ * sysdeps/generic/xstat64.c: Moved to...
+ * io/xstat64.c: ...here.
+ * catgets/gencat.c: Use "config.h" to refer to the local config.h file.
+ * stdlib/stdtod_l.c: Use "..." for gmp-impl.h and longlong.h headers.
+ * sysdeps/ieee754/ldbl-96/printf_fphex.c: Adjust for files moving
+ out of sysdeps/generic.
+ * sysdeps/ieee754/ldbl-96/strtold_l.c: Likewise.
+ * sysdeps/powerpc/elf/libc-start.c: Likewise.
+ * sysdeps/unix/sysv/linux/dl-sbrk.c: Likewise.
+ * sysdeps/unix/sysv/linux/dl-sysdep.c: Likewise.
+ * sysdeps/unix/sysv/linux/segfault.c: Likewise.
+ * sysdeps/unix/sysv/linux/sigreturn.c: Likewise.
+ * sysdeps/unix/sysv/linux/syslog.c: Likewise.
+ * sysdeps/unix/sysv/linux/updwtmp.c: Likewise.
+ * sysdeps/unix/sysv/linux/utmp_file.c: Likewise.
+ * sysdeps/unix/sysv/linux/i386/getrlimit64.c: Likewise.
+ * sysdeps/unix/sysv/linux/i386/glob64.c: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/dl-procinfo.c: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/dl-procinfo.h: Likewise.
+ * sysdeps/wordsize-32/llabs.c: Likewise.
+ * sysdeps/wordsize-32/lldiv.c: Likewise.
+ * sysdeps/wordsize-64/glob.c: Likewise.
+ * sysdeps/wordsize-64/labs.c: Likewise.
+ * sysdeps/wordsize-64/ldiv.c: Likewise.
+ * sysdeps/wordsize-64/strtol.c: Likewise.
+ * sysdeps/wordsize-64/strtol_l.c: Likewise.
+ * sysdeps/wordsize-64/strtoul.c: Likewise.
+ * sysdeps/wordsize-64/strtoul_l.c: Likewise.
+ * sysdeps/wordsize-64/wcstol.c: Likewise.
+ * sysdeps/wordsize-64/wcstol_l.c: Likewise.
+ * sysdeps/wordsize-64/wcstoul.c: Likewise.
+ * sysdeps/wordsize-64/wcstoul_l.c: Likewise.
+ * sysdeps/x86_64/fpu/printf_fphex.c: Likewise.
+ * wcsmbs/Makefile (strtox-CFLAGS): remove -I../stdlib.
+ (CPPFLAGS-wcstold_l.c): Add -I../stdlib.
+
+2005-12-13 Roland McGrath <roland@redhat.com>
+
+ * sysdeps/generic/Makefile: Remove remaining bits/endian.h cruft.
+
+2005-12-13 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/generic/signame.c: Removed.
+ * sysdeps/generic/signame.h: Removed.
+ * sysdeps/generic/configure.in: Removed.
+ * sysdeps/generic/Dist: Remove these files.
+
+ * sysdeps/generic/det_endian.c: Removed.
+ * sysdeps/generic/Makefile: Remove rule to build it.
+ * sysdeps/generic/Dist: Don't distribute it.
+
+2005-12-13 Roland McGrath <roland@redhat.com>
+
+ * sysdeps/powerpc/dl-procinfo.c: New file.
+ * sysdeps/powerpc/dl-procinfo.h: New file.
+
+2005-12-12 Ulrich Drepper <drepper@redhat.com>
+
+ * io/sys/stat.h: Add restrict to fstatat declarations.
+
+2005-12-10 Ulrich Drepper <drepper@redhat.com>
+
+ * posix/regex_internal.h: Include <stdint.h> if available.
+
+2005-12-06 Paolo Bonzini <bonzini@gnu.org>
+
+ * posix/regex_internal.h (SIZE_MAX): Provide a default definition.
+
+2005-12-08 Ulrich Drepper <drepper@redhat.com>
+
+ * nis/nis_call.c (inetstr2int): Optimize.
+
+2005-12-08 Jakub Jelinek <jakub@redhat.com>
+
+ * nis/nis_call.c (__nisbind_create): Remove __nisbind_destroy,
+ ->clnt cannot be != NULL.
+ (__do_niscall): No need to use __nisbind_destroy, __nisbind_next
+ did it.
+ (__nisbind_connect): use_auth is already TRUE, otherwise we would
+ not be here.
+
+ * nis/nis_lookup.c (nis_lookup): Remove unnecessary
+ __nisbind_destroy calls. __nisbind_next does all that.
+
+ * nis/ypclnt.c (yp_update): Before trying default authentication,
+ free DES descriptor.
+
+2005-12-07 Jakub Jelinek <jakub@redhat.com>
+
+ * nis/nis_table.c (nis_list): Fix memory handling in error case.
+
+2005-12-07 Ulrich Drepper <drepper@redhat.com>
+
+ * nis/nis_table.c (nis_list): Remove have_tablepath, just use the
+ pointer value itself.
+
+2005-12-06 Ulrich Drepper <drepper@redhat.com>
+
+ * catgets/gencat.c: Use GPL, not LGPL.
+ * elf/cache.c: Likewise.
+ * elf/chroot_canon.c: Likewise.
+ * elf/ldconfig.c: Likewise.
+ * elf/readlib.c: Likewise.
+ * iconv/dummy-repertoire.c: Likewise.
+ * iconv/iconv_charmap.c: Likewise.
+ * iconv/iconv_prog.c: Likewise.
+ * iconv/iconvconfig.c: Likewise.
+ * locale/programs/3level.h: Likewise.
+ * locale/programs/charmap-dir.c: Likewise.
+ * locale/programs/charmap-dir.h: Likewise.
+ * locale/programs/charmap-kw.gperf: Likewise.
+ * locale/programs/charmap.c: Likewise.
+ * locale/programs/charmap.h: Likewise.
+ * locale/programs/config.h: Likewise.
+ * locale/programs/ld-address.c: Likewise.
+ * locale/programs/ld-collate.c: Likewise.
+ * locale/programs/ld-ctype.c: Likewise.
+ * locale/programs/ld-identification.c: Likewise.
+ * locale/programs/ld-measurement.c: Likewise.
+ * locale/programs/ld-messages.c: Likewise.
+ * locale/programs/ld-monetary.c: Likewise.
+ * locale/programs/ld-name.c: Likewise.
+ * locale/programs/ld-numeric.c: Likewise.
+ * locale/programs/ld-paper.c: Likewise.
+ * locale/programs/ld-telephone.c: Likewise.
+ * locale/programs/ld-time.c: Likewise.
+ * locale/programs/linereader.c: Likewise.
+ * locale/programs/linereader.h: Likewise.
+ * locale/programs/locale-spec.c: Likewise.
+ * locale/programs/locale.c: Likewise.
+ * locale/programs/localedef.c: Likewise.
+ * locale/programs/localedef.h: Likewise.
+ * locale/programs/locarchive.c: Likewise.
+ * locale/programs/locfile-kw.gperf: Likewise.
+ * locale/programs/locfile-token.h: Likewise.
+ * locale/programs/locfile.c: Likewise.
+ * locale/programs/locfile.h: Likewise.
+ * locale/programs/repertoire.c: Likewise.
+ * locale/programs/repertoire.h: Likewise.
+ * locale/programs/simple-hash.c: Likewise.
+ * locale/programs/simple-hash.h: Likewise.
+ * locale/programs/xmalloc.c: Likewise.
+ * locale/programs/xstrdup.c: Likewise.
+ * malloc/memusagestat.c: Likewise.
+ * nscd/aicache.c: Likewise.
+ * nscd/cache.c: Likewise.
+ * nscd/connections.c: Likewise.
+ * nscd/dbg_log.c: Likewise.
+ * nscd/gai.c: Likewise.
+ * nscd/getgrgid_r.c: Likewise.
+ * nscd/getgrnam_r.c: Likewise.
+ * nscd/gethstbyad_r.c: Likewise.
+ * nscd/gethstbynm2_r.c: Likewise.
+ * nscd/getpwnam_r.c: Likewise.
+ * nscd/getpwuid_r.c: Likewise.
+ * nscd/grpcache.c: Likewise.
+ * nscd/hstcache.c: Likewise.
+ * nscd/initgrcache.c: Likewise.
+ * nscd/mem.c: Likewise.
+ * nscd/nscd.c: Likewise.
+ * nscd/nscd_conf.c: Likewise.
+ * nscd/pwdcache.c: Likewise.
+ * posix/getconf.c: Likewise.
+ * sysdeps/generic/nscd_setup_thread.c: Likewise.
+ * sysdeps/unix/sysv/linux/nscd_setup_thread.c: Likewise.
+
+ * sunrpc/auth_des.c (authdes_pk_create): If conversation key
+ cannot be created, free memory.
+ Reported by rprasad@vmware.com.
+
+2005-11-15 Mike Frysinger <vapier@gentoo.org>
+
+ * sysdeps/hppa/bits/setjmp.h: Add _BITS_SETJMP_H preprocessor
+ protection and allow pthread.h to include bits/setjmp.h as well as
+ setjmp.h.
+ * sysdeps/m68k/bits/setjmp.h: Likewise.
+ * sysdeps/s390/bits/setjmp.h: Make sure only setjmp.h or pthread.h
+ are allow to include bits/setjmp.h.
+ * sysdeps/mips/bits/setjmp.h (_JMPBUF_UNWINDS): Cast rhs to match lhs
+ cast of address.
+ * sysdeps/sh/bits/setjmp.h: Likewise.
+
+2005-11-12 Jim Meyering <jim@meyering.net>
+
+ * sysdeps/unix/opendir.c (__alloc_dir): Declare STATP parameter
+ to be pointer to const.
+ * include/dirent.h: Update decl.
+
+2005-12-05 Roland McGrath <roland@redhat.com>
+
+ * hurd/hurdmalloc.c: Remove $ tag $ magic.
+ * mach/err_kern.sub: Likewise.
+ * mach/err_server.sub: Likewise.
+ * mach/err_us.sub: Likewise.
+ * mach/error_compat.c: Likewise.
+ * mach/errorlib.h: Likewise.
+ * mach/errstring.c: Likewise.
+ * mach/mach/error.h: Likewise.
+ * mach/mach_error.c: Likewise.
+ * mach/mach_error.h: Likewise.
+ * mach/msg-destroy.c: Likewise.
+ * mach/msgserver.c: Likewise.
+ * sysdeps/mach/sys/reboot.h: Likewise.
+
+ * sysdeps/generic/dwarf2.h: Replace license text with glibc LGPL.
+
+2005-11-28 Jakub Jelinek <jakub@redhat.com>
+
+ * malloc/tst-mallocfork.c (do_test): Make sure sa_flags is
+ initialized. Reported by John Reiser <jreiser@BitWagon.com>.
+
+2005-12-05 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * stdlib/longlong.h: Update from GCC.
+
+2005-12-04 Joseph S. Myers <joseph@codesourcery.com>
+
+ * soft-fp/soft-fp.h: Include <stdlib.h>.
+
+ * soft-fp/floatdisf.c (__floatdisf): Return float.
+
+2005-12-05 Roland McGrath <roland@redhat.com>
+
+ * sysdeps/unix/sysv/linux/kernel-features.h
+ (__ASSUME_POSIX_CPU_TIMERS): New macro, for 2.6.12 and later.
+
+2005-12-03 Ulrich Drepper <drepper@redhat.com>
+
+ * nis/nis_table.c (nis_list): Optimize freeing and reallocation of
+ result record.
+
+ * nis/nss_nisplus/nisplus-network.c (_nss_nisplus_getnetbyaddr_r):
+ Better sized buffers. Correct error case handling.
+ * nis/nis_error.c (nis_sperror_r): Let snprintf determine whether
+ there is an overflow.
+ * nis/nss_nisplus/nisplus-service.c: Fix locking to use
+ _nss_create_tablename. Avoid unnecessary copying, remove
+ unnecessary variables, general cleanup.
+ * nis/nss_nisplus/nisplus-rpc.c: Likewise.
+ * nis/nss_nisplus/nisplus-proto.c: Likewise..
+ * nis/nss_nisplus/nisplus-network.c: Fix locking to use
+ _nss_create_tablename. Avoid unnecessary copying, general cleanup.
+ * nis/nss_nisplus/nisplus-hosts.c (_nss_nisplus_getipnodebyname_r):
+ Removed.
+ Fix locking to use _nss_create_tablename. Avoid unnecessary copying,
+ general cleanup.
+ * nis/nss_nisplus/nisplus-ethers.c (_nss_nisplus_getntohost_r):
+ Correctly construct request.
+ Fix locking to use _nss_create_tablename. Avoid unnecessary copying,
+ general cleanup.
+ * nis/nss_nisplus/nisplus-alias.c: Fix locking to use
+ _nss_create_tablename. Avoid unnecessary copying, general cleanup.
+ * nis/nss_nisplus/nisplus-netgrp.c (_nss_nisplus_setnetgrent):
+ Rewrite to use snprintf.
+ * nis/nss_nisplus/nisplus-publickey.c (_nss_nisplus_netname2user):
+ Likewise.
+
+2005-12-02 Ulrich Drepper <drepper@redhat.com>
+
+ * nis/nss_nisplus/nisplus-pwd.c (_nss_pwd_create_tablename):
+ Renamed from _nss_create_tablename. Export from file (but not DSO).
+ (pwd_tablename_val): Renamed from tablename_val, mark hidden.
+ (pwd_tablename_len): Renamed from tablename_len, mark hidden.
+ Change all users.
+ * nis/nss_nisplus/nisplus-spwd.c (_nss_create_tablename): Removed.
+ Use _nss_pwd_create_tablename now. Use pwd_tablename_val and
+ pwd_tablename_len. Remove unnecessary variables, general cleanup.
+
+ * nis/nss_nisplus/nisplus-pwd.c: Fix locking to use
+ _nss_create_tablename. Avoid unnecessary copying, remove
+ unnecessary variables, general cleanup.
+ * nis/nss_nisplus/nisplus-grp.c: Likewise.
+
+ * io/Makefile (routines): Add mknodat, xmknodat, mkdirat, mkfifoat.
+ (static-only-routines): Add mknodat.
+ * io/Versions [GLIBC_2.4]: Add mkdirat, mkfifoat, __xmknodat.
+ * io/sys/stat.h: Declare mkditat, mknodat, mkfifoat, __xmknodat.
+ Define mknodat inline function.
+ * include/sys/stat.h: Add hidden proto for __xmknodat.
+ * sysdeps/generic/mkdirat.c: New file.
+ * sysdeps/generic/mkfifoat.c: New file.
+ * sysdeps/generic/mknodat.c: New file.
+ * sysdeps/generic/xmknodat.c: New file.
+ * sysdeps/unix/mkfifoat.c: New file.
+ * sysdeps/unix/sysv/linux/mkdirat.c: New file.
+ * sysdeps/unix/sysv/linux/xmknodat.c: New file.
+
+ * sysdeps/generic/xmknod.c: Add one more parameter check.
+
+2005-11-28 Andreas Jaeger <aj@suse.de>
+
+ * sysdeps/unix/sysv/linux/mips/bits/mman.h (MREMAP_FIXED): Added,
+ Patch by René Rebe <rene@exactcode.de>.
+
+2005-11-27 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/posix/getaddrinfo.c: Avoid RFC 3484 sorting if there are
+ multiple return records but only one address.
+
+ * sysdeps/posix/getaddrinfo.c (gaih_inet): Avoid some code duplication.
+
+2005-11-27 Roland McGrath <roland@redhat.com>
+
+ * sysdeps/unix/sysv/linux/fchownat.c: Include alloca.h, sysdep.h.
+ Reported by René Rebe <rene@exactcode.de>.
+
+2005-11-27 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/posix/euidaccess.c [_LIBC] (euidaccess): Don't cache
+ euid and egid.
+
+ * nis/nis_table.c (nis_list): Add more free calls in error cases.
+
+2005-11-26 Richard Henderson <rth@redhat.com>
+
+ * sysdeps/alpha/strncmp.S: Don't read too much data when pointers
+ are co-aligned, and count is aligned with the end of the word.
+
+2005-11-26 Ulrich Drepper <drepper@redhat.com>
+
+ * nis/nis_lookup.c (nis_lookup): Mark RPCTIMEOUT as const. Pretty
+ printing.
+
+ * nis/nis_table.c (__create_ib_request): Use strdupa instead of
+ variable size array.
+ (RPCTIMEOUT): Mark as const.
+
+ * nis/ypclnt.c (yp_bind_ypbindprog): Initialize clnt_saddr by hand.
+ (ypdomainname): Renamed from __ypdomainname. No need for initializer.
+ (ypbindlist): Renamed from __ypbindlist.
+ (do_ypcall): Check memory allocation suceeded before calling
+ yp_bind_ypbindprog.
+ (yperr_string): Reduce size of function by using only one gettext call.
+ (ypbinderr_string): Likewise.
+ (yp_match): Free response in case memory for return value cannot be
+ allocated.
+ (yp_first): Likewise.
+ (yp_next): Likewise.
+ (do_ypcall_tr): New function which translates error codes as well.
+ (yp_match, yp_next, yp_master, yp_order, yp_maplist): Use it.
+ (yp_all): Correct test for invalid parameter.
+ Pretty printing.
+ (RPCTIMEOUT, UDPTIMEOUT): Mark as const.
+
+2005-11-25 Richard Henderson <rth@redhat.com>
+
+ * sysdeps/unix/sysv/linux/alpha/fxstatat.c (__fxstatat): Fix typo.
+ (__fxstatat64): Alias from __fxstatat; remove other cnp errors.
+ * sysdeps/unix/sysv/linux/alpha/sigaction.c: Include sys/cdefs.h
+ and stddef.h.
+ * sysdeps/unix/sysv/linux/alpha/bits/mman.h (MREMAP_FIXED): Define.
+
+2005-11-25 Ulrich Drepper <drepper@redhat.com>
+
+ * Makeconfig (+cflags): Add -fmerge-all-constants by default.
+
+ [BZ #1912]
+ * nss/function.def: Add entry to use gethostbyname2 for files.
+
+2005-11-25 Thorsten Kukuk <kukuk@suse.de>
+
+ * sysdeps/unix/sysv/linux/fxstatat64.c: Include string.h.
+
+2005-11-25 Ulrich Drepper <drepper@redhat.com>
+
+ [BZ #1926]
+ * nss/nss_files/files-netgrp.c (_nss_files_endnetgrent): Change
+ return value type to match expected type.
+
+ [BZ #1925]
+ * nis/ypclnt.c (yp_order): Correct test for invalid parameter.
+
+2005-11-24 Ulrich Drepper <drepper@redhat.com>
+
+ * scripts/check-c++-types.sh: Improve comments.
+
+ * scripts/check-local-headers.sh: New file.
+ * Makefile (tests): Run check-local-headers.sh.
+
+2005-11-23 Thorsten Kukuk <kukuk@suse.de>
+
+ * include/sys/sendfile.h: New file.
+
+2005-11-24 Andreas Schwab <schwab@suse.de>
+
+ * time/sys/time.h: Remove nonnull attribute from futimesat.
+
+2005-11-22 Ulrich Drepper <drepper@redhat.com>
+
+ * nscd/connections.c (sendfileall): Define.
+ (handle_request): Use it instead of sendfile call.
+ * nscd/nscd-client.h: Declare sendfileall.
+ * nscd/aicache.c: Use sendfileall instead of sendfile.
+ * nscd/grpcache.c: Likewise.
+ * nscd/hstcache.c: Likewise.
+ * nscd/initgrcache.c: Likewise.
+ * nscd/pwdcache.c: Likewise.
+
+ [BZ #1908]
+ * manual/install.texi (Tools for Compilation): Require gawk.
+
+2005-11-22 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/generic/ldsodefs.h (struct rtld_global): Remove
+ unused is_static field from slotinfo array.
+
+2005-11-21 Jakub Jelinek <jakub@redhat.com>
+
+ * sunrpc/bindrsvprt.c (bindresvport): Wrap around to startport
+ in the loop if port is bigger than endport, initially set to
+ ENDPORT. When changing startport, set endport and port
+ appropriately.
+
+2005-11-21 Ulrich Drepper <drepper@redhat.com>
+
+ * Makefile.in: Remove RCS ID line.
+ * config-name.in: Likewise.
+ * config.make.in: Likewise.
+ * malloc/arena.c: Likewise.
+ * malloc/hooks.c: Likewise.
+ * malloc/malloc.c: Likewise.
+ * manual/dir: Likewise.
+ * math/math_private.h: Likewise.
+ * resolv/gethnamaddr.c: Likewise.
+ * scripts/mkinstalldirs: Likewise.
+ * sunrpc/rpc_clntout.c: Likewise.
+ * sunrpc/rpc_cout.c: Likewise.
+ * sunrpc/rpc_hout.c: Likewise.
+ * sunrpc/rpc_main.c: Likewise.
+ * sunrpc/rpc_parse.c: Likewise.
+ * sunrpc/rpc_sample.c: Likewise.
+ * sunrpc/rpc_scan.c: Likewise.
+ * sunrpc/rpc_svcout.c: Likewise.
+ * sunrpc/rpc_tblout.c: Likewise.
+ * sunrpc/rpc_util.c: Likewise.
+ * sysdeps/unix/sysv/linux/sys/quote.h: Likewise.
+
+ * nscd/nscd_helper.c: Pretty printing.
+
2005-11-19 Roland McGrath <roland@redhat.com>
* elf/elf.h: Revert last change.
+gccwarn := -Wall -Wwrite-strings -Winline -Wstrict-prototypes
endif
+# We do not depend on the address of constants in different files to be
+# actually different, so allow the compiler to merge them all.
++merge-constants = -fmerge-all-constants
+
# This is the program that generates makefile dependencies from C source files.
# The -MP flag tells GCC >= 3.2 (which we now require) to produce dummy
# targets for headers so that removed headers don't break the build.
+cflags := $(default_cflags)
endif # $(+cflags) == ""
-+cflags := $(+cflags) $(addprefix -mcpu=,$(with-cpu)) $(+gccwarn)
++cflags += $(addprefix -mcpu=,$(with-cpu)) $(+gccwarn) $(+merge-constants)
+gcc-nowarn := -w
# Don't duplicate options if we inherited variables from the parent.
+cflags := $(sort $(+cflags))
-# These are flags given to the C compiler to tell it to look for include
-# files (including ones given in angle brackets) in the current directory,
-# in the parent library source directory and in the include directory.
+# These are flags given to the C compiler to tell it to look for
+# include files (including ones given in angle brackets) in the parent
+# library source directory, in the include directory, and in the
+# current directory.
# `+sysdep-includes' will be defined by Makerules.
-+includes = -I$(..)include -I. \
- $(patsubst %/,-I%,$(objpfx)) $(patsubst %/,-I%,$(..)) \
++includes = -I$(..)include $(patsubst %/,-I%,$(..)) \
$(libio-include) $(includes) \
- $(+sysdep-includes) $(sysincludes)
+ $(+sysdep-includes) $(sysincludes) -I. \
+ $(patsubst %/,-I%,$(objpfx))
# Since libio has several internal header files, we use a -I instead
# of many little headers in the include directory.
tests-clean:
@$(MAKE) subdir_testclean no_deps=t
-tests: $(objpfx)c++-types-check.out
+tests: $(objpfx)c++-types-check.out $(objpfx)check-local-headers.out
ifneq ($(CXX),no)
check-data := $(firstword $(wildcard \
$(foreach M,$(config-machine) $(base-machine),\
endif
endif
+$(objpfx)check-local-headers.out: scripts/check-local-headers.sh
+ scripts/check-local-headers.sh "$(includedir)" "$(objpfx)" > $@
+
ifneq ($(PERL),no)
installed-headers = argp/argp.h assert/assert.h catgets/nl_types.h \
crypt/crypt.h ctype/ctype.h debug/execinfo.h \
-# Generated from $Id$.
-
srcdir = @srcdir@
# Uncomment the line below if you want to do parallel build.
# later directory would be chosen over a .c file in an earlier directory,
# which does not preserve the desired sysdeps ordering behavior.
-# It matters that this set of rules, for compiling from sources in
-# the current directory (the $srcdir/$subdir) come before the
-# generated sysdep rules in included from sysd-rules below. When
-# compiling in the source tree, generated sources go into the current
-# directory, and those should be chosen before any sources in sysdeps.
-define o-iterator-doit
-$(objpfx)%$o: %.S $(before-compile); $$(compile-command.S)
-endef
-object-suffixes-left := $(all-object-suffixes)
-include $(o-iterator)
-
-define o-iterator-doit
-$(objpfx)%$o: %.s $(before-compile); $$(compile-command.s)
-endef
-object-suffixes-left := $(all-object-suffixes)
-include $(o-iterator)
-
-define o-iterator-doit
-$(objpfx)%$o: %.c $(before-compile); $$(compile-command.c)
-endef
-object-suffixes-left := $(all-object-suffixes)
-include $(o-iterator)
-
-# Omit the objpfx rules when building in the source tree, because
-# objpfx is empty and so these rules just override the ones above.
-ifdef objpfx
-# Define first rules to find the source files in $(objpfx).
-# Generated source files will end up there.
-define o-iterator-doit
-$(objpfx)%$o: $(objpfx)%.S $(before-compile); $$(compile-command.S)
-endef
-object-suffixes-left := $(all-object-suffixes)
-include $(o-iterator)
-
-define o-iterator-doit
-$(objpfx)%$o: $(objpfx)%.s $(before-compile); $$(compile-command.s)
-endef
-object-suffixes-left := $(all-object-suffixes)
-include $(o-iterator)
-
-define o-iterator-doit
-$(objpfx)%$o: $(objpfx)%.c $(before-compile); $$(compile-command.c)
-endef
-object-suffixes-left := $(all-object-suffixes)
-include $(o-iterator)
-endif
-
# System-dependent makefiles can put in `inhibit-sysdep-asm' wildcard
# patterns matching sysdep directories whose assembly source files should
# be suppressed.
echo "\$$(objpfx)m_%.S: $$dir/s_%.S; \$$(+make-include-of-dep)"; \
echo "\$$(objpfx)m_%.c: $$dir/s_%.c; \$$(+make-include-of-dep)"; \
done; \
+ echo "\$$(objpfx)m_%.c: s_%.c; \$$(+make-include-of-dep)"; \
echo 'sysd-rules-done = t') > $@T
mv -f $@T $@
mv -f $@T $@
endef
+# It matters that this set of rules, for compiling from sources in
+# the current directory (the $srcdir/$subdir) come before the
+# generated sysdep rules in included from sysd-rules below. When
+# compiling in the source tree, generated sources go into the current
+# directory, and those should be chosen before any sources in sysdeps.
+define o-iterator-doit
+$(objpfx)%$o: %.S $(before-compile); $$(compile-command.S)
+endef
+object-suffixes-left := $(all-object-suffixes)
+include $(o-iterator)
+
+define o-iterator-doit
+$(objpfx)%$o: %.s $(before-compile); $$(compile-command.s)
+endef
+object-suffixes-left := $(all-object-suffixes)
+include $(o-iterator)
+
+define o-iterator-doit
+$(objpfx)%$o: %.c $(before-compile); $$(compile-command.c)
+endef
+object-suffixes-left := $(all-object-suffixes)
+include $(o-iterator)
+
+# Omit the objpfx rules when building in the source tree, because
+# objpfx is empty and so these rules just override the ones above.
+ifdef objpfx
+# Define first rules to find the source files in $(objpfx).
+# Generated source files will end up there.
+define o-iterator-doit
+$(objpfx)%$o: $(objpfx)%.S $(before-compile); $$(compile-command.S)
+endef
+object-suffixes-left := $(all-object-suffixes)
+include $(o-iterator)
+
+define o-iterator-doit
+$(objpfx)%$o: $(objpfx)%.s $(before-compile); $$(compile-command.s)
+endef
+object-suffixes-left := $(all-object-suffixes)
+include $(o-iterator)
+
+define o-iterator-doit
+$(objpfx)%$o: $(objpfx)%.c $(before-compile); $$(compile-command.c)
+endef
+object-suffixes-left := $(all-object-suffixes)
+include $(o-iterator)
+endif
+
# Generate version maps, but wait until sysdep-subdirs is known
ifeq ($(sysd-sorted-done),t)
ifeq ($(versioning),yes)
-GNU C Library NEWS -- history of user-visible changes. 2005-11-11
+GNU C Library NEWS -- history of user-visible changes. 2005-12-15
Copyright (C) 1992-2002,2003,2004,2005 Free Software Foundation, Inc.
See the end for copying conditions.
recommend using the stable 2.3 branch.
* New interfaces: fdopendir, openat, fstatat, fchownat, futimesat, renameat,
- unlinkat.
+ unlinkat, mkdirat, mkfifoat, mknodat, linkat, symlinkat, readlinkat.
\f
Version 2.3.6
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 1996.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
-# include <config.h>
+# include "config.h"
#endif
#include <argp.h>
/* @configure_input@ -*- C -*-
- Generated from $Id$.
This is used only by the generic `uname' function for systems with no real
`uname' call. If this data is not correct, it does not matter much. */
# @configure_input@
-# From $Id$.
# Don't edit this file. Put configuration parameters in configparms instead.
version = @VERSION@
_dl_make_stack_executable;
# Only here for gdb while a better method is developed.
_dl_debug_state;
+ # Pointer protection.
+ __pointer_chk_guard;
}
}
This file is part of the GNU C Library.
Contributed by Andreas Jaeger <aj@suse.de>, 1999.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <errno.h>
#include <error.h>
/* Return the canonical absolute name of a given file inside chroot.
- Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2004
+ Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2004, 2005
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 Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <stdlib.h>
#include <string.h>
lcatch->errstring = _dl_out_of_memory;
lcatch->malloced = false;
}
- longjmp (lcatch->env, errcode ?: -1);
+ /* We do not restore the signal mask because none was saved. */
+ __longjmp (lcatch->env, errcode ?: -1);
}
else
{
struct catch **const catchp = &CATCH_HOOK;
old = *catchp;
- errcode = setjmp (c.env);
+ /* Do not save the signal mask. */
+ errcode = __sigsetjmp (c.env, 0);
if (__builtin_expect (errcode, 0) == 0)
{
*catchp = &c;
/* Minimal replacements for basic facilities used in the dynamic linker.
- Copyright (C) 1995-1998,2000-2002,2004 Free Software Foundation, Inc.
+ Copyright (C) 1995-1998,2000-2002,2004,2005 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
env[0].__mask_was_saved = 0;
return 0;
}
-
-void weak_function
-longjmp (jmp_buf env, int val)
-{
- __longjmp (env[0].__jmpbuf, val);
-}
\f
/* Define our own version of the internal function used by strerror. We
only provide the messages for some common errors. This avoids pulling
This file is part of the GNU C Library.
Contributed by Andreas Jaeger <aj@suse.de>, 1999.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define PROCINFO_CLASS static
#include <alloca.h>
-/* Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2003, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Andreas Jaeger <aj@suse.de>, 1999 and
Jakub Jelinek <jakub@redhat.com>, 1999.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* The code in this file and in readelflib is a heavily simplified
version of the readelf program that's part of the current binutils
uintptr_t __stack_chk_guard attribute_relro;
#endif
+/* Only exported for architectures that don't store the pointer guard
+ value in thread local area. */
+uintptr_t __pointer_chk_guard_local
+ attribute_relro attribute_hidden __attribute__ ((nocommon));
+#ifndef THREAD_SET_POINTER_GUARD
+strong_alias (__pointer_chk_guard_local, __pointer_chk_guard)
+#endif
+
+
/* List of auditing DSOs. */
static struct audit_list
{
._dl_hwcap_mask = HWCAP_IMPORTANT,
._dl_lazy = 1,
._dl_fpu_control = _FPU_DEFAULT,
+ ._dl_pointer_guard = 1,
/* Function pointers. */
._dl_debug_printf = _dl_debug_printf,
__stack_chk_guard = stack_chk_guard;
#endif
+ /* Set up the pointer guard as well, if necessary. */
+ if (GLRO(dl_pointer_guard))
+ {
+ // XXX If it is cheap, we should use a separate value.
+ uintptr_t pointer_chk_guard = stack_chk_guard;
+#ifndef HP_TIMING_NONAVAIL
+ hp_timing_t now;
+ HP_TIMING_NOW (now);
+ pointer_chk_guard ^= now;
+#endif
+#ifdef THREAD_SET_POINTER_GUARD
+ THREAD_SET_POINTER_GUARD (pointer_chk_guard);
+#endif
+ __pointer_chk_guard_local = pointer_chk_guard;
+ }
+
if (__builtin_expect (mode, normal) != normal)
{
/* We were run just to list the shared libraries. It is
#endif
if (!INTUSE(__libc_enable_secure)
&& memcmp (envline, "USE_LOAD_BIAS", 13) == 0)
- GLRO(dl_use_load_bias) = envline[14] == '1' ? -1 : 0;
+ {
+ GLRO(dl_use_load_bias) = envline[14] == '1' ? -1 : 0;
+ break;
+ }
+
+ if (memcmp (envline, "POINTER_GUARD", 13) == 0)
+ GLRO(dl_pointer_guard) = envline[14] == '0';
break;
case 14:
glibc-base := HEAD
DIST_BRANCH := devel
COLLECTION := dist-fc4
-fedora-sync-date := 2005-11-19 19:59 UTC
-fedora-sync-tag := fedora-glibc-20051119T1959
+fedora-sync-date := 2005-12-19 10:03 UTC
+fedora-sync-tag := fedora-glibc-20051219T1003
-%define glibcrelease 18
+%define glibcrelease 19
%define auxarches i586 i686 athlon sparcv9 alphaev6
%define prelinkarches noarch
%define xenarches i686 athlon
Patch2: %{name}-ia64-lib64.patch
Buildroot: %{_tmppath}/glibc-%{PACKAGE_VERSION}-root
Obsoletes: zoneinfo, libc-static, libc-devel, libc-profile, libc-headers,
-Obsoletes: gencat, locale, ldconfig, locale-ja
+Obsoletes: gencat, locale, ldconfig, locale-ja, glibc-profile
Provides: ldconfig
Autoreq: false
Requires: glibc-common = %{version}-%{release}
Install glibc-headers if you are going to develop programs which will
use the standard C libraries.
-%package profile
-Summary: The GNU libc libraries, including support for gprof profiling.
-Group: Development/Libraries
-Obsoletes: libc-profile
-Autoreq: true
-
-%description profile
-The glibc-profile package includes the GNU libc libraries and support
-for profiling using the gprof program. Profiling is analyzing a
-program's functions to see how much CPU time they use and determining
-which functions are calling other functions during execution. To use
-gprof to profile a program, your program needs to use the GNU libc
-libraries included in glibc-profile (instead of the standard GNU libc
-libraries included in the glibc package).
-
-If you are going to use the gprof program to profile a program, you'll
-need to install the glibc-profile package.
-
%package common
Summary: Common binaries and locale data for glibc
Conflicts: %{name} < %{version}
--enable-add-ons=nptl$AddOns --without-cvs $EnableKernel \
--with-headers=%{_prefix}/include --enable-bind-now \
--with-tls --with-__thread --build %{nptl_target_cpu}-redhat-linux \
- --host %{nptl_target_cpu}-redhat-linux
+ --host %{nptl_target_cpu}-redhat-linux \
+ --disable-profile
make %{?_smp_mflags} -r CFLAGS="$build_CFLAGS" PARALLELMFLAGS=-s
cd ..
build_nptl linuxnptl
%if %{buildxen}
-EnableKernel="$EnableKernel --disable-profile"
build_nptl linuxnptl-nosegneg -mno-tls-direct-seg-refs
%endif
chmod 755 $i; rm -f $i.tmp
done
-grep '%{_prefix}/%{_lib}/lib.*_p\.a' < rpm.filelist > profile.filelist || :
grep '%{_infodir}' < rpm.filelist | grep -v '%{_infodir}/dir' > devel.filelist
grep '%{_prefix}/include/gnu/stubs-[32164]\+\.h' < rpm.filelist >> devel.filelist || :
set +x
echo Cutting down the list of unpackaged files
for i in `sed '/%%dir/d;/%%config/d;/%%verify/d;s/%%lang([^)]*) //' \
- common.filelist devel.filelist headers.filelist profile.filelist \
+ common.filelist devel.filelist headers.filelist \
utils.filelist nscd.filelist`; do
[ -f "$RPM_BUILD_ROOT$i" ] && rm -f "$RPM_BUILD_ROOT$i" || :
done
%files -f headers.filelist headers
%defattr(-,root,root)
-%files -f profile.filelist profile
-%defattr(-,root,root)
-
%files -f utils.filelist utils
%defattr(-,root,root)
%endif
%changelog
+* Mon Dec 19 2005 Jakub Jelinek <jakub@redhat.com> 2.3.90-19
+- update from CVS
+ - sysdeps/generic reorg
+ - setjmp/longjmp jump pointer mangling
+- rebuilt with GCC 4.1-RH prerelease, worked around broken _Pragma ()
+ handling in it
+- remove glibc-profile subpackage
+
* Sat Nov 19 2005 Jakub Jelinek <jakub@redhat.com> 2.3.90-18
- update from CVS
- change <sys/stat.h> for broken apps that #define const /**/,
* the rights to redistribute these changes.
*/
/*
- * HISTORY
- * $Log$
- * Revision 1.15 2001/09/19 03:04:09 drepper
- * (bcopy): Removed.
- * (realloc): Replace bcopy with memcpy.
- *
- * Revision 1.14 2001/04/01 05:03:14 roland
- * 2001-03-11 Roland McGrath <roland@frob.com>
- *
- * * mach/mach_error.h: Fix ancient #endif syntax.
- * * hurd/hurdmalloc.c: Likewise.
- *
- * 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 <thomas@gnu.ai.mit.edu>
- *
- * * mach/msg-destroy.c (mach_msg_destroy_port,
- * mach_msg_destroy_memory): Use prototype syntax.
- * * hurd/hurdmalloc.c (more_memory, malloc_fork_prepare,
- * malloc_fork_parent, malloc_fork_child): Likewise.
- *
- * Revision 1.11 1996/06/06 15:13:47 miles
- * Changes to bring in line with the hurd libthreads/malloc.c:
- * (more_memory): Use assert_perror instead of MACH_CALL.
- * "cthread_internals.h": Include removed.
- * (realloc): Use LOG2_MIN_SIZE.
- * (LOG2_MIN_SIZE): New macro.
- * (realloc): Don't bother allocating a new block if the
- * new size request fits in the old one and doesn't waste any space.
- * Only free the old block if we successfully got a new one.
- * [MCHECK] (struct header): New type.
- * (union header): Only define if !MCHECK.
- * (HEADER_SIZE, HEADER_NEXT, HEADER_FREE, HEADER_CHECK): New macros.
- * [MCHECK] (MIN_SIZE): Add correct definition for this case.
- * (more_memory, malloc, free, realloc): Use above macros, and add
- * appropriate checks & frobs in MCHECK case.
- *
- * Revision 1.6 1996/03/07 21:13:08 miles
- * (realloc):
- * Use LOG2_MIN_SIZE.
- * Don't bother allocating a new block if the new size request fits in the old
- * one and doesn't waste any space.
- * Only free the old block if we successfully got a new one.
- * (LOG2_MIN_SIZE): New macro.
- *
- * Revision 1.5 1996/03/06 23:51:04 miles
- * [MCHECK] (struct header): New type.
- * (union header): Only define if !MCHECK.
- * (HEADER_SIZE, HEADER_NEXT, HEADER_FREE, HEADER_CHECK): New macros.
- * [MCHECK] (MIN_SIZE): Add correct definition for this case.
- * (more_memory, malloc, free, realloc):
- * Use above macros, and add appropriate checks & frobs in MCHECK case.
- *
- * Revision 1.4 1994/05/05 11:21:42 roland
- * entered into RCS
+ * (pre-GNU) HISTORY
*
* Revision 2.7 91/05/14 17:57:34 mrt
* Correcting copyright
-/* Copyright (C) 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* For iconv we don't have to handle repertoire maps. Provide dummy
definitions to allow the use of linereader.c unchanged. */
/* Convert characters in input buffer using conversion descriptor to
output buffer.
- Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1997-2001, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
02111-1307 USA. */
#include <assert.h>
-#include <gconv_int.h>
-#include <sys/param.h>
#include <dlfcn.h>
#include <stddef.h>
+#include <sys/param.h>
+
+#include <gconv_int.h>
+#include <sysdep.h>
+
int
internal_function
cd->__data[last_step].__outbuf = outbuf != NULL ? *outbuf : NULL;
cd->__data[last_step].__outbufend = outbufend;
+ __gconv_fct fct = cd->__steps->__fct;
+#ifdef PTR_DEMANGLE
+ if (cd->__steps->__shlib_handle != NULL)
+ PTR_DEMANGLE (fct);
+#endif
+
if (inbuf == NULL || *inbuf == NULL)
/* We just flush. */
- result = DL_CALL_FCT (cd->__steps->__fct,
+ result = DL_CALL_FCT (fct,
(cd->__steps, cd->__data, NULL, NULL, NULL,
irreversible,
cd->__data[last_step].__outbuf == NULL ? 2 : 1, 0));
do
{
last_start = *inbuf;
- result = DL_CALL_FCT (cd->__steps->__fct,
+ result = DL_CALL_FCT (fct,
(cd->__steps, cd->__data, inbuf, inbufend,
NULL, irreversible, 0, 0));
}
/* Table for builtin transformation mapping.
- Copyright (C) 1997-1999, 2000-2002 Free Software Foundation, Inc.
+ Copyright (C) 1997-1999, 2000-2002, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
#include <endian.h>
#include <limits.h>
+#include <stdint.h>
#include <string.h>
#include <gconv_int.h>
#include <assert.h>
-static struct builtin_map
+static const struct builtin_map
{
const char *name;
__gconv_fct fct;
__gconv_btowc_fct btowc_fct;
- int min_needed_from;
- int max_needed_from;
- int min_needed_to;
- int max_needed_to;
+ int8_t min_needed_from;
+ int8_t max_needed_from;
+ int8_t min_needed_to;
+ int8_t max_needed_to;
} map[] =
{
/* Provide access to the collection of available transformation modules.
- Copyright (C) 1997-2003, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1997-2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <assert.h>
#include <limits.h>
#include <search.h>
#include <stdlib.h>
#include <dlfcn.h>
#include <gconv_int.h>
+#include <sysdep.h>
/* Simple data structure for alias mapping. We have two names, `from'
for (cnt = 0; cnt < deriv->nsteps; ++cnt)
if (deriv->steps[cnt].__counter > 0
&& deriv->steps[cnt].__end_fct != NULL)
- DL_CALL_FCT (deriv->steps[cnt].__end_fct, (&deriv->steps[cnt]));
+ {
+ assert (deriv->steps[cnt].__shlib_handle != NULL);
+
+ __gconv_end_fct end_fct = deriv->steps[cnt].__end_fct;
+#ifdef PTR_DEMANGLE
+ PTR_DEMANGLE (end_fct);
+#endif
+ DL_CALL_FCT (end_fct, (&deriv->steps[cnt]));
+ }
/* Free the name strings. */
free ((char *) deriv->steps[0].__from_name);
internal_function
__gconv_release_step (struct __gconv_step *step)
{
- if (--step->__counter == 0)
+ /* Skip builtin modules; they are not reference counted. */
+ if (step->__shlib_handle != NULL && --step->__counter == 0)
{
/* Call the destructor. */
if (step->__end_fct != NULL)
- DL_CALL_FCT (step->__end_fct, (step));
-
-#ifndef STATIC_GCONV
- /* Skip builtin modules; they are not reference counted. */
- if (step->__shlib_handle != NULL)
{
- /* Release the loaded module. */
- __gconv_release_shlib (step->__shlib_handle);
- step->__shlib_handle = NULL;
+ assert (step->__shlib_handle != NULL);
+
+ __gconv_end_fct end_fct = step->__end_fct;
+#ifdef PTR_DEMANGLE
+ PTR_DEMANGLE (end_fct);
+#endif
+ DL_CALL_FCT (end_fct, (step));
}
+
+#ifndef STATIC_GCONV
+ /* Release the loaded module. */
+ __gconv_release_shlib (step->__shlib_handle);
+ step->__shlib_handle = NULL;
#endif
}
+ else
+ /* Builtin modules should not have end functions. */
+ assert (step->__end_fct == NULL);
}
static int
result[step_cnt].__btowc_fct = NULL;
/* Call the init function. */
- if (result[step_cnt].__init_fct != NULL)
+ __gconv_init_fct init_fct = result[step_cnt].__init_fct;
+ if (init_fct != NULL)
{
- status = DL_CALL_FCT (result[step_cnt].__init_fct,
- (&result[step_cnt]));
+ assert (result[step_cnt].__shlib_handle != NULL);
+
+# ifdef PTR_DEMANGLE
+ PTR_DEMANGLE (init_fct);
+# endif
+ status = DL_CALL_FCT (init_fct, (&result[step_cnt]));
if (__builtin_expect (status, __GCONV_OK) != __GCONV_OK)
{
result[step_cnt].__end_fct = NULL;
break;
}
+
+# ifdef PTR_MANGLE
+ if (result[step_cnt].__btowc_fct != NULL)
+ PTR_MANGLE (result[step_cnt].__btowc_fct);
+# endif
}
}
else
}
/* Call the init function. */
- if (step->__init_fct != NULL)
- DL_CALL_FCT (step->__init_fct, (step));
+ __gconv_init_fct init_fct = step->__init_fct;
+ if (init_fct != NULL)
+ {
+#ifdef PTR_DEMANGLE
+ PTR_DEMANGLE (init_fct);
+#endif
+ DL_CALL_FCT (init_fct, (step));
+
+#ifdef PTR_MANGLE
+ if (step->__btowc_fct != NULL)
+ PTR_MANGLE (step->__btowc_fct);
+#endif
+ }
}
}
return result;
/* Handle loading/unloading of shared object for transformation.
- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004
+ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
#include <sys/param.h>
#include <gconv_int.h>
+#include <sysdep.h>
#ifdef DEBUG
found->init_fct = __libc_dlsym (found->handle, "gconv_init");
found->end_fct = __libc_dlsym (found->handle, "gconv_end");
+#ifdef PTR_MANGLE
+ PTR_MANGLE (found->fct);
+ if (found->init_fct != NULL)
+ PTR_MANGLE (found->init_fct);
+ if (found->end_fct != NULL)
+ PTR_MANGLE (found->end_fct);
+#endif
+
/* We have succeeded in loading the shared object. */
found->counter = 1;
}
/* Convert using charmaps and possibly iconv().
- Copyright (C) 2001 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <assert.h>
#include <errno.h>
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <argp.h>
#include <assert.h>
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2000.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <argp.h>
#include <assert.h>
# include <dlfcn.h>
#endif
+#include <sysdep.h>
+
#ifndef DL_CALL_FCT
# define DL_CALL_FCT(fct, args) fct args
#endif
{
struct __gconv_step *next_step = step + 1;
struct __gconv_step_data *next_data = data + 1;
- __gconv_fct fct;
+ __gconv_fct fct = NULL;
int status;
- fct = (data->__flags & __GCONV_IS_LAST) ? NULL : next_step->__fct;
+ if ((data->__flags & __GCONV_IS_LAST) == 0)
+ {
+ fct = next_step->__fct;
+#ifdef PTR_DEMANGLE
+ if (next_step->__shlib_handle != NULL)
+ PTR_DEMANGLE (fct);
+#endif
+ }
/* If the function is called with no input this means we have to reset
to the initial state. The possibly partly converted input is
__attribute_pure__;
extern int __versionsort64 (const void *a, const void *b)
__attribute_pure__;
-extern DIR *__alloc_dir (int fd, bool close_fd, struct stat64 *statp)
+extern DIR *__alloc_dir (int fd, bool close_fd, const struct stat64 *statp)
internal_function;
#endif
/* Helper functions for the various *at functions. For Linux. */
extern void __atfct_seterrno (int errval, int fd, const char *buf)
attribute_hidden;
+extern void __atfct_seterrno_2 (int errval, int fd1, const char *buf1,
+ int fd2, const char *buf2)
+ attribute_hidden;
#endif
--- /dev/null
+#include <io/sys/sendfile.h>
{
return __xmknod (_MKNOD_VER, __path, __mode, &__dev);
}
+libc_hidden_proto (__xmknodat)
/* The `stat', `fstat', `lstat' functions have to be handled special since
routines := \
utime \
- mkfifo \
- stat fstat lstat mknod stat64 fstat64 lstat64 fstatat fstatat64 \
- xstat fxstat lxstat xmknod xstat64 fxstat64 lxstat64 \
+ mkfifo mkfifoat \
+ stat fstat lstat stat64 fstat64 lstat64 fstatat fstatat64 \
+ xstat fxstat lxstat xstat64 fxstat64 lxstat64 \
+ mknod mknodat xmknod xmknodat \
fxstatat fxstatat64 \
statfs fstatfs statfs64 fstatfs64 \
statvfs fstatvfs statvfs64 fstatvfs64 \
- umask chmod fchmod lchmod mkdir \
+ umask chmod fchmod lchmod mkdir mkdirat \
open open64 openat openat64 close \
read write lseek lseek64 access euidaccess \
fcntl flock lockf lockf64 \
getcwd getwd getdirname \
chown fchown lchown fchownat \
ttyname ttyname_r isatty \
- link symlink readlink \
+ link linkat symlink symlinkat readlink readlinkat \
unlink unlinkat rmdir \
ftw ftw64 fts poll \
posix_fadvise posix_fadvise64 \
# These routines will be omitted from the libc shared object.
# Instead the static object files will be included in a special archive
# linked against when the shared library will be used.
-static-only-routines = stat fstat lstat mknod stat64 fstat64 lstat64 \
- fstatat fstatat64
+static-only-routines = stat fstat lstat stat64 fstat64 lstat64 \
+ fstatat fstatat64 mknod mknodat
others := pwd
test-srcs := ftwtest
GLIBC_2.4 {
fchownat;
__fxstatat; __fxstatat64;
+ linkat;
+ mkdirat; mkfifoat; __xmknodat;
openat; openat64;
+ readlinkat;
+ symlinkat;
unlinkat;
}
}
--- /dev/null
+/* Copyright (C) 2005 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stddef.h>
+#include <unistd.h>
+
+
+/* Make a link to FROM relative to FROMFD called TO relative to TOFD. */
+int
+linkat (fromfd, from, tofd, to)
+ int fromfd;
+ const char *from;
+ int tofd;
+ const char *to;
+{
+ if (from == NULL || to == NULL)
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+
+ if ((tofd != AT_FDCWD && tofd < 0 && *to != '/')
+ || (fromfd != AT_FDCWD && fromfd < 0 && *from != '/'))
+ {
+ __set_errno (EBADF);
+ return -1;
+ }
+
+ __set_errno (ENOSYS);
+ return -1;
+}
+stub_warning (linkat)
+
+#include <stub-tag.h>
--- /dev/null
+/* Copyright (C) 1991, 1995, 1996, 1997, 2005 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stddef.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+
+/* Create a directory named PATH relative to FD with protections MODE. */
+int
+mkdirat (fd, path, mode)
+ int fd;
+ const char *path;
+ mode_t mode;
+{
+ if (path == NULL)
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+
+ if (fd != AT_FDCWD && path[0] != '/')
+ {
+ /* Check FD is associated with a directory. */
+ struct stat64 st;
+ if (__fxstat64 (_STAT_VER, fd, &st) != 0)
+ return -1;
+
+ if (!S_ISDIR (st.st_mode))
+ {
+ __set_errno (ENOTDIR);
+ return -1;
+ }
+ }
+
+ __set_errno (ENOSYS);
+ return -1;
+}
+stub_warning (mkdirat)
+
+#include <stub-tag.h>
--- /dev/null
+/* Copyright (C) 1991, 1995, 1996, 1997, 2005 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stddef.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+
+/* Create a named pipe (FIFO) named PATH relative to FD with
+ protections MODE. */
+int
+mkfifoat (fd, path, mode)
+ int fd;
+ const char *path;
+ mode_t mode;
+{
+ if (path == NULL)
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+
+ if (fd != AT_FDCWD && path[0] != '/')
+ {
+ /* Check FD is associated with a directory. */
+ struct stat64 st;
+ if (__fxstat64 (_STAT_VER, fd, &st) != 0)
+ return -1;
+
+ if (!S_ISDIR (st.st_mode))
+ {
+ __set_errno (ENOTDIR);
+ return -1;
+ }
+ }
+
+ __set_errno (ENOSYS);
+ return -1;
+}
+
+
+stub_warning (mkfifoat)
+#include <stub-tag.h>
--- /dev/null
+/* Copyright (C) 1995, 1996, 2001, 2005 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ In addition to the permissions in the GNU Lesser General Public
+ License, the Free Software Foundation gives you unlimited
+ permission to link the compiled version of this file with other
+ programs, and to distribute those programs without any restriction
+ coming from the use of this file. (The GNU Lesser General Public
+ License restrictions do apply in other respects; for example, they
+ cover modification of the file, and distribution when not linked
+ into another program.)
+
+ Note that people who make modified versions of this file are not
+ obligated to grant this special exception for their modified
+ versions; it is their choice whether to do so. The GNU Lesser
+ General Public License gives permission to release a modified
+ version without this exception; this exception also makes it
+ possible to release a modified version which carries forward this
+ exception.
+
+ 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+/* This definition is only used if inlining fails for this function; see
+ the last page of <sys/stat.h>. The real work is done by the `x'
+ function which is passed a version number argument. We arrange in the
+ makefile that when not inlined this function is always statically
+ linked; that way a dynamically-linked executable always encodes the
+ version number corresponding to the data structures it uses, so the `x'
+ functions in the shared library can adapt without needing to recompile
+ all callers. */
+
+int
+mknodat (int fd, const char *path, mode_t mode, dev_t dev)
+{
+ return __xmknodat (_MKNOD_VER, fd, path, mode, &dev);
+}
+
+
+/* Hide the symbol so that no definition but the one locally in the
+ executable or DSO is used. */
+#ifdef HAVE_DOT_HIDDEN
+asm (".hidden\tmknodat");
+#endif
--- /dev/null
+/* Copyright (C) 2005 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+/* Read the contents of the symbolic link PATH relative to FD into no
+ more than LEN bytes of BUF. The contents are not null-terminated.
+ Returns the number of characters read, or -1 for errors. */
+int
+readlinkat (fd, path, buf, len)
+ int fd;
+ const char *path;
+ char *buf;
+ size_t len;
+{
+ if (path == NULL)
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+
+ if (fd != AT_FDCWD && fd < 0 && *path != '/')
+ {
+ __set_errno (EBADF);
+ return -1;
+ }
+
+ __set_errno (ENOSYS);
+ return -1;
+}
+stub_warning (readlinkat)
+
+#include <stub-tag.h>
-/* Determine the "endianness" of the CPU.
- Copyright (C) 1991, 1992, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
- Contributed by Torbjorn Granlund (tege@sics.se).
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <stdio.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stddef.h>
+#include <unistd.h>
-main ()
-{
- unsigned long int i;
-
- if (sizeof (i) != 4)
- puts ("#error \"Not a 32-bit machine!\"");
-
- i = (((((('4' << 8) + '3') << 8) + '2') << 8) + '1');
- printf ("#define __BYTE_ORDER %.4s\n", (char *) &i);
-
- exit (0);
+/* Make a link to FROM called TO relative to FD. */
+int
+symlinkat (from, fd, to)
+ const char *from;
+ int fd;
+ const char *to;
+{
+ if (from == NULL || to == NULL)
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+
+ if (fd != AT_FDCWD && fd < 0 && *to != '/')
+ {
+ __set_errno (EBADF);
+ return -1;
+ }
+
+ __set_errno (ENOSYS);
+ return -1;
}
+stub_warning (symlinkat)
+
+#include <stub-tag.h>
Relative path names are interpreted relative to FD unless FD is
AT_FDCWD. */
# ifndef __USE_FILE_OFFSET64
-extern int fstatat (int __fd, __const char *__file, struct stat *__buf,
- int __flag) __THROW __nonnull ((2, 3));
+extern int fstatat (int __fd, __const char *__restrict __file,
+ struct stat *__restrict __buf, int __flag)
+ __THROW __nonnull ((2, 3));
# else
# ifdef __REDIRECT_NTH
-extern int __REDIRECT_NTH (fstatat, (int __fd, __const char *__file,
- struct stat *__buf, int __flag),
+extern int __REDIRECT_NTH (fstatat, (int __fd, __const char *__restrict __file,
+ struct stat *__restrict __buf,
+ int __flag),
fstatat64) __nonnull ((2, 3));
# else
# define fstatat fstatat64
# endif
# endif
-extern int fstatat64 (int __fd, __const char *__file, struct stat64 *__buf,
- int __flag) __THROW __nonnull ((2, 3));
+extern int fstatat64 (int __fd, __const char *__restrict __file,
+ struct stat64 *__restrict __buf, int __flag)
+ __THROW __nonnull ((2, 3));
#endif
#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
extern int mkdir (__const char *__path, __mode_t __mode)
__THROW __nonnull ((1));
+#ifdef __USE_GNU
+/* Like mkdir, create a new directory with permission bits MODE. But
+ interpret relative PATH names relative to the directory associated
+ with FD. */
+extern int mkdirat (int __fd, __const char *__path, __mode_t __mode)
+ __THROW __nonnull ((2));
+#endif
+
/* Create a device file named PATH, with permission and special bits MODE
and device number DEV (which can be constructed from major and minor
device numbers with the `makedev' macro above). */
__THROW __nonnull ((1));
#endif
+#ifdef __USE_GNU
+/* Like mknod, create a new device file with permission bits MODE and
+ device number DEV. But interpret relative PATH names relative to
+ the directory associated with FD. */
+extern int mknodat (int __fd, __const char *__path, __mode_t __mode,
+ __dev_t __dev) __THROW __nonnull ((2));
+#endif
+
/* Create a new FIFO named PATH, with permission bits MODE. */
extern int mkfifo (__const char *__path, __mode_t __mode)
__THROW __nonnull ((1));
+
+#ifdef __USE_GNU
+/* Like mkfifo, create a new FIFO with permission bits MODE. But
+ interpret relative PATH names relative to the directory associated
+ with FD. */
+extern int mkfifoat (int __fd, __const char *__path, __mode_t __mode)
+ __THROW __nonnull ((2));
+#endif
\f
/* To allow the `struct stat' structure and the file type `mode_t'
bits to vary without changing shared library major version number,
extern int __xmknod (int __ver, __const char *__path, __mode_t __mode,
__dev_t *__dev) __THROW __nonnull ((2, 4));
+extern int __xmknodat (int __ver, int __fd, __const char *__path,
+ __mode_t __mode, __dev_t *__dev)
+ __THROW __nonnull ((3, 5));
+
#if defined __GNUC__ && __GNUC__ >= 2
/* Inlined versions of the real stat and mknod functions. */
}
# endif
+# ifdef __USE_GNU
+extern __inline__ int
+__NTH (mknodat (int __fd, __const char *__path, __mode_t __mode,
+ __dev_t __dev))
+{
+ return __xmknodat (_MKNOD_VER, __fd, __path, __mode, &__dev);
+}
+# endif
+
# if defined __USE_LARGEFILE64 \
&& (! defined __USE_FILE_OFFSET64 \
|| (defined __REDIRECT_NTH && defined __OPTIMIZE__))
-/* Copyright (C) 1991,1993,1995,1996,1997,2002 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1993,1995-1997,2002,2005 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
return -1;
}
+ if (path == NULL)
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+
__set_errno (ENOSYS);
return -1;
}
--- /dev/null
+/* Copyright (C) 2005 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+/* Create a device file named PATH relative to FD, with permission and
+ special bits MODE and device number DEV (which can be constructed
+ from major and minor device numbers with the `makedev' macro
+ above). */
+int
+__xmknodat (int vers, int fd, const char *path, mode_t mode, dev_t *dev)
+{
+ if (vers != _MKNOD_VER)
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+
+ if (path == NULL)
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+
+ if (fd != AT_FDCWD && path[0] != '/')
+ {
+ /* Check FD is associated with a directory. */
+ struct stat64 st;
+ if (__fxstat64 (_STAT_VER, fd, &st) != 0)
+ return -1;
+
+ if (!S_ISDIR (st.st_mode))
+ {
+ __set_errno (ENOTDIR);
+ return -1;
+ }
+ }
+
+ __set_errno (ENOSYS);
+ return -1;
+}
+stub_warning (__xmknodat)
+
+libc_hidden_def (__xmknodat)
+#include <stub-tag.h>
# include <wcsmbs/wcsmbsload.h>
# include <iconv/gconv_int.h>
# include <shlib-compat.h>
+# include <sysdep.h>
#endif
/* The functions used in `codecvt' for libio are always the same. */
-struct _IO_codecvt __libio_codecvt =
+const struct _IO_codecvt __libio_codecvt =
{
.__codecvt_destr = NULL, /* Destructor, never used. */
.__codecvt_do_out = do_out,
#ifdef _LIBC
-struct __gconv_trans_data __libio_translit attribute_hidden =
+const struct __gconv_trans_data __libio_translit attribute_hidden =
{
.__trans_fct = __gconv_transliterate
};
selected locale for LC_CTYPE. */
#ifdef _LIBC
{
- struct gconv_fcts fcts;
-
/* Clear the state. We start all over again. */
memset (&fp->_wide_data->_IO_state, '\0', sizeof (__mbstate_t));
memset (&fp->_wide_data->_IO_last_state, '\0', sizeof (__mbstate_t));
+ struct gconv_fcts fcts;
__wcsmbs_clone_conv (&fcts);
assert (fcts.towc_nsteps == 1);
assert (fcts.tomb_nsteps == 1);
cc->__cd_out.__cd.__data[0].__statep = &fp->_wide_data->_IO_state;
/* And now the transliteration. */
- cc->__cd_out.__cd.__data[0].__trans = &__libio_translit;
+ cc->__cd_out.__cd.__data[0].__trans
+ = (struct __gconv_trans_data *) &__libio_translit;
}
#else
# ifdef _GLIBCPP_USE_WCHAR_T
codecvt->__cd_out.__cd.__data[0].__outbufend = (unsigned char *) to_end;
codecvt->__cd_out.__cd.__data[0].__statep = statep;
- status = DL_CALL_FCT (gs->__fct,
+ __gconv_fct fct = gs->__fct;
+#ifdef PTR_DEMANGLE
+ if (gs->__shlib_handle != NULL)
+ PTR_DEMANGLE (fct);
+#endif
+
+ status = DL_CALL_FCT (fct,
(gs, codecvt->__cd_out.__cd.__data, &from_start_copy,
(const unsigned char *) from_end, NULL,
&dummy, 0, 0));
codecvt->__cd_out.__cd.__data[0].__outbufend = (unsigned char *) to_end;
codecvt->__cd_out.__cd.__data[0].__statep = statep;
- status = DL_CALL_FCT (gs->__fct,
+ __gconv_fct fct = gs->__fct;
+#ifdef PTR_DEMANGLE
+ if (gs->__shlib_handle != NULL)
+ PTR_DEMANGLE (fct);
+#endif
+
+ status = DL_CALL_FCT (fct,
(gs, codecvt->__cd_out.__cd.__data, NULL, NULL,
NULL, &dummy, 1, 0));
codecvt->__cd_in.__cd.__data[0].__outbufend = (unsigned char *) to_end;
codecvt->__cd_in.__cd.__data[0].__statep = statep;
- status = DL_CALL_FCT (gs->__fct,
+ __gconv_fct fct = gs->__fct;
+#ifdef PTR_DEMANGLE
+ if (gs->__shlib_handle != NULL)
+ PTR_DEMANGLE (fct);
+#endif
+
+ status = DL_CALL_FCT (fct,
(gs, codecvt->__cd_in.__cd.__data, &from_start_copy,
(const unsigned char *) from_end, NULL,
&dummy, 0, 0));
codecvt->__cd_in.__cd.__data[0].__outbufend = (unsigned char *) &to_buf[max];
codecvt->__cd_in.__cd.__data[0].__statep = statep;
- status = DL_CALL_FCT (gs->__fct,
+ __gconv_fct fct = gs->__fct;
+#ifdef PTR_DEMANGLE
+ if (gs->__shlib_handle != NULL)
+ PTR_DEMANGLE (fct);
+#endif
+
+ status = DL_CALL_FCT (fct,
(gs, codecvt->__cd_in.__cd.__data, &cp,
(const unsigned char *) from_end, NULL,
&dummy, 0, 0));
-/* Copyright (C) 1993, 1997-2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1997-2003, 2004, 2005 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
extern const struct _IO_jump_t _IO_old_proc_jumps attribute_hidden;
extern const struct _IO_jump_t _IO_str_jumps attribute_hidden;
extern const struct _IO_jump_t _IO_wstr_jumps attribute_hidden;
-extern struct _IO_codecvt __libio_codecvt attribute_hidden;
+extern const struct _IO_codecvt __libio_codecvt attribute_hidden;
extern int _IO_do_write (_IO_FILE *, const char *, _IO_size_t) __THROW;
extern int _IO_new_do_write (_IO_FILE *, const char *, _IO_size_t) __THROW;
extern int _IO_old_do_write (_IO_FILE *, const char *, _IO_size_t) __THROW;
-/* Copyright (C) 2000-2001, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2001, 2003, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Bruno Haible <haible@clisp.cons.org>, 2000.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Construction of sparse 3-level tables.
See wchar-lookup.h or coll-lookup.h for their structure and the
-/* Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001, 2002, 2003, 2005 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 Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <dirent.h>
#include <errno.h>
-/* Copyright (C) 2000 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2005 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 Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef _CHARMAP_DIR_H
#define _CHARMAP_DIR_H 1
%{
-/* Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1995,1996,1997,1998,1999,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@gnu.org>.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <string.h>
-/* ANSI-C code produced by gperf version 2.7.2 */
+/* ANSI-C code produced by gperf version 3.0.1 */
/* Command-line: gperf -acCgopt -k'1,2,5,9,$' -L ANSI-C -N charmap_hash programs/charmap-kw.gperf */
-/* Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+ && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+ && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+ && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+ && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+ && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+ && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+ && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+ && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+ && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+ && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+ && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+ && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+ && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+ && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+ && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+ && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+ && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+ && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+ && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646. */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
+#endif
+
+#line 1 "programs/charmap-kw.gperf"
+
+/* Copyright (C) 1995,1996,1997,1998,1999,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@gnu.org>.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <string.h>
#include "locfile-token.h"
+#line 23 "programs/charmap-kw.gperf"
struct keyword_t ;
#define TOTAL_KEYWORDS 17
36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
- 36, 36, 36, 36, 36, 36, 36, 36, 25, 10,
- 15, 20, 36, 36, 36, 36, 36, 36, 36, 36,
- 36, 36, 36, 36, 36, 36, 36, 10, 0, 0,
- 5, 36, 0, 0, 36, 36, 36, 0, 0, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36, 25, 20,
+ 15, 10, 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 5, 0, 0,
+ 5, 36, 0, 0, 36, 36, 36, 5, 0, 36,
0, 36, 0, 36, 0, 36, 36, 0, 36, 36,
- 36, 36, 36, 36, 36, 0, 36, 0, 0, 0,
- 10, 0, 36, 0, 0, 0, 36, 36, 36, 0,
+ 36, 36, 36, 36, 36, 0, 36, 5, 0, 0,
+ 5, 0, 36, 5, 0, 0, 36, 36, 36, 0,
0, 0, 0, 0, 0, 0, 0, 0, 36, 36,
- 25, 36, 36, 36, 36, 36, 36, 36, 36, 36,
+ 0, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
switch (hval)
{
default:
- case 9:
hval += asso_values[(unsigned char)str[8]];
+ /*FALLTHROUGH*/
case 8:
case 7:
case 6:
case 5:
hval += asso_values[(unsigned char)str[4]];
+ /*FALLTHROUGH*/
case 4:
case 3:
case 2:
hval += asso_values[(unsigned char)str[1]];
+ /*FALLTHROUGH*/
case 1:
hval += asso_values[(unsigned char)str[0]];
break;
static const struct keyword_t wordlist[] =
{
{""}, {""}, {""},
+#line 38 "programs/charmap-kw.gperf"
{"END", tok_end, 0},
{""},
+#line 39 "programs/charmap-kw.gperf"
{"WIDTH", tok_width, 0},
+#line 34 "programs/charmap-kw.gperf"
{"escseq", tok_escseq, 1},
+#line 36 "programs/charmap-kw.gperf"
{"include", tok_include, 1},
{""}, {""},
+#line 27 "programs/charmap-kw.gperf"
{"mb_cur_min", tok_mb_cur_min, 1},
+#line 28 "programs/charmap-kw.gperf"
{"escape_char", tok_escape_char, 1},
+#line 29 "programs/charmap-kw.gperf"
{"comment_char", tok_comment_char, 1},
+#line 25 "programs/charmap-kw.gperf"
{"code_set_name", tok_code_set_name, 1},
+#line 40 "programs/charmap-kw.gperf"
{"WIDTH_VARIABLE", tok_width_variable, 0},
- {"g1esc", tok_g1esc, 1},
+#line 26 "programs/charmap-kw.gperf"
+ {"mb_cur_max", tok_mb_cur_max, 1},
+#line 35 "programs/charmap-kw.gperf"
{"addset", tok_addset, 1},
+#line 37 "programs/charmap-kw.gperf"
{"CHARMAP", tok_charmap, 0},
+#line 41 "programs/charmap-kw.gperf"
{"WIDTH_DEFAULT", tok_width_default, 0},
{""},
- {"g2esc", tok_g2esc, 1},
- {""}, {""}, {""}, {""},
+#line 33 "programs/charmap-kw.gperf"
{"g3esc", tok_g3esc, 1},
{""}, {""}, {""}, {""},
- {"g0esc", tok_g0esc, 1},
+#line 32 "programs/charmap-kw.gperf"
+ {"g2esc", tok_g2esc, 1},
+ {""}, {""}, {""}, {""},
+#line 31 "programs/charmap-kw.gperf"
+ {"g1esc", tok_g1esc, 1},
{""}, {""}, {""}, {""},
- {"mb_cur_max", tok_mb_cur_max, 1}
+#line 30 "programs/charmap-kw.gperf"
+ {"g0esc", tok_g0esc, 1}
};
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
-/* Copyright (C) 1996, 1998-2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1998-2004,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
-/* Copyright (C) 1996-1999, 2001, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1996-1999, 2001, 2003, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef _CHARMAP_H
#define _CHARMAP_H
/* Configuration for localedef program.
- Copyright (C) 1995, 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1995,1996,1997,1998,2000,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1995.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef _LD_CONFIG_H
#define _LD_CONFIG_H 1
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
-/* Copyright (C) 1995-2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2002, 2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
-/* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1998,1999,2000,2001,2002,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
-/* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1998,1999,2000,2001,2002,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
-/* Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1999,2000,2001,2002,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
-/* Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1999,2000,2001,2002,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
-/* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1998,1999,2000,2001,2002,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
-/* Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1999,2000,2001,2002,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
-/* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1998,1999,2000,2001,2002,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
-/* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1998,1999,2000,2001,2002,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
-/* Copyright (C) 1995-2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2002, 2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
-/* Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2001, 2002, 2003, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@gnu.org>.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef _LINEREADER_H
#define _LINEREADER_H 1
/* Handle special requests.
- Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 1999, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1995.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1995.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
/* General definitions for localedef(1).
- Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1998,1999,2000,2001,2002,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef _LOCALEDEF_H
#define _LOCALEDEF_H 1
-/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
%{
-/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1996,1997,1998,1999,2000,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <string.h>
-/* ANSI-C code produced by gperf version 2.7.2 */
+/* ANSI-C code produced by gperf version 3.0.1 */
/* Command-line: gperf -acCgopt -k'1,2,5,9,$' -L ANSI-C -N locfile_hash programs/locfile-kw.gperf */
-/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+ && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+ && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+ && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+ && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+ && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+ && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+ && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+ && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+ && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+ && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+ && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+ && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+ && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+ && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+ && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+ && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+ && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+ && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+ && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646. */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
+#endif
+
+#line 1 "programs/locfile-kw.gperf"
+
+/* Copyright (C) 1996,1997,1998,1999,2000,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <string.h>
#include "locfile-token.h"
+#line 23 "programs/locfile-kw.gperf"
struct keyword_t ;
#define TOTAL_KEYWORDS 175
#define MIN_WORD_LENGTH 3
#define MAX_WORD_LENGTH 22
#define MIN_HASH_VALUE 3
-#define MAX_HASH_VALUE 687
-/* maximum key range = 685, duplicates = 0 */
+#define MAX_HASH_VALUE 610
+/* maximum key range = 608, duplicates = 0 */
#ifdef __GNUC__
__inline
{
static const unsigned short asso_values[] =
{
- 688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
- 688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
- 688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
- 688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
- 688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
- 5, 0, 688, 688, 688, 688, 688, 688, 688, 688,
- 688, 688, 688, 688, 688, 15, 688, 0, 0, 0,
- 5, 0, 0, 0, 688, 688, 0, 688, 0, 5,
- 688, 688, 15, 0, 5, 15, 688, 688, 688, 0,
- 688, 688, 688, 688, 688, 75, 688, 0, 0, 65,
- 5, 0, 85, 40, 5, 155, 688, 10, 105, 120,
- 125, 35, 5, 20, 5, 190, 0, 125, 35, 10,
- 30, 35, 0, 688, 688, 688, 688, 688, 688, 688,
- 688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
- 688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
- 688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
- 688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
- 688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
- 688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
- 688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
- 688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
- 688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
- 688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
- 688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
- 688, 688, 688, 688, 688, 688, 688, 688, 688, 688,
- 688, 688, 688, 688, 688, 688
+ 611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+ 611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+ 611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+ 611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+ 611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+ 5, 0, 611, 611, 611, 611, 611, 611, 611, 611,
+ 611, 611, 611, 611, 611, 5, 611, 0, 0, 0,
+ 0, 0, 10, 0, 611, 611, 0, 611, 0, 5,
+ 611, 611, 0, 0, 0, 10, 611, 611, 611, 0,
+ 611, 611, 611, 611, 611, 0, 611, 145, 105, 25,
+ 15, 0, 190, 110, 10, 35, 611, 0, 80, 65,
+ 5, 130, 40, 50, 5, 0, 10, 35, 50, 20,
+ 5, 10, 0, 611, 611, 611, 611, 611, 611, 611,
+ 611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+ 611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+ 611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+ 611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+ 611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+ 611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+ 611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+ 611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+ 611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+ 611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+ 611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+ 611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
+ 611, 611, 611, 611, 611, 611
};
register int hval = len;
switch (hval)
{
default:
- case 9:
hval += asso_values[(unsigned char)str[8]];
+ /*FALLTHROUGH*/
case 8:
case 7:
case 6:
case 5:
hval += asso_values[(unsigned char)str[4]];
+ /*FALLTHROUGH*/
case 4:
case 3:
case 2:
hval += asso_values[(unsigned char)str[1]];
+ /*FALLTHROUGH*/
case 1:
hval += asso_values[(unsigned char)str[0]];
break;
static const struct keyword_t wordlist[] =
{
{""}, {""}, {""},
+#line 30 "programs/locfile-kw.gperf"
{"END", tok_end, 0},
- {""}, {""}, {""},
+ {""}, {""},
+#line 69 "programs/locfile-kw.gperf"
+ {"IGNORE", tok_ignore, 0},
+#line 127 "programs/locfile-kw.gperf"
{"LC_TIME", tok_lc_time, 0},
- {"era", tok_era, 0},
- {"date", tok_date, 0},
+#line 29 "programs/locfile-kw.gperf"
+ {"LC_CTYPE", tok_lc_ctype, 0},
+ {""},
+#line 164 "programs/locfile-kw.gperf"
{"LC_ADDRESS", tok_lc_address, 0},
+#line 149 "programs/locfile-kw.gperf"
{"LC_MESSAGES", tok_lc_messages, 0},
- {"LC_TELEPHONE", tok_lc_telephone, 0},
- {"LC_CTYPE", tok_lc_ctype, 0},
- {"era_t_fmt", tok_era_t_fmt, 0},
- {"print", tok_print, 0},
- {"height", tok_height, 0},
+#line 157 "programs/locfile-kw.gperf"
+ {"LC_NAME", tok_lc_name, 0},
+#line 154 "programs/locfile-kw.gperf"
+ {"LC_PAPER", tok_lc_paper, 0},
+#line 182 "programs/locfile-kw.gperf"
+ {"LC_MEASUREMENT", tok_lc_measurement, 0},
+#line 55 "programs/locfile-kw.gperf"
+ {"LC_COLLATE", tok_lc_collate, 0},
+ {""},
+#line 184 "programs/locfile-kw.gperf"
{"LC_IDENTIFICATION", tok_lc_identification, 0},
+#line 197 "programs/locfile-kw.gperf"
+ {"revision", tok_revision, 0},
+#line 68 "programs/locfile-kw.gperf"
+ {"UNDEFINED", tok_undefined, 0},
+#line 123 "programs/locfile-kw.gperf"
+ {"LC_NUMERIC", tok_lc_numeric, 0},
+#line 80 "programs/locfile-kw.gperf"
+ {"LC_MONETARY", tok_lc_monetary, 0},
+#line 177 "programs/locfile-kw.gperf"
+ {"LC_TELEPHONE", tok_lc_telephone, 0},
{""},
- {"era_d_fmt", tok_era_d_fmt, 0},
- {"LC_COLLATE", tok_lc_collate, 0},
- {"IGNORE", tok_ignore, 0},
- {"LC_NAME", tok_lc_name, 0},
- {"backward", tok_backward, 0},
+#line 130 "programs/locfile-kw.gperf"
{"week", tok_week, 0},
- {"LC_NUMERIC", tok_lc_numeric, 0},
+ {""},
+#line 74 "programs/locfile-kw.gperf"
+ {"define", tok_define, 0},
+#line 150 "programs/locfile-kw.gperf"
+ {"yesexpr", tok_yesexpr, 0},
+#line 139 "programs/locfile-kw.gperf"
+ {"era_year", tok_era_year, 0},
+ {""},
+#line 53 "programs/locfile-kw.gperf"
+ {"translit_ignore", tok_translit_ignore, 0},
+#line 152 "programs/locfile-kw.gperf"
+ {"yesstr", tok_yesstr, 0},
+ {""},
+#line 87 "programs/locfile-kw.gperf"
+ {"negative_sign", tok_negative_sign, 0},
+ {""},
+#line 135 "programs/locfile-kw.gperf"
+ {"t_fmt", tok_t_fmt, 0},
+#line 155 "programs/locfile-kw.gperf"
+ {"height", tok_height, 0},
+ {""}, {""},
+#line 51 "programs/locfile-kw.gperf"
+ {"translit_start", tok_translit_start, 0},
+#line 134 "programs/locfile-kw.gperf"
+ {"d_fmt", tok_d_fmt, 0},
+ {""},
+#line 52 "programs/locfile-kw.gperf"
+ {"translit_end", tok_translit_end, 0},
+#line 92 "programs/locfile-kw.gperf"
+ {"n_cs_precedes", tok_n_cs_precedes, 0},
+#line 142 "programs/locfile-kw.gperf"
+ {"era_t_fmt", tok_era_t_fmt, 0},
+#line 38 "programs/locfile-kw.gperf"
+ {"space", tok_space, 0},
+#line 71 "programs/locfile-kw.gperf"
{"reorder-end", tok_reorder_end, 0},
+#line 72 "programs/locfile-kw.gperf"
+ {"reorder-sections-after", tok_reorder_sections_after, 0},
{""},
- {"reorder-after", tok_reorder_after, 0},
- {"UNDEFINED", tok_undefined, 0},
+#line 140 "programs/locfile-kw.gperf"
+ {"era_d_fmt", tok_era_d_fmt, 0},
+#line 185 "programs/locfile-kw.gperf"
+ {"title", tok_title, 0},
+ {""}, {""},
+#line 147 "programs/locfile-kw.gperf"
+ {"timezone", tok_timezone, 0},
{""},
- {"LC_MONETARY", tok_lc_monetary, 0},
+#line 73 "programs/locfile-kw.gperf"
+ {"reorder-sections-end", tok_reorder_sections_end, 0},
+ {""}, {""}, {""},
+#line 93 "programs/locfile-kw.gperf"
+ {"n_sep_by_space", tok_n_sep_by_space, 0},
+ {""}, {""},
+#line 98 "programs/locfile-kw.gperf"
+ {"int_n_cs_precedes", tok_int_n_cs_precedes, 0},
+ {""}, {""}, {""},
+#line 25 "programs/locfile-kw.gperf"
+ {"escape_char", tok_escape_char, 0},
{""},
+#line 27 "programs/locfile-kw.gperf"
{"repertoiremap", tok_repertoiremap, 0},
- {"LC_MEASUREMENT", tok_lc_measurement, 0},
- {""}, {""}, {""},
- {"LC_PAPER", tok_lc_paper, 0},
+#line 45 "programs/locfile-kw.gperf"
+ {"charclass", tok_charclass, 0},
+#line 42 "programs/locfile-kw.gperf"
+ {"print", tok_print, 0},
+#line 43 "programs/locfile-kw.gperf"
+ {"xdigit", tok_xdigit, 0},
+#line 108 "programs/locfile-kw.gperf"
+ {"duo_n_cs_precedes", tok_duo_n_cs_precedes, 0},
+#line 125 "programs/locfile-kw.gperf"
+ {"thousands_sep", tok_thousands_sep, 0},
+#line 193 "programs/locfile-kw.gperf"
+ {"territory", tok_territory, 0},
+#line 35 "programs/locfile-kw.gperf"
+ {"digit", tok_digit, 0},
+ {""}, {""},
+#line 90 "programs/locfile-kw.gperf"
+ {"p_cs_precedes", tok_p_cs_precedes, 0},
+ {""},
+#line 156 "programs/locfile-kw.gperf"
+ {"width", tok_width, 0},
+#line 61 "programs/locfile-kw.gperf"
+ {"script", tok_script, 0},
+#line 28 "programs/locfile-kw.gperf"
+ {"include", tok_include, 0},
+ {""},
+#line 77 "programs/locfile-kw.gperf"
+ {"else", tok_else, 0},
+#line 180 "programs/locfile-kw.gperf"
+ {"int_select", tok_int_select, 0},
{""}, {""}, {""}, {""},
- {"day", tok_day, 0},
+#line 32 "programs/locfile-kw.gperf"
+ {"upper", tok_upper, 0},
{""}, {""},
- {"yesstr", tok_yesstr, 0},
- {""}, {""}, {""}, {""}, {""},
- {"toupper", tok_toupper, 0},
- {"era_year", tok_era_year, 0},
+#line 190 "programs/locfile-kw.gperf"
+ {"tel", tok_tel, 0},
+#line 91 "programs/locfile-kw.gperf"
+ {"p_sep_by_space", tok_p_sep_by_space, 0},
{""}, {""},
- {"order_start", tok_order_start, 0},
- {"tolower", tok_tolower, 0},
+#line 96 "programs/locfile-kw.gperf"
+ {"int_p_cs_precedes", tok_int_p_cs_precedes, 0},
{""}, {""},
- {"graph", tok_graph, 0},
+#line 40 "programs/locfile-kw.gperf"
+ {"punct", tok_punct, 0},
+ {""}, {""},
+#line 99 "programs/locfile-kw.gperf"
+ {"int_n_sep_by_space", tok_int_n_sep_by_space, 0},
{""}, {""}, {""},
- {"order_end", tok_order_end, 0},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 106 "programs/locfile-kw.gperf"
+ {"duo_p_cs_precedes", tok_duo_p_cs_precedes, 0},
+ {""}, {""},
+#line 46 "programs/locfile-kw.gperf"
+ {"class", tok_class, 0},
+#line 112 "programs/locfile-kw.gperf"
+ {"duo_int_n_cs_precedes", tok_duo_int_n_cs_precedes, 0},
+#line 113 "programs/locfile-kw.gperf"
+ {"duo_int_n_sep_by_space", tok_duo_int_n_sep_by_space, 0},
+#line 109 "programs/locfile-kw.gperf"
+ {"duo_n_sep_by_space", tok_duo_n_sep_by_space, 0},
+#line 117 "programs/locfile-kw.gperf"
+ {"duo_int_n_sign_posn", tok_duo_int_n_sign_posn, 0},
+ {""}, {""}, {""},
+#line 47 "programs/locfile-kw.gperf"
+ {"charconv", tok_charconv, 0},
+ {""}, {""},
+#line 183 "programs/locfile-kw.gperf"
+ {"measurement", tok_measurement, 0},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 57 "programs/locfile-kw.gperf"
+ {"section-symbol", tok_section_symbol, 0},
+#line 181 "programs/locfile-kw.gperf"
+ {"int_prefix", tok_int_prefix, 0},
+ {""}, {""}, {""}, {""},
+#line 137 "programs/locfile-kw.gperf"
+ {"t_fmt_ampm", tok_t_fmt_ampm, 0},
+ {""}, {""},
+#line 97 "programs/locfile-kw.gperf"
+ {"int_p_sep_by_space", tok_int_p_sep_by_space, 0},
{""},
- {"abday", tok_abday, 0},
+#line 41 "programs/locfile-kw.gperf"
+ {"graph", tok_graph, 0},
+ {""}, {""},
+#line 124 "programs/locfile-kw.gperf"
+ {"decimal_point", tok_decimal_point, 0},
+ {""}, {""},
+#line 110 "programs/locfile-kw.gperf"
+ {"duo_int_p_cs_precedes", tok_duo_int_p_cs_precedes, 0},
+#line 111 "programs/locfile-kw.gperf"
+ {"duo_int_p_sep_by_space", tok_duo_int_p_sep_by_space, 0},
+#line 107 "programs/locfile-kw.gperf"
+ {"duo_p_sep_by_space", tok_duo_p_sep_by_space, 0},
+#line 116 "programs/locfile-kw.gperf"
+ {"duo_int_p_sign_posn", tok_duo_int_p_sign_posn, 0},
+#line 153 "programs/locfile-kw.gperf"
+ {"nostr", tok_nostr, 0},
+ {""}, {""},
+#line 138 "programs/locfile-kw.gperf"
+ {"era", tok_era, 0},
{""},
- {"yesexpr", tok_yesexpr, 0},
+#line 82 "programs/locfile-kw.gperf"
+ {"currency_symbol", tok_currency_symbol, 0},
+ {""},
+#line 163 "programs/locfile-kw.gperf"
+ {"name_ms", tok_name_ms, 0},
+#line 161 "programs/locfile-kw.gperf"
+ {"name_mrs", tok_name_mrs, 0},
+#line 162 "programs/locfile-kw.gperf"
+ {"name_miss", tok_name_miss, 0},
+#line 81 "programs/locfile-kw.gperf"
+ {"int_curr_symbol", tok_int_curr_symbol, 0},
+#line 186 "programs/locfile-kw.gperf"
+ {"source", tok_source, 0},
+#line 160 "programs/locfile-kw.gperf"
+ {"name_mr", tok_name_mr, 0},
+#line 159 "programs/locfile-kw.gperf"
+ {"name_gen", tok_name_gen, 0},
+#line 198 "programs/locfile-kw.gperf"
+ {"date", tok_date, 0},
{""}, {""},
- {"t_fmt", tok_t_fmt, 0},
- {""}, {""}, {""}, {""},
- {"d_fmt", tok_d_fmt, 0},
+#line 187 "programs/locfile-kw.gperf"
+ {"address", tok_address, 0},
+#line 158 "programs/locfile-kw.gperf"
+ {"name_fmt", tok_name_fmt, 0},
+#line 31 "programs/locfile-kw.gperf"
+ {"copy", tok_copy, 0},
{""}, {""},
+#line 49 "programs/locfile-kw.gperf"
+ {"tolower", tok_tolower, 0},
+#line 129 "programs/locfile-kw.gperf"
+ {"day", tok_day, 0},
+#line 103 "programs/locfile-kw.gperf"
+ {"duo_currency_symbol", tok_duo_currency_symbol, 0},
+#line 101 "programs/locfile-kw.gperf"
+ {"int_n_sign_posn", tok_int_n_sign_posn, 0},
+ {""}, {""},
+#line 148 "programs/locfile-kw.gperf"
{"date_fmt", tok_date_fmt, 0},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"grouping", tok_grouping, 0},
+#line 63 "programs/locfile-kw.gperf"
+ {"order_end", tok_order_end, 0},
{""}, {""},
- {"tel_dom_fmt", tok_tel_dom_fmt, 0},
- {""}, {""}, {""}, {""},
- {"era_d_t_fmt", tok_era_d_t_fmt, 0},
- {"contact", tok_contact, 0},
- {"tel", tok_tel, 0},
- {"else", tok_else, 0},
- {"alpha", tok_alpha, 0},
- {"country_ab3", tok_country_ab3, 0},
- {""}, {""}, {""}, {""},
- {"country_ab2", tok_country_ab2, 0},
- {"country_post", tok_country_post, 0},
- {"fax", tok_fax, 0},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"map", tok_map, 0},
- {""},
- {"blank", tok_blank, 0},
+#line 166 "programs/locfile-kw.gperf"
+ {"country_name", tok_country_name, 0},
+#line 70 "programs/locfile-kw.gperf"
+ {"reorder-after", tok_reorder_after, 0},
+#line 118 "programs/locfile-kw.gperf"
+ {"uno_valid_from", tok_uno_valid_from, 0},
+#line 115 "programs/locfile-kw.gperf"
+ {"duo_n_sign_posn", tok_duo_n_sign_posn, 0},
+#line 151 "programs/locfile-kw.gperf"
+ {"noexpr", tok_noexpr, 0},
{""},
- {"forward", tok_forward, 0},
+#line 194 "programs/locfile-kw.gperf"
{"audience", tok_audience, 0},
{""},
- {"punct", tok_punct, 0},
- {"define", tok_define, 0},
- {"abbreviation", tok_abbreviation, 0},
- {""},
- {"copy", tok_copy, 0},
- {""}, {""}, {""},
- {"decimal_point", tok_decimal_point, 0},
+#line 44 "programs/locfile-kw.gperf"
+ {"blank", tok_blank, 0},
{""},
- {"upper", tok_upper, 0},
- {""}, {""},
- {"category", tok_category, 0},
+#line 48 "programs/locfile-kw.gperf"
+ {"toupper", tok_toupper, 0},
+#line 67 "programs/locfile-kw.gperf"
+ {"position", tok_position, 0},
+#line 120 "programs/locfile-kw.gperf"
+ {"duo_valid_from", tok_duo_valid_from, 0},
+#line 39 "programs/locfile-kw.gperf"
+ {"cntrl", tok_cntrl, 0},
{""},
- {"conversion_rate", tok_conversion_rate, 0},
+#line 26 "programs/locfile-kw.gperf"
+ {"comment_char", tok_comment_char, 0},
+#line 86 "programs/locfile-kw.gperf"
+ {"positive_sign", tok_positive_sign, 0},
{""}, {""}, {""}, {""},
- {"lower", tok_lower, 0},
- {""},
- {"collating-element", tok_collating_element, 0},
- {"duo_p_sep_by_space", tok_duo_p_sep_by_space, 0},
- {""},
- {"title", tok_title, 0},
+#line 132 "programs/locfile-kw.gperf"
+ {"mon", tok_mon, 0},
{""}, {""},
- {"timezone", tok_timezone, 0},
+#line 171 "programs/locfile-kw.gperf"
+ {"country_car", tok_country_car, 0},
{""},
- {"digit", tok_digit, 0},
- {""}, {""}, {""}, {""},
- {"postal_fmt", tok_postal_fmt, 0},
+#line 60 "programs/locfile-kw.gperf"
+ {"symbol-equivalence", tok_symbol_equivalence, 0},
+#line 102 "programs/locfile-kw.gperf"
+ {"duo_int_curr_symbol", tok_duo_int_curr_symbol, 0},
+#line 100 "programs/locfile-kw.gperf"
+ {"int_p_sign_posn", tok_int_p_sign_posn, 0},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 172 "programs/locfile-kw.gperf"
+ {"country_isbn", tok_country_isbn, 0},
+#line 36 "programs/locfile-kw.gperf"
+ {"outdigit", tok_outdigit, 0},
+ {""},
+#line 114 "programs/locfile-kw.gperf"
+ {"duo_p_sign_posn", tok_duo_p_sign_posn, 0},
{""},
+#line 133 "programs/locfile-kw.gperf"
{"d_t_fmt", tok_d_t_fmt, 0},
- {"position", tok_position, 0},
- {"p_sep_by_space", tok_p_sep_by_space, 0},
- {"nostr", tok_nostr, 0},
- {"noexpr", tok_noexpr, 0},
+ {""}, {""},
+#line 33 "programs/locfile-kw.gperf"
+ {"lower", tok_lower, 0},
{""},
- {"charconv", tok_charconv, 0},
+#line 167 "programs/locfile-kw.gperf"
+ {"country_post", tok_country_post, 0},
+#line 146 "programs/locfile-kw.gperf"
+ {"cal_direction", tok_cal_direction, 0},
{""},
- {"width", tok_width, 0},
- {"country_car", tok_country_car, 0},
- {"comment_char", tok_comment_char, 0},
- {""}, {""}, {""}, {""},
- {"lang_ab", tok_lang_ab, 0},
- {"lang_lib", tok_lang_lib, 0},
+#line 189 "programs/locfile-kw.gperf"
+ {"email", tok_email, 0},
+#line 141 "programs/locfile-kw.gperf"
+ {"era_d_t_fmt", tok_era_d_t_fmt, 0},
+ {""}, {""},
+#line 173 "programs/locfile-kw.gperf"
{"lang_name", tok_lang_name, 0},
- {""}, {""}, {""}, {""},
- {"elif", tok_elif, 0},
{""},
- {"xdigit", tok_xdigit, 0},
+#line 179 "programs/locfile-kw.gperf"
+ {"tel_dom_fmt", tok_tel_dom_fmt, 0},
{""}, {""}, {""},
- {"space", tok_space, 0},
- {""},
- {"address", tok_address, 0},
+#line 54 "programs/locfile-kw.gperf"
+ {"default_missing", tok_default_missing, 0},
+#line 89 "programs/locfile-kw.gperf"
+ {"frac_digits", tok_frac_digits, 0},
+ {""}, {""}, {""},
+#line 88 "programs/locfile-kw.gperf"
+ {"int_frac_digits", tok_int_frac_digits, 0},
+#line 170 "programs/locfile-kw.gperf"
+ {"country_num", tok_country_num, 0},
+#line 119 "programs/locfile-kw.gperf"
+ {"uno_valid_to", tok_uno_valid_to, 0},
{""}, {""}, {""}, {""}, {""},
- {"name_fmt", tok_name_fmt, 0},
- {""},
- {"t_fmt_ampm", tok_t_fmt_ampm, 0},
- {""},
- {"name_mr", tok_name_mr, 0},
- {""},
- {"from", tok_from, 0},
+#line 50 "programs/locfile-kw.gperf"
+ {"map", tok_map, 0},
{""},
- {"escape_char", tok_escape_char, 0},
+#line 105 "programs/locfile-kw.gperf"
+ {"duo_frac_digits", tok_duo_frac_digits, 0},
+#line 178 "programs/locfile-kw.gperf"
+ {"tel_int_fmt", tok_tel_int_fmt, 0},
+#line 121 "programs/locfile-kw.gperf"
{"duo_valid_to", tok_duo_valid_to, 0},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"reorder-sections-end", tok_reorder_sections_end, 0},
+#line 144 "programs/locfile-kw.gperf"
+ {"first_weekday", tok_first_weekday, 0},
{""},
- {"reorder-sections-after", tok_reorder_sections_after, 0},
- {""}, {""}, {""}, {""}, {""}, {""},
- {"territory", tok_territory, 0},
+#line 143 "programs/locfile-kw.gperf"
+ {"alt_digits", tok_alt_digits, 0},
+#line 95 "programs/locfile-kw.gperf"
+ {"n_sign_posn", tok_n_sign_posn, 0},
+#line 84 "programs/locfile-kw.gperf"
+ {"mon_thousands_sep", tok_mon_thousands_sep, 0},
+#line 145 "programs/locfile-kw.gperf"
+ {"first_workday", tok_first_workday, 0},
+#line 64 "programs/locfile-kw.gperf"
+ {"from", tok_from, 0},
+#line 131 "programs/locfile-kw.gperf"
+ {"abmon", tok_abmon, 0},
{""}, {""},
- {"country_name", tok_country_name, 0},
+#line 192 "programs/locfile-kw.gperf"
{"language", tok_language, 0},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""},
- {"tel_int_fmt", tok_tel_int_fmt, 0},
- {"mon_grouping", tok_mon_grouping, 0},
- {"positive_sign", tok_positive_sign, 0},
+ {""}, {""},
+#line 195 "programs/locfile-kw.gperf"
+ {"application", tok_application, 0},
{""},
- {"abmon", tok_abmon, 0},
- {"measurement", tok_measurement, 0},
- {""}, {""}, {""},
+#line 126 "programs/locfile-kw.gperf"
+ {"grouping", tok_grouping, 0},
+#line 78 "programs/locfile-kw.gperf"
+ {"elif", tok_elif, 0},
+#line 128 "programs/locfile-kw.gperf"
+ {"abday", tok_abday, 0},
+ {""},
+#line 196 "programs/locfile-kw.gperf"
+ {"abbreviation", tok_abbreviation, 0},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 56 "programs/locfile-kw.gperf"
{"coll_weight_max", tok_coll_weight_max, 0},
- {"collating-symbol", tok_collating_symbol, 0},
- {""}, {""}, {""}, {""},
- {"script", tok_script, 0},
- {""}, {""}, {""}, {""}, {""}, {""},
- {"cal_direction", tok_cal_direction, 0},
- {""}, {""}, {""}, {""},
- {"duo_n_sep_by_space", tok_duo_n_sep_by_space, 0},
- {""}, {""}, {""}, {""},
- {"mon", tok_mon, 0},
- {"translit_start", tok_translit_start, 0},
- {"translit_ignore", tok_translit_ignore, 0},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 66 "programs/locfile-kw.gperf"
+ {"backward", tok_backward, 0},
+#line 104 "programs/locfile-kw.gperf"
+ {"duo_int_frac_digits", tok_duo_int_frac_digits, 0},
{""},
- {"translit_end", tok_translit_end, 0},
- {"first_weekday", tok_first_weekday, 0},
- {""}, {""},
+#line 94 "programs/locfile-kw.gperf"
{"p_sign_posn", tok_p_sign_posn, 0},
{""},
- {"first_workday", tok_first_workday, 0},
- {"n_sep_by_space", tok_n_sep_by_space, 0},
+#line 199 "programs/locfile-kw.gperf"
+ {"category", tok_category, 0},
{""},
- {"source", tok_source, 0},
- {"mon_decimal_point", tok_mon_decimal_point, 0},
- {"symbol-equivalence", tok_symbol_equivalence, 0},
+#line 122 "programs/locfile-kw.gperf"
+ {"conversion_rate", tok_conversion_rate, 0},
{""},
- {"endif", tok_endif, 0},
+#line 83 "programs/locfile-kw.gperf"
+ {"mon_decimal_point", tok_mon_decimal_point, 0},
{""}, {""}, {""},
- {"duo_valid_from", tok_duo_valid_from, 0},
- {"default_missing", tok_default_missing, 0},
- {""}, {""},
- {"int_p_sep_by_space", tok_int_p_sep_by_space, 0},
- {""},
- {"alt_digits", tok_alt_digits, 0},
+#line 62 "programs/locfile-kw.gperf"
+ {"order_start", tok_order_start, 0},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""},
- {"duo_int_p_sep_by_space", tok_duo_int_p_sep_by_space, 0},
- {""}, {""},
- {"duo_p_sign_posn", tok_duo_p_sign_posn, 0},
- {""}, {""}, {""},
- {"duo_currency_symbol", tok_duo_currency_symbol, 0},
+#line 188 "programs/locfile-kw.gperf"
+ {"contact", tok_contact, 0},
{""}, {""}, {""},
- {"outdigit", tok_outdigit, 0},
- {""}, {""}, {""}, {""},
- {"revision", tok_revision, 0},
+#line 169 "programs/locfile-kw.gperf"
+ {"country_ab3", tok_country_ab3, 0},
{""}, {""}, {""}, {""},
- {"name_gen", tok_name_gen, 0},
- {""},
- {"email", tok_email, 0},
- {""},
- {"uno_valid_to", tok_uno_valid_to, 0},
- {"negative_sign", tok_negative_sign, 0},
+#line 168 "programs/locfile-kw.gperf"
+ {"country_ab2", tok_country_ab2, 0},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""},
- {"alnum", tok_alnum, 0},
- {""}, {""}, {""}, {""}, {""},
- {"country_num", tok_country_num, 0},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"am_pm", tok_am_pm, 0},
{""},
- {"mon_thousands_sep", tok_mon_thousands_sep, 0},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"currency_symbol", tok_currency_symbol, 0},
- {""}, {""}, {""}, {""}, {""}, {""},
- {"country_isbn", tok_country_isbn, 0},
- {""}, {""}, {""}, {""},
- {"name_ms", tok_name_ms, 0},
- {"name_mrs", tok_name_mrs, 0},
+#line 174 "programs/locfile-kw.gperf"
+ {"lang_ab", tok_lang_ab, 0},
+#line 176 "programs/locfile-kw.gperf"
+ {"lang_lib", tok_lang_lib, 0},
{""}, {""}, {""}, {""},
- {"thousands_sep", tok_thousands_sep, 0},
- {""},
- {"cntrl", tok_cntrl, 0},
- {""}, {""}, {""}, {""}, {""},
- {"n_sign_posn", tok_n_sign_posn, 0},
- {"include", tok_include, 0},
- {""}, {""},
- {"ifdef", tok_ifdef, 0},
+#line 191 "programs/locfile-kw.gperf"
+ {"fax", tok_fax, 0},
{""},
- {"duo_p_cs_precedes", tok_duo_p_cs_precedes, 0},
+#line 136 "programs/locfile-kw.gperf"
+ {"am_pm", tok_am_pm, 0},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""},
- {"p_cs_precedes", tok_p_cs_precedes, 0},
- {"uno_valid_from", tok_uno_valid_from, 0},
- {"undef", tok_undef, 0},
- {""}, {""},
- {"int_n_sep_by_space", tok_int_n_sep_by_space, 0},
+#line 37 "programs/locfile-kw.gperf"
+ {"alnum", tok_alnum, 0},
+ {""}, {""}, {""},
+#line 175 "programs/locfile-kw.gperf"
{"lang_term", tok_lang_term, 0},
- {""}, {""},
- {"duo_int_n_sep_by_space", tok_duo_int_n_sep_by_space, 0},
- {""},
- {"duo_int_p_sign_posn", tok_duo_int_p_sign_posn, 0},
- {"duo_n_sign_posn", tok_duo_n_sign_posn, 0},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""},
- {"application", tok_application, 0},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""},
- {"int_p_sign_posn", tok_int_p_sign_posn, 0},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"duo_int_curr_symbol", tok_duo_int_curr_symbol, 0},
- {""}, {""}, {""}, {""}, {""},
- {"int_prefix", tok_int_prefix, 0},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 79 "programs/locfile-kw.gperf"
+ {"endif", tok_endif, 0},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""},
- {"duo_frac_digits", tok_duo_frac_digits, 0},
- {""}, {""}, {""}, {""}, {""},
- {"duo_int_p_cs_precedes", tok_duo_int_p_cs_precedes, 0},
+#line 165 "programs/locfile-kw.gperf"
+ {"postal_fmt", tok_postal_fmt, 0},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""},
- {"frac_digits", tok_frac_digits, 0},
- {""}, {""},
- {"charclass", tok_charclass, 0},
+ {""}, {""}, {""}, {""}, {""}, {""},
+#line 75 "programs/locfile-kw.gperf"
+ {"undef", tok_undef, 0},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""},
- {"duo_n_cs_precedes", tok_duo_n_cs_precedes, 0},
- {""}, {""},
- {"int_curr_symbol", tok_int_curr_symbol, 0},
{""}, {""},
- {"n_cs_precedes", tok_n_cs_precedes, 0},
- {""},
- {"int_select", tok_int_select, 0},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"duo_int_n_sign_posn", tok_duo_int_n_sign_posn, 0},
- {"class", tok_class, 0},
+#line 58 "programs/locfile-kw.gperf"
+ {"collating-element", tok_collating_element, 0},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""},
- {"int_p_cs_precedes", tok_int_p_cs_precedes, 0},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""},
- {"duo_int_frac_digits", tok_duo_int_frac_digits, 0},
- {""}, {""}, {""}, {""}, {""},
- {"int_n_sign_posn", tok_int_n_sign_posn, 0},
- {""}, {""}, {""},
- {"name_miss", tok_name_miss, 0},
+#line 85 "programs/locfile-kw.gperf"
+ {"mon_grouping", tok_mon_grouping, 0},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""},
+#line 65 "programs/locfile-kw.gperf"
+ {"forward", tok_forward, 0},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 59 "programs/locfile-kw.gperf"
+ {"collating-symbol", tok_collating_symbol, 0},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""},
- {"duo_int_n_cs_precedes", tok_duo_int_n_cs_precedes, 0},
+#line 34 "programs/locfile-kw.gperf"
+ {"alpha", tok_alpha, 0},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""},
- {"int_frac_digits", tok_int_frac_digits, 0},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"section-symbol", tok_section_symbol, 0},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""},
- {"int_n_cs_precedes", tok_int_n_cs_precedes, 0}
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 76 "programs/locfile-kw.gperf"
+ {"ifdef", tok_ifdef, 0}
};
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
-/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1996,1997,1998,1999,2000,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef _TOKEN_H
#define _TOKEN_H
-/* Copyright (C) 1996-2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2004, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
-/* Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2001, 2002, 2003, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef _LOCFILE_H
#define _LOCFILE_H 1
-/* Copyright (C) 1998,1999,2000,2001,2002,2004 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2002,2004,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
-/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2000, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef _REPERTOIREMAP_H
#define _REPERTOIREMAP_H 1
/* Implement simple hashing table with string based keys.
- Copyright (C) 1994-1997, 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1994-1997,2000,2001,2002,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, October 1994.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
-/* Copyright (C) 1995-1999, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1999, 2001, 2002, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef _SIMPLE_HASH_H
#define _SIMPLE_HASH_H
/* xmalloc.c -- malloc with out of memory checking
- Copyright (C) 1990,91,92,93,94,95,96,97,2004 Free Software Foundation, Inc.
+ Copyright (C) 1990,91,92,93,94,95,96,97,2004,2005
+ 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 Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
#include <config.h>
/* xstrdup.c -- copy a string with out of memory checking
- Copyright (C) 1990, 1996, 1997, 1999, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1990,1996,1997,1999,2004,2005 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 Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
+2005-11-21 Ulrich Drepper <drepper@redhat.com>
+
+ * locales/se_NO: Remove RCS ID line.
+
2005-11-16 Ulrich Drepper <drepper@redhat.com>
[BZ 1872]
-# $Id$
comment_char %
escape_char /
%
collating-symbol <oumlaut>
collating-symbol <oslash>
-%
+%
reorder-after <CAP>
<MIN>
t_fmt_ampm ""
% Denne linjen vil gi f.eks.:
-% duorasdat, borgem<U00E1>nu 23. b. 2001 00:47:57 CEST
+% duorasdat, borgem<U00E1>nu 23. b. 2001 00:47:57 CEST
date_fmt "<U0025><U0041><U002C><U0020><U0025><U0042><U0020><U0025><U0064><U002E>/
<U0020><U0062><U002E><U0020><U0025><U0059><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053>/
<U0020><U0025><U005A>"
* rights to redistribute these changes.
*/
/*
- * HISTORY
- * $Log$
- * 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.
- *
- * Revision 1.4 1993/12/17 06:14:52 mib
- * entered into RCS
+ * (pre-GNU) HISTORY
*
* Revision 2.3 92/04/01 19:38:02 rpd
* Added err_codes_device.
-/*
+/*
* Mach Operating System
* Copyright (c) 1991,1990,1989,1988,1987 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
+ *
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS
* 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 the
* rights to redistribute these changes.
*/
/*
* HISTORY
- * $Log$
- * Revision 1.1 1992/10/06 18:29:53 roland
- * entered into RCS
*
* Revision 2.2 92/01/16 00:10:29 rpd
* Moved from user collection to mk collection.
- *
+ *
* Revision 2.3 91/08/29 15:51:39 rpd
* Fixed err_codes_netname.
* [91/08/22 rpd]
- *
+ *
* Revision 2.2 91/03/27 16:05:51 mrt
* First checkin
- *
+ *
* Revision 2.3 90/10/29 17:27:20 dpj
* Merged-up to U25
* [90/09/02 20:00:25 dpj]
- *
+ *
*/
/*
* File: err_server.sub
},
};
-
-/*
+/*
* Mach Operating System
* Copyright (c) 1991,1990,1989,1988,1987 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
+ *
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS
* 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 the
* rights to redistribute these changes.
*/
/*
* HISTORY
- * $Log$
- * Revision 1.2 1993/11/23 21:14:05 mib
- * entered into RCS
*
* Revision 2.2 92/01/16 00:10:45 rpd
* Moved from user collection to mk collection.
- *
+ *
* Revision 2.2 91/03/27 16:06:06 mrt
* First checkin
- *
+ *
*/
/*
* File: err_us.sub
static struct error_subsystem err_us_sub[] = {
{0,0,0}
};
-
-
-
-
-
-/*
+/*
* 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.
*/
/* This file was broken out from:
- $Log$
- 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 <thomas@gnu.ai.mit.edu>
-
- * 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/mach_traps.h>.
- * mach/spin-solid.c (__spin_lock_solid): Provide arg to
- swtch_pri.
-
- * mach/mach_init.c: Include <mach/mig_support.h>.
-
- * 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
Revision 2.3 92/04/01 19:38:18 rpd
+
The static do_compat function is renamed to be globally accessible.
*/
{
mach_error_t err = *org_err;
- /*
- * map old error numbers to
- * to new error sys & subsystem
+ /*
+ * map old error numbers to
+ * to new error sys & subsystem
*/
if ((-200 < err) && (err <= -100))
-/*
+/*
* 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
+ *
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS
* 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 the
* rights to redistribute these changes.
*/
/*
- * HISTORY
- * $Log$
- * Revision 1.5 1995/03/10 23:57:44 roland
- * (errors): Use const for decl.
- *
- * Revision 1.4 1993/12/17 21:56:16 roland
- * entered into RCS
+ * (pre-GNU) HISTORY
*
* Revision 2.3 92/03/31 15:18:52 rpd
* Added KERN_DEVICE_MOD for device errors.
* [92/03/09 rpd]
- *
+ *
* Revision 2.2 92/01/16 00:21:17 rpd
* Moved from user collection to mk collection.
- *
+ *
* Revision 2.2 91/03/27 15:37:37 mrt
* First checkin
- *
+ *
*/
/*
* File: errorlib.h
-/*
+/*
* 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$
- * 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 <thomas@gnu.ai.mit.edu>
- *
- * * 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/mach_traps.h>.
- * * mach/spin-solid.c (__spin_lock_solid): Provide arg to
- * swtch_pri.
- *
- * * mach/mach_init.c: Include <mach/mig_support.h>.
- *
- * * 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
+ * (pre-GNU) HISTORY
*
* Revision 2.3 92/04/01 19:38:18 rpd
* Updated do_compat for kernel device errors,
* bootstrap file-system errors.
* [92/03/09 rpd]
- *
+ *
* Revision 2.2 92/02/20 15:58:08 elf
* Created from mach_error.c.
* [92/02/11 rpd]
- *
+ *
*/
#define EXPORT_BOOLEAN
* the rights to redistribute these changes.
*/
/*
- * HISTORY
- * $Log$
- * Revision 1.3 1997/03/16 17:43:08 drepper
- * (mach_error_fn_t): Comment out declaration; it appears to be entirely
- * unused dead code.
- *
- * Revision 1.3 1997/03/14 15:27:35 thomas
- * Wed Mar 5 10:40:05 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
- *
- * * mach/mach/mach_traps.h: Include <mach/kern_return.h>.
- *
- * * mach/mach/error.h (mach_error_fn_t): Comment out declaration; it
- * appears to be entirely unused dead code.
- *
- * 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.
- *
- * Revision 1.1 1993/12/17 21:40:28 roland
- * entered into RCS
+ * (pre-GNU) HISTORY
*
* Revision 2.6 93/01/14 17:41:31 danner
* Standardized include symbol name.
-/*
+/*
* 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$
- * 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 <thomas@gnu.ai.mit.edu>
- *
- * * 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/mach_traps.h>.
- * * mach/spin-solid.c (__spin_lock_solid): Provide arg to
- * swtch_pri.
- *
- * * mach/mach_init.c: Include <mach/mig_support.h>.
- *
- * * 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
+ * (pre-GNU) HISTORY
*
* Revision 2.4 92/02/19 15:10:52 elf
* Moved mach_error_string and mach_error_type to mach_error_string.c.
* [92/02/11 rpd]
- *
+ *
* Revision 2.3 92/01/23 15:22:06 rpd
* Changed <servers/errorlib.h> to <errorlib.h>.
* [92/01/16 rpd]
- *
+ *
* Revision 2.2 92/01/16 00:08:03 rpd
* Moved from user collection to mk collection.
- *
+ *
* Revision 2.3 91/08/29 15:51:50 rpd
* Changed IPC_MIG_MOD to MACH_IPC_MIG_MOD, to get the new error strings.
* [91/08/22 rpd]
- *
+ *
* Revision 2.2 91/03/27 16:06:29 mrt
* Changed include of "errorlib.h" to <servers/errorlib.h>
* Added new copyright
* [91/03/20 mrt]
- *
+ *
*/
/*
* File: mach_error.c
extern char * mach_error_string_int(mach_error_t, boolean_t *);
void
-mach_error( str, err )
+mach_error( str, err )
char *str;
mach_error_t err;
{
* rights to redistribute these changes.
*/
/*
- * HISTORY
- * $Log$
- * Revision 1.4 2001/04/01 05:03:14 roland
- * 2001-03-11 Roland McGrath <roland@frob.com>
- *
- * * mach/mach_error.h: Fix ancient #endif syntax.
- * * hurd/hurdmalloc.c: Likewise.
- *
- * 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 <thomas@gnu.ai.mit.edu>
- *
- * * 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/mach_traps.h>.
- * * mach/spin-solid.c (__spin_lock_solid): Provide arg to
- * swtch_pri.
- *
- * * mach/mach_init.c: Include <mach/mig_support.h>.
- *
- * * 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
+ * (pre-GNU) HISTORY
*
* Revision 2.2 92/01/16 00:08:10 rpd
* Moved from user collection to mk collection.
* the rights to redistribute these changes.
*/
/*
- * HISTORY
- * $Log$
- * Revision 1.6 2002/02/17 07:13:36 roland
- * 2002-02-16 Roland McGrath <roland@frob.com>
- *
- * * mach/msg-destroy.c (__mach_msg_destroy) [MACH_MSG_PORT_DESCRIPTOR]:
- * Grok the OSF flavor of message format.
- * (mach_msg_destroy_port): For MAKE_SEND and
- * MAKE_SEND_ONCE rights, create an destroy a right to ensure proper
- * no-senders notification.
- *
- * Revision 1.5 1997/06/21 01:40:07 drepper
- * More 64bit changes.
- *
- * Revision 1.4 1996/11/15 19:44:43 thomas
- * Tue Nov 12 16:58:41 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
- *
- * * mach/mach.h (__mach_msg_destroy, mach_msg_destroy, __mach_msg):
- * Provide prototypes.
- *
- * * mach/msg-destroy.c (mach_msg_destroy_port,
- * mach_msg_destroy_memory): Use prototype syntax.
- * * hurd/hurdmalloc.c (more_memory, malloc_fork_prepare,
- * malloc_fork_parent, malloc_fork_child): Likewise.
- *
- * Revision 1.3 1995/01/23 22:16:52 roland
- * (mach_msg_destroy): Define as weak alias for __mach_msg_destroy.
- *
- * Revision 1.2 1993/08/03 06:13:18 roland
- * entered into RCS
+ * (pre-GNU) HISTORY
*
* Revision 2.4 91/05/14 17:53:15 mrt
* Correcting copyright
* the rights to redistribute these changes.
*/
/*
- * HISTORY
- * $Log$
- * Revision 1.9 2002/02/18 20:56:35 roland
- * 2002-02-18 Roland McGrath <roland@frob.com>
- *
- * * mach/msgserver.c (__mach_msg_server_timeout) [! MACH_RCV_LARGE]:
- * Double MAX_SIZE and don't retry on MACH_RCV_TOO_LARGE.
- *
- * Revision 1.8 2002/02/17 07:13:32 roland
- * 2002-02-16 Roland McGrath <roland@frob.com>
- *
- * * mach/msgserver.c [NDR_CHAR_ASCII] (mig_reply_header_t): #define as
- * mig_reply_error_t for OSF Mach variant.
- *
- * Revision 1.7 2001/07/06 04:55:34 aj
- * Update to LGPL v2.1.
- *
- * Revision 1.6 2001/04/09 21:23:38 roland
- * 2001-04-07 Roland McGrath <roland@frob.com>
- *
- * * mach/msgserver.c (__mach_msg_server_timeout): Add an assert.
- *
- * 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.
- *
- * Revision 1.4 1996/01/29 15:44:23 roland
- * Declare DEMUX arg with prototype.
- *
- * Revision 1.3 1995/01/21 15:00:57 roland
- * Converted to use weak aliases with macros from libc-symbols.h.
- *
- * Revision 1.2 1994/10/10 07:20:14 roland
- * Increase default MAX_SIZE to two pages.
- *
- * Revision 1.1 1993/12/06 23:25:25 roland
- * entered into RCS
+ * (pre-GNU) HISTORY
*
* Revision 2.4 91/05/14 17:53:22 mrt
* Correcting copyright
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-/* $Id$ */
-
#include <stdbool.h>
/* Compile-time constants. */
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-/* $Id$ */
-
/* What to do if the standard debugging hooks are in place and a
corrupt pointer is detected: do nothing (0), print an error message
(1), or call abort() (2). */
Doug Lea and adapted to multiple threads/arenas by Wolfram Gloger.
* Version ptmalloc2-20011215
- $Id$
based on:
VERSION 2.7.0 Sun Mar 11 14:14:06 2001 Doug Lea (dl at gee)
/* Generate graphic from memory profiling data.
- Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define _FILE_OFFSET_BITS 64
(maxsize_heap / heap_scale);
gdImageDashedLine (im_out, 40, ysize - 20 - cnt, xsize - 40,
ysize - 20 - cnt, red);
- snprintf (buf, sizeof (buf), heap_format, maxsize_heap / 4 * line /
+ snprintf (buf, sizeof (buf), heap_format, maxsize_heap / 4 * line /
heap_scale);
gdImageString (im_out, gdFontSmall, 39 - strlen (buf) * 6,
ysize - 26 - cnt, buf, red);
{
pid_t parent = getpid ();
- struct sigaction action;
+ struct sigaction action = { .sa_handler = sig_handler };
sigemptyset (&action.sa_mask);
- action.sa_handler = sig_handler;
malloc (sizeof (int));
-$Id$
This is the file .../info/dir, which contains the topmost node of the
Info hierarchy. The first time you invoke Info you start off
looking at that node, which is (dir)Top.
mechanism for the info files is not present or works differently.
@item
-GNU @code{awk} 3.0, or some other POSIX awk
+GNU @code{awk} 3.0, or higher
-@code{Awk} is used in several places to generate files. The scripts
-should work with any POSIX-compliant @code{awk} implementation;
-@code{gawk} 3.0 and @code{mawk} 1.3 are known to work.
+@code{Awk} is used in several places to generate files.
+@code{gawk} 3.0 is known to work.
@item
Perl 5
@comment GNU
@deftypefun {FILE *} open_memstream (char **@var{ptr}, size_t *@var{sizeloc})
This function opens a stream for writing to a buffer. The buffer is
-allocated dynamically (as with @code{malloc}; @pxref{Unconstrained
-Allocation}) and grown as necessary.
+allocated dynamically and grown as necessary, using @code{malloc}.
+After you've closed the stream, this buffer is your responsibility to
+clean up using @code{free} or @code{realloc}. @xref{Unconstrained Allocation}.
When the stream is closed with @code{fclose} or flushed with
@code{fflush}, the locations @var{ptr} and @var{sizeloc} are updated to
*/
#include <fenv.h>
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef _SCALB_INT
#endif
#include <fenv.h>
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef _SCALB_INT
*/
#include <fenv.h>
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef _SCALB_INT
/*
* from: @(#)fdlibm.h 5.1 93/09/24
- * $Id$
*/
#ifndef _MATH_PRIVATE_H_
static char rcsid[] = "$NetBSD: s_ldexp.c,v 1.6 1995/05/10 20:47:40 jtc Exp $";
#endif
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#include <errno.h>
static char rcsid[] = "$NetBSD: s_ldexpf.c,v 1.3 1995/05/10 20:47:42 jtc Exp $";
#endif
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#include <errno.h>
static char rcsid[] = "$NetBSD: $";
#endif
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#include <errno.h>
#define __nexttoward __internal___nexttoward
#define nexttoward __internal_nexttoward
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#include <float.h>
* Special cases:
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#include <float.h>
* for exercising the fraction-part(F) IEEE 754-1985 test vector.
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
static char rcsid[] = "$NetBSD: s_significandf.c,v 1.3 1995/05/10 20:48:13 jtc Exp $";
#endif
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* for exercising the fraction-part(F) IEEE 754-1985 test vector.
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* wrap_acos(x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
* wrap_acosf(x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
* wrapper acosh(x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* wrapper acoshf(x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* wrapper acoshl(x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* wrap_acosl(x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
* wrapper atan2(y,x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
* wrapper atan2f(y,x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
* wrapper atan2l(y,x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
* wrapper atanh(x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
* wrapper atanhf(x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
* wrapper atanhl(x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
* wrapper cosh(x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* wrapper coshf(x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* wrapper coshl(x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* Placed into the Public Domain, 1994.
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
float
* wrapper exp10(x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* wrapper expf10(x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* wrapper exp10l(x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
*/
#include <float.h>
-#include "math.h"
+#include <math.h>
#include "math_private.h"
static const double o_threshold= (double) DBL_MAX_EXP;
*/
#include <float.h>
-#include "math.h"
+#include <math.h>
#include "math_private.h"
static const float o_threshold= (float) FLT_MAX_EXP;
*/
#include <float.h>
-#include "math.h"
+#include <math.h>
#include "math_private.h"
static const long double o_threshold = (long double) LDBL_MAX_EXP;
* wrapper fmod(x,y)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
* wrapper fmodf(x,y)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
* wrapper fmodl(x,y)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
* wrapper hypot(x,y)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
* wrapper hypotf(x,y)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
* wrapper hypotl(x,y)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
* wrapper j0(double x), y0(double x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* wrapper j0f(float x), y0f(float x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* wrapper j0l(long double x), y0l(long double x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* wrapper of j1,y1
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* wrapper of j1f,y1f
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* wrapper of j1l,y1l
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
*
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
static char rcsid[] = "$NetBSD: w_jnf.c,v 1.3 1995/05/10 20:49:21 jtc Exp $";
#endif
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
*
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* Method: call __ieee754_lgamma_r
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* wrapper double lgamma_r(double x, int *signgamp)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
static char rcsid[] = "$NetBSD: w_lgammaf.c,v 1.3 1995/05/10 20:49:30 jtc Exp $";
#endif
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* wrapper float lgammaf_r(float x, int *signgamp)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
* Method: call __ieee754_lgammal_r
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* wrapper long double lgammal_r(long double x, int *signgamp)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
* wrapper log(x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
* wrapper log10(X)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
* wrapper log10f(X)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
* wrapper log10l(X)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
* wrapper log2(X)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
double
* wrapper log2(X)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
float
* wrapper log2l(X)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
long double
* wrapper logf(x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
* wrapper logl(x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
* wrapper pow(x,y) return x**y
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
* wrapper powf(x,y) return x**y
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
* wrapper powl(x,y) return x**y
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
* wrapper remainder(x,p)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* wrapper remainderf(x,p)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* wrapper remainderl(x,p)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* should use scalbn() instead.
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#include <errno.h>
* should use scalbn() instead.
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#include <errno.h>
* should use scalbnl() instead.
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#include <errno.h>
* wrapper sinh(x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* wrapper sinhf(x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* wrapper sinhl(x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* wrapper sqrt(x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* wrapper sqrtf(x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* wrapper sqrtl(x)
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* depending on the library mode.
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
static char rcsid[] = "$NetBSD: w_gammaf.c,v 1.4 1995/11/20 22:06:48 jtc Exp $";
#endif
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
* Return the Gamma function of x.
*/
-#include "math.h"
+#include <math.h>
#include "math_private.h"
#ifdef __STDC__
-/* Copyright (C) 1997, 1998, 2001, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 2001, 2004, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
unsigned long
inetstr2int (const char *str)
{
- char buffer[strlen (str) + 3];
- size_t buflen;
- size_t i, j;
-
- buflen = stpcpy (buffer, str) - buffer;
-
- j = 0;
- for (i = 0; i < buflen; ++i)
- if (buffer[i] == '.')
+ size_t j = 0;
+ for (size_t i = 0; str[i] != '\0'; ++i)
+ if (str[i] == '.' && ++j == 4)
{
- ++j;
- if (j == 4)
- {
- buffer[i] = '\0';
- break;
- }
+ char buffer[i + 1];
+ buffer[i] = '\0';
+ return inet_addr (memcpy (buffer, str, i));
}
- return inet_addr (buffer);
+ return inet_addr (str);
}
void
}
else
dbp->clnt->cl_auth = authunix_create_default ();
- dbp->use_auth = TRUE;
}
return NIS_SUCCESS;
dbp->class = -1;
if (__nis_findfastest (dbp) < 1)
- {
- __nisbind_destroy (dbp);
- return NIS_NAMEUNREACHABLE;
- }
+ return NIS_NAMEUNREACHABLE;
return NIS_SUCCESS;
}
if (__nisbind_next (&bptr) != NIS_SUCCESS)
{
nis_free_directory (dir);
- __nisbind_destroy (&bptr);
return NIS_NAMEUNREACHABLE;
}
}
-/* Copyright (c) 1997, 1998, 1999, 2004 Free Software Foundation, Inc.
+/* Copyright (c) 1997, 1998, 1999, 2004, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
nis_sperror_r (const nis_error status, const char *label,
char *buffer, size_t buflen)
{
- const char *cptr;
-
- cptr = nis_sperrno (status);
-
- if ((strlen (cptr) + strlen (label) + 3) > buflen)
+ if (snprintf (buffer, buflen, "%s: %s", label, nis_sperrno (status))
+ >= buflen)
{
errno = ERANGE;
return NULL;
}
- sprintf (buffer, "%s: %s", label, cptr);
-
- return buffer;
+ return buffer;
}
libnsl_hidden_def (nis_sperror_r)
char *
nis_sperror (const nis_error status, const char *label)
{
- static char buffer[NIS_MAXNAMELEN +1];
+ static char buffer[NIS_MAXNAMELEN + 1];
return nis_sperror_r (status, label, buffer, sizeof (buffer));
}
-/* Copyright (C) 1997, 1998, 1999, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 1999, 2004, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@uni-paderborn.de>, 1997.
{
if (__nisbind_next (&bptr) != NIS_SUCCESS)
{
- __nisbind_destroy (&bptr);
nis_free_directory (dir);
NIS_RES_STATUS (res) = NIS_NAMEUNREACHABLE;
return res;
do
{
- static struct timeval RPCTIMEOUT = {10, 0};
+ static const struct timeval RPCTIMEOUT = {10, 0};
enum clnt_stat result;
again:
if (NIS_RES_STATUS (res) == NIS_SUCCESS)
{
- if (__type_of(NIS_RES_OBJECT (res)) == NIS_LINK_OBJ &&
- flags & FOLLOW_LINKS) /* We are following links */
+ if (__type_of(NIS_RES_OBJECT (res)) == NIS_LINK_OBJ
+ && (flags & FOLLOW_LINKS)) /* We are following links */
{
if (count_links)
free (req.ns_name);
}
}
else
- if ((NIS_RES_STATUS (res) == NIS_SYSTEMERROR) ||
- (NIS_RES_STATUS (res) == NIS_NOSUCHNAME) ||
- (NIS_RES_STATUS (res) == NIS_NOT_ME))
+ if (NIS_RES_STATUS (res) == NIS_SYSTEMERROR
+ || NIS_RES_STATUS (res) == NIS_NOSUCHNAME
+ || NIS_RES_STATUS (res) == NIS_NOT_ME)
{
if (link_first_try)
{
__nisbind_destroy (&bptr);
nis_free_directory (dir);
- if (__nisfind_server (req.ns_name, &dir) != NIS_SUCCESS)
+ if (__nisfind_server (req.ns_name, &dir)
+ != NIS_SUCCESS)
return res;
if (__nisbind_create (&bptr,
{
if (__nisbind_next (&bptr) != NIS_SUCCESS)
{
- __nisbind_destroy (&bptr);
nis_free_directory (dir);
return res;
}
static struct ib_request *
__create_ib_request (const_nis_name name, unsigned int flags)
{
- struct ib_request *ibreq = calloc (1, sizeof (ib_request));
- char buf[strlen (name) + 1];
+ struct ib_request *ibreq = calloc (1, sizeof (struct ib_request));
nis_attr *search_val = NULL;
size_t search_len = 0;
- char *cptr;
size_t size = 0;
if (ibreq == NULL)
ibreq->ibr_flags = flags;
- cptr = strcpy (buf, name);
+ char *cptr = strdupa (name);
/* Not of "[key=value,key=value,...],foo.." format? */
if (cptr[0] != '[')
ibreq->ibr_name = strchr (cptr, ']');
if (ibreq->ibr_name == NULL || ibreq->ibr_name[1] != ',')
{
- ibreq->ibr_name = NULL; /* Or the xdr_* functions will dump */
- nis_free_request (ibreq);
+ /* The object has not really been built yet so we use free. */
+ free (ibreq);
return NULL;
}
return ibreq;
}
-static struct timeval RPCTIMEOUT = {10, 0};
+static const struct timeval RPCTIMEOUT = {10, 0};
static char *
__get_tablepath (char *name, dir_binding *bptr)
{
enum clnt_stat result;
- nis_result *res = calloc (1, sizeof (nis_result));
+ nis_result res;
struct ns_request req;
- if (res == NULL)
- return NULL;
+ memset (&res, '\0', sizeof (res));
req.ns_name = name;
req.ns_object.ns_object_len = 0;
result = clnt_call (bptr->clnt, NIS_LOOKUP, (xdrproc_t) _xdr_ns_request,
(caddr_t) &req, (xdrproc_t) _xdr_nis_result,
- (caddr_t) res, RPCTIMEOUT);
+ (caddr_t) &res, RPCTIMEOUT);
- if (result == RPC_SUCCESS && NIS_RES_STATUS (res) == NIS_SUCCESS &&
- __type_of (NIS_RES_OBJECT (res)) == NIS_TABLE_OBJ)
- {
- char *cptr = strdup (NIS_RES_OBJECT (res)->TA_data.ta_path);
- nis_freeresult (res);
- return cptr;
- }
+ const char *cptr;
+ if (result == RPC_SUCCESS && NIS_RES_STATUS (&res) == NIS_SUCCESS
+ && __type_of (NIS_RES_OBJECT (&res)) == NIS_TABLE_OBJ)
+ cptr = NIS_RES_OBJECT (&res)->TA_data.ta_path;
else
- {
- nis_freeresult (res);
- return strdup ("");
- }
+ cptr = "";
+
+ return strdup (cptr);
}
nis_result *
nis_name namebuf[2] = {NULL, NULL};
int name_nr = 0;
nis_cb *cb = NULL;
- char *tableptr, *tablepath = NULL;
- int have_tablepath = 0;
+ char *tableptr;
+ char *tablepath = NULL;
int first_try = 0; /* Do we try the old binding at first ? */
if (res == NULL)
ibreq->ibr_name = strdup (names[name_nr]);
if (ibreq->ibr_name == NULL)
{
+ nis_freenames (names);
nis_free_request (ibreq);
NIS_RES_STATUS (res) = NIS_NOMEMORY;
return res;
status = __nisfind_server (ibreq->ibr_name, &dir);
if (status != NIS_SUCCESS)
- {
- nis_free_request (ibreq);
+ {
NIS_RES_STATUS (res) = status;
- return res;
- }
+ goto fail3;
+ }
status = __nisbind_create (&bptr, dir->do_servers.do_servers_val,
- dir->do_servers.do_servers_len, flags);
+ dir->do_servers.do_servers_len, flags);
if (status != NIS_SUCCESS)
{
- nis_free_request (ibreq);
NIS_RES_STATUS (res) = status;
- nis_free_directory (dir);
- return res;
+ goto fail2;
}
while (__nisbind_connect (&bptr) != NIS_SUCCESS)
if (__nisbind_next (&bptr) != NIS_SUCCESS)
{
- __nisbind_destroy (&bptr);
- nis_free_directory (dir);
- nis_free_request (ibreq);
NIS_RES_STATUS (res) = NIS_NAMEUNREACHABLE;
- return res;
+ goto fail;
}
if (callback != NULL)
case NIS_PARTIAL:
case NIS_SUCCESS:
case NIS_S_SUCCESS:
- if (__type_of (NIS_RES_OBJECT (res)) == NIS_LINK_OBJ &&
- flags & FOLLOW_LINKS) /* We are following links. */
+ if (__type_of (NIS_RES_OBJECT (res)) == NIS_LINK_OBJ
+ && (flags & FOLLOW_LINKS)) /* We are following links. */
{
free (ibreq->ibr_name);
ibreq->ibr_name = NULL;
strdup (NIS_RES_OBJECT (res)->LI_data.li_name);
if (ibreq->ibr_name == NULL)
{
- nis_free_request (ibreq);
NIS_RES_STATUS (res) = NIS_NOMEMORY;
+ fail:
+ __nisbind_destroy (&bptr);
+ fail2:
+ nis_free_directory (dir);
+ fail3:
+ free (tablepath);
+ if (cb)
+ {
+ __nis_destroy_callback (cb);
+ ibreq->ibr_cbhost.ibr_cbhost_len = 0;
+ ibreq->ibr_cbhost.ibr_cbhost_val = NULL;
+ }
+ if (names != namebuf)
+ nis_freenames (names);
+ nis_free_request (ibreq);
return res;
}
if (NIS_RES_OBJECT (res)->LI_data.li_attrs.li_attrs_len)
ibreq->ibr_srch.ibr_srch_val =
NIS_RES_OBJECT (res)->LI_data.li_attrs.li_attrs_val;
}
+ /* The following is a non-obvious optimization. A
+ nis_freeresult call would call xdr_free as the
+ following code. But it also would unnecessarily
+ free the result structure. We avoid this here
+ along with the necessary tests. */
+#if 1
+ xdr_free ((xdrproc_t) _xdr_nis_result, (char *)res);
+ memset (res, '\0', sizeof (*res));
+#else
nis_freeresult (res);
res = calloc (1, sizeof (nis_result));
if (res == NULL)
- {
- if (have_tablepath)
- free (tablepath);
- __nisbind_destroy (&bptr);
- nis_free_directory (dir);
- return NULL;
- }
+ goto fail;
+#endif
first_try = 1; /* Try at first the old binding */
goto again;
}
- else if ((flags & FOLLOW_PATH) &&
- NIS_RES_STATUS (res) == NIS_PARTIAL)
+ else if ((flags & FOLLOW_PATH)
+ && NIS_RES_STATUS (res) == NIS_PARTIAL)
{
- if (!have_tablepath)
+ if (tablepath == NULL)
{
tablepath = __get_tablepath (ibreq->ibr_name, &bptr);
tableptr = tablepath;
- have_tablepath = 1;
}
if (tableptr == NULL)
{
ibreq->ibr_name = strdup ("");
if (ibreq->ibr_name == NULL)
{
- nis_free_request (ibreq);
NIS_RES_STATUS (res) = NIS_NOMEMORY;
- return res;
+ goto fail;
}
++done;
}
else
{
ibreq->ibr_name = strdup (ibreq->ibr_name);
+ /* The following is a non-obvious optimization. A
+ nis_freeresult call would call xdr_free as the
+ following code. But it also would unnecessarily
+ free the result structure. We avoid this here
+ along with the necessary tests. */
+#if 1
+ xdr_free ((xdrproc_t) _xdr_nis_result, (char *)res);
+ memset (res, '\0', sizeof (*res));
+ if (ibreq->ibr_name == NULL)
+ {
+ NIS_RES_STATUS (res) = NIS_NOMEMORY;
+ goto fail;
+ }
+#else
nis_freeresult (res);
res = calloc (1, sizeof (nis_result));
if (res == NULL || ibreq->ibr_name == NULL)
{
free (res);
- nis_free_request (ibreq);
- if (have_tablepath)
- free (tablepath);
- __nisbind_destroy (&bptr);
- nis_free_directory (dir);
- return NULL;
+ res = NULL;
+ goto fail;
}
+#endif
first_try = 1;
goto again;
}
++done;
else
{
- if (!have_tablepath)
+ if (tablepath == NULL)
{
tablepath = __get_tablepath (ibreq->ibr_name, &bptr);
tableptr = tablepath;
- have_tablepath = 1;
}
if (tableptr == NULL)
{
ibreq->ibr_name = strdup (ibreq->ibr_name);
if (ibreq->ibr_name == NULL)
{
- nis_free_request (ibreq);
NIS_RES_STATUS (res) = NIS_NOMEMORY;
- return res;
+ goto fail;
}
}
}
ibreq->ibr_name = strdup (names[name_nr]);
if (ibreq->ibr_name == NULL)
{
- nis_free_request (ibreq);
NIS_RES_STATUS (res) = NIS_NOMEMORY;
- return res;
+ goto fail;
}
first_try = 1; /* Try old binding at first */
goto again;
__nis_destroy_callback (cb);
ibreq->ibr_cbhost.ibr_cbhost_len = 0;
ibreq->ibr_cbhost.ibr_cbhost_val = NULL;
+ cb = NULL;
}
__nisbind_destroy (&bptr);
nis_free_directory (dir);
}
+ free (tablepath);
+
if (names != namebuf)
nis_freenames (names);
-/* Copyright (C) 1997, 1998, 2001, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997,1998,2001,2002,2003,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <atomic.h>
#include <nss.h>
#include <errno.h>
#include <ctype.h>
static nis_result *result;
static u_long next_entry;
static nis_name tablename_val;
-static u_long tablename_len;
+static size_t tablename_len;
#define NISENTRYVAL(idx,col,res) \
((res)->objects.objects_val[(idx)].EN_data.en_cols.en_cols_val[(col)].ec_value.ec_value_val)
{
if (tablename_val == NULL)
{
- char buf [40 + strlen (nis_local_directory ())];
- char *p;
+ const char *local_dir = nis_local_directory ();
+ size_t local_dir_len = strlen (local_dir);
+ static const char prefix[] = "mail_aliases.org_dir.";
- p = __stpcpy (buf, "mail_aliases.org_dir.");
- p = __stpcpy (p, nis_local_directory ());
- tablename_val = __strdup (buf);
+ char *p = malloc (sizeof (prefix) + local_dir_len);
if (tablename_val == NULL)
{
*errnop = errno;
return NSS_STATUS_TRYAGAIN;
}
- tablename_len = strlen (tablename_val);
+
+ memcpy (__stpcpy (p, prefix), local_dir, local_dir_len + 1);
+
+ tablename_len = sizeof (prefix) - 1 + local_dir_len;
+
+ atomic_write_barrier ();
+
+ tablename_val = p;
}
+
return NSS_STATUS_SUCCESS;
}
"mail_aliases") != 0
|| result->objects.objects_val[entry].EN_data.en_cols.en_cols_len < 2)
return 0;
- else
+
+ char *first_unused = buffer + NISENTRYLEN (0, 1, result) + 1;
+ size_t room_left = (buflen - (buflen % __alignof__ (char *))
+ - NISENTRYLEN (0, 1, result) - 2);
+
+ if (NISENTRYLEN (entry, 1, result) >= buflen)
{
- char *first_unused = buffer + NISENTRYLEN (0, 1, result) + 1;
- size_t room_left =
- buflen - (buflen % __alignof__ (char *)) -
- NISENTRYLEN (0, 1, result) - 2;
- char *line;
- char *cp;
-
- if (NISENTRYLEN (entry, 1, result) >= buflen)
- {
- /* The line is too long for our buffer. */
- no_more_room:
- *errnop = ERANGE;
- return -1;
- }
- else
- {
- cp = __stpncpy (buffer, NISENTRYVAL (entry, 1, result),
- NISENTRYLEN (entry, 1, result));
- *cp = '\0';
- }
+ /* The line is too long for our buffer. */
+ no_more_room:
+ *errnop = ERANGE;
+ return -1;
+ }
+
+ char *cp = __stpncpy (buffer, NISENTRYVAL (entry, 1, result),
+ NISENTRYLEN (entry, 1, result));
+ *cp = '\0';
+
+ if (NISENTRYLEN(entry, 0, result) >= room_left)
+ goto no_more_room;
+
+ alias->alias_local = 0;
+ alias->alias_members_len = 0;
+ *first_unused = '\0';
+ ++first_unused;
+ cp = __stpncpy (first_unused, NISENTRYVAL (entry, 0, result),
+ NISENTRYLEN (entry, 0, result));
+ *cp = '\0';
+ alias->alias_name = first_unused;
+
+ /* Terminate the line for any case. */
+ cp = strpbrk (alias->alias_name, "#\n");
+ if (cp != NULL)
+ *cp = '\0';
+
+ first_unused += strlen (alias->alias_name) +1;
+ /* Adjust the pointer so it is aligned for
+ storing pointers. */
+ first_unused += __alignof__ (char *) - 1;
+ first_unused -= ((first_unused - (char *) 0) % __alignof__ (char *));
+ alias->alias_members = (char **) first_unused;
+
+ char *line = buffer;
+ while (*line != '\0')
+ {
+ /* Skip leading blanks. */
+ while (isspace (*line))
+ ++line;
+
+ if (*line == '\0')
+ break;
- if (NISENTRYLEN(entry, 0, result) >= room_left)
+ if (room_left < sizeof (char *))
goto no_more_room;
+ room_left -= sizeof (char *);
+ alias->alias_members[alias->alias_members_len] = line;
+
+ while (*line != '\0' && *line != ',')
+ ++line;
- alias->alias_local = 0;
- alias->alias_members_len = 0;
- *first_unused = '\0';
- ++first_unused;
- cp = __stpncpy (first_unused, NISENTRYVAL (entry, 0, result),
- NISENTRYLEN (entry, 0, result));
- *cp = '\0';
- alias->alias_name = first_unused;
-
- /* Terminate the line for any case. */
- cp = strpbrk (alias->alias_name, "#\n");
- if (cp != NULL)
- *cp = '\0';
-
- first_unused += strlen (alias->alias_name) +1;
- /* Adjust the pointer so it is aligned for
- storing pointers. */
- first_unused += __alignof__ (char *) - 1;
- first_unused -= ((first_unused - (char *) 0) % __alignof__ (char *));
- alias->alias_members = (char **) first_unused;
-
- line = buffer;
-
- while (*line != '\0')
+ if (line != alias->alias_members[alias->alias_members_len])
{
- /* Skip leading blanks. */
- while (isspace (*line))
- ++line;
-
- if (*line == '\0')
- break;
-
- if (room_left < sizeof (char *))
- goto no_more_room;
- room_left -= sizeof (char *);
- alias->alias_members[alias->alias_members_len] = line;
-
- while (*line != '\0' && *line != ',')
- ++line;
-
- if (line != alias->alias_members[alias->alias_members_len])
- {
- *line++ = '\0';
- alias->alias_members_len++;
- }
+ *line++ = '\0';
+ alias->alias_members_len++;
}
-
- return alias->alias_members_len == 0 ? 0 : 1;
}
+
+ return alias->alias_members_len == 0 ? 0 : 1;
}
static enum nss_status
enum nss_status status;
int err;
- if (result)
- nis_freeresult (result);
- result = NULL;
+ if (result != NULL)
+ {
+ nis_freeresult (result);
+ result = NULL;
+ }
if (_nss_create_tablename (&err) != NSS_STATUS_SUCCESS)
return NSS_STATUS_UNAVAIL;
{
__libc_lock_lock (lock);
- if (result)
- nis_freeresult (result);
- result = NULL;
+ if (result != NULL)
+ {
+ nis_freeresult (result);
+ result = NULL;
+ }
next_entry = 0;
__libc_lock_unlock (lock);
return NSS_STATUS_TRYAGAIN;
++next_entry;
- } while (!parse_res);
+ }
+ while (!parse_res);
return NSS_STATUS_SUCCESS;
}
if (tablename_val == NULL)
{
+ __libc_lock_lock (lock);
+
enum nss_status status = _nss_create_tablename (errnop);
+
+ __libc_lock_unlock (lock);
+
if (status != NSS_STATUS_SUCCESS)
return status;
}
*errnop = EINVAL;
return NSS_STATUS_UNAVAIL;
}
- else
- {
- nis_result *result;
- char buf[strlen (name) + 30 + tablename_len];
- int olderr = errno;
- sprintf (buf, "[name=%s],%s", name, tablename_val);
+ char buf[strlen (name) + 9 + tablename_len];
+ int olderr = errno;
- result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+ snprintf (buf, sizeof (buf), "[name=%s],%s", name, tablename_val);
- if (result == NULL)
- {
- *errnop = ENOMEM;
- return NSS_STATUS_TRYAGAIN;
- }
- if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
- return niserr2nss (result->status);
+ nis_result *result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
- parse_res = _nss_nisplus_parse_aliasent (result, 0, alias,
- buffer, buflen, errnop);
- if (parse_res < 1)
- {
- __set_errno (olderr);
+ if (result == NULL)
+ {
+ *errnop = ENOMEM;
+ return NSS_STATUS_TRYAGAIN;
+ }
- if (parse_res == -1)
- return NSS_STATUS_TRYAGAIN;
- else
- return NSS_STATUS_NOTFOUND;
- }
- return NSS_STATUS_SUCCESS;
+ if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS, 0))
+ return niserr2nss (result->status);
+
+ parse_res = _nss_nisplus_parse_aliasent (result, 0, alias,
+ buffer, buflen, errnop);
+ if (__builtin_expect (parse_res < 1, 0))
+ {
+ __set_errno (olderr);
+
+ if (parse_res == -1)
+ return NSS_STATUS_TRYAGAIN;
+ else
+ return NSS_STATUS_NOTFOUND;
}
+
+ return NSS_STATUS_SUCCESS;
}
-/* Copyright (C) 1997,1998,2000,2001,2002,2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997,1998,2000-2003,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@suse.de>, 1997.
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <nss.h>
-#include <errno.h>
+#include <atomic.h>
#include <ctype.h>
-#include <string.h>
-#include <bits/libc-lock.h>
+#include <errno.h>
+#include <inttypes.h>
#include <netdb.h>
+#include <nss.h>
+#include <string.h>
#include <netinet/ether.h>
-#include <rpcsvc/nis.h>
#include <netinet/if_ether.h>
+#include <rpcsvc/nis.h>
+#include <bits/libc-lock.h>
#include "nss-nisplus.h"
room_left -= (NISENTRYLEN (0, 0, result) +1);
ether->e_name = p;
- ether->e_addr = *ether_aton (NISENTRYVAL (0, 1, result));
+ struct ether_addr *ea = ether_aton (NISENTRYVAL (0, 1, result));
+ if (ea == NULL)
+ {
+ *errnop = EINVAL;
+ return -2;
+ }
+
+ ether->e_addr = *ea;
return 1;
}
{
if (tablename_val == NULL)
{
- char buf [40 + strlen (nis_local_directory ())];
- char *p;
+ const char *local_dir = nis_local_directory ();
+ size_t local_dir_len = strlen (local_dir);
+ static const char prefix[] = "ethers.org_dir.";
- p = __stpcpy (buf, "ethers.org_dir.");
- p = __stpcpy (p, nis_local_directory ());
- tablename_val = __strdup (buf);
+ char *p = malloc (sizeof (prefix) + local_dir_len);
if (tablename_val == NULL)
{
*errnop = errno;
return NSS_STATUS_TRYAGAIN;
}
- tablename_len = strlen (tablename_val);
+
+ memcpy (__stpcpy (p, prefix), local_dir, local_dir_len + 1);
+
+ tablename_len = sizeof (prefix) - 1 + local_dir_len;
+
+ atomic_write_barrier ();
+
+ tablename_val = p;
}
return NSS_STATUS_SUCCESS;
}
__libc_lock_lock (lock);
- if (result)
- nis_freeresult (result);
- result = NULL;
+ if (result != NULL)
+ {
+ nis_freeresult (result);
+ result = NULL;
+ }
if (_nss_create_tablename (&err) != NSS_STATUS_SUCCESS)
status = NSS_STATUS_UNAVAIL;
{
__libc_lock_lock (lock);
- if (result)
- nis_freeresult (result);
- result = NULL;
+ if (result != NULL)
+ {
+ nis_freeresult (result);
+ result = NULL;
+ }
__libc_lock_unlock (lock);
internal_nisplus_getetherent_r (struct etherent *ether, char *buffer,
size_t buflen, int *errnop)
{
- int parse_res;
-
if (tablename_val == NULL)
{
enum nss_status status = _nss_create_tablename (errnop);
}
/* Get the next entry until we found a correct one. */
+ int parse_res;
do
{
nis_result *saved_result;
}
else
{
- nis_result *res2;
-
- res2 = nis_next_entry(tablename_val, &result->cookie);
saved_result = result;
- result = res2;
+ result = nis_next_entry (tablename_val, &result->cookie);
if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
{
nis_freeresult (saved_result);
if (parse_res == -1)
{
nis_freeresult (result);
- *errnop = ERANGE;
result = saved_result;
return NSS_STATUS_TRYAGAIN;
}
- else
- {
- if (saved_result != NULL)
- nis_freeresult (saved_result);
- }
- } while (!parse_res);
+ if (saved_result != NULL)
+ nis_freeresult (saved_result);
+
+ }
+ while (!parse_res);
return NSS_STATUS_SUCCESS;
}
_nss_nisplus_gethostton_r (const char *name, struct etherent *eth,
char *buffer, size_t buflen, int *errnop)
{
- int parse_res;
-
if (tablename_val == NULL)
{
enum nss_status status = _nss_create_tablename (errnop);
*errnop = EINVAL;
return NSS_STATUS_UNAVAIL;
}
- else
- {
- nis_result *result;
- char buf[strlen (name) + 40 + tablename_len];
- int olderr = errno;
- sprintf (buf, "[name=%s],%s", name, tablename_val);
+ char buf[strlen (name) + 9 + tablename_len];
+ int olderr = errno;
- result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+ snprintf (buf, sizeof (buf), "[name=%s],%s", name, tablename_val);
- if (result == NULL)
- {
- *errnop = ENOMEM;
- return NSS_STATUS_TRYAGAIN;
- }
- if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
- {
- enum nss_status status = niserr2nss (result->status);
- nis_freeresult (result);
- return status;
- }
+ nis_result *result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
- parse_res = _nss_nisplus_parse_etherent (result, eth, buffer,
+ if (result == NULL)
+ {
+ *errnop = ENOMEM;
+ return NSS_STATUS_TRYAGAIN;
+ }
+
+ if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS, 0))
+ {
+ enum nss_status status = niserr2nss (result->status);
+ nis_freeresult (result);
+ return status;
+ }
+
+ int parse_res = _nss_nisplus_parse_etherent (result, eth, buffer,
buflen, errnop);
- if (parse_res < 1)
- {
- __set_errno (olderr);
+ if (__builtin_expect (parse_res < 1, 0))
+ {
+ __set_errno (olderr);
- if (parse_res == -1)
- {
- nis_freeresult (result);
- *errnop = ERANGE;
- return NSS_STATUS_TRYAGAIN;
- }
- else
- return NSS_STATUS_NOTFOUND;
+ if (parse_res == -1)
+ {
+ nis_freeresult (result);
+ return NSS_STATUS_TRYAGAIN;
}
- return NSS_STATUS_SUCCESS;
+ else
+ return NSS_STATUS_NOTFOUND;
}
+
+ return NSS_STATUS_SUCCESS;
}
enum nss_status
-_nss_nisplus_getntohost_r (const struct ether_addr *addr,
- struct etherent *eth,
+_nss_nisplus_getntohost_r (const struct ether_addr *addr, struct etherent *eth,
char *buffer, size_t buflen, int *errnop)
{
if (tablename_val == NULL)
{
+ __libc_lock_lock (lock);
+
enum nss_status status = _nss_create_tablename (errnop);
+ __libc_lock_unlock (lock);
+
if (status != NSS_STATUS_SUCCESS)
return status;
}
*errnop = EINVAL;
return NSS_STATUS_UNAVAIL;
}
- else
- {
- int parse_res;
- nis_result *result;
- char buf[255 + tablename_len];
- sprintf (buf, "[addr=%x:%x:%x:%x:%x:%x],ethers.org_dir",
- addr->ether_addr_octet[0], addr->ether_addr_octet[1],
- addr->ether_addr_octet[2], addr->ether_addr_octet[3],
- addr->ether_addr_octet[4], addr->ether_addr_octet[5]);
+ char buf[26 + tablename_len];
- result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+ snprintf (buf, sizeof (buf),
+ "[addr=%" PRIx8 ":%" PRIx8 ":%" PRIx8 ":%" PRIx8 ":%" PRIx8
+ ":%" PRIx8 "],%s",
+ addr->ether_addr_octet[0], addr->ether_addr_octet[1],
+ addr->ether_addr_octet[2], addr->ether_addr_octet[3],
+ addr->ether_addr_octet[4], addr->ether_addr_octet[5],
+ tablename_val);
- if (result == NULL)
- {
- *errnop = ENOMEM;
- return NSS_STATUS_TRYAGAIN;
- }
- if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
- {
- enum nss_status status = niserr2nss (result->status);
- nis_freeresult (result);
- return status;
- }
+ nis_result *result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
- parse_res = _nss_nisplus_parse_etherent (result, eth, buffer,
+ if (result == NULL)
+ {
+ *errnop = ENOMEM;
+ return NSS_STATUS_TRYAGAIN;
+ }
+
+ if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS, 0))
+ {
+ enum nss_status status = niserr2nss (result->status);
+ nis_freeresult (result);
+ return status;
+ }
+
+ int parse_res = _nss_nisplus_parse_etherent (result, eth, buffer,
buflen, errnop);
- if (parse_res < 1)
+ if (__builtin_expect (parse_res < 1, 0))
+ {
+ if (parse_res == -1)
{
- if (parse_res == -1)
- {
- nis_freeresult (result);
- *errnop = ERANGE;
- return NSS_STATUS_TRYAGAIN;
- }
- else
- return NSS_STATUS_NOTFOUND;
+ nis_freeresult (result);
+ return NSS_STATUS_TRYAGAIN;
}
- return NSS_STATUS_SUCCESS;
+
+ return NSS_STATUS_NOTFOUND;
}
+
+ return NSS_STATUS_SUCCESS;
}
-/* Copyright (C) 1997, 2001, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <atomic.h>
#include <nss.h>
#include <grp.h>
#include <ctype.h>
#include "nss-nisplus.h"
#include "nisplus-parser.h"
+
__libc_lock_define_initialized (static, lock);
static nis_result *result;
static unsigned long next_entry;
static nis_name tablename_val;
-static u_long tablename_len;
+static size_t tablename_len;
static enum nss_status
_nss_create_tablename (int *errnop)
{
if (tablename_val == NULL)
{
- char buf [40 + strlen (nis_local_directory ())];
- char *p;
+ const char *local_dir = nis_local_directory ();
+ size_t local_dir_len = strlen (local_dir);
+ static const char prefix[] = "group.org_dir.";
- p = __stpcpy (buf, "group.org_dir.");
- p = __stpcpy (p, nis_local_directory ());
- tablename_val = __strdup (buf);
+ char *p = malloc (sizeof (prefix) + local_dir_len);
if (tablename_val == NULL)
{
*errnop = errno;
return NSS_STATUS_TRYAGAIN;
}
- tablename_len = strlen (tablename_val);
+
+ memcpy (__stpcpy (p, prefix), local_dir, local_dir_len + 1);
+
+ tablename_len = sizeof (prefix) - 1 + local_dir_len;
+
+ atomic_write_barrier ();
+
+ tablename_val = p;
}
+
return NSS_STATUS_SUCCESS;
}
internal_setgrent (void)
{
enum nss_status status;
- int err;
- if (result)
- nis_freeresult (result);
- result = NULL;
+ if (result != NULL)
+ {
+ nis_freeresult (result);
+ result = NULL;
+ }
next_entry = 0;
if (tablename_val == NULL)
- if (_nss_create_tablename (&err) != NSS_STATUS_SUCCESS)
- return NSS_STATUS_UNAVAIL;
+ {
+ int err;
+ if (_nss_create_tablename (&err) != NSS_STATUS_SUCCESS)
+ return NSS_STATUS_UNAVAIL;
+ }
result = nis_list (tablename_val, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
if (result == NULL)
{
__libc_lock_lock (lock);
- if (result)
- nis_freeresult (result);
- result = NULL;
+ if (result != NULL)
+ {
+ nis_freeresult (result);
+ result = NULL;
+ }
__libc_lock_unlock (lock);
if (tablename_val == NULL)
{
+ __libc_lock_lock (lock);
+
enum nss_status status = _nss_create_tablename (errnop);
+ __libc_lock_unlock (lock);
+
if (status != NSS_STATUS_SUCCESS)
return status;
}
*errnop = EINVAL;
return NSS_STATUS_NOTFOUND;
}
- else
+
+ nis_result *result;
+ char buf[strlen (name) + 9 + tablename_len];
+ int olderr = errno;
+
+ snprintf (buf, sizeof (buf), "[name=%s],%s", name, tablename_val);
+
+ result = nis_list (buf, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
+
+ if (result == NULL)
{
- nis_result *result;
- char buf[strlen (name) + 24 + tablename_len];
- int olderr = errno;
+ *errnop = ENOMEM;
+ return NSS_STATUS_TRYAGAIN;
+ }
- sprintf (buf, "[name=%s],%s", name, tablename_val);
+ if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS, 0))
+ {
+ enum nss_status status = niserr2nss (result->status);
- result = nis_list (buf, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
+ nis_freeresult (result);
+ return status;
+ }
- if (result == NULL)
+ parse_res = _nss_nisplus_parse_grent (result, 0, gr, buffer, buflen, errnop);
+ nis_freeresult (result);
+ if (__builtin_expect (parse_res < 1, 0))
+ {
+ if (parse_res == -1)
{
- *errnop = ENOMEM;
+ *errnop = ERANGE;
return NSS_STATUS_TRYAGAIN;
}
- if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
- {
- enum nss_status status = niserr2nss (result->status);
-
- nis_freeresult (result);
- return status;
- }
-
- parse_res = _nss_nisplus_parse_grent (result, 0, gr, buffer, buflen,
- errnop);
- nis_freeresult (result);
- if (parse_res < 1)
+ else
{
- if (parse_res == -1)
- {
- *errnop = ERANGE;
- return NSS_STATUS_TRYAGAIN;
- }
- else
- {
- __set_errno (olderr);
- return NSS_STATUS_NOTFOUND;
- }
+ __set_errno (olderr);
+ return NSS_STATUS_NOTFOUND;
}
- return NSS_STATUS_SUCCESS;
}
+
+ return NSS_STATUS_SUCCESS;
}
enum nss_status
{
if (tablename_val == NULL)
{
+ __libc_lock_lock (lock);
+
enum nss_status status = _nss_create_tablename (errnop);
+ __libc_lock_unlock (lock);
+
if (status != NSS_STATUS_SUCCESS)
return status;
}
- {
- int parse_res;
- nis_result *result;
- char buf[36 + tablename_len];
- int olderr = errno;
+ int parse_res;
+ nis_result *result;
+ char buf[8 + 3 * sizeof (unsigned long int) + tablename_len];
+ int olderr = errno;
- sprintf (buf, "[gid=%lu],%s", (unsigned long int) gid, tablename_val);
+ snprintf (buf, sizeof (buf), "[gid=%lu],%s",
+ (unsigned long int) gid, tablename_val);
- result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+ result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
- if (result == NULL)
- {
- *errnop = ENOMEM;
- return NSS_STATUS_TRYAGAIN;
- }
- if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
- {
- enum nss_status status = niserr2nss (result->status);
+ if (result == NULL)
+ {
+ *errnop = ENOMEM;
+ return NSS_STATUS_TRYAGAIN;
+ }
- __set_errno (olderr);
+ if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS, 0))
+ {
+ enum nss_status status = niserr2nss (result->status);
- nis_freeresult (result);
- return status;
- }
-
- parse_res = _nss_nisplus_parse_grent (result, 0, gr, buffer, buflen,
- errnop);
-
- nis_freeresult (result);
- if (parse_res < 1)
- {
- __set_errno (olderr);
-
- if (parse_res == -1)
- {
- *errnop = ERANGE;
- return NSS_STATUS_TRYAGAIN;
- }
- else
- return NSS_STATUS_NOTFOUND;
- }
- return NSS_STATUS_SUCCESS;
- }
+ __set_errno (olderr);
+
+ nis_freeresult (result);
+ return status;
+ }
+
+ parse_res = _nss_nisplus_parse_grent (result, 0, gr, buffer, buflen, errnop);
+
+ nis_freeresult (result);
+ if (__builtin_expect (parse_res < 1, 0))
+ {
+ __set_errno (olderr);
+
+ if (parse_res == -1)
+ {
+ *errnop = ERANGE;
+ return NSS_STATUS_TRYAGAIN;
+ }
+ else
+ return NSS_STATUS_NOTFOUND;
+ }
+
+ return NSS_STATUS_SUCCESS;
}
-/* Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2002, 2003, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@suse.de>, 1997.
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <nss.h>
-#include <netdb.h>
-#include <errno.h>
+#include <atomic.h>
#include <ctype.h>
+#include <errno.h>
+#include <netdb.h>
+#include <nss.h>
#include <string.h>
-#include <netinet/in.h>
#include <arpa/inet.h>
-#include <bits/libc-lock.h>
+#include <netinet/in.h>
#include <rpcsvc/nis.h>
+#include <bits/libc-lock.h>
#include "nss-nisplus.h"
{
if (tablename_val == NULL)
{
- char buf [40 + strlen (nis_local_directory ())];
- char *p;
+ const char *local_dir = nis_local_directory ();
+ size_t local_dir_len = strlen (local_dir);
+ static const char prefix[] = "hosts.org_dir.";
- p = __stpcpy (buf, "hosts.org_dir.");
- p = __stpcpy (p, nis_local_directory ());
- tablename_val = __strdup (buf);
+ char *p = malloc (sizeof (prefix) + local_dir_len);
if (tablename_val == NULL)
{
*errnop = errno;
return NSS_STATUS_TRYAGAIN;
}
- tablename_len = strlen (tablename_val);
+
+ memcpy (__stpcpy (p, prefix), local_dir, local_dir_len + 1);
+
+ tablename_len = sizeof (prefix) - 1 + local_dir_len;
+
+ atomic_write_barrier ();
+
+ tablename_val = p;
}
+
return NSS_STATUS_SUCCESS;
}
__libc_lock_lock (lock);
- if (result)
- nis_freeresult (result);
- result = NULL;
+ if (result != NULL)
+ {
+ nis_freeresult (result);
+ result = NULL;
+ }
if (tablename_val == NULL)
status = _nss_create_tablename (&err);
{
__libc_lock_lock (lock);
- if (result)
- nis_freeresult (result);
- result = NULL;
+ if (result != NULL)
+ {
+ nis_freeresult (result);
+ result = NULL;
+ }
__libc_lock_unlock (lock);
if (tablename_val == NULL)
{
+ __libc_lock_lock (lock);
+
enum nss_status status = _nss_create_tablename (errnop);
+ __libc_lock_unlock (lock);
+
if (status != NSS_STATUS_SUCCESS)
{
*herrnop = NETDB_INTERNAL;
*herrnop = NETDB_INTERNAL;
return NSS_STATUS_NOTFOUND;
}
- else
- {
- nis_result *result;
- char buf[strlen (name) + 255 + tablename_len];
- int olderr = errno;
- /* Search at first in the alias list, and use the correct name
- for the next search */
- sprintf (buf, "[name=%s],%s", name, tablename_val);
- result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+ nis_result *result;
+ char buf[strlen (name) + 10 + tablename_len];
+ int olderr = errno;
- if (result != NULL)
- {
- /* If we do not find it, try it as original name. But if the
- database is correct, we should find it in the first case, too */
- if ((result->status != NIS_SUCCESS
- && result->status != NIS_S_SUCCESS)
- || __type_of (result->objects.objects_val) != NIS_ENTRY_OBJ
- || strcmp (result->objects.objects_val->EN_data.en_type,
- "hosts_tbl") != 0
- || result->objects.objects_val->EN_data.en_cols.en_cols_len < 3)
- sprintf (buf, "[cname=%s],%s", name, tablename_val);
- else
- sprintf (buf, "[cname=%s],%s", NISENTRYVAL(0, 0, result),
- tablename_val);
-
- nis_freeresult (result);
- result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
- }
+ /* Search at first in the alias list, and use the correct name
+ for the next search. */
+ snprintf (buf, sizeof (buf), "[name=%s],%s", name, tablename_val);
+ result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
- if (result == NULL)
+ if (result != NULL)
+ {
+ char *bufptr = buf;
+
+ /* If we did not find it, try it as original name. But if the
+ database is correct, we should find it in the first case, too. */
+ if ((result->status != NIS_SUCCESS
+ && result->status != NIS_S_SUCCESS)
+ || __type_of (result->objects.objects_val) != NIS_ENTRY_OBJ
+ || strcmp (result->objects.objects_val->EN_data.en_type,
+ "hosts_tbl") != 0
+ || result->objects.objects_val->EN_data.en_cols.en_cols_len < 3)
+ snprintf (buf, sizeof (buf), "[cname=%s],%s", name, tablename_val);
+ else
{
- *errnop = ENOMEM;
- return NSS_STATUS_TRYAGAIN;
+ /* We need to allocate a new buffer since there is no
+ guarantee the returned name has a length limit. */
+ const char *entryval = NISENTRYVAL(0, 0, result);
+ size_t buflen = strlen (entryval) + 10 + tablename_len;
+ bufptr = alloca (buflen);
+ snprintf (bufptr, buflen, "[cname=%s],%s",
+ entryval, tablename_val);
}
- retval = niserr2nss (result->status);
- if (retval != NSS_STATUS_SUCCESS)
- {
- if (retval == NSS_STATUS_TRYAGAIN)
- {
- *errnop = errno;
- *herrnop = NETDB_INTERNAL;
- }
- else
- __set_errno (olderr);
- nis_freeresult (result);
- return retval;
- }
-
- parse_res = _nss_nisplus_parse_hostent (result, af, host, buffer,
- buflen, errnop, flags);
nis_freeresult (result);
+ result = nis_list (bufptr, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+ }
- if (parse_res > 0)
- return NSS_STATUS_SUCCESS;
+ if (result == NULL)
+ {
+ *errnop = ENOMEM;
+ return NSS_STATUS_TRYAGAIN;
+ }
- *herrnop = NETDB_INTERNAL;
- if (parse_res == -1)
+ retval = niserr2nss (result->status);
+ if (__builtin_expect (retval != NSS_STATUS_SUCCESS, 0))
+ {
+ if (retval == NSS_STATUS_TRYAGAIN)
{
- *errnop = ERANGE;
- return NSS_STATUS_TRYAGAIN;
+ *errnop = errno;
+ *herrnop = NETDB_INTERNAL;
}
else
- {
- __set_errno (olderr);
- return NSS_STATUS_NOTFOUND;
- }
+ __set_errno (olderr);
+ nis_freeresult (result);
+ return retval;
}
+
+ parse_res = _nss_nisplus_parse_hostent (result, af, host, buffer,
+ buflen, errnop, flags);
+
+ nis_freeresult (result);
+
+ if (parse_res > 0)
+ return NSS_STATUS_SUCCESS;
+
+ *herrnop = NETDB_INTERNAL;
+ if (parse_res == -1)
+ {
+ *errnop = ERANGE;
+ return NSS_STATUS_TRYAGAIN;
+ }
+
+ __set_errno (olderr);
+ return NSS_STATUS_NOTFOUND;
}
enum nss_status
((_res.options & RES_USE_INET6) ? AI_V4MAPPED : 0));
}
-#if 0
-enum nss_status
-_nss_nisplus_getipnodebyname_r (const char *name, int af, int flags,
- struct hostent *result, char *buffer,
- size_t buflen, int *errnop, int *herrnop)
-{
- return internal_gethostbyname2_r (name, af, result, buffer, buflen,
- errnop, herrnop, flags);
-}
-#endif
-
enum nss_status
_nss_nisplus_gethostbyname_r (const char *name, struct hostent *host,
char *buffer, size_t buflen, int *errnop,
{
if (tablename_val == NULL)
{
+ __libc_lock_lock (lock);
+
enum nss_status status = _nss_create_tablename (errnop);
+ __libc_lock_unlock (lock);
+
if (status != NSS_STATUS_SUCCESS)
return status;
}
if (addr == NULL)
return NSS_STATUS_NOTFOUND;
- else
- {
- nis_result *result;
- char buf[255 + tablename_len];
- int retval, parse_res;
- int olderr = errno;
- sprintf (buf, "[addr=%s],%s",
- inet_ntoa (*(const struct in_addr *) addr), tablename_val);
- result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
-
- if (result == NULL)
- {
- __set_errno (ENOMEM);
- return NSS_STATUS_TRYAGAIN;
- }
- retval = niserr2nss (result->status);
- if (retval != NSS_STATUS_SUCCESS)
- {
- if (retval == NSS_STATUS_TRYAGAIN)
- {
- *errnop = errno;
- *herrnop = NETDB_INTERNAL;
- }
- else
- __set_errno (olderr);
- nis_freeresult (result);
- return retval;
- }
+ char buf[24 + tablename_len];
+ int retval, parse_res;
+ int olderr = errno;
- parse_res = _nss_nisplus_parse_hostent (result, af, host,
- buffer, buflen, errnop,
- ((_res.options & RES_USE_INET6) ? AI_V4MAPPED : 0));
- nis_freeresult (result);
+ snprintf (buf, sizeof (buf), "[addr=%s],%s",
+ inet_ntoa (*(const struct in_addr *) addr), tablename_val);
+ nis_result *result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
- if (parse_res > 0)
- return NSS_STATUS_SUCCESS;
+ if (result == NULL)
+ {
+ __set_errno (ENOMEM);
+ return NSS_STATUS_TRYAGAIN;
+ }
- *herrnop = NETDB_INTERNAL;
- if (parse_res == -1)
+ retval = niserr2nss (result->status);
+ if (__builtin_expect (retval != NSS_STATUS_SUCCESS, 0))
+ {
+ if (retval == NSS_STATUS_TRYAGAIN)
{
- *errnop = ERANGE;
- return NSS_STATUS_TRYAGAIN;
+ *errnop = errno;
+ *herrnop = NETDB_INTERNAL;
}
else
- {
- __set_errno (olderr);
- return NSS_STATUS_NOTFOUND;
- }
+ __set_errno (olderr);
+ nis_freeresult (result);
+ return retval;
+ }
+
+ parse_res = _nss_nisplus_parse_hostent (result, af, host,
+ buffer, buflen, errnop,
+ ((_res.options & RES_USE_INET6)
+ ? AI_V4MAPPED : 0));
+ nis_freeresult (result);
+
+ if (parse_res > 0)
+ return NSS_STATUS_SUCCESS;
+
+ *herrnop = NETDB_INTERNAL;
+ if (parse_res == -1)
+ {
+ *errnop = ERANGE;
+ return NSS_STATUS_TRYAGAIN;
}
+
+ __set_errno (olderr);
+ return NSS_STATUS_NOTFOUND;
}
enum nss_status
_nss_nisplus_setnetgrent (const char *group, struct __netgrent *netgrp)
{
- enum nss_status status;
- char buf[strlen (group) + 30];
+ char buf[strlen (group) + 25];
if (group == NULL || group[0] == '\0')
return NSS_STATUS_UNAVAIL;
- status = NSS_STATUS_SUCCESS;
+ enum nss_status status = NSS_STATUS_SUCCESS;
- sprintf (buf, "[name=%s],netgroup.org_dir", group);
+ snprintf (buf, sizeof (buf), "[name=%s],netgroup.org_dir", group);
netgrp->data = (char *) nis_list (buf, EXPAND_NAME, NULL, NULL);
-/* Copyright (C) 1997,1998,2000,2001,2002,2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997,1998,2000-2003,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <nss.h>
-#include <netdb.h>
-#include <errno.h>
+#include <atomic.h>
#include <ctype.h>
+#include <errno.h>
+#include <netdb.h>
+#include <nss.h>
#include <stdint.h>
#include <string.h>
#include <arpa/inet.h>
-#include <bits/libc-lock.h>
#include <rpcsvc/nis.h>
+#include <bits/libc-lock.h>
#include "nss-nisplus.h"
static int
_nss_nisplus_parse_netent (nis_result *result, struct netent *network,
- char *buffer, size_t buflen, int *errnop)
+ char *buffer, size_t buflen, int *errnop)
{
char *first_unused = buffer;
size_t room_left = buflen;
- unsigned int i;
- char *p, *line;
if (result == NULL)
return 0;
|| result->objects.objects_val[0].EN_data.en_cols.en_cols_len < 3)
return 0;
- if (NISENTRYLEN(0, 0, result) >= room_left)
+ if (NISENTRYLEN (0, 0, result) >= room_left)
{
/* The line is too long for our buffer. */
no_more_room:
return -1;
}
- strncpy (first_unused, NISENTRYVAL(0, 0, result),
+ strncpy (first_unused, NISENTRYVAL (0, 0, result),
NISENTRYLEN (0, 0, result));
first_unused[NISENTRYLEN (0, 0, result)] = '\0';
network->n_name = first_unused;
first_unused += strlen (first_unused) +1;
network->n_addrtype = 0;
network->n_net = inet_network (NISENTRYVAL (0, 2, result));
- p = first_unused;
+ char *p = first_unused;
- line = p;
- for (i = 0; i < result->objects.objects_len; ++i)
+ char *line = p;
+ for (unsigned int i = 0; i < result->objects.objects_len; ++i)
{
if (strcmp (NISENTRYVAL (i, 1, result), network->n_name) != 0)
{
room_left -= (2 * sizeof (char *));
network->n_aliases[0] = NULL;
- i = 0;
+ unsigned int i = 0;
while (*line != '\0')
{
/* Skip leading blanks. */
while (isspace (*line))
- line++;
+ ++line;
if (*line == '\0')
break;
++i;
}
else
- network->n_aliases[i+1] = NULL;
+ network->n_aliases[i + 1] = NULL;
}
return 1;
{
if (tablename_val == NULL)
{
- char buf [40 + strlen (nis_local_directory ())];
- char *p;
+ const char *local_dir = nis_local_directory ();
+ size_t local_dir_len = strlen (local_dir);
+ static const char prefix[] = "networks.org_dir.";
- p = __stpcpy (buf, "networks.org_dir.");
- p = __stpcpy (p, nis_local_directory ());
- tablename_val = __strdup (buf);
+ char *p = malloc (sizeof (prefix) + local_dir_len);
if (tablename_val == NULL)
{
*errnop = errno;
return NSS_STATUS_TRYAGAIN;
}
- tablename_len = strlen (tablename_val);
+
+ memcpy (__stpcpy (p, prefix), local_dir, local_dir_len + 1);
+
+ tablename_len = sizeof (prefix) - 1 + local_dir_len;
+
+ atomic_write_barrier ();
+
+ tablename_val = p;
}
+
return NSS_STATUS_SUCCESS;
}
_nss_nisplus_setnetent (int stayopen)
{
enum nss_status status = NSS_STATUS_SUCCESS;
- int err;
__libc_lock_lock (lock);
- if (result)
- nis_freeresult (result);
- result = NULL;
+ if (result != NULL)
+ {
+ nis_freeresult (result);
+ result = NULL;
+ }
if (tablename_val == NULL)
- status = _nss_create_tablename (&err);
+ {
+ int err;
+ status = _nss_create_tablename (&err);
+ }
__libc_lock_unlock (lock);
{
__libc_lock_lock (lock);
- if (result)
- nis_freeresult (result);
- result = NULL;
+ if (result != NULL)
+ {
+ nis_freeresult (result);
+ result = NULL;
+ }
__libc_lock_unlock (lock);
result = nis_first_entry (tablename_val);
if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
{
- int retval;
-
- retval = niserr2nss (result->status);
+ int retval = niserr2nss (result->status);
nis_freeresult (result);
result = NULL;
if (retval == NSS_STATUS_TRYAGAIN)
}
else
{
- nis_result *res;
-
- res = nis_next_entry (tablename_val, &result->cookie);
+ nis_result *res = nis_next_entry (tablename_val, &result->cookie);
saved_res = result;
result = res;
if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
{
- int retval;
-
- retval = niserr2nss (result->status);
+ int retval = niserr2nss (result->status);
nis_freeresult (result);
result = saved_res;
if (retval == NSS_STATUS_TRYAGAIN)
return NSS_STATUS_TRYAGAIN;
}
- } while (!parse_res);
+ }
+ while (!parse_res);
return NSS_STATUS_SUCCESS;
}
if (tablename_val == NULL)
{
+ __libc_lock_lock (lock);
+
enum nss_status status = _nss_create_tablename (errnop);
+ __libc_lock_unlock (lock);
+
if (status != NSS_STATUS_SUCCESS)
return status;
}
*herrnop = NETDB_INTERNAL;
return NSS_STATUS_UNAVAIL;
}
- else
- {
- nis_result *result;
- char buf[strlen (name) + 255 + tablename_len];
- int olderr = errno;
- /* Search at first in the alias list, and use the correct name
- for the next search */
- sprintf (buf, "[name=%s],%s", name, tablename_val);
- result = nis_list (buf, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
+ nis_result *result;
+ char buf[strlen (name) + 10 + tablename_len];
+ int olderr = errno;
- if (result != NULL)
- {
- /* If we do not find it, try it as original name. But if the
- database is correct, we should find it in the first case, too */
- if ((result->status != NIS_SUCCESS
- && result->status != NIS_S_SUCCESS)
- || __type_of (result->objects.objects_val) != NIS_ENTRY_OBJ
- || strcmp (result->objects.objects_val[0].EN_data.en_type,
- "networks_tbl") != 0
- || (result->objects.objects_val[0].EN_data.en_cols.en_cols_len
- < 3))
- sprintf (buf, "[cname=%s],%s", name, tablename_val);
- else
- sprintf (buf, "[cname=%s],%s", NISENTRYVAL (0, 0, result),
- tablename_val);
-
- nis_freeresult (result);
- result = nis_list (buf, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
- }
+ /* Search at first in the alias list, and use the correct name
+ for the next search */
+ snprintf (buf, sizeof (buf), "[name=%s],%s", name, tablename_val);
+ result = nis_list (buf, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
- if (result == NULL)
- {
- __set_errno (ENOMEM);
- return NSS_STATUS_TRYAGAIN;
- }
- retval = niserr2nss (result->status);
- if (retval != NSS_STATUS_SUCCESS)
+ if (result != NULL)
+ {
+ char *bufptr = buf;
+
+ /* If we do not find it, try it as original name. But if the
+ database is correct, we should find it in the first case, too */
+ if ((result->status != NIS_SUCCESS
+ && result->status != NIS_S_SUCCESS)
+ || __type_of (result->objects.objects_val) != NIS_ENTRY_OBJ
+ || strcmp (result->objects.objects_val[0].EN_data.en_type,
+ "networks_tbl") != 0
+ || (result->objects.objects_val[0].EN_data.en_cols.en_cols_len
+ < 3))
+ snprintf (buf, sizeof (buf), "[cname=%s],%s", name, tablename_val);
+ else
{
- if (retval == NSS_STATUS_TRYAGAIN)
- {
- *errnop = errno;
- *herrnop = NETDB_INTERNAL;
- }
- else
- __set_errno (olderr);
- nis_freeresult (result);
- return retval;
+ /* We need to allocate a new buffer since there is no
+ guarantee the returned name has a length limit. */
+ const char *entryval = NISENTRYVAL (0, 0, result);
+ size_t buflen = strlen (entryval) + 10 + tablename_len;
+ bufptr = alloca (buflen);
+ snprintf (bufptr, buflen, "[cname=%s],%s",
+ entryval, tablename_val);
}
- parse_res = _nss_nisplus_parse_netent (result, network, buffer, buflen,
- errnop);
-
nis_freeresult (result);
+ result = nis_list (bufptr, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
+ }
- if (parse_res > 0)
- return NSS_STATUS_SUCCESS;
+ if (result == NULL)
+ {
+ __set_errno (ENOMEM);
+ return NSS_STATUS_TRYAGAIN;
+ }
- *herrnop = NETDB_INTERNAL;
- if (parse_res == -1)
+ retval = niserr2nss (result->status);
+ if (__builtin_expect (retval != NSS_STATUS_SUCCESS, 0))
+ {
+ if (retval == NSS_STATUS_TRYAGAIN)
{
- *errnop = ERANGE;
- return NSS_STATUS_TRYAGAIN;
+ *errnop = errno;
+ *herrnop = NETDB_INTERNAL;
}
else
- {
- __set_errno (olderr);
- return NSS_STATUS_NOTFOUND;
- }
+ __set_errno (olderr);
+ nis_freeresult (result);
+ return retval;
+ }
+
+ parse_res = _nss_nisplus_parse_netent (result, network, buffer, buflen,
+ errnop);
+
+ nis_freeresult (result);
+
+ if (parse_res > 0)
+ return NSS_STATUS_SUCCESS;
+
+ *herrnop = NETDB_INTERNAL;
+ if (parse_res == -1)
+ {
+ *errnop = ERANGE;
+ return NSS_STATUS_TRYAGAIN;
}
+
+ __set_errno (olderr);
+ return NSS_STATUS_NOTFOUND;
}
/* XXX type is ignored, SUN's NIS+ table doesn't support it */
{
if (tablename_val == NULL)
{
+ __libc_lock_lock (lock);
+
enum nss_status status = _nss_create_tablename (errnop);
+ __libc_lock_unlock (lock);
+
if (status != NSS_STATUS_SUCCESS)
return status;
}
{
- int parse_res, retval;
- nis_result *result;
- char buf[1024 + tablename_len];
- struct in_addr in;
- char buf2[256];
- int b2len;
+ char buf[27 + tablename_len];
+ char buf2[18];
int olderr = errno;
- in = inet_makeaddr (addr, 0);
+ struct in_addr in = inet_makeaddr (addr, 0);
strcpy (buf2, inet_ntoa (in));
- b2len = strlen (buf2);
+ size_t b2len = strlen (buf2);
while (1)
{
- sprintf (buf, "[addr=%s],%s", buf2, tablename_val);
- result = nis_list (buf, EXPAND_NAME, NULL, NULL);
+ snprintf (buf, sizeof (buf), "[addr=%s],%s", buf2, tablename_val);
+ nis_result *result = nis_list (buf, EXPAND_NAME, NULL, NULL);
if (result == NULL)
{
__set_errno (ENOMEM);
return NSS_STATUS_TRYAGAIN;
}
- retval = niserr2nss (result->status);
- if (retval != NSS_STATUS_SUCCESS)
+ enum nss_status retval = niserr2nss (result->status);
+ if (__builtin_expect (retval != NSS_STATUS_SUCCESS, 0))
{
- if (buf2[b2len -2] == '.' && buf2[b2len -1] == '0')
+ if (b2len > 2 && buf2[b2len - 2] == '.' && buf2[b2len - 1] == '0')
{
/* Try again, but with trailing dot(s)
removed (one by one) */
b2len -= 2;
continue;
}
- else
- return NSS_STATUS_NOTFOUND;
if (retval == NSS_STATUS_TRYAGAIN)
{
return retval;
}
- parse_res = _nss_nisplus_parse_netent (result, network, buffer,
- buflen, errnop);
+ int parse_res = _nss_nisplus_parse_netent (result, network, buffer,
+ buflen, errnop);
nis_freeresult (result);
-/* Copyright (C) 1997, 1998, 2001, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997,1998,2001,2002,2003,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <nss.h>
-#include <errno.h>
+#include <atomic.h>
#include <ctype.h>
+#include <errno.h>
#include <netdb.h>
+#include <nss.h>
#include <string.h>
-#include <bits/libc-lock.h>
#include <rpcsvc/nis.h>
+#include <bits/libc-lock.h>
#include "nss-nisplus.h"
{
if (tablename_val == NULL)
{
- char buf [40 + strlen (nis_local_directory ())];
- char *p;
+ const char *local_dir = nis_local_directory ();
+ size_t local_dir_len = strlen (local_dir);
+ static const char prefix[] = "protocols.org_dir.";
- p = __stpcpy (buf, "protocols.org_dir.");
- p = __stpcpy (p, nis_local_directory ());
- tablename_val = __strdup (buf);
+ char *p = malloc (sizeof (prefix) + local_dir_len);
if (tablename_val == NULL)
{
*errnop = errno;
return NSS_STATUS_TRYAGAIN;
}
- tablename_len = strlen (tablename_val);
+
+ memcpy (__stpcpy (p, prefix), local_dir, local_dir_len + 1);
+
+ tablename_len = sizeof (prefix) - 1 + local_dir_len;
+
+ atomic_write_barrier ();
+
+ tablename_val = p;
}
+
return NSS_STATUS_SUCCESS;
}
__libc_lock_lock (lock);
- if (result)
- nis_freeresult (result);
- result = NULL;
+ if (result != NULL)
+ {
+ nis_freeresult (result);
+ result = NULL;
+ }
if (tablename_val == NULL)
{
{
__libc_lock_lock (lock);
- if (result)
- nis_freeresult (result);
- result = NULL;
+ if (result != NULL)
+ {
+ nis_freeresult (result);
+ result = NULL;
+ }
__libc_lock_unlock (lock);
}
else
{
- nis_result *res;
-
saved_res = result;
- res = nis_next_entry (tablename_val, &result->cookie);
- result = res;
+ result = nis_next_entry (tablename_val, &result->cookie);
if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
{
if (tablename_val == NULL)
{
+ __libc_lock_lock (lock);
+
enum nss_status status = _nss_create_tablename (errnop);
+ __libc_lock_unlock (lock);
+
if (status != NSS_STATUS_SUCCESS)
return status;
}
if (name == NULL)
return NSS_STATUS_NOTFOUND;
- else
- {
- nis_result *result;
- char buf[strlen (name) + 255 + tablename_len];
- int olderr = errno;
-
- /* Search at first in the alias list, and use the correct name
- for the next search */
- sprintf (buf, "[name=%s],%s", name, tablename_val);
- result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
- if (result != NULL)
- {
- /* If we do not find it, try it as original name. But if the
- database is correct, we should find it in the first case, too */
- if ((result->status != NIS_SUCCESS
- && result->status != NIS_S_SUCCESS)
- || __type_of (result->objects.objects_val) != NIS_ENTRY_OBJ
- || strcmp (result->objects.objects_val->EN_data.en_type,
- "protocols_tbl") != 0
- || result->objects.objects_val->EN_data.en_cols.en_cols_len < 3)
- sprintf (buf, "[cname=%s],%s", name, tablename_val);
- else
- sprintf (buf, "[cname=%s],%s", NISENTRYVAL (0, 0, result),
- tablename_val);
+ char buf[strlen (name) + 10 + tablename_len];
+ int olderr = errno;
- nis_freeresult (result);
- result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
- }
+ /* Search at first in the alias list, and use the correct name
+ for the next search */
+ snprintf (buf, sizeof (buf), "[name=%s],%s", name, tablename_val);
+ nis_result *result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
- if (result == NULL)
+ if (result != NULL)
+ {
+ char *bufptr = buf;
+
+ /* If we did not find it, try it as original name. But if the
+ database is correct, we should find it in the first case, too */
+ if ((result->status != NIS_SUCCESS
+ && result->status != NIS_S_SUCCESS)
+ || __type_of (result->objects.objects_val) != NIS_ENTRY_OBJ
+ || strcmp (result->objects.objects_val->EN_data.en_type,
+ "protocols_tbl") != 0
+ || result->objects.objects_val->EN_data.en_cols.en_cols_len < 3)
+ snprintf (buf, sizeof (buf), "[cname=%s],%s", name, tablename_val);
+ else
{
- __set_errno (ENOMEM);
- return NSS_STATUS_TRYAGAIN;
+ /* We need to allocate a new buffer since there is no
+ guarantee the returned name has a length limit. */
+ const char *entryval = NISENTRYVAL (0, 0, result);
+ size_t buflen = strlen (entryval) + 10 + tablename_len;
+ bufptr = alloca (buflen);
+ snprintf (bufptr, buflen, "[cname=%s],%s",
+ entryval, tablename_val);
}
- if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
- {
- enum nss_status status = niserr2nss (result->status);
- __set_errno (olderr);
+ nis_freeresult (result);
+ result = nis_list (bufptr, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+ }
- nis_freeresult (result);
- return status;
- }
+ if (result == NULL)
+ {
+ __set_errno (ENOMEM);
+ return NSS_STATUS_TRYAGAIN;
+ }
- parse_res = _nss_nisplus_parse_protoent (result, proto, buffer, buflen,
- errnop);
+ if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS, 0))
+ {
+ enum nss_status status = niserr2nss (result->status);
+
+ __set_errno (olderr);
nis_freeresult (result);
+ return status;
+ }
- if (parse_res < 1)
+ parse_res = _nss_nisplus_parse_protoent (result, proto, buffer, buflen,
+ errnop);
+
+ nis_freeresult (result);
+
+ if (parse_res < 1)
+ {
+ if (parse_res == -1)
{
- if (parse_res == -1)
- {
- *errnop = ERANGE;
- return NSS_STATUS_TRYAGAIN;
- }
- else
- {
- __set_errno (olderr);
- return NSS_STATUS_NOTFOUND;
- }
+ *errnop = ERANGE;
+ return NSS_STATUS_TRYAGAIN;
+ }
+ else
+ {
+ __set_errno (olderr);
+ return NSS_STATUS_NOTFOUND;
}
- return NSS_STATUS_SUCCESS;
}
+
+ return NSS_STATUS_SUCCESS;
}
enum nss_status
{
if (tablename_val == NULL)
{
+ __libc_lock_lock (lock);
+
enum nss_status status = _nss_create_tablename (errnop);
+ __libc_lock_unlock (lock);
+
if (status != NSS_STATUS_SUCCESS)
return status;
}
- {
- int parse_res;
- nis_result *result;
- char buf[46 + tablename_len];
- int olderr = errno;
+ char buf[12 + 3 * sizeof (number) + tablename_len];
+ int olderr = errno;
- sprintf (buf, "[number=%d],%s", number, tablename_val);
+ snprintf (buf, sizeof (buf), "[number=%d],%s", number, tablename_val);
- result = nis_list (buf, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
+ nis_result *result = nis_list (buf, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
- if (result == NULL)
- {
- __set_errno (ENOMEM);
- return NSS_STATUS_TRYAGAIN;
- }
- if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
- {
- enum nss_status status = niserr2nss (result->status);
+ if (result == NULL)
+ {
+ __set_errno (ENOMEM);
+ return NSS_STATUS_TRYAGAIN;
+ }
- __set_errno (olderr);
+ if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS, 0))
+ {
+ enum nss_status status = niserr2nss (result->status);
- nis_freeresult (result);
- return status;
- }
-
- parse_res = _nss_nisplus_parse_protoent (result, proto, buffer, buflen,
- errnop);
-
- nis_freeresult (result);
-
- if (parse_res < 1)
- {
- if (parse_res == -1)
- {
- *errnop = ERANGE;
- return NSS_STATUS_TRYAGAIN;
- }
- else
- {
- __set_errno (olderr);
- return NSS_STATUS_NOTFOUND;
- }
- }
- return NSS_STATUS_SUCCESS;
- }
+ __set_errno (olderr);
+
+ nis_freeresult (result);
+ return status;
+ }
+
+ int parse_res = _nss_nisplus_parse_protoent (result, proto, buffer, buflen,
+ errnop);
+
+ nis_freeresult (result);
+
+ if (parse_res < 1)
+ {
+ if (parse_res == -1)
+ {
+ *errnop = ERANGE;
+ return NSS_STATUS_TRYAGAIN;
+ }
+ else
+ {
+ __set_errno (olderr);
+ return NSS_STATUS_NOTFOUND;
+ }
+ }
+
+ return NSS_STATUS_SUCCESS;
}
-/* Copyright (c) 1997, 1999, 2001, 2003 Free Software Foundation, Inc.
+/* Copyright (c) 1997, 1999, 2001, 2003, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@suse.de>, 1997.
{
nis_result *res;
enum nss_status retval;
- char buf[NIS_MAXNAMELEN+2];
+ char buf[NIS_MAXNAMELEN + 2];
size_t slen;
char *domain, *cptr;
int len;
{
nis_result *res;
enum nss_status retval;
- char buf[NIS_MAXNAMELEN+2];
+ char buf[NIS_MAXNAMELEN + 2];
size_t slen;
char *domain, *cptr;
int len;
buf[slen] = '\0';
}
- res = nis_list (buf, USE_DGRAM+NO_AUTHINFO+FOLLOW_LINKS+FOLLOW_PATH,
+ res = nis_list (buf, USE_DGRAM | NO_AUTHINFO | FOLLOW_LINKS | FOLLOW_PATH,
NULL, NULL);
if (res == NULL)
{
char *domain;
nis_result *res;
- char sname[NIS_MAXNAMELEN+2]; /* search criteria + table name */
+ char sname[NIS_MAXNAMELEN + 2]; /* search criteria + table name */
size_t slen;
- char principal[NIS_MAXNAMELEN+1];
+ char principal[NIS_MAXNAMELEN + 1];
int len;
/* 1. Get home domain of user. */
++domain; /* skip '@' */
/* 2. Get user's nisplus principal name. */
- if ((strlen (netname) + strlen (domain)+45) >
- (size_t) NIS_MAXNAMELEN)
- return NSS_STATUS_UNAVAIL;
-
slen = snprintf (sname, NIS_MAXNAMELEN,
"[auth_name=%s,auth_type=DES],cred.org_dir.%s",
netname, domain);
return NSS_STATUS_UNAVAIL;
}
- slen = sprintf (sname, "[cname=%s,auth_type=LOCAL],cred.org_dir.%s",
- principal, domain);
+ slen = snprintf (sname, sizeof (sname),
+ "[cname=%s,auth_type=LOCAL],cred.org_dir.%s",
+ principal, domain);
if (sname[slen - 1] != '.')
{
-/* Copyright (C) 1997, 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997,1999,2001,2002,2003,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <atomic.h>
#include <nss.h>
#include <errno.h>
#include <pwd.h>
__libc_lock_define_initialized (static, lock)
static nis_result *result;
-static nis_name tablename_val;
-static u_long tablename_len;
+nis_name pwd_tablename_val attribute_hidden;
+size_t pwd_tablename_len attribute_hidden;
-static enum nss_status
-_nss_create_tablename (int *errnop)
+enum nss_status
+_nss_pwd_create_tablename (int *errnop)
{
- if (tablename_val == NULL)
+ if (pwd_tablename_val == NULL)
{
- char buf [40 + strlen (nis_local_directory ())];
- char *p;
+ const char *local_dir = nis_local_directory ();
+ size_t local_dir_len = strlen (local_dir);
+ static const char prefix[] = "passwd.org_dir.";
- p = __stpcpy (buf, "passwd.org_dir.");
- p = __stpcpy (p, nis_local_directory ());
- tablename_val = __strdup (buf);
- if (tablename_val == NULL)
+ char *p = malloc (sizeof (prefix) + local_dir_len);
+ if (pwd_tablename_val == NULL)
{
*errnop = errno;
return NSS_STATUS_TRYAGAIN;
}
- tablename_len = strlen (tablename_val);
+
+ memcpy (__stpcpy (p, prefix), local_dir, local_dir_len + 1);
+
+ pwd_tablename_len = sizeof (prefix) - 1 + local_dir_len;
+
+ atomic_write_barrier ();
+
+ if (atomic_compare_and_exchange_bool_acq (&pwd_tablename_val, p, NULL))
+ {
+ /* Another thread already installed the value. */
+ free (p);
+ pwd_tablename_len = strlen (pwd_tablename_val);
+ }
}
+
return NSS_STATUS_SUCCESS;
}
_nss_nisplus_setpwent (int stayopen)
{
enum nss_status status = NSS_STATUS_SUCCESS;
- int err;
__libc_lock_lock (lock);
- if (result)
- nis_freeresult (result);
- result = NULL;
+ if (result != NULL)
+ {
+ nis_freeresult (result);
+ result = NULL;
+ }
- if (tablename_val == NULL)
- status = _nss_create_tablename (&err);
+ if (pwd_tablename_val == NULL)
+ {
+ int err;
+ status = _nss_pwd_create_tablename (&err);
+ }
__libc_lock_unlock (lock);
{
__libc_lock_lock (lock);
- if (result)
- nis_freeresult (result);
- result = NULL;
+ if (result != NULL)
+ {
+ nis_freeresult (result);
+ result = NULL;
+ }
__libc_lock_unlock (lock);
if (result == NULL)
{
saved_res = NULL;
- if (tablename_val == NULL)
+ if (pwd_tablename_val == NULL)
{
- enum nss_status status = _nss_create_tablename (errnop);
+ enum nss_status status = _nss_pwd_create_tablename (errnop);
if (status != NSS_STATUS_SUCCESS)
return status;
}
- result = nis_first_entry (tablename_val);
+ result = nis_first_entry (pwd_tablename_val);
if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
return niserr2nss (result->status);
}
else
{
- nis_result *res;
-
saved_res = result;
- res = nis_next_entry (tablename_val, &result->cookie);
- result = res;
+ result = nis_next_entry (pwd_tablename_val, &result->cookie);
if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
{
nis_freeresult (saved_res);
parse_res = _nss_nisplus_parse_pwent (result, pw, buffer,
buflen, errnop);
- if (parse_res == -1)
+ if (__builtin_expect (parse_res == -1, 0))
{
nis_freeresult (result);
result = saved_res;
*errnop = ERANGE;
return NSS_STATUS_TRYAGAIN;
}
- else
- {
- if (saved_res)
- nis_freeresult (saved_res);
- }
- } while (!parse_res);
+
+ if (saved_res)
+ nis_freeresult (saved_res);
+ }
+ while (!parse_res);
return NSS_STATUS_SUCCESS;
}
{
int parse_res;
- if (tablename_val == NULL)
+ if (pwd_tablename_val == NULL)
{
- enum nss_status status = _nss_create_tablename (errnop);
+ enum nss_status status = _nss_pwd_create_tablename (errnop);
if (status != NSS_STATUS_SUCCESS)
return status;
*errnop = EINVAL;
return NSS_STATUS_UNAVAIL;
}
- else
- {
- nis_result *result;
- char buf[strlen (name) + 24 + tablename_len];
- int olderr = errno;
- sprintf (buf, "[name=%s],%s", name, tablename_val);
+ nis_result *result;
+ char buf[strlen (name) + 9 + pwd_tablename_len];
+ int olderr = errno;
- result = nis_list(buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+ snprintf (buf, sizeof (buf), "[name=%s],%s", name, pwd_tablename_val);
- if (result == NULL)
- {
- *errnop = ENOMEM;
- return NSS_STATUS_TRYAGAIN;
- }
- if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
- {
- enum nss_status status = niserr2nss (result->status);
+ result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
- __set_errno (olderr);
+ if (result == NULL)
+ {
+ *errnop = ENOMEM;
+ return NSS_STATUS_TRYAGAIN;
+ }
- nis_freeresult (result);
- return status;
- }
+ if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS, 0))
+ {
+ enum nss_status status = niserr2nss (result->status);
- parse_res = _nss_nisplus_parse_pwent (result, pw, buffer, buflen,
- errnop);
+ __set_errno (olderr);
nis_freeresult (result);
+ return status;
+ }
+
+ parse_res = _nss_nisplus_parse_pwent (result, pw, buffer, buflen, errnop);
+
+ nis_freeresult (result);
- if (parse_res < 1)
+ if (__builtin_expect (parse_res < 1, 0))
+ {
+ if (parse_res == -1)
{
- if (parse_res == -1)
- {
- *errnop = ERANGE;
- return NSS_STATUS_TRYAGAIN;
- }
- else
- {
- __set_errno (olderr);
- return NSS_STATUS_NOTFOUND;
- }
+ *errnop = ERANGE;
+ return NSS_STATUS_TRYAGAIN;
+ }
+ else
+ {
+ __set_errno (olderr);
+ return NSS_STATUS_NOTFOUND;
}
- return NSS_STATUS_SUCCESS;
}
+
+ return NSS_STATUS_SUCCESS;
}
enum nss_status
_nss_nisplus_getpwuid_r (const uid_t uid, struct passwd *pw,
char *buffer, size_t buflen, int *errnop)
{
- if (tablename_val == NULL)
+ if (pwd_tablename_val == NULL)
{
- enum nss_status status = _nss_create_tablename (errnop);
+ enum nss_status status = _nss_pwd_create_tablename (errnop);
if (status != NSS_STATUS_SUCCESS)
return status;
}
- {
- int parse_res;
- nis_result *result;
- char buf[100 + tablename_len];
- int olderr = errno;
+ int parse_res;
+ nis_result *result;
+ char buf[8 + 3 * sizeof (unsigned long int) + pwd_tablename_len];
+ int olderr = errno;
- sprintf (buf, "[uid=%lu],%s", (unsigned long int) uid, tablename_val);
+ snprintf (buf, sizeof (buf), "[uid=%lu],%s",
+ (unsigned long int) uid, pwd_tablename_val);
- result = nis_list(buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+ result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
- if (result == NULL)
- {
- *errnop = ENOMEM;
- return NSS_STATUS_TRYAGAIN;
- }
- if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
- {
- enum nss_status status = niserr2nss (result->status);
+ if (result == NULL)
+ {
+ *errnop = ENOMEM;
+ return NSS_STATUS_TRYAGAIN;
+ }
- __set_errno (olderr);
+ if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS, 0))
+ {
+ enum nss_status status = niserr2nss (result->status);
- nis_freeresult (result);
- return status;
- }
-
- parse_res = _nss_nisplus_parse_pwent (result, pw, buffer, buflen, errnop);
-
- nis_freeresult (result);
-
- if (parse_res < 1)
- {
- if (parse_res == -1)
- {
- *errnop = ERANGE;
- return NSS_STATUS_TRYAGAIN;
- }
- else
- {
- __set_errno (olderr);
- return NSS_STATUS_NOTFOUND;
- }
- }
- return NSS_STATUS_SUCCESS;
- }
+ __set_errno (olderr);
+
+ nis_freeresult (result);
+ return status;
+ }
+
+ parse_res = _nss_nisplus_parse_pwent (result, pw, buffer, buflen, errnop);
+
+ nis_freeresult (result);
+
+ if (__builtin_expect (parse_res < 1, 0))
+ {
+ if (parse_res == -1)
+ {
+ *errnop = ERANGE;
+ return NSS_STATUS_TRYAGAIN;
+ }
+ else
+ {
+ __set_errno (olderr);
+ return NSS_STATUS_NOTFOUND;
+ }
+ }
+
+ return NSS_STATUS_SUCCESS;
}
-/* Copyright (C) 1997, 1998, 2001, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997,1998,2001,2002,2003,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <nss.h>
-#include <errno.h>
+#include <atomic.h>
#include <ctype.h>
+#include <errno.h>
+#include <nss.h>
#include <string.h>
-#include <bits/libc-lock.h>
#include <rpc/netdb.h>
#include <rpcsvc/nis.h>
+#include <bits/libc-lock.h>
#include "nss-nisplus.h"
{
if (tablename_val == NULL)
{
- char buf [40 + strlen (nis_local_directory ())];
- char *p;
+ const char *local_dir = nis_local_directory ();
+ size_t local_dir_len = strlen (local_dir);
+ static const char prefix[] = "rpc.org_dir.";
- p = __stpcpy (buf, "rpc.org_dir.");
- p = __stpcpy (p, nis_local_directory ());
- tablename_val = __strdup (buf);
+ char *p = malloc (sizeof (prefix) + local_dir_len);
if (tablename_val == NULL)
{
*errnop = errno;
return NSS_STATUS_TRYAGAIN;
}
- tablename_len = strlen (tablename_val);
+
+ memcpy (__stpcpy (p, prefix), local_dir, local_dir_len + 1);
+
+ tablename_len = sizeof (prefix) - 1 + local_dir_len;
+
+ atomic_write_barrier ();
+
+ tablename_val = p;
}
+
return NSS_STATUS_SUCCESS;
}
_nss_nisplus_setrpcent (int stayopen)
{
enum nss_status status = NSS_STATUS_SUCCESS;
- int err;
__libc_lock_lock (lock);
- if (result)
- nis_freeresult (result);
- result = NULL;
+ if (result != NULL)
+ {
+ nis_freeresult (result);
+ result = NULL;
+ }
if (tablename_val == NULL)
- status = _nss_create_tablename (&err);
+ {
+ int err;
+ status = _nss_create_tablename (&err);
+ }
__libc_lock_unlock (lock);
{
__libc_lock_lock (lock);
- if (result)
- nis_freeresult (result);
- result = NULL;
+ if (result != NULL)
+ {
+ nis_freeresult (result);
+ result = NULL;
+ }
__libc_lock_unlock (lock);
}
else
{
- nis_result *res;
-
saved_res = result;
- res = nis_next_entry (tablename_val, &result->cookie);
- result = res;
+ result = nis_next_entry (tablename_val, &result->cookie);
if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
{
nis_freeresult (saved_res);
if (saved_res)
nis_freeresult (saved_res);
}
- } while (!parse_res);
+ }
+ while (!parse_res);
return NSS_STATUS_SUCCESS;
}
if (tablename_val == NULL)
{
+ __libc_lock_lock (lock);
+
enum nss_status status = _nss_create_tablename (errnop);
+ __libc_lock_unlock (lock);
+
if (status != NSS_STATUS_SUCCESS)
return status;
}
if (name == NULL)
return NSS_STATUS_NOTFOUND;
- else
- {
- nis_result *result;
- char buf[strlen (name) + 255 + tablename_len];
- int olderr = errno;
-
- /* Search at first in the alias list, and use the correct name
- for the next search */
- sprintf (buf, "[name=%s],%s", name, tablename_val);
- result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
- if (result != NULL)
- {
- /* If we do not find it, try it as original name. But if the
- database is correct, we should find it in the first case, too */
- if ((result->status != NIS_SUCCESS
- && result->status != NIS_S_SUCCESS)
- || __type_of (result->objects.objects_val) != NIS_ENTRY_OBJ
- || strcmp (result->objects.objects_val->EN_data.en_type,
- "rpc_tbl") != 0
- || result->objects.objects_val->EN_data.en_cols.en_cols_len < 3)
- sprintf (buf, "[cname=%s],%s", name, tablename_val);
- else
- sprintf (buf, "[cname=%s],%s", NISENTRYVAL (0, 0, result),
- tablename_val);
+ char buf[strlen (name) + 10 + tablename_len];
+ int olderr = errno;
- nis_freeresult (result);
- result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS , NULL, NULL);
- }
+ /* Search at first in the alias list, and use the correct name
+ for the next search */
+ snprintf (buf, sizeof (buf), "[name=%s],%s", name, tablename_val);
+ nis_result *result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
- if (result == NULL)
+ if (result != NULL)
+ {
+ char *bufptr = buf;
+
+ /* If we did not find it, try it as original name. But if the
+ database is correct, we should find it in the first case, too */
+ if ((result->status != NIS_SUCCESS
+ && result->status != NIS_S_SUCCESS)
+ || __type_of (result->objects.objects_val) != NIS_ENTRY_OBJ
+ || strcmp (result->objects.objects_val->EN_data.en_type,
+ "rpc_tbl") != 0
+ || result->objects.objects_val->EN_data.en_cols.en_cols_len < 3)
+ snprintf (buf, sizeof (buf), "[cname=%s],%s", name, tablename_val);
+ else
{
- *errnop = ENOMEM;
- return NSS_STATUS_TRYAGAIN;
+ /* We need to allocate a new buffer since there is no
+ guarantee the returned name has a length limit. */
+ const char *entryval = NISENTRYVAL (0, 0, result);
+ size_t buflen = strlen (entryval) + 10 + tablename_len;
+ bufptr = alloca (buflen);
+ snprintf (bufptr, buflen, "[cname=%s],%s",
+ entryval, tablename_val);
}
- if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
- {
- enum nss_status status = niserr2nss (result->status);
- __set_errno (olderr);
+ nis_freeresult (result);
+ result = nis_list (bufptr, FOLLOW_PATH | FOLLOW_LINKS , NULL, NULL);
+ }
- nis_freeresult (result);
- return status;
- }
+ if (result == NULL)
+ {
+ *errnop = ENOMEM;
+ return NSS_STATUS_TRYAGAIN;
+ }
- parse_res = _nss_nisplus_parse_rpcent (result, rpc, buffer, buflen,
- errnop);
+ if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS, 0))
+ {
+ enum nss_status status = niserr2nss (result->status);
+
+ __set_errno (olderr);
nis_freeresult (result);
+ return status;
+ }
- if (parse_res < 1)
- {
- if (parse_res == -1)
- {
- *errnop = ERANGE;
- return NSS_STATUS_TRYAGAIN;
- }
+ parse_res = _nss_nisplus_parse_rpcent (result, rpc, buffer, buflen,
+ errnop);
- __set_errno (olderr);
- return NSS_STATUS_NOTFOUND;
+ nis_freeresult (result);
+
+ if (parse_res < 1)
+ {
+ if (parse_res == -1)
+ {
+ *errnop = ERANGE;
+ return NSS_STATUS_TRYAGAIN;
}
- return NSS_STATUS_SUCCESS;
+
+ __set_errno (olderr);
+ return NSS_STATUS_NOTFOUND;
}
+
+ return NSS_STATUS_SUCCESS;
}
enum nss_status
{
if (tablename_val == NULL)
{
+ __libc_lock_lock (lock);
+
enum nss_status status = _nss_create_tablename (errnop);
+ __libc_lock_unlock (lock);
+
if (status != NSS_STATUS_SUCCESS)
return status;
}
- {
- int parse_res;
- nis_result *result;
- char buf[100 + tablename_len];
- int olderr = errno;
+ char buf[12 + 3 * sizeof (number) + tablename_len];
+ int olderr = errno;
+
+ snprintf (buf, sizeof (buf), "[number=%d],%s", number, tablename_val);
+
+ nis_result *result = nis_list (buf, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
+
+ if (result == NULL)
+ {
+ *errnop = ENOMEM;
+ return NSS_STATUS_TRYAGAIN;
+ }
+
+ if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS, 0))
+ {
+ enum nss_status status = niserr2nss (result->status);
- sprintf (buf, "[number=%d],%s", number, tablename_val);
+ __set_errno (olderr);
- result = nis_list(buf, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL);
+ nis_freeresult (result);
+ return status;
+ }
- if (result == NULL)
- {
- *errnop = ENOMEM;
- return NSS_STATUS_TRYAGAIN;
- }
- if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
- {
- enum nss_status status = niserr2nss (result->status);
+ int parse_res = _nss_nisplus_parse_rpcent (result, rpc, buffer, buflen,
+ errnop);
- __set_errno (olderr);
+ nis_freeresult (result);
- nis_freeresult (result);
- return status;
- }
-
- parse_res = _nss_nisplus_parse_rpcent (result, rpc, buffer, buflen,
- errnop);
-
- nis_freeresult (result);
-
- if (parse_res < 1)
- {
- if (parse_res == -1)
- {
- *errnop = ERANGE;
- return NSS_STATUS_TRYAGAIN;
- }
- else
- {
- __set_errno (olderr);
- return NSS_STATUS_NOTFOUND;
- }
- }
- return NSS_STATUS_SUCCESS;
- }
+ if (parse_res < 1)
+ {
+ if (parse_res == -1)
+ {
+ *errnop = ERANGE;
+ return NSS_STATUS_TRYAGAIN;
+ }
+ else
+ {
+ __set_errno (olderr);
+ return NSS_STATUS_NOTFOUND;
+ }
+ }
+
+ return NSS_STATUS_SUCCESS;
}
-/* Copyright (C) 1997,1998,1999,2001,2002,2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997-1999,2001,2002,2003,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@suse.de>, 1997.
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <nss.h>
-#include <errno.h>
+#include <atomic.h>
#include <ctype.h>
+#include <errno.h>
#include <netdb.h>
+#include <nss.h>
#include <string.h>
-#include <bits/libc-lock.h>
#include <rpcsvc/nis.h>
+#include <bits/libc-lock.h>
#include "nss-nisplus.h"
{
char *first_unused = buffer;
size_t room_left = buflen;
- unsigned int i;
- char *p, *line;
if (result == NULL)
return 0;
first_unused += strlen (first_unused) + 1;
serv->s_port = htons (atoi (NISENTRYVAL (0, 3, result)));
- p = first_unused;
+ char *p = first_unused;
- line = p;
- for (i = 0; i < result->objects.objects_len; ++i)
+ char *line = p;
+ for (unsigned int i = 0; i < result->objects.objects_len; ++i)
{
if (strcmp (NISENTRYVAL (i, 1, result), serv->s_name) != 0)
{
room_left -= (sizeof (char *));
serv->s_aliases[0] = NULL;
- i = 0;
+ unsigned int i = 0;
while (*line != '\0')
{
/* Skip leading blanks. */
{
if (tablename_val == NULL)
{
- char buf [40 + strlen (nis_local_directory ())];
- char *p;
+ const char *local_dir = nis_local_directory ();
+ size_t local_dir_len = strlen (local_dir);
+ static const char prefix[] = "services.org_dir.";
- p = __stpcpy (buf, "services.org_dir.");
- p = __stpcpy (p, nis_local_directory ());
- tablename_val = __strdup (buf);
+ char *p = malloc (sizeof (prefix) + local_dir_len);
if (tablename_val == NULL)
{
*errnop = errno;
return NSS_STATUS_TRYAGAIN;
}
- tablename_len = strlen (tablename_val);
+
+ memcpy (__stpcpy (p, prefix), local_dir, local_dir_len + 1);
+
+ tablename_len = sizeof (prefix) - 1 + local_dir_len;
+
+ atomic_write_barrier ();
+
+ tablename_val = p;
}
+
return NSS_STATUS_SUCCESS;
}
__libc_lock_lock (lock);
- if (result)
- nis_freeresult (result);
- result = NULL;
+ if (result != NULL)
+ {
+ nis_freeresult (result);
+ result = NULL;
+ }
if (tablename_val == NULL)
status = _nss_create_tablename (&err);
{
__libc_lock_lock (lock);
- if (result)
- nis_freeresult (result);
- result = NULL;
+ if (result != NULL)
+ {
+ nis_freeresult (result);
+ result = NULL;
+ }
__libc_lock_unlock (lock);
}
else
{
- nis_result *res;
-
saved_res = result;
- res = nis_next_entry (tablename_val, &result->cookie);
- result = res;
+ result = nis_next_entry (tablename_val, &result->cookie);
if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
{
nis_freeresult (saved_res);
parse_res = _nss_nisplus_parse_servent (result, serv, buffer,
buflen, errnop);
- if (parse_res == -1)
+ if (__builtin_expect (parse_res == -1, 0))
{
nis_freeresult (result);
result = saved_res;
_nss_nisplus_getservent_r (struct servent *result, char *buffer,
size_t buflen, int *errnop)
{
- int status;
-
__libc_lock_lock (lock);
- status = internal_nisplus_getservent_r (result, buffer, buflen, errnop);
+ int status = internal_nisplus_getservent_r (result, buffer, buflen, errnop);
__libc_lock_unlock (lock);
struct servent *serv,
char *buffer, size_t buflen, int *errnop)
{
- int parse_res;
-
if (tablename_val == NULL)
{
+ __libc_lock_lock (lock);
+
enum nss_status status = _nss_create_tablename (errnop);
+ __libc_lock_unlock (lock);
+
if (status != NSS_STATUS_SUCCESS)
return status;
}
*errnop = EINVAL;
return NSS_STATUS_NOTFOUND;
}
- else
- {
- nis_result *result;
- char buf[strlen (name) + 255 + tablename_len];
- int olderr = errno;
- /* Search at first in the alias list, and use the correct name
- for the next search */
- sprintf (buf, "[name=%s,proto=%s],%s", name, protocol,
- tablename_val);
- result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+ size_t protocol_len = strlen (protocol);
+ char buf[strlen (name) + protocol_len + 17 + tablename_len];
+ int olderr = errno;
- if (result != NULL)
- {
- /* If we do not find it, try it as original name. But if the
- database is correct, we should find it in the first case, too */
- if ((result->status != NIS_SUCCESS
- && result->status != NIS_S_SUCCESS)
- || __type_of (result->objects.objects_val) != NIS_ENTRY_OBJ
- || strcmp (result->objects.objects_val->EN_data.en_type,
- "services_tbl") != 0
- || result->objects.objects_val->EN_data.en_cols.en_cols_len < 4)
- sprintf (buf, "[cname=%s,proto=%s],%s", name, protocol,
- tablename_val);
- else
- sprintf (buf, "[cname=%s,proto=%s],%s",
- NISENTRYVAL (0, 0, result), protocol, tablename_val);
-
- nis_freeresult (result);
- result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
- }
+ /* Search at first in the alias list, and use the correct name
+ for the next search */
+ snprintf (buf, sizeof (buf), "[name=%s,proto=%s],%s", name, protocol,
+ tablename_val);
+ nis_result *result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
- if (result == NULL)
+ if (result != NULL)
+ {
+ char *bufptr = buf;
+
+ /* If we did not find it, try it as original name. But if the
+ database is correct, we should find it in the first case, too */
+ if ((result->status != NIS_SUCCESS
+ && result->status != NIS_S_SUCCESS)
+ || __type_of (result->objects.objects_val) != NIS_ENTRY_OBJ
+ || strcmp (result->objects.objects_val->EN_data.en_type,
+ "services_tbl") != 0
+ || result->objects.objects_val->EN_data.en_cols.en_cols_len < 4)
+ snprintf (buf, sizeof (buf), "[cname=%s,proto=%s],%s", name, protocol,
+ tablename_val);
+ else
{
- *errnop = ENOMEM;
- return NSS_STATUS_TRYAGAIN;
+ /* We need to allocate a new buffer since there is no
+ guarantee the returned name has a length limit. */
+ const char *entryval = NISENTRYVAL(0, 0, result);
+ size_t buflen = (strlen (entryval) + protocol_len + 17
+ + tablename_len);
+ bufptr = alloca (buflen);
+ snprintf (bufptr, buflen, "[cname=%s,proto=%s],%s",
+ entryval, protocol, tablename_val);
}
- if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
- {
- enum nss_status status = niserr2nss (result->status);
- __set_errno (olderr);
+ nis_freeresult (result);
+ result = nis_list (bufptr, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+ }
- nis_freeresult (result);
- return status;
- }
+ if (result == NULL)
+ {
+ *errnop = ENOMEM;
+ return NSS_STATUS_TRYAGAIN;
+ }
+
+ if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS, 0))
+ {
+ enum nss_status status = niserr2nss (result->status);
+
+ __set_errno (olderr);
- parse_res = _nss_nisplus_parse_servent (result, serv, buffer, buflen,
- errnop);
nis_freeresult (result);
+ return status;
+ }
+
+ int parse_res = _nss_nisplus_parse_servent (result, serv, buffer, buflen,
+ errnop);
+ nis_freeresult (result);
- if (parse_res < 1)
+ if (__builtin_expect (parse_res < 1, 0))
+ {
+ if (parse_res == -1)
{
- if (parse_res == -1)
- {
- *errnop = ERANGE;
- return NSS_STATUS_TRYAGAIN;
- }
- else
- {
- __set_errno (olderr);
- return NSS_STATUS_NOTFOUND;
- }
+ *errnop = ERANGE;
+ return NSS_STATUS_TRYAGAIN;
+ }
+ else
+ {
+ __set_errno (olderr);
+ return NSS_STATUS_NOTFOUND;
}
- return NSS_STATUS_SUCCESS;
}
+
+ return NSS_STATUS_SUCCESS;
}
enum nss_status
{
if (tablename_val == NULL)
{
+ __libc_lock_lock (lock);
+
enum nss_status status = _nss_create_tablename (errnop);
+ __libc_lock_unlock (lock);
+
if (status != NSS_STATUS_SUCCESS)
return status;
}
*errnop = EINVAL;
return NSS_STATUS_NOTFOUND;
}
- else
- {
- int parse_res;
- nis_result *result;
- char buf[60 + strlen (protocol) + tablename_len];
- int olderr = errno;
- sprintf (buf, "[port=%d,proto=%s],%s",
- number, protocol, tablename_val);
+ char buf[17 + 3 * sizeof (int) + strlen (protocol) + tablename_len];
+ int olderr = errno;
- result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+ snprintf (buf, sizeof (buf), "[port=%d,proto=%s],%s",
+ number, protocol, tablename_val);
- if (result == NULL)
- {
- *errnop = ENOMEM;
- return NSS_STATUS_TRYAGAIN;
- }
- if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
- {
- enum nss_status status = niserr2nss (result->status);
+ nis_result *result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
- __set_errno (olderr);
+ if (result == NULL)
+ {
+ *errnop = ENOMEM;
+ return NSS_STATUS_TRYAGAIN;
+ }
- nis_freeresult (result);
- return status;
- }
+ if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS, 0))
+ {
+ enum nss_status status = niserr2nss (result->status);
+
+ __set_errno (olderr);
- parse_res = _nss_nisplus_parse_servent (result, serv, buffer, buflen,
- errnop);
nis_freeresult (result);
+ return status;
+ }
+
+ int parse_res = _nss_nisplus_parse_servent (result, serv, buffer, buflen,
+ errnop);
+ nis_freeresult (result);
- if (parse_res < 1)
+ if (__builtin_expect (parse_res < 1, 0))
+ {
+ if (parse_res == -1)
{
- if (parse_res == -1)
- {
- *errnop = ERANGE;
- return NSS_STATUS_TRYAGAIN;
- }
- else
- {
- __set_errno (olderr);
- return NSS_STATUS_NOTFOUND;
- }
+ *errnop = ERANGE;
+ return NSS_STATUS_TRYAGAIN;
+ }
+ else
+ {
+ __set_errno (olderr);
+ return NSS_STATUS_NOTFOUND;
}
- return NSS_STATUS_SUCCESS;
}
+
+ return NSS_STATUS_SUCCESS;
}
-/* Copyright (C) 1997, 2001, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
__libc_lock_define_initialized (static, lock)
static nis_result *result;
-static nis_name tablename_val;
-static u_long tablename_len;
-static enum nss_status
-_nss_create_tablename (int *errnop)
-{
- if (tablename_val == NULL)
- {
- char buf [40 + strlen (nis_local_directory ())];
- char *p;
+/* Defined in nisplus-pwd.c. */
+extern nis_name pwd_tablename_val attribute_hidden;
+extern size_t pwd_tablename_len attribute_hidden;
+extern enum nss_status _nss_pwd_create_tablename (int *errnop);
- p = __stpcpy (buf, "passwd.org_dir.");
- p = __stpcpy (p, nis_local_directory ());
- tablename_val = __strdup (buf);
- if (tablename_val == NULL)
- {
- *errnop = errno;
- return NSS_STATUS_TRYAGAIN;
- }
- tablename_len = strlen (tablename_val);
- }
- return NSS_STATUS_SUCCESS;
-}
enum nss_status
_nss_nisplus_setspent (int stayopen)
__libc_lock_lock (lock);
- if (result)
- nis_freeresult (result);
- result = NULL;
+ if (result != NULL)
+ {
+ nis_freeresult (result);
+ result = NULL;
+ }
- if (tablename_val == NULL)
- status = _nss_create_tablename (&err);
+ if (pwd_tablename_val == NULL)
+ status = _nss_pwd_create_tablename (&err);
__libc_lock_unlock (lock);
{
__libc_lock_lock (lock);
- if (result)
- nis_freeresult (result);
- result = NULL;
+ if (result != NULL)
+ {
+ nis_freeresult (result);
+ result = NULL;
+ }
__libc_lock_unlock (lock);
{
saved_res = NULL;
- if (tablename_val == NULL)
+ if (pwd_tablename_val == NULL)
{
- enum nss_status status = _nss_create_tablename (errnop);
+ enum nss_status status = _nss_pwd_create_tablename (errnop);
if (status != NSS_STATUS_SUCCESS)
return status;
}
- result = nis_first_entry (tablename_val);
+ result = nis_first_entry (pwd_tablename_val);
if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
return niserr2nss (result->status);
}
else
{
- nis_result *res;
-
saved_res = result;
- res = nis_next_entry (tablename_val, &result->cookie);
- result = res;
+ result = nis_next_entry (pwd_tablename_val, &result->cookie);
if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
{
nis_freeresult (saved_res);
parse_res = _nss_nisplus_parse_spent (result, sp, buffer,
buflen, errnop);
- if (parse_res == -1)
+ if (__builtin_expect (parse_res == -1, 0))
{
nis_freeresult (result);
result = saved_res;
*errnop = ERANGE;
return NSS_STATUS_TRYAGAIN;
}
- else
- {
- if (saved_res)
- nis_freeresult (saved_res);
- }
- } while (!parse_res);
+
+ if (saved_res != NULL)
+ nis_freeresult (saved_res);
+ }
+ while (!parse_res);
return NSS_STATUS_SUCCESS;
}
{
int parse_res;
- if (tablename_val == NULL)
+ if (pwd_tablename_val == NULL)
{
- enum nss_status status = _nss_create_tablename (errnop);
+ enum nss_status status = _nss_pwd_create_tablename (errnop);
if (status != NSS_STATUS_SUCCESS)
return status;
*errnop = EINVAL;
return NSS_STATUS_NOTFOUND;
}
- else
- {
- nis_result *result;
- char buf[strlen (name) + 24 + tablename_len];
- int olderr = errno;
- sprintf (buf, "[name=%s],%s", name, tablename_val);
+ nis_result *result;
+ char buf[strlen (name) + 9 + pwd_tablename_len];
+ int olderr = errno;
- result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
+ snprintf (buf, sizeof (buf), "[name=%s],%s", name, pwd_tablename_val);
- if (result == NULL)
- {
- *errnop = ENOMEM;
- return NSS_STATUS_TRYAGAIN;
- }
- if (niserr2nss (result->status) != NSS_STATUS_SUCCESS)
- {
- enum nss_status status = niserr2nss (result->status);
+ result = nis_list (buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL);
- __set_errno (olderr);
+ if (result == NULL)
+ {
+ *errnop = ENOMEM;
+ return NSS_STATUS_TRYAGAIN;
+ }
- nis_freeresult (result);
- return status;
- }
+ if (__builtin_expect (niserr2nss (result->status) != NSS_STATUS_SUCCESS, 0))
+ {
+ enum nss_status status = niserr2nss (result->status);
+
+ __set_errno (olderr);
- parse_res = _nss_nisplus_parse_spent (result, sp, buffer, buflen,
- errnop);
nis_freeresult (result);
+ return status;
+ }
- if (parse_res < 1)
+ parse_res = _nss_nisplus_parse_spent (result, sp, buffer, buflen, errnop);
+ nis_freeresult (result);
+
+ if (__builtin_expect (parse_res < 1, 0))
+ {
+ if (parse_res == -1)
{
- if (parse_res == -1)
- {
- *errnop = ERANGE;
- return NSS_STATUS_TRYAGAIN;
- }
- else
- {
- __set_errno (olderr);
- return NSS_STATUS_NOTFOUND;
- }
+ *errnop = ERANGE;
+ return NSS_STATUS_TRYAGAIN;
+ }
+ else
+ {
+ __set_errno (olderr);
+ return NSS_STATUS_NOTFOUND;
}
- return NSS_STATUS_SUCCESS;
}
+
+ return NSS_STATUS_SUCCESS;
}
};
typedef struct dom_binding dom_binding;
-static struct timeval RPCTIMEOUT = {25, 0};
-static struct timeval UDPTIMEOUT = {5, 0};
+static const struct timeval RPCTIMEOUT = {25, 0};
+static const struct timeval UDPTIMEOUT = {5, 0};
static int const MAXTRIES = 2;
-static char __ypdomainname[NIS_MAXNAMELEN + 1] = "\0";
+static char ypdomainname[NIS_MAXNAMELEN + 1];
__libc_lock_define_initialized (static, ypbindlist_lock)
-static dom_binding *__ypbindlist = NULL;
+static dom_binding *ypbindlist = NULL;
static void
int clnt_sock;
CLIENT *client;
- memset (&clnt_saddr, '\0', sizeof clnt_saddr);
clnt_saddr.sin_family = AF_INET;
+ clnt_saddr.sin_port = 0;
clnt_saddr.sin_addr.s_addr = htonl (INADDR_LOOPBACK);
clnt_sock = RPC_ANYSOCK;
client = clnttcp_create (&clnt_saddr, YPBINDPROG, YPBINDVERS,
if (ypbr.ypbind_status != YPBIND_SUCC_VAL)
{
- fprintf (stderr, _("YPBINDPROC_DOMAIN: %s\n"),
+ fprintf (stderr, "YPBINDPROC_DOMAIN: %s\n",
ypbinderr_string (ypbr.ypbind_resp_u.ypbind_error));
return YPERR_DOMAIN;
}
__libc_lock_lock (ypbindlist_lock);
- status = __yp_bind (indomain, &__ypbindlist);
+ status = __yp_bind (indomain, &ypbindlist);
__libc_lock_unlock (ypbindlist_lock);
dom_binding *ydbptr, *ydbptr2;
ydbptr2 = NULL;
- ydbptr = __ypbindlist;
+ ydbptr = ypbindlist;
while (ydbptr != NULL)
{
work = ydbptr;
if (ydbptr2 == NULL)
- __ypbindlist = __ypbindlist->dom_pnext;
+ ypbindlist = ypbindlist->dom_pnext;
else
ydbptr2 = ydbptr->dom_pnext;
__yp_unbind (work);
status = YPERR_YPERR;
__libc_lock_lock (ypbindlist_lock);
- ydb = __ypbindlist;
+ ydb = ypbindlist;
while (ydb != NULL)
{
if (strcmp (domain, ydb->dom_domain) == 0)
if (status != YPERR_SUCCESS)
{
ydb = calloc (1, sizeof (dom_binding));
- if (yp_bind_ypbindprog (domain, ydb) == YPERR_SUCCESS)
+ if (ydb != NULL && yp_bind_ypbindprog (domain, ydb) == YPERR_SUCCESS)
{
status = __ypclnt_call (domain, prog, xargs, req, xres,
resp, &ydb, 1);
return status;
}
+/* Like do_ypcall, but translate the status value if necessary. */
+static int
+do_ypcall_tr (const char *domain, u_long prog, xdrproc_t xargs,
+ caddr_t req, xdrproc_t xres, caddr_t resp)
+{
+ int status = do_ypcall (domain, prog, xargs, req, xres, resp);
+ if (status == YPERR_SUCCESS)
+ /* We cast to ypresp_val although the pointer could also be of
+ type ypresp_key_val or ypresp_master or ypresp_order or
+ ypresp_maplist. But the stat element is in a common prefix so
+ this does not matter. */
+ status = ypprot_err (((struct ypresp_val *) resp)->stat);
+ return status;
+}
+
__libc_lock_define_initialized (static, domainname_lock)
__libc_lock_lock (domainname_lock);
- if (__ypdomainname[0] == '\0')
+ if (ypdomainname[0] == '\0')
{
- if (getdomainname (__ypdomainname, NIS_MAXNAMELEN))
+ if (getdomainname (ypdomainname, NIS_MAXNAMELEN))
result = YPERR_NODOM;
- else if (strcmp (__ypdomainname, "(none)") == 0)
+ else if (strcmp (ypdomainname, "(none)") == 0)
{
/* If domainname is not set, some systems will return "(none)" */
- __ypdomainname[0] = '\0';
+ ypdomainname[0] = '\0';
result = YPERR_NODOM;
}
else
- *outdomain = __ypdomainname;
+ *outdomain = ypdomainname;
}
else
- *outdomain = __ypdomainname;
+ *outdomain = ypdomainname;
__libc_lock_unlock (domainname_lock);
{
char *unused;
- if (__ypdomainname[0] == '\0')
+ if (ypdomainname[0] == '\0')
if (yp_get_default_domain (&unused))
return 0;
if (domain)
- *domain = __ypdomainname;
+ *domain = ypdomainname;
- if (yp_bind (__ypdomainname) == 0)
+ if (yp_bind (ypdomainname) == 0)
return 1;
return 0;
}
*outvallen = 0;
memset (&resp, '\0', sizeof (resp));
- result = do_ypcall (indomain, YPPROC_MATCH, (xdrproc_t) xdr_ypreq_key,
- (caddr_t) & req, (xdrproc_t) xdr_ypresp_val,
- (caddr_t) & resp);
+ result = do_ypcall_tr (indomain, YPPROC_MATCH, (xdrproc_t) xdr_ypreq_key,
+ (caddr_t) &req, (xdrproc_t) xdr_ypresp_val,
+ (caddr_t) &resp);
if (result != YPERR_SUCCESS)
return result;
- if (resp.stat != YP_TRUE)
- return ypprot_err (resp.stat);
*outvallen = resp.val.valdat_len;
*outval = malloc (*outvallen + 1);
- if (__builtin_expect (*outval == NULL, 0))
- return YPERR_RESRC;
- memcpy (*outval, resp.val.valdat_val, *outvallen);
- (*outval)[*outvallen] = '\0';
+ int status = YPERR_RESRC;
+ if (__builtin_expect (*outval != NULL, 1))
+ {
+ memcpy (*outval, resp.val.valdat_val, *outvallen);
+ (*outval)[*outvallen] = '\0';
+ status = YPERR_SUCCESS;
+ }
xdr_free ((xdrproc_t) xdr_ypresp_val, (char *) &resp);
- return YPERR_SUCCESS;
+ return status;
}
int
memset (&resp, '\0', sizeof (resp));
result = do_ypcall (indomain, YPPROC_FIRST, (xdrproc_t) xdr_ypreq_nokey,
- (caddr_t) & req, (xdrproc_t) xdr_ypresp_key_val,
- (caddr_t) & resp);
+ (caddr_t) &req, (xdrproc_t) xdr_ypresp_key_val,
+ (caddr_t) &resp);
if (result != RPC_SUCCESS)
return YPERR_RPC;
if (resp.stat != YP_TRUE)
return ypprot_err (resp.stat);
- *outkeylen = resp.key.keydat_len;
- *outkey = malloc (*outkeylen + 1);
- if (__builtin_expect (*outkey == NULL, 0))
- return YPERR_RESRC;
- memcpy (*outkey, resp.key.keydat_val, *outkeylen);
- (*outkey)[*outkeylen] = '\0';
- *outvallen = resp.val.valdat_len;
- *outval = malloc (*outvallen + 1);
- if (__builtin_expect (*outval == NULL, 0))
- return YPERR_RESRC;
- memcpy (*outval, resp.val.valdat_val, *outvallen);
- (*outval)[*outvallen] = '\0';
+ int status;
+ if (__builtin_expect ((*outkey = malloc (resp.key.keydat_len + 1)) != NULL
+ && (*outval = malloc (resp.val.valdat_len
+ + 1)) != NULL, 1))
+ {
+ *outkeylen = resp.key.keydat_len;
+ memcpy (*outkey, resp.key.keydat_val, *outkeylen);
+ (*outkey)[*outkeylen] = '\0';
+
+ *outvallen = resp.val.valdat_len;
+ memcpy (*outval, resp.val.valdat_val, *outvallen);
+ (*outval)[*outvallen] = '\0';
+
+ status = YPERR_SUCCESS;
+ }
+ else
+ {
+ free (*outkey);
+ status = YPERR_RESRC;
+ }
xdr_free ((xdrproc_t) xdr_ypresp_key_val, (char *) &resp);
- return YPERR_SUCCESS;
+ return status;
}
int
*outkeylen = *outvallen = 0;
memset (&resp, '\0', sizeof (resp));
- result = do_ypcall (indomain, YPPROC_NEXT, (xdrproc_t) xdr_ypreq_key,
- (caddr_t) & req, (xdrproc_t) xdr_ypresp_key_val,
- (caddr_t) & resp);
+ result = do_ypcall_tr (indomain, YPPROC_NEXT, (xdrproc_t) xdr_ypreq_key,
+ (caddr_t) &req, (xdrproc_t) xdr_ypresp_key_val,
+ (caddr_t) &resp);
if (result != YPERR_SUCCESS)
return result;
- if (resp.stat != YP_TRUE)
- return ypprot_err (resp.stat);
- *outkeylen = resp.key.keydat_len;
- *outkey = malloc (*outkeylen + 1);
- if (__builtin_expect (*outkey == NULL, 0))
- return YPERR_RESRC;
- memcpy (*outkey, resp.key.keydat_val, *outkeylen);
- (*outkey)[*outkeylen] = '\0';
- *outvallen = resp.val.valdat_len;
- *outval = malloc (*outvallen + 1);
- if (__builtin_expect (*outval == NULL, 0))
- return YPERR_RESRC;
- memcpy (*outval, resp.val.valdat_val, *outvallen);
- (*outval)[*outvallen] = '\0';
+ int status;
+ if (__builtin_expect ((*outkey = malloc (resp.key.keydat_len + 1)) != NULL
+ && (*outval = malloc (resp.val.valdat_len
+ + 1)) != NULL, 1))
+ {
+ *outkeylen = resp.key.keydat_len;
+ memcpy (*outkey, resp.key.keydat_val, *outkeylen);
+ (*outkey)[*outkeylen] = '\0';
+
+ *outvallen = resp.val.valdat_len;
+ memcpy (*outval, resp.val.valdat_val, *outvallen);
+ (*outval)[*outvallen] = '\0';
+
+ status = YPERR_SUCCESS;
+ }
+ else
+ {
+ free (*outkey);
+ status = YPERR_RESRC;
+ }
xdr_free ((xdrproc_t) xdr_ypresp_key_val, (char *) &resp);
- return YPERR_SUCCESS;
+ return status;
}
int
memset (&resp, '\0', sizeof (ypresp_master));
- result = do_ypcall (indomain, YPPROC_MASTER, (xdrproc_t) xdr_ypreq_nokey,
- (caddr_t) & req, (xdrproc_t) xdr_ypresp_master, (caddr_t) & resp);
+ result = do_ypcall_tr (indomain, YPPROC_MASTER, (xdrproc_t) xdr_ypreq_nokey,
+ (caddr_t) &req, (xdrproc_t) xdr_ypresp_master,
+ (caddr_t) &resp);
if (result != YPERR_SUCCESS)
return result;
- if (resp.stat != YP_TRUE)
- return ypprot_err (resp.stat);
*outname = strdup (resp.peer);
xdr_free ((xdrproc_t) xdr_ypresp_master, (char *) &resp);
enum clnt_stat result;
if (indomain == NULL || indomain[0] == '\0' ||
- inmap == NULL || inmap == '\0')
+ inmap == NULL || inmap[0] == '\0')
return YPERR_BADARGS;
req.domain = (char *) indomain;
memset (&resp, '\0', sizeof (resp));
- result = do_ypcall (indomain, YPPROC_ORDER, (xdrproc_t) xdr_ypreq_nokey,
- (caddr_t) & req, (xdrproc_t) xdr_ypresp_order, (caddr_t) & resp);
+ result = do_ypcall_tr (indomain, YPPROC_ORDER, (xdrproc_t) xdr_ypreq_nokey,
+ (caddr_t) &req, (xdrproc_t) xdr_ypresp_order,
+ (caddr_t) &resp);
- if (result != YPERR_SUCCESS)
+ if (result == YPERR_SUCCESS)
return result;
- if (resp.stat != YP_TRUE)
- return ypprot_err (resp.stat);
*outorder = resp.ordernum;
xdr_free ((xdrproc_t) xdr_ypresp_order, (char *) &resp);
- return YPERR_SUCCESS;
+ return result;
}
struct ypresp_all_data
int clnt_sock;
int saved_errno = errno;
- if (indomain == NULL || indomain[0] == '\0' ||
- inmap == NULL || inmap == '\0')
+ if (indomain == NULL || indomain[0] == '\0'
+ || inmap == NULL || inmap[0] == '\0')
return YPERR_BADARGS;
try = 0;
(caddr_t) &req, (xdrproc_t) __xdr_ypresp_all,
(caddr_t) &data, RPCTIMEOUT);
- if (result != RPC_SUCCESS)
+ if (__builtin_expect (result != RPC_SUCCESS, 0))
{
- /* Print the error message only on the last try */
+ /* Print the error message only on the last try. */
if (try == MAXTRIES - 1)
clnt_perror (clnt, "yp_all: clnt_call");
res = YPERR_RPC;
}
int
+
yp_maplist (const char *indomain, struct ypmaplist **outmaplist)
{
struct ypresp_maplist resp;
memset (&resp, '\0', sizeof (resp));
- result = do_ypcall (indomain, YPPROC_MAPLIST, (xdrproc_t) xdr_domainname,
- (caddr_t) & indomain, (xdrproc_t) xdr_ypresp_maplist, (caddr_t) & resp);
-
- if (result != YPERR_SUCCESS)
- return result;
- if (resp.stat != YP_TRUE)
- return ypprot_err (resp.stat);
+ result = do_ypcall_tr (indomain, YPPROC_MAPLIST, (xdrproc_t) xdr_domainname,
+ (caddr_t) &indomain, (xdrproc_t) xdr_ypresp_maplist,
+ (caddr_t) &resp);
- *outmaplist = resp.maps;
- /* We give the list not free, this will be done by ypserv
- xdr_free((xdrproc_t)xdr_ypresp_maplist, (char *)&resp); */
+ if (__builtin_expect (result == YPERR_SUCCESS, 1))
+ {
+ *outmaplist = resp.maps;
+ /* We don't free the list, this will be done by ypserv
+ xdr_free((xdrproc_t)xdr_ypresp_maplist, (char *)&resp); */
+ }
- return YPERR_SUCCESS;
+ return result;
}
const char *
yperr_string (const int error)
{
+ const char *str;
switch (error)
{
case YPERR_SUCCESS:
- return _("Success");
+ str = "Success";
+ break;
case YPERR_BADARGS:
- return _("Request arguments bad");
+ str = "Request arguments bad";
+ break;
case YPERR_RPC:
- return _("RPC failure on NIS operation");
+ str = "RPC failure on NIS operation";
+ break;
case YPERR_DOMAIN:
- return _("Can't bind to server which serves this domain");
+ str = "Can't bind to server which serves this domain";
+ break;
case YPERR_MAP:
- return _("No such map in server's domain");
+ str = "No such map in server's domain";
+ break;
case YPERR_KEY:
- return _("No such key in map");
+ str = "No such key in map";
+ break;
case YPERR_YPERR:
- return _("Internal NIS error");
+ str = "Internal NIS error";
+ break;
case YPERR_RESRC:
- return _("Local resource allocation failure");
+ str = "Local resource allocation failure";
+ break;
case YPERR_NOMORE:
- return _("No more records in map database");
+ str = "No more records in map database";
+ break;
case YPERR_PMAP:
- return _("Can't communicate with portmapper");
+ str = "Can't communicate with portmapper";
+ break;
case YPERR_YPBIND:
- return _("Can't communicate with ypbind");
+ str = "Can't communicate with ypbind";
+ break;
case YPERR_YPSERV:
- return _("Can't communicate with ypserv");
+ str = "Can't communicate with ypserv";
+ break;
case YPERR_NODOM:
- return _("Local domain name not set");
+ str = "Local domain name not set";
+ break;
case YPERR_BADDB:
- return _("NIS map database is bad");
+ str = "NIS map database is bad";
+ break;
case YPERR_VERS:
- return _("NIS client/server version mismatch - can't supply service");
+ str = "NIS client/server version mismatch - can't supply service";
+ break;
case YPERR_ACCESS:
- return _("Permission denied");
+ str = "Permission denied";
+ break;
case YPERR_BUSY:
- return _("Database is busy");
+ str = "Database is busy";
+ break;
+ default:
+ str = "Unknown NIS error code";
+ break;
}
- return _("Unknown NIS error code");
+ return _(str);
}
static const int8_t yp_2_yperr[] =
const char *
ypbinderr_string (const int error)
{
+ const char *str;
switch (error)
{
case 0:
- return _("Success");
+ str = "Success";
+ break;
case YPBIND_ERR_ERR:
- return _("Internal ypbind error");
+ str = "Internal ypbind error";
+ break;
case YPBIND_ERR_NOSERV:
- return _("Domain not bound");
+ str = "Domain not bound";
+ break;
case YPBIND_ERR_RESC:
- return _("System resource allocation failure");
+ str = "System resource allocation failure";
+ break;
default:
- return _("Unknown ypbind error");
+ str = "Unknown ypbind error";
+ break;
}
+ return _(str);
}
libnsl_hidden_def (ypbinderr_string)
{
if (clnt->cl_auth->ah_cred.oa_flavor == AUTH_DES)
{
+ auth_destroy (clnt->cl_auth);
clnt->cl_auth = authunix_create_default ();
goto again;
}
+2005-12-17 Ulrich Drepper <drepper@redhat.com>
+
+ * pthread_create.c (__pthread_create_2_1): Use
+ THREAD_COPY_POINTER_GUARD if available.
+ * sysdeps/i386/tcb-offsets.sym: Add POINTER_GUARD.
+ * sysdeps/x86_64/tcb-offsets.sym: Likewise.
+ * sysdeps/i386/tls.h (tcbhead_t): Add pointer_guard.
+ Define THREAD_SET_POINTER_GUARD and THREAD_COPY_POINTER_GUARD.
+ * sysdeps/x86_64/tls.h: Likewise.
+
+2005-12-15 Roland McGrath <roland@redhat.com>
+
+ * sysdeps/unix/sysv/linux/mq_notify.c: Don't use sysdeps/generic.
+
+2005-12-13 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/pthread/sigfillset.c: Adjust for files moved out of
+ sysdeps/generic.
+ * errno-loc.c: New file.
+
+2005-12-12 Roland McGrath <roland@redhat.com>
+
+ * init.c (__pthread_initialize_minimal_internal): Do __static_tls_size
+ adjustments before choosing stack size. Update minimum stack size
+ calculation to match allocate_stack change.
+
+2005-12-12 Ulrich Drepper <drepper@redhat.com>
+
+ * allocatestack.c (allocate_stack): Don't demand that there is an
+ additional full page available on the stack beside guard, TLS, the
+ minimum stack.
+
+2005-11-24 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h
+ (__cleanup_fct_attribute): Use __regparm__ not regparm.
+
+ * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: When
+ compiling 32-bit code we must define __cleanup_fct_attribute.
+
+005-11-24 Jakub Jelinek <jakub@redhat.com>
+
+ [BZ #1920]
+ * sysdeps/pthread/pthread.h (__pthread_unwind_next): Use
+ __attribute__ instead of __attribute.
+ * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h
+ (__cleanup_fct_attribute): Likewise.
+
2005-11-17 Jakub Jelinek <jakub@redhat.com>
* sysdeps/pthread/unwind-forcedunwind.c (pthread_cancel_init): Put
/* Make sure the size of the stack is enough for the guard and
eventually the thread descriptor. */
guardsize = (attr->guardsize + pagesize_m1) & ~pagesize_m1;
- if (__builtin_expect (size < (guardsize + __static_tls_size
- + MINIMAL_REST_STACK + pagesize_m1 + 1),
+ if (__builtin_expect (size < ((guardsize + __static_tls_size
+ + MINIMAL_REST_STACK + pagesize_m1)
+ & ~pagesize_m1),
0))
/* The stack is too small (or the guard too large). */
return EINVAL;
--- /dev/null
+#include "../csu/errno-loc.c"
(void) INTERNAL_SYSCALL (rt_sigprocmask, err, 4, SIG_UNBLOCK, &sa.sa_mask,
NULL, _NSIG / 8);
+ /* Get the size of the static and alignment requirements for the TLS
+ block. */
+ size_t static_tls_align;
+ _dl_get_tls_static_info (&__static_tls_size, &static_tls_align);
+
+ /* Make sure the size takes all the alignments into account. */
+ if (STACK_ALIGN > static_tls_align)
+ static_tls_align = STACK_ALIGN;
+ __static_tls_align_m1 = static_tls_align - 1;
+
+ __static_tls_size = roundup (__static_tls_size, static_tls_align);
/* Determine the default allowed stack size. This is the size used
in case the user does not specify one. */
/* Make sure it meets the minimum size that allocate_stack
(allocatestack.c) will demand, which depends on the page size. */
const uintptr_t pagesz = __sysconf (_SC_PAGESIZE);
- const size_t minstack = pagesz * 2 + __static_tls_size + MINIMAL_REST_STACK;
+ const size_t minstack = pagesz + __static_tls_size + MINIMAL_REST_STACK;
if (limit.rlim_cur < minstack)
limit.rlim_cur = minstack;
limit.rlim_cur = (limit.rlim_cur + pagesz - 1) & -pagesz;
__default_stacksize = limit.rlim_cur;
- /* Get the size of the static and alignment requirements for the TLS
- block. */
- size_t static_tls_align;
- _dl_get_tls_static_info (&__static_tls_size, &static_tls_align);
-
- /* Make sure the size takes all the alignments into account. */
- if (STACK_ALIGN > static_tls_align)
- static_tls_align = STACK_ALIGN;
- __static_tls_align_m1 = static_tls_align - 1;
-
- __static_tls_size = roundup (__static_tls_size, static_tls_align);
-
#ifdef SHARED
/* Transfer the old value from the dynamic linker's internal location. */
*__libc_dl_error_tsd () = *(*GL(dl_error_catch_tsd)) ();
THREAD_COPY_STACK_GUARD (pd);
#endif
+ /* Copy the pointer guard value. */
+#ifdef THREAD_COPY_POINTER_GUARD
+ THREAD_COPY_POINTER_GUARD (pd);
+#endif
+
/* Determine scheduling parameters for the thread. */
if (attr != NULL
&& __builtin_expect ((iattr->flags & ATTR_FLAG_NOTINHERITSCHED) != 0, 0)
CLEANUP offsetof (struct pthread, cleanup)
CLEANUP_PREV offsetof (struct _pthread_cleanup_buffer, __prev)
MUTEX_FUTEX offsetof (pthread_mutex_t, __data.__lock)
+POINTER_GUARD offsetof (tcbhead_t, pointer_guard)
int multiple_threads;
uintptr_t sysinfo;
uintptr_t stack_guard;
+ uintptr_t pointer_guard;
} tcbhead_t;
# define TLS_MULTIPLE_THREADS_IN_TCB 1
= THREAD_GETMEM (THREAD_SELF, header.stack_guard))
+/* Set the pointer guard field in the TCB head. */
+#define THREAD_SET_POINTER_GUARD(value) \
+ THREAD_SETMEM (THREAD_SELF, header.pointer_guard, value)
+#define THREAD_COPY_POINTER_GUARD(descr) \
+ ((descr)->header.pointer_guard \
+ = THREAD_GETMEM (THREAD_SELF, header.pointer_guard))
+
+
#endif /* __ASSEMBLER__ */
#endif /* tls.h */
/* Internal interface to initiate cleanup. */
extern void __pthread_unwind_next (__pthread_unwind_buf_t *__buf)
- __cleanup_fct_attribute __attribute ((__noreturn__))
+ __cleanup_fct_attribute __attribute__ ((__noreturn__))
# ifndef SHARED
- __attribute ((__weak__))
+ __attribute__ ((__weak__))
# endif
;
#endif
-/* Copyright (C) 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2005 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
#include <nptl/pthreadP.h>
-#include <sysdeps/generic/sigfillset.c>
+#include <signal/sigfillset.c>
-/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005 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
/* Extra attributes for the cleanup functions. */
-#define __cleanup_fct_attribute __attribute ((regparm (1)))
+#define __cleanup_fct_attribute __attribute__ ((__regparm__ (1)))
#endif /* bits/pthreadtypes.h */
-/* Copyright (C) 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contribute by Ulrich Drepper <drepper@redhat.com>, 2004.
}
#else
-# include <sysdeps/generic/mq_notify.c>
+# include <rt/mq_notify.c>
#endif
-/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
#endif
+#if __WORDSIZE == 32
+/* Extra attributes for the cleanup functions. */
+# define __cleanup_fct_attribute __attribute__ ((__regparm__ (1)))
+#endif
+
#endif /* bits/pthreadtypes.h */
CLEANUP_PREV offsetof (struct _pthread_cleanup_buffer, __prev)
MUTEX_FUTEX offsetof (pthread_mutex_t, __data.__lock)
MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads)
+POINTER_GUARD offsetof (tcbhead_t, pointer_guard)
int multiple_threads;
uintptr_t sysinfo;
uintptr_t stack_guard;
+ uintptr_t pointer_guard;
} tcbhead_t;
#else /* __ASSEMBLER__ */
((descr)->header.stack_guard \
= THREAD_GETMEM (THREAD_SELF, header.stack_guard))
+
+/* Set the pointer guard field in the TCB head. */
+#define THREAD_SET_POINTER_GUARD(value) \
+ THREAD_SETMEM (THREAD_SELF, header.pointer_guard, value)
+#define THREAD_COPY_POINTER_GUARD(descr) \
+ ((descr)->header.pointer_guard \
+ = THREAD_GETMEM (THREAD_SELF, header.pointer_guard))
+
+
#endif /* __ASSEMBLER__ */
#endif /* tls.h */
ifeq ($(have-thread-library),yes)
-others := nscd_nischeck
ifneq (yesyes,$(have-fpie)$(build-shared))
others += nscd
endif
-install-sbin := nscd nscd_nischeck
+install-sbin := nscd
-extra-objs := $(nscd-modules:=.o) nscd_nischeck.o
+extra-objs := $(nscd-modules:=.o)
endif
distribute := nscd.h nscd-client.h dbg_log.h \
$(addsuffix .c, $(filter-out xmalloc,$(all-nscd-modules))) \
- nscd_nischeck.c nscd.conf nscd.init nscd_proto.h \
- nscd-types.h
+ nscd.conf nscd.init nscd_proto.h nscd-types.h
include ../Rules
include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
$(objpfx)nscd: $(nscd-modules:%=$(objpfx)%.o)
-$(objpfx)nscd_nischeck: $(objpfx)nscd_nischeck.o
ifeq ($(build-shared),yes)
$(objpfx)nscd: $(common-objpfx)rt/librt.so $(shared-thread-library) \
$(common-objpfx)nis/libnsl.so
-$(objpfx)nscd_nischeck: $(common-objpfx)nis/libnsl.so
else
$(objpfx)nscd: $(common-objpfx)rt/librt.a $(static-thread-library) \
$(common-objpfx)nis/libnsl.a
-$(objpfx)nscd_nischeck: $(common-objpfx)nis/libnsl.a
endif
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <assert.h>
#include <errno.h>
#include <time.h>
#include <unistd.h>
#include <sys/mman.h>
-#ifdef HAVE_SENDFILE
-# include <sys/sendfile.h>
-#endif
#include "dbg_log.h"
#include "nscd.h"
<= (sizeof (struct database_pers_head)
+ db->head->module * sizeof (ref_t)
+ db->head->data_size));
- off_t off = (char *) &dataset->resp - (char *) db->head;
ssize_t written;
- written = sendfile (fd, db->wr_fd, &off, total);
+ written = sendfileall (fd, db->wr_fd,
+ (char *) &dataset->resp
+ - (char *) db->head, total);
# ifndef __ASSUME_SENDFILE
if (written == -1 && errno == ENOSYS)
goto use_write;
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <assert.h>
#include <atomic.h>
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <alloca.h>
#include <assert.h>
}
+#ifdef HAVE_SENDFILE
+ssize_t
+sendfileall (int tofd, int fromfd, off_t off, size_t len)
+{
+ ssize_t n = len;
+ ssize_t ret;
+
+ do
+ {
+ ret = TEMP_FAILURE_RETRY (sendfile (tofd, fromfd, &off, n));
+ if (ret <= 0)
+ break;
+ n -= ret;
+ }
+ while (n > 0);
+ return ret < 0 ? ret : len - n;
+}
+#endif
+
+
enum usekey
{
use_not = 0,
<= (sizeof (struct database_pers_head)
+ db->head->module * sizeof (ref_t)
+ db->head->data_size));
- off_t off = (char *) cached->data - (char *) db->head;
- nwritten = sendfile (fd, db->wr_fd, &off, cached->recsize);
+ nwritten = sendfileall (fd, db->wr_fd,
+ (char *) cached->data
+ - (char *) db->head, cached->recsize);
# ifndef __ASSUME_SENDFILE
if (nwritten == -1 && errno == ENOSYS)
goto use_write;
-/* Copyright (c) 1998, 2000, 2004 Free Software Foundation, Inc.
+/* Copyright (c) 1998, 2000, 2004, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1998.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <stdarg.h>
#include <stdio.h>
+/* Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 2004.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
+
+ This program 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 General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
/* This file uses the getaddrinfo code but it compiles it without NSCD
support. We just need a few symbol renames. */
#define __getservbyname_r getservbyname_r
-/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <grp.h>
-/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <grp.h>
-/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1996,1997,1998,1999,2000,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <netdb.h>
-/* Copyright (C) 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 2000, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <ctype.h>
#include <errno.h>
-/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <pwd.h>
-/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <pwd.h>
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <alloca.h>
#include <assert.h>
#include <string.h>
#include <unistd.h>
#include <sys/mman.h>
-#ifdef HAVE_SENDFILE
-# include <sys/sendfile.h>
-#endif
#include <sys/socket.h>
#include <stackinfo.h>
<= (sizeof (struct database_pers_head)
+ db->head->module * sizeof (ref_t)
+ db->head->data_size));
- off_t off = (char *) &dataset->resp - (char *) db->head;
- written = sendfile (fd, db->wr_fd, &off, total);
+ written = sendfileall (fd, db->wr_fd,
+ (char *) &dataset->resp
+ - (char *) db->head, total);
# ifndef __ASSUME_SENDFILE
if (written == -1 && errno == ENOSYS)
goto use_write;
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <alloca.h>
#include <assert.h>
#include <arpa/inet.h>
#include <arpa/nameser.h>
#include <sys/mman.h>
-#ifdef HAVE_SENDFILE
-# include <sys/sendfile.h>
-#endif
#include <stackinfo.h>
#include "nscd.h"
<= (sizeof (struct database_pers_head)
+ db->head->module * sizeof (ref_t)
+ db->head->data_size));
- off_t off = (char *) &dataset->resp - (char *) db->head;
- written = sendfile (fd, db->wr_fd, &off, total);
+ written = sendfileall (fd, db->wr_fd,
+ (char *) &dataset->resp
+ - (char *) db->head, total);
# ifndef __ASSUME_SENDFILE
if (written == -1 && errno == ENOSYS)
goto use_write;
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <assert.h>
#include <errno.h>
#include <time.h>
#include <unistd.h>
#include <sys/mman.h>
-#ifdef HAVE_SENDFILE
-# include <sys/sendfile.h>
-#endif
#include "dbg_log.h"
#include "nscd.h"
<= (sizeof (struct database_pers_head)
+ db->head->module * sizeof (ref_t)
+ db->head->data_size));
- off_t off = (char *) &dataset->resp - (char *) db->head;
- written = sendfile (fd, db->wr_fd, &off, total);
+ written = sendfileall (fd, db->wr_fd,
+ (char *) &dataset->resp
+ - (char *) db->head, total);
# ifndef __ASSUME_SENDFILE
if (written == -1 && errno == ENOSYS)
goto use_write;
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <assert.h>
#include <errno.h>
attribute_hidden;
extern ssize_t writeall (int fd, const void *buf, size_t len)
attribute_hidden;
+extern ssize_t sendfileall (int tofd, int fromfd, off_t off, size_t len)
+ attribute_hidden;
#endif /* nscd.h */
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* nscd - Name Service Cache Daemon. Caches passwd, group, and hosts. */
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@suse.de>, 1998.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <ctype.h>
#include <errno.h>
if (wait_on_socket (sock) <= 0)
goto out_close2;
-#ifndef MSG_NOSIGNAL
-# define MSG_NOSIGNAL 0
-#endif
+# ifndef MSG_NOSIGNAL
+# define MSG_NOSIGNAL 0
+# endif
if (__builtin_expect (TEMP_FAILURE_RETRY (__recvmsg (sock, &msg,
MSG_NOSIGNAL))
!= keylen, 0))
+++ /dev/null
-/* Copyright (c) 1999, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Thorsten Kukuk <kukuk@suse.de>, 1999.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-/* nscd_nischeck: Check, if everybody has read permissions for NIS+ table.
- Return value:
- 0: Everybody can read the NIS+ table
- 1: Only authenticated users could read the NIS+ table */
-
-#include <argp.h>
-#include <error.h>
-#include <stdlib.h>
-#include <libintl.h>
-#include <locale.h>
-#include <rpcsvc/nis.h>
-
-/* Get libc version number. */
-#include <version.h>
-
-#define PACKAGE _libc_intl_domainname
-
-/* Name and version of program. */
-static void print_version (FILE *stream, struct argp_state *state);
-void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version;
-
-/* Data structure to communicate with argp functions. */
-static struct argp argp =
-{
- NULL, NULL, NULL, NULL,
-};
-
-int
-main (int argc, char **argv)
-{
- int remaining;
- nis_result *res;
- char *tablename, *cp;
-
- /* Set locale via LC_ALL. */
- setlocale (LC_ALL, "");
- /* Set the text message domain. */
- textdomain (PACKAGE);
-
- /* Parse and process arguments. */
- argp_parse (&argp, argc, argv, 0, &remaining, NULL);
-
- if (remaining + 1 != argc)
- {
- error (0, 0, gettext ("wrong number of arguments"));
- argp_help (&argp, stdout, ARGP_HELP_SEE, program_invocation_short_name);
- exit (EXIT_FAILURE);
- }
-
- tablename = alloca (strlen (argv[1]) + 10);
- cp = stpcpy (tablename, argv[1]);
- strcpy (cp, ".org_dir");
-
- res = nis_lookup (tablename, EXPAND_NAME|FOLLOW_LINKS);
-
- if (res == NULL ||
- (res->status != NIS_SUCCESS && res->status != NIS_S_SUCCESS))
- return 0;
-
- if (NIS_NOBODY(NIS_RES_OBJECT(res)->zo_access, NIS_READ_ACC))
- return 0;
- else
- return 1;
-}
-
-/* Print the version information. */
-static void
-print_version (FILE *stream, struct argp_state *state)
-{
- fprintf (stream, "nscd_nischeck (GNU %s) %s\n", PACKAGE, VERSION);
- fprintf (stream, gettext ("\
-Copyright (C) %s Free Software Foundation, Inc.\n\
-This is free software; see the source for copying conditions. There is NO\n\
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
-"), "2005");
- fprintf (stream, gettext ("Written by %s.\n"), "Thorsten Kukuk");
-}
--- /dev/null
+/* Setup of nscd worker threads. Stub verison.
+ Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
+
+ This program 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 General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#include <nscd.h>
+
+
+void
+setup_thread (struct database_dyn *db)
+{
+ /* Nothing. */
+}
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <alloca.h>
#include <assert.h>
#include <time.h>
#include <unistd.h>
#include <sys/mman.h>
-#ifdef HAVE_SENDFILE
-# include <sys/sendfile.h>
-#endif
#include <sys/socket.h>
#include <stackinfo.h>
<= (sizeof (struct database_pers_head)
+ db->head->module * sizeof (ref_t)
+ db->head->data_size));
- off_t off = (char *) &dataset->resp - (char *) db->head;
- written = sendfile (fd, db->wr_fd, &off, total);
+ written = sendfileall (fd, db->wr_fd,
+ (char *) &dataset->resp
+ - (char *) db->head, total);
# ifndef __ASSUME_SENDFILE
if (written == -1 && errno == ENOSYS)
goto use_write;
/* List of functions defined for static NSS in GNU C Library.
- Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 1998, 2005 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
DEFINE_ENT (files, host)
DEFINE_GETBY (files, host, addr)
DEFINE_GETBY (files, host, name)
+DEFINE_GETBY (files, host, name2)
DEFINE_GET (files, hostton)
DEFINE_GET (files, ntohost)
DEFINE_GETBY (dns, host, addr)
}
-int
+enum nss_status
_nss_files_endnetgrent (struct __netgrent *result)
{
/* Free allocated memory for data if some is present. */
/* Copyright (C) 1991, 92, 1995-2004, 2005 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 Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <unistd.h>
#include <errno.h>
#if defined HAVE_STDBOOL_H || defined _LIBC
# include <stdbool.h>
#endif /* HAVE_STDBOOL_H || _LIBC */
+#if defined HAVE_STDINT_H || defined _LIBC
+# include <stdint.h>
+#endif /* HAVE_STDINT_H || _LIBC */
#if defined _LIBC
# include <bits/libc-lock.h>
#else
# define gettext_noop(String) String
#endif
+/* For loser systems without the definition. */
+#ifndef SIZE_MAX
+# define SIZE_MAX ((size_t) -1)
+#endif
+
#if (defined MB_CUR_MAX && HAVE_LOCALE_H && HAVE_WCTYPE_H && HAVE_WCHAR_H && HAVE_WCRTOMB && HAVE_MBRTOWC && HAVE_WCSCOLL) || _LIBC
# define RE_ENABLE_I18N
#endif
extern int link (__const char *__from, __const char *__to)
__THROW __nonnull ((1, 2)) __wur;
+#ifdef __USE_GNU
+/* Like link but relative paths in TO and FROM are interpreted relative
+ to FROMFD and TOFD respectively. */
+extern int linkat (int __fromfd, __const char *__from, int __tofd,
+ __const char *__to) __THROW __nonnull ((2, 4)) __wur;
+#endif
+
#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K
/* Make a symbolic link to FROM named TO. */
extern int symlink (__const char *__from, __const char *__to)
size_t __len) __THROW __nonnull ((1, 2)) __wur;
#endif /* Use BSD. */
+#ifdef __USE_GNU
+/* Like symlink but a relative path in TO is interpreted relative to TOFD. */
+extern int symlinkat (__const char *__from, int __tofd,
+ __const char *__to) __THROW __nonnull ((1, 3)) __wur;
+
+/* Like readlink but a relative PATH is interpreted relative to FD. */
+extern int readlinkat (int __fd, __const char *__restrict __path,
+ char *__restrict __buf, size_t __len)
+ __THROW __nonnull ((2, 3)) __wur;
+#endif
+
/* Remove the link NAME. */
extern int unlink (__const char *__name) __THROW __nonnull ((1));
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)gethostnamadr.c 8.1 (Berkeley) 6/4/93";
-static char rcsid[] = "$Id$";
#endif /* LIBC_SCCS and not lint */
#include <sys/types.h>
--- /dev/null
+#define BE_AIO64
+#include <lio_listio.c>
#! /bin/bash
-# Copyright (C) 2003 Free Software Foundation, Inc.
+# Copyright (C) 2003, 2005 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
# egrep '^typedef.*;$' |
# sed 's/^typedef[[:space:]]*//;s/\([[:space:]]\{1,\}__attribute__.*\);/;/;s/.*[[:space:]]\([*]\|\)\(.*\);/\2/' |
# egrep -v '^_' |
-# sort -u
+# LC_ALL=C sort -u
#
data=$1
shift
--- /dev/null
+#! /bin/bash
+# Copyright (C) 2005 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 Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# The GNU 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
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, write to the Free
+# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+# 02111-1307 USA.
+#
+includedir="$1"
+objpfx="$2"
+
+# To avoid long paths.
+cd "$objpfx"
+
+
+# Search all dependency files for file names in the include directory.
+# There are a few system headers we are known to use.
+if fgrep "$includedir" */*.d |
+fgrep -v "$includedir/asm" |
+fgrep -v "$includedir/linux" |
+fgrep -v "$includedir/selinux" |
+fgrep -v "$includedir/gd"; then
+ # If we found a match something is wrong.
+ exit 1
+fi
+
+exit 0
# Created: 1993-05-16
# Public domain
-# $Id$
-
errstatus=0
for file
#include "soft-fp.h"
#include "single.h"
-double __floatdisf(DItype i)
+float __floatdisf(DItype i)
{
FP_DECL_EX;
FP_DECL_S(A);
#include <stdlib/longlong.h>
#endif
+#include <stdlib.h>
+
#endif
the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA. */
-#include "gmp.h"
+#include <gmp.h>
#include "gmp-impl.h"
mp_limb_t
the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA. */
-#include "gmp.h"
+#include <gmp.h>
#include "gmp-impl.h"
#include "longlong.h"
the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA. */
-#include "gmp.h"
+#include <gmp.h>
#include "gmp-impl.h"
/* Compare OP1_PTR/OP1_SIZE with OP2_PTR/OP2_SIZE.
#include <bits/libc-lock.h>
#include "exit.h"
+#include <atomic.h>
+#include <sysdep.h>
#undef __cxa_atexit
if (new == NULL)
return -1;
- new->flavor = ef_cxa;
+#ifdef PTR_MANGLE
+ PTR_MANGLE (func);
+#endif
new->func.cxa.fn = (void (*) (void *, int)) func;
new->func.cxa.arg = arg;
new->func.cxa.dso_handle = d;
+ atomic_write_barrier ();
+ new->flavor = ef_cxa;
return 0;
}
INTDEF(__cxa_atexit)
-/* Copyright (C) 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2001, 2002, 2003, 2005 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
#include <atomic.h>
#include "exit.h"
#include <fork.h>
+#include <sysdep.h>
/* If D is non-NULL, call all functions registered with `__cxa_atexit'
with the same dso handle. Otherwise, if D is NULL, call all of the
/* We don't want to run this cleanup more than once. */
&& ! atomic_compare_and_exchange_bool_acq (&f->flavor, ef_free,
ef_cxa))
- (*f->func.cxa.fn) (f->func.cxa.arg, 0);
+ {
+ void (*cxafn) (void *arg, int status) = f->func.cxa.fn;
+#ifdef PTR_DEMANGLE
+ PTR_DEMANGLE (cxafn);
+#endif
+ cxafn (f->func.cxa.arg, 0);
+ }
}
/* Remove the registered fork handlers. We do not have to
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include "gmp.h"
+#include <gmp.h>
#include "gmp-impl.h"
/* Convert a `double' to a multi-precision integer representing the
the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA. */
-#include "gmp.h"
+#include <gmp.h>
#include "gmp-impl.h"
#include "longlong.h"
the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA. */
-#include "gmp.h"
+#include <gmp.h>
#include "gmp-impl.h"
#include "longlong.h"
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
+#include <sysdep.h>
#include "exit.h"
#include "set-hooks.h"
&__exit_funcs->fns[--__exit_funcs->idx];
switch (f->flavor)
{
+ void (*atfct) (void);
+ void (*onfct) (int status, void *arg);
+ void (*cxafct) (void *arg, int status);
+
case ef_free:
case ef_us:
break;
case ef_on:
- (*f->func.on.fn) (status, f->func.on.arg);
+ onfct = f->func.on.fn;
+#ifdef PTR_DEMANGLE
+ PTR_DEMANGLE (onfct);
+#endif
+ onfct (status, f->func.on.arg);
break;
case ef_at:
- (*f->func.at) ();
+ atfct = f->func.at;
+#ifdef PTR_DEMANGLE
+ PTR_DEMANGLE (atfct);
+#endif
+ atfct ();
break;
case ef_cxa:
- (*f->func.cxa.fn) (f->func.cxa.arg, status);
+ cxafct = f->func.cxa.fn;
+#ifdef PTR_DEMANGLE
+ PTR_DEMANGLE (cxafct);
+#endif
+ cxafct (f->func.cxa.arg, status);
break;
}
}
#define _FORCE_INLINES
#define _EXTERN_INLINE /* empty */
-#include "gmp.h"
+#include <gmp.h>
/* longlong.h -- definitions for mixed size 32/64 bit arithmetic.
- Copyright (C) 1991, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000
+ Copyright (C) 1991, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+ 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
This file is part of the GNU C Library.
DItype, UDItype -- Signed and unsigned 64 bit types.
On a 32 bit machine UWtype should typically be USItype;
- on a 64 bit machine, UWtype should typically be UDItype.
-*/
+ on a 64 bit machine, UWtype should typically be UDItype. */
#define __BITS4 (W_TYPE_SIZE / 4)
#define __ll_B ((UWtype) 1 << (W_TYPE_SIZE / 2))
#define UDWtype UDItype
#endif
+extern const UQItype __clz_tab[256];
+
/* Define auxiliary asm macros.
- 1) umul_ppmm(high_prod, low_prod, multipler, multiplicand) multiplies two
- UWtype integers MULTIPLER and MULTIPLICAND, and generates a two UWtype
+ 1) umul_ppmm(high_prod, low_prod, multiplier, multiplicand) multiplies two
+ UWtype integers MULTIPLIER and MULTIPLICAND, and generates a two UWtype
word product in HIGH_PROD and LOW_PROD.
2) __umulsidi3(a,b) multiplies two UWtype integers A and B, and returns a
#define umul_ppmm(ph, pl, m0, m1) \
do { \
UDItype __m0 = (m0), __m1 = (m1); \
- __asm__ ("umulh %r1,%2,%0" \
- : "=r" ((UDItype) ph) \
- : "%rJ" (__m0), \
- "rI" (__m1)); \
+ (ph) = __builtin_alpha_umulh (__m0, __m1); \
(pl) = __m0 * __m1; \
} while (0)
#define UMUL_TIME 46
#define UDIV_TIME 220
#endif /* LONGLONG_STANDALONE */
#ifdef __alpha_cix__
-#define count_leading_zeros(COUNT,X) \
- __asm__("ctlz %1,%0" : "=r"(COUNT) : "r"(X))
-#define count_trailing_zeros(COUNT,X) \
- __asm__("cttz %1,%0" : "=r"(COUNT) : "r"(X))
+#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clzl (X))
+#define count_trailing_zeros(COUNT,X) ((COUNT) = __builtin_ctzl (X))
#define COUNT_LEADING_ZEROS_0 64
#else
-extern const UQItype __clz_tab[];
#define count_leading_zeros(COUNT,X) \
do { \
UDItype __xr = (X), __t, __a; \
- __asm__("cmpbge $31,%1,%0" : "=r"(__t) : "r"(__xr)); \
+ __t = __builtin_alpha_cmpbge (0, __xr); \
__a = __clz_tab[__t ^ 0xff] - 1; \
- __asm__("extbl %1,%2,%0" : "=r"(__t) : "r"(__xr), "r"(__a)); \
+ __t = __builtin_alpha_extbl (__xr, __a); \
(COUNT) = 64 - (__clz_tab[__t] + __a*8); \
} while (0)
#define count_trailing_zeros(COUNT,X) \
do { \
UDItype __xr = (X), __t, __a; \
- __asm__("cmpbge $31,%1,%0" : "=r"(__t) : "r"(__xr)); \
+ __t = __builtin_alpha_cmpbge (0, __xr); \
__t = ~__t & -~__t; \
__a = ((__t & 0xCC) != 0) * 2; \
__a += ((__t & 0xF0) != 0) * 4; \
__a += ((__t & 0xAA) != 0); \
- __asm__("extbl %1,%2,%0" : "=r"(__t) : "r"(__xr), "r"(__a)); \
+ __t = __builtin_alpha_extbl (__xr, __a); \
__a <<= 3; \
__t &= -__t; \
__a += ((__t & 0xCC) != 0) * 2; \
UDItype __umulsidi3 (USItype, USItype);
#endif
-#if defined (__arm__) && W_TYPE_SIZE == 32
+#if defined (__arm__) && !defined (__thumb__) && W_TYPE_SIZE == 32
#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
__asm__ ("adds %1, %4, %5\n\tadc %0, %2, %3" \
: "=r" ((USItype) (sh)), \
: "%r" ((USItype) (ah)), \
"rI" ((USItype) (bh)), \
"%r" ((USItype) (al)), \
- "rI" ((USItype) (bl)))
+ "rI" ((USItype) (bl)) __CLOBBER_CC)
#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
__asm__ ("subs %1, %4, %5\n\tsbc %0, %2, %3" \
: "=r" ((USItype) (sh)), \
: "r" ((USItype) (ah)), \
"rI" ((USItype) (bh)), \
"r" ((USItype) (al)), \
- "rI" ((USItype) (bl)))
+ "rI" ((USItype) (bl)) __CLOBBER_CC)
#define umul_ppmm(xh, xl, a, b) \
{register USItype __t0, __t1, __t2; \
__asm__ ("%@ Inlined umul_ppmm\n" \
"=r" ((USItype) (xl)), \
"=&r" (__t0), "=&r" (__t1), "=r" (__t2) \
: "r" ((USItype) (a)), \
- "r" ((USItype) (b)));}
+ "r" ((USItype) (b)) __CLOBBER_CC );}
#define UMUL_TIME 20
#define UDIV_TIME 100
#endif /* __arm__ */
} while (0)
#endif
-#if (defined (__i370__) || defined (__mvs__)) && W_TYPE_SIZE == 32
-#define umul_ppmm(xh, xl, m0, m1) \
- do { \
- union {UDItype __ll; \
- struct {USItype __h, __l;} __i; \
- } __xx; \
- USItype __m0 = (m0), __m1 = (m1); \
- __asm__ ("mr %0,%3" \
- : "=r" (__xx.__i.__h), \
- "=r" (__xx.__i.__l) \
- : "%1" (__m0), \
- "r" (__m1)); \
- (xh) = __xx.__i.__h; (xl) = __xx.__i.__l; \
- (xh) += ((((SItype) __m0 >> 31) & __m1) \
- + (((SItype) __m1 >> 31) & __m0)); \
- } while (0)
+#if (defined (__i370__) || defined (__s390__) || defined (__mvs__)) && W_TYPE_SIZE == 32
#define smul_ppmm(xh, xl, m0, m1) \
do { \
union {DItype __ll; \
struct {USItype __h, __l;} __i; \
- } __xx; \
- __asm__ ("mr %0,%3" \
- : "=r" (__xx.__i.__h), \
- "=r" (__xx.__i.__l) \
- : "%1" (m0), \
- "r" (m1)); \
- (xh) = __xx.__i.__h; (xl) = __xx.__i.__l; \
+ } __x; \
+ __asm__ ("lr %N0,%1\n\tmr %0,%2" \
+ : "=&r" (__x.__ll) \
+ : "r" (m0), "r" (m1)); \
+ (xh) = __x.__i.__h; (xl) = __x.__i.__l; \
} while (0)
#define sdiv_qrnnd(q, r, n1, n0, d) \
do { \
union {DItype __ll; \
struct {USItype __h, __l;} __i; \
- } __xx; \
- __xx.__i.__h = n1; __xx.__i.__l = n0; \
+ } __x; \
+ __x.__i.__h = n1; __x.__i.__l = n0; \
__asm__ ("dr %0,%2" \
- : "=r" (__xx.__ll) \
- : "0" (__xx.__ll), "r" (d)); \
- (q) = __xx.__i.__l; (r) = __xx.__i.__h; \
+ : "=r" (__x.__ll) \
+ : "0" (__x.__ll), "r" (d)); \
+ (q) = __x.__i.__l; (r) = __x.__i.__h; \
} while (0)
#endif
"1" ((USItype) (al)), \
"g" ((USItype) (bl)))
-/* The '020, '030, '040 and CPU32 have 32x32->64 and 64/32->32q-32r. */
-#if defined (__mc68020__) || defined(mc68020) \
- || defined(__mc68030__) || defined(mc68030) \
- || defined(__mc68040__) || defined(mc68040) \
- || defined(__mcpu32__) || defined(mcpu32)
+/* The '020, '030, '040, '060 and CPU32 have 32x32->64 and 64/32->32q-32r. */
+#if (defined (__mc68020__) && !defined (__mc68060__))
#define umul_ppmm(w1, w0, u, v) \
__asm__ ("mulu%.l %3,%1:%0" \
: "=d" ((USItype) (w0)), \
"1" ((USItype) (n1)), \
"dmi" ((USItype) (d)))
-#else /* not mc68020 */
-#if !defined(__mcf5200__)
+#elif defined (__mcoldfire__) /* not mc68020 */
+
+#define umul_ppmm(xh, xl, a, b) \
+ __asm__ ("| Inlined umul_ppmm\n" \
+ " move%.l %2,%/d0\n" \
+ " move%.l %3,%/d1\n" \
+ " move%.l %/d0,%/d2\n" \
+ " swap %/d0\n" \
+ " move%.l %/d1,%/d3\n" \
+ " swap %/d1\n" \
+ " move%.w %/d2,%/d4\n" \
+ " mulu %/d3,%/d4\n" \
+ " mulu %/d1,%/d2\n" \
+ " mulu %/d0,%/d3\n" \
+ " mulu %/d0,%/d1\n" \
+ " move%.l %/d4,%/d0\n" \
+ " clr%.w %/d0\n" \
+ " swap %/d0\n" \
+ " add%.l %/d0,%/d2\n" \
+ " add%.l %/d3,%/d2\n" \
+ " jcc 1f\n" \
+ " add%.l %#65536,%/d1\n" \
+ "1: swap %/d2\n" \
+ " moveq %#0,%/d0\n" \
+ " move%.w %/d2,%/d0\n" \
+ " move%.w %/d4,%/d2\n" \
+ " move%.l %/d2,%1\n" \
+ " add%.l %/d1,%/d0\n" \
+ " move%.l %/d0,%0" \
+ : "=g" ((USItype) (xh)), \
+ "=g" ((USItype) (xl)) \
+ : "g" ((USItype) (a)), \
+ "g" ((USItype) (b)) \
+ : "d0", "d1", "d2", "d3", "d4")
+#define UMUL_TIME 100
+#define UDIV_TIME 400
+#else /* not ColdFire */
/* %/ inserts REGISTER_PREFIX, %# inserts IMMEDIATE_PREFIX. */
#define umul_ppmm(xh, xl, a, b) \
__asm__ ("| Inlined umul_ppmm\n" \
: "d0", "d1", "d2", "d3", "d4")
#define UMUL_TIME 100
#define UDIV_TIME 400
-#endif /* not mcf5200 */
+
#endif /* not mc68020 */
-/* The '020, '030, '040 and '060 have bitfield insns. */
-#if defined (__mc68020__) || defined(mc68020) \
- || defined(__mc68030__) || defined(mc68030) \
- || defined(__mc68040__) || defined(mc68040) \
- || defined(__mc68060__) || defined(mc68060)
+/* The '020, '030, '040 and '060 have bitfield insns.
+ cpu32 disguises as a 68020, but lacks them. */
+#if defined (__mc68020__) && !defined (__mcpu32__)
#define count_leading_zeros(count, x) \
__asm__ ("bfffo %1{%b2:%b2},%0" \
: "=d" ((USItype) (count)) \
__asm__ ("{cntlz|cntlzw} %0,%1" : "=r" (count) : "r" (x))
#define COUNT_LEADING_ZEROS_0 32
#if defined (_ARCH_PPC) || defined (__powerpc__) || defined (__POWERPC__) \
- || defined (__ppc__) || defined (PPC) || defined (__vxworks__)
+ || defined (__ppc__) || defined (PPC)
#define umul_ppmm(ph, pl, m0, m1) \
do { \
USItype __m0 = (m0), __m1 = (m1); \
} while (0)
#endif
+/* If we lack umul_ppmm but have smul_ppmm, define umul_ppmm in terms of
+ smul_ppmm. */
+#if !defined (umul_ppmm) && defined (smul_ppmm)
+#define umul_ppmm(w1, w0, u, v) \
+ do { \
+ UWtype __w1; \
+ UWtype __xm0 = (u), __xm1 = (v); \
+ smul_ppmm (__w1, w0, __xm0, __xm1); \
+ (w1) = __w1 + (-(__xm0 >> (W_TYPE_SIZE - 1)) & __xm1) \
+ + (-(__xm1 >> (W_TYPE_SIZE - 1)) & __xm0); \
+ } while (0)
+#endif
+
+/* If we still don't have umul_ppmm, define it using plain C. */
#if !defined (umul_ppmm)
#define umul_ppmm(w1, w0, u, v) \
do { \
#endif
#if !defined (count_leading_zeros)
-extern const UQItype __clz_tab[];
#define count_leading_zeros(count, x) \
do { \
UWtype __xr = (x); \
the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA. */
-#include "gmp.h"
+#include <gmp.h>
#include "gmp-impl.h"
/* Shift U (pointed to by UP and USIZE digits long) CNT bits to the left
the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA. */
-#include "gmp.h"
+#include <gmp.h>
#include "gmp-impl.h"
#include "longlong.h"
02111-1307 USA. */
#if 0
-#include "gmp.h"
+#include <gmp.h>
#include "gmp-impl.h"
#endif
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include "gmp.h"
+#include <gmp.h>
#include "gmp-impl.h"
#include <float.h>
the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA. */
-#include "gmp.h"
+#include <gmp.h>
#include "gmp-impl.h"
/* Multiply the natural numbers u (pointed to by UP, with USIZE limbs)
the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA. */
-#include "gmp.h"
+#include <gmp.h>
#include "gmp-impl.h"
#include "longlong.h"
the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA. */
-#include "gmp.h"
+#include <gmp.h>
#include "gmp-impl.h"
/* Multiply the natural numbers u (pointed to by UP) and v (pointed to by VP),
-/* Copyright (C) 1991, 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1996, 2005 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
#include <stdlib.h>
#include "exit.h"
+#include <atomic.h>
+#include <sysdep.h>
/* Register a function to be called by exit. */
int
if (new == NULL)
return -1;
- new->flavor = ef_on;
+#ifdef PTR_MANGLE
+ PTR_MANGLE (func);
+#endif
new->func.on.fn = func;
new->func.on.arg = arg;
+ atomic_write_barrier ();
+ new->flavor = ef_on;
return 0;
}
weak_alias (__on_exit, on_exit)
the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA. */
-#include "gmp.h"
+#include <gmp.h>
#include "gmp-impl.h"
/* Shift U (pointed to by UP and USIZE limbs long) CNT bits to the right
and _LONG_LONG_LIMB in it can take effect into gmp.h. */
#include <gmp-mparam.h>
#include <gmp.h>
-#include <gmp-impl.h>
-#include <longlong.h>
+#include "gmp-impl.h"
+#include "longlong.h"
#include "fpioconst.h"
#define NDEBUG 1
the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA. */
-#include "gmp.h"
+#include <gmp.h>
#include "gmp-impl.h"
mp_limb_t
from the limb vector pointed to by RES_PTR. Return the most significant
limb of the product, adjusted for carry-out from the subtraction.
-Copyright (C) 1992, 1993, 1994, 1996 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1996, 2005 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA. */
-#include "gmp.h"
+#include <gmp.h>
#include "gmp-impl.h"
#include "longlong.h"
-/* Copyright (C) 1997, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 2002, 2005 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
02111-1307 USA. */
#define USE_IN_EXTENDED_LOCALE_MODEL 1
-#include <sysdeps/generic/strcasecmp.c>
+#include "strcasecmp.c"
libc_hidden_def (__strcasecmp_l)
weak_alias (__strcasecmp_l, strcasecmp_l)
/* Compare at most N characters of two strings without taking care for
the case using given locale.
- Copyright (C) 1997, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2002, 2005 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
02111-1307 USA. */
#define USE_IN_EXTENDED_LOCALE_MODEL 1
-#include <sysdeps/generic/strncase.c>
+#include "strncase.c"
libc_hidden_def (__strncasecmp_l)
weak_alias (__strncasecmp_l, strncasecmp_l)
if (key_gendes (&auth->ah_key) < 0)
{
debug ("authdes_create: unable to gen conversation key");
- return NULL;
+ goto failed;
}
}
else
int res = -1;
int nports = ENDPORT - startport + 1;
+ int endport = ENDPORT;
again:
for (i = 0; i < nports; ++i)
{
sin->sin_port = htons (port++);
- if (port > ENDPORT)
- {
- port = startport;
- }
+ if (port > endport)
+ port = startport;
res = __bind (sd, sin, sizeof (struct sockaddr_in));
if (res >= 0 || errno != EADDRINUSE)
break;
if (i == nports && startport != LOWPORT)
{
startport = LOWPORT;
+ endport = STARTPORT - 1;
nports = STARTPORT - LOWPORT;
+ port = LOWPORT + port % (STARTPORT - LOWPORT);
goto again;
}
/*
* From: @(#)rpc_clntout.c 1.11 89/02/22 (C) 1987 SMI
*/
-#if defined(LIBC_SCCS) && !defined(lint)
-static const char clntout_rcsid[] =
- "$Id$";
-#endif
/*
* rpc_clntout.c, Client-stub outputter for the RPC protocol compiler
/*
* From: @(#)rpc_cout.c 1.13 89/02/22 (C) 1987 SMI
*/
-#if defined(LIBC_SCCS) && !defined(lint)
-static const char cout_rcsid[] =
-"$Id$";
-#endif
/*
* rpc_cout.c, XDR routine outputter for the RPC protocol compiler
/*
* From: @(#)rpc_hout.c 1.12 89/02/22 (C) 1987 SMI
*/
-#if defined(LIBC_SCCS) && !defined(lint)
-static const char hout_rcsid[] =
- "$Id$";
-#endif
/*
* rpc_hout.c, Header file outputter for the RPC protocol compiler
/*
* From @(#)rpc_main.c 1.30 89/03/30 (C) 1987 SMI;
*/
-#if defined(LIBC_SCCS) && !defined(lint)
-static const char main_rcsid[] =
- "$Id$";
-#endif
/*
* rpc_main.c, Top level of the RPC protocol compiler.
/*
* From: @(#)rpc_parse.c 1.8 89/02/22 (C) 1987 SMI
*/
-#if defined(LIBC_SCCS) && !defined(lint)
-static const char parse_rcsid[] =
- "$Id$";
-#endif
/*
* rpc_parse.c, Parser for the RPC protocol compiler
/*
* From: @(#)rpc_sample.c 1.1 90/08/30 (C) 1987 SMI
*/
-#if defined(LIBC_SCCS) && !defined(lint)
-static const char sample_rcsid[] =
- "$Id$";
-#endif
/*
* rpc_sample.c, Sample client-server code outputter for the RPC protocol compiler
/*
* From: @(#)rpc_scan.c 1.11 89/02/22 (C) 1987 SMI
*/
-#if defined(LIBC_SCCS) && !defined(lint)
-static const char scan_rcsid[] =
- "$Id$";
-#endif
/*
* rpc_scan.c, Scanner for the RPC protocol compiler
/*
* From: @(#)rpc_svcout.c 1.29 89/03/30 (C) 1987 SMI
*/
-#if defined(LIBC_SCCS) && !defined(lint)
-static const char svcout_rcsid[] =
- "$Id$";
-#endif
/*
* rpc_svcout.c, Server-skeleton outputter for the RPC protocol compiler
/*
* From: @(#)rpc_tblout.c 1.4 89/02/22 (C) 1988 SMI
*/
-#if defined(LIBC_SCCS) && !defined(lint)
-static const char tblout_rcsid[] =
- "$Id$";
-#endif
/*
* rpc_tblout.c, Dispatch table outputter for the RPC protocol compiler
/*
* From: @(#)rpc_util.c 1.11 89/02/22 (C) 1987 SMI
*/
-#if defined(LIBC_SCCS) && !defined(lint)
-static const char util_rcsid[] =
- "$Id$";
-#endif
/*
* rpc_util.c, Utility routines for the RPC protocol compiler
/* Return arc cosine of complex float value.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005 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
static _Complex float internal_cacosf (_Complex float x);
-#include <sysdeps/generic/s_cacosf.c>
+#include <math/s_cacosf.c>
#include "cfloat-compat.h"
#undef __cacosf
/* Return arc hyperbole cosine of complex float value.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005 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
static _Complex float internal_cacoshf (_Complex float x);
-#include <sysdeps/generic/s_cacoshf.c>
+#include <math/s_cacoshf.c>
#include "cfloat-compat.h"
#undef __cacoshf
/* Return arc sine of complex float value.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005 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
static _Complex float internal_casinf (_Complex float x);
-#include <sysdeps/generic/s_casinf.c>
+#include <math/s_casinf.c>
#include "cfloat-compat.h"
#undef __casinf
/* Return arc hyperbole sine of complex float value.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005 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
static _Complex float internal_casinhf (_Complex float x);
-#include <sysdeps/generic/s_casinhf.c>
+#include <math/s_casinhf.c>
#include "cfloat-compat.h"
#undef __casinhf
/* Return arc tangent of complex float value.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005 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
static _Complex float internal_catanf (_Complex float x);
-#include <sysdeps/generic/s_catanf.c>
+#include <math/s_catanf.c>
#include "cfloat-compat.h"
#undef __catanf
/* Return arc hyperbole tangent of complex float value.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005 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
static _Complex float internal_catanhf (_Complex float x);
-#include <sysdeps/generic/s_catanhf.c>
+#include <math/s_catanhf.c>
#include "cfloat-compat.h"
#undef __catanhf
/* Return cosine of complex float value.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005 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
static _Complex float internal_ccosf (_Complex float x);
-#include <sysdeps/generic/s_ccosf.c>
+#include <math/s_ccosf.c>
#include "cfloat-compat.h"
#undef __ccosf
/* Return hyperbole cosine of complex float value.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005 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
static _Complex float internal_ccoshf (_Complex float x);
-#include <sysdeps/generic/s_ccoshf.c>
+#include <math/s_ccoshf.c>
#include "cfloat-compat.h"
#undef __ccoshf
/* Return exponent of complex float value.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005 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
static _Complex float internal_cexpf (_Complex float x);
-#include <sysdeps/generic/s_cexpf.c>
+#include <math/s_cexpf.c>
#include "cfloat-compat.h"
#undef __cexpf
/* Return base 10 logarithm of complex float value.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005 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
static _Complex float internal_clog10f (_Complex float x);
-#include <sysdeps/generic/s_clog10f.c>
+#include <math/s_clog10f.c>
#include "cfloat-compat.h"
#undef __clog10f
/* Return natural logarithm of complex float value.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005 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
static _Complex float internal_clogf (_Complex float x);
-#include <sysdeps/generic/s_clogf.c>
+#include <math/s_clogf.c>
#include "cfloat-compat.h"
#undef __clogf
/* Return power of complex float value.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005 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
static _Complex float internal_cpowf (_Complex float x, _Complex float c);
-#include <sysdeps/generic/s_cpowf.c>
+#include <math/s_cpowf.c>
#include "cfloat-compat.h"
#undef __cpowf
/* Return projection of complex float value to Riemann sphere.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005 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
static _Complex float internal_cprojf (_Complex float x);
-#include <sysdeps/generic/s_cprojf.c>
+#include <math/s_cprojf.c>
#include "cfloat-compat.h"
#undef __cprojf
/* Return sine of complex float value.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005 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
static _Complex float internal_csinf (_Complex float x);
-#include <sysdeps/generic/s_csinf.c>
+#include <math/s_csinf.c>
#include "cfloat-compat.h"
#undef __csinf
/* Return hyperbole sine of complex float value.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005 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
static _Complex float internal_csinhf (_Complex float x);
-#include <sysdeps/generic/s_csinhf.c>
+#include <math/s_csinhf.c>
#include "cfloat-compat.h"
#undef __csinhf
/* Return square root of complex float value.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005 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
static _Complex float internal_csqrtf (_Complex float x);
-#include <sysdeps/generic/s_csqrtf.c>
+#include <math/s_csqrtf.c>
#include "cfloat-compat.h"
#undef __csqrtf
/* Return tangent of complex float value.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005 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
static _Complex float internal_ctanf (_Complex float x);
-#include <sysdeps/generic/s_ctanf.c>
+#include <math/s_ctanf.c>
#include "cfloat-compat.h"
#undef __ctanf
/* Return hyperbole tangent of complex float value.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005 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
static _Complex float internal_ctanhf (_Complex float x);
-#include <sysdeps/generic/s_ctanhf.c>
+#include <math/s_ctanhf.c>
#include "cfloat-compat.h"
#undef __ctanhf
/* Thread-local storage handling in the ELF dynamic linker. Alpha version.
- Copyright (C) 2003 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2005 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
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <sysdeps/generic/libc-tls.c>
+#include <csu/libc-tls.c>
#include <dl-tls.h>
#if USE_TLS
ornot t0, t3, t0 # .. e1 :
cmpbge zero, t1, t7 # e0 : bits set iff null found
beq a2, $eoc # .. e1 : check end of count
- subq a2, 1, a2 # e0 :
+ unop # e0 :
bne t7, $eos # .. e1 :
+ unop # e0 :
+ beq t10, $ant_loop # .. e1 :
/* Aligned compare main loop.
On entry to this basic block:
bne t2, $wordcmp # .. e1 (zdb)
ldq_u t1, 8(a1) # e0 :
ldq_u t0, 8(a0) # .. e1 :
+ subq a2, 1, a2 # e0 :
+ addq a1, 8, a1 # .. e1 :
+ addq a0, 8, a0 # e0 :
+ beq a2, $eoc # .. e1 :
+ cmpbge zero, t1, t7 # e0 :
+ beq t7, $a_loop # .. e1 :
+ unop # e0 :
+ br $eos # .. e1 :
+
+ /* Alternate aligned compare loop, for when there's no trailing
+ bytes on the count. We have to avoid reading too much data. */
+$ant_loop:
+ xor t0, t1, t2 # e0 :
+ bne t2, $wordcmp # .. e1 (zdb)
+ subq a2, 1, a2 # e0 :
+ beq a2, $zerolength # .. e1 :
+ ldq_u t1, 8(a1) # e0 :
+ ldq_u t0, 8(a0) # .. e1 :
addq a1, 8, a1 # e0 :
addq a0, 8, a0 # .. e1 :
cmpbge zero, t1, t7 # e0 :
- beq a2, $eoc # .. e1 :
- subq a2, 1, a2 # e0 :
- beq t7, $a_loop # .. e1 :
- br $eos # e1 :
+ beq t7, $ant_loop # .. e1 :
+ unop # e0 :
+ br $eos # .. e1 :
/* The two strings are not co-aligned. Align s1 and cope. */
$unaligned:
$eoc:
mskql t0, t10, t0
mskql t1, t10, t1
+ unop
+ cmpbge zero, t1, t7
/* We've found a zero somewhere in a word we just read.
On entry to this basic block:
/* Here we have two differing co-aligned words in t0 & t1.
Bytewise compare them and return (t0 > t1 ? 1 : -1). */
+ .align 3
$wordcmp:
cmpbge t0, t1, t2 # e0 : comparison yields bit mask of ge
cmpbge t1, t0, t3 # .. e1 :
$done:
ret # e1 :
+ .align 3
$zerolength:
clr v0
ret
-signame.c
-signame.h
-det_endian.c
dl-brk.c
dl-sbrk.c
entry.h
-# Copyright (C) 1992,93,94,95,96,97,99,2002 Free Software Foundation, Inc.
+# Copyright (C) 1992,93,94,95,96,97,99,2002,2005
+# 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
# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
# 02111-1307 USA.
-ifeq (,$(filter-out $(sysdep_dir)/generic/bits $(common-objpfx)/bits,\
- $(dir $(firstword $(wildcard $(+sysdep_dirs:%=%/bits/endian.h))))))
-
-$(common-objpfx)bytesex.h: $(common-objpfx)det_endian
- $(dir $<)$(notdir $<) > $@-tmp
- mv $@-tmp $@
-
-$(common-objpfx)det_endian: $(sysdep_dir)/generic/det_endian.c
- $(common-objdir-compile)
-
-before-compile := $(before-compile) $(common-objpfx)bits/endian.h
-common-generated := $(common-generated) bits/endian.h det_endian
-
-endif
-\f
ifeq ($(subdir),string)
CFLAGS-wordcopy.c += -Wno-uninitialized
endif
+++ /dev/null
-# This file is generated from configure.in by Autoconf. DO NOT EDIT!
-
-if test -z "$inhibit_glue"; then
-# For signame.c, used in make_siglist.
-
-
-for ac_func in psignal
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-fi
+++ /dev/null
-GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
-
-if test -z "$inhibit_glue"; then
-# For signame.c, used in make_siglist.
-AC_CHECK_FUNCS(psignal)
-fi
/* Declarations and definitions of codes relating to the DWARF2 symbolic
debugging information format.
- Copyright (C) 1992, 1993, 1995, 1996, 1997, 2000
- Free Software Foundation, Inc.
+ Copyright (C) 1992, 1993, 1995, 1996, 1997, 2000
+ Free Software Foundation, Inc.
Contributed by Gary Funck (gary@intrepid.com). Derived from the
DWARF 1 implementation written by Ron Guilmette (rfg@monkeys.com).
-This file is part of GNU CC.
+ This file is part of the GNU C Library.
-GNU CC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
-GNU CC 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 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
+ Lesser General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with GNU CC; see the file COPYING. If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
/* This file is derived from the DWARF specification (a public document)
Revision 2.0.0 (July 27, 1993) developed by the UNIX International
/* SGI/MIPS specific */
DW_CFA_MIPS_advance_loc8 = 0x1d,
-
+
/* GNU extensions */
DW_CFA_GNU_window_save = 0x2d,
DW_CFA_GNU_args_size = 0x2e,
struct dtv_slotinfo
{
size_t gen;
- bool is_static;
struct link_map *map;
} slotinfo[0];
} *_dl_tls_dtv_slotinfo_list;
/* Expected cache ID. */
EXTERN int _dl_correct_cache_id;
+ /* 0 if internal pointer values should not be guarded, 1 if they should. */
+ EXTERN int _dl_pointer_guard;
+
/* Mask for hardware capabilities that are available. */
EXTERN uint64_t _dl_hwcap;
+++ /dev/null
-#define BE_AIO64
-#include "lio_listio.c"
+++ /dev/null
-/* Convert between signal names and numbers.
- Copyright (C) 1990, 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
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <sys/types.h> /* Some systems need this for <signal.h>. */
-#include <signal.h>
-
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-
-/* Some systems declare `sys_siglist in <unistd.h>; if
- configure defined SYS_SIGLIST_DECLARED, it may expect
- to find the declaration there. */
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-
-/* Some systems do not define NSIG in <signal.h>. */
-#ifndef NSIG
-#ifdef _NSIG
-#define NSIG _NSIG
-#else
-#define NSIG 32
-#endif
-#endif
-
-#if !__STDC__
-#define const
-#endif
-
-#include "signame.h"
-
-#ifndef HAVE_SYS_SIGLIST
-/* There is too much variation in Sys V signal numbers and names, so
- we must initialize them at runtime. */
-
-static const char undoc[] = "unknown signal";
-
-const char *sys_siglist[NSIG];
-
-#else /* HAVE_SYS_SIGLIST. */
-
-#ifndef SYS_SIGLIST_DECLARED
-extern char *sys_siglist[];
-#endif /* Not SYS_SIGLIST_DECLARED. */
-
-#endif /* Not HAVE_SYS_SIGLIST. */
-
-/* Table of abbreviations for signals. Note: A given number can
- appear more than once with different abbreviations. */
-typedef struct
- {
- int number;
- const char *abbrev;
- } num_abbrev;
-static num_abbrev sig_table[NSIG*2];
-/* Number of elements of sig_table used. */
-static int sig_table_nelts = 0;
-
-/* Enter signal number NUMBER into the tables with ABBREV and NAME. */
-
-static void
-init_sig (number, abbrev, name)
- int number;
- const char *abbrev;
- const char *name;
-{
-#ifndef HAVE_SYS_SIGLIST
- sys_siglist[number] = name;
-#endif
- sig_table[sig_table_nelts].number = number;
- sig_table[sig_table_nelts++].abbrev = abbrev;
-}
-
-void
-signame_init ()
-{
-#ifndef HAVE_SYS_SIGLIST
- int i;
- /* Initialize signal names. */
- for (i = 0; i < NSIG; i++)
- sys_siglist[i] = undoc;
-#endif /* !HAVE_SYS_SIGLIST */
-
- /* Initialize signal names. */
-#if defined (SIGHUP)
- init_sig (SIGHUP, "HUP", "Hangup");
-#endif
-#if defined (SIGINT)
- init_sig (SIGINT, "INT", "Interrupt");
-#endif
-#if defined (SIGQUIT)
- init_sig (SIGQUIT, "QUIT", "Quit");
-#endif
-#if defined (SIGILL)
- init_sig (SIGILL, "ILL", "Illegal Instruction");
-#endif
-#if defined (SIGTRAP)
- init_sig (SIGTRAP, "TRAP", "Trace/breakpoint trap");
-#endif
- /* If SIGIOT == SIGABRT, we want to print it as SIGABRT because
- SIGABRT is in ANSI and POSIX.1 and SIGIOT isn't. */
-#if defined (SIGABRT)
- init_sig (SIGABRT, "ABRT", "Aborted");
-#endif
-#if defined (SIGIOT)
- init_sig (SIGIOT, "IOT", "IOT trap");
-#endif
-#if defined (SIGEMT)
- init_sig (SIGEMT, "EMT", "EMT trap");
-#endif
-#if defined (SIGFPE)
- init_sig (SIGFPE, "FPE", "Floating point exception");
-#endif
-#if defined (SIGKILL)
- init_sig (SIGKILL, "KILL", "Killed");
-#endif
-#if defined (SIGBUS)
- init_sig (SIGBUS, "BUS", "Bus error");
-#endif
-#if defined (SIGSEGV)
- init_sig (SIGSEGV, "SEGV", "Segmentation fault");
-#endif
-#if defined (SIGSYS)
- init_sig (SIGSYS, "SYS", "Bad system call");
-#endif
-#if defined (SIGPIPE)
- init_sig (SIGPIPE, "PIPE", "Broken pipe");
-#endif
-#if defined (SIGALRM)
- init_sig (SIGALRM, "ALRM", "Alarm clock");
-#endif
-#if defined (SIGTERM)
- init_sig (SIGTERM, "TERM", "Terminated");
-#endif
-#if defined (SIGUSR1)
- init_sig (SIGUSR1, "USR1", "User defined signal 1");
-#endif
-#if defined (SIGUSR2)
- init_sig (SIGUSR2, "USR2", "User defined signal 2");
-#endif
- /* If SIGCLD == SIGCHLD, we want to print it as SIGCHLD because that
- is what is in POSIX.1. */
-#if defined (SIGCHLD)
- init_sig (SIGCHLD, "CHLD", "Child exited");
-#endif
-#if defined (SIGCLD)
- init_sig (SIGCLD, "CLD", "Child exited");
-#endif
-#if defined (SIGPWR)
- init_sig (SIGPWR, "PWR", "Power failure");
-#endif
-#if defined (SIGTSTP)
- init_sig (SIGTSTP, "TSTP", "Stopped");
-#endif
-#if defined (SIGTTIN)
- init_sig (SIGTTIN, "TTIN", "Stopped (tty input)");
-#endif
-#if defined (SIGTTOU)
- init_sig (SIGTTOU, "TTOU", "Stopped (tty output)");
-#endif
-#if defined (SIGSTOP)
- init_sig (SIGSTOP, "STOP", "Stopped (signal)");
-#endif
-#if defined (SIGXCPU)
- init_sig (SIGXCPU, "XCPU", "CPU time limit exceeded");
-#endif
-#if defined (SIGXFSZ)
- init_sig (SIGXFSZ, "XFSZ", "File size limit exceeded");
-#endif
-#if defined (SIGVTALRM)
- init_sig (SIGVTALRM, "VTALRM", "Virtual timer expired");
-#endif
-#if defined (SIGPROF)
- init_sig (SIGPROF, "PROF", "Profiling timer expired");
-#endif
-#if defined (SIGWINCH)
- /* "Window size changed" might be more accurate, but even if that
- is all that it means now, perhaps in the future it will be
- extended to cover other kinds of window changes. */
- init_sig (SIGWINCH, "WINCH", "Window changed");
-#endif
-#if defined (SIGCONT)
- init_sig (SIGCONT, "CONT", "Continued");
-#endif
-#if defined (SIGURG)
- init_sig (SIGURG, "URG", "Urgent I/O condition");
-#endif
-#if defined (SIGIO)
- /* "I/O pending" has also been suggested. A disadvantage is
- that signal only happens when the process has
- asked for it, not everytime I/O is pending. Another disadvantage
- is the confusion from giving it a different name than under Unix. */
- init_sig (SIGIO, "IO", "I/O possible");
-#endif
-#if defined (SIGWIND)
- init_sig (SIGWIND, "WIND", "SIGWIND");
-#endif
-#if defined (SIGPHONE)
- init_sig (SIGPHONE, "PHONE", "SIGPHONE");
-#endif
-#if defined (SIGPOLL)
- init_sig (SIGPOLL, "POLL", "I/O possible");
-#endif
-#if defined (SIGLOST)
- init_sig (SIGLOST, "LOST", "Resource lost");
-#endif
-#if defined (SIGDANGER)
- init_sig (SIGDANGER, "DANGER", "Danger signal");
-#endif
-#if defined (SIGINFO)
- init_sig (SIGINFO, "INFO", "Information request");
-#endif
-#if defined (SIGNOFP)
- init_sig (SIGNOFP, "NOFP", "Floating point co-processor not available");
-#endif
-}
-
-/* Return the abbreviation for signal NUMBER. */
-
-char *
-sig_abbrev (number)
- int number;
-{
- int i;
-
- if (sig_table_nelts == 0)
- signame_init ();
-
- for (i = 0; i < sig_table_nelts; i++)
- if (sig_table[i].number == number)
- return (char *)sig_table[i].abbrev;
- return NULL;
-}
-
-/* Return the signal number for an ABBREV, or -1 if there is no
- signal by that name. */
-
-int
-sig_number (abbrev)
- const char *abbrev;
-{
- int i;
-
- if (sig_table_nelts == 0)
- signame_init ();
-
- /* Skip over "SIG" if present. */
- if (abbrev[0] == 'S' && abbrev[1] == 'I' && abbrev[2] == 'G')
- abbrev += 3;
-
- for (i = 0; i < sig_table_nelts; i++)
- if (abbrev[0] == sig_table[i].abbrev[0]
- && strcmp (abbrev, sig_table[i].abbrev) == 0)
- return sig_table[i].number;
- return -1;
-}
-
-#ifndef HAVE_PSIGNAL
-/* Print to standard error the name of SIGNAL, preceded by MESSAGE and
- a colon, and followed by a newline. */
-
-void
-psignal (signal, message)
- int signal;
- const char *message;
-{
- if (signal <= 0 || signal >= NSIG)
- fprintf (stderr, "%s: unknown signal", message);
- else
- fprintf (stderr, "%s: %s\n", message, sys_siglist[signal]);
-}
-#endif
-
-#ifndef HAVE_STRSIGNAL
-/* Return the string associated with the signal number. */
-
-char *
-strsignal (signal)
- int signal;
-{
- static char buf[] = "Signal 12345678901234567890";
-
- if (signal > 0 || signal < NSIG)
- return (char *) sys_siglist[signal];
-
- sprintf (buf, "Signal %d", signal);
- return buf;
-}
-#endif
+++ /dev/null
-/* Convert between signal names and numbers.
- Copyright (C) 1990, 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 Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#if defined (__STDC__) && __STDC__
-
-/* Initialize `sys_siglist'. */
-void signame_init (void);
-
-/* Return the abbreviation (e.g. ABRT, FPE, etc.) for signal NUMBER.
- Do not return this as a const char *. The caller might want to
- assign it to a char *. */
-char *sig_abbrev (int number);
-
-/* Return the signal number for an ABBREV, or -1 if there is no
- signal by that name. */
-int sig_number (const char *abbrev);
-
-/* Avoid conflicts with a system header file that might define these three. */
-
-#ifndef HAVE_PSIGNAL
-/* Print to standard error the name of SIGNAL, preceded by MESSAGE and
- a colon, and followed by a newline. */
-void psignal (int signal, const char *message);
-#endif
-
-#ifndef HAVE_STRSIGNAL
-/* Return the name of SIGNAL. */
-char *strsignal (int signal);
-#endif
-
-#if !defined (HAVE_SYS_SIGLIST)
-/* Names for signals from 0 to NSIG-1. */
-extern const char *sys_siglist[];
-#endif
-
-#else
-
-void signame_init ();
-char *sig_abbrev ();
-int sig_number ();
-#if !defined (HAVE_SYS_SIGLIST) && !defined (HAVE_PSIGNAL)
-void psignal ();
-#endif
-#ifndef HAVE_STRSIGNAL
-char *strsignal ();
-#endif
-#if !defined (HAVE_SYS_SIGLIST)
-extern char *sys_siglist[];
-#endif
-
-#endif
#define COMPILE_GLOB64 1
-#include <sysdeps/generic/glob.c>
+#include <posix/glob.c>
libc_hidden_def (glob64)
libc_hidden_def (globfree64)
-/* Copyright (C) 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Mark Kettenis <kettenis@phys.uva.nl>, 1998.
&& __access (_PATH_WTMP "x", F_OK) != 0) ? _PATH_WTMP : \
file_name))
-#include <sysdeps/generic/updwtmp.c>
+#include <login/updwtmp.c>
-/* Copyright (C) 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Mark Kettenis <kettenis@phys.uva.nl>, 1998.
&& __access (_PATH_WTMP "x", F_OK) != 0) ? _PATH_WTMP : \
file_name))
-#include <sysdeps/generic/utmp_file.c>
+#include <login/utmp_file.c>
02111-1307 USA. */
/* Define the machine-dependent type `jmp_buf'. HPPA version. */
+#ifndef _BITS_SETJMP_H
+#define _BITS_SETJMP_H 1
-#ifndef _SETJMP_H
+#if !defined _SETJMP_H && !defined _PTHREAD_H
# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
#endif
variable at ADDRESS. */
#define _JMPBUF_UNWINDS(_jmpbuf, _address) \
((void *)(_address) > (void *)(((unsigned long *) _jmpbuf)[JB_SP]))
+
+#endif /* bits/setjmp.h */
/* longjmp for i386.
- Copyright (C) 1995,1996,1997,1998,2000,2002 Free Software Foundation, Inc.
+ Copyright (C) 1995-1998,2000,2002,2005 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
movl (JB_DI*4)(%ecx), %edi
movl (JB_BP*4)(%ecx), %ebp
movl (JB_SP*4)(%ecx), %esp
+#ifdef PTR_DEMANGLE
+ PTR_DEMANGLE (%edx)
+#endif
/* Jump to saved PC. */
jmp *%edx
END (BP_SYM (__longjmp))
/* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'. i386 version.
- Copyright (C) 1994-1997,2000,2001,2002 Free Software Foundation, Inc.
+ Copyright (C) 1994-1997,2000-2002,2005 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
leal JMPBUF(%esp), %ecx /* Save SP as it will be after we return. */
movl %ecx, (JB_SP*4)(%edx)
movl PCOFF(%esp), %ecx /* Save PC we are returning to now. */
+#ifdef PTR_MANGLE
+ PTR_MANGLE (%ecx)
+#endif
movl %ecx, (JB_PC*4)(%edx)
LEAVE
movl %ebp, (JB_BP*4)(%edx) /* Save caller's frame pointer. */
#include "bp-sym.h"
#include "bp-asm.h"
+#define PARMS LINKAGE /* no space for saved regs */
+#define JMPBUF PARMS
+#define SIGMSK JMPBUF+PTR_SIZE
+
ENTRY (BP_SYM (setjmp))
/* Note that we have to use a non-exported symbol in the next
jump since otherwise gas will emit it as a jump through the
leal JMPBUF(%esp), %ecx /* Save SP as it will be after we return. */
movl %ecx, (JB_SP*4)(%eax)
movl PCOFF(%esp), %ecx /* Save PC we are returning to now. */
+#ifdef PTR_MANGLE
+ PTR_MANGLE (%ecx)
+#endif
movl %ecx, (JB_PC*4)(%eax)
LEAVE /* pop frame pointer to prepare for tail-call. */
movl %ebp, (JB_BP*4)(%eax) /* Save caller's frame pointer. */
/* bzero -- set a block of memory to zero. For Intel 80x86, x>=3.
This file is part of the GNU C Library.
- Copyright (C) 1991,92,93,97,98,99 Free Software Foundation, Inc.
+ Copyright (C) 1991,92,93,97,98,99, 05 Free Software Foundation, Inc.
Contributed by Torbjorn Granlund (tege@sics.se).
The GNU C Library is free software; you can redistribute it and/or
weak_alias (__bzero, bzero)
#else
-#include <sysdeps/generic/bzero.c>
+#include <string/bzero.c>
#endif
+++ /dev/null
-/* BSD `setjmp' entry point to `sigsetjmp (..., 1)'. i386 version.
- Copyright (C) 1995-1997,2000-2003,2005 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 Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-#define _ASM
-#define _SETJMP_H
-#include <bits/setjmp.h>
-#include "bp-sym.h"
-#include "bp-asm.h"
-
-#define PARMS LINKAGE /* no space for saved regs */
-#define JMPBUF PARMS
-#define SIGMSK JMPBUF+PTR_SIZE
-
-ENTRY (BP_SYM (setjmp))
- /* Note that we have to use a non-exported symbol in the next
- jump since otherwise gas will emit it as a jump through the
- PLT which is what we cannot use here. */
- ENTER
-
- movl JMPBUF(%esp), %eax
- CHECK_BOUNDS_BOTH_WIDE (%eax, JMPBUF(%esp), $JB_SIZE)
-
- /* Save registers. */
- movl %ebx, (JB_BX*4)(%eax)
- movl %esi, (JB_SI*4)(%eax)
- movl %edi, (JB_DI*4)(%eax)
- leal JMPBUF(%esp), %ecx /* Save SP as it will be after we return. */
- movl %ecx, (JB_SP*4)(%eax)
- movl PCOFF(%esp), %ecx /* Save PC we are returning to now. */
- movl %ecx, (JB_PC*4)(%eax)
- LEAVE /* pop frame pointer to prepare for tail-call. */
- movl %ebp, (JB_BP*4)(%eax) /* Save caller's frame pointer. */
-
- /* Call __sigjmp_save. */
- pushl $1
- cfi_adjust_cfa_offset (4)
- pushl 8(%esp)
- cfi_adjust_cfa_offset (4)
-#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 __i686.get_pc_thunk.cx
- addl $_GLOBAL_OFFSET_TABLE_, %ecx
- leal C_SYMBOL_NAME (BP_SYM (__sigjmp_save)@GOTOFF)(%ecx), %ecx
- call *%ecx
-#else
- call BP_SYM (__sigjmp_save)
-#endif
- popl %ecx
- cfi_adjust_cfa_offset (-4)
- popl %edx
- cfi_adjust_cfa_offset (-4)
- ret
-END (BP_SYM (setjmp))
-
- .section .gnu.linkonce.t.__i686.get_pc_thunk.cx,"ax",@progbits
- .globl __i686.get_pc_thunk.cx
- .hidden __i686.get_pc_thunk.cx
- .type __i686.get_pc_thunk.cx,@function
-__i686.get_pc_thunk.cx:
- movl (%esp), %ecx
- ret
- .size __i686.get_pc_thunk.cx, . - __i686.get_pc_thunk.cx
+++ /dev/null
-/* setjmp for i386, ELF version.
- Copyright (C) 1995-1997,2000,2001,2002,2003 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 Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#include <sysdep.h>
-#define _ASM
-#define _SETJMP_H
-#include <bits/setjmp.h>
-#include "bp-sym.h"
-#include "bp-asm.h"
-
-#define PARMS LINKAGE /* no space for saved regs */
-#define JMPBUF PARMS
-#define SIGMSK JMPBUF+PTR_SIZE
-
-ENTRY (BP_SYM (__sigsetjmp))
- ENTER
-
- movl JMPBUF(%esp), %eax
- CHECK_BOUNDS_BOTH_WIDE (%eax, JMPBUF(%esp), $JB_SIZE)
-
- /* Save registers. */
- movl %ebx, (JB_BX*4)(%eax)
- movl %esi, (JB_SI*4)(%eax)
- movl %edi, (JB_DI*4)(%eax)
- leal JMPBUF(%esp), %ecx /* Save SP as it will be after we return. */
- movl %ecx, (JB_SP*4)(%eax)
- movl PCOFF(%esp), %ecx /* Save PC we are returning to now. */
- movl %ecx, (JB_PC*4)(%eax)
- LEAVE /* pop frame pointer to prepare for tail-call. */
- movl %ebp, (JB_BP*4)(%eax) /* Save caller's frame pointer. */
-
- /* Make a tail call to __sigjmp_save; it takes the same args. */
-#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 __i686.get_pc_thunk.cx
- addl $_GLOBAL_OFFSET_TABLE_, %ecx
- leal C_SYMBOL_NAME (BP_SYM (__sigjmp_save)@GOTOFF)(%ecx), %ecx
- jmp *%ecx
-#else
- jmp BP_SYM (__sigjmp_save)
-#endif
-END (BP_SYM (__sigsetjmp))
-
- .section .gnu.linkonce.t.__i686.get_pc_thunk.cx,"ax",@progbits
- .globl __i686.get_pc_thunk.cx
- .hidden __i686.get_pc_thunk.cx
- .type __i686.get_pc_thunk.cx,@function
-__i686.get_pc_thunk.cx:
- movl (%esp), %ecx
- ret
- .size __i686.get_pc_thunk.cx, . - __i686.get_pc_thunk.cx
/* ffs -- find first set bit in a word, counted from least significant end.
For Intel 80x86, x>=3.
This file is part of the GNU C Library.
- Copyright (C) 1991, 92, 93, 94, 97, 98, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1991, 92, 93, 94, 97, 98, 2004, 2005 Free Software Foundation, Inc.
Contributed by Torbjorn Granlund (tege@sics.se).
The GNU C Library is free software; you can redistribute it and/or
weak_alias (__ffs, ffsl)
#else
-#include <sysdeps/generic/ffs.c>
+#include <string/ffs.c>
#endif
/* ffs -- find first set bit in a word, counted from least significant end.
For Intel 80x86, x>=6.
This file is part of the GNU C Library.
- Copyright (C) 1991, 92, 93, 94, 97, 98, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1991, 92, 93, 94, 97, 98, 2004, 2005 Free Software Foundation, Inc.
Contributed by Ulrich Drepper <drepper@cygnus.com>.
The GNU C Library is free software; you can redistribute it and/or
weak_alias (__ffs, ffsl)
#else
-#include <sysdeps/generic/ffs.c>
+#include <string/ffs.c>
#endif
/* Set a block of memory to some byte value.
For Intel 80x86, x>=3.
- Copyright (C) 1991,1992,1993,1997,1998,2003 Free Software Foundation, Inc.
+ Copyright (C) 1991,1992,1993,1997,1998,2003, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Torbjorn Granlund (tege@sics.se).
libc_hidden_builtin_def (memset)
#else
-#include <sysdeps/generic/memset.c>
+#include <string/memset.c>
#endif
/* setjmp for i386.
- Copyright (C) 1995, 1996, 1997, 2000, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1995,1996,1997,2000,2001,2005 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
leal JMPBUF(%esp), %ecx /* Save SP as it will be after we return. */
movl %ecx, (JB_SP*4)(%eax)
movl PCOFF(%esp), %ecx /* Save PC we are returning to now. */
+#ifdef PTR_MANGLE
+ PTR_MANGLE (%ecx)
+#endif
movl %ecx, (JB_PC*4)(%eax)
LEAVE /* pop frame pointer to prepare for tail-call. */
movl %ebp, (JB_BP*4)(%eax) /* Save caller's frame pointer. */
+#if defined NOT_IN_libc && defined IS_IN_rtld
+ /* In ld.so we never save the signal mask. */
+ xorl %eax, %eax
+ ret
+#else
/* Make a tail call to __sigjmp_save; it takes the same args. */
- jmp BP_SYM (__sigjmp_save)
+ jmp __sigjmp_save
+#endif
END (BP_SYM (__sigsetjmp))
/* Print floating point number in hexadecimal notation according to ISO C99.
- Copyright (C) 2000 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2005 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
} \
} while (0)
-#include <sysdeps/generic/printf_fphex.c>
+#include <stdio-common/printf_fphex.c>
/* Thread-local storage handling in the ELF dynamic linker. IA-64 version.
- Copyright (C) 2003 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2005 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
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <sysdeps/generic/libc-tls.c>
+#include <csu/libc-tls.c>
#if USE_TLS
}
#endif
-
/* Print floating point number in hexadecimal notation according to
ISO C99.
- Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998, 1999, 2000, 2005 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
} \
} while (0)
-#include <sysdeps/generic/printf_fphex.c>
+#include <stdio-common/printf_fphex.c>
/* Print floating point number in hexadecimal notation according to ISO C99.
- Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998, 1999, 2000, 2005 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
} \
} while (0)
-#include <sysdeps/generic/printf_fphex.c>
+#include <stdio-common/printf_fphex.c>
-/* Copyright (C) 1999, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2004, 2005 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
(flt) = u.d; \
} while (0)
-#include <strtod_l.c>
+#include <stdlib/strtod_l.c>
02111-1307 USA. */
/* Define the machine-dependent type `jmp_buf'. m68k version. */
+#ifndef _BITS_SETJMP_H
+#define _BITS_SETJMP_H 1
-#ifndef _SETJMP_H
+#if !defined _SETJMP_H && !defined _PTHREAD_H
# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
#endif
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address) \
((void *) (address) < (void *) (jmpbuf)->__sp)
+
+#endif /* bits/setjmp.h */
/* ffs -- find first set bit in a word, counted from least significant end.
For mc68020, mc68030, mc68040.
This file is part of the GNU C Library.
- Copyright (C) 1991, 1992, 1997, 1998, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1991, 1992, 1997, 1998, 2004, 2005 Free Software Foundation, Inc.
Contributed by Torbjorn Granlund (tege@sics.se).
The GNU C Library is free software; you can redistribute it and/or
#else
-#include <sysdeps/generic/ffs.c>
+#include <string/ffs.c>
#endif
-#include <sysdeps/generic/getdents.c>
+#include <dirent/getdents.c>
/* We don't need the unix/bsd version. */
-#include <sysdeps/generic/init-posix.c>
+#include <posix/init-posix.c>
/* msync -- Synchronize mapped memory to external storage. Mach version.
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2005 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
define the VM_SYNC_* bits when we include <mach/mach_types.h>. */
#ifndef VM_SYNC_SYNCHRONOUS
-# include <sysdeps/generic/msync.c>
+# include <misc/msync.c>
#else
/* Synchronize the region starting at ADDR and extending LEN bytes with the
* the rights to redistribute these changes.
*/
/*
- * HISTORY
- * $Log$
- * Revision 1.4 2002/07/06 06:36:00 aj
- * * sysdeps/ia64/fpu/e_acos.S: Added text of Intel license.
- * * sysdeps/ia64/fpu/e_acosf.S: Likewise.
- * * sysdeps/ia64/fpu/e_acosl.S: Likewise.
- * * sysdeps/ia64/fpu/e_asin.S: Likewise.
- * * sysdeps/ia64/fpu/e_asinf.S: Likewise.
- * * sysdeps/ia64/fpu/e_asinl.S: Likewise.
- * * sysdeps/ia64/fpu/e_atan2.S: Likewise.
- * * sysdeps/ia64/fpu/e_atan2f.S: Likewise.
- * * sysdeps/ia64/fpu/e_cosh.S: Likewise.
- * * sysdeps/ia64/fpu/e_coshf.S: Likewise.
- * * sysdeps/ia64/fpu/e_coshl.S: Likewise.
- * * sysdeps/ia64/fpu/e_exp.S: Likewise.
- * * sysdeps/ia64/fpu/e_expf.S: Likewise.
- * * sysdeps/ia64/fpu/e_fmod.S: Likewise.
- * * sysdeps/ia64/fpu/e_fmodf.S: Likewise.
- * * sysdeps/ia64/fpu/e_fmodl.S: Likewise.
- * * sysdeps/ia64/fpu/e_hypot.S: Likewise.
- * * sysdeps/ia64/fpu/e_hypotf.S: Likewise.
- * * sysdeps/ia64/fpu/e_hypotl.S: Likewise.
- * * sysdeps/ia64/fpu/e_log.S: Likewise.
- * * sysdeps/ia64/fpu/e_logf.S: Likewise.
- * * sysdeps/ia64/fpu/e_pow.S: Likewise.
- * * sysdeps/ia64/fpu/e_powf.S: Likewise.
- * * sysdeps/ia64/fpu/e_powl.S: Likewise.
- * * sysdeps/ia64/fpu/e_remainder.S: Likewise.
- * * sysdeps/ia64/fpu/e_remainderf.S: Likewise.
- * * sysdeps/ia64/fpu/e_remainderl.S: Likewise.
- * * sysdeps/ia64/fpu/e_scalb.S: Likewise.
- * * sysdeps/ia64/fpu/e_scalbf.S: Likewise.
- * * sysdeps/ia64/fpu/e_scalbl.S: Likewise.
- * * sysdeps/ia64/fpu/e_sinh.S: Likewise.
- * * sysdeps/ia64/fpu/e_sinhf.S: Likewise.
- * * sysdeps/ia64/fpu/e_sinhl.S: Likewise.
- * * sysdeps/ia64/fpu/e_sqrt.S: Likewise.
- * * sysdeps/ia64/fpu/e_sqrtf.S: Likewise.
- * * sysdeps/ia64/fpu/e_sqrtl.S: Likewise.
- * * sysdeps/ia64/fpu/libm_atan2_req.S: Likewise.
- * * sysdeps/ia64/fpu/libm_error.c: Likewise.
- * * sysdeps/ia64/fpu/libm_frexp4.S: Likewise.
- * * sysdeps/ia64/fpu/libm_frexp4f.S: Likewise.
- * * sysdeps/ia64/fpu/s_frexpl.c: Likewise.
- * * sysdeps/ia64/fpu/s_ilogb.S: Likewise.
- * * sysdeps/ia64/fpu/s_ilogbf.S: Likewise.
- * * sysdeps/ia64/fpu/s_ilogbl.S: Likewise.
- * * sysdeps/ia64/fpu/s_ldexp.S: Likewise.
- * * sysdeps/ia64/fpu/s_ldexpf.S: Likewise.
- * * sysdeps/ia64/fpu/s_ldexpl.S: Likewise.
- * * sysdeps/ia64/fpu/s_log1p.S: Likewise.
- * * sysdeps/ia64/fpu/s_log1pf.S: Likewise.
- * * sysdeps/ia64/fpu/s_log1pl.S: Likewise.
- * * sysdeps/ia64/fpu/s_logb.S: Likewise.
- * * sysdeps/ia64/fpu/s_logbf.S: Likewise.
- * * sysdeps/ia64/fpu/s_logbl.S: Likewise.
- * * sysdeps/ia64/fpu/s_modf.S: Likewise.
- * * sysdeps/ia64/fpu/s_modff.S: Likewise.
- * * sysdeps/ia64/fpu/s_modfl.S: Likewise.
- * * sysdeps/ia64/fpu/s_nearbyint.S: Likewise.
- * * sysdeps/ia64/fpu/s_nearbyintf.S: Likewise.
- * * sysdeps/ia64/fpu/s_nearbyintl.S: Likewise.
- * * sysdeps/ia64/fpu/s_rint.S: Likewise.
- * * sysdeps/ia64/fpu/s_rintf.S: Likewise.
- * * sysdeps/ia64/fpu/s_rintl.S: Likewise.
- * * sysdeps/ia64/fpu/s_round.S: Likewise.
- * * sysdeps/ia64/fpu/s_roundf.S: Likewise.
- * * sysdeps/ia64/fpu/s_roundl.S: Likewise.
- * * sysdeps/ia64/fpu/s_scalbn.S: Likewise.
- * * sysdeps/ia64/fpu/s_scalbnf.S: Likewise.
- * * sysdeps/ia64/fpu/s_scalbnl.S: Likewise.
- * * sysdeps/ia64/fpu/s_significand.S: Likewise.
- * * sysdeps/ia64/fpu/s_significandf.S: Likewise.
- * * sysdeps/ia64/fpu/s_significandl.S: Likewise.
- * * sysdeps/ia64/fpu/s_tan.S: Likewise.
- * * sysdeps/ia64/fpu/s_tanf.S: Likewise.
- * * sysdeps/ia64/fpu/s_tanl.S: Likewise.
- * * sysdeps/ia64/fpu/s_trunc.S: Likewise.
- * * sysdeps/ia64/fpu/s_truncf.S: Likewise.
- * * sysdeps/ia64/fpu/s_truncl.S: Likewise.
- * * sysdeps/ieee754/dbl-64/doasin.c: changed copyright notice to
- * reflect IBM donation of math library to FSF
- * * sysdeps/ieee754/dbl-64/dosincos.c: Likewise.
- * * sysdeps/ieee754/dbl-64/e_asin.c: Likewise.
- * * sysdeps/ieee754/dbl-64/e_atan2.c: Likewise.
- * * sysdeps/ieee754/dbl-64/e_exp.c: Likewise.
- * * sysdeps/ieee754/dbl-64/e_log.c: Likewise.
- * * sysdeps/ieee754/dbl-64/e_pow.c: Likewise.
- * * sysdeps/ieee754/dbl-64/e_remainder.c: Likewise.
- * * sysdeps/ieee754/dbl-64/e_sqrt.c: Likewise.
- * * sysdeps/ieee754/dbl-64/halfulp.c: Likewise.
- * * sysdeps/ieee754/dbl-64/mpa.c: Likewise.
- * * sysdeps/ieee754/dbl-64/mpatan.c: Likewise.
- * * sysdeps/ieee754/dbl-64/mpatan2.c: Likewise.
- * * sysdeps/ieee754/dbl-64/mpexp.c: Likewise.
- * * sysdeps/ieee754/dbl-64/mplog.c: Likewise.
- * * sysdeps/ieee754/dbl-64/mpsqrt.c: Likewise.
- * * sysdeps/ieee754/dbl-64/mptan.c: Likewise.
- * * sysdeps/ieee754/dbl-64/s_atan.c: Likewise.
- * * sysdeps/ieee754/dbl-64/s_sin.c: Likewise.
- * * sysdeps/ieee754/dbl-64/s_tan.c: Likewise.
- * * sysdeps/ieee754/dbl-64/sincos32.c: Likewise.
- * * sysdeps/ieee754/dbl-64/slowexp.c: Likewise.
- * * sysdeps/ieee754/dbl-64/slowpow.c: Likewise.
- * * sysdeps/gnu/netinet/udp.h: Added BSD copying permission notice
- * * sysdeps/vax/__longjmp.c: Likewise.
- * * sysdeps/vax/setjmp.c: Likewise.
- * * libio/filedoalloc.c: Fixed BSD copying permission notice to remove
- * advertising clause
- * * sysdeps/vax/htonl.s: Likewise.
- * * sysdeps/vax/htons.s: Likewise.
- * * libio/wfiledoalloc.c: Likewise.
- * * stdlib/random.c: Likewise.
- * * stdlib/random_r.c: Likewise.
- * * sysdeps/mach/sys/reboot.h: Likewise.
- * * inet/getnameinfo.c: Deleted advertising clause from Inner Net License
- * * sysdeps/posix/getaddrinfo.c: Likewise.
- * * sunrpc/des_impl.c: Updated license permission notice to Lesser GPL
- * and corrected pointer to point to the correct license.
- *
- * Revision 1.3 2000/03/27 04:09:08 roland
- * 2000-03-26 Roland McGrath <roland@baalperazim.frob.com>
- *
- * * sysdeps/mach/sys/reboot.h: Include <features.h>.
- * (reboot): Declare it.
- *
- * Revision 1.2 1998/05/29 10:19:59 drepper
- * Use __ASSEMBLER__ test macro not ASSEMBLER.
- *
- * Revision 1.1 1993/08/03 22:25:15 roland
- * entered into RCS
+ * (pre-GNU) HISTORY
*
* Revision 2.8 93/03/11 13:46:40 danner
* u_long -> u_int.
/*
Copyright (C) 1982, 1986, 1988 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:
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
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address) \
- ((void *) (address) < (jmpbuf)[0].__sp)
+ ((void *) (address) < (void *) (jmpbuf)[0].__sp)
#endif /* _MIPS_BITS_SETJMP_H */
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <sysdeps/generic/libc-tls.c>
+#include <csu/libc-tls.c>
#include <dl-tls.h>
#if USE_TLS
/* Check if effective user id can access file
- Copyright (C) 1990,91,95,96,97,98,99,2000,01 Free Software Foundation, Inc.
+ Copyright (C) 1990,1991,1995-2001,2005 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
Adapted for GNU C library by Roland McGrath. */
#ifdef HAVE_CONFIG_H
-#include <config.h>
+# include <config.h>
#endif
#include <sys/types.h>
#include <sys/stat.h>
#ifdef S_IEXEC
-#ifndef S_IXUSR
-#define S_IXUSR S_IEXEC
-#endif
-#ifndef S_IXGRP
-#define S_IXGRP (S_IEXEC >> 3)
-#endif
-#ifndef S_IXOTH
-#define S_IXOTH (S_IEXEC >> 6)
-#endif
+# ifndef S_IXUSR
+# define S_IXUSR S_IEXEC
+# endif
+# ifndef S_IXGRP
+# define S_IXGRP (S_IEXEC >> 3)
+# endif
+# ifndef S_IXOTH
+# define S_IXOTH (S_IEXEC >> 6)
+# endif
#endif /* S_IEXEC */
-#if defined (HAVE_UNISTD_H) || defined (_LIBC)
-#include <unistd.h>
+#if defined HAVE_UNISTD_H || defined _LIBC
+# include <unistd.h>
#endif
#ifndef _POSIX_VERSION
extern int errno;
#endif
#ifndef __set_errno
-#define __set_errno(val) errno = (val)
+# define __set_errno(val) errno = (val)
#endif
-#if defined(EACCES) && !defined(EACCESS)
-#define EACCESS EACCES
+#if defined EACCES && !defined EACCESS
+# define EACCESS EACCES
#endif
#ifndef F_OK
-#define F_OK 0
-#define X_OK 1
-#define W_OK 2
-#define R_OK 4
+# define F_OK 0
+# define X_OK 1
+# define W_OK 2
+# define R_OK 4
#endif
-#if !defined (S_IROTH) && defined (R_OK)
+#if !defined S_IROTH && defined R_OK
# define S_IROTH R_OK
#endif
-#if !defined (S_IWOTH) && defined (W_OK)
+#if !defined S_IWOTH && defined W_OK
# define S_IWOTH W_OK
#endif
-#if !defined (S_IXOTH) && defined (X_OK)
+#if !defined S_IXOTH && defined X_OK
# define S_IXOTH X_OK
#endif
#ifdef _LIBC
-#define group_member __group_member
-#define euidaccess __euidaccess
+# define group_member __group_member
+# define euidaccess __euidaccess
#else
/* The user's real group id. */
static gid_t gid;
-#ifdef HAVE_GETGROUPS
-int group_member ();
-#else
-#define group_member(gid) 0
-#endif
-
-#endif
-
/* The user's effective user id. */
static uid_t euid;
/* Nonzero if UID, GID, EUID, and EGID have valid values. */
static int have_ids;
+# ifdef HAVE_GETGROUPS
+int group_member ();
+# else
+# define group_member(gid) 0
+# endif
+
+#endif
+
/* Return 0 if the user has permission of type MODE on file PATH;
otherwise, return -1 and set `errno' to EACCESS.
int granted;
#ifdef _LIBC
+ uid_t euid;
+ gid_t egid;
+
if (! __libc_enable_secure)
/* If we are not set-uid or set-gid, access does the same. */
return __access (path, mode);
#ifdef _LIBC
/* Now we need the IDs. */
- if (have_ids == 0)
- {
- have_ids = 1;
- euid = __geteuid ();
- egid = __getegid ();
- }
+ euid = __geteuid ();
+ egid = __getegid ();
#endif
/* The super-user can read and write any file, and execute any file
return 0;
if (euid == stats.st_uid)
- granted = (unsigned) (stats.st_mode & (mode << 6)) >> 6;
+ granted = (unsigned int) (stats.st_mode & (mode << 6)) >> 6;
else if (egid == stats.st_gid || group_member (stats.st_gid))
- granted = (unsigned) (stats.st_mode & (mode << 3)) >> 3;
+ granted = (unsigned int) (stats.st_mode & (mode << 3)) >> 3;
else
granted = (stats.st_mode & mode);
+ /* XXX Add support for ACLs. */
if (granted == mode)
return 0;
__set_errno (EACCESS);
#endif
\f
#ifdef TEST
-#include <stdio.h>
-#include <errno.h>
-#include "error.h"
+# include <stdio.h>
+# include <errno.h>
+# include "error.h"
char *program_name;
{
int family;
int (*gaih)(const char *name, const struct gaih_service *service,
- const struct addrinfo *req, struct addrinfo **pai);
+ const struct addrinfo *req, struct addrinfo **pai,
+ unsigned int *naddrs);
};
static const struct addrinfo default_hints =
static int
gaih_inet (const char *name, const struct gaih_service *service,
- const struct addrinfo *req, struct addrinfo **pai)
+ const struct addrinfo *req, struct addrinfo **pai,
+ unsigned int *naddrs)
{
const struct gaih_typeproto *tp = gaih_inet_typeproto;
struct gaih_servtuple *st = (struct gaih_servtuple *) &nullserv;
}
}
+ int port = 0;
if (service != NULL)
{
if ((tp->protoflag & GAI_PROTO_NOSERVICE) != 0)
}
else
{
- if (req->ai_socktype || req->ai_protocol)
- {
- st = __alloca (sizeof (struct gaih_servtuple));
- st->next = NULL;
- st->socktype = tp->socktype;
- st->protocol = ((tp->protoflag & GAI_PROTO_PROTOANY)
- ? req->ai_protocol : tp->protocol);
- st->port = htons (service->num);
- }
- else
- {
- /* Neither socket type nor protocol is set. Return all
- socket types we know about. */
- struct gaih_servtuple **lastp = &st;
- for (tp = gaih_inet_typeproto + 1; tp->name[0]; ++tp)
- if ((tp->protoflag & GAI_PROTO_NOSERVICE) == 0)
- {
- struct gaih_servtuple *newp;
-
- newp = __alloca (sizeof (struct gaih_servtuple));
- newp->next = NULL;
- newp->socktype = tp->socktype;
- newp->protocol = tp->protocol;
- newp->port = htons (service->num);
-
- *lastp = newp;
- lastp = &newp->next;
- }
- }
+ port = htons (service->num);
+ goto got_port;
}
}
- else if (req->ai_socktype || req->ai_protocol)
- {
- st = __alloca (sizeof (struct gaih_servtuple));
- st->next = NULL;
- st->socktype = tp->socktype;
- st->protocol = ((tp->protoflag & GAI_PROTO_PROTOANY)
- ? req->ai_protocol : tp->protocol);
- st->port = 0;
- }
else
{
- /* Neither socket type nor protocol is set. Return all socket types
- we know about. */
- struct gaih_servtuple **lastp = &st;
- for (++tp; tp->name[0]; ++tp)
+ got_port:
+
+ if (req->ai_socktype || req->ai_protocol)
{
- struct gaih_servtuple *newp;
+ st = __alloca (sizeof (struct gaih_servtuple));
+ st->next = NULL;
+ st->socktype = tp->socktype;
+ st->protocol = ((tp->protoflag & GAI_PROTO_PROTOANY)
+ ? req->ai_protocol : tp->protocol);
+ st->port = port;
+ }
+ else
+ {
+ /* Neither socket type nor protocol is set. Return all socket types
+ we know about. */
+ struct gaih_servtuple **lastp = &st;
+ for (++tp; tp->name[0]; ++tp)
+ {
+ struct gaih_servtuple *newp;
- newp = __alloca (sizeof (struct gaih_servtuple));
- newp->next = NULL;
- newp->socktype = tp->socktype;
- newp->protocol = tp->protocol;
- newp->port = 0;
+ newp = __alloca (sizeof (struct gaih_servtuple));
+ newp->next = NULL;
+ newp->socktype = tp->socktype;
+ newp->protocol = tp->protocol;
+ newp->port = port;
- *lastp = newp;
- lastp = &newp->next;
+ *lastp = newp;
+ lastp = &newp->next;
+ }
}
}
}
*pai = NULL;
+ ++*naddrs;
+
ignore:
at2 = at2->next;
}
else
end = NULL;
+ unsigned int naddrs = 0;
while (g->gaih)
{
if (hints->ai_family == g->family || hints->ai_family == AF_UNSPEC)
if (pg == NULL || pg->gaih != g->gaih)
{
pg = g;
- i = g->gaih (name, pservice, hints, end);
+ i = g->gaih (name, pservice, hints, end, &naddrs);
if (i != 0)
{
/* EAI_NODATA is a more specific result as it says that
if (j == 0)
return EAI_FAMILY;
- if (nresults > 1)
+ if (naddrs > 1)
{
/* Sort results according to RFC 3484. */
struct sort_result results[nresults];
/* Low-level statistical profiling support function. Mostly POSIX.1 version.
- Copyright (C) 1996,97,98,2002, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1996,97,98,2002, 2004, 2005 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
#ifndef SIGPROF
-#include <sysdeps/generic/profil.c>
+#include <gmon/profil.c>
#else
/* shm_open -- open a POSIX shared memory object. Generic POSIX file version.
- Copyright (C) 2001,02 Free Software Foundation, Inc.
+ Copyright (C) 2001,2002,2005 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
#include <unistd.h>
#if ! _POSIX_MAPPED_FILES
-#include <sysdeps/generic/shm_open.c>
+#include <rt/shm_open.c>
#else
/* shm_unlink -- remove a POSIX shared memory object. Generic POSIX version.
- Copyright (C) 2001,02 Free Software Foundation, Inc.
+ Copyright (C) 2001,2002,2005 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
#include <unistd.h>
#if ! _POSIX_MAPPED_FILES
-#include <sysdeps/generic/shm_unlink.c>
+#include <rt/shm_unlink.c>
#else
-/* Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
This file is part of the GNU C Library.
#include <sys/profil.h>
#ifndef SIGPROF
-# include <sysdeps/generic/sprofil.c>
+# include <gmon/sprofil.c>
#else
#include <libc-internal.h>
--- /dev/null
+/* Data for processor capability information. PowerPC version.
+ Copyright (C) 2005 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/* This information must be kept in sync with the _DL_HWCAP_COUNT and
+ _DL_PLATFORM_COUNT definitions in procinfo.h.
+
+ If anything should be added here check whether the size of each string
+ is still ok with the given array size.
+
+ All the #ifdefs in the definitions are quite irritating but
+ necessary if we want to avoid duplicating the information. There
+ are three different modes:
+
+ - PROCINFO_DECL is defined. This means we are only interested in
+ declarations.
+
+ - PROCINFO_DECL is not defined:
+
+ + if SHARED is defined the file is included in an array
+ initializer. The .element = { ... } syntax is needed.
+
+ + if SHARED is not defined a normal array initialization is
+ needed.
+ */
+
+#ifndef PROCINFO_CLASS
+# define PROCINFO_CLASS
+#endif
+
+#if !defined PROCINFO_DECL && defined SHARED
+ ._dl_powerpc_cap_flags
+#else
+PROCINFO_CLASS const char _dl_powerpc_cap_flags[16][10]
+#endif
+#ifndef PROCINFO_DECL
+= {
+ "cell", "power5+", "power5", "power4",
+ "notb", "efpdouble", "efpsingle", "spe",
+ "ucache", "4xxmac", "mmu", "fpu",
+ "altivec", "ppc601", "ppc64", "ppc32",
+ }
+#endif
+#if !defined SHARED || defined PROCINFO_DECL
+;
+#else
+,
+#endif
+
+#undef PROCINFO_DECL
+#undef PROCINFO_CLASS
--- /dev/null
+/* Processor capability information handling macros. PowerPC version.
+ Copyright (C) 2005 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _DL_PROCINFO_H
+#define _DL_PROCINFO_H 1
+
+#include <ldsodefs.h>
+#include <sysdep.h> /* This defines the PPC_FEATURE_* macros. */
+
+/* There are 16 bits used, but they are bits 16..31. */
+#define _DL_HWCAP_FIRST 16
+#define _DL_HWCAP_COUNT 32
+
+/* These bits influence library search. */
+#define HWCAP_IMPORTANT (PPC_FEATURE_HAS_ALTIVEC \
+ | PPC_FEATURE_POWER4 \
+ | PPC_FEATURE_POWER5 \
+ | PPC_FEATURE_POWER5_PLUS \
+ | PPC_FEATURE_CELL)
+
+/* We don't use AT_PLATFORM. */
+#define _DL_HWCAP_PLATFORM 0
+#define _dl_string_platform(str) (-1)
+
+static inline const char *
+__attribute__ ((unused))
+_dl_hwcap_string (int idx)
+{
+ return GLRO(dl_powerpc_cap_flags)[idx - _DL_HWCAP_FIRST];
+};
+
+static inline int
+__attribute__ ((unused))
+_dl_string_hwcap (const char *str)
+{
+ for (int i = _DL_HWCAP_FIRST; i < _DL_HWCAP_COUNT; ++i)
+ if (strcmp (str, _dl_hwcap_string (i)) == 0)
+ return i;
+ return -1;
+};
+
+#ifdef IS_IN_rtld
+static inline int
+__attribute__ ((unused))
+_dl_procinfo (int word)
+{
+ _dl_printf ("AT_HWCAP: ");
+
+ for (int i = _DL_HWCAP_FIRST; i < _DL_HWCAP_COUNT; ++i)
+ if (word & (1 << i))
+ _dl_printf (" %s", _dl_hwcap_string (i));
+
+ _dl_printf ("\n");
+
+ return 0;
+}
+#endif
+
+#endif /* dl-procinfo.h */
-/* Copyright (C) 1998,2000,2001,2002,2003,2004 Free Software Foundation, Inc.
+/* Copyright (C) 1998,2000-2004,2005 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
#define LIBC_START_DISABLE_INLINE
#define LIBC_START_MAIN_AUXVEC_ARG
#define MAIN_AUXVEC_ARG
-#include <sysdeps/generic/libc-start.c>
+#include <csu/libc-start.c>
struct startup_info
/* Find first set bit in a word, counted from least significant end.
For PowerPC.
- Copyright (C) 1991, 1992, 1997, 1998, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1991, 1992, 1997, 1998, 2004, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Torbjorn Granlund (tege@sics.se).
#endif
#else
-#include <sysdeps/generic/ffs.c>
+#include <string/ffs.c>
#endif
/* setjmp for PowerPC.
- Copyright (C) 1995-1997,1999-2001,2003,2004 Free Software Foundation, Inc.
+ Copyright (C) 1995-1997,1999-2001,2003,2004,2005
+ 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
stw r29,((JB_GPRS+15)*4)(3)
stw r30,((JB_GPRS+16)*4)(3)
stw r31,((JB_GPRS+17)*4)(3)
+#if defined NOT_IN_libc && defined IS_IN_rtld
+ li r3,0
+ blr
+#else
b BP_SYM (__sigjmp_save@local)
+#endif
END (BP_SYM (__sigsetjmp))
/* setjmp for PowerPC64.
- Copyright (C) 1995-2003, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1995-2003, 2004, 2005 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
stvx 31,0,r6
L(no_vmx):
#endif
+#if defined NOT_IN_libc && defined IS_IN_rtld
+ li r3,0
+ blr
+#else
b JUMPTARGET (BP_SYM (__sigjmp_save))
+#endif
END (BP_SYM (__sigsetjmp))
/* ffs -- find first set bit in a word, counted from least significant end.
For IBM rs6000.
- Copyright (C) 1991, 1992, 1997, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1991, 1992, 1997, 2004, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Torbjorn Granlund (tege@sics.se).
libc_hidden_builtin_def (ffs)
#else
-#include <sysdeps/generic/ffs.c>
+#include <string/ffs.c>
#endif
#ifndef __S390_SETJMP_H__
#define __S390_SETJMP_H__
+#if !defined _SETJMP_H && !defined _PTHREAD_H
+# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
+#endif
+
#include <bits/wordsize.h>
#define __JB_GPR6 0
/* Thread-local storage handling in the ELF dynamic linker. S390 version.
- Copyright (C) 2003 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2005 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
02111-1307 USA. */
#include <stdlib.h>
-#include <sysdeps/generic/libc-tls.c>
+#include <csu/libc-tls.c>
#if USE_TLS
/* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address) \
- ((void *) (address) < (jmpbuf)[0].__regs[7])
+ ((void *) (address) < (void *) (jmpbuf)[0].__regs[7])
#endif /* bits/setjmp.h */
-/* Setup of nscd worker threads. Stub verison.
- Copyright (C) 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#include <nscd.h>
+#include <sys/stat.h>
-void
-setup_thread (struct database_dyn *db)
+/* Create a new FIFO with permission bits MODE. But interpret
+ relative PATH names relative to the directory associated with FD. */
+int
+mkfifoat (fd, file, mode)
+ int fd;
+ const char *file;
+ mode_t mode;
{
- /* Nothing. */
+ dev_t dev = 0;
+ return __xmknodat (_MKNOD_VER, fd, file, mode | S_IFIFO, &dev);
}
DIR *
internal_function
-__alloc_dir (int fd, bool close_fd, struct stat64 *statp)
+__alloc_dir (int fd, bool close_fd, const struct stat64 *statp)
{
if (__builtin_expect (__fcntl (fd, F_SETFD, FD_CLOEXEC), 0) < 0)
goto lose;
sysdep_headers += termio.h
endif
-ifeq ($(subdir),stdio-common)
-# Just disable the auto generation in sysdeps/generic
-inhibit-siglist := yes
-endif
-
ifeq ($(subdir),posix)
sysdep_headers += bits/initspin.h
-/* Copyright (C) 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 1999, 2000, 2003, 2005 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
sig, __ptrvalue (&info));
}
#else
-# include <sysdeps/generic/aio_sigqueue.c>
+# include <rt/aio_sigqueue.c>
#endif
/* Flags for `mremap'. */
#ifdef __USE_GNU
# define MREMAP_MAYMOVE 1
+# define MREMAP_FIXED 2
#endif
/* Advice to `madvise'. */
if (vers == _STAT_VER_KERNEL64 && !__libc_missing_axp_stat64)
{
- if (flags & AT_SYMLINK_NOFOLLOW)
+ if (flag & AT_SYMLINK_NOFOLLOW)
result = INTERNAL_SYSCALL (lstat64, err, 2, file, st);
else
result = INTERNAL_SYSCALL (stat64, err, 2, file, st);
return -1;
}
-hidden_def (__xstat)
-weak_alias (__xstat, _xstat);
-strong_alias (__xstat, __xstat64);
-hidden_ver (__xstat, __xstat64)
+strong_alias (__fxstatat, __fxstatat64);
-/* Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2000, 2002, 2005 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
glob_t *__pglob);
extern void __new_globfree (glob_t *__pglob);
-#include <sysdeps/generic/glob.c>
+#include <posix/glob.c>
#undef glob
#undef globfree
02111-1307 USA. */
#include <sysdep.h>
+#include <sys/cdefs.h>
+#include <stddef.h>
/*
* In order to get the hidden arguments for rt_sigaction set up
-/* Copyright (C) 2001, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2004, 2005 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
#define wordexp(words, pwordexp, flags) \
__new_wordexp (words, pwordexp, flags)
-#include <sysdeps/generic/wordexp.c>
+#include <posix/wordexp.c>
versioned_symbol (libc, __new_wordexp, wordexp, GLIBC_2_2_2);
from ld.so. */
extern void *__curbrk attribute_hidden;
-#include <sbrk.c>
+#include <misc/sbrk.c>
/* Dynamic linker system dependencies for Linux.
- Copyright (C) 1995, 1997, 2001, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1995, 1997, 2001, 2004, 2005 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
#endif
}
-#include <sysdeps/generic/dl-sysdep.c>
+#include <elf/dl-sysdep.c>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
+#include <alloca.h>
+#include <sysdep.h>
/* Change the owner and group of FILE. */
int
-/* Copyright (C) 1997,1998,1999,2000,2001,2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997,1998,1999,2000,2001,2003, 2005 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
#else
/* Use the generic implementation. */
-# include <sysdeps/generic/ftruncate64.c>
+# include <posix/ftruncate64.c>
#endif
#include <fcntl.h>
#include <stddef.h>
#include <stdio.h>
+#include <string.h>
#include <sys/stat.h>
#include <kernel_stat.h>
-/* Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2003, 2005 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
sig, __ptrvalue (&info));
}
#else
-# include <sysdeps/generic/gai_sigqueue.c>
+# include <resolv/gai_sigqueue.c>
#endif
-/* Copyright (C) 1998, 1999, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2003, 2005 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
return INLINE_SYSCALL (getpmsg, 5, fildes, ctlptr, dataptr, NULL, flagsp);
}
#else
-# include <sysdeps/generic/getmsg.c>
+# include <streams/getmsg.c>
#endif
-/* Copyright (C) 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2000, 2002, 2003, 2005 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
weak_alias (__getresgid, getresgid)
#else
-# include <sysdeps/generic/getresgid.c>
+# include <posix/getresgid.c>
#endif
-/* Copyright (C) 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2000, 2002, 2003, 2005 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
weak_alias (__getresuid, getresuid)
#else
-# include <sysdeps/generic/getresuid.c>
+# include <posix/getresuid.c>
#endif
-/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2005 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
#define getrlimit64 __new_getrlimit64
-#include <sysdeps/generic/getrlimit64.c>
+#include <resource/getrlimit64.c>
#undef getrlimit64
#include <shlib-compat.h>
#define COMPILE_GLOB64 1
-#include <sysdeps/generic/glob.c>
+#include <posix/glob.c>
#include "shlib-compat.h"
#define GLOB_ONLY_P 1
-#include <sysdeps/generic/glob.c>
+#include <posix/glob.c>
compat_symbol (libc, __old_glob64, glob64, GLIBC_2_1);
#endif
-/* Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2003, 2005 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
weak_alias (__lchown, lchown)
#else
-# include <sysdeps/generic/lchown.c>
+# include <io/lchown.c>
#endif
-/* Copyright (C) 1998, 1999, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2003, 2005 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
return INLINE_SYSCALL (putpmsg, 5, fildes, ctlptr, dataptr, -1, flags);
}
#else
-# include <sysdeps/generic/putmsg.c>
+# include <streams/putmsg.c>
#endif
-/* Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2001, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Andreas Jaeger <aj@suse.de>, 1999 and
Jakub Jelinek <jakub@redhat.com>, 2000.
#undef process_elf_file
#define process_elf_file process_elf32_file
#define __ELF_NATIVE_CLASS 32
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
#undef __ELF_NATIVE_CLASS
#undef process_elf_file
#define process_elf_file process_elf64_file
#define __ELF_NATIVE_CLASS 64
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
-/* Copyright (C) 1998, 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2000, 2002, 2003, 2004, 2005 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
#else
-#include <sysdeps/generic/setresgid.c>
+#include <posix/setresgid.c>
#endif
-/* Copyright (C) 1998, 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2000, 2002, 2003, 2004, 2005 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
#else
-#include <sysdeps/generic/setresuid.c>
+#include <posix/setresuid.c>
#endif
#endif /* __ASSEMBLER__ */
+
+/* Pointer mangling support. */
+#if defined NOT_IN_libc && defined IS_IN_rtld
+/* We cannot use the thread descriptor because in ld.so we use setjmp
+ earlier than the descriptor is initialized. Using a global variable
+ is too complicated here since we have no PC-relative addressing mode. */
+#else
+# ifdef __ASSEMBLER__
+# define PTR_MANGLE(reg) xorl %gs:POINTER_GUARD, reg
+# define PTR_DEMANGLE(reg) PTR_MANGLE (reg)
+# else
+# define PTR_MANGLE(var) asm ("xorl %%gs:%c2, %0" \
+ : "=r" (var) \
+ : "0" (var), \
+ "i" (offsetof (tcbhead_t, \
+ pointer_guard)))
+# define PTR_DEMANGLE(var) PTR_MANGLE (var)
+# endif
+#endif
+
#endif /* linux/i386/sysdep.h */
-/* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001, 2005 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
#undef process_elf_file
#define process_elf_file process_elf32_file
#define __ELF_NATIVE_CLASS 32
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
#undef __ELF_NATIVE_CLASS
#undef process_elf_file
#define process_elf_file process_elf64_file
#define __ELF_NATIVE_CLASS 64
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
# define __ASSUME_POSIX_TIMERS 1
#endif
+/* Beginning with 2.6.12 the clock and timer supports CPU clocks. */
+#if __LINUX_KERNEL_VERSION >= 0x2060c
+# define __ASSUME_POSIX_CPU_TIMERS 1
+#endif
+
/* The late 2.5 kernels saw a lot of new CLONE_* flags. Summarize
their availability with one define. The changes were made first
for i386 and the have to be done separately for the other archs.
--- /dev/null
+/* Copyright (C) 2005 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <string.h>
+#include <stdio.h>
+#include <sysdep.h>
+#include <unistd.h>
+
+
+/* Make a link to FROM named TO but relative paths in TO and FROM are
+ interpreted relative to FROMFD and TOFD respectively. */
+int
+linkat (fromfd, from, tofd, to)
+ int fromfd;
+ const char *from;
+ int tofd;
+ const char *to;
+{
+ static const char procfd[] = "/proc/self/fd/%d/%s";
+ char *buffrom = NULL;
+
+ if (fromfd != AT_FDCWD && from[0] != '/')
+ {
+ size_t filelen = strlen (from);
+ /* Buffer for the path name we are going to use. It consists of
+ - the string /proc/self/fd/
+ - the file descriptor number
+ - the file name provided.
+ The final NUL is included in the sizeof. A bit of overhead
+ due to the format elements compensates for possible negative
+ numbers. */
+ size_t buflen = sizeof (procfd) + sizeof (int) * 3 + filelen;
+ buffrom = alloca (buflen);
+
+ __snprintf (buffrom, buflen, procfd, fromfd, from);
+ from = buffrom;
+ }
+
+ char *bufto = NULL;
+
+ if (tofd != AT_FDCWD && to[0] != '/')
+ {
+ size_t filelen = strlen (to);
+ /* Buffer for the path name we are going to use. It consists of
+ - the string /proc/self/fd/
+ - the file descriptor number
+ - the file name provided.
+ The final NUL is included in the sizeof. A bit of overhead
+ due to the format elements compensates for possible negative
+ numbers. */
+ size_t buflen = sizeof (procfd) + sizeof (int) * 3 + filelen;
+ bufto = alloca (buflen);
+
+ __snprintf (bufto, buflen, procfd, tofd, to);
+ to = bufto;
+ }
+
+ INTERNAL_SYSCALL_DECL (err);
+
+ int result = INTERNAL_SYSCALL (link, err, 2, from, to);
+
+ if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (result, err), 0))
+ {
+ __atfct_seterrno_2 (INTERNAL_SYSCALL_ERRNO (result, err), tofd, bufto,
+ fromfd, buffrom);
+ result = -1;
+ }
+
+ return result;
+}
/* Definitions for POSIX memory map interface. Linux/MIPS version.
- Copyright (C) 1997, 2000, 2003, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2000, 2003, 2004, 2005 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
/* Flags for `mremap'. */
#ifdef __USE_GNU
# define MREMAP_MAYMOVE 1
+# define MREMAP_FIXED 2
#endif
-/* Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
+/* Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005
Free Software Foundation, Inc.
This file is part of the GNU C Library.
#else
/* Use the generic implementation. */
-# include <sysdeps/generic/ftruncate64.c>
+# include <misc/ftruncate64.c>
#endif
-/* Copyright (C) 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Alexandre Oliva <aoliva@redhat.com>
Based on work ../x86_64/readelflib.c,
#undef process_elf_file
#define process_elf_file process_elf32_file
#define __ELF_NATIVE_CLASS 32
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
#undef __ELF_NATIVE_CLASS
#undef process_elf_file
#define process_elf_file process_elf64_file
#define __ELF_NATIVE_CLASS 64
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
-/* Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003
+/* Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2005
Free Software Foundation, Inc.
This file is part of the GNU C Library.
#else
/* Use the generic implementation. */
-# include <sysdeps/generic/truncate64.c>
+# include <misc/truncate64.c>
#endif
--- /dev/null
+/* Copyright (C) 2005 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <sysdep-cancel.h>
+
+
+/* Create a new directory with permission bits MODE. But interpret
+ relative PATH names relative to the directory associated with FD. */
+int
+mkdirat (fd, file, mode)
+ int fd;
+ const char *file;
+ mode_t mode;
+{
+ char *buf = NULL;
+
+ if (fd != AT_FDCWD && file[0] != '/')
+ {
+ size_t filelen = strlen (file);
+ static const char procfd[] = "/proc/self/fd/%d/%s";
+ /* Buffer for the path name we are going to use. It consists of
+ - the string /proc/self/fd/
+ - the file descriptor number
+ - the file name provided.
+ The final NUL is included in the sizeof. A bit of overhead
+ due to the format elements compensates for possible negative
+ numbers. */
+ size_t buflen = sizeof (procfd) + sizeof (int) * 3 + filelen;
+ buf = alloca (buflen);
+
+ __snprintf (buf, buflen, procfd, fd, file);
+ file = buf;
+ }
+
+ INTERNAL_SYSCALL_DECL (err);
+ int res = INTERNAL_SYSCALL (mkdir, err, 2, file, mode);
+
+ if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (res, err), 0))
+ {
+ __atfct_seterrno (INTERNAL_SYSCALL_ERRNO (res, err), fd, buf);
+ res = -1;
+ }
+
+ return res;
+}
-/* Copyright (C) 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2005 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
}
#else
-# include <sysdeps/generic/mq_close.c>
+# include <rt/mq_close.c>
#endif
-/* Copyright (C) 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2005 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
}
#else
-# include <sysdeps/generic/mq_getattr.c>
+# include <rt/mq_getattr.c>
#endif
-/* Copyright (C) 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2005 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
}
#else
-# include <sysdeps/generic/mq_notify.c>
+# include <rt/mq_notify.c>
#endif
-/* Copyright (C) 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2005 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
}
#else
-# include <sysdeps/generic/mq_open.c>
+# include <rt/mq_open.c>
#endif
-/* Copyright (C) 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2005 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
}
#else
-# include <sysdeps/generic/mq_receive.c>
+# include <rt/mq_receive.c>
#endif
-/* Copyright (C) 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2005 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
}
#else
-# include <sysdeps/generic/mq_send.c>
+# include <rt/mq_send.c>
#endif
-/* Copyright (C) 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2005 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
}
#else
-# include <sysdeps/generic/mq_unlink.c>
+# include <rt/mq_unlink.c>
#endif
/* Setup of nscd worker threads. Linux verison.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
- The GNU C Library is distributed in the hope that it will be useful,
+ This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; 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 General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <string.h>
#include <unistd.h>
#else
/* Use the generic implementation. */
-# include <sysdeps/generic/ftruncate64.c>
+# include <misc/ftruncate64.c>
#endif
#else
/* Use the generic implementation. */
-# include <sysdeps/generic/truncate64.c>
+# include <misc/truncate64.c>
#endif
/* Special checks on libraries for ldconfig. Linux/PowerPC version.
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2005 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
#undef process_elf_file
#define process_elf_file process_elf32_file
#define __ELF_NATIVE_CLASS 32
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
#undef __ELF_NATIVE_CLASS
#undef process_elf_file
#define process_elf_file process_elf64_file
#define __ELF_NATIVE_CLASS 64
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
--- /dev/null
+/* Copyright (C) 2005 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sysdep.h>
+#include <unistd.h>
+
+
+/* Read the contents of the symbolic link PATH relative to FD into no
+ more than LEN bytes of BUF. */
+int
+readlinkat (fd, path, buf, len)
+ int fd;
+ const char *path;
+ char *buf;
+ size_t len;
+{
+ char *pathbuf = NULL;
+
+ if (fd != AT_FDCWD && path[0] != '/')
+ {
+ size_t pathlen = strlen (path);
+ static const char procfd[] = "/proc/self/fd/%d/%s";
+ /* Buffer for the path name we are going to use. It consists of
+ - the string /proc/self/fd/
+ - the file descriptor number
+ - the file name provided.
+ The final NUL is included in the sizeof. A bit of overhead
+ due to the format elements compensates for possible negative
+ numbers. */
+ size_t buflen = sizeof (procfd) + sizeof (int) * 3 + pathlen;
+ pathbuf = __alloca (buflen);
+
+ __snprintf (pathbuf, buflen, procfd, fd, path);
+ path = pathbuf;
+ }
+
+ INTERNAL_SYSCALL_DECL (err);
+
+ int result = INTERNAL_SYSCALL (readlink, err, 3, path, buf, len);
+
+ if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (result, err), 0))
+ {
+ __atfct_seterrno (INTERNAL_SYSCALL_ERRNO (result, err), fd, pathbuf);
+ result = -1;
+ }
+
+ return result;
+}
#include <sysdep.h>
+void
+attribute_hidden
+__atfct_seterrno_2 (int errval, int fd1, const char *buf1, int fd2,
+ const char *buf2)
+{
+ if (errval == ENOTDIR && (buf1 != NULL || buf2 != NULL))
+ {
+ /* This can mean either the file descriptor is invalid or
+ /proc is not mounted. */
+ struct stat64 st;
+
+ if (buf1 != NULL)
+ {
+ if (__fxstat64 (_STAT_VER, fd1, &st) != 0)
+ /* errno is already set correctly. */
+ return;
+
+ /* If /proc is not mounted there is nothing we can do. */
+ if (S_ISDIR (st.st_mode)
+ && (__xstat64 (_STAT_VER, "/proc/self/fd", &st) != 0
+ || !S_ISDIR (st.st_mode)))
+ {
+ errval = ENOSYS;
+ goto out;
+ }
+ }
+
+ if (buf2 != NULL)
+ {
+ if (__fxstat64 (_STAT_VER, fd2, &st) != 0)
+ /* errno is already set correctly. */
+ return;
+
+ /* If /proc is not mounted there is nothing we can do. */
+ if (S_ISDIR (st.st_mode)
+ && (__xstat64 (_STAT_VER, "/proc/self/fd", &st) != 0
+ || !S_ISDIR (st.st_mode)))
+ errval = ENOSYS;
+ }
+ }
+
+ out:
+ __set_errno (errval);
+}
+
+
/* Rename the file OLD relative to OLDFD to NEW relative to NEWFD. */
int
renameat (oldfd, old, newfd, new)
if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (result, err), 0))
{
- int errval = INTERNAL_SYSCALL_ERRNO (result, err);
- if (errval == ENOTDIR && (bufnew != NULL || bufold != NULL))
- {
- /* This can mean either the file descriptor is invalid or
- /proc is not mounted. */
- struct stat64 st;
-
- if (bufnew != NULL)
- {
- if (__fxstat64 (_STAT_VER, newfd, &st) != 0)
- /* errno is already set correctly. */
- return -1;
-
- /* If /proc is not mounted there is nothing we can do. */
- if (S_ISDIR (st.st_mode)
- && (__xstat64 (_STAT_VER, "/proc/self/fd", &st) != 0
- || !S_ISDIR (st.st_mode)))
- {
- errval = ENOSYS;
- goto out;
- }
- }
-
- if (bufold != NULL)
- {
- if (__fxstat64 (_STAT_VER, oldfd, &st) != 0)
- /* errno is already set correctly. */
- return -1;
-
- /* If /proc is not mounted there is nothing we can do. */
- if (S_ISDIR (st.st_mode)
- && (__xstat64 (_STAT_VER, "/proc/self/fd", &st) != 0
- || !S_ISDIR (st.st_mode)))
- errval = ENOSYS;
- }
- }
-
- out:
- __set_errno (errval);
+ __atfct_seterrno_2 (INTERNAL_SYSCALL_ERRNO (result, err), newfd, bufnew,
+ oldfd, bufold);
result = -1;
}
-/* Copyright (C) 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2005 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
#undef process_elf_file
#define process_elf_file process_elf32_file
#define __ELF_NATIVE_CLASS 32
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
#undef __ELF_NATIVE_CLASS
#undef process_elf_file
#define process_elf_file process_elf64_file
#define __ELF_NATIVE_CLASS 64
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
-/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005 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
compat_symbol (libc, __sched_getaffinity_old, sched_getaffinity, GLIBC_2_3_3);
# endif
#else
-# include <sysdeps/generic/sched_getaffinity.c>
+# include <posix/sched_getaffinity.c>
#endif
-/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005 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
compat_symbol (libc, __sched_setaffinity_old, sched_setaffinity, GLIBC_2_3_3);
# endif
#else
-# include <sysdeps/generic/sched_setaffinity.c>
+# include <posix/sched_setaffinity.c>
#endif
#define HAVE_PROC_SELF 1
-#include <sysdeps/generic/segfault.c>
+#include <debug/segfault.c>
-/* Copyright (C) 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 2000, 2003, 2005 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
}
weak_alias (__sigqueue, sigqueue)
#else
-# include <sysdeps/generic/sigqueue.c>
+# include <signal/sigqueue.c>
#endif
/* The sigreturn syscall cannot be explicitly called on Linux, only
implicitly by returning from a signal handler. */
-#include <sysdeps/generic/sigreturn.c>
+#include <signal/sigreturn.c>
/* Emulate sigstack function using sigaltstack.
- Copyright (C) 1998, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1998, 2000, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
link_warning (sigstack, "the `sigstack' function is dangerous. `sigaltstack' should be used instead.")
#else
-# include <sysdeps/generic/sigstack.c>
+# include <signal/sigstack.c>
#endif
-/* Copyright (C) 1997,1998,2000,2002,2003,2004 Free Software Foundation, Inc.
+/* Copyright (C) 1997,1998,2000,2002,2003,2004, 2005 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
libc_hidden_def (__sigtimedwait)
weak_alias (__sigtimedwait, sigtimedwait)
#else
-# include <sysdeps/generic/sigtimedwait.c>
+# include <signal/sigtimedwait.c>
#endif
-/* Copyright (C) 1997,1998,2000,2002,2003,2004 Free Software Foundation, Inc.
+/* Copyright (C) 1997,1998,2000,2002,2003,2004, 2005 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
libc_hidden_def (__sigwaitinfo)
weak_alias (__sigwaitinfo, sigwaitinfo)
#else
-# include <sysdeps/generic/sigwaitinfo.c>
+# include <signal/sigwaitinfo.c>
#endif
strong_alias (__sigwaitinfo, __libc_sigwaitinfo)
-/* Copyright (C) 1999, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2001, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Andreas Jaeger <aj@suse.de>, 1999 and
Jakub Jelinek <jakub@redhat.com>, 1999.
#undef process_elf_file
#define process_elf_file process_elf32_file
#define __ELF_NATIVE_CLASS 32
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
#undef __ELF_NATIVE_CLASS
#undef process_elf_file
#define process_elf_file process_elf64_file
#define __ELF_NATIVE_CLASS 64
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
--- /dev/null
+/* Copyright (C) 2005 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sysdep.h>
+#include <unistd.h>
+
+
+/* Make a symbolic link to FROM named TO relative to TOFD. */
+int
+symlinkat (from, tofd, to)
+ const char *from;
+ int tofd;
+ const char *to;
+{
+ char *buf = NULL;
+
+ if (tofd != AT_FDCWD && to[0] != '/')
+ {
+ size_t tolen = strlen (to);
+ static const char procfd[] = "/proc/self/fd/%d/%s";
+ /* Buffer for the path name we are going to use. It consists of
+ - the string /proc/self/fd/
+ - the file descriptor number
+ - the file name provided.
+ The final NUL is included in the sizeof. A bit of overhead
+ due to the format elements compensates for possible negative
+ numbers. */
+ size_t buflen = sizeof (procfd) + sizeof (int) * 3 + tolen;
+ buf = __alloca (buflen);
+
+ __snprintf (buf, buflen, procfd, tofd, to);
+ to = buf;
+ }
+
+ INTERNAL_SYSCALL_DECL (err);
+
+ int result = INTERNAL_SYSCALL (symlink, err, 2, from, to);
+
+ if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (result, err), 0))
+ {
+ __atfct_seterrno (INTERNAL_SYSCALL_ERRNO (result, err), tofd, buf);
+ result = -1;
+ }
+
+ return result;
+}
* 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.
- *
- * Version: $Id$
*/
#ifndef _SYS_QUOTA_H
# define send_flags 0
#endif
-#include <sysdeps/generic/syslog.c>
+#include <misc/syslog.c>
-/* Copyright (C) 1997-2000, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2000, 2003, 2004, 2005 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
#else
/* Use the generic implementation. */
-# include <sysdeps/generic/truncate64.c>
+# include <misc/truncate64.c>
#endif
-/* Copyright (C) 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Mark Kettenis <kettenis@phys.uva.nl>, 1998.
&& __access (_PATH_WTMP "x", F_OK) != 0) ? _PATH_WTMP : \
file_name))))
-#include <sysdeps/generic/updwtmp.c>
+#include <login/updwtmp.c>
-/* Copyright (C) 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Mark Kettenis <kettenis@phys.uva.nl>, 1998.
&& __access (_PATH_WTMP "x", F_OK) != 0) ? _PATH_WTMP : \
file_name))))
-#include <sysdeps/generic/utmp_file.c>
+#include <login/utmp_file.c>
-#include <sysdeps/generic/vfork.c>
+#include <posix/vfork.c>
#ifdef IS_IN_ldconfig
-#include <sysdeps/i386/dl-procinfo.c>
+# include <sysdeps/i386/dl-procinfo.c>
#else
-#include <sysdeps/generic/dl-procinfo.c>
+# include <sysdeps/generic/dl-procinfo.c>
#endif
#ifdef IS_IN_ldconfig
-#include <sysdeps/unix/sysv/linux/i386/dl-procinfo.h>
+# include <sysdeps/unix/sysv/linux/i386/dl-procinfo.h>
#else
-#include <sysdeps/generic/dl-procinfo.h>
+# include <sysdeps/generic/dl-procinfo.h>
#endif
-/* Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2001, 2002, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Andreas Jaeger <aj@suse.de>, 1999 and
Jakub Jelinek <jakub@redhat.com>, 1999.
#undef process_elf_file
#define process_elf_file process_elf32_file
#define __ELF_NATIVE_CLASS 32
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
#undef __ELF_NATIVE_CLASS
#undef process_elf_file
#define process_elf_file process_elf64_file
#define __ELF_NATIVE_CLASS 64
-#include "sysdeps/generic/readelflib.c"
+#include "elf/readelflib.c"
#endif /* __ASSEMBLER__ */
+
+/* Pointer mangling support. */
+#if defined NOT_IN_libc && defined IS_IN_rtld
+/* We cannot use the thread descriptor because in ld.so we use setjmp
+ earlier than the descriptor is initialized. */
+# ifdef __ASSEMBLER__
+# define PTR_MANGLE(reg) xorq __pointer_chk_guard_local(%rip), reg
+# define PTR_DEMANGLE(reg) PTR_MANGLE (reg)
+# else
+# define PTR_MANGLE(reg) asm ("xorq __pointer_chk_guard_local(%%rip), %0"\
+ : "=r" (reg) : "0" (reg))
+# define PTR_DEMANGLE(reg) PTR_MANGLE (reg)
+# endif
+#else
+# ifdef __ASSEMBLER__
+# define PTR_MANGLE(reg) xorq %fs:POINTER_GUARD, reg
+# define PTR_DEMANGLE(reg) PTR_MANGLE (reg)
+# else
+# define PTR_MANGLE(var) asm ("xorq %%fs:%c2, %0" \
+ : "=r" (var) \
+ : "0" (var), \
+ "i" (offsetof (tcbhead_t, \
+ pointer_guard)))
+# define PTR_DEMANGLE(var) PTR_MANGLE (var)
+# endif
+#endif
+
#endif /* linux/x86_64/sysdep.h */
--- /dev/null
+/* Copyright (C) 2005 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/sysmacros.h>
+
+#include <sysdep.h>
+#include <sys/syscall.h>
+#include <bp-checks.h>
+
+/* Create a device file named PATH relative to FD, with permission and
+ special bits MODE and device number DEV (which can be constructed
+ from major and minor device numbers with the `makedev' macro above). */
+int
+__xmknodat (int vers, int fd, const char *file, mode_t mode, dev_t *dev)
+{
+ if (vers != _MKNOD_VER)
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+
+ char *buf = NULL;
+
+ if (fd != AT_FDCWD && file[0] != '/')
+ {
+ size_t filelen = strlen (file);
+ static const char procfd[] = "/proc/self/fd/%d/%s";
+ /* Buffer for the path name we are going to use. It consists of
+ - the string /proc/self/fd/
+ - the file descriptor number
+ - the file name provided.
+ The final NUL is included in the sizeof. A bit of overhead
+ due to the format elements compensates for possible negative
+ numbers. */
+ size_t buflen = sizeof (procfd) + sizeof (int) * 3 + filelen;
+ buf = alloca (buflen);
+
+ __snprintf (buf, buflen, procfd, fd, file);
+ file = buf;
+ }
+
+ /* We must convert the value to dev_t type used by the kernel. */
+ unsigned long long int k_dev = (*dev) & ((1ULL << 32) - 1);
+ if (k_dev != *dev)
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+
+ return INLINE_SYSCALL (mknod, 3, CHECK_STRING (file), mode,
+ (unsigned int) k_dev);
+}
+
+libc_hidden_def (__xmknodat)
-/* Copyright (C) 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2005 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
#include <inttypes.h>
-#include <sysdeps/generic/llabs.c>
+#include <stdlib/llabs.c>
weak_alias (llabs, imaxabs)
-/* Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2002, 2005 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
#include <inttypes.h>
-#include <sysdeps/generic/lldiv.c>
+#include <stdlib/lldiv.c>
#undef imaxdiv
weak_alias (lldiv, imaxdiv)
#define glob64 __no_glob64_decl
#define globfree64 __no_globfree64_decl
-#include <sysdeps/generic/glob.c>
+#include <posix/glob.c>
#undef glob64
#undef globfree64
weak_alias (glob, glob64)
-/* Copyright (C) 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2005 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
#include <inttypes.h>
-#include <sysdeps/generic/labs.c>
+#include <stdlib/labs.c>
weak_alias (labs, imaxabs)
-/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2005 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
#include <inttypes.h>
-#include <sysdeps/generic/ldiv.c>
+#include <stdlib/ldiv.c>
#undef imaxdiv
weak_alias (ldiv, imaxdiv)
#define strtoll strtoll_XXX
#define strtoq strtoq_XXX
-#include <sysdeps/generic/strtol.c>
+#include <stdlib/strtol.c>
#undef __strtoll_internal
#undef strtoll
#define __strtoll_l __strtoll_l_XXX
#define strtoll_l strtoll_l_XXX
-#include <sysdeps/generic/strtol_l.c>
+#include <stdlib/strtol_l.c>
#undef ____strtoll_l_internal
#undef __strtoll_l
#define strtoull strtoull_XXX
#define strtouq strtouq_XXX
-#include <sysdeps/generic/strtoul.c>
+#include <stdlib/strtoul.c>
#undef __strtoull_internal
#undef strtoull
#define __strtoull_l __strtoull_l_XXX
#define strtoull_l strtoull_l_XXX
-#include <sysdeps/generic/strtoul_l.c>
+#include <stdlib/strtoul_l.c>
#undef ____strtoull_l_internal
#undef __strtoull_l
#define wcstoll wcstoll_XXX
#define wcstoq wcstoq_XXX
-#include <sysdeps/generic/wcstol.c>
+#include <wcsmbs/wcstol.c>
#undef __wcstoll_internal
#undef wcstoll
#define __wcstoll_l ___wcstoll_l_XXX
#define wcstoll_l __wcstoll_l_XX
-#include <sysdeps/generic/wcstol_l.c>
+#include <wcsmbs/wcstol_l.c>
#undef ____wcstoll_l_internal
#undef __wcstoll_l
#define wcstoull wcstoull_XXX
#define wcstouq wcstouq_XXX
-#include <sysdeps/generic/wcstoul.c>
+#include <wcsmbs/wcstoul.c>
#undef __wcstoull_internal
#undef wcstoull
#define __wcstoull_l ___wcstoull_l_XXX
#define wcstoull_l __wcstoull_l_XXX
-#include <sysdeps/generic/wcstoul_l.c>
+#include <wcsmbs/wcstoul_l.c>
#undef ____wcstoull_l_internal
#undef __wcstoull_l
-/* Copyright (C) 2001, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2004, 2005 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
mov %esi, %eax
movq (JB_PC*8)(%rdi),%rdx
movq (JB_RSP*8)(%rdi),%rsp
+#ifdef PTR_DEMANGLE
+ PTR_DEMANGLE (%rdx)
+#endif
jmpq *%rdx
END (BP_SYM (__longjmp))
/* Set up arguments, we only need to set the 2nd arg. */
movl $1, %esi
#ifdef PIC
+ jmp HIDDEN_JUMPTARGET (__sigsetjmp)
#else
jmp BP_SYM (__sigsetjmp)
#endif
/* Print floating point number in hexadecimal notation according to ISO C99.
- Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1997,1998,1999,2000,2001,2005 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
} \
} while (0)
-#include <sysdeps/generic/printf_fphex.c>
+#include <stdio-common/printf_fphex.c>
/* setjmp for x86-64.
- Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2003, 2005 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
leaq 8(%rsp), %rdx /* Save SP as it will be after we return. */
movq %rdx, (JB_RSP*8)(%rdi)
movq (%rsp), %rax /* Save PC we are returning to now. */
+#ifdef PTR_MANGLE
+ PTR_MANGLE (%rax)
+#endif
movq %rax, (JB_PC*8)(%rdi)
+#if defined NOT_IN_libc && defined IS_IN_rtld
+ /* In ld.so we never save the signal mask. */
+ xorl %eax, %eax
+ retq
+#else
/* Make a tail call to __sigjmp_save; it takes the same args. */
-#ifdef PIC
+# ifdef PIC
jmp C_SYMBOL_NAME (BP_SYM (__sigjmp_save))@PLT
-#else
+# else
jmp BP_SYM (__sigjmp_save)
+# endif
#endif
END (BP_SYM (__sigsetjmp))
hidden_def (__sigsetjmp)
modification time of FILE to TVP[1]. If TVP is a null pointer, use
the current time instead. Returns 0 on success, -1 on errors. */
extern int futimesat (int __fd, __const char *__file,
- __const struct timeval __tvp[2]) __THROW __nonnull ((2));
+ __const struct timeval __tvp[2]) __THROW;
#endif
CFLAGS-wcwidth.c = -I../wctype
CFLAGS-wcswidth.c = -I../wctype
-strtox-CFLAGS = -I../include -I../stdlib
+strtox-CFLAGS = -I../include
CFLAGS-wcstol.c = $(strtox-CFLAGS)
CFLAGS-wcstoul.c = $(strtox-CFLAGS)
CFLAGS-wcstoll.c = $(strtox-CFLAGS)
CFLAGS-wcstof_l.c = $(strtox-CFLAGS)
CFLAGS-tst-wchar-h.c = -D_FORTIFY_SOURCE=2
+# We need to find the default version of strtold_l in stdlib.
+CPPFLAGS-wcstold_l.c = -I../stdlib
+
tst-btowc-ENV = LOCPATH=$(common-objpfx)localedata
tst-mbrtowc-ENV = LOCPATH=$(common-objpfx)localedata
tst-wcrtomb-ENV = LOCPATH=$(common-objpfx)localedata
#include <wcsmbsload.h>
#include <limits.h>
+#include <sysdep.h>
+
wint_t
__btowc (c)
/* Get the conversion functions. */
fcts = get_gconv_fcts (_NL_CURRENT_DATA (LC_CTYPE));
+ __gconv_btowc_fct btowc_fct = fcts->towc->__btowc_fct;
if (__builtin_expect (fcts->towc_nsteps == 1, 1)
- && __builtin_expect (fcts->towc->__btowc_fct != NULL, 1))
+ && __builtin_expect (btowc_fct != NULL, 1))
{
/* Use the shortcut function. */
- return DL_CALL_FCT (fcts->towc->__btowc_fct,
- (fcts->towc, (unsigned char) c));
+#ifdef PTR_DEMANGLE
+ if (fcts->towc->__shlib_handle != NULL)
+ PTR_DEMANGLE (btowc_fct);
+#endif
+ return DL_CALL_FCT (btowc_fct, (fcts->towc, (unsigned char) c));
}
else
{
/* Create the input string. */
inbuf[0] = c;
- status = DL_CALL_FCT (fcts->towc->__fct,
- (fcts->towc, &data, &inptr, inptr + 1,
- NULL, &dummy, 0, 1));
+ __gconv_fct fct = fcts->towc->__fct;
+#ifdef PTR_DEMANGLE
+ if (fcts->towc->__shlib_handle != NULL)
+ PTR_DEMANGLE (fct);
+#endif
+ status = DL_CALL_FCT (fct, (fcts->towc, &data, &inptr, inptr + 1,
+ NULL, &dummy, 0, 1));
if (status != __GCONV_OK && status != __GCONV_FULL_OUTPUT
&& status != __GCONV_EMPTY_INPUT)
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <assert.h>
#include <dlfcn.h>
#include <errno.h>
#include <gconv.h>
#include <wchar.h>
#include <wcsmbsload.h>
-#include <assert.h>
+#include <sysdep.h>
#ifndef EILSEQ
# define EILSEQ EINVAL
endbuf = inbuf + n;
if (__builtin_expect (endbuf < inbuf, 0))
endbuf = (const unsigned char *) ~(uintptr_t) 0;
- status = DL_CALL_FCT (fcts->towc->__fct,
- (fcts->towc, &data, &inbuf, endbuf,
- NULL, &dummy, 0, 1));
+ __gconv_fct fct = fcts->towc->__fct;
+#ifdef PTR_DEMANGLE
+ if (fcts->towc->__shlib_handle != NULL)
+ PTR_DEMANGLE (fct);
+#endif
+ status = DL_CALL_FCT (fct, (fcts->towc, &data, &inbuf, endbuf,
+ NULL, &dummy, 0, 1));
/* There must not be any problems with the conversion but illegal input
characters. The output buffer must be large enough, otherwise the
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <assert.h>
#include <dlfcn.h>
#include <errno.h>
#include <gconv.h>
#include <wchar.h>
#include <wcsmbsload.h>
-#include <assert.h>
+#include <sysdep.h>
#ifndef EILSEQ
# define EILSEQ EINVAL
/* Get the structure with the function pointers. */
towc = fcts->towc;
+ __gconv_fct fct = towc->__fct;
+#ifdef PTR_DEMANGLE
+ if (towc->__shlib_handle != NULL)
+ PTR_DEMANGLE (fct);
+#endif
/* We have to handle DST == NULL special. */
if (dst == NULL)
{
data.__outbuf = (unsigned char *) buf;
- status = DL_CALL_FCT (towc->__fct,
- (towc, &data, &inbuf, srcend, NULL,
- &dummy, 0, 1));
+ status = DL_CALL_FCT (fct, (towc, &data, &inbuf, srcend, NULL,
+ &dummy, 0, 1));
result += (wchar_t *) data.__outbuf - buf;
}
data.__outbuf = (unsigned char *) dst;
data.__outbufend = data.__outbuf + len * sizeof (wchar_t);
- status = DL_CALL_FCT (towc->__fct,
+ status = DL_CALL_FCT (fct,
(towc, &data, (const unsigned char **) src, srcend,
NULL, &dummy, 0, 1));
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <assert.h>
#include <ctype.h>
#include <string.h>
#include "wcsmbsload.h"
#include <wchar.h>
#include <wcsmbsload.h>
-#include <assert.h>
+#include <sysdep.h>
#ifndef EILSEQ
# define EILSEQ EINVAL
/* Get the structure with the function pointers. */
towc = fcts->towc;
+ __gconv_fct fct = towc->__fct;
+#ifdef PTR_DEMANGLE
+ if (towc->__shlib_handle != NULL)
+ PTR_DEMANGLE (fct);
+#endif
/* We have to handle DST == NULL special. */
if (dst == NULL)
{
data.__outbuf = (unsigned char *) buf;
- status = DL_CALL_FCT (towc->__fct,
- (towc, &data, &inbuf, srcend, NULL,
- &non_reversible, 0, 1));
+ status = DL_CALL_FCT (fct, (towc, &data, &inbuf, srcend, NULL,
+ &non_reversible, 0, 1));
result += (wchar_t *) data.__outbuf - buf;
}
worst case we need one input byte for one output wchar_t. */
srcend = srcp + __strnlen ((const char *) srcp, len) + 1;
- status = DL_CALL_FCT (towc->__fct,
- (towc, &data, &srcp, srcend, NULL,
- &non_reversible, 0, 1));
+ status = DL_CALL_FCT (fct, (towc, &data, &srcp, srcend, NULL,
+ &non_reversible, 0, 1));
if ((status != __GCONV_EMPTY_INPUT
&& status != __GCONV_INCOMPLETE_INPUT)
/* Not all input read. */
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <assert.h>
#include <dlfcn.h>
#include <errno.h>
#include <gconv.h>
#include <wchar.h>
#include <wcsmbsload.h>
-#include <assert.h>
+#include <sysdep.h>
#ifndef EILSEQ
# define EILSEQ EINVAL
/* Get the conversion functions. */
fcts = get_gconv_fcts (_NL_CURRENT_DATA (LC_CTYPE));
+ __gconv_fct fct = fcts->tomb->__fct;
+#ifdef PTR_DEMANGLE
+ if (fcts->tomb->__shlib_handle != NULL)
+ PTR_DEMANGLE (fct);
+#endif
/* If WC is the NUL character we write into the output buffer the byte
sequence necessary for PS to get into the initial state, followed
by a NUL byte. */
if (wc == L'\0')
{
- status = DL_CALL_FCT (fcts->tomb->__fct,
- (fcts->tomb, &data, NULL, NULL,
- NULL, &dummy, 1, 1));
+ status = DL_CALL_FCT (fct, (fcts->tomb, &data, NULL, NULL,
+ NULL, &dummy, 1, 1));
if (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT)
*data.__outbuf++ = '\0';
/* Do a normal conversion. */
const unsigned char *inbuf = (const unsigned char *) &wc;
- status = DL_CALL_FCT (fcts->tomb->__fct,
+ status = DL_CALL_FCT (fct,
(fcts->tomb, &data, &inbuf,
inbuf + sizeof (wchar_t), NULL, &dummy, 0, 1));
}
-/* Copyright (C) 1998,1999,2000,2001,2002,2004 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2002,2004,2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
/* These are the descriptions for the default conversion functions. */
-static struct __gconv_step to_wc =
+static const struct __gconv_step to_wc =
{
.__shlib_handle = NULL,
.__modname = NULL,
.__data = NULL
};
-static struct __gconv_step to_mb =
+static const struct __gconv_step to_mb =
{
.__shlib_handle = NULL,
.__modname = NULL,
/* For the default locale we only have to handle ANSI_X3.4-1968. */
const struct gconv_fcts __wcsmbs_gconv_fcts_c =
{
- .towc = &to_wc,
+ .towc = (struct __gconv_step *) &to_wc,
.towc_nsteps = 1,
- .tomb = &to_mb,
+ .tomb = (struct __gconv_step *) &to_mb,
.tomb_nsteps = 1
};
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <assert.h>
#include <dlfcn.h>
#include <errno.h>
#include <gconv.h>
#include <wchar.h>
#include <wcsmbsload.h>
-#include <assert.h>
+#include <sysdep.h>
#ifndef EILSEQ
# define EILSEQ EINVAL
/* Get the structure with the function pointers. */
tomb = fcts->tomb;
+ __gconv_fct fct = tomb->__fct;
+#ifdef PTR_DEMANGLE
+ if (tomb->__shlib_handle != NULL)
+ PTR_DEMANGLE (fct);
+#endif
/* We have to handle DST == NULL special. */
if (dst == NULL)
{
data.__outbuf = buf;
- status = DL_CALL_FCT (tomb->__fct,
- (tomb, &data, &inbuf,
- (const unsigned char *) srcend, NULL,
- &dummy, 0, 1));
+ status = DL_CALL_FCT (fct, (tomb, &data, &inbuf,
+ (const unsigned char *) srcend, NULL,
+ &dummy, 0, 1));
/* Count the number of bytes. */
result += data.__outbuf - buf;
data.__outbuf = (unsigned char *) dst;
data.__outbufend = (unsigned char *) dst + len;
- status = DL_CALL_FCT (tomb->__fct,
- (tomb, &data, (const unsigned char **) src,
- (const unsigned char *) srcend, NULL,
- &dummy, 0, 1));
+ status = DL_CALL_FCT (fct, (tomb, &data, (const unsigned char **) src,
+ (const unsigned char *) srcend, NULL,
+ &dummy, 0, 1));
/* Count the number of bytes. */
result = data.__outbuf - (unsigned char *) dst;
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <assert.h>
#include <dlfcn.h>
#include <errno.h>
#include <stdlib.h>
#include <wchar.h>
#include <wcsmbsload.h>
-#include <assert.h>
+#include <sysdep.h>
#ifndef EILSEQ
# define EILSEQ EINVAL
/* Get the structure with the function pointers. */
tomb = fcts->tomb;
+ __gconv_fct fct = tomb->__fct;
+#ifdef PTR_DEMANGLE
+ if (tomb->__shlib_handle != NULL)
+ PTR_DEMANGLE (fct);
+#endif
/* We have to handle DST == NULL special. */
if (dst == NULL)
{
data.__outbuf = buf;
- status = DL_CALL_FCT (tomb->__fct,
- (tomb, &data, &inbuf,
- (const unsigned char *) srcend, NULL,
- &dummy, 0, 1));
+ status = DL_CALL_FCT (fct, (tomb, &data, &inbuf,
+ (const unsigned char *) srcend, NULL,
+ &dummy, 0, 1));
/* Count the number of bytes. */
result += data.__outbuf - buf;
data.__outbuf = (unsigned char *) dst;
data.__outbufend = (unsigned char *) dst + len;
- status = DL_CALL_FCT (tomb->__fct,
- (tomb, &data, (const unsigned char **) src,
- (const unsigned char *) srcend, NULL,
- &dummy, 0, 1));
+ status = DL_CALL_FCT (fct, (tomb, &data, (const unsigned char **) src,
+ (const unsigned char *) srcend, NULL,
+ &dummy, 0, 1));
/* Count the number of bytes. */
result = data.__outbuf - (unsigned char *) dst;
/* Function to parse a `long int' from text.
- Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
#define USE_WIDE_CHAR 1
-#include <sysdeps/generic/strtol.c>
+#include <stdlib/strtol.c>
/* Convert string representing a number to integer value, using given locale.
- Copyright (C) 1997, 2002, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2002, 2004, 2005 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
extern long int ____wcstol_l_internal (const wchar_t *, wchar_t **, int, int,
__locale_t);
-#include "strtol_l.c"
+#include <stdlib/strtol_l.c>
#include <wchar.h>
#include <wcsmbsload.h>
+#include <sysdep.h>
+
int
wctob (c)
inbuf[0] = c;
const unsigned char *argptr = (const unsigned char *) inptr;
- status = DL_CALL_FCT (fcts->tomb->__fct,
+ __gconv_fct fct = fcts->tomb->__fct;
+#ifdef PTR_DEMANGLE
+ if (fcts->tomb->__shlib_handle != NULL)
+ PTR_DEMANGLE (fct);
+#endif
+ status = DL_CALL_FCT (fct,
(fcts->tomb, &data, &argptr,
argptr + sizeof (inbuf[0]), NULL, &dummy, 0, 1));