A common pattern with the repo_read_index function is to die if the return of repo_read_index is negative. Move this pattern into a function.
This patch replaces the calls of repo_read_index with its _or_die version, if the error message is exactly the same. Signed-off-by: Stefan Beller <sbel...@google.com> --- builtin/add.c | 3 +-- builtin/check-ignore.c | 7 ++++--- builtin/clean.c | 4 ++-- builtin/mv.c | 3 +-- builtin/reset.c | 3 +-- builtin/rm.c | 3 +-- builtin/submodule--helper.c | 3 +-- repository.c | 6 ++++++ repository.h | 8 ++++++++ 9 files changed, 25 insertions(+), 15 deletions(-) diff --git a/builtin/add.c b/builtin/add.c index c9e2619a9ad..e4751c198c1 100644 --- a/builtin/add.c +++ b/builtin/add.c @@ -445,8 +445,7 @@ int cmd_add(int argc, const char **argv, const char *prefix) return 0; } - if (read_cache() < 0) - die(_("index file corrupt")); + repo_read_index_or_die(the_repository); die_in_unpopulated_submodule(&the_index, prefix); diff --git a/builtin/check-ignore.c b/builtin/check-ignore.c index ec9a959e08d..2a46bf9af7f 100644 --- a/builtin/check-ignore.c +++ b/builtin/check-ignore.c @@ -6,6 +6,7 @@ #include "pathspec.h" #include "parse-options.h" #include "submodule.h" +#include "repository.h" static int quiet, verbose, stdin_paths, show_non_matching, no_index; static const char * const check_ignore_usage[] = { @@ -172,9 +173,9 @@ int cmd_check_ignore(int argc, const char **argv, const char *prefix) if (show_non_matching && !verbose) die(_("--non-matching is only valid with --verbose")); - /* read_cache() is only necessary so we can watch out for submodules. */ - if (!no_index && read_cache() < 0) - die(_("index file corrupt")); + /* repo_read_index() is only necessary so we can watch out for submodules. */ + if (!no_index) + repo_read_index_or_die(the_repository); memset(&dir, 0, sizeof(dir)); setup_standard_excludes(&dir); diff --git a/builtin/clean.c b/builtin/clean.c index fad533a0a73..6c1c6fdd7f9 100644 --- a/builtin/clean.c +++ b/builtin/clean.c @@ -16,6 +16,7 @@ #include "column.h" #include "color.h" #include "pathspec.h" +#include "repository.h" static int force = -1; /* unset */ static int interactive; @@ -954,8 +955,7 @@ int cmd_clean(int argc, const char **argv, const char *prefix) if (remove_directories) dir.flags |= DIR_SHOW_IGNORED_TOO | DIR_KEEP_UNTRACKED_CONTENTS; - if (read_cache() < 0) - die(_("index file corrupt")); + repo_read_index_or_die(the_repository); if (!ignored) setup_standard_excludes(&dir); diff --git a/builtin/mv.c b/builtin/mv.c index 7a63667d648..7f62e626dda 100644 --- a/builtin/mv.c +++ b/builtin/mv.c @@ -140,8 +140,7 @@ int cmd_mv(int argc, const char **argv, const char *prefix) usage_with_options(builtin_mv_usage, builtin_mv_options); hold_locked_index(&lock_file, LOCK_DIE_ON_ERROR); - if (read_cache() < 0) - die(_("index file corrupt")); + repo_read_index_or_die(the_repository); source = internal_prefix_pathspec(prefix, argv, argc, 0); modes = xcalloc(argc, sizeof(enum update_mode)); diff --git a/builtin/reset.c b/builtin/reset.c index 7f1c3f02a30..fd514eec822 100644 --- a/builtin/reset.c +++ b/builtin/reset.c @@ -237,8 +237,7 @@ static void parse_args(struct pathspec *pathspec, } *rev_ret = rev; - if (read_cache() < 0) - die(_("index file corrupt")); + repo_read_index_or_die(the_repository); parse_pathspec(pathspec, 0, PATHSPEC_PREFER_FULL | diff --git a/builtin/rm.c b/builtin/rm.c index 5b6fc7ee818..3b90191aa53 100644 --- a/builtin/rm.c +++ b/builtin/rm.c @@ -267,8 +267,7 @@ int cmd_rm(int argc, const char **argv, const char *prefix) hold_locked_index(&lock_file, LOCK_DIE_ON_ERROR); - if (read_cache() < 0) - die(_("index file corrupt")); + repo_read_index_or_die(the_repository); parse_pathspec(&pathspec, 0, PATHSPEC_PREFER_CWD, diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c index c2403a915ff..7aebed9bd66 100644 --- a/builtin/submodule--helper.c +++ b/builtin/submodule--helper.c @@ -323,8 +323,7 @@ static int module_list_compute(int argc, const char **argv, if (pathspec->nr) ps_matched = xcalloc(pathspec->nr, 1); - if (read_cache() < 0) - die(_("index file corrupt")); + repo_read_index_or_die(the_repository); for (i = 0; i < active_nr; i++) { const struct cache_entry *ce = active_cache[i]; diff --git a/repository.c b/repository.c index beff3caa9e2..ceca14ba718 100644 --- a/repository.c +++ b/repository.c @@ -249,3 +249,9 @@ int repo_read_index(struct repository *repo) return read_index_from(repo->index, repo->index_file, repo->gitdir); } + +void repo_read_index_or_die(struct repository *repo) +{ + if (repo_read_index(repo) < 0) + die(_("index file corrupt")); +} diff --git a/repository.h b/repository.h index f2646f0c52a..8efd8979ad3 100644 --- a/repository.h +++ b/repository.h @@ -118,4 +118,12 @@ extern void repo_clear(struct repository *repo); */ extern int repo_read_index(struct repository *repo); +/* + * Populates the index in the repository from its index file, + * allocating the struct index if needed. + * + * If the index file cannot be read, die. + */ +void repo_read_index_or_die(struct repository *r); + #endif /* REPOSITORY_H */ -- 2.17.0.582.gccdcbd54c44.dirty