diff options
Diffstat (limited to 'src/odb_pack.c')
-rw-r--r-- | src/odb_pack.c | 32 |
1 files changed, 10 insertions, 22 deletions
diff --git a/src/odb_pack.c b/src/odb_pack.c index 2c0319fb6..903b00d26 100644 --- a/src/odb_pack.c +++ b/src/odb_pack.c @@ -190,15 +190,9 @@ static int packfile_sort__cb(const void *a_, const void *b_) } -struct packfile_load_data { - struct pack_backend *backend; - git_error_state error; -}; - -static int packfile_load__cb(void *_data, git_buf *path) +static int packfile_load__cb(void *data, git_buf *path) { - struct packfile_load_data *data = _data; - struct pack_backend *backend = data->backend; + struct pack_backend *backend = data; struct git_pack_file *pack; const char *path_str = git_buf_cstr(path); size_t i, cmp_len = git_buf_len(path); @@ -227,7 +221,7 @@ static int packfile_load__cb(void *_data, git_buf *path) if (!error) error = git_vector_insert(&backend->packs, pack); - return giterr_capture(&data->error, error); + return error; } @@ -328,32 +322,26 @@ static int pack_entry_find_prefix( * Implement the git_odb_backend API calls * ***********************************************************/ -static int pack_backend__refresh(git_odb_backend *backend) +static int pack_backend__refresh(git_odb_backend *backend_) { - struct packfile_load_data data; int error; struct stat st; git_buf path = GIT_BUF_INIT; + struct pack_backend *backend = (struct pack_backend *)backend_; - memset(&data, 0, sizeof(data)); - data.backend = (struct pack_backend *)backend; - - if (data.backend->pack_folder == NULL) + if (backend->pack_folder == NULL) return 0; - if (p_stat(data.backend->pack_folder, &st) < 0 || !S_ISDIR(st.st_mode)) + if (p_stat(backend->pack_folder, &st) < 0 || !S_ISDIR(st.st_mode)) return git_odb__error_notfound("failed to refresh packfiles", NULL); - git_buf_sets(&path, data.backend->pack_folder); + git_buf_sets(&path, backend->pack_folder); /* reload all packs */ - error = git_path_direach(&path, 0, packfile_load__cb, &data); - - if (error == GIT_EUSER) - error = giterr_restore(&data.error); + error = git_path_direach(&path, 0, packfile_load__cb, backend); git_buf_free(&path); - git_vector_sort(&data.backend->packs); + git_vector_sort(&backend->packs); return error; } |