The getcwd syscall (so far?) can only handle path up to one page
in size. There is no limit about directory hierarchy depth, though,
and the POSIX getcwd is supposed to handle this. In that case fall
back to the generic getcwd.
Additionally, optimize the generic getcwd to use openat when possible
to change the asymptotic performance from O(N^2) to O(n).
available, avoid stat call, use fcntl result to determine whether
descriptor is for a directory or not.
* dirent/Makefile (tests): Add tst-fdopendir2.
* dirent/tst-fdopendir2.c: New file.
* dirent/Versions: Export fdopendir for GLIBC_2.4.
* dirent/Makefile (routines): Add fdopendir.
(tests): Add tst-fdopendir.
* dirent/tst-fdopendir.c: New file.
* include/dirent.h: Declare __alloc_dir.
* sysdeps/generic/fdopendir.c: New file.
* sysdeps/unix/fdopendir.c: New file.
* sysdeps/unix/opendir.c: Split off back part of opendir into new
function __alloc_dir.
2003-09-17 Jakub Jelinek <jakub@redhat.com>
* dirent/scandir.c: Include bits/libc-lock.h.
(struct scandir_cancel_struct): New type.
(cancel_handler): New function.
(SCANDIR): Add __libc_cleanup_{push,pop}, save state into
scandir_cancel_struct.
2003-09-14 Ulrich Drepper <drepper@redhat.com>
* dirent/dirent.h: Remove __THROW from scandir.
2003-09-14 Philip Blundell <philb@gnu.org>
* sysdeps/unix/sysv/linux/arm/mmap.S: Use sys_mmap2 if it's known
to be available.
* sysdeps/unix/sysv/linux/arm/mmap64.S: Optimise code a little.
* sysdeps/arm/memset.S: Rewrite.
2002-12-05 Ulrich Drepper <drepper@redhat.com>
* dirent/bug-readdir1.c (main): Don't call closedir, just close on
the file descriptor. This is testing what the bug report was about.
2002-10-12 H.J. Lu <hjl@gnu.org>
* sunrpc/thrsvc.c (PROCQUIT): New.
(struct rpc_arg): New.
(dispatch): Call exit (0) if request->rq_proc == PROCQUIT.
(test_one_call): Take struct rpc_arg * instead of CLIENT *c.
(thread_wrapper): Modified for struct rpc_arg * and call PROCQUIT.
(main): Modified for struct rpc_arg *.
2002-10-14 Ulrich Drepper <drepper@redhat.com>
* dirent/scandir.c: Rearrange code a bit to reduce binary size.
2002-10-14 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/x86_64/sysdep.h: Include tls.h.
(SYSCALL_ERROR_HANDLER): Use RTLD_PRIVATE_ERRNO sequence
in ld.so even if __thread is supported.
2002-10-13 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/arm/profil-counter.h (profil_counter):
Add hack to prevent the compiler from clobbering the signal context.
* sysdeps/unix/sysv/linux/sh/profil-counter.h (profil_counter):
Likewise.
* sysdeps/unix/sysv/linux/x86_64/profil-counter.h (profil_counter):
Likewise.
2001-08-07 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/seekdir.c (seekdir): Set dirp->filepos.
* dirent/tst-seekdir.c (main): Check whether telldir right after
seekdir returns 2nd argument given to seekdir.
2001-08-07 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
* dlfcn/Makefile (tststatic-ENV): Add $(common-objpfx) to
LD_LIBRARY_PATH.
2001-07-06 Paul Eggert <eggert@twinsun.com>
* manual/argp.texi: Remove ignored LGPL copyright notice; it's
not appropriate for documentation anyway.
* manual/libc-texinfo.sh: "Library General Public License" ->
"Lesser General Public License".
2001-07-06 Andreas Jaeger <aj@suse.de>
* All files under GPL/LGPL version 2: Place under LGPL version
2.1.
2000-08-12 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_FCNTL64):
Define for 2.4.1 on x86.
* sysdeps/unix/sysv/linux/i386/fcntl.c: New file.
* sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Fill in correct values
for F_GETLK64, F_SETLK64, and F_SETLKW64.
* dirent/dirent.h: Define DT_WHT.
* sysdeps/unix/sysv/linux/arm/alphasort64.c: New file.
* sysdeps/unix/sysv/linux/arm/getdents64.c: New file.
* sysdeps/unix/sysv/linux/arm/readdir64.c: New file.
* sysdeps/unix/sysv/linux/arm/readdir64_r.c: New file.
* sysdeps/unix/sysv/linux/arm/scandir64.c: New file.
* sysdeps/unix/sysv/linux/arm/versionsort64.c: New file.
2000-07-12 Bruno Haible <haible@clisp.cons.org>
* iconv/gconv_open.c (__gconv_open): Merge duplicated code.
2000-07-12 Bruno Haible <haible@clisp.cons.org>
* iconv/gconv_builtin.c (__gconv_get_builtin_trans): Initialize
__modname.
2000-07-12 Bruno Haible <haible@clisp.cons.org>
* iconv/gconv_open.c (__gconv_open): Initialize
result->__steps[cnt].__data.
2000-07-12 Mark Kettenis <kettenis@gnu.org>
* nss/getent.c (services_keys): Pass port number in network byte
order in call to getservbyport.
2000-07-11 Andreas Jaeger <aj@suse.de>
* stdlib/Makefile (test-canon-ARGS): Fix for building in the
source dir.
* intl/Makefile (do-gettext-test): Likewise.
* dirent/Makefile (opendir-tst1-ARGS): Likewise.
2000-07-11 Andreas Schwab <schwab@suse.de>
* Makeconfig (run-program-prefix): New rule.
(built-program-cmd): Use run-program-prefix.
2000-05-17 Jakub Jelinek <jakub@redhat.com>
* sysdeps/generic/dl-cache.h (_DL_CACHE_DEFAULT_ID): Only define if
not yet defined.
(_dl_cache_check_flags): Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/dl-cache.h: include_next
dl-cache.h.
2000-05-17 Andreas Jaeger <aj@suse.de>
* manual/creature.texi (Feature Test Macros): Remove paragraph
since the description is wrong.
Closes PR libc/1691, reported by Geoff Clare <gwc@unisoft.com>.
2000-05-17 Andreas Jaeger <aj@suse.de>
* time/test_time.args: Removed.
* time/Makefile (test_time-ARGS): Added contents here instead.
* posix/tstgetopt.args: Removed.
* posix/Makefile (tstgetopt-ARGS): Added contents here instead.
* Rules: Allow arguments for test files to be specified in
Makefile with testname-ARGS; remove rules with .args in it.
* dirent/Makefile (opendir-tst1-ARGS): Use this for opendir-tst1,
remove old bogus rule for opendir-tst1.args.
* stdlib/test-canon.c: Rewrite to use test-skeleton.c.
* stdlib/Makefile (test-canon-ARGS): New, supply argument to chdir
into objdir. This allows a readonly sourcetree.
Reported by lrgallardo@yahoo.com, closes PR libc/1421.
2000-05-16 Andreas Jaeger <aj@suse.de>,
David Huggins-Daines <dhd@linuxcare.com>
* sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Set
cache_data in case of only new cache format correctly.
* sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Align struct
cache_file_new.
* sysdeps/generic/dl-cache.h (ALIGN_CACHE): New macro to align
struct cache_file_new.
* elf/cache.c (save_cache): Fix str_offset if only new cache is
present.
* elf/cache.c (save_cache): Align struct new_file_cache.
(print_cache): Likewise.
2000-04-21 Ulrich Drepper <drepper@redhat.com>
* iconv/iconv.c (iconv): Add __builtin_expect where useful.
* iconv/iconv_close.c (iconv_close): Likewise.
* iconv/iconv_open.c (iconv_open): Likewise.
* grp/putgrent.c (putgrent): Unlock steam if fprintf failed. Add
__builtin_expect where useful.
* grp/initgroups.c (initgroups): Test for result of memory
allocation and punt if it fails.
* dirent/scandir.c (scandir): Add __builtin_expect where useful.
* grp/fgetgrent.c (fgetfrent): Likewise.
* grp/fgetgrent_r.c (__fgetgrent_r): Likewise.
* dirent/Makefile (routines): Add getdents64.
* sysdeps/unix/sysv/linux/Makefile [dirent] (sysdep_routines):
Remove getdents64.
* dirent/dirent.h: Redirect getdirentries to getdirentries64 if
compiled with _FILE_OFFSET_BITS=64.
* sysdeps/generic/getdents64.c: New file.
* sysdeps/unix/sysv/linux/getdirentries.c: Also redefine off_t and
__lseek for getdirentries64 definition.
* sysdeps/unix/sysv/linux/llseek.c: Make __lseek64 a strong alias.
* sysdeps/unix/sysv/linux/sys/sendfile.h: Don't allow use with
_FILE_OFFSET_BITS=64.