X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=sha1_file.c;h=642f00d3d47c3d782c3dfe522d21819c1a67de30;hb=bd321bcc51e95f644ac5335abe673afcbcaade62;hp=7fdc46969d718096f6492f08489ae20b9693c64b;hpb=9e48b389990c0201487e58f3bac32734a59a7e89;p=git.git diff --git a/sha1_file.c b/sha1_file.c index 7fdc4696..642f00d3 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -1232,19 +1232,20 @@ static int link_temp_to_file(const char *tmpfile, char *filename) int move_temp_to_file(const char *tmpfile, char *filename) { int ret = link_temp_to_file(tmpfile, filename); - if (ret) { - /* - * Coda hack - coda doesn't like cross-directory links, - * so we fall back to a rename, which will mean that it - * 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 || ret == ENOTSUP) && !rename(tmpfile, filename)) + + /* + * Coda hack - coda doesn't like cross-directory links, + * so we fall back to a rename, which will mean that it + * 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 && ret != EEXIST) { + if (!rename(tmpfile, filename)) return 0; ret = errno; }