Mercurial > hg > octave-lojdl > gnulib-hg
changeset 15661:0aac3aa8d8fd
getcwd: don't fail in a deep directory on a system without openat
Before this change, getcwd would fail when called from a directory
of depth PATH_MAX / 3 or greater. That was due to the fact that
the non-openat implementation used "..", "../..", "../../..", etc.
to access ancestor directories. With too many, that string would
be longer than PATH_MAX.
* lib/getcwd.c (HAVE_OPENAT_SUPPORT): Define also when we are
using gnulib's openat replacement.
* m4/openat.m4: Set GNULIB_OPENAT, so getcwd.c knows when
we're using the replacement function.
author | Jim Meyering <meyering@redhat.com> |
---|---|
date | Mon, 19 Sep 2011 09:48:35 +0200 |
parents | d12c46223fa1 |
children | 410c1c383d50 |
files | ChangeLog lib/getcwd.c m4/openat.m4 |
diffstat | 3 files changed, 20 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2011-09-19 Jim Meyering <meyering@redhat.com> + + getcwd: don't fail in a deep directory on a system without openat + Before this change, getcwd would fail when called from a directory + of depth PATH_MAX / 3 or greater. That was due to the fact that + the non-openat implementation used "..", "../..", "../../..", etc. + to access ancestor directories. With too many, that string would + be longer than PATH_MAX. + * lib/getcwd.c (HAVE_OPENAT_SUPPORT): Define also when we are + using gnulib's openat replacement. + * m4/openat.m4: Set GNULIB_OPENAT, so getcwd.c knows when + we're using the replacement function. + 2011-09-14 Martin von Gagern <Martin.vGagern@gmx.net> maint.mk: avoid warnings from perl about missing files
--- a/lib/getcwd.c +++ b/lib/getcwd.c @@ -27,9 +27,10 @@ #include <fcntl.h> /* For AT_FDCWD on Solaris 9. */ -/* If this host provides the openat function, then enable - code below to make getcwd more efficient and robust. */ -#ifdef HAVE_OPENAT +/* If this host provides the openat function or if we're using the + gnulib replacement function, then enable code below to make getcwd + more efficient and robust. */ +#if defined HAVE_OPENAT || defined GNULIB_OPENAT # define HAVE_OPENAT_SUPPORT 1 #else # define HAVE_OPENAT_SUPPORT 0