diff options
author | Todd C. Miller <millert@cvs.openbsd.org> | 1999-10-03 20:39:54 +0000 |
---|---|---|
committer | Todd C. Miller <millert@cvs.openbsd.org> | 1999-10-03 20:39:54 +0000 |
commit | cbf38e0d3db439168a6470cae5f39e7561a46f5a (patch) | |
tree | 0af33f6ec432a243cf3251e0b259f4d263c5d165 /lib/libc | |
parent | 784ed65222c4f8e8390c3103a8a02d5134e70d2a (diff) |
put back FTS_CHDIRROOT until next library major number crank
Diffstat (limited to 'lib/libc')
-rw-r--r-- | lib/libc/gen/fts.c | 30 |
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)) { |