Skip to content

Commit

Permalink
Propagate cache error internal to refresh_cache() via parameter.
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Junio C Hamano committed Apr 5, 2007
1 parent 0424138 commit ec0cc70
Showing 1 changed file with 13 additions and 6 deletions.
19 changes: 13 additions & 6 deletions read-cache.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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;
}

Expand All @@ -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;
}

Expand Down Expand Up @@ -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) &&
Expand All @@ -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) {
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit ec0cc70

Please sign in to comment.