aboutsummaryrefslogtreecommitdiff
path: root/builtin-fsck.c
diff options
context:
space:
mode:
authorShawn O. Pearce <spearce@spearce.org>2008-07-26 21:33:00 -0500
committerJunio C Hamano <gitster@pobox.com>2008-07-27 14:49:26 -0700
commita08c53a119999df5b76e405195fa6c5e7d4b689f (patch)
tree9a0ada907449af7bed652532a6529a5158a5c509 /builtin-fsck.c
parentf5d600e2dd8721d7b9177f1c82fe54822d9f1d62 (diff)
downloadgit-a08c53a119999df5b76e405195fa6c5e7d4b689f.tar.gz
git-a08c53a119999df5b76e405195fa6c5e7d4b689f.tar.xz
fsck: Don't require tmp_obj_ file names are 14 bytes in length
Not all temporary file creation routines will ensure 14 bytes are used to generate the temporary file name. In C Git this may be true, but alternate implementations such as jgit are not always able to generate a temporary file name with a specific prefix and also ensure the file name length is 14 bytes long. Since temporary files in a directory we are fsck'ing should be uncommon (as they are short lived only long enough for an active writer to finish writing the file and rename it) we shouldn't see these show up very often. Always using a prefixcmp() call and ignoring the length opens up room for other implementations to use different name generation schemes. Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin-fsck.c')
-rw-r--r--builtin-fsck.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/builtin-fsck.c b/builtin-fsck.c
index 7a4a4f144..6eb7da88d 100644
--- a/builtin-fsck.c
+++ b/builtin-fsck.c
@@ -377,10 +377,6 @@ static void fsck_dir(int i, char *path)
if (de->d_name[0] != '.')
break;
continue;
- case 14:
- if (prefixcmp(de->d_name, "tmp_obj_"))
- break;
- continue;
case 38:
sprintf(name, "%02x", i);
memcpy(name+2, de->d_name, len+1);
@@ -389,6 +385,8 @@ static void fsck_dir(int i, char *path)
add_sha1_list(sha1, DIRENT_SORT_HINT(de));
continue;
}
+ if (prefixcmp(de->d_name, "tmp_obj_"))
+ continue;
fprintf(stderr, "bad sha1 file: %s/%s\n", path, de->d_name);
}
closedir(dir);