Commit e164ddb1 by Edward Thomson

win32: return EACCES in `p_lstat`

Don't coalesce all errors into ENOENT.  At least identify EACCES.
All callers should be handling this case already, as the POSIX
`lstat` will return this.
parent 81aaf370
...@@ -148,12 +148,19 @@ static int lstat_w( ...@@ -148,12 +148,19 @@ static int lstat_w(
return git_win32__file_attribute_to_stat(buf, &fdata, path); return git_win32__file_attribute_to_stat(buf, &fdata, path);
} }
switch (GetLastError()) {
case ERROR_ACCESS_DENIED:
errno = EACCES;
break;
default:
errno = ENOENT; errno = ENOENT;
break;
}
/* To match POSIX behavior, set ENOTDIR when any of the folders in the /* To match POSIX behavior, set ENOTDIR when any of the folders in the
* file path is a regular file, otherwise set ENOENT. * file path is a regular file, otherwise set ENOENT.
*/ */
if (posix_enotdir) { if (errno == ENOENT && posix_enotdir) {
size_t path_len = wcslen(path); size_t path_len = wcslen(path);
/* scan up path until we find an existing item */ /* scan up path until we find an existing item */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment