From e2ee1a956a3b11d1840fc051443923b54339072b Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Thu, 24 Nov 2016 21:04:56 -0500 Subject: Allow // to be different from / POSIX says that // may be resolved in an implementation-defined way (generally, to access network shares). So don't use it in tests, and don't canonicalize it to '/' in -execdir. --- eval.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'eval.c') diff --git a/eval.c b/eval.c index 575eebd..d3b8f19 100644 --- a/eval.c +++ b/eval.c @@ -261,8 +261,6 @@ bool eval_delete(const struct expr *expr, struct eval_state *state) { return true; } -static const char *exec_slash = "/"; - static const char *exec_format_path(const struct expr *expr, const struct BFTW *ftwbuf) { if (!(expr->exec_flags & EXEC_CHDIR)) { return ftwbuf->path; @@ -271,8 +269,9 @@ static const char *exec_format_path(const struct expr *expr, const struct BFTW * const char *name = ftwbuf->path + ftwbuf->nameoff; if (name[0] == '/') { - // Must be the root path ("/", "//", etc.), which we canonicalize - return exec_slash; + // Must be a root path ("/", "//", etc.) + assert(ftwbuf->nameoff == 0); + return name; } // For compatibility with GNU find, use './name' instead of just 'name' @@ -299,7 +298,7 @@ err: } static void exec_free_path(const char *path, const struct BFTW *ftwbuf) { - if (path != ftwbuf->path && path != exec_slash) { + if (path != ftwbuf->path) { dstrfree((char *)path); } } -- cgit v1.2.3