Re: [PATCH v2] Add an option not to use link(src, dest) && unlink(src) when that is unreliable
- From
Linus Torvalds <torvalds@linux-foundation.org>
- Date
- Apr 25, 2009, 17:39 UTC
- Message-ID
- <alpine.LFD.2.00.0904251037200.3101@localhost.localdomain>
- In-Reply-To
- <alpine.DEB.1.00.0904251155130.10279@pacific.mpi-cbg.de>
On Sat, 25 Apr 2009, Johannes Schindelin wrote:
Show 11 quoted lines
> diff --git a/sha1_file.c b/sha1_file.c
> index 8fe135d..bb6eecf 100644
> --- a/sha1_file.c
> +++ b/sha1_file.c
> @@ -2225,7 +2225,9 @@ int move_temp_to_file(const char *tmpfile, const char *filename)
> {
> int ret = 0;
>
> - if (link(tmpfile, filename))
> + if (unreliable_hardlinks)
> + ret = ~EEXIST; /* anything but EEXIST */Don't do this. ~EEXIST could be 0 (admittedly only if EEXIST is -1 which is not reasonable, but who knows about odd operating systems). Which is not a good return value either.
So why not just use an explicit error value like EIO? Don't play games with this.
Linus