https://git.reactos.org/?p=reactos.git;a=commitdiff;h=41ad62ea69017b43ed1d8…
commit 41ad62ea69017b43ed1d873c7fc4081ffdc9b483
Author:     Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
AuthorDate: Wed Aug 14 15:22:55 2019 +0200
Commit:     Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
CommitDate: Sat Aug 31 00:25:06 2019 +0200
    [FREELDR] Move around & static-ify some disk/partition functions.
---
 boot/freeldr/freeldr/disk/partition.c | 258 +++++++++++++++++++---------------
 boot/freeldr/freeldr/include/disk.h   |  21 ++-
 2 files changed, 158 insertions(+), 121 deletions(-)
diff --git a/boot/freeldr/freeldr/disk/partition.c b/boot/freeldr/freeldr/disk/partition.c
index 3aa69d9b589..67852a43048 100644
--- a/boot/freeldr/freeldr/disk/partition.c
+++ b/boot/freeldr/freeldr/disk/partition.c
@@ -49,9 +49,98 @@ static struct
     { 0x002EE400, 0x00177000, PARTITION_FAT_16 }  /* Cache3, Z: */
 };
-BOOLEAN DiskGetActivePartitionEntry(UCHAR DriveNumber,
-                                    PPARTITION_TABLE_ENTRY PartitionTableEntry,
-                                    ULONG *ActivePartition)
+static BOOLEAN
+DiskReadBootRecord(
+    IN UCHAR DriveNumber,
+    IN ULONGLONG LogicalSectorNumber,
+    OUT PMASTER_BOOT_RECORD BootRecord)
+{
+    ULONG Index;
+
+    /* Read master boot record */
+    if (!MachDiskReadLogicalSectors(DriveNumber, LogicalSectorNumber, 1, DiskReadBuffer))
+    {
+        return FALSE;
+    }
+    RtlCopyMemory(BootRecord, DiskReadBuffer, sizeof(MASTER_BOOT_RECORD));
+
+    TRACE("Dumping partition table for drive 0x%x:\n", DriveNumber);
+    TRACE("Boot record logical start sector = %d\n", LogicalSectorNumber);
+    TRACE("sizeof(MASTER_BOOT_RECORD) = 0x%x.\n", sizeof(MASTER_BOOT_RECORD));
+
+    for (Index = 0; Index < 4; Index++)
+    {
+        TRACE("-------------------------------------------\n");
+        TRACE("Partition %d\n", (Index + 1));
+        TRACE("BootIndicator: 0x%x\n",
BootRecord->PartitionTable[Index].BootIndicator);
+        TRACE("StartHead: 0x%x\n",
BootRecord->PartitionTable[Index].StartHead);
+        TRACE("StartSector (Plus 2 cylinder bits): 0x%x\n",
BootRecord->PartitionTable[Index].StartSector);
+        TRACE("StartCylinder: 0x%x\n",
BootRecord->PartitionTable[Index].StartCylinder);
+        TRACE("SystemIndicator: 0x%x\n",
BootRecord->PartitionTable[Index].SystemIndicator);
+        TRACE("EndHead: 0x%x\n", BootRecord->PartitionTable[Index].EndHead);
+        TRACE("EndSector (Plus 2 cylinder bits): 0x%x\n",
BootRecord->PartitionTable[Index].EndSector);
+        TRACE("EndCylinder: 0x%x\n",
BootRecord->PartitionTable[Index].EndCylinder);
+        TRACE("SectorCountBeforePartition: 0x%x\n",
BootRecord->PartitionTable[Index].SectorCountBeforePartition);
+        TRACE("PartitionSectorCount: 0x%x\n",
BootRecord->PartitionTable[Index].PartitionSectorCount);
+    }
+
+    /* Check the partition table magic value */
+    if (BootRecord->MasterBootRecordMagic != 0xaa55)
+    {
+        return FALSE;
+    }
+
+    return TRUE;
+}
+
+static BOOLEAN
+DiskGetFirstPartitionEntry(
+    IN PMASTER_BOOT_RECORD MasterBootRecord,
+    OUT PPARTITION_TABLE_ENTRY PartitionTableEntry)
+{
+    ULONG Index;
+
+    for (Index = 0; Index < 4; Index++)
+    {
+        /* Check the system indicator. If it's not an extended or unused partition
then we're done. */
+        if ((MasterBootRecord->PartitionTable[Index].SystemIndicator !=
PARTITION_ENTRY_UNUSED) &&
+            (MasterBootRecord->PartitionTable[Index].SystemIndicator !=
PARTITION_EXTENDED) &&
+            (MasterBootRecord->PartitionTable[Index].SystemIndicator !=
PARTITION_XINT13_EXTENDED))
+        {
+            RtlCopyMemory(PartitionTableEntry,
&MasterBootRecord->PartitionTable[Index], sizeof(PARTITION_TABLE_ENTRY));
+            return TRUE;
+        }
+    }
+
+    return FALSE;
+}
+
+static BOOLEAN
+DiskGetFirstExtendedPartitionEntry(
+    IN PMASTER_BOOT_RECORD MasterBootRecord,
+    OUT PPARTITION_TABLE_ENTRY PartitionTableEntry)
+{
+    ULONG Index;
+
+    for (Index = 0; Index < 4; Index++)
+    {
+        /* Check the system indicator. If it an extended partition then we're done.
*/
+        if ((MasterBootRecord->PartitionTable[Index].SystemIndicator ==
PARTITION_EXTENDED) ||
+            (MasterBootRecord->PartitionTable[Index].SystemIndicator ==
PARTITION_XINT13_EXTENDED))
+        {
+            RtlCopyMemory(PartitionTableEntry,
&MasterBootRecord->PartitionTable[Index], sizeof(PARTITION_TABLE_ENTRY));
+            return TRUE;
+        }
+    }
+
+    return FALSE;
+}
+
+static BOOLEAN
+DiskGetActivePartitionEntry(
+    IN UCHAR DriveNumber,
+    OUT PPARTITION_TABLE_ENTRY PartitionTableEntry,
+    OUT PULONG ActivePartition)
 {
     ULONG BootablePartitionCount = 0;
     ULONG CurrentPartitionNumber;
@@ -61,14 +150,14 @@ BOOLEAN DiskGetActivePartitionEntry(UCHAR DriveNumber,
     *ActivePartition = 0;
-    // Read master boot record
+    /* Read master boot record */
     if (!DiskReadBootRecord(DriveNumber, 0, &MasterBootRecord))
     {
         return FALSE;
     }
     CurrentPartitionNumber = 0;
-    for (Index=0; Index<4; Index++)
+    for (Index = 0; Index < 4; Index++)
     {
         ThisPartitionTableEntry = &MasterBootRecord.PartitionTable[Index];
@@ -78,13 +167,13 @@ BOOLEAN DiskGetActivePartitionEntry(UCHAR DriveNumber,
         {
             CurrentPartitionNumber++;
-            // Test if this is the bootable partition
+            /* Test if this is the bootable partition */
             if (ThisPartitionTableEntry->BootIndicator == 0x80)
             {
                 BootablePartitionCount++;
                 *ActivePartition = CurrentPartitionNumber;
-                // Copy the partition table entry
+                /* Copy the partition table entry */
                 RtlCopyMemory(PartitionTableEntry,
                               ThisPartitionTableEntry,
                               sizeof(PARTITION_TABLE_ENTRY));
@@ -92,7 +181,7 @@ BOOLEAN DiskGetActivePartitionEntry(UCHAR DriveNumber,
         }
     }
-    // Make sure there was only one bootable partition
+    /* Make sure there was only one bootable partition */
     if (BootablePartitionCount == 0)
     {
         ERR("No bootable (active) partitions found.\n");
@@ -107,7 +196,11 @@ BOOLEAN DiskGetActivePartitionEntry(UCHAR DriveNumber,
     return TRUE;
 }
-BOOLEAN DiskGetMbrPartitionEntry(UCHAR DriveNumber, ULONG PartitionNumber,
PPARTITION_TABLE_ENTRY PartitionTableEntry)
+static BOOLEAN
+DiskGetMbrPartitionEntry(
+    IN UCHAR DriveNumber,
+    IN ULONG PartitionNumber,
+    OUT PPARTITION_TABLE_ENTRY PartitionTableEntry)
 {
     MASTER_BOOT_RECORD MasterBootRecord;
     PARTITION_TABLE_ENTRY ExtendedPartitionTableEntry;
@@ -117,14 +210,14 @@ BOOLEAN DiskGetMbrPartitionEntry(UCHAR DriveNumber, ULONG
PartitionNumber, PPART
     ULONG CurrentPartitionNumber;
     PPARTITION_TABLE_ENTRY ThisPartitionTableEntry;
-    // Read master boot record
+    /* Read master boot record */
     if (!DiskReadBootRecord(DriveNumber, 0, &MasterBootRecord))
     {
         return FALSE;
     }
     CurrentPartitionNumber = 0;
-    for (Index=0; Index<4; Index++)
+    for (Index = 0; Index < 4; Index++)
     {
         ThisPartitionTableEntry = &MasterBootRecord.PartitionTable[Index];
@@ -142,136 +235,63 @@ BOOLEAN DiskGetMbrPartitionEntry(UCHAR DriveNumber, ULONG
PartitionNumber, PPART
         }
     }
-    // They want an extended partition entry so we will need
-    // to loop through all the extended partitions on the disk
-    // and return the one they want.
-
+    /*
+     * They want an extended partition entry so we will need
+     * to loop through all the extended partitions on the disk
+     * and return the one they want.
+     */
     ExtendedPartitionNumber = PartitionNumber - CurrentPartitionNumber - 1;
-    // Set the initial relative starting sector to 0
-    // This is because extended partition starting
-    // sectors a numbered relative to their parent
+    /*
+     * Set the initial relative starting sector to 0.
+     * This is because extended partition starting
+     * sectors a numbered relative to their parent.
+     */
     ExtendedPartitionOffset = 0;
-    for (Index=0; Index<=ExtendedPartitionNumber; Index++)
+    for (Index = 0; Index <= ExtendedPartitionNumber; Index++)
     {
-        // Get the extended partition table entry
+        /* Get the extended partition table entry */
         if (!DiskGetFirstExtendedPartitionEntry(&MasterBootRecord,
&ExtendedPartitionTableEntry))
         {
             return FALSE;
         }
-        // Adjust the relative starting sector of the partition
+        /* Adjust the relative starting sector of the partition */
         ExtendedPartitionTableEntry.SectorCountBeforePartition +=
ExtendedPartitionOffset;
         if (ExtendedPartitionOffset == 0)
         {
-            // Set the start of the parrent extended partition
+            /* Set the start of the parrent extended partition */
             ExtendedPartitionOffset =
ExtendedPartitionTableEntry.SectorCountBeforePartition;
         }
-        // Read the partition boot record
+        /* Read the partition boot record */
         if (!DiskReadBootRecord(DriveNumber,
ExtendedPartitionTableEntry.SectorCountBeforePartition, &MasterBootRecord))
         {
             return FALSE;
         }
-        // Get the first real partition table entry
+        /* Get the first real partition table entry */
         if (!DiskGetFirstPartitionEntry(&MasterBootRecord, PartitionTableEntry))
         {
             return FALSE;
         }
-        // Now correct the start sector of the partition
+        /* Now correct the start sector of the partition */
         PartitionTableEntry->SectorCountBeforePartition +=
ExtendedPartitionTableEntry.SectorCountBeforePartition;
     }
-    // When we get here we should have the correct entry
-    // already stored in PartitionTableEntry
-    // so just return TRUE
-    return TRUE;
-}
-
-BOOLEAN DiskGetFirstPartitionEntry(PMASTER_BOOT_RECORD MasterBootRecord,
PPARTITION_TABLE_ENTRY PartitionTableEntry)
-{
-    ULONG Index;
-
-    for (Index=0; Index<4; Index++)
-    {
-        // Check the system indicator
-        // If it's not an extended or unused partition
-        // then we're done
-        if ((MasterBootRecord->PartitionTable[Index].SystemIndicator !=
PARTITION_ENTRY_UNUSED) &&
-            (MasterBootRecord->PartitionTable[Index].SystemIndicator !=
PARTITION_EXTENDED) &&
-            (MasterBootRecord->PartitionTable[Index].SystemIndicator !=
PARTITION_XINT13_EXTENDED))
-        {
-            RtlCopyMemory(PartitionTableEntry,
&MasterBootRecord->PartitionTable[Index], sizeof(PARTITION_TABLE_ENTRY));
-            return TRUE;
-        }
-    }
-
-    return FALSE;
-}
-
-BOOLEAN DiskGetFirstExtendedPartitionEntry(PMASTER_BOOT_RECORD MasterBootRecord,
PPARTITION_TABLE_ENTRY PartitionTableEntry)
-{
-    ULONG Index;
-
-    for (Index=0; Index<4; Index++)
-    {
-        // Check the system indicator
-        // If it an extended partition then we're done
-        if ((MasterBootRecord->PartitionTable[Index].SystemIndicator ==
PARTITION_EXTENDED) ||
-            (MasterBootRecord->PartitionTable[Index].SystemIndicator ==
PARTITION_XINT13_EXTENDED))
-        {
-            RtlCopyMemory(PartitionTableEntry,
&MasterBootRecord->PartitionTable[Index], sizeof(PARTITION_TABLE_ENTRY));
-            return TRUE;
-        }
-    }
-
-    return FALSE;
-}
-
-BOOLEAN DiskReadBootRecord(UCHAR DriveNumber, ULONGLONG LogicalSectorNumber,
PMASTER_BOOT_RECORD BootRecord)
-{
-    ULONG Index;
-
-    // Read master boot record
-    if (!MachDiskReadLogicalSectors(DriveNumber, LogicalSectorNumber, 1, DiskReadBuffer))
-    {
-        return FALSE;
-    }
-    RtlCopyMemory(BootRecord, DiskReadBuffer, sizeof(MASTER_BOOT_RECORD));
-
-    TRACE("Dumping partition table for drive 0x%x:\n", DriveNumber);
-    TRACE("Boot record logical start sector = %d\n", LogicalSectorNumber);
-    TRACE("sizeof(MASTER_BOOT_RECORD) = 0x%x.\n", sizeof(MASTER_BOOT_RECORD));
-
-    for (Index=0; Index<4; Index++)
-    {
-        TRACE("-------------------------------------------\n");
-        TRACE("Partition %d\n", (Index + 1));
-        TRACE("BootIndicator: 0x%x\n",
BootRecord->PartitionTable[Index].BootIndicator);
-        TRACE("StartHead: 0x%x\n",
BootRecord->PartitionTable[Index].StartHead);
-        TRACE("StartSector (Plus 2 cylinder bits): 0x%x\n",
BootRecord->PartitionTable[Index].StartSector);
-        TRACE("StartCylinder: 0x%x\n",
BootRecord->PartitionTable[Index].StartCylinder);
-        TRACE("SystemIndicator: 0x%x\n",
BootRecord->PartitionTable[Index].SystemIndicator);
-        TRACE("EndHead: 0x%x\n", BootRecord->PartitionTable[Index].EndHead);
-        TRACE("EndSector (Plus 2 cylinder bits): 0x%x\n",
BootRecord->PartitionTable[Index].EndSector);
-        TRACE("EndCylinder: 0x%x\n",
BootRecord->PartitionTable[Index].EndCylinder);
-        TRACE("SectorCountBeforePartition: 0x%x\n",
BootRecord->PartitionTable[Index].SectorCountBeforePartition);
-        TRACE("PartitionSectorCount: 0x%x\n",
BootRecord->PartitionTable[Index].PartitionSectorCount);
-    }
-
-    // Check the partition table magic value
-    if (BootRecord->MasterBootRecordMagic != 0xaa55)
-    {
-        return FALSE;
-    }
-
+    /*
+     * When we get here we should have the correct entry already
+     * stored in PartitionTableEntry, so just return TRUE.
+     */
     return TRUE;
 }
-BOOLEAN
-DiskGetBrfrPartitionEntry(UCHAR DriveNumber, ULONG PartitionNumber,
PPARTITION_TABLE_ENTRY PartitionTableEntry)
+static BOOLEAN
+DiskGetBrfrPartitionEntry(
+    IN UCHAR DriveNumber,
+    IN ULONG PartitionNumber,
+    OUT PPARTITION_TABLE_ENTRY PartitionTableEntry)
 {
     /*
      * Get partition entry of an Xbox-standard BRFR partitioned disk.
@@ -296,7 +316,9 @@ DiskGetBrfrPartitionEntry(UCHAR DriveNumber, ULONG PartitionNumber,
PPARTITION_T
     return FALSE;
 }
-VOID DiskDetectPartitionType(UCHAR DriveNumber)
+VOID
+DiskDetectPartitionType(
+    IN UCHAR DriveNumber)
 {
     MASTER_BOOT_RECORD MasterBootRecord;
     ULONG Index;
@@ -347,9 +369,11 @@ VOID DiskDetectPartitionType(UCHAR DriveNumber)
     TRACE("Drive 0x%X partition type unknown\n", DriveNumber);
 }
-BOOLEAN DiskGetBootPartitionEntry(UCHAR DriveNumber,
-                                  PPARTITION_TABLE_ENTRY PartitionTableEntry,
-                                  ULONG *BootPartition)
+BOOLEAN
+DiskGetBootPartitionEntry(
+    IN UCHAR DriveNumber,
+    OUT PPARTITION_TABLE_ENTRY PartitionTableEntry,
+    OUT PULONG BootPartition)
 {
     switch (DiskPartitionType[DriveNumber])
     {
@@ -385,7 +409,11 @@ BOOLEAN DiskGetBootPartitionEntry(UCHAR DriveNumber,
     return FALSE;
 }
-BOOLEAN DiskGetPartitionEntry(UCHAR DriveNumber, ULONG PartitionNumber,
PPARTITION_TABLE_ENTRY PartitionTableEntry)
+BOOLEAN
+DiskGetPartitionEntry(
+    IN UCHAR DriveNumber,
+    IN ULONG PartitionNumber,
+    OUT PPARTITION_TABLE_ENTRY PartitionTableEntry)
 {
     switch (DiskPartitionType[DriveNumber])
     {
diff --git a/boot/freeldr/freeldr/include/disk.h b/boot/freeldr/freeldr/include/disk.h
index 6629c768dcf..68c197ba509 100644
--- a/boot/freeldr/freeldr/include/disk.h
+++ b/boot/freeldr/freeldr/include/disk.h
@@ -145,12 +145,21 @@ extern SIZE_T DiskReadBufferSize;
 //
 ///////////////////////////////////////////////////////////////////////////////////////
-VOID DiskDetectPartitionType(UCHAR DriveNumber);
-BOOLEAN DiskGetBootPartitionEntry(UCHAR DriveNumber, PPARTITION_TABLE_ENTRY
PartitionTableEntry, ULONG *BootPartition);
-BOOLEAN DiskGetPartitionEntry(UCHAR DriveNumber, ULONG PartitionNumber,
PPARTITION_TABLE_ENTRY PartitionTableEntry);
-BOOLEAN DiskGetFirstPartitionEntry(PMASTER_BOOT_RECORD MasterBootRecord,
PPARTITION_TABLE_ENTRY PartitionTableEntry);
-BOOLEAN DiskGetFirstExtendedPartitionEntry(PMASTER_BOOT_RECORD MasterBootRecord,
PPARTITION_TABLE_ENTRY PartitionTableEntry);
-BOOLEAN DiskReadBootRecord(UCHAR DriveNumber, ULONGLONG LogicalSectorNumber,
PMASTER_BOOT_RECORD BootRecord);
+VOID
+DiskDetectPartitionType(
+    IN UCHAR DriveNumber);
+
+BOOLEAN
+DiskGetBootPartitionEntry(
+    IN UCHAR DriveNumber,
+    OUT PPARTITION_TABLE_ENTRY PartitionTableEntry,
+    OUT PULONG BootPartition);
+
+BOOLEAN
+DiskGetPartitionEntry(
+    IN UCHAR DriveNumber,
+    IN ULONG PartitionNumber,
+    OUT PPARTITION_TABLE_ENTRY PartitionTableEntry);
 /*
  * SCSI support (disk/scsiport.c)