From: Hervé Poussineau Date: Sat, 3 Oct 2009 12:49:14 +0000 (+0000) Subject: [freeldr] It's easy to check if we booted from a floppy thanks to boot path. No need... X-Git-Tag: ReactOS-0.3.11~670 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=d9b6d512189ac6434095e138a98afcc6d24b6ea3 [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 --- diff --git a/reactos/boot/freeldr/freeldr/arch/arm/macharm.c b/reactos/boot/freeldr/freeldr/arch/arm/macharm.c index 1bff123d1e2..0cb489fa713 100644 --- a/reactos/boot/freeldr/freeldr/arch/arm/macharm.c +++ b/reactos/boot/freeldr/freeldr/arch/arm/macharm.c @@ -203,7 +203,6 @@ MachInit(IN PCCH CommandLine) // MachVtbl.DiskGetBootPath = DiskGetBootPath; MachVtbl.DiskGetBootDevice = DiskGetBootDevice; - MachVtbl.DiskBootingFromFloppy = DiskBootingFromFloppy; MachVtbl.DiskNormalizeSystemPath = DiskNormalizeSystemPath; MachVtbl.DiskGetPartitionEntry = DiskGetPartitionEntry; diff --git a/reactos/boot/freeldr/freeldr/arch/i386/machpc.c b/reactos/boot/freeldr/freeldr/arch/i386/machpc.c index 628c2812f9a..816dad483bd 100644 --- a/reactos/boot/freeldr/freeldr/arch/i386/machpc.c +++ b/reactos/boot/freeldr/freeldr/arch/i386/machpc.c @@ -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; diff --git a/reactos/boot/freeldr/freeldr/arch/i386/machxbox.c b/reactos/boot/freeldr/freeldr/arch/i386/machxbox.c index c03dc42d016..389ff069441 100644 --- a/reactos/boot/freeldr/freeldr/arch/i386/machxbox.c +++ b/reactos/boot/freeldr/freeldr/arch/i386/machxbox.c @@ -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; diff --git a/reactos/boot/freeldr/freeldr/arch/powerpc/mach.c b/reactos/boot/freeldr/freeldr/arch/powerpc/mach.c index 7a3355ebcbd..11d3050f006 100644 --- a/reactos/boot/freeldr/freeldr/arch/powerpc/mach.c +++ b/reactos/boot/freeldr/freeldr/arch/powerpc/mach.c @@ -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; diff --git a/reactos/boot/freeldr/freeldr/disk/disk.c b/reactos/boot/freeldr/freeldr/disk/disk.c index c9b31422b00..b98b2110be1 100644 --- a/reactos/boot/freeldr/freeldr/disk/disk.c +++ b/reactos/boot/freeldr/freeldr/disk/disk.c @@ -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) diff --git a/reactos/boot/freeldr/freeldr/include/disk.h b/reactos/boot/freeldr/freeldr/include/disk.h index 7a3b18fd1c6..a516aadd928 100644 --- a/reactos/boot/freeldr/freeldr/include/disk.h +++ b/reactos/boot/freeldr/freeldr/include/disk.h @@ -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); diff --git a/reactos/boot/freeldr/freeldr/include/machine.h b/reactos/boot/freeldr/freeldr/include/machine.h index 47979c51b94..b9fff720eca 100644 --- a/reactos/boot/freeldr/freeldr/include/machine.h +++ b/reactos/boot/freeldr/freeldr/include/machine.h @@ -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)) diff --git a/reactos/boot/freeldr/freeldr/machine.c b/reactos/boot/freeldr/freeldr/machine.c index 79c8c74e966..a9b96d7ece9 100644 --- a/reactos/boot/freeldr/freeldr/machine.c +++ b/reactos/boot/freeldr/freeldr/machine.c @@ -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) { diff --git a/reactos/boot/freeldr/freeldr/reactos/setupldr.c b/reactos/boot/freeldr/freeldr/reactos/setupldr.c index d71812e2353..10f03d6434c 100644 --- a/reactos/boot/freeldr/freeldr/reactos/setupldr.c +++ b/reactos/boot/freeldr/freeldr/reactos/setupldr.c @@ -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"); diff --git a/reactos/boot/freeldr/freeldr/windows/setupldr2.c b/reactos/boot/freeldr/freeldr/windows/setupldr2.c index 3d577bba385..84972484061 100644 --- a/reactos/boot/freeldr/freeldr/windows/setupldr2.c +++ b/reactos/boot/freeldr/freeldr/windows/setupldr2.c @@ -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)