X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=read-cache.c;h=747b50a99a5009e64594fe4e8da11c827a8db336;hb=7da3bf372cfcd25ea44164afb90c306836b62e23;hp=8a7506d909421479eee30517ab3f3963c67cefd9;hpb=0424138d5715dbf8605bacfbd22210aac85a1a8f;p=git.git diff --git a/read-cache.c b/read-cache.c index 8a7506d90..747b50a99 100644 --- a/read-cache.c +++ b/read-cache.c @@ -24,8 +24,6 @@ unsigned int active_nr, active_alloc, active_cache_changed; struct cache_tree *active_cache_tree; -static int cache_errno; - static void *cache_mmap; static size_t cache_mmap_size; @@ -643,14 +641,15 @@ int add_cache_entry(struct cache_entry *ce, int option) * For example, you'd want to do this after doing a "git-read-tree", * to link up the stat cache details with the proper files. */ -struct cache_entry *refresh_cache_entry(struct cache_entry *ce, int really) +static struct cache_entry *refresh_cache_ent(struct cache_entry *ce, int really, int *err) { struct stat st; struct cache_entry *updated; int changed, size; if (lstat(ce->name, &st) < 0) { - cache_errno = errno; + if (err) + *err = errno; return NULL; } @@ -664,7 +663,8 @@ struct cache_entry *refresh_cache_entry(struct cache_entry *ce, int really) } if (ce_modified(ce, &st, really)) { - cache_errno = EINVAL; + if (err) + *err = EINVAL; return NULL; } @@ -696,6 +696,8 @@ int refresh_cache(unsigned int flags) for (i = 0; i < active_nr; i++) { struct cache_entry *ce, *new; + int cache_errno = 0; + ce = active_cache[i]; if (ce_stage(ce)) { while ((i < active_nr) && @@ -709,7 +711,7 @@ int refresh_cache(unsigned int flags) continue; } - new = refresh_cache_entry(ce, really); + new = refresh_cache_ent(ce, really, &cache_errno); if (new == ce) continue; if (!new) { @@ -737,6 +739,11 @@ int refresh_cache(unsigned int flags) return has_errors; } +struct cache_entry *refresh_cache_entry(struct cache_entry *ce, int really) +{ + return refresh_cache_ent(ce, really, NULL); +} + static int verify_hdr(struct cache_header *hdr, unsigned long size) { SHA_CTX c;