From: Joel Rosdahl Date: Thu, 20 Feb 2020 20:23:13 +0000 (+0100) Subject: Let Util::get_apparent_cwd return a normalized CWD X-Git-Tag: v4.0~590 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=24f72647cc150373ed3a58b077a463d1753663c8;p=thirdparty%2Fccache.git Let Util::get_apparent_cwd return a normalized CWD --- diff --git a/src/Util.cpp b/src/Util.cpp index f5ac37008..e59d5a759 100644 --- a/src/Util.cpp +++ b/src/Util.cpp @@ -237,16 +237,16 @@ get_apparent_cwd(const std::string& actual_cwd) return actual_cwd; } - auto st_pwd = Stat::stat(pwd); - auto st_cwd = Stat::stat(actual_cwd); - if (!st_pwd || !st_cwd) { - return actual_cwd; - } - if (st_pwd.device() == st_cwd.device() && st_pwd.inode() == st_cwd.inode()) { - return pwd; - } else { + auto pwd_stat = Stat::stat(pwd); + auto cwd_stat = Stat::stat(actual_cwd); + if (!pwd_stat || !cwd_stat || !pwd_stat.same_inode_as(cwd_stat)) { return actual_cwd; } + std::string normalized_pwd = normalize_absolute_path(pwd); + return normalized_pwd == pwd + || Stat::stat(normalized_pwd).same_inode_as(pwd_stat) + ? normalized_pwd + : pwd; #endif }