Signed-off-by: Nguyễn Thái Ngọc Duy <pclo...@gmail.com>
---
 dir.c | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/dir.c b/dir.c
index 760b776..d0e7ca8 100644
--- a/dir.c
+++ b/dir.c
@@ -66,15 +66,22 @@ static size_t common_prefix_len(const struct pathspec 
*pathspec)
        int n;
        size_t max = 0;
 
+       /*
+        * ":(icase)path" is treated as a pathspec full of wildcard
+        */
        GUARD_PATHSPEC(pathspec,
                       PATHSPEC_FROMTOP |
                       PATHSPEC_LITERAL |
-                      PATHSPEC_GLOB);
+                      PATHSPEC_GLOB |
+                      PATHSPEC_ICASE);
 
        for (n = 0; n < pathspec->nr; n++) {
-               size_t i = 0, len = 0;
-               while (i < pathspec->items[n].nowildcard_len &&
-                      (n == 0 || i < max)) {
+               size_t i = 0, len = 0, item_len;
+               if (pathspec->items[n].magic & PATHSPEC_ICASE)
+                       item_len = pathspec->items[n].prefix;
+               else
+                       item_len = pathspec->items[n].nowildcard_len;
+               while (i < item_len && (n == 0 || i < max)) {
                        char c = pathspec->items[n].match[i];
                        if (c != pathspec->items[0].match[i])
                                break;
@@ -1240,7 +1247,8 @@ int read_directory(struct dir_struct *dir, const char 
*path, int len, const stru
                GUARD_PATHSPEC(pathspec,
                               PATHSPEC_FROMTOP |
                               PATHSPEC_LITERAL |
-                              PATHSPEC_GLOB);
+                              PATHSPEC_GLOB |
+                              PATHSPEC_ICASE);
 
        if (has_symlink_leading_path(path, len))
                return dir->nr;
-- 
1.8.0.rc2.23.g1fb49df

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to