4
0
mirror of git://sourceware.org/git/newlib-cygwin.git synced 2025-03-02 13:05:42 +08:00

* (symlink_info::set_error): Change to return bool if input error should be

ignored.
(symlink_info::check): Treat path as a normal file if set_error returns false.
This commit is contained in:
Christopher Faylor 2005-10-11 16:06:10 +00:00
parent 458e656498
commit 143bf87846
2 changed files with 25 additions and 7 deletions

View File

@ -1,3 +1,10 @@
2005-10-11 Christopher Faylor <cgf@timesys.com>
* (symlink_info::set_error): Change to return bool if input error
should be ignored.
(symlink_info::check): Treat path as a normal file if set_error returns
false.
2005-10-03 Christopher Faylor <cgf@timesys.com> 2005-10-03 Christopher Faylor <cgf@timesys.com>
* cygheap.h (class process_lock): New class. * cygheap.h (class process_lock): New class.

View File

@ -101,7 +101,7 @@ struct symlink_info
bool case_check (char *path); bool case_check (char *path);
int check_sysfile (const char *path, HANDLE h); int check_sysfile (const char *path, HANDLE h);
int check_shortcut (const char *path, HANDLE h); int check_shortcut (const char *path, HANDLE h);
void set_error (int); bool set_error (int);
}; };
muto NO_COPY cwdstuff::cwd_lock; muto NO_COPY cwdstuff::cwd_lock;
@ -3130,12 +3130,23 @@ suffix_scan::next ()
} }
} }
void bool
symlink_info::set_error (int in_errno) symlink_info::set_error (int in_errno)
{ {
if ((pflags & PATH_NO_ACCESS_CHECK) && in_errno != ENAMETOOLONG) bool res;
return; if (!(pflags & PATH_NO_ACCESS_CHECK) || in_errno == ENAMETOOLONG || in_errno == EIO)
error = in_errno; {
error = in_errno;
res = true;
}
else if (in_errno == ENOENT)
res = true;
else
{
fileattr = FILE_ATTRIBUTE_NORMAL;
res = false;
}
return res;
} }
bool bool
@ -3243,8 +3254,8 @@ symlink_info::check (char *path, const suffix_info *suffixes, unsigned opt)
fileattr = 0; fileattr = 0;
goto file_not_symlink; goto file_not_symlink;
} }
set_error (geterrno_from_win_error (win_error, EACCES)); if (set_error (geterrno_from_win_error (win_error, EACCES)))
continue; continue;
} }
ext_tacked_on = !!*ext_here; ext_tacked_on = !!*ext_here;