X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=abspath.c;h=8194ce1256525105d07eedf2f964ad51d9162d95;hb=a324fc45e4d04e3b879cd2d9a603d73ca696b775;hp=0d561246e0a958d9a7284409b1900a82876eebf3;hpb=0bb3a0ba9e3cbb283a747e4736bcf7484d076a73;p=git.git diff --git a/abspath.c b/abspath.c index 0d561246e..8194ce125 100644 --- a/abspath.c +++ b/abspath.c @@ -1,5 +1,16 @@ #include "cache.h" +/* + * Do not use this for inspecting *tracked* content. When path is a + * symlink to a directory, we do not want to say it is a directory when + * dealing with tracked content in the working tree. + */ +int is_directory(const char *path) +{ + struct stat st; + return (!stat(path, &st) && S_ISDIR(st.st_mode)); +} + /* We allow "recursive" symbolic links. Only within reason, though. */ #define MAXDEPTH 5 @@ -17,7 +28,7 @@ const char *make_absolute_path(const char *path) die ("Too long path: %.*s", 60, path); while (depth--) { - if (stat(buf, &st) || !S_ISDIR(st.st_mode)) { + if (!is_directory(buf)) { char *last_slash = strrchr(buf, '/'); if (last_slash) { *last_slash = '\0';