diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2009-05-04 09:16:42 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2009-05-04 09:16:42 +0000 |
commit | 9d86c13dbb5647d22f16a4baec38b2a27e75fddf (patch) | |
tree | 5703cf4d3012168172503711a984b63338fc7c27 | |
parent | 56a4d31a7f239e32a8be234dff8bb05425a6d9af (diff) | |
download | newlib-9d86c13dbb5647d22f16a4baec38b2a27e75fddf.zip newlib-9d86c13dbb5647d22f16a4baec38b2a27e75fddf.tar.gz newlib-9d86c13dbb5647d22f16a4baec38b2a27e75fddf.tar.bz2 |
* security.cc (set_file_sd): Drop using FILE_OPEN_FOR_RECOVERY flag in
call to NtOpenFile.
* exceptions.cc (open_stackdumpfile): Ditto in call to NtCreateFile.
* fhandler.cc (fhandler_base::open): Ditto. Simplify setting
create_options.
* mount.cc (fs_info::update): Recognize offline storage.
(fillout_mntent): Report UDF and offline storage.
* mount.h (class fs_info): Add is_csc_cache status flag.
-rw-r--r-- | winsup/cygwin/ChangeLog | 12 | ||||
-rw-r--r-- | winsup/cygwin/exceptions.cc | 3 | ||||
-rw-r--r-- | winsup/cygwin/fhandler.cc | 23 | ||||
-rw-r--r-- | winsup/cygwin/mount.cc | 6 | ||||
-rw-r--r-- | winsup/cygwin/mount.h | 2 | ||||
-rw-r--r-- | winsup/cygwin/security.cc | 3 |
6 files changed, 26 insertions, 23 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index e7da5cf..4ca22d8 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,15 @@ +2009-05-03 Corinna Vinschen <corinna@vinschen.de> + + * security.cc (set_file_sd): Drop using FILE_OPEN_FOR_RECOVERY flag in + call to NtOpenFile. + * exceptions.cc (open_stackdumpfile): Ditto in call to NtCreateFile. + * fhandler.cc (fhandler_base::open): Ditto. Simplify setting + create_options. + + * mount.cc (fs_info::update): Recognize offline storage. + (fillout_mntent): Report UDF and offline storage. + * mount.h (class fs_info): Add is_csc_cache status flag. + 2009-05-04 Christopher Faylor <me+cygwin@cgf.cx> * fhandler_console.cc (fhandler_console::write_console): Eliminate diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index 6a468cf..eeed749 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -160,8 +160,7 @@ open_stackdumpfile () status = NtCreateFile (&h, GENERIC_WRITE | SYNCHRONIZE, &attr, &io, NULL, FILE_ATTRIBUTE_NORMAL, 0, FILE_OVERWRITE_IF, FILE_SYNCHRONOUS_IO_NONALERT - | FILE_OPEN_FOR_BACKUP_INTENT - | FILE_OPEN_FOR_RECOVERY, NULL, 0); + | FILE_OPEN_FOR_BACKUP_INTENT, NULL, 0); if (NT_SUCCESS (status)) { if (!myself->cygstarted) diff --git a/winsup/cygwin/fhandler.cc b/winsup/cygwin/fhandler.cc index d1f21ec..ec0d6d0 100644 --- a/winsup/cygwin/fhandler.cc +++ b/winsup/cygwin/fhandler.cc @@ -460,7 +460,7 @@ fhandler_base::open (int flags, mode_t mode) ULONG file_attributes = 0; ULONG shared = (get_major () == DEV_TAPE_MAJOR ? 0 : FILE_SHARE_VALID_FLAGS); ULONG create_disposition; - ULONG create_options; + ULONG create_options = FILE_OPEN_FOR_BACKUP_INTENT; SECURITY_ATTRIBUTES sa = sec_none; security_descriptor sd; OBJECT_ATTRIBUTES attr; @@ -477,38 +477,23 @@ fhandler_base::open (int flags, mode_t mode) { case query_read_control: access = READ_CONTROL; - create_options = FILE_OPEN_FOR_BACKUP_INTENT; break; case query_read_attributes: access = READ_CONTROL | FILE_READ_ATTRIBUTES; - create_options = FILE_OPEN_FOR_BACKUP_INTENT; break; case query_write_control: access = READ_CONTROL | WRITE_OWNER | WRITE_DAC | FILE_WRITE_ATTRIBUTES; - create_options = FILE_OPEN_FOR_BACKUP_INTENT | FILE_OPEN_FOR_RECOVERY; break; case query_write_attributes: access = READ_CONTROL | FILE_WRITE_ATTRIBUTES; - create_options = FILE_OPEN_FOR_BACKUP_INTENT | FILE_OPEN_FOR_RECOVERY; break; default: if ((flags & O_ACCMODE) == O_RDONLY) - { - access = GENERIC_READ; - create_options = FILE_OPEN_FOR_BACKUP_INTENT; - } + access = GENERIC_READ; else if ((flags & O_ACCMODE) == O_WRONLY) - { - access = GENERIC_WRITE | READ_CONTROL | FILE_READ_ATTRIBUTES; - create_options = FILE_OPEN_FOR_BACKUP_INTENT - | FILE_OPEN_FOR_RECOVERY; - } + access = GENERIC_WRITE | READ_CONTROL | FILE_READ_ATTRIBUTES; else - { - access = GENERIC_READ | GENERIC_WRITE; - create_options = FILE_OPEN_FOR_BACKUP_INTENT - | FILE_OPEN_FOR_RECOVERY; - } + access = GENERIC_READ | GENERIC_WRITE; if (flags & O_SYNC) create_options |= FILE_WRITE_THROUGH; if (flags & O_DIRECT) diff --git a/winsup/cygwin/mount.cc b/winsup/cygwin/mount.cc index 5080ebd..e5af613 100644 --- a/winsup/cygwin/mount.cc +++ b/winsup/cygwin/mount.cc @@ -213,6 +213,8 @@ fs_info::update (PUNICODE_STRING upath, HANDLE in_vol) RtlInitCountedUnicodeString (&fsname, ffai_buf.ffai.FileSystemName, ffai_buf.ffai.FileSystemNameLength); is_fat (RtlEqualUnicodePathPrefix (&fsname, L"FAT", TRUE)); + RtlInitUnicodeString (&testname, L"CSC-CACHE"); + is_csc_cache (RtlEqualUnicodeString (&fsname, &testname, FALSE)); RtlInitUnicodeString (&testname, L"NTFS"); if (is_remote_drive ()) { @@ -1367,8 +1369,12 @@ fillout_mntent (const char *native_path, const char *posix_path, unsigned flags) strcpy (_my_tls.locals.mnt_type, (char *) "ntfs"); else if (mntinfo.is_netapp ()) strcpy (_my_tls.locals.mnt_type, (char *) "netapp"); + else if (mntinfo.is_udf ()) + strcpy (_my_tls.locals.mnt_type, (char *) "udf"); else if (mntinfo.is_cdrom ()) strcpy (_my_tls.locals.mnt_type, (char *) "iso9660"); + else if (mntinfo.is_csc_cache ()) + strcpy (_my_tls.locals.mnt_type, (char *) "csc-cache"); else strcpy (_my_tls.locals.mnt_type, (char *) "unknown"); diff --git a/winsup/cygwin/mount.h b/winsup/cygwin/mount.h index 4537f46..e03fd2e 100644 --- a/winsup/cygwin/mount.h +++ b/winsup/cygwin/mount.h @@ -32,6 +32,7 @@ class fs_info unsigned is_netapp : 1; unsigned is_cdrom : 1; unsigned is_udf : 1; + unsigned is_csc_cache : 1; } status; ULONG sernum; public: @@ -54,6 +55,7 @@ class fs_info IMPLEMENT_STATUS_FLAG (bool, is_netapp) IMPLEMENT_STATUS_FLAG (bool, is_cdrom) IMPLEMENT_STATUS_FLAG (bool, is_udf) + IMPLEMENT_STATUS_FLAG (bool, is_csc_cache) ULONG serial_number () const { return sernum; } bool update (PUNICODE_STRING, HANDLE) __attribute__ ((regparm (3))); diff --git a/winsup/cygwin/security.cc b/winsup/cygwin/security.cc index a7d4a56..00a8c32 100644 --- a/winsup/cygwin/security.cc +++ b/winsup/cygwin/security.cc @@ -110,8 +110,7 @@ set_file_sd (HANDLE fh, path_conv &pc, security_descriptor &sd, bool is_chown) status = NtOpenFile (&fh, (is_chown ? WRITE_OWNER : 0) | WRITE_DAC, pc.get_object_attr (attr, sec_none_nih), &io, FILE_SHARE_VALID_FLAGS, - FILE_OPEN_FOR_BACKUP_INTENT - | FILE_OPEN_FOR_RECOVERY); + FILE_OPEN_FOR_BACKUP_INTENT); if (!NT_SUCCESS (status)) { fh = NULL; |