From: Brandon Casey Date: Tue, 5 Aug 2008 18:01:50 +0000 (-0500) Subject: Teach fsck and prune that tmp_obj_ file names may not be 14 bytes long X-Git-Tag: v1.6.0-rc2~7 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=3d32a46b247222a97007419fa865efce959b002d;p=git.git Teach fsck and prune that tmp_obj_ file names may not be 14 bytes long As Shawn pointed out, not all temporary file creation routines can ensure that the generated temporary file is of a certain length. e.g. Java's createTempFile(prefix, suffix). So just depend on the prefix 'tmp_obj_' for detection. Update prune, and fix the "fix" introduced by a08c53a1 :) Signed-off-by: Brandon "appendixless" Casey Acked-by: Shawn O. Pearce Signed-off-by: Junio C Hamano --- diff --git a/builtin-fsck.c b/builtin-fsck.c index 6eb7da88d..d3f3de944 100644 --- a/builtin-fsck.c +++ b/builtin-fsck.c @@ -385,7 +385,7 @@ static void fsck_dir(int i, char *path) add_sha1_list(sha1, DIRENT_SORT_HINT(de)); continue; } - if (prefixcmp(de->d_name, "tmp_obj_")) + if (!prefixcmp(de->d_name, "tmp_obj_")) continue; fprintf(stderr, "bad sha1 file: %s/%s\n", path, de->d_name); } diff --git a/builtin-prune.c b/builtin-prune.c index 947de8cf2..c767a0ac8 100644 --- a/builtin-prune.c +++ b/builtin-prune.c @@ -69,11 +69,6 @@ static int prune_dir(int i, char *path) if (de->d_name[0] != '.') break; continue; - case 14: - if (prefixcmp(de->d_name, "tmp_obj_")) - break; - prune_tmp_object(path, de->d_name); - continue; case 38: sprintf(name, "%02x", i); memcpy(name+2, de->d_name, len+1); @@ -90,6 +85,10 @@ static int prune_dir(int i, char *path) prune_object(path, de->d_name, sha1); continue; } + if (!prefixcmp(de->d_name, "tmp_obj_")) { + prune_tmp_object(path, de->d_name); + continue; + } fprintf(stderr, "bad sha1 file: %s/%s\n", path, de->d_name); } if (!show_only)