mirror of
https://github.com/reactos/reactos.git
synced 2024-06-23 14:31:47 +00:00
Changes in v1.8 (1/18/2003) (brianp)
- Added F8 options menu - Added custom Boot functionality - Moved all OS= settings from [FreeLoader] section to [Operating Systems] section. - Removed MessageLine= setting. MessageBox= now accepts "\n" as an escape character for newlines. - Added descriptions for disk error codes returned by the BIOS. - Device names like "fd0" and "hd0" and "hd1" as well as BIOS drive numbers can now be used as BootDrive= settings. svn path=/trunk/; revision=4030
This commit is contained in:
parent
47333299bc
commit
4fb2283421
|
@ -1,3 +1,12 @@
|
|||
Changes in v1.8 (1/18/2003) (brianp)
|
||||
|
||||
- Added F8 options menu
|
||||
- Added custom Boot functionality
|
||||
- Moved all OS= settings from [FreeLoader] section to [Operating Systems] section.
|
||||
- Removed MessageLine= setting. MessageBox= now accepts "\n" as an escape character for newlines.
|
||||
- Added descriptions for disk error codes returned by the BIOS.
|
||||
- Device names like "fd0" and "hd0" and "hd1" as well as BIOS drive numbers can now be used as BootDrive= settings.
|
||||
|
||||
Changes in v1.7.12 (12/05/2002) (brianp)
|
||||
|
||||
- Minor tweak to UI code to allow description
|
||||
|
|
|
@ -204,7 +204,8 @@ ARCH_OBJS = fathelp.o \
|
|||
i386vid.o \
|
||||
drvmap.o \
|
||||
int386.o \
|
||||
i386disk.o
|
||||
i386disk.o \
|
||||
portio.o
|
||||
|
||||
RTL_OBJS = print.o \
|
||||
stdlib.o \
|
||||
|
@ -230,8 +231,7 @@ REACTOS_OBJS= reactos.o \
|
|||
reghive.o \
|
||||
registry.o
|
||||
|
||||
COMM_OBJS = rs232.o \
|
||||
portio.o
|
||||
COMM_OBJS = rs232.o
|
||||
|
||||
DISK_OBJS = disk.o \
|
||||
geometry.o \
|
||||
|
@ -269,7 +269,8 @@ FREELDR_OBJS= bootmgr.o \
|
|||
miscboot.o \
|
||||
options.o \
|
||||
linuxboot.o \
|
||||
oslist.o
|
||||
oslist.o \
|
||||
custom.o
|
||||
|
||||
SETUPLDR_OBJS= setupldr.o
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* FreeLoader
|
||||
* Copyright (C) 1998-2002 Brian Palmer <brianp@sginet.com>
|
||||
* Copyright (C) 1998-2003 Brian Palmer <brianp@sginet.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -28,10 +28,12 @@
|
|||
#include <mm.h>
|
||||
#include <inifile.h>
|
||||
#include <debug.h>
|
||||
#include <options.h>
|
||||
#include <oslist.h>
|
||||
#include <video.h>
|
||||
#include <bootmgr.h>
|
||||
#include <drivemap.h>
|
||||
#include <keycodes.h>
|
||||
|
||||
BOOL IsSetupLdr = FALSE;
|
||||
|
||||
|
@ -94,7 +96,7 @@ VOID RunLoader(VOID)
|
|||
UiDrawBackdrop();
|
||||
|
||||
// Show the operating system list menu
|
||||
if (!UiDisplayMenu(OperatingSystemDisplayNames, OperatingSystemCount, DefaultOperatingSystem, TimeOut, &SelectedOperatingSystem))
|
||||
if (!UiDisplayMenu(OperatingSystemDisplayNames, OperatingSystemCount, DefaultOperatingSystem, TimeOut, &SelectedOperatingSystem, FALSE, MainBootMenuKeyPressFilter))
|
||||
{
|
||||
UiMessageBox("Press ENTER to reboot.\n");
|
||||
goto reboot;
|
||||
|
@ -127,7 +129,7 @@ VOID RunLoader(VOID)
|
|||
}
|
||||
else if (stricmp(SettingValue, "Linux") == 0)
|
||||
{
|
||||
LoadAndBootLinux(OperatingSystemSectionNames[SelectedOperatingSystem]);
|
||||
LoadAndBootLinux(OperatingSystemSectionNames[SelectedOperatingSystem], OperatingSystemDisplayNames[SelectedOperatingSystem]);
|
||||
}
|
||||
else if (stricmp(SettingValue, "BootSector") == 0)
|
||||
{
|
||||
|
@ -145,8 +147,7 @@ VOID RunLoader(VOID)
|
|||
|
||||
|
||||
reboot:
|
||||
VideoClearScreen();
|
||||
VideoShowTextCursor();
|
||||
UiUnInitialize("Rebooting...");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -199,3 +200,16 @@ S32 GetTimeOut(VOID)
|
|||
|
||||
return TimeOut;
|
||||
}
|
||||
|
||||
BOOL MainBootMenuKeyPressFilter(U32 KeyPress)
|
||||
{
|
||||
if (KeyPress == KEY_F8)
|
||||
{
|
||||
DoOptionsMenu();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// We didn't handle the key
|
||||
return FALSE;
|
||||
}
|
||||
|
|
400
freeldr/freeldr/custom.c
Normal file
400
freeldr/freeldr/custom.c
Normal file
|
@ -0,0 +1,400 @@
|
|||
/*
|
||||
* FreeLoader
|
||||
* Copyright (C) 1998-2003 Brian Palmer <brianp@sginet.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#include <freeldr.h>
|
||||
#include <rtl.h>
|
||||
#include <ui.h>
|
||||
#include <options.h>
|
||||
#include <miscboot.h>
|
||||
#include <debug.h>
|
||||
#include <disk.h>
|
||||
#include <arch.h>
|
||||
#include <inifile.h>
|
||||
#include <linux.h>
|
||||
#include <reactos.h>
|
||||
#include <drivemap.h>
|
||||
|
||||
|
||||
UCHAR BootDrivePrompt[] = "Enter the boot drive.\n\nExamples:\nfd0 - first floppy drive\nhd0 - first hard drive\nhd1 - second hard drive\ncd0 - first CD-ROM drive.\n\nBIOS drive numbers may also be used:\n0 - first floppy drive\n0x80 - first hard drive\n0x81 - second hard drive";
|
||||
UCHAR BootPartitionPrompt[] = "Enter the boot partition.\n\nEnter 0 for the active (bootable) partition.";
|
||||
UCHAR BootSectorFilePrompt[] = "Enter the boot sector file path.\n\nExamples:\n\\BOOTSECT.DOS\n/boot/bootsect.dos";
|
||||
UCHAR LinuxKernelPrompt[] = "Enter the Linux kernel image path.\n\nExamples:\n/vmlinuz\n/boot/vmlinuz-2.4.18";
|
||||
UCHAR LinuxInitrdPrompt[] = "Enter the initrd image path.\n\nExamples:\n/initrd.gz\n/boot/root.img.gz\n\nLeave blank for no initial ram disk.";
|
||||
UCHAR LinuxCommandLinePrompt[] = "Enter the Linux kernel command line.\n\nExamples:\nroot=/dev/hda1\nroot=/dev/fd0 read-only\nroot=/dev/sdb1 init=/sbin/init";
|
||||
UCHAR ReactOSSystemPathPrompt[] = "Enter the path to your ReactOS system directory.\n\nExamples:\n\\REACTOS\n\\ROS";
|
||||
UCHAR ReactOSOptionsPrompt[] = "Enter the options you want passed to the kernel.\n\nExamples:\n/DEBUG /DEBUGPORT=COM1 /BAUDRATE=115200\n/FASTDETECT /SOS /NOGUIBOOT\n/BASEVIDEO /MAXMEM=64\n/KERNEL=NTKRNLMP.EXE /HAL=HALMPS.DLL";
|
||||
|
||||
UCHAR CustomBootPrompt[] = "Press ENTER to boot your custom boot setup.";
|
||||
|
||||
VOID OptionMenuCustomBoot(VOID)
|
||||
{
|
||||
PUCHAR CustomBootMenuList[] = { "Disk", "Partition", "Boot Sector File", "ReactOS", "Linux" };
|
||||
U32 CustomBootMenuCount = sizeof(CustomBootMenuList) / sizeof(CustomBootMenuList[0]);
|
||||
U32 SelectedMenuItem;
|
||||
|
||||
if (!UiDisplayMenu(CustomBootMenuList, CustomBootMenuCount, 0, -1, &SelectedMenuItem, TRUE, NULL))
|
||||
{
|
||||
// The user pressed ESC
|
||||
return;
|
||||
}
|
||||
|
||||
switch (SelectedMenuItem)
|
||||
{
|
||||
case 0: // Disk
|
||||
OptionMenuCustomBootDisk();
|
||||
break;
|
||||
case 1: // Partition
|
||||
OptionMenuCustomBootPartition();
|
||||
break;
|
||||
case 2: // Boot Sector File
|
||||
OptionMenuCustomBootBootSectorFile();
|
||||
break;
|
||||
case 3: // ReactOS
|
||||
OptionMenuCustomBootReactOS();
|
||||
break;
|
||||
case 4: // Linux
|
||||
OptionMenuCustomBootLinux();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
VOID OptionMenuCustomBootDisk(VOID)
|
||||
{
|
||||
UCHAR SectionName[100];
|
||||
UCHAR BootDriveString[20];
|
||||
U32 SectionId;
|
||||
|
||||
RtlZeroMemory(SectionName, sizeof(SectionName));
|
||||
RtlZeroMemory(BootDriveString, sizeof(BootDriveString));
|
||||
|
||||
if (!UiEditBox(BootDrivePrompt, BootDriveString, 20))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Generate a unique section name
|
||||
sprintf(SectionName, "CustomBootDisk%d%d%d%d%d%d", getyear(), getday(), getmonth(), gethour(), getminute(), getsecond());
|
||||
|
||||
// Add the section
|
||||
if (!IniAddSection(SectionName, &SectionId))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Add the BootType
|
||||
if (!IniAddSettingValueToSection(SectionId, "BootType", "Drive"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Add the BootDrive
|
||||
if (!IniAddSettingValueToSection(SectionId, "BootDrive", BootDriveString))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
UiMessageBox(CustomBootPrompt);
|
||||
|
||||
LoadAndBootDrive(SectionName);
|
||||
}
|
||||
|
||||
VOID OptionMenuCustomBootPartition(VOID)
|
||||
{
|
||||
UCHAR SectionName[100];
|
||||
UCHAR BootDriveString[20];
|
||||
UCHAR BootPartitionString[20];
|
||||
U32 SectionId;
|
||||
|
||||
RtlZeroMemory(SectionName, sizeof(SectionName));
|
||||
RtlZeroMemory(BootDriveString, sizeof(BootDriveString));
|
||||
RtlZeroMemory(BootPartitionString, sizeof(BootPartitionString));
|
||||
|
||||
if (!UiEditBox(BootDrivePrompt, BootDriveString, 20))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!UiEditBox(BootPartitionPrompt, BootPartitionString, 20))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Generate a unique section name
|
||||
sprintf(SectionName, "CustomBootPartition%d%d%d%d%d%d", getyear(), getday(), getmonth(), gethour(), getminute(), getsecond());
|
||||
|
||||
// Add the section
|
||||
if (!IniAddSection(SectionName, &SectionId))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Add the BootType
|
||||
if (!IniAddSettingValueToSection(SectionId, "BootType", "Partition"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Add the BootDrive
|
||||
if (!IniAddSettingValueToSection(SectionId, "BootDrive", BootDriveString))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Add the BootPartition
|
||||
if (!IniAddSettingValueToSection(SectionId, "BootPartition", BootPartitionString))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
UiMessageBox(CustomBootPrompt);
|
||||
|
||||
LoadAndBootPartition(SectionName);
|
||||
}
|
||||
|
||||
VOID OptionMenuCustomBootBootSectorFile(VOID)
|
||||
{
|
||||
UCHAR SectionName[100];
|
||||
UCHAR BootDriveString[20];
|
||||
UCHAR BootPartitionString[20];
|
||||
UCHAR BootSectorFileString[200];
|
||||
U32 SectionId;
|
||||
|
||||
RtlZeroMemory(SectionName, sizeof(SectionName));
|
||||
RtlZeroMemory(BootDriveString, sizeof(BootDriveString));
|
||||
RtlZeroMemory(BootPartitionString, sizeof(BootPartitionString));
|
||||
RtlZeroMemory(BootSectorFileString, sizeof(BootSectorFileString));
|
||||
|
||||
if (!UiEditBox(BootDrivePrompt, BootDriveString, 20))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!UiEditBox(BootPartitionPrompt, BootPartitionString, 20))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!UiEditBox(BootSectorFilePrompt, BootSectorFileString, 200))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Generate a unique section name
|
||||
sprintf(SectionName, "CustomBootSectorFile%d%d%d%d%d%d", getyear(), getday(), getmonth(), gethour(), getminute(), getsecond());
|
||||
|
||||
// Add the section
|
||||
if (!IniAddSection(SectionName, &SectionId))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Add the BootType
|
||||
if (!IniAddSettingValueToSection(SectionId, "BootType", "BootSector"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Add the BootDrive
|
||||
if (!IniAddSettingValueToSection(SectionId, "BootDrive", BootDriveString))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Add the BootPartition
|
||||
if (!IniAddSettingValueToSection(SectionId, "BootPartition", BootPartitionString))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Add the BootSectorFile
|
||||
if (!IniAddSettingValueToSection(SectionId, "BootSectorFile", BootSectorFileString))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
UiMessageBox(CustomBootPrompt);
|
||||
|
||||
LoadAndBootBootSector(SectionName);
|
||||
}
|
||||
|
||||
VOID OptionMenuCustomBootReactOS(VOID)
|
||||
{
|
||||
UCHAR SectionName[100];
|
||||
UCHAR BootDriveString[20];
|
||||
UCHAR BootPartitionString[20];
|
||||
UCHAR ReactOSSystemPath[200];
|
||||
UCHAR ReactOSARCPath[200];
|
||||
UCHAR ReactOSOptions[200];
|
||||
U32 SectionId;
|
||||
|
||||
RtlZeroMemory(SectionName, sizeof(SectionName));
|
||||
RtlZeroMemory(BootDriveString, sizeof(BootDriveString));
|
||||
RtlZeroMemory(BootPartitionString, sizeof(BootPartitionString));
|
||||
RtlZeroMemory(ReactOSSystemPath, sizeof(ReactOSSystemPath));
|
||||
RtlZeroMemory(ReactOSOptions, sizeof(ReactOSOptions));
|
||||
|
||||
if (!UiEditBox(BootDrivePrompt, BootDriveString, 20))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!UiEditBox(BootPartitionPrompt, BootPartitionString, 20))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!UiEditBox(ReactOSSystemPathPrompt, ReactOSSystemPath, 200))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!UiEditBox(ReactOSOptionsPrompt, ReactOSOptions, 200))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Generate a unique section name
|
||||
sprintf(SectionName, "CustomReactOS%d%d%d%d%d%d", getyear(), getday(), getmonth(), gethour(), getminute(), getsecond());
|
||||
|
||||
// Add the section
|
||||
if (!IniAddSection(SectionName, &SectionId))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Add the BootType
|
||||
if (!IniAddSettingValueToSection(SectionId, "BootType", "ReactOS"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Construct the ReactOS ARC system path
|
||||
ConstructArcPath(ReactOSARCPath, ReactOSSystemPath, DriveMapGetBiosDriveNumber(BootDriveString), atoi(BootPartitionString));
|
||||
|
||||
// Add the system path
|
||||
if (!IniAddSettingValueToSection(SectionId, "SystemPath", ReactOSARCPath))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Add the CommandLine
|
||||
if (!IniAddSettingValueToSection(SectionId, "Options", ReactOSOptions))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
UiMessageBox(CustomBootPrompt);
|
||||
|
||||
LoadAndBootReactOS(SectionName);
|
||||
}
|
||||
|
||||
VOID OptionMenuCustomBootLinux(VOID)
|
||||
{
|
||||
UCHAR SectionName[100];
|
||||
UCHAR BootDriveString[20];
|
||||
UCHAR BootPartitionString[20];
|
||||
UCHAR LinuxKernelString[200];
|
||||
UCHAR LinuxInitrdString[200];
|
||||
UCHAR LinuxCommandLineString[200];
|
||||
U32 SectionId;
|
||||
|
||||
RtlZeroMemory(SectionName, sizeof(SectionName));
|
||||
RtlZeroMemory(BootDriveString, sizeof(BootDriveString));
|
||||
RtlZeroMemory(BootPartitionString, sizeof(BootPartitionString));
|
||||
RtlZeroMemory(LinuxKernelString, sizeof(LinuxKernelString));
|
||||
RtlZeroMemory(LinuxInitrdString, sizeof(LinuxInitrdString));
|
||||
RtlZeroMemory(LinuxCommandLineString, sizeof(LinuxCommandLineString));
|
||||
|
||||
if (!UiEditBox(BootDrivePrompt, BootDriveString, 20))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!UiEditBox(BootPartitionPrompt, BootPartitionString, 20))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!UiEditBox(LinuxKernelPrompt, LinuxKernelString, 200))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!UiEditBox(LinuxInitrdPrompt, LinuxInitrdString, 200))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!UiEditBox(LinuxCommandLinePrompt, LinuxCommandLineString, 200))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Generate a unique section name
|
||||
sprintf(SectionName, "CustomLinux%d%d%d%d%d%d", getyear(), getday(), getmonth(), gethour(), getminute(), getsecond());
|
||||
|
||||
// Add the section
|
||||
if (!IniAddSection(SectionName, &SectionId))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Add the BootType
|
||||
if (!IniAddSettingValueToSection(SectionId, "BootType", "Linux"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Add the BootDrive
|
||||
if (!IniAddSettingValueToSection(SectionId, "BootDrive", BootDriveString))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Add the BootPartition
|
||||
if (!IniAddSettingValueToSection(SectionId, "BootPartition", BootPartitionString))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Add the Kernel
|
||||
if (!IniAddSettingValueToSection(SectionId, "Kernel", LinuxKernelString))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Add the Initrd
|
||||
if (strlen(LinuxInitrdString) > 0)
|
||||
{
|
||||
if (!IniAddSettingValueToSection(SectionId, "Initrd", LinuxInitrdString))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Add the CommandLine
|
||||
if (!IniAddSettingValueToSection(SectionId, "CommandLine", LinuxCommandLineString))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
UiMessageBox(CustomBootPrompt);
|
||||
|
||||
LoadAndBootLinux(SectionName, "Custom Linux Setup");
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* FreeLoader
|
||||
* Copyright (C) 1998-2002 Brian Palmer <brianp@sginet.com>
|
||||
* Copyright (C) 1998-2003 Brian Palmer <brianp@sginet.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -21,14 +21,15 @@
|
|||
#include <debug.h>
|
||||
#include <rtl.h>
|
||||
#include <comm.h>
|
||||
#include <portio.h>
|
||||
|
||||
#ifdef DEBUG
|
||||
|
||||
#define DEBUG_ALL
|
||||
//#define DEBUG_INIFILE
|
||||
//#define DEBUG_ALL
|
||||
#define DEBUG_INIFILE
|
||||
//#define DEBUG_REACTOS
|
||||
//#define DEBUG_CUSTOM
|
||||
#define DEBUG_NONE
|
||||
//#define DEBUG_NONE
|
||||
|
||||
#if defined (DEBUG_ALL)
|
||||
U32 DebugPrintMask = DPRINT_WARNING | DPRINT_MEMORY | DPRINT_FILESYSTEM |
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* FreeLoader
|
||||
* Copyright (C) 1998-2002 Brian Palmer <brianp@sginet.com>
|
||||
* Copyright (C) 1998-2003 Brian Palmer <brianp@sginet.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -151,6 +151,13 @@ U32 DriveMapGetBiosDriveNumber(PUCHAR DeviceName)
|
|||
{
|
||||
U32 BiosDriveNumber = 0;
|
||||
|
||||
// If they passed in a number string then just
|
||||
// convert it to decimal and return it
|
||||
if (DeviceName[0] >= '0' && DeviceName[0] <= '9')
|
||||
{
|
||||
return atoi(DeviceName);
|
||||
}
|
||||
|
||||
// Convert the drive number string into a number
|
||||
// 'hd1' = 1
|
||||
BiosDriveNumber = atoi(&DeviceName[2]);
|
||||
|
|
Loading…
Reference in a new issue