aboutsummaryrefslogtreecommitdiff
path: root/usr.bin/find
diff options
context:
space:
mode:
authorJilles Tjoelker <jilles@FreeBSD.org>2014-01-11 21:12:27 +0000
committerJilles Tjoelker <jilles@FreeBSD.org>2014-01-11 21:12:27 +0000
commitb95de98a6b0984d644087bbb82d9c228381e27db (patch)
tree15e7c58199a6769cc5e56c5118a794d8607eb791 /usr.bin/find
parentfd9e2c6a4ab93d783652f0569062156df8810ce5 (diff)
Notes
Diffstat (limited to 'usr.bin/find')
-rw-r--r--usr.bin/find/function.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/usr.bin/find/function.c b/usr.bin/find/function.c
index 9f156756cc561..a71369b5db7f2 100644
--- a/usr.bin/find/function.c
+++ b/usr.bin/find/function.c
@@ -1552,7 +1552,12 @@ c_sparse(OPTION *option, char ***argvp __unused)
int
f_type(PLAN *plan, FTSENT *entry)
{
- return (entry->fts_statp->st_mode & S_IFMT) == plan->m_data;
+ if (plan->m_data == S_IFDIR)
+ return (entry->fts_info == FTS_D || entry->fts_info == FTS_DC ||
+ entry->fts_info == FTS_DNR || entry->fts_info == FTS_DOT ||
+ entry->fts_info == FTS_DP);
+ else
+ return (entry->fts_statp->st_mode & S_IFMT) == plan->m_data;
}
PLAN *
@@ -1563,7 +1568,8 @@ c_type(OPTION *option, char ***argvp)
mode_t mask;
typestring = nextarg(option, argvp);
- ftsoptions &= ~FTS_NOSTAT;
+ if (typestring[0] != 'd')
+ ftsoptions &= ~FTS_NOSTAT;
switch (typestring[0]) {
case 'b':