diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2014-12-11 18:20:07 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2014-12-11 18:20:07 +0000 |
commit | 611b6933377674acffb57fa1dd4d6efb6808765d (patch) | |
tree | 3a1175250da652cb571e6cd8adf453d80e806016 /compat_fts.c | |
parent | 1620d3f9192c328b16d8aa31ee0f08d8b115c420 (diff) | |
download | mandoc-611b6933377674acffb57fa1dd4d6efb6808765d.tar.gz |
Make this work on illumos:
* define MAX()
* ignore O_DIRECTORY if it isn't defined
* garbage collect two unused variables
Issues reported and fix tested by wiz@NetBSD.
Diffstat (limited to 'compat_fts.c')
-rw-r--r-- | compat_fts.c | 38 |
1 files changed, 8 insertions, 30 deletions
diff --git a/compat_fts.c b/compat_fts.c index 31c5709f..1d7b62a8 100644 --- a/compat_fts.c +++ b/compat_fts.c @@ -62,6 +62,10 @@ static unsigned short fts_stat(FTS *, FTSENT *); static int fts_safe_changedir(FTS *, FTSENT *, int, const char *); #define ISDOT(a) (a[0] == '.' && (!a[1] || (a[1] == '.' && !a[2]))) +#define MAX(a,b) (((a)>(b))?(a):(b)) +#ifndef O_DIRECTORY +#define O_DIRECTORY 0 +#endif #define CLR(opt) (sp->fts_options &= ~(opt)) #define ISSET(opt) (sp->fts_options & (opt)) @@ -407,7 +411,7 @@ fts_build(FTS *sp) DIR *dirp; void *oldaddr; size_t dlen, len, maxlen; - int nitems, cderrno, descend, level, nlinks, nostat, doadjust; + int nitems, cderrno, descend, level, doadjust; int saved_errno; char *cp; @@ -425,14 +429,6 @@ fts_build(FTS *sp) } /* - * Nlinks is the number of possible entries of type directory in the - * directory if we're cheating on stat calls, 0 if we're not doing - * any stat calls at all, -1 if we're doing stats on everything. - */ - nlinks = -1; - nostat = 0; - - /* * If we're going to need to stat anything or we want to descend * and stay in the directory, chdir. If this fails we keep going, * but set a flag so we don't chdir after the post-order visit. @@ -449,8 +445,7 @@ fts_build(FTS *sp) */ cderrno = 0; if (fts_safe_changedir(sp, cur, dirfd(dirp), NULL)) { - if (nlinks) - cur->fts_errno = errno; + cur->fts_errno = errno; cur->fts_flags |= FTS_DONTCHDIR; descend = 0; cderrno = errno; @@ -545,21 +540,9 @@ mem1: saved_errno = errno; } if (cderrno) { - if (nlinks) { - p->fts_info = FTS_NS; - p->fts_errno = cderrno; - } else - p->fts_info = FTS_NSOK; + p->fts_info = FTS_NS; + p->fts_errno = cderrno; p->fts_accpath = cur->fts_accpath; - } else if (nlinks == 0 -#ifdef DT_DIR - || (nostat && - dp->d_type != DT_DIR && dp->d_type != DT_UNKNOWN) -#endif - ) { - p->fts_accpath = - ISSET(FTS_NOCHDIR) ? p->fts_path : p->fts_name; - p->fts_info = FTS_NSOK; } else { /* Build a file name for fts_stat to stat. */ if (ISSET(FTS_NOCHDIR)) { @@ -569,11 +552,6 @@ mem1: saved_errno = errno; p->fts_accpath = p->fts_name; /* Stat it. */ p->fts_info = fts_stat(sp, p); - - /* Decrement link count if applicable. */ - if (nlinks > 0 && (p->fts_info == FTS_D || - p->fts_info == FTS_DC || p->fts_info == FTS_DOT)) - --nlinks; } /* We walk in directory order so "ls -f" doesn't get upset. */ |