Author: hbelusca
Date: Wed Dec 30 18:26:42 2015
New Revision: 70467
URL:
http://svn.reactos.org/svn/reactos?rev=70467&view=rev
Log:
[USETUP]
Factorize the code that creates ReactOS freeldr.ini entries, and use it to create a
freeldr.ini at a clean ReactOS installation, and when it is installed in the same
partition as Win9x/DOS.
CORE-4870 #comment Should be fixed with revision 70467, please retest.
Modified:
trunk/reactos/base/setup/usetup/bootsup.c
trunk/reactos/base/setup/usetup/inicache.c
trunk/reactos/base/setup/usetup/inicache.h
Modified: trunk/reactos/base/setup/usetup/bootsup.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/setup/usetup/bootsup.…
==============================================================================
--- trunk/reactos/base/setup/usetup/bootsup.c [iso-8859-1] (original)
+++ trunk/reactos/base/setup/usetup/bootsup.c [iso-8859-1] Wed Dec 30 18:26:42 2015
@@ -93,8 +93,7 @@
PINICACHESECTION IniSection;
/* Create "FREELOADER" section */
- IniSection = IniCacheAppendSection(IniCache,
- L"FREELOADER");
+ IniSection = IniCacheAppendSection(IniCache, L"FREELOADER");
#if DBG
if (IsUnattendedSetup)
@@ -287,123 +286,6 @@
L"TimeText",
L"Seconds until highlighted choice will be started
automatically: ");
}
-
-
-NTSTATUS
-CreateFreeLoaderIniForDos(
- PWCHAR IniPath,
- PWCHAR ArcPath)
-{
- PINICACHE IniCache;
- PINICACHESECTION IniSection;
-
- IniCache = IniCacheCreate();
-
- CreateCommonFreeLoaderSections(IniCache);
-
- /* Create "Operating Systems" section */
- IniSection = IniCacheAppendSection(IniCache, L"Operating Systems");
-
- /* REACTOS=ReactOS */
- IniCacheInsertKey(IniSection,
- NULL,
- INSERT_LAST,
- L"ReactOS",
- L"\"ReactOS\"");
-
- /* ReactOS_Debug="ReactOS (Debug)" */
- IniCacheInsertKey(IniSection,
- NULL,
- INSERT_LAST,
- L"ReactOS_Debug",
- L"\"ReactOS (Debug)\"");
-
- /* DOS=Dos/Windows */
- IniCacheInsertKey(IniSection,
- NULL,
- INSERT_LAST,
- L"DOS",
- L"\"DOS/Windows\"");
-
- /* Create "ReactOS" section */
- IniSection = IniCacheAppendSection(IniCache, L"ReactOS");
-
- /* BootType=ReactOS */
- IniCacheInsertKey(IniSection,
- NULL,
- INSERT_LAST,
- L"BootType",
- L"ReactOS");
-
- /* SystemPath=<ArcPath> */
- IniCacheInsertKey(IniSection,
- NULL,
- INSERT_LAST,
- L"SystemPath",
- ArcPath);
-
- /* Create "ReactOS_Debug" section */
- IniSection = IniCacheAppendSection(IniCache, L"ReactOS_Debug");
-
- /* BootType=ReactOS */
- IniCacheInsertKey(IniSection,
- NULL,
- INSERT_LAST,
- L"BootType",
- L"ReactOS");
-
- /* SystemPath=<ArcPath> */
- IniCacheInsertKey(IniSection,
- NULL,
- INSERT_LAST,
- L"SystemPath",
- ArcPath);
-
- /* Options=/DEBUG /DEBUGPORT=COM1 /BAUDRATE=115200 /SOS */
- IniCacheInsertKey(IniSection,
- NULL,
- INSERT_LAST,
- L"Options",
- L"/DEBUG /DEBUGPORT=COM1 /BAUDRATE=115200 /SOS");
-
- /* Create "DOS" section */
- IniSection = IniCacheAppendSection(IniCache,
- L"DOS");
-
- /* BootType=BootSector */
- IniCacheInsertKey(IniSection,
- NULL,
- INSERT_LAST,
- L"BootType",
- L"BootSector");
-
- /* BootDrive=hd0 */
- IniCacheInsertKey(IniSection,
- NULL,
- INSERT_LAST,
- L"BootDrive",
- L"hd0");
-
- /* BootPartition=1 */
- IniCacheInsertKey(IniSection,
- NULL,
- INSERT_LAST,
- L"BootPartition",
- L"1");
-
- /* BootSector=BOOTSECT.DOS */
- IniCacheInsertKey(IniSection,
- NULL,
- INSERT_LAST,
- L"BootSectorFile",
- L"BOOTSECT.DOS");
-
- IniCacheSave(IniCache, IniPath);
- IniCacheDestroy(IniCache);
-
- return STATUS_SUCCESS;
-}
-
NTSTATUS
CreateFreeLoaderEntry(
@@ -451,17 +333,13 @@
return STATUS_SUCCESS;
}
-NTSTATUS
-CreateFreeLoaderIniForReactOS(
- PWCHAR IniPath,
+static
+VOID
+CreateFreeLoaderReactOSEntries(
+ PINICACHE IniCache,
PWCHAR ArcPath)
{
- PINICACHE IniCache;
PINICACHESECTION IniSection;
-
- IniCache = IniCacheCreate();
-
- CreateCommonFreeLoaderSections(IniCache);
/* Create "Operating Systems" section */
IniSection = IniCacheAppendSection(IniCache, L"Operating Systems");
@@ -517,8 +395,90 @@
L"Windows2003", ArcPath,
L"/DEBUG /DEBUGPORT=COM1 /BAUDRATE=115200 /SOS
/redirect=com2 /redirectbaudrate=115200");
#endif
-
- /* Save the ini file */
+}
+
+NTSTATUS
+CreateFreeLoaderIniForReactOS(
+ PWCHAR IniPath,
+ PWCHAR ArcPath)
+{
+ PINICACHE IniCache;
+
+ /* Initialize the INI file */
+ IniCache = IniCacheCreate();
+
+ /* Create the common FreeLdr sections */
+ CreateCommonFreeLoaderSections(IniCache);
+
+ /* Add the ReactOS entries */
+ CreateFreeLoaderReactOSEntries(IniCache, ArcPath);
+
+ /* Save the INI file */
+ IniCacheSave(IniCache, IniPath);
+ IniCacheDestroy(IniCache);
+
+ return STATUS_SUCCESS;
+}
+
+NTSTATUS
+CreateFreeLoaderIniForDos(
+ PWCHAR IniPath,
+ PWCHAR ArcPath)
+{
+ PINICACHE IniCache;
+ PINICACHESECTION IniSection;
+
+ /* Initialize the INI file */
+ IniCache = IniCacheCreate();
+
+ /* Create the common FreeLdr sections */
+ CreateCommonFreeLoaderSections(IniCache);
+
+ /* Add the ReactOS entries */
+ CreateFreeLoaderReactOSEntries(IniCache, ArcPath);
+
+ /* Get "Operating Systems" section */
+ IniSection = IniCacheGetSection(IniCache, L"Operating Systems");
+
+ /* DOS=DOS/Windows */
+ IniCacheInsertKey(IniSection,
+ NULL,
+ INSERT_LAST,
+ L"DOS",
+ L"\"DOS/Windows\"");
+
+ /* Create the "DOS" section */
+ IniSection = IniCacheAppendSection(IniCache, L"DOS");
+
+ /* BootType=BootSector */
+ IniCacheInsertKey(IniSection,
+ NULL,
+ INSERT_LAST,
+ L"BootType",
+ L"BootSector");
+
+ /* BootDrive=hd0 */
+ IniCacheInsertKey(IniSection,
+ NULL,
+ INSERT_LAST,
+ L"BootDrive",
+ L"hd0");
+
+ /* BootPartition=1 */
+ IniCacheInsertKey(IniSection,
+ NULL,
+ INSERT_LAST,
+ L"BootPartition",
+ L"1");
+
+ /* BootSector=BOOTSECT.DOS */
+ IniCacheInsertKey(IniSection,
+ NULL,
+ INSERT_LAST,
+ L"BootSectorFile",
+ L"BOOTSECT.DOS");
+
+ /* Save the INI file */
IniCacheSave(IniCache, IniPath);
IniCacheDestroy(IniCache);
@@ -531,7 +491,6 @@
PWCHAR IniPath,
PWCHAR ArcPath)
{
- UNICODE_STRING Name;
PINICACHE IniCache;
PINICACHESECTION IniSection;
PINICACHESECTION OsIniSection;
@@ -543,9 +502,7 @@
ULONG i,j;
NTSTATUS Status;
- RtlInitUnicodeString(&Name, IniPath);
-
- Status = IniCacheLoad(&IniCache, &Name, FALSE);
+ Status = IniCacheLoad(&IniCache, IniPath, FALSE);
if (!NT_SUCCESS(Status))
return Status;
@@ -1944,16 +1901,13 @@
PWSTR EntryName,
PWSTR EntryValue)
{
- UNICODE_STRING Name;
PINICACHE Cache = NULL;
PINICACHESECTION Section = NULL;
NTSTATUS Status;
ULONG FileAttribute;
PWCHAR OldValue = NULL;
- RtlInitUnicodeString(&Name, BootIniPath);
-
- Status = IniCacheLoad(&Cache, &Name, FALSE);
+ Status = IniCacheLoad(&Cache, BootIniPath, FALSE);
if (!NT_SUCCESS(Status))
{
return Status;
Modified: trunk/reactos/base/setup/usetup/inicache.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/setup/usetup/inicache…
==============================================================================
--- trunk/reactos/base/setup/usetup/inicache.c [iso-8859-1] (original)
+++ trunk/reactos/base/setup/usetup/inicache.c [iso-8859-1] Wed Dec 30 18:26:42 2015
@@ -514,9 +514,10 @@
NTSTATUS
IniCacheLoad(
PINICACHE *Cache,
- PUNICODE_STRING FileName,
+ PWCHAR FileName,
BOOLEAN String)
{
+ UNICODE_STRING Name;
OBJECT_ATTRIBUTES ObjectAttributes;
FILE_STANDARD_INFORMATION FileInfo;
IO_STATUS_BLOCK IoStatusBlock;
@@ -542,8 +543,10 @@
*Cache = NULL;
/* Open ini file */
+ RtlInitUnicodeString(&Name, FileName);
+
InitializeObjectAttributes(&ObjectAttributes,
- FileName,
+ &Name,
0,
NULL,
NULL);
@@ -1066,8 +1069,7 @@
}
/* Create ini file */
- RtlInitUnicodeString(&Name,
- FileName);
+ RtlInitUnicodeString(&Name, FileName);
InitializeObjectAttributes(&ObjectAttributes,
&Name,
Modified: trunk/reactos/base/setup/usetup/inicache.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/setup/usetup/inicache…
==============================================================================
--- trunk/reactos/base/setup/usetup/inicache.h [iso-8859-1] (original)
+++ trunk/reactos/base/setup/usetup/inicache.h [iso-8859-1] Wed Dec 30 18:26:42 2015
@@ -76,7 +76,7 @@
NTSTATUS
IniCacheLoad(
PINICACHE *Cache,
- PUNICODE_STRING FileName,
+ PWCHAR FileName,
BOOLEAN String);
VOID