Move freeldr to reactos\boot\freeldr.
[reactos.git] / freeldr / freeldr / custom.c
diff --git a/freeldr/freeldr/custom.c b/freeldr/freeldr/custom.c
deleted file mode 100644 (file)
index f3899ba..0000000
+++ /dev/null
@@ -1,411 +0,0 @@
-/*
- *  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>
-#include <machine.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;
-       U32     Year, Month, Day, Hour, Minute, Second;
-
-       RtlZeroMemory(SectionName, sizeof(SectionName));
-       RtlZeroMemory(BootDriveString, sizeof(BootDriveString));
-
-       if (!UiEditBox(BootDrivePrompt, BootDriveString, 20))
-       {
-               return;
-       }
-
-       // Generate a unique section name
-       MachRTCGetCurrentDateTime(&Year, &Month, &Day, &Hour, &Minute, &Second);
-       sprintf(SectionName, "CustomBootDisk%d%d%d%d%d%d", Year, Day, Month, Hour, Minute, Second);
-
-       // 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;
-       U32     Year, Month, Day, Hour, Minute, Second;
-
-       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
-       MachRTCGetCurrentDateTime(&Year, &Month, &Day, &Hour, &Minute, &Second);
-       sprintf(SectionName, "CustomBootPartition%d%d%d%d%d%d", Year, Day, Month, Hour, Minute, Second);
-
-       // 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;
-       U32     Year, Month, Day, Hour, Minute, Second;
-
-       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
-       MachRTCGetCurrentDateTime(&Year, &Month, &Day, &Hour, &Minute, &Second);
-       sprintf(SectionName, "CustomBootSectorFile%d%d%d%d%d%d", Year, Day, Month, Hour, Minute, Second);
-
-       // 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;
-       U32     Year, Month, Day, Hour, Minute, Second;
-
-       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
-       MachRTCGetCurrentDateTime(&Year, &Month, &Day, &Hour, &Minute, &Second);
-       sprintf(SectionName, "CustomReactOS%d%d%d%d%d%d", Year, Day, Month, Hour, Minute, Second);
-
-       // 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;
-       U32     Year, Month, Day, Hour, Minute, Second;
-
-       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
-       MachRTCGetCurrentDateTime(&Year, &Month, &Day, &Hour, &Minute, &Second);
-       sprintf(SectionName, "CustomLinux%d%d%d%d%d%d", Year, Day, Month, Hour, Minute, Second);
-
-       // 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");
-}