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

Reply via email to