aboutsummaryrefslogtreecommitdiff
path: root/toys/posix/find.c
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2015-11-13 13:29:58 -0800
committerRob Landley <rob@landley.net>2015-11-19 10:16:19 -0600
commit0f3d8ee513d63282e72df37b97e35ff1a4e4d646 (patch)
tree0a413d497ae26824f1f8f387ef0dc8fa6cd7ee60 /toys/posix/find.c
parent859854a1b96f9337316e3fe13dcfef0376cf5c54 (diff)
downloadtoybox-0f3d8ee513d63282e72df37b97e35ff1a4e4d646.tar.gz
Fix find -perm.
1) It read st_dev instead of st_mode. 2) It reversed the semantics of absolute vs minimal ('-' prefixed) tests. Add tests for these, and move the "unterminated -exec" test into the "Still fails" section because it's still dumping core for me.
Diffstat (limited to 'toys/posix/find.c')
-rw-r--r--toys/posix/find.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/toys/posix/find.c b/toys/posix/find.c
index aca19845..f6701845 100644
--- a/toys/posix/find.c
+++ b/toys/posix/find.c
@@ -279,9 +279,9 @@ static int do_find(struct dirtree *new)
if (check) {
char *m = ss[1];
mode_t m1 = string_to_mode(m+(*m == '-'), 0),
- m2 = new->st.st_dev & 07777;
+ m2 = new->st.st_mode & 07777;
- if (*m != '-') m2 &= m1;
+ if (*m == '-') m2 &= m1;
test = m1 == m2;
}
} else if (!strcmp(s, "type")) {