@ -29,7 +29,7 @@ static int read_one_entry_opt(const unsigned char *sha1, const char *base, int b
return add_cache_entry(ce, opt);
return add_cache_entry(ce, opt);
}
}
static int read_one_entry(const unsigned char *sha1, const char *base, int baselen, const char *pathname, unsigned mode, int stage)
static int read_one_entry(const unsigned char *sha1, const char *base, int baselen, const char *pathname, unsigned mode, int stage, void *context)
{
{
return read_one_entry_opt(sha1, base, baselen, pathname, mode, stage,
return read_one_entry_opt(sha1, base, baselen, pathname, mode, stage,
ADD_CACHE_OK_TO_ADD|ADD_CACHE_SKIP_DFCHECK);
ADD_CACHE_OK_TO_ADD|ADD_CACHE_SKIP_DFCHECK);
@ -39,7 +39,7 @@ static int read_one_entry(const unsigned char *sha1, const char *base, int basel
* This is used when the caller knows there is no existing entries at
* This is used when the caller knows there is no existing entries at
* the stage that will conflict with the entry being added.
* the stage that will conflict with the entry being added.
*/
*/
static int read_one_entry_quick(const unsigned char *sha1, const char *base, int baselen, const char *pathname, unsigned mode, int stage)
static int read_one_entry_quick(const unsigned char *sha1, const char *base, int baselen, const char *pathname, unsigned mode, int stage, void *context)
{
{
return read_one_entry_opt(sha1, base, baselen, pathname, mode, stage,
return read_one_entry_opt(sha1, base, baselen, pathname, mode, stage,
ADD_CACHE_JUST_APPEND);
ADD_CACHE_JUST_APPEND);
@ -92,7 +92,7 @@ static int match_tree_entry(const char *base, int baselen, const char *path, uns
int read_tree_recursive(struct tree *tree,
int read_tree_recursive(struct tree *tree,
const char *base, int baselen,
const char *base, int baselen,
int stage, const char **match,
int stage, const char **match,
read_tree_fn_t fn)
read_tree_fn_t fn, void *context)
{
{
struct tree_desc desc;
struct tree_desc desc;
struct name_entry entry;
struct name_entry entry;
@ -106,7 +106,7 @@ int read_tree_recursive(struct tree *tree,
if (!match_tree_entry(base, baselen, entry.path, entry.mode, match))
if (!match_tree_entry(base, baselen, entry.path, entry.mode, match))
continue;
continue;
switch (fn(entry.sha1, base, baselen, entry.path, entry.mode, stage)) {
switch (fn(entry.sha1, base, baselen, entry.path, entry.mode, stage, context)) {
case 0:
case 0:
continue;
continue;
case READ_TREE_RECURSIVE:
case READ_TREE_RECURSIVE:
@ -126,7 +126,7 @@ int read_tree_recursive(struct tree *tree,
retval = read_tree_recursive(lookup_tree(entry.sha1),
retval = read_tree_recursive(lookup_tree(entry.sha1),
newbase,
newbase,
baselen + pathlen + 1,
baselen + pathlen + 1,
stage, match, fn);
stage, match, fn, context);
free(newbase);
free(newbase);
if (retval)
if (retval)
return -1;
return -1;
@ -174,7 +174,7 @@ int read_tree(struct tree *tree, int stage, const char **match)
if (!fn)
if (!fn)
fn = read_one_entry_quick;
fn = read_one_entry_quick;
err = read_tree_recursive(tree, "", 0, stage, match, fn);
err = read_tree_recursive(tree, "", 0, stage, match, fn, NULL);
if (fn == read_one_entry || err)
if (fn == read_one_entry || err)
return err;
return err;