Propagate cache error internal to refresh_cache() via parameter.
The function refresh_cache() is the only user of cache_errno that switches its behaviour based on what internal function refresh_cache_entry() finds; pass the error status back in a parameter passed down to it, to get rid of the global variable cache_errno. Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
19
read-cache.c
19
read-cache.c
@ -24,8 +24,6 @@ unsigned int active_nr, active_alloc, active_cache_changed;
|
|||||||
|
|
||||||
struct cache_tree *active_cache_tree;
|
struct cache_tree *active_cache_tree;
|
||||||
|
|
||||||
static int cache_errno;
|
|
||||||
|
|
||||||
static void *cache_mmap;
|
static void *cache_mmap;
|
||||||
static size_t cache_mmap_size;
|
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",
|
* 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.
|
* 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 stat st;
|
||||||
struct cache_entry *updated;
|
struct cache_entry *updated;
|
||||||
int changed, size;
|
int changed, size;
|
||||||
|
|
||||||
if (lstat(ce->name, &st) < 0) {
|
if (lstat(ce->name, &st) < 0) {
|
||||||
cache_errno = errno;
|
if (err)
|
||||||
|
*err = errno;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -664,7 +663,8 @@ struct cache_entry *refresh_cache_entry(struct cache_entry *ce, int really)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ce_modified(ce, &st, really)) {
|
if (ce_modified(ce, &st, really)) {
|
||||||
cache_errno = EINVAL;
|
if (err)
|
||||||
|
*err = EINVAL;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -696,6 +696,8 @@ int refresh_cache(unsigned int flags)
|
|||||||
|
|
||||||
for (i = 0; i < active_nr; i++) {
|
for (i = 0; i < active_nr; i++) {
|
||||||
struct cache_entry *ce, *new;
|
struct cache_entry *ce, *new;
|
||||||
|
int cache_errno = 0;
|
||||||
|
|
||||||
ce = active_cache[i];
|
ce = active_cache[i];
|
||||||
if (ce_stage(ce)) {
|
if (ce_stage(ce)) {
|
||||||
while ((i < active_nr) &&
|
while ((i < active_nr) &&
|
||||||
@ -709,7 +711,7 @@ int refresh_cache(unsigned int flags)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
new = refresh_cache_entry(ce, really);
|
new = refresh_cache_ent(ce, really, &cache_errno);
|
||||||
if (new == ce)
|
if (new == ce)
|
||||||
continue;
|
continue;
|
||||||
if (!new) {
|
if (!new) {
|
||||||
@ -737,6 +739,11 @@ int refresh_cache(unsigned int flags)
|
|||||||
return has_errors;
|
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)
|
static int verify_hdr(struct cache_header *hdr, unsigned long size)
|
||||||
{
|
{
|
||||||
SHA_CTX c;
|
SHA_CTX c;
|
||||||
|
Reference in New Issue
Block a user