apply debian/patches/05_nfs_fix.diff

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10906 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
William S Fulton 2008-11-03 14:03:21 +00:00
commit 55246d6c1c
2 changed files with 18 additions and 7 deletions

View file

@ -381,12 +381,6 @@ ccache can handle a much wider ranger of compiler options
.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

View file

@ -58,9 +58,26 @@ void copy_fd(int fd_in, int fd_out)
}
}
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