1+ #define NO_THE_INDEX_COMPATIBILITY_MACROS
12#include "cache.h"
23#include "dir.h"
34#include "tree.h"
78#include "progress.h"
89#include "refs.h"
910
10- static inline void remove_entry (int remove )
11+ static inline void remove_entry (int remove , struct unpack_trees_options * o )
1112{
1213 if (remove >= 0 )
13- remove_cache_entry_at ( remove );
14+ remove_index_entry_at ( o -> index , remove );
1415}
1516
1617/* Unlink the last component and attempt to remove leading
@@ -53,8 +54,8 @@ static void check_updates(struct unpack_trees_options *o)
5354 int i ;
5455
5556 if (o -> update && o -> verbose_update ) {
56- for (total = cnt = 0 ; cnt < active_nr ; cnt ++ ) {
57- struct cache_entry * ce = active_cache [cnt ];
57+ for (total = cnt = 0 ; cnt < o -> index -> cache_nr ; cnt ++ ) {
58+ struct cache_entry * ce = o -> index -> cache [cnt ];
5859 if (ce -> ce_flags & (CE_UPDATE | CE_REMOVE ))
5960 total ++ ;
6061 }
@@ -65,15 +66,15 @@ static void check_updates(struct unpack_trees_options *o)
6566 }
6667
6768 * last_symlink = '\0' ;
68- for (i = 0 ; i < active_nr ; i ++ ) {
69- struct cache_entry * ce = active_cache [i ];
69+ for (i = 0 ; i < o -> index -> cache_nr ; i ++ ) {
70+ struct cache_entry * ce = o -> index -> cache [i ];
7071
7172 if (ce -> ce_flags & (CE_UPDATE | CE_REMOVE ))
7273 display_progress (progress , ++ cnt );
7374 if (ce -> ce_flags & CE_REMOVE ) {
7475 if (o -> update )
7576 unlink_entry (ce -> name , last_symlink );
76- remove_cache_entry_at ( i );
77+ remove_index_entry_at ( o -> index , i );
7778 i -- ;
7879 continue ;
7980 }
@@ -105,7 +106,7 @@ static int unpack_index_entry(struct cache_entry *ce, struct unpack_trees_option
105106 if (o -> skip_unmerged ) {
106107 o -> pos ++ ;
107108 } else {
108- remove_entry (o -> pos );
109+ remove_entry (o -> pos , o );
109110 }
110111 return 0 ;
111112 }
@@ -242,9 +243,9 @@ static int unpack_nondirectories(int n, unsigned long mask, unsigned long dirmas
242243 return call_unpack_fn (src , o , remove );
243244
244245 n += o -> merge ;
245- remove_entry (remove );
246+ remove_entry (remove , o );
246247 for (i = 0 ; i < n ; i ++ )
247- add_cache_entry ( src [i ], ADD_CACHE_OK_TO_ADD |ADD_CACHE_SKIP_DFCHECK );
248+ add_index_entry ( o -> index , src [i ], ADD_CACHE_OK_TO_ADD |ADD_CACHE_SKIP_DFCHECK );
248249 return 0 ;
249250}
250251
@@ -261,8 +262,8 @@ static int unpack_callback(int n, unsigned long mask, unsigned long dirmask, str
261262
262263 /* Are we supposed to look at the index too? */
263264 if (o -> merge ) {
264- while (o -> pos < active_nr ) {
265- struct cache_entry * ce = active_cache [o -> pos ];
265+ while (o -> pos < o -> index -> cache_nr ) {
266+ struct cache_entry * ce = o -> index -> cache [o -> pos ];
266267 int cmp = compare_entry (ce , info , p );
267268 if (cmp < 0 ) {
268269 if (unpack_index_entry (ce , o ) < 0 )
@@ -277,7 +278,7 @@ static int unpack_callback(int n, unsigned long mask, unsigned long dirmask, str
277278 */
278279 if (o -> skip_unmerged )
279280 return mask ;
280- remove_entry (o -> pos );
281+ remove_entry (o -> pos , o );
281282 continue ;
282283 }
283284 src [0 ] = ce ;
@@ -312,8 +313,8 @@ static int unpack_failed(struct unpack_trees_options *o, const char *message)
312313 return error (message );
313314 return -1 ;
314315 }
315- discard_cache ( );
316- read_cache ( );
316+ discard_index ( o -> index );
317+ read_index ( o -> index );
317318 return -1 ;
318319}
319320
@@ -349,8 +350,8 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
349350
350351 /* Any left-over entries in the index? */
351352 if (o -> merge ) {
352- while (o -> pos < active_nr ) {
353- struct cache_entry * ce = active_cache [o -> pos ];
353+ while (o -> pos < o -> index -> cache_nr ) {
354+ struct cache_entry * ce = o -> index -> cache [o -> pos ];
354355 if (unpack_index_entry (ce , o ) < 0 )
355356 return unpack_failed (o , NULL );
356357 }
@@ -395,7 +396,7 @@ static int verify_uptodate(struct cache_entry *ce,
395396 return 0 ;
396397
397398 if (!lstat (ce -> name , & st )) {
398- unsigned changed = ce_match_stat ( ce , & st , CE_MATCH_IGNORE_VALID );
399+ unsigned changed = ie_match_stat ( o -> index , ce , & st , CE_MATCH_IGNORE_VALID );
399400 if (!changed )
400401 return 0 ;
401402 /*
@@ -415,10 +416,10 @@ static int verify_uptodate(struct cache_entry *ce,
415416 error ("Entry '%s' not uptodate. Cannot merge." , ce -> name );
416417}
417418
418- static void invalidate_ce_path (struct cache_entry * ce )
419+ static void invalidate_ce_path (struct cache_entry * ce , struct unpack_trees_options * o )
419420{
420421 if (ce )
421- cache_tree_invalidate_path (active_cache_tree , ce -> name );
422+ cache_tree_invalidate_path (o -> index -> cache_tree , ce -> name );
422423}
423424
424425/*
@@ -463,12 +464,12 @@ static int verify_clean_subdirectory(struct cache_entry *ce, const char *action,
463464 * in that directory.
464465 */
465466 namelen = strlen (ce -> name );
466- pos = cache_name_pos ( ce -> name , namelen );
467+ pos = index_name_pos ( o -> index , ce -> name , namelen );
467468 if (0 <= pos )
468469 return cnt ; /* we have it as nondirectory */
469470 pos = - pos - 1 ;
470- for (i = pos ; i < active_nr ; i ++ ) {
471- struct cache_entry * ce = active_cache [i ];
471+ for (i = pos ; i < o -> index -> cache_nr ; i ++ ) {
472+ struct cache_entry * ce = o -> index -> cache [i ];
472473 int len = ce_namelen (ce );
473474 if (len < namelen ||
474475 strncmp (ce -> name , ce -> name , namelen ) ||
@@ -566,9 +567,9 @@ static int verify_absent(struct cache_entry *ce, const char *action,
566567 * delete this path, which is in a subdirectory that
567568 * is being replaced with a blob.
568569 */
569- cnt = cache_name_pos ( ce -> name , strlen (ce -> name ));
570+ cnt = index_name_pos ( o -> index , ce -> name , strlen (ce -> name ));
570571 if (0 <= cnt ) {
571- struct cache_entry * ce = active_cache [cnt ];
572+ struct cache_entry * ce = o -> index -> cache [cnt ];
572573 if (ce -> ce_flags & CE_REMOVE )
573574 return 0 ;
574575 }
@@ -597,17 +598,17 @@ static int merged_entry(struct cache_entry *merge, struct cache_entry *old,
597598 } else {
598599 if (verify_uptodate (old , o ))
599600 return -1 ;
600- invalidate_ce_path (old );
601+ invalidate_ce_path (old , o );
601602 }
602603 }
603604 else {
604605 if (verify_absent (merge , "overwritten" , o ))
605606 return -1 ;
606- invalidate_ce_path (merge );
607+ invalidate_ce_path (merge , o );
607608 }
608609
609610 merge -> ce_flags &= ~CE_STAGEMASK ;
610- add_cache_entry ( merge , ADD_CACHE_OK_TO_ADD |ADD_CACHE_OK_TO_REPLACE );
611+ add_index_entry ( o -> index , merge , ADD_CACHE_OK_TO_ADD |ADD_CACHE_OK_TO_REPLACE );
611612 return 1 ;
612613}
613614
@@ -621,14 +622,14 @@ static int deleted_entry(struct cache_entry *ce, struct cache_entry *old,
621622 if (verify_absent (ce , "removed" , o ))
622623 return -1 ;
623624 ce -> ce_flags |= CE_REMOVE ;
624- add_cache_entry ( ce , ADD_CACHE_OK_TO_ADD |ADD_CACHE_OK_TO_REPLACE );
625- invalidate_ce_path (ce );
625+ add_index_entry ( o -> index , ce , ADD_CACHE_OK_TO_ADD |ADD_CACHE_OK_TO_REPLACE );
626+ invalidate_ce_path (ce , o );
626627 return 1 ;
627628}
628629
629630static int keep_entry (struct cache_entry * ce , struct unpack_trees_options * o )
630631{
631- add_cache_entry ( ce , ADD_CACHE_OK_TO_ADD );
632+ add_index_entry ( o -> index , ce , ADD_CACHE_OK_TO_ADD );
632633 return 1 ;
633634}
634635
@@ -728,7 +729,7 @@ int threeway_merge(struct cache_entry **stages,
728729
729730 /* #1 */
730731 if (!head && !remote && any_anc_missing ) {
731- remove_entry (remove );
732+ remove_entry (remove , o );
732733 return 0 ;
733734 }
734735
@@ -762,7 +763,7 @@ int threeway_merge(struct cache_entry **stages,
762763 if ((head_deleted && remote_deleted ) ||
763764 (head_deleted && remote && remote_match ) ||
764765 (remote_deleted && head && head_match )) {
765- remove_entry (remove );
766+ remove_entry (remove , o );
766767 if (index )
767768 return deleted_entry (index , index , o );
768769 else if (ce && !head_deleted ) {
@@ -788,7 +789,7 @@ int threeway_merge(struct cache_entry **stages,
788789 return -1 ;
789790 }
790791
791- remove_entry (remove );
792+ remove_entry (remove , o );
792793 o -> nontrivial_merge = 1 ;
793794
794795 /* #2, #3, #4, #6, #7, #9, #10, #11. */
@@ -853,7 +854,7 @@ int twoway_merge(struct cache_entry **src,
853854 }
854855 else if (oldtree && !newtree && same (current , oldtree )) {
855856 /* 10 or 11 */
856- remove_entry (remove );
857+ remove_entry (remove , o );
857858 return deleted_entry (oldtree , current , o );
858859 }
859860 else if (oldtree && newtree &&
@@ -863,7 +864,7 @@ int twoway_merge(struct cache_entry **src,
863864 }
864865 else {
865866 /* all other failures */
866- remove_entry (remove );
867+ remove_entry (remove , o );
867868 if (oldtree )
868869 return o -> gently ? -1 : reject_merge (oldtree );
869870 if (current )
@@ -875,7 +876,7 @@ int twoway_merge(struct cache_entry **src,
875876 }
876877 else if (newtree )
877878 return merged_entry (newtree , current , o );
878- remove_entry (remove );
879+ remove_entry (remove , o );
879880 return deleted_entry (oldtree , current , o );
880881}
881882
@@ -922,14 +923,14 @@ int oneway_merge(struct cache_entry **src,
922923 o -> merge_size );
923924
924925 if (!a ) {
925- remove_entry (remove );
926+ remove_entry (remove , o );
926927 return deleted_entry (old , old , o );
927928 }
928929 if (old && same (old , a )) {
929930 if (o -> reset ) {
930931 struct stat st ;
931932 if (lstat (old -> name , & st ) ||
932- ce_match_stat ( old , & st , CE_MATCH_IGNORE_VALID ))
933+ ie_match_stat ( o -> index , old , & st , CE_MATCH_IGNORE_VALID ))
933934 old -> ce_flags |= CE_UPDATE ;
934935 }
935936 return keep_entry (old , o );
0 commit comments