* fhandler.cc (fhandler_base::fchmod): Do the right thing when changing an "on

disk" device or fifo.
(fhandler_base::fchown): Ditto for changing ownership.
* fhandler_disk_file.cc (fhandler_base::fstat_helper): Accommodate device files
on ntfs partitions.
* path.cc (path_conv::check): Use isfs function to figure out if a path exists
on a filesystem to make sure that device files are caught.
This commit is contained in:
Christopher Faylor 2004-12-26 02:10:30 +00:00
parent 9a3412eea8
commit 8711eddd80
5 changed files with 24 additions and 3 deletions

View File

@ -1,3 +1,13 @@
2004-12-25 Christopher Faylor <cgf@timesys.com>
* fhandler.cc (fhandler_base::fchmod): Do the right thing when changing
an "on disk" device or fifo.
(fhandler_base::fchown): Ditto for changing ownership.
* fhandler_disk_file.cc (fhandler_base::fstat_helper): Accommodate
device files on ntfs partitions.
* path.cc (path_conv::check): Use isfs function to figure out if a path
exists on a filesystem to make sure that device files are caught.
2004-12-24 Christopher Faylor <cgf@timesys.com> 2004-12-24 Christopher Faylor <cgf@timesys.com>
* child_info.h (CURR_CHILD_INFO_MAGIC): Update. * child_info.h (CURR_CHILD_INFO_MAGIC): Update.

View File

@ -1520,6 +1520,9 @@ fhandler_base::closedir (DIR *)
int int
fhandler_base::fchmod (mode_t mode) fhandler_base::fchmod (mode_t mode)
{ {
extern int chmod_device (path_conv& pc, mode_t mode);
if (pc.is_fs_special ())
return chmod_device (pc, mode);
/* By default, just succeeds. */ /* By default, just succeeds. */
return 0; return 0;
} }
@ -1527,6 +1530,8 @@ fhandler_base::fchmod (mode_t mode)
int int
fhandler_base::fchown (__uid32_t uid, __gid32_t gid) fhandler_base::fchown (__uid32_t uid, __gid32_t gid)
{ {
if (pc.is_fs_special ())
return ((fhandler_disk_file *) this)->fhandler_disk_file::fchown (uid, gid);
/* By default, just succeeds. */ /* By default, just succeeds. */
return 0; return 0;
} }

View File

@ -300,8 +300,15 @@ fhandler_base::fstat_helper (struct __stat64 *buf,
if (pc.has_attribute (FILE_ATTRIBUTE_READONLY) && !pc.issymlink ()) if (pc.has_attribute (FILE_ATTRIBUTE_READONLY) && !pc.issymlink ())
buf->st_mode &= ~(S_IWUSR | S_IWGRP | S_IWOTH); buf->st_mode &= ~(S_IWUSR | S_IWGRP | S_IWOTH);
if (!(buf->st_mode & S_IFMT)) if (buf->st_mode & S_IFMT)
/* nothing */;
else if (!is_fs_special ())
buf->st_mode |= S_IFREG; buf->st_mode |= S_IFREG;
else
{
buf->st_dev = dev ();
buf->st_mode = dev ().mode;
}
} }
else else
{ {

View File

@ -816,7 +816,7 @@ out:
return; return;
} }
if (dev.devn == FH_FS) if (dev.isfs ())
{ {
if (strncmp (path, "\\\\.\\", 4)) if (strncmp (path, "\\\\.\\", 4))
{ {

View File

@ -71,7 +71,6 @@ set_myself (HANDLE h)
ForceCloseHandle (cygheap->pid_handle); ForceCloseHandle (cygheap->pid_handle);
cygheap->pid_handle = NULL; cygheap->pid_handle = NULL;
} }
return;
} }
/* Initialize the process table entry for the current task. /* Initialize the process table entry for the current task.