[FASTFAT]
authorPierre Schweitzer <pierre@reactos.org>
Fri, 17 Feb 2017 11:38:05 +0000 (11:38 +0000)
committerPierre Schweitzer <pierre@reactos.org>
Fri, 17 Feb 2017 11:38:05 +0000 (11:38 +0000)
Thomas->happiness++;

svn path=/trunk/; revision=73808

reactos/drivers/filesystems/fastfat/finfo.c
reactos/drivers/filesystems/fastfat/rw.c

index fde0be0..6247e3d 100644 (file)
@@ -97,7 +97,7 @@ VfatGetStandardInformation(
         StandardInfo->Directory = FALSE;
     }
     StandardInfo->NumberOfLinks = 1;
         StandardInfo->Directory = FALSE;
     }
     StandardInfo->NumberOfLinks = 1;
-    StandardInfo->DeletePending = BooleanFlagOn(FCB->Flags, FCB_DELETE_PENDING) ? TRUE : FALSE;
+    StandardInfo->DeletePending = BooleanFlagOn(FCB->Flags, FCB_DELETE_PENDING);
 
     *BufferLength -= sizeof(FILE_STANDARD_INFORMATION);
     return STATUS_SUCCESS;
 
     *BufferLength -= sizeof(FILE_STANDARD_INFORMATION);
     return STATUS_SUCCESS;
