mirror of
https://github.com/reactos/reactos.git
synced 2024-09-28 13:34:53 +00:00
[freeldr] It's easy to check if we booted from a floppy thanks to boot path. No need to maintain a machine callback for that
svn path=/trunk/; revision=43262
This commit is contained in:
parent
7f2d93fde9
commit
d9b6d51218
|
@ -203,7 +203,6 @@ MachInit(IN PCCH CommandLine)
|
|||
//
|
||||
MachVtbl.DiskGetBootPath = DiskGetBootPath;
|
||||
MachVtbl.DiskGetBootDevice = DiskGetBootDevice;
|
||||
MachVtbl.DiskBootingFromFloppy = DiskBootingFromFloppy;
|
||||
MachVtbl.DiskNormalizeSystemPath = DiskNormalizeSystemPath;
|
||||
MachVtbl.DiskGetPartitionEntry = DiskGetPartitionEntry;
|
||||
|
||||
|
|
|
@ -46,7 +46,6 @@ PcMachInit(const char *CmdLine)
|
|||
MachVtbl.GetMemoryMap = PcMemGetMemoryMap;
|
||||
MachVtbl.DiskGetBootPath = DiskGetBootPath;
|
||||
MachVtbl.DiskGetBootDevice = DiskGetBootDevice;
|
||||
MachVtbl.DiskBootingFromFloppy = DiskBootingFromFloppy;
|
||||
MachVtbl.DiskNormalizeSystemPath = DiskNormalizeSystemPath;
|
||||
MachVtbl.DiskReadLogicalSectors = PcDiskReadLogicalSectors;
|
||||
MachVtbl.DiskGetPartitionEntry = DiskGetPartitionEntry;
|
||||
|
|
|
@ -49,7 +49,6 @@ XboxMachInit(const char *CmdLine)
|
|||
MachVtbl.GetMemoryMap = XboxMemGetMemoryMap;
|
||||
MachVtbl.DiskGetBootPath = DiskGetBootPath;
|
||||
MachVtbl.DiskGetBootDevice = DiskGetBootDevice;
|
||||
MachVtbl.DiskBootingFromFloppy = DiskBootingFromFloppy;
|
||||
MachVtbl.DiskNormalizeSystemPath = DiskNormalizeSystemPath;
|
||||
MachVtbl.DiskReadLogicalSectors = XboxDiskReadLogicalSectors;
|
||||
MachVtbl.DiskGetPartitionEntry = XboxDiskGetPartitionEntry;
|
||||
|
|
|
@ -256,10 +256,6 @@ VOID PpcDiskGetBootDevice( PULONG BootDevice ) {
|
|||
BootDevice[0] = BootDevice[1] = 0;
|
||||
}
|
||||
|
||||
BOOLEAN PpcDiskBootingFromFloppy(VOID) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOLEAN PpcDiskReadLogicalSectors( ULONG DriveNumber, ULONGLONG SectorNumber,
|
||||
ULONG SectorCount, PVOID Buffer ) {
|
||||
int rlen = 0;
|
||||
|
@ -495,7 +491,6 @@ void PpcDefaultMachVtbl()
|
|||
MachVtbl.DiskNormalizeSystemPath = PpcDiskNormalizeSystemPath;
|
||||
MachVtbl.DiskGetBootPath = PpcDiskGetBootPath;
|
||||
MachVtbl.DiskGetBootDevice = PpcDiskGetBootDevice;
|
||||
MachVtbl.DiskBootingFromFloppy = PpcDiskBootingFromFloppy;
|
||||
MachVtbl.DiskReadLogicalSectors = PpcDiskReadLogicalSectors;
|
||||
MachVtbl.DiskGetPartitionEntry = PpcDiskGetPartitionEntry;
|
||||
MachVtbl.DiskGetDriveGeometry = PpcDiskGetDriveGeometry;
|
||||
|
|
|
@ -219,12 +219,6 @@ DiskGetBootDevice(PULONG BootDevice)
|
|||
((char *)BootDevice)[1] = (char)BootPartition;
|
||||
}
|
||||
|
||||
BOOLEAN
|
||||
DiskBootingFromFloppy(VOID)
|
||||
{
|
||||
return BootDrive < 0x80;
|
||||
}
|
||||
|
||||
#define IsRecognizedPartition(P) \
|
||||
((P) == PARTITION_FAT_12 || \
|
||||
(P) == PARTITION_FAT_16 || \
|
||||
|
@ -344,7 +338,7 @@ DiskGetBootPath(char *BootPath, unsigned Size)
|
|||
return FALSE;
|
||||
}
|
||||
strcpy(BootPath, Path);
|
||||
strcat(BootPath, MachDiskBootingFromFloppy() ? "fdisk" : "cdrom");
|
||||
strcat(BootPath, BootDrive < 0x80 ? "fdisk" : "cdrom");
|
||||
strcat(strcat(strcat(BootPath, "("), Device), ")");
|
||||
|
||||
if (strcmp(BootPath, "multi(0)disk(0)cdrom(128)") == 0)
|
||||
|
|
|
@ -133,7 +133,6 @@ BOOLEAN DiskGetSystemVolume(char *SystemPath, char *RemainingPath,
|
|||
PULONG Device);
|
||||
BOOLEAN DiskGetBootPath(char *BootPath, unsigned Size);
|
||||
VOID DiskGetBootDevice(PULONG BootDevice);
|
||||
BOOLEAN DiskBootingFromFloppy(VOID);
|
||||
BOOLEAN DiskNormalizeSystemPath(char *SystemPath, unsigned Size);
|
||||
|
||||
|
||||
|
|
|
@ -64,7 +64,6 @@ typedef struct tagMACHVTBL
|
|||
|
||||
BOOLEAN (*DiskGetBootPath)(char *BootPath, unsigned Size);
|
||||
VOID (*DiskGetBootDevice)(PULONG BootDevice);
|
||||
BOOLEAN (*DiskBootingFromFloppy)(VOID);
|
||||
BOOLEAN (*DiskNormalizeSystemPath)(char *SystemPath, unsigned Size);
|
||||
BOOLEAN (*DiskReadLogicalSectors)(ULONG DriveNumber, ULONGLONG SectorNumber, ULONG SectorCount, PVOID Buffer);
|
||||
BOOLEAN (*DiskGetPartitionEntry)(ULONG DriveNumber, ULONG PartitionNumber, PPARTITION_TABLE_ENTRY PartitionTableEntry);
|
||||
|
@ -100,7 +99,6 @@ VOID MachBeep(VOID);
|
|||
MEMORY_DESCRIPTOR* ArcGetMemoryDescriptor(MEMORY_DESCRIPTOR* Current);
|
||||
BOOLEAN MachDiskGetBootPath(char *BootPath, unsigned Size);
|
||||
VOID MachDiskGetBootDevice(PULONG BootDevice);
|
||||
BOOLEAN MachDiskBootingFromFloppy();
|
||||
BOOLEAN MachDiskNormalizeSystemPath(char *SystemPath, unsigned Size);
|
||||
BOOLEAN MachDiskReadLogicalSectors(ULONG DriveNumber, ULONGLONG SectorNumber, ULONG SectorCount, PVOID Buffer);
|
||||
BOOLEAN MachDiskGetPartitionEntry(ULONG DriveNumber, ULONG PartitionNumber, PPARTITION_TABLE_ENTRY PartitionTableEntry);
|
||||
|
@ -130,7 +128,6 @@ VOID MachPrepareForReactOS(IN BOOLEAN Setup);
|
|||
#define MachPrepareForReactOS(a) MachVtbl.PrepareForReactOS(a)
|
||||
#define MachDiskGetBootPath(Path, Size) MachVtbl.DiskGetBootPath((Path), (Size))
|
||||
#define MachDiskGetBootDevice(BootDevice) MachVtbl.DiskGetBootDevice(BootDevice)
|
||||
#define MachDiskBootingFromFloppy() MachVtbl.DiskBootingFromFloppy()
|
||||
#define MachDiskNormalizeSystemPath(Path, Size) MachVtbl.DiskNormalizeSystemPath((Path), (Size))
|
||||
#define MachDiskReadLogicalSectors(Drive, Start, Count, Buf) MachVtbl.DiskReadLogicalSectors((Drive), (Start), (Count), (Buf))
|
||||
#define MachDiskGetPartitionEntry(Drive, Part, Entry) MachVtbl.DiskGetPartitionEntry((Drive), (Part), (Entry))
|
||||
|
|
|
@ -38,7 +38,6 @@
|
|||
#undef MachPrepareForReactOS
|
||||
#undef MachDiskGetBootPath
|
||||
#undef MachDiskGetBootDevice
|
||||
#undef MachDiskBootingFromFloppy
|
||||
#undef MachDiskNormalizeSystemPath
|
||||
#undef MachDiskReadLogicalSectors
|
||||
#undef MachDiskGetPartitionEntry
|
||||
|
@ -334,12 +333,6 @@ MachDiskGetBootDevice(PULONG BootDevice)
|
|||
MachVtbl.DiskGetBootDevice(BootDevice);
|
||||
}
|
||||
|
||||
BOOLEAN
|
||||
MachDiskBootingFromFloppy()
|
||||
{
|
||||
return MachVtbl.DiskBootingFromFloppy();
|
||||
}
|
||||
|
||||
BOOLEAN
|
||||
MachDiskNormalizeSystemPath(char *SystemPath, unsigned Size)
|
||||
{
|
||||
|
|
|
@ -47,6 +47,7 @@ VOID LoadReactOSSetup(VOID)
|
|||
ULONG i;
|
||||
LPCSTR SourcePath;
|
||||
LPCSTR LoadOptions, DbgLoadOptions = "";
|
||||
BOOLEAN BootFromFloppy;
|
||||
LPCSTR sourcePaths[] = {
|
||||
"", /* Only for floppy boot */
|
||||
#if defined(_M_IX86)
|
||||
|
@ -116,12 +117,13 @@ VOID LoadReactOSSetup(VOID)
|
|||
LoaderBlock.ArchExtra = (ULONG_PTR)MachHwDetect();
|
||||
UiDrawStatusText("");
|
||||
|
||||
/* set boot device */
|
||||
MachDiskGetBootDevice(&LoaderBlock.BootDevice);
|
||||
/* Check if we booted from floppy */
|
||||
MachDiskGetBootPath(reactos_kernel_cmdline, sizeof(reactos_kernel_cmdline));
|
||||
BootFromFloppy = strstr(reactos_kernel_cmdline, "fdisk");
|
||||
|
||||
UiDrawStatusText("Loading txtsetup.sif...");
|
||||
/* Open 'txtsetup.sif' */
|
||||
for (i = MachDiskBootingFromFloppy() ? 0 : 1; ; i++)
|
||||
for (i = BootFromFloppy ? 0 : 1; ; i++)
|
||||
{
|
||||
SourcePath = sourcePaths[i];
|
||||
if (!SourcePath)
|
||||
|
@ -191,7 +193,7 @@ VOID LoadReactOSSetup(VOID)
|
|||
LoaderBlock.KernelBase = KernelBase;
|
||||
|
||||
/* Insert boot disk 2 */
|
||||
if (MachDiskBootingFromFloppy())
|
||||
if (BootFromFloppy)
|
||||
{
|
||||
UiMessageBox("Please insert \"ReactOS Boot Disk 2\" and press ENTER");
|
||||
|
||||
|
|
|
@ -158,6 +158,7 @@ VOID LoadReactOSSetup2(VOID)
|
|||
CHAR FileName[512];
|
||||
CHAR BootPath[512];
|
||||
LPCSTR LoadOptions, BootOptions;
|
||||
BOOLEAN BootFromFloppy;
|
||||
#if DBG
|
||||
LPCSTR DbgOptions;
|
||||
#endif
|
||||
|
@ -189,9 +190,14 @@ VOID LoadReactOSSetup2(VOID)
|
|||
NULL
|
||||
};
|
||||
|
||||
/* Open 'txtsetup.sif' from any of source paths */
|
||||
/* Get boot path */
|
||||
MachDiskGetBootPath(SystemPath, sizeof(SystemPath));
|
||||
for (i = MachDiskBootingFromFloppy() ? 0 : 1; ; i++)
|
||||
|
||||
/* And check if we booted from floppy */
|
||||
BootFromFloppy = strstr(SystemPath, "fdisk");
|
||||
|
||||
/* Open 'txtsetup.sif' from any of source paths */
|
||||
for (i = BootFromFloppy ? 0 : 1; ; i++)
|
||||
{
|
||||
SourcePath = SourcePaths[i];
|
||||
if (!SourcePath)
|
||||
|
|
Loading…
Reference in a new issue