From 74f7e7c0bd84e02763d0abd213990e5bf2466e47 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sun, 18 Oct 1998 15:35:09 +0000 Subject: Update. * sysdeps/posix/getcwd.c (__getcwd): Don't stop processing directory entries when a lstat call fails. Patch by Colin Plumb . --- sysdeps/posix/getcwd.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'sysdeps') diff --git a/sysdeps/posix/getcwd.c b/sysdeps/posix/getcwd.c index 7de5fd3a75..df48804f7a 100644 --- a/sysdeps/posix/getcwd.c +++ b/sysdeps/posix/getcwd.c @@ -333,14 +333,13 @@ __getcwd (buf, size) name[dotlist + dotsize - dotp] = '/'; strcpy (&name[dotlist + dotsize - dotp + 1], d->d_name); #endif - if (__lstat (name, &st) < 0) - { - int save = errno; - (void) __closedir (dirstream); - __set_errno (save); - goto lose; - } - if (st.st_dev == thisdev && st.st_ino == thisino) + /* We don't fail here if we cannot stat() a directory entry. + This can happen when (network) filesystems fail. If this + entry is in fact the one we are looking for we will find + out soon as we reach the end of the directory without + having found anything. */ + if (__lstat (name, &st) >= 0 + && st.st_dev == thisdev && st.st_ino == thisino) break; } } -- cgit 1.4.1