The R Project SVN R

Rev

Rev 75971 | Rev 77324 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 75971 Rev 76170
Line 387... Line 387...
387
   which has been reported e.g. during installation of packages. */
387
   which has been reported e.g. during installation of packages. */
388
 
388
 
389
int Rwin_rename(const char *from, const char *to)
389
int Rwin_rename(const char *from, const char *to)
390
{
390
{
391
    for(int retries = 0; retries < 10; retries++) {
391
    for(int retries = 0; retries < 10; retries++) {
-
 
392
	/* coreutils first call MoveFileEx without flags; only if it fails
-
 
393
	   with ERROR_FILE_EXISTS or ERROR_ALREADY_EXISTING, they call again
-
 
394
	   with MOVEFILE_REPLACE_EXISTING */
392
	if (MoveFileEx(from, to, MOVEFILE_REPLACE_EXISTING | MOVEFILE_COPY_ALLOWED | MOVEFILE_WRITE_THROUGH))
395
	if (MoveFileEx(from, to, MOVEFILE_REPLACE_EXISTING | MOVEFILE_COPY_ALLOWED | MOVEFILE_WRITE_THROUGH))
393
	    return 0;
396
	    return 0;
394
	DWORD err = GetLastError();
397
	DWORD err = GetLastError();
395
	if (err != ERROR_SHARING_VIOLATION && err != ERROR_ACCESS_DENIED)
398
	if (err != ERROR_SHARING_VIOLATION && err != ERROR_ACCESS_DENIED)
396
	    return 1;
399
	    return 1;