* 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:
parent
9a3412eea8
commit
8711eddd80
|
@ -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.
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
@ -816,7 +816,7 @@ out:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dev.devn == FH_FS)
|
if (dev.isfs ())
|
||||||
{
|
{
|
||||||
if (strncmp (path, "\\\\.\\", 4))
|
if (strncmp (path, "\\\\.\\", 4))
|
||||||
{
|
{
|
||||||
|
|
|
@ -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.
|
||||||
|
|
Loading…
Reference in New Issue