diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-05 09:55:27 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-05 09:55:27 -0700 |
commit | 477606f57d6b1cce3f354d394be26745b92808f7 (patch) | |
tree | 6c777bb6e34ea74926b2de9f4bea13174f9af686 | |
parent | pretty_print_commit: add different formats (diff) | |
download | tgif-477606f57d6b1cce3f354d394be26745b92808f7.tar.xz |
git-fsck-cache: complain if no default references found
-rw-r--r-- | fsck-cache.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/fsck-cache.c b/fsck-cache.c index 4050c17eb0..d69c426b36 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) |