@@ -165,7 +165,7 @@ VfatSetBasicInformation(
     /* Check volume label bit */
     ASSERT(0 == (*FCB->Attributes & _A_VOLID));
 
     /* Check volume label bit */
     ASSERT(0 == (*FCB->Attributes & _A_VOLID));
 
-    if (FCB->Flags & FCB_IS_FATX_ENTRY)
+    if (BooleanFlagOn(FCB->Flags, FCB_IS_FATX_ENTRY))
     {
         if (BasicInfo->CreationTime.QuadPart != 0 && BasicInfo->CreationTime.QuadPart != -1)
         {
     {
         if (BasicInfo->CreationTime.QuadPart != 0 && BasicInfo->CreationTime.QuadPart != -1)
         {
@@ -254,7 +254,7 @@ VfatGetBasicInformation(
     if (*BufferLength < sizeof(FILE_BASIC_INFORMATION))
         return STATUS_BUFFER_OVERFLOW;
 
     if (*BufferLength < sizeof(FILE_BASIC_INFORMATION))
         return STATUS_BUFFER_OVERFLOW;
 
-    if (FCB->Flags & FCB_IS_FATX_ENTRY)
+    if (BooleanFlagOn(FCB->Flags, FCB_IS_FATX_ENTRY))
     {
         FsdDosDateTimeToSystemTime(DeviceExt,
                                    FCB->entry.FatX.CreationDate,
     {
         FsdDosDateTimeToSystemTime(DeviceExt,
                                    FCB->entry.FatX.CreationDate,
@@ -331,7 +331,7 @@ VfatSetDispositionInformation(
         return STATUS_SUCCESS;
     }
 
         return STATUS_SUCCESS;
     }
 
-    if (FCB->Flags & FCB_DELETE_PENDING)
+    if (BooleanFlagOn(FCB->Flags, FCB_DELETE_PENDING))
     {
         /* stream already marked for deletion. just update the file object */
         FileObject->DeletePending = TRUE;
     {
         /* stream already marked for deletion. just update the file object */
         FileObject->DeletePending = TRUE;
@@ -1043,7 +1043,7 @@ VfatGetNetworkOpenInformation(
     if (*BufferLength < sizeof(FILE_NETWORK_OPEN_INFORMATION))
         return(STATUS_BUFFER_OVERFLOW);
 
     if (*BufferLength < sizeof(FILE_NETWORK_OPEN_INFORMATION))
         return(STATUS_BUFFER_OVERFLOW);
 
-    if (Fcb->Flags & FCB_IS_FATX_ENTRY)
+    if (BooleanFlagOn(Fcb->Flags, FCB_IS_FATX_ENTRY))
     {
         FsdDosDateTimeToSystemTime(DeviceExt,
                                    Fcb->entry.FatX.CreationDate,
     {
         FsdDosDateTimeToSystemTime(DeviceExt,
                                    Fcb->entry.FatX.CreationDate,
@@ -1196,7 +1196,7 @@ UpdateFileSize(
     }
     if (!vfatFCBIsDirectory(Fcb))
     {
     }
     if (!vfatFCBIsDirectory(Fcb))
     {
-        if (Fcb->Flags & FCB_IS_FATX_ENTRY)
+        if (BooleanFlagOn(Fcb->Flags, FCB_IS_FATX_ENTRY))
             Fcb->entry.FatX.FileSize = Size;
         else
             Fcb->entry.Fat.FileSize = Size;
             Fcb->entry.FatX.FileSize = Size;
         else
             Fcb->entry.Fat.FileSize = Size;
@@ -1221,12 +1221,12 @@ VfatSetAllocationSizeInformation(
     ULONG ClusterSize = DeviceExt->FatInfo.BytesPerCluster;
     ULONG NewSize = AllocationSize->u.LowPart;
     ULONG NCluster;
     ULONG ClusterSize = DeviceExt->FatInfo.BytesPerCluster;
     ULONG NewSize = AllocationSize->u.LowPart;
     ULONG NCluster;
-    BOOLEAN AllocSizeChanged = FALSE;
+    BOOLEAN AllocSizeChanged = FALSE, IsFatX = BooleanFlagOn(Fcb->Flags, FCB_IS_FATX_ENTRY);
 
     DPRINT("VfatSetAllocationSizeInformation(File <%wZ>, AllocationSize %d %u)\n",
            &Fcb->PathNameU, AllocationSize->HighPart, AllocationSize->LowPart);
 
 
     DPRINT("VfatSetAllocationSizeInformation(File <%wZ>, AllocationSize %d %u)\n",
            &Fcb->PathNameU, AllocationSize->HighPart, AllocationSize->LowPart);
 
-    if (Fcb->Flags & FCB_IS_FATX_ENTRY)
+    if (IsFatX)
         OldSize = Fcb->entry.FatX.FileSize;
     else
         OldSize = Fcb->entry.Fat.FileSize;
         OldSize = Fcb->entry.FatX.FileSize;
     else
         OldSize = Fcb->entry.Fat.FileSize;
@@ -1278,7 +1278,7 @@ VfatSetAllocationSizeInformation(
                 return STATUS_DISK_FULL;
             }
 
                 return STATUS_DISK_FULL;
             }
 
-            if (Fcb->Flags & FCB_IS_FATX_ENTRY)
+            if (IsFatX)
             {
                 Fcb->entry.FatX.FirstCluster = FirstCluster;
             }
             {
                 Fcb->entry.FatX.FirstCluster = FirstCluster;
             }
@@ -1378,7 +1378,7 @@ VfatSetAllocationSizeInformation(
         }
         else
         {
         }
         else
         {
-            if (Fcb->Flags & FCB_IS_FATX_ENTRY)
+            if (IsFatX)
             {
                 Fcb->entry.FatX.FirstCluster = 0;
             }
             {
                 Fcb->entry.FatX.FirstCluster = 0;
             }
@@ -1454,7 +1454,7 @@ VfatQueryInformation(
     SystemBuffer = IrpContext->Irp->AssociatedIrp.SystemBuffer;
     BufferLength = IrpContext->Stack->Parameters.QueryFile.Length;
 
     SystemBuffer = IrpContext->Irp->AssociatedIrp.SystemBuffer;
     BufferLength = IrpContext->Stack->Parameters.QueryFile.Length;
 
-    if (!(FCB->Flags & FCB_IS_PAGE_FILE))
+    if (!BooleanFlagOn(FCB->Flags, FCB_IS_PAGE_FILE))
     {
         if (!ExAcquireResourceSharedLite(&FCB->MainResource,
                                          BooleanFlagOn(IrpContext->Flags, IRPCONTEXT_CANWAIT)))
     {
         if (!ExAcquireResourceSharedLite(&FCB->MainResource,
                                          BooleanFlagOn(IrpContext->Flags, IRPCONTEXT_CANWAIT)))
@@ -1532,7 +1532,7 @@ VfatQueryInformation(
             Status = STATUS_INVALID_PARAMETER;
     }
 
             Status = STATUS_INVALID_PARAMETER;
     }
 
-    if (!(FCB->Flags & FCB_IS_PAGE_FILE))
+    if (!BooleanFlagOn(FCB->Flags, FCB_IS_PAGE_FILE))
     {
         ExReleaseResourceLite(&FCB->MainResource);
     }
     {
         ExReleaseResourceLite(&FCB->MainResource);
     }
@@ -1607,7 +1607,7 @@ VfatSetInformation(
         }
     }
 
         }
     }
 
-    if (!(FCB->Flags & FCB_IS_PAGE_FILE))
+    if (!BooleanFlagOn(FCB->Flags, FCB_IS_PAGE_FILE))
     {
         if (!ExAcquireResourceExclusiveLite(&FCB->MainResource,
                                             BooleanFlagOn(IrpContext->Flags, IRPCONTEXT_CANWAIT)))
     {
         if (!ExAcquireResourceExclusiveLite(&FCB->MainResource,
                                             BooleanFlagOn(IrpContext->Flags, IRPCONTEXT_CANWAIT)))
@@ -1662,7 +1662,7 @@ VfatSetInformation(
             Status = STATUS_NOT_SUPPORTED;
     }
 
             Status = STATUS_NOT_SUPPORTED;
     }
 
-    if (!(FCB->Flags & FCB_IS_PAGE_FILE))
+    if (!BooleanFlagOn(FCB->Flags, FCB_IS_PAGE_FILE))
     {
         ExReleaseResourceLite(&FCB->MainResource);
     }
     {
         ExReleaseResourceLite(&FCB->MainResource);
     }
index ab6a332..86adf71 100644 (file)
@@ -547,7 +547,7 @@ VfatRead(
     LARGE_INTEGER ByteOffset;
     PVOID Buffer;
     ULONG BytesPerSector;
     LARGE_INTEGER ByteOffset;
     PVOID Buffer;
     ULONG BytesPerSector;
-    BOOLEAN PagingIo, CanWait;
+    BOOLEAN PagingIo, CanWait, IsVolume;
 
     ASSERT(IrpContext);
 
 
     ASSERT(IrpContext);
 
@@ -586,6 +586,7 @@ VfatRead(
     BytesPerSector = IrpContext->DeviceExt->FatInfo.BytesPerSector;
     PagingIo = BooleanFlagOn(IrpContext->Irp->Flags, IRP_PAGING_IO);
     CanWait = BooleanFlagOn(IrpContext->Flags, IRPCONTEXT_CANWAIT);
     BytesPerSector = IrpContext->DeviceExt->FatInfo.BytesPerSector;
     PagingIo = BooleanFlagOn(IrpContext->Irp->Flags, IRP_PAGING_IO);
     CanWait = BooleanFlagOn(IrpContext->Flags, IRPCONTEXT_CANWAIT);
+    IsVolume = BooleanFlagOn(Fcb->Flags, FCB_IS_VOLUME);
 
     /* fail if file is a directory and no paged read */
     if (*Fcb->Attributes & FILE_ATTRIBUTE_DIRECTORY && !PagingIo)
 
     /* fail if file is a directory and no paged read */
     if (*Fcb->Attributes & FILE_ATTRIBUTE_DIRECTORY && !PagingIo)
@@ -596,7 +597,7 @@ VfatRead(
 
     DPRINT("'%wZ', Offset: %u, Length %u\n", &Fcb->PathNameU, ByteOffset.u.LowPart, Length);
 
 
     DPRINT("'%wZ', Offset: %u, Length %u\n", &Fcb->PathNameU, ByteOffset.u.LowPart, Length);
 
-    if (ByteOffset.u.HighPart && !(Fcb->Flags & FCB_IS_VOLUME))
+    if (ByteOffset.u.HighPart && !IsVolume)
     {
        Status = STATUS_INVALID_PARAMETER;
        goto ByeBye;
     {
        Status = STATUS_INVALID_PARAMETER;
        goto ByeBye;
@@ -616,7 +617,7 @@ VfatRead(
        goto ByeBye;
     }
 
        goto ByeBye;
     }
 
-    if (IrpContext->Irp->Flags & (IRP_PAGING_IO | IRP_NOCACHE) || (Fcb->Flags & FCB_IS_VOLUME))
+    if (IrpContext->Irp->Flags & (IRP_PAGING_IO | IRP_NOCACHE) || IsVolume)
     {
         if (ByteOffset.u.LowPart % BytesPerSector != 0 || Length % BytesPerSector != 0)
         {
     {
         if (ByteOffset.u.LowPart % BytesPerSector != 0 || Length % BytesPerSector != 0)
         {
@@ -627,7 +628,7 @@ VfatRead(
         }
     }
 
         }
     }
 
-    if (Fcb->Flags & FCB_IS_VOLUME)
+    if (IsVolume)
     {
         Resource = &IrpContext->DeviceExt->DirResource;
     }
     {
         Resource = &IrpContext->DeviceExt->DirResource;
     }
@@ -770,7 +771,7 @@ VfatWrite(
     ULONG Length = 0;
     PVOID Buffer;
     ULONG BytesPerSector;
     ULONG Length = 0;
     PVOID Buffer;
     ULONG BytesPerSector;
-    BOOLEAN PagingIo, CanWait;
+    BOOLEAN PagingIo, CanWait, IsVolume;
 
     ASSERT(IrpContext);
 
 
     ASSERT(IrpContext);
 
@@ -806,6 +807,7 @@ VfatWrite(
 
     PagingIo = BooleanFlagOn(IrpContext->Irp->Flags, IRP_PAGING_IO);
     CanWait = BooleanFlagOn(IrpContext->Flags, IRPCONTEXT_CANWAIT);
 
     PagingIo = BooleanFlagOn(IrpContext->Irp->Flags, IRP_PAGING_IO);
     CanWait = BooleanFlagOn(IrpContext->Flags, IRPCONTEXT_CANWAIT);
+    IsVolume = BooleanFlagOn(Fcb->Flags, FCB_IS_VOLUME);
 
     /* fail if file is a directory and no paged read */
     if (*Fcb->Attributes & FILE_ATTRIBUTE_DIRECTORY && !PagingIo)
 
     /* fail if file is a directory and no paged read */
     if (*Fcb->Attributes & FILE_ATTRIBUTE_DIRECTORY && !PagingIo)
@@ -823,7 +825,7 @@ VfatWrite(
     Length = IrpContext->Stack->Parameters.Write.Length;
     BytesPerSector = IrpContext->DeviceExt->FatInfo.BytesPerSector;
 
     Length = IrpContext->Stack->Parameters.Write.Length;
     BytesPerSector = IrpContext->DeviceExt->FatInfo.BytesPerSector;
 
-    if (ByteOffset.u.HighPart && !(Fcb->Flags & FCB_IS_VOLUME))
+    if (ByteOffset.u.HighPart && !IsVolume)
     {
         Status = STATUS_INVALID_PARAMETER;
         goto ByeBye;
     {
         Status = STATUS_INVALID_PARAMETER;
         goto ByeBye;
@@ -840,7 +842,7 @@ VfatWrite(
         }
     }
 
         }
     }
 
-    if (IrpContext->Irp->Flags & (IRP_PAGING_IO|IRP_NOCACHE) || (Fcb->Flags & FCB_IS_VOLUME))
+    if (IrpContext->Irp->Flags & (IRP_PAGING_IO|IRP_NOCACHE) || IsVolume)
     {
         if (ByteOffset.u.LowPart % BytesPerSector != 0 || Length % BytesPerSector != 0)
         {
     {
         if (ByteOffset.u.LowPart % BytesPerSector != 0 || Length % BytesPerSector != 0)
         {
@@ -874,7 +876,7 @@ VfatWrite(
         }
     }
 
         }
     }
 
-    if (Fcb->Flags & FCB_IS_VOLUME)
+    if (IsVolume)
     {
         Resource = &IrpContext->DeviceExt->DirResource;
     }
     {
         Resource = &IrpContext->DeviceExt->DirResource;
     }
@@ -916,7 +918,7 @@ VfatWrite(
         }
     }
 
         }
     }
 
-    if (!CanWait && !(Fcb->Flags & FCB_IS_VOLUME))
+    if (!CanWait && !IsVolume)
     {
         if (ByteOffset.u.LowPart + Length > Fcb->RFCB.AllocationSize.u.LowPart)
         {
     {
         if (ByteOffset.u.LowPart + Length > Fcb->RFCB.AllocationSize.u.LowPart)
         {