[freeldr] It's easy to check if we booted from a floppy thanks to boot path. No need...
authorHervé Poussineau <hpoussin@reactos.org>
Sat, 3 Oct 2009 12:49:14 +0000 (12:49 +0000)
committerHervé Poussineau <hpoussin@reactos.org>
Sat, 3 Oct 2009 12:49:14 +0000 (12:49 +0000)
svn path=/trunk/; revision=43262

reactos/boot/freeldr/freeldr/arch/arm/macharm.c
reactos/boot/freeldr/freeldr/arch/i386/machpc.c
reactos/boot/freeldr/freeldr/arch/i386/machxbox.c
reactos/boot/freeldr/freeldr/arch/powerpc/mach.c
reactos/boot/freeldr/freeldr/disk/disk.c
reactos/boot/freeldr/freeldr/include/disk.h
reactos/boot/freeldr/freeldr/include/machine.h
reactos/boot/freeldr/freeldr/machine.c
reactos/boot/freeldr/freeldr/reactos/setupldr.c
reactos/boot/freeldr/freeldr/windows/setupldr2.c

index 1bff123..0cb489f 100644 (file)
@@ -203,7 +203,6 @@ MachInit(IN PCCH CommandLine)
     //
     MachVtbl.DiskGetBootPath = DiskGetBootPath;
     MachVtbl.DiskGetBootDevice = DiskGetBootDevice;
-    MachVtbl.DiskBootingFromFloppy = DiskBootingFromFloppy;
     MachVtbl.DiskNormalizeSystemPath = DiskNormalizeSystemPath;
     MachVtbl.DiskGetPartitionEntry = DiskGetPartitionEntry;
     
index 628c281..816dad4 100644 (file)
@@ -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;
index c03dc42..389ff06 100644 (file)
@@ -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;
index 7a3355e..11d3050 100644 (file)
@@ -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;
index c9b3142..b98b211 100644 (file)
@@ -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)
index 7a3b18f..a516aad 100644 (file)
@@ -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);
 
 
index 47979c5..b9fff72 100644 (file)
@@ -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))
index 79c8c74..a9b96d7 100644 (file)
@@ -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)
 {
index d71812e..10f03d6 100644 (file)
@@ -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");
 
index 3d577bb..8497248 100644 (file)
@@ -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)