|
|
|
@ -629,8 +629,8 @@ int mbs_chrlen(const char **text, size_t *remainder_p, const char *encoding)
@@ -629,8 +629,8 @@ int mbs_chrlen(const char **text, size_t *remainder_p, const char *encoding)
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
* Pick the next char from the stream, folding as an HFS+ filename comparison |
|
|
|
|
* would. Note that this is _not_ complete by any means. It's just enough |
|
|
|
|
* Pick the next char from the stream, ignoring codepoints an HFS+ would. |
|
|
|
|
* Note that this is _not_ complete by any means. It's just enough |
|
|
|
|
* to make is_hfs_dotgit() work, and should not be used otherwise. |
|
|
|
|
*/ |
|
|
|
|
static ucs_char_t next_hfs_char(const char **in) |
|
|
|
@ -667,12 +667,7 @@ static ucs_char_t next_hfs_char(const char **in)
@@ -667,12 +667,7 @@ static ucs_char_t next_hfs_char(const char **in)
|
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
* there's a great deal of other case-folding that occurs, |
|
|
|
|
* but this is enough to catch anything that will convert |
|
|
|
|
* to ".git" |
|
|
|
|
*/ |
|
|
|
|
return tolower(out); |
|
|
|
|
return out; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -680,10 +675,23 @@ int is_hfs_dotgit(const char *path)
@@ -680,10 +675,23 @@ int is_hfs_dotgit(const char *path)
|
|
|
|
|
{ |
|
|
|
|
ucs_char_t c; |
|
|
|
|
|
|
|
|
|
if (next_hfs_char(&path) != '.' || |
|
|
|
|
next_hfs_char(&path) != 'g' || |
|
|
|
|
next_hfs_char(&path) != 'i' || |
|
|
|
|
next_hfs_char(&path) != 't') |
|
|
|
|
c = next_hfs_char(&path); |
|
|
|
|
if (c != '.') |
|
|
|
|
return 0; |
|
|
|
|
c = next_hfs_char(&path); |
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
* there's a great deal of other case-folding that occurs |
|
|
|
|
* in HFS+, but this is enough to catch anything that will |
|
|
|
|
* convert to ".git" |
|
|
|
|
*/ |
|
|
|
|
if (c != 'g' && c != 'G') |
|
|
|
|
return 0; |
|
|
|
|
c = next_hfs_char(&path); |
|
|
|
|
if (c != 'i' && c != 'I') |
|
|
|
|
return 0; |
|
|
|
|
c = next_hfs_char(&path); |
|
|
|
|
if (c != 't' && c != 'T') |
|
|
|
|
return 0; |
|
|
|
|
c = next_hfs_char(&path); |
|
|
|
|
if (c && !is_dir_sep(c)) |
|
|
|
|