https://git.reactos.org/?p=reactos.git;a=commitdiff;h=4ed6b1ffca67c30568e271ce13454a08d7d85cb9
commit 4ed6b1ffca67c30568e271ce13454a08d7d85cb9 Author: Pierre Schweitzer <pie...@reactos.org> AuthorDate: Fri Dec 28 20:34:48 2018 +0100 Commit: Pierre Schweitzer <pie...@reactos.org> CommitDate: Fri Dec 28 20:36:47 2018 +0100 [SETUP] Add support for selecting FS type in unattended setups By default, we still fallback to FAT if nothing asked, or if there is an invalid input. 0 is FAT, 1 is BtrFS. This can be grown as soon as we add more IFS. --- base/setup/lib/setuplib.c | 10 ++++++++++ base/setup/lib/setuplib.h | 1 + base/setup/usetup/usetup.c | 34 +++++++++++++++++++++++--------- boot/bootdata/bootcdregtest/unattend.inf | 5 +++++ 4 files changed, 41 insertions(+), 9 deletions(-) diff --git a/base/setup/lib/setuplib.c b/base/setup/lib/setuplib.c index 1bbdaa8f3e..2b52c463f3 100644 --- a/base/setup/lib/setuplib.c +++ b/base/setup/lib/setuplib.c @@ -196,6 +196,16 @@ CheckUnattendedSetup( } } + /* Search for FsType in the 'Unattend' section */ + pSetupData->FsType = 0; + if (SpInfFindFirstLine(UnattendInf, L"Unattend", L"FsType", &Context)) + { + if (SpInfGetIntField(&Context, 1, &IntValue)) + { + pSetupData->FsType = IntValue; + } + } + Quit: SpInfCloseInfFile(UnattendInf); } diff --git a/base/setup/lib/setuplib.h b/base/setup/lib/setuplib.h index 4bd5981ff2..658054fac2 100644 --- a/base/setup/lib/setuplib.h +++ b/base/setup/lib/setuplib.h @@ -110,6 +110,7 @@ typedef struct _USETUP_DATA LONG MBRInstallType; LONG FormatPartition; LONG AutoPartition; + LONG FsType; /* Settings lists *****/ PGENERIC_LIST ComputerList; diff --git a/base/setup/usetup/usetup.c b/base/setup/usetup/usetup.c index deb918efb6..6fd68b7542 100644 --- a/base/setup/usetup/usetup.c +++ b/base/setup/usetup/usetup.c @@ -2859,8 +2859,31 @@ SelectFileSystemPage(PINPUT_RECORD Ir) if (FileSystemList == NULL) { - /* Create the file system list, and by default select the "FAT" file system */ - FileSystemList = CreateFileSystemList(6, 26, PartEntry->New, L"FAT"); + PWSTR DefaultFs; + + if (IsUnattendedSetup) + { + switch (USetupData.FsType) + { + /* 1 is for BtrFS */ + case 1: + DefaultFs = L"BTRFS"; + break; + + /* If we don't understand input, default to FAT */ + default: + DefaultFs = L"FAT"; + break; + } + } + else + { + /* By default select the "FAT" file system */ + DefaultFs = L"FAT"; + } + + /* Create the file system list */ + FileSystemList = CreateFileSystemList(6, 26, PartEntry->New, DefaultFs); if (FileSystemList == NULL) { /* FIXME: show an error dialog */ @@ -2878,13 +2901,6 @@ SelectFileSystemPage(PINPUT_RECORD Ir) { if (USetupData.FormatPartition) { - /* - * We use whatever currently selected file system we have - * (by default, this is "FAT", as per the initialization - * performed above). Note that it may be interesting to specify - * which file system to use in unattended installations, in the - * txtsetup.sif file. - */ return FORMAT_PARTITION_PAGE; } diff --git a/boot/bootdata/bootcdregtest/unattend.inf b/boot/bootdata/bootcdregtest/unattend.inf index 08ce20d3fd..e325e570bd 100644 --- a/boot/bootdata/bootcdregtest/unattend.inf +++ b/boot/bootdata/bootcdregtest/unattend.inf @@ -38,6 +38,11 @@ FormatPartition=1 ; 0 - disabled AutoPartition = 1 +; choose default file system type +; 0 - FAT +; 1 - BtrFS +FsType = 0 + ; set this option to automatically ; specify language in 2nd mode setup ; see hivesys.inf for available languages