diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2000-05-24 20:09:43 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2000-05-24 20:09:43 +0000 |
commit | 154110f5d3dc537e4a2154fbf4d3de0b173821d2 (patch) | |
tree | 6c5d55b5598533a7ddd412f6c3d34b6cd72bfd10 /winsup/cygwin/syscalls.cc | |
parent | e6dfde6f82dc1a477e8cbfad83548da8a31c1f2c (diff) | |
download | cygnal-154110f5d3dc537e4a2154fbf4d3de0b173821d2.tar.gz cygnal-154110f5d3dc537e4a2154fbf4d3de0b173821d2.tar.bz2 cygnal-154110f5d3dc537e4a2154fbf4d3de0b173821d2.zip |
* dir.cc (writable_directory): Comment out previous code,
return always 1 for now.
(mkdir): Call set_file_attribute explicitely with S_IFDIR mode bit.
* syscalls.cc (chown_worker): Ditto.
(chmod): Ditto.
* security.cc (get_nt_attribute): Fix error in debug output.
Never set FILE_DELETE_CHILD for files.
Construct appropriate inherit attribute according to file type.
Diffstat (limited to 'winsup/cygwin/syscalls.cc')
-rw-r--r-- | winsup/cygwin/syscalls.cc | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index cf743d005..d2eeab0d4 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -701,6 +701,8 @@ chown_worker (const char *name, symlink_follow fmode, uid_t uid, gid_t gid) uid = old_uid; if (gid == (gid_t) -1) gid = old_gid; + if (win32_path.file_attributes () & FILE_ATTRIBUTE_DIRECTORY) + attrib |= S_IFDIR; res = set_file_attribute (win32_path.has_acls (), win32_path.get_win32 (), uid, gid, attrib, @@ -805,9 +807,14 @@ chmod (const char *path, mode_t mode) uid_t uid; gid_t gid; + + if (win32_path.file_attributes () & FILE_ATTRIBUTE_DIRECTORY) + mode |= S_IFDIR; get_file_attribute (win32_path.has_acls (), win32_path.get_win32 (), NULL, &uid, &gid); + if (win32_path.file_attributes () & FILE_ATTRIBUTE_DIRECTORY) + mode |= S_IFDIR; if (! set_file_attribute (win32_path.has_acls (), win32_path.get_win32 (), uid, gid, |