dir: convert read_skip_worktree_file_from_index to take an index

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Brandon Williams 2017-05-05 12:53:22 -07:00 committed by Junio C Hamano
parent 12cd0bf9b0
commit 6f52b741a7

13
dir.c
View File

@ -588,7 +588,8 @@ void add_exclude(const char *string, const char *base,
x->el = el; x->el = el;
} }
static void *read_skip_worktree_file_from_index(const char *path, size_t *size, static void *read_skip_worktree_file_from_index(const struct index_state *istate,
const char *path, size_t *size,
struct sha1_stat *sha1_stat) struct sha1_stat *sha1_stat)
{ {
int pos, len; int pos, len;
@ -597,12 +598,12 @@ static void *read_skip_worktree_file_from_index(const char *path, size_t *size,
void *data; void *data;
len = strlen(path); len = strlen(path);
pos = index_name_pos(&the_index, path, len); pos = index_name_pos(istate, path, len);
if (pos < 0) if (pos < 0)
return NULL; return NULL;
if (!ce_skip_worktree(the_index.cache[pos])) if (!ce_skip_worktree(istate->cache[pos]))
return NULL; return NULL;
data = read_sha1_file(the_index.cache[pos]->oid.hash, &type, &sz); data = read_sha1_file(istate->cache[pos]->oid.hash, &type, &sz);
if (!data || type != OBJ_BLOB) { if (!data || type != OBJ_BLOB) {
free(data); free(data);
return NULL; return NULL;
@ -610,7 +611,7 @@ static void *read_skip_worktree_file_from_index(const char *path, size_t *size,
*size = xsize_t(sz); *size = xsize_t(sz);
if (sha1_stat) { if (sha1_stat) {
memset(&sha1_stat->stat, 0, sizeof(sha1_stat->stat)); memset(&sha1_stat->stat, 0, sizeof(sha1_stat->stat));
hashcpy(sha1_stat->sha1, the_index.cache[pos]->oid.hash); hashcpy(sha1_stat->sha1, istate->cache[pos]->oid.hash);
} }
return data; return data;
} }
@ -751,7 +752,7 @@ static int add_excludes(const char *fname, const char *base, int baselen,
if (0 <= fd) if (0 <= fd)
close(fd); close(fd);
if (!check_index || if (!check_index ||
(buf = read_skip_worktree_file_from_index(fname, &size, sha1_stat)) == NULL) (buf = read_skip_worktree_file_from_index(&the_index, fname, &size, sha1_stat)) == NULL)
return -1; return -1;
if (size == 0) { if (size == 0) {
free(buf); free(buf);