* path.cc (symlink_info::check): If GetFileAttributes returns
with ERROR_SHARING_VIOLATION, the file exists.
This commit is contained in:
parent
34667bbd39
commit
7a70dda0b8
|
@ -1,3 +1,8 @@
|
||||||
|
2005-06-06 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
|
* path.cc (symlink_info::check): If GetFileAttributes returns
|
||||||
|
with ERROR_SHARING_VIOLATION, the file exists.
|
||||||
|
|
||||||
2005-06-06 Corinna Vinschen <corinna@vinschen.de>
|
2005-06-06 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
* uname.cc (uname): Change "amd64" to "x86_64" as on Linux.
|
* uname.cc (uname): Change "amd64" to "x86_64" as on Linux.
|
||||||
|
|
|
@ -3159,15 +3159,24 @@ symlink_info::check (char *path, const suffix_info *suffixes, unsigned opt)
|
||||||
|
|
||||||
/* The above comment is not *quite* right. When calling
|
/* The above comment is not *quite* right. When calling
|
||||||
GetFileAttributes for a non-existant file an a Win9x share,
|
GetFileAttributes for a non-existant file an a Win9x share,
|
||||||
GetLastError returns ERROR_INVALID_FUNCTION. Go figure! */
|
GetLastError returns ERROR_INVALID_FUNCTION. Go figure!
|
||||||
|
Also, GetFileAttributes fails with ERROR_SHARING_VIOLATION
|
||||||
|
if the file is locked exclusively by another process.
|
||||||
|
If we don't special handle this here, the file is accidentally
|
||||||
|
treated as non-existant. */
|
||||||
DWORD win_error = GetLastError ();
|
DWORD win_error = GetLastError ();
|
||||||
if (win_error == ERROR_INVALID_FUNCTION)
|
if (win_error == ERROR_INVALID_FUNCTION)
|
||||||
win_error = ERROR_FILE_NOT_FOUND;
|
win_error = ERROR_FILE_NOT_FOUND;
|
||||||
|
else if (win_error == ERROR_SHARING_VIOLATION)
|
||||||
|
{
|
||||||
|
ext_tacked_on = !!*ext_here;
|
||||||
|
fileattr = 0;
|
||||||
|
goto file_not_symlink;
|
||||||
|
}
|
||||||
set_error (geterrno_from_win_error (win_error, EACCES));
|
set_error (geterrno_from_win_error (win_error, EACCES));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ext_tacked_on = !!*ext_here;
|
ext_tacked_on = !!*ext_here;
|
||||||
|
|
||||||
if (pcheck_case != PCHECK_RELAXED && !case_check (path)
|
if (pcheck_case != PCHECK_RELAXED && !case_check (path)
|
||||||
|
|
Loading…
Reference in New Issue