summaryrefslogtreecommitdiff
path: root/sysdeps/posix/getcwd.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1996-12-04 01:41:39 +0000
committerUlrich Drepper <drepper@redhat.com>1996-12-04 01:41:39 +0000
commit4770745624b7f7f25623f1f10d46a4c4d6aec25c (patch)
tree0b278b62f5486313ca69360800755575487fb0f8 /sysdeps/posix/getcwd.c
parentd88554f033adab5d22b9860fc36bc3cb37f39b02 (diff)
update from main archive 961203
Tue Dec 3 08:38:15 1996 Richard Henderson <rth@tamu.edu> * sysdeps/unix/alpha/sysdep.S: Remove definition of __errno_location. Reformat copyright. * elf/rtld.c (_dl_start): Don't dereference the value returned by elf_machine_got to get _DYNAMIC, instead call new function elf_machine_dynamic. * sysdeps/alpha/dl-machine.h: Permute elf_machine_got to elf_machine_dynamic. Reformat copyright. * sysdeps/i386/dl-machine.h: Likewise. * sysdeps/m68k/dl-machine.h: Likewise. * sysdeps/mips/dl-machine.h: Likewise. * sysdeps/sparc/dl-machine.h: Likewise. * sysdeps/stub/dl-machine.h: Likewise. Tue Oct 15 23:46:00 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * MakeTAGS (sysdep_dirs): Include add-on sysdep directories. Tue Dec 3 02:06:18 1996 Ulrich Drepper <drepper@cygnus.com> * Makerules ($(libdir)/libc.so): Make first line of generated link script contain `/* GNU ld script'. This will be used in ldconfig to check for linker scripts. * sysdeps/mach/hurd/libc-ldscript: Likewise. * sysdeps/mach/hurd/libc_p-ldscript: Likewise. * stdlib/getsubopt.c: Update copyright. Correct typo in comment.
Diffstat (limited to 'sysdeps/posix/getcwd.c')
-rw-r--r--sysdeps/posix/getcwd.c41
1 files changed, 27 insertions, 14 deletions
diff --git a/sysdeps/posix/getcwd.c b/sysdeps/posix/getcwd.c
index 5f3f628fb5..92196ac50a 100644
--- a/sysdeps/posix/getcwd.c
+++ b/sysdeps/posix/getcwd.c
@@ -1,20 +1,20 @@
/* Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+ This file is part of the GNU C Library.
-The GNU C Library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
-The GNU C Library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-Library General Public License for more details.
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA. */
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
/* Wants:
AC_STDC_HEADERS
@@ -187,6 +187,10 @@ extern char *alloca ();
#define __getcwd getcwd
#endif
+#if defined HAVE_READDIR_R && !defined _LIBC
+#define __readdir_r readdir_r
+#endif
+
/* Get the pathname of the current working directory, and put it in SIZE
bytes of BUF. Returns NULL if the directory couldn't be determined or
SIZE was too small. If successful, returns BUF. In GNU, if BUF is
@@ -250,6 +254,9 @@ __getcwd (buf, size)
{
register DIR *dirstream;
register struct dirent *d;
+#if defined HAVE_READDIR_R || defined _LIBC
+ struct dirent dirbuf;
+#endif
dev_t dotdev;
ino_t dotino;
char mount_point;
@@ -292,7 +299,13 @@ __getcwd (buf, size)
dirstream = __opendir (dotp);
if (dirstream == NULL)
goto lose;
- while ((d = __readdir (dirstream)) != NULL)
+ while (
+#if defined HAVE_READDIR_R || defined _LIBC
+ __readdir_r (dirstream, &dirbuf, &d) >= 0
+#else
+ (d = __readdir (dirstream)) != NULL
+#endif
+ )
{
if (d->d_name[0] == '.' &&
(d->d_name[1] == '\0' ||