]> sourceware.org Git - newlib-cygwin.git/commitdiff
* security.cc (set_file_sd): Drop using FILE_OPEN_FOR_RECOVERY flag in
authorCorinna Vinschen <corinna@vinschen.de>
Mon, 4 May 2009 09:16:42 +0000 (09:16 +0000)
committerCorinna Vinschen <corinna@vinschen.de>
Mon, 4 May 2009 09:16:42 +0000 (09:16 +0000)
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.

winsup/cygwin/ChangeLog
winsup/cygwin/exceptions.cc
winsup/cygwin/fhandler.cc
winsup/cygwin/mount.cc
winsup/cygwin/mount.h
winsup/cygwin/security.cc

index e7da5cf8372b6aafe5c2fb092e92c824ba15bf93..4ca22d84bd886b3847881e5181e7a876da4d37c4 100644 (file)
@@ -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
index 6a468cf80129701ae3d404f33c54f16fd0f76ca8..eeed74930574548cfb9df2917381cea32b636b1f 100644 (file)
@@ -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)
index d1f21ec2338848560f639b62adaf892fe870237f..ec0d6d021a644ecf64aa58e023bc9cfdcfaf9190 100644 (file)
@@ -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)
index 5080ebd20c81af419b8b40124293ab8c4093e1cd..e5af613a141034c0b52f4a9173fc093c3c99f2af 100644 (file)
@@ -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");
 
index 4537f465a3a4f0aa76dd439aa672500485d3d4cb..e03fd2e2070144ce35fba8d5883cc726f8b3cb37 100644 (file)
@@ -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)));
index a7d4a56f76ff4e5fcdfb0322bff18fb34cc97551..00a8c32cd52666c1ff05782c98c852e8bd667521 100644 (file)
@@ -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;
This page took 0.041629 seconds and 5 git commands to generate.