@@ -1231,8 +1231,14 @@ static int commit_contains(struct ref_filter *filter, struct commit *commit)
12311231 * matches a pattern "refs/heads/mas") or a wildcard (e.g. the same ref
12321232 * matches "refs/heads/mas*", too).
12331233 */
1234- static int match_pattern (const char * * patterns , const char * refname )
1234+ static int match_pattern (const struct ref_filter * filter , const char * refname )
12351235{
1236+ const char * * patterns = filter -> name_patterns ;
1237+ unsigned flags = 0 ;
1238+
1239+ if (filter -> ignore_case )
1240+ flags |= WM_CASEFOLD ;
1241+
12361242 /*
12371243 * When no '--format' option is given we need to skip the prefix
12381244 * for matching refs of tags and branches.
@@ -1243,7 +1249,7 @@ static int match_pattern(const char **patterns, const char *refname)
12431249 skip_prefix (refname , "refs/" , & refname ));
12441250
12451251 for (; * patterns ; patterns ++ ) {
1246- if (!wildmatch (* patterns , refname , 0 , NULL ))
1252+ if (!wildmatch (* patterns , refname , flags , NULL ))
12471253 return 1 ;
12481254 }
12491255 return 0 ;
@@ -1255,9 +1261,15 @@ static int match_pattern(const char **patterns, const char *refname)
12551261 * matches a pattern "refs/heads/" but not "refs/heads/m") or a
12561262 * wildcard (e.g. the same ref matches "refs/heads/m*", too).
12571263 */
1258- static int match_name_as_path (const char * * pattern , const char * refname )
1264+ static int match_name_as_path (const struct ref_filter * filter , const char * refname )
12591265{
1266+ const char * * pattern = filter -> name_patterns ;
12601267 int namelen = strlen (refname );
1268+ unsigned flags = WM_PATHNAME ;
1269+
1270+ if (filter -> ignore_case )
1271+ flags |= WM_CASEFOLD ;
1272+
12611273 for (; * pattern ; pattern ++ ) {
12621274 const char * p = * pattern ;
12631275 int plen = strlen (p );
@@ -1280,8 +1292,8 @@ static int filter_pattern_match(struct ref_filter *filter, const char *refname)
12801292 if (!* filter -> name_patterns )
12811293 return 1 ; /* No pattern always matches */
12821294 if (filter -> match_as_path )
1283- return match_name_as_path (filter -> name_patterns , refname );
1284- return match_pattern (filter -> name_patterns , refname );
1295+ return match_name_as_path (filter , refname );
1296+ return match_pattern (filter , refname );
12851297}
12861298
12871299/*
@@ -1536,18 +1548,20 @@ static int cmp_ref_sorting(struct ref_sorting *s, struct ref_array_item *a, stru
15361548 struct atom_value * va , * vb ;
15371549 int cmp ;
15381550 cmp_type cmp_type = used_atom [s -> atom ].type ;
1551+ int (* cmp_fn )(const char * , const char * );
15391552
15401553 get_ref_atom_value (a , s -> atom , & va );
15411554 get_ref_atom_value (b , s -> atom , & vb );
1555+ cmp_fn = s -> ignore_case ? strcasecmp : strcmp ;
15421556 if (s -> version )
15431557 cmp = versioncmp (va -> s , vb -> s );
15441558 else if (cmp_type == FIELD_STR )
1545- cmp = strcmp (va -> s , vb -> s );
1559+ cmp = cmp_fn (va -> s , vb -> s );
15461560 else {
15471561 if (va -> ul < vb -> ul )
15481562 cmp = -1 ;
15491563 else if (va -> ul == vb -> ul )
1550- cmp = strcmp (a -> refname , b -> refname );
1564+ cmp = cmp_fn (a -> refname , b -> refname );
15511565 else
15521566 cmp = 1 ;
15531567 }
0 commit comments