From acd7f7ed437793e7c67ecd869cfac32a87c1ec52 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Sat, 12 Aug 2017 18:12:13 -0400 Subject: Unify broken symlink handling Rather than open-code the fallback logic for broken symlinks everywhere it's needed, introduce a new xfstatat() utility function that performs the fallback automatically. Using xfstatat() consistently fixes a few bugs, including cases where broken symlinks are given as arguments to predicates like -samefile. --- parse.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'parse.c') diff --git a/parse.c b/parse.c index 2ba0602..ef252fb 100644 --- a/parse.c +++ b/parse.c @@ -345,7 +345,7 @@ static int stat_arg(const struct parser_state *state, struct expr *expr, struct bool follow = cmdline->flags & (BFTW_COMFOLLOW | BFTW_LOGICAL); int flags = follow ? 0 : AT_SYMLINK_NOFOLLOW; - int ret = fstatat(AT_FDCWD, expr->sdata, sb, flags); + int ret = xfstatat(AT_FDCWD, expr->sdata, sb, &flags); if (ret != 0) { cfprintf(cmdline->cerr, "%{er}error: '%s': %s%{rs}\n", expr->sdata, strerror(errno)); } -- cgit v1.2.3