https://git.reactos.org/?p=reactos.git;a=commitdiff;h=4ed6b1ffca67c30568e27…
commit 4ed6b1ffca67c30568e271ce13454a08d7d85cb9
Author: Pierre Schweitzer <pierre(a)reactos.org>
AuthorDate: Fri Dec 28 20:34:48 2018 +0100
Commit: Pierre Schweitzer <pierre(a)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