From 477606f57d6b1cce3f354d394be26745b92808f7 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Sun, 5 Jun 2005 09:55:27 -0700 Subject: [PATCH] git-fsck-cache: complain if no default references found --- fsck-cache.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/fsck-cache.c b/fsck-cache.c index 4050c17e..d69c426b 100644 --- a/fsck-cache.c +++ b/fsck-cache.c @@ -368,7 +368,7 @@ static int read_sha1_reference(const char *path) return 0; } -static void find_file_objects(const char *base, const char *name) +static int find_file_objects(const char *base, const char *name) { int baselen = strlen(base); int namelen = strlen(name); @@ -379,34 +379,36 @@ static void find_file_objects(const char *base, const char *name) path[baselen] = '/'; memcpy(path + baselen + 1, name, namelen+1); if (stat(path, &st) < 0) - return; + return 0; /* * Recurse into directories */ if (S_ISDIR(st.st_mode)) { + int count = 0; DIR *dir = opendir(path); if (dir) { struct dirent *de; while ((de = readdir(dir)) != NULL) { if (de->d_name[0] == '.') continue; - find_file_objects(path, de->d_name); + count += find_file_objects(path, de->d_name); } closedir(dir); } - return; - } - if (S_ISREG(st.st_mode)) { - read_sha1_reference(path); - return; + return count; } + if (S_ISREG(st.st_mode)) + return read_sha1_reference(path) == 0; + return 0; } static void get_default_heads(void) { char *git_dir = gitenv(GIT_DIR_ENVIRONMENT) ? : DEFAULT_GIT_DIR_ENVIRONMENT; - find_file_objects(git_dir, "refs"); + int count = find_file_objects(git_dir, "refs"); + if (!count) + die("No default references"); } int main(int argc, char **argv) -- 2.11.0