diff options
Diffstat (limited to 'read-cache.c')
-rw-r--r-- | read-cache.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/read-cache.c b/read-cache.c index 732f483cda..b3eec84673 100644 --- a/read-cache.c +++ b/read-cache.c @@ -74,6 +74,25 @@ int ce_match_stat(struct cache_entry *ce, struct stat *st) return changed; } +int base_name_compare(const char *name1, int len1, int mode1, + const char *name2, int len2, int mode2) +{ + unsigned char c1, c2; + int len = len1 < len2 ? len1 : len2; + int cmp; + + cmp = memcmp(name1, name2, len); + if (cmp) + return cmp; + c1 = name1[len]; + c2 = name2[len]; + if (!c1 && S_ISDIR(mode1)) + c1 = '/'; + if (!c2 && S_ISDIR(mode2)) + c2 = '/'; + return (c1 < c2) ? -1 : (c1 > c2) ? 1 : 0; +} + int cache_name_compare(const char *name1, int flags1, const char *name2, int flags2) { int len1 = flags1 & CE_NAMEMASK; |