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:
parent
05ec950cc2
commit
55246d6c1c
2 changed files with 18 additions and 7 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue