https://git.reactos.org/?p=reactos.git;a=commitdiff;h=1ed0e1c84a78d91fb3c18cb8bccc44e4e3e32ff0
commit 1ed0e1c84a78d91fb3c18cb8bccc44e4e3e32ff0 Author: Hermès Bélusca-Maïto <hermes.belusca-ma...@reactos.org> AuthorDate: Thu May 18 01:05:39 2017 +0000 Commit: Hermès Bélusca-Maïto <hermes.belusca-ma...@reactos.org> CommitDate: Sun May 27 20:18:52 2018 +0200 [USETUP] Code fixups after the introduction of the SetupLib. - Use the previously-introduced 'PreparePartitionForFormatting()' function; set the FormatState of the newly-formatted partition to Formatted. - Remove the hackish call to CreateFileSystemList() in SelectFileSystemPage(). - Move 'TempPartition' and 'FormatState' back to USETUP. - Put large "case"-blocks into brackets. svn path=/branches/setup_improvements/; revision=74575 svn path=/branches/setup_improvements/; revision=74576 --- base/setup/usetup/usetup.c | 162 +++++++++++++++------------------------------ 1 file changed, 54 insertions(+), 108 deletions(-) diff --git a/base/setup/usetup/usetup.c b/base/setup/usetup/usetup.c index 6d1378ca7b..888c73fce0 100644 --- a/base/setup/usetup/usetup.c +++ b/base/setup/usetup/usetup.c @@ -59,7 +59,11 @@ WCHAR DefaultLanguage[20]; WCHAR DefaultKBLayout[20]; BOOLEAN RepairUpdateFlag = FALSE; HANDLE hPnpThread = INVALID_HANDLE_VALUE; + PPARTLIST PartitionList = NULL; +PPARTENTRY TempPartition = NULL; +FORMATMACHINESTATE FormatState = Start; + /* LOCALS *******************************************************************/ @@ -87,7 +91,7 @@ static UNICODE_STRING DestinationPath; static UNICODE_STRING DestinationArcPath; static UNICODE_STRING DestinationRootPath; -static WCHAR DestinationDriveLetter; +static WCHAR DestinationDriveLetter; // FIXME: Is it really useful?? static HINF SetupInf; @@ -1528,6 +1532,9 @@ SelectPartitionPage(PINPUT_RECORD Ir) MUIDisplayError(ERROR_NO_HDD, Ir, POPUP_WAIT_ENTER); return QUIT_PAGE; } + + TempPartition = NULL; + FormatState = Start; } InitPartitionListUi(&ListUi, PartitionList, @@ -2631,100 +2638,95 @@ SelectFileSystemPage(PINPUT_RECORD Ir) return QUIT_PAGE; } -#if 0 - /*** HACK! ***/ - if (FileSystemList == NULL) - { - FileSystemList = CreateFileSystemList(6, 26, PartitionList->CurrentPartition->New, L"FAT"); - if (FileSystemList == NULL) - { - /* FIXME: show an error dialog */ - return QUIT_PAGE; - } - - /* FIXME: Add file systems to list */ - } -#endif - /* Find or set the active system partition */ - CheckActiveSystemPartition(PartitionList /*, FileSystemList*/); + CheckActiveSystemPartition(PartitionList); if (PartitionList->SystemPartition == NULL) { /* FIXME: show an error dialog */ return QUIT_PAGE; } - PreviousFormatState = PartitionList->FormatState; - switch (PartitionList->FormatState) + PreviousFormatState = FormatState; + switch (FormatState) { case Start: + { if (PartitionList->CurrentPartition != PartitionList->SystemPartition) { - PartitionList->TempPartition = PartitionList->SystemPartition; - PartitionList->TempPartition->NeedsCheck = TRUE; + TempPartition = PartitionList->SystemPartition; + TempPartition->NeedsCheck = TRUE; - PartitionList->FormatState = FormatSystemPartition; + FormatState = FormatSystemPartition; DPRINT1("FormatState: Start --> FormatSystemPartition\n"); } else { - PartitionList->TempPartition = PartitionList->CurrentPartition; - PartitionList->TempPartition->NeedsCheck = TRUE; + TempPartition = PartitionList->CurrentPartition; + TempPartition->NeedsCheck = TRUE; - PartitionList->FormatState = FormatInstallPartition; + FormatState = FormatInstallPartition; DPRINT1("FormatState: Start --> FormatInstallPartition\n"); } break; + } case FormatSystemPartition: - PartitionList->TempPartition = PartitionList->CurrentPartition; - PartitionList->TempPartition->NeedsCheck = TRUE; + { + TempPartition = PartitionList->CurrentPartition; + TempPartition->NeedsCheck = TRUE; - PartitionList->FormatState = FormatInstallPartition; + FormatState = FormatInstallPartition; DPRINT1("FormatState: FormatSystemPartition --> FormatInstallPartition\n"); break; + } case FormatInstallPartition: + { if (GetNextUnformattedPartition(PartitionList, NULL, - &PartitionList->TempPartition)) + &TempPartition)) { - PartitionList->FormatState = FormatOtherPartition; - PartitionList->TempPartition->NeedsCheck = TRUE; + FormatState = FormatOtherPartition; + TempPartition->NeedsCheck = TRUE; DPRINT1("FormatState: FormatInstallPartition --> FormatOtherPartition\n"); } else { - PartitionList->FormatState = FormatDone; + FormatState = FormatDone; DPRINT1("FormatState: FormatInstallPartition --> FormatDone\n"); return CHECK_FILE_SYSTEM_PAGE; } break; + } case FormatOtherPartition: + { if (GetNextUnformattedPartition(PartitionList, NULL, - &PartitionList->TempPartition)) + &TempPartition)) { - PartitionList->FormatState = FormatOtherPartition; - PartitionList->TempPartition->NeedsCheck = TRUE; + FormatState = FormatOtherPartition; + TempPartition->NeedsCheck = TRUE; DPRINT1("FormatState: FormatOtherPartition --> FormatOtherPartition\n"); } else { - PartitionList->FormatState = FormatDone; + FormatState = FormatDone; DPRINT1("FormatState: FormatOtherPartition --> FormatDone\n"); return CHECK_FILE_SYSTEM_PAGE; } break; + } default: - DPRINT1("FormatState: Invalid value %ld\n", PartitionList->FormatState); + { + DPRINT1("FormatState: Invalid value %ld\n", FormatState); /* FIXME: show an error dialog */ return QUIT_PAGE; + } } - PartEntry = PartitionList->TempPartition; + PartEntry = TempPartition; DiskEntry = PartEntry->DiskEntry; /* Adjust disk size */ @@ -2785,7 +2787,7 @@ SelectFileSystemPage(PINPUT_RECORD Ir) } else if (PartEntry->New != FALSE) { - switch (PartitionList->FormatState) + switch (FormatState) { case FormatSystemPartition: CONSOLE_SetTextXY(6, 8, MUIGetString(STRING_NONFORMATTEDSYSTEMPART)); @@ -2851,8 +2853,6 @@ SelectFileSystemPage(PINPUT_RECORD Ir) /* FIXME: show an error dialog */ return QUIT_PAGE; } - - /* FIXME: Add file systems to list */ } DrawFileSystemList(FileSystemList); @@ -2874,7 +2874,6 @@ SelectFileSystemPage(PINPUT_RECORD Ir) * which file system to use in unattended installations, in the * txtsetup.sif file. */ - // PartEntry->FileSystem = GetFileSystemByName(FileSystemList, L"FAT"); return FORMAT_PARTITION_PAGE; } @@ -2896,7 +2895,7 @@ SelectFileSystemPage(PINPUT_RECORD Ir) else if ((Ir->Event.KeyEvent.uChar.AsciiChar == 0x00) && (Ir->Event.KeyEvent.wVirtualKeyCode == VK_ESCAPE)) /* ESC */ { - PartitionList->FormatState = Start; + FormatState = Start; return SELECT_PARTITION_PAGE; } else if ((Ir->Event.KeyEvent.uChar.AsciiChar == 0x00) && @@ -2912,18 +2911,13 @@ SelectFileSystemPage(PINPUT_RECORD Ir) else if (Ir->Event.KeyEvent.wVirtualKeyCode == VK_RETURN) /* ENTER */ { if (!FileSystemList->Selected->FileSystem) - { return SELECT_FILE_SYSTEM_PAGE; - } else - { - // PartEntry->FileSystem = FileSystemList->Selected; return FORMAT_PARTITION_PAGE; - } } } - PartitionList->FormatState = PreviousFormatState; + FormatState = PreviousFormatState; return SELECT_FILE_SYSTEM_PAGE; } @@ -2964,17 +2958,16 @@ FormatPartitionPage(PINPUT_RECORD Ir) MUIDisplayPage(FORMAT_PARTITION_PAGE); - if (PartitionList == NULL || - PartitionList->TempPartition == NULL) + if (PartitionList == NULL || TempPartition == NULL) { /* FIXME: show an error dialog */ return QUIT_PAGE; } - PartEntry = PartitionList->TempPartition; + PartEntry = TempPartition; DiskEntry = PartEntry->DiskEntry; - SelectedFileSystem = FileSystemList->Selected; // PartEntry->FileSystem; // FIXME!!!! + SelectedFileSystem = FileSystemList->Selected; while (TRUE) { @@ -2995,60 +2988,7 @@ FormatPartitionPage(PINPUT_RECORD Ir) { CONSOLE_SetStatusText(MUIGetString(STRING_PLEASEWAIT)); - if (wcscmp(SelectedFileSystem->FileSystemName, L"FAT") == 0) - { - if (PartEntry->SectorCount.QuadPart < 8192) - { - /* FAT12 CHS partition (disk is smaller than 4.1MB) */ - SetPartitionType(PartEntry, PARTITION_FAT_12); - } - else if (PartEntry->StartSector.QuadPart < 1450560) - { - /* Partition starts below the 8.4GB boundary ==> CHS partition */ - - if (PartEntry->SectorCount.QuadPart < 65536) - { - /* FAT16 CHS partition (partition size < 32MB) */ - SetPartitionType(PartEntry, PARTITION_FAT_16); - } - else if (PartEntry->SectorCount.QuadPart < 1048576) - { - /* FAT16 CHS partition (partition size < 512MB) */ - SetPartitionType(PartEntry, PARTITION_HUGE); - } - else - { - /* FAT32 CHS partition (partition size >= 512MB) */ - SetPartitionType(PartEntry, PARTITION_FAT32); - } - } - else - { - /* Partition starts above the 8.4GB boundary ==> LBA partition */ - - if (PartEntry->SectorCount.QuadPart < 1048576) - { - /* FAT16 LBA partition (partition size < 512MB) */ - SetPartitionType(PartEntry, PARTITION_XINT13); - } - else - { - /* FAT32 LBA partition (partition size >= 512MB) */ - SetPartitionType(PartEntry, PARTITION_FAT32_XINT13); - } - } - } -#if 0 - else if (wcscmp(SelectedFileSystem->FileSystemName, L"EXT2") == 0) - { - SetPartitionType(PartEntry, PARTITION_EXT2); - } - else if (wcscmp(SelectedFileSystem->FileSystemName, L"NTFS") == 0) - { - SetPartitionType(PartEntry, PARTITION_IFS); - } -#endif - else if (!SelectedFileSystem->FileSystem) + if (!PreparePartitionForFormatting(PartEntry, SelectedFileSystem->FileSystem)) { /* FIXME: show an error dialog */ return QUIT_PAGE; @@ -3081,7 +3021,8 @@ FormatPartitionPage(PINPUT_RECORD Ir) } #endif - if (WritePartitionsToDisk(PartitionList) == FALSE) + /* Commit the partition changes to the disk */ + if (!WritePartitionsToDisk(PartitionList)) { DPRINT("WritePartitionsToDisk() failed\n"); MUIDisplayError(ERROR_WRITE_PTABLE, Ir, POPUP_WAIT_ENTER); @@ -3097,6 +3038,7 @@ FormatPartitionPage(PINPUT_RECORD Ir) PathBuffer); DPRINT("PartitionRootPath: %wZ\n", &PartitionRootPath); + /* Format the partition */ if (SelectedFileSystem->FileSystem) { Status = FormatPartition(&PartitionRootPath, @@ -3108,6 +3050,8 @@ FormatPartitionPage(PINPUT_RECORD Ir) return QUIT_PAGE; } + PartEntry->FormatState = Formatted; + // PartEntry->FileSystem = FileSystem; PartEntry->New = FALSE; } @@ -4598,6 +4542,8 @@ QuitPage(PINPUT_RECORD Ir) DestroyPartitionList(PartitionList); PartitionList = NULL; } + TempPartition = NULL; + FormatState = Start; /* Destroy the filesystem list */ if (FileSystemList != NULL)