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 /fsck-cache.c | |
parent | 000182eacf99cde27d5916aa415921924b82972c (diff) | |
download | git-477606f57d6b1cce3f354d394be26745b92808f7.tar.gz git-477606f57d6b1cce3f354d394be26745b92808f7.tar.xz |
git-fsck-cache: complain if no default references found
Diffstat (limited to 'fsck-cache.c')
-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 4050c17eb..d69c426b3 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) |