From: Johannes Schindelin Date: Tue, 25 Oct 2005 23:41:20 +0000 (+0200) Subject: Work around missing hard links on FAT formatted media X-Git-Tag: v0.99.9~38 X-Git-Url: https://git.octo.it/?p=git.git;a=commitdiff_plain;h=9e48b389990c0201487e58f3bac32734a59a7e89 Work around missing hard links on FAT formatted media FAT -- like Coda -- does not like cross-directory hard links. To be precise, FAT does not like links at all. But links are not needed either. So get rid of them. Signed-off-by: Johannes Schindelin Signed-off-by: Junio C Hamano --- diff --git a/clone-pack.c b/clone-pack.c index 4f4975b4..96092190 100644 --- a/clone-pack.c +++ b/clone-pack.c @@ -211,7 +211,7 @@ static int clone_without_unpack(int fd[2]) ifd = fd[0]; snprintf(tmpfile, sizeof(tmpfile), - "%s/pack-XXXXXX", get_object_directory()); + "%s/pack/tmp-XXXXXX", get_object_directory()); ofd = mkstemp(tmpfile); if (ofd < 0) return error("unable to create temporary file %s", tmpfile); diff --git a/sha1_file.c b/sha1_file.c index e4567997..7fdc4696 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -1239,11 +1239,14 @@ int move_temp_to_file(const char *tmpfile, char *filename) * won't be able to check collisions, but that's not a * big deal. * + * The same holds for FAT formatted media. + * * When this succeeds, we just return 0. We have nothing * left to unlink. */ - if (ret == EXDEV && !rename(tmpfile, filename)) + if ((ret == EXDEV || ret == ENOTSUP) && !rename(tmpfile, filename)) return 0; + ret = errno; } unlink(tmpfile); if (ret) {