* winsup.h (access_worker): Declare with added fhandler_base parameter.

* syscalls.cc (access_worker): Accommodate extra fhandler_base argument.  Use
it instead of stat_worker to determine stat information, when appropriate.
* fhandler.cc (fhandler_base::device_access_denied): Pass fhandler pointer to
access_worker so that it can use the proper method for determining stat
information.
* fhandler_disk_file.cc (fhandler_disk_file::opendir): Ditto.
This commit is contained in:
Christopher Faylor 2003-12-15 04:16:42 +00:00
parent 228f99a6c1
commit 9908d9977b
6 changed files with 17 additions and 6 deletions

View File

@ -1,3 +1,14 @@
2003-12-14 Christopher Faylor <cgf@redhat.com>
* winsup.h (access_worker): Declare with added fhandler_base parameter.
* syscalls.cc (access_worker): Accommodate extra fhandler_base
argument. Use it instead of stat_worker to determine stat information,
when appropriate.
* fhandler.cc (fhandler_base::device_access_denied): Pass fhandler
pointer to access_worker so that it can use the proper method for
determining stat information.
* fhandler_disk_file.cc (fhandler_disk_file::opendir): Ditto.
2003-12-14 Christopher Faylor <cgf@redhat.com>
* exceptions.cc (ctrl_c_handler): Remove this thread from the signal

View File

@ -328,7 +328,7 @@ fhandler_base::device_access_denied (int flags)
if (!mode)
mode |= R_OK;
return access_worker (pc, mode);
return access_worker (pc, mode, this);
}
/* Open system call handler function. */

View File

@ -632,7 +632,7 @@ fhandler_disk_file::opendir ()
set_errno (ENOMEM);
goto free_dirname;
}
else if (access_worker (pc, R_OK) != 0)
else if (access_worker (pc, R_OK, this) != 0)
goto free_dirent;
else
{

View File

@ -556,7 +556,7 @@ path_conv::check (const char *src, unsigned opt,
if (dev.major == DEV_CYGDRIVE_MAJOR)
{
if (!component)
fileattr = FILE_ATTRIBUTE_DIRECTORY;
fileattr = FILE_ATTRIBUTE_DIRECTORY | FILE_ATTRIBUTE_READONLY;
else
{
dev.devn = FH_FS;

View File

@ -1240,7 +1240,7 @@ lstat (const char *name, struct __stat32 *buf)
}
int
access_worker (path_conv& real_path, int flags)
access_worker (path_conv& real_path, int flags, fhandler_base *fh)
{
if (real_path.error)
{
@ -1268,7 +1268,7 @@ access_worker (path_conv& real_path, int flags)
return check_file_access (real_path, flags);
struct __stat64 st;
int r = stat_worker (real_path, &st, 0);
int r = fh ? fh->fstat (&st) : stat_worker (real_path, &st, 0);
if (r)
return -1;
r = -1;

View File

@ -296,7 +296,7 @@ int symlink_worker (const char *, const char *, bool, bool)
__attribute__ ((regparm (3)));
class path_conv;
int access_worker (path_conv&, int) __attribute__ ((regparm (2)));
int access_worker (path_conv&, int, class fhandler_base * = NULL) __attribute__ ((regparm (3)));
int fcntl_worker (int fd, int cmd, void *arg);