Similar to the previous patch, this is about better error messages
when .gitattributes happens to be a directory.

FWIW .gitignore code is also checked. There open() is used instead and
open("dir") does not fail on Linux. But the next read should fail with
EISDIR, which is a pretty good clue already. No idea how open() on
Windows behaves.
---
 attr.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/attr.c b/attr.c
index 5493bff224..34b6a6b9a8 100644
--- a/attr.c
+++ b/attr.c
@@ -703,11 +703,17 @@ void git_attr_set_direction(enum git_attr_direction 
new_direction,
 
 static struct attr_stack *read_attr_from_file(const char *path, int macro_ok)
 {
-       FILE *fp = fopen(path, "r");
+       FILE *fp;
        struct attr_stack *res;
        char buf[2048];
        int lineno = 0;
 
+       if (is_not_file(path)) {
+               warning(_("'%s' is not a file"), path);
+               return NULL;
+       }
+
+       fp = fopen(path, "r");
        if (!fp) {
                if (errno != ENOENT && errno != ENOTDIR)
                        warn_on_inaccessible(path);
-- 
2.11.0.157.gd943d85

Reply via email to