diff options
author | Christopher Faylor <me@cgf.cx> | 2001-10-05 04:21:41 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2001-10-05 04:21:41 +0000 |
commit | 8d817b0f9ed20cfa5e9482074999c2973a2a9543 (patch) | |
tree | d5e8428cca934ae3cbca7ef4ea839c08cb5280f1 /winsup/cygwin/fhandler_mem.cc | |
parent | 291ae2c1e74db2d13d300ddb3fa303a2b39ca41d (diff) | |
download | cygnal-8d817b0f9ed20cfa5e9482074999c2973a2a9543.tar.gz cygnal-8d817b0f9ed20cfa5e9482074999c2973a2a9543.tar.bz2 cygnal-8d817b0f9ed20cfa5e9482074999c2973a2a9543.zip |
Add second path_conv * argument to fstat()s throughout.
* fhandler.h: Change read and fstat to regparm/stdcall throughout.
(fhandler_base::fstat): Just declare. Don't define.
(fhandler_disk_file::fstat_helper): Declare.
* fhandler.cc (fhandler_base::fstat): Move here from fhandler.h, adapt from
former stat_dev().
(fhandler_disk_file::fstat): Move most of the disk-file-specific logic from
stat_worker to here. Use fstat_helper to derive final fstat output.
(fhandler_disk_file::fstat_helper): New method, renamed from former fstat
method.
(num_entries): Moved here from syscalls.cc.
* fhandler_mem.cc (fhandler_dev_mem::fstat): Use base class to initialize most
stuff. Invert has_physical_mem_access test for establishing permissions.
* fhandler_raw.cc (fhandler_dev_raw::fstat): Eliminate unneed test and memory
clearing. Use base class to initialize most stuff.
* syscalls.cc (stat_dev): Eliminate.
(stat_worker): Simply call fstat method to generate fstat output. Move all
device specific code to appropriate fstats.
* dir.cc (opendir): Pass correct arg to stat_worker to allow following
symlinks.
Diffstat (limited to 'winsup/cygwin/fhandler_mem.cc')
-rw-r--r-- | winsup/cygwin/fhandler_mem.cc | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/winsup/cygwin/fhandler_mem.cc b/winsup/cygwin/fhandler_mem.cc index d99ab1c3d..7a839e99d 100644 --- a/winsup/cygwin/fhandler_mem.cc +++ b/winsup/cygwin/fhandler_mem.cc @@ -403,23 +403,15 @@ fhandler_dev_mem::fixup_mmap_after_fork (HANDLE h, DWORD access, DWORD offset, } int -fhandler_dev_mem::fstat (struct stat *buf) +fhandler_dev_mem::fstat (struct stat *buf, path_conv *pc) { - if (!buf) - { - set_errno (EINVAL); - return -1; - } - - memset (buf, 0, sizeof *buf); + this->fhandler_base::fstat (buf, pc); buf->st_mode = S_IFCHR; - if (!wincap.has_physical_mem_access ()) + if (wincap.has_physical_mem_access ()) buf->st_mode |= S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH; - buf->st_nlink = 1; buf->st_blksize = getpagesize (); - buf->st_dev = buf->st_rdev = get_device () << 8 | (unit & 0xff); return 0; } |