summaryrefslogtreecommitdiff
path: root/lib/libc
diff options
context:
space:
mode:
authorTodd C. Miller <millert@cvs.openbsd.org>1999-10-03 20:39:54 +0000
committerTodd C. Miller <millert@cvs.openbsd.org>1999-10-03 20:39:54 +0000
commitcbf38e0d3db439168a6470cae5f39e7561a46f5a (patch)
tree0af33f6ec432a243cf3251e0b259f4d263c5d165 /lib/libc
parent784ed65222c4f8e8390c3103a8a02d5134e70d2a (diff)
put back FTS_CHDIRROOT until next library major number crank
Diffstat (limited to 'lib/libc')
-rw-r--r--lib/libc/gen/fts.c30
1 files changed, 22 insertions, 8 deletions
diff --git a/lib/libc/gen/fts.c b/lib/libc/gen/fts.c
index 26d67fff3f9..790d665a64f 100644
--- a/lib/libc/gen/fts.c
+++ b/lib/libc/gen/fts.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: fts.c,v 1.22 1999/10/03 19:22:22 millert Exp $ */
+/* $OpenBSD: fts.c,v 1.23 1999/10/03 20:39:53 millert Exp $ */
/*-
* Copyright (c) 1990, 1993, 1994
@@ -37,7 +37,7 @@
#if 0
static char sccsid[] = "@(#)fts.c 8.6 (Berkeley) 8/14/94";
#else
-static char rcsid[] = "$OpenBSD: fts.c,v 1.22 1999/10/03 19:22:22 millert Exp $";
+static char rcsid[] = "$OpenBSD: fts.c,v 1.23 1999/10/03 20:39:53 millert Exp $";
#endif
#endif /* LIBC_SCCS and not lint */
@@ -373,9 +373,16 @@ next: tmp = p;
* the root of the tree), and load the paths for the next root.
*/
if (p->fts_level == FTS_ROOTLEVEL) {
- if (FCHDIR(sp, sp->fts_rfd)) {
- SET(FTS_STOP);
- return (NULL);
+ if ((sp->fts_options & FTS_CHDIRROOT)) {
+ if (chdir(p->fts_accpath)) {
+ SET(FTS_STOP);
+ return (NULL);
+ }
+ } else {
+ if (FCHDIR(sp, sp->fts_rfd)) {
+ SET(FTS_STOP);
+ return (NULL);
+ }
}
fts_load(sp, p);
return (sp->fts_cur = p);
@@ -430,9 +437,16 @@ name: t = sp->fts_path + NAPPEND(p->fts_parent);
* one directory.
*/
if (p->fts_level == FTS_ROOTLEVEL) {
- if (FCHDIR(sp, sp->fts_rfd)) {
- SET(FTS_STOP);
- return (NULL);
+ if ((sp->fts_options & FTS_CHDIRROOT)) {
+ if (chdir(p->fts_accpath)) {
+ SET(FTS_STOP);
+ return (NULL);
+ }
+ } else {
+ if (FCHDIR(sp, sp->fts_rfd)) {
+ SET(FTS_STOP);
+ return (NULL);
+ }
}
} else if (p->fts_flags & FTS_SYMFOLLOW) {
if (FCHDIR(sp, p->fts_symfd)) {