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 <Johannes.Schindelin@gmx.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:

committed by
Junio C Hamano

parent
303958dc42
commit
9e48b38999
@ -211,7 +211,7 @@ static int clone_without_unpack(int fd[2])
|
|||||||
|
|
||||||
ifd = fd[0];
|
ifd = fd[0];
|
||||||
snprintf(tmpfile, sizeof(tmpfile),
|
snprintf(tmpfile, sizeof(tmpfile),
|
||||||
"%s/pack-XXXXXX", get_object_directory());
|
"%s/pack/tmp-XXXXXX", get_object_directory());
|
||||||
ofd = mkstemp(tmpfile);
|
ofd = mkstemp(tmpfile);
|
||||||
if (ofd < 0)
|
if (ofd < 0)
|
||||||
return error("unable to create temporary file %s", tmpfile);
|
return error("unable to create temporary file %s", tmpfile);
|
||||||
|
@ -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
|
* won't be able to check collisions, but that's not a
|
||||||
* big deal.
|
* big deal.
|
||||||
*
|
*
|
||||||
|
* The same holds for FAT formatted media.
|
||||||
|
*
|
||||||
* When this succeeds, we just return 0. We have nothing
|
* When this succeeds, we just return 0. We have nothing
|
||||||
* left to unlink.
|
* left to unlink.
|
||||||
*/
|
*/
|
||||||
if (ret == EXDEV && !rename(tmpfile, filename))
|
if ((ret == EXDEV || ret == ENOTSUP) && !rename(tmpfile, filename))
|
||||||
return 0;
|
return 0;
|
||||||
|
ret = errno;
|
||||||
}
|
}
|
||||||
unlink(tmpfile);
|
unlink(tmpfile);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
Reference in New Issue
Block a user