/trunk/CCache/debian/patches/05_nfs_fix.diff
Unknown | 45 lines | 43 code | 2 blank | 0 comment | 0 complexity | 4c722c465f522ddab3a91813caa869fb MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- --- ccache.1.orig 2007-05-20 17:30:57.000000000 +1200
- +++ ccache.1 2007-05-20 17:31:27.000000000 +1200
- @@ -367,12 +367,6 @@
- .IP o
- ccache avoids a double call to cpp on a cache miss
- .PP
- -.SH "BUGS"
- -.PP
- -When the cache is stored on an NFS filesystem, the filesystem must be
- -exported with the \fBno_subtree_check\fP option to make renames between
- -directories reliable\&.
- -.PP
- .SH "CREDITS"
- .PP
- Thanks to the following people for their contributions to ccache
- --- util.c.patched 2007-05-20 18:19:11.000000000 +1200
- +++ util.c 2007-05-20 18:20:55.000000000 +1200
- @@ -58,9 +58,26 @@
- }
- }
-
- +static int safe_rename(const char* oldpath, const char* newpath)
- +{
- + /* safe_rename is for creating entries in the cache.
- +
- + Works like rename(), but it never overwrites an existing
- + cache entry. This avoids corruption on NFS. */
- + int status = link( oldpath, newpath );
- + if( status == 0 || errno == EEXIST )
- + {
- + return unlink( oldpath );
- + }
- + else
- + {
- + return -1;
- + }
- +}
- +
- /* move a file using rename */
- int move_file(const char *src, const char *dest) {
- - return rename(src, dest);
- + return safe_rename(src, dest);
- }
-
- /* copy a file - used when hard links don't work