summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/syscalls.cc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2000-05-24 20:09:43 +0000
committerCorinna Vinschen <corinna@vinschen.de>2000-05-24 20:09:43 +0000
commit154110f5d3dc537e4a2154fbf4d3de0b173821d2 (patch)
tree6c5d55b5598533a7ddd412f6c3d34b6cd72bfd10 /winsup/cygwin/syscalls.cc
parente6dfde6f82dc1a477e8cbfad83548da8a31c1f2c (diff)
downloadcygnal-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.cc7
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,