@@ -1303,44 +1303,6 @@ int match_pathname(const char *pathname, int pathlen,
13031303 WM_PATHNAME ) == 0 ;
13041304}
13051305
1306- static int path_matches_dir_pattern (const char * pathname ,
1307- int pathlen ,
1308- struct strbuf * * path_parent ,
1309- int * dtype ,
1310- struct path_pattern * pattern ,
1311- struct index_state * istate )
1312- {
1313- if (!* path_parent ) {
1314- char * slash ;
1315- CALLOC_ARRAY (* path_parent , 1 );
1316- strbuf_add (* path_parent , pathname , pathlen );
1317- slash = find_last_dir_sep ((* path_parent )-> buf );
1318-
1319- if (slash )
1320- strbuf_setlen (* path_parent , slash - (* path_parent )-> buf );
1321- else
1322- strbuf_setlen (* path_parent , 0 );
1323- }
1324-
1325- /*
1326- * If the parent directory matches the pattern, then we do not
1327- * need to check for dtype.
1328- */
1329- if ((* path_parent )-> len &&
1330- match_pathname ((* path_parent )-> buf , (* path_parent )-> len ,
1331- pattern -> base ,
1332- pattern -> baselen ? pattern -> baselen - 1 : 0 ,
1333- pattern -> pattern , pattern -> nowildcardlen ,
1334- pattern -> patternlen , pattern -> flags ))
1335- return 1 ;
1336-
1337- * dtype = resolve_dtype (* dtype , istate , pathname , pathlen );
1338- if (* dtype != DT_DIR )
1339- return 0 ;
1340-
1341- return 1 ;
1342- }
1343-
13441306/*
13451307 * Scan the given exclude list in reverse to see whether pathname
13461308 * should be ignored. The first match (i.e. the last on the list), if
@@ -1356,7 +1318,6 @@ static struct path_pattern *last_matching_pattern_from_list(const char *pathname
13561318{
13571319 struct path_pattern * res = NULL ; /* undecided */
13581320 int i ;
1359- struct strbuf * path_parent = NULL ;
13601321
13611322 if (!pl -> nr )
13621323 return NULL ; /* undefined */
@@ -1366,10 +1327,11 @@ static struct path_pattern *last_matching_pattern_from_list(const char *pathname
13661327 const char * exclude = pattern -> pattern ;
13671328 int prefix = pattern -> nowildcardlen ;
13681329
1369- if (pattern -> flags & PATTERN_FLAG_MUSTBEDIR &&
1370- !path_matches_dir_pattern (pathname , pathlen , & path_parent ,
1371- dtype , pattern , istate ))
1372- continue ;
1330+ if (pattern -> flags & PATTERN_FLAG_MUSTBEDIR ) {
1331+ * dtype = resolve_dtype (* dtype , istate , pathname , pathlen );
1332+ if (* dtype != DT_DIR )
1333+ continue ;
1334+ }
13731335
13741336 if (pattern -> flags & PATTERN_FLAG_NODIR ) {
13751337 if (match_basename (basename ,
@@ -1393,12 +1355,6 @@ static struct path_pattern *last_matching_pattern_from_list(const char *pathname
13931355 break ;
13941356 }
13951357 }
1396-
1397- if (path_parent ) {
1398- strbuf_release (path_parent );
1399- free (path_parent );
1400- }
1401-
14021358 return res ;
14031359}
14041360
0 commit comments