From d5ddfb6d284761850d00781ab206254bbe11665b Mon Sep 17 00:00:00 2001 From: Erwan Velu Date: Tue, 22 Jun 2010 23:30:25 +0200 Subject: [PATCH] hdt: Using syslinux_reboot() call Rebooting can be achieved via syslinux_reboot() instead of the useless reboot.c32 module. --- com32/hdt/Makefile | 5 +---- com32/hdt/hdt-cli-hdt.c | 9 ++++----- com32/hdt/hdt-common.c | 6 ------ com32/hdt/hdt-common.h | 4 +++- com32/hdt/hdt-menu.c | 7 ++++++- 5 files changed, 14 insertions(+), 17 deletions(-) diff --git a/com32/hdt/Makefile b/com32/hdt/Makefile index f2e5f83..96af05f 100644 --- a/com32/hdt/Makefile +++ b/com32/hdt/Makefile @@ -43,7 +43,6 @@ ISOLINUX_DIR ?= isolinux FLOPPY_DIR ?= floppy PCI_IDS_FILE ?= $(PWD)/$(FLOPPY_DIR)/pci.ids GZ_PCI_IDS_FILE ?= $(PCI_IDS_FILE).gz -REBOOT_COM32 ?= $(com32)/modules/reboot.c32 MENU_COM32 ?= $(com32)/menu/menu.c32 ART_DIR ?= art/ @@ -55,7 +54,7 @@ hdt.elf : $(OBJS) $(LIBS) $(C_LIBS) memtest: -[ ! -f $(FLOPPY_DIR)/$(MEMTEST) ] && $(WGET) $(MEMTEST_URL) -O $(FLOPPY_DIR)/$(MEMTEST) -hdt.img: hdt.c32 $(FLOPPY_DIR)/hdt.cfg $(FLOPPY_DIR)/mtools.conf $(topdir)/mtools/syslinux $(REBOOT_COM32) $(MENU_COM32) memtest +hdt.img: hdt.c32 $(FLOPPY_DIR)/hdt.cfg $(FLOPPY_DIR)/mtools.conf $(topdir)/mtools/syslinux $(MENU_COM32) memtest rm -f hdt*.img $(SED) -e 's/%VERSION%/$(VERSION)/g' $(FLOPPY_DIR)/hdt.cfg |\ $(SED) -e 's/%CODENAME%/$(CODENAME)/g' > $(FLOPPY_DIR)/syslinux.cfg @@ -67,7 +66,6 @@ hdt.img: hdt.c32 $(FLOPPY_DIR)/hdt.cfg $(FLOPPY_DIR)/mtools.conf $(topdir)/mtool -[ -f $(MODULES_PCIMAP_FILE) ] && cat $(MODULES_PCIMAP_FILE) | $(GZIPPROG) - -f | MTOOLSRC=$(PWD)/$(FLOPPY_DIR)/mtools.conf $(MCOPY) - a:modules.pcimap MTOOLSRC=$(PWD)/$(FLOPPY_DIR)/mtools.conf $(MCOPY) hdt.c32 a: MTOOLSRC=$(PWD)/$(FLOPPY_DIR)/mtools.conf $(MCOPY) $(MENU_COM32) a: - MTOOLSRC=$(PWD)/$(FLOPPY_DIR)/mtools.conf $(MCOPY) $(REBOOT_COM32) a: @ [ -f $(GZ_PCI_IDS_FILE) ] && MTOOLSRC=$(PWD)/$(FLOPPY_DIR)/mtools.conf $(MCOPY) $(GZ_PCI_IDS_FILE) a:pci.ids || printf "\nThe $(GZ_PCI_IDS_FILE) file is missing and can be downloaded from http://pciids.sourceforge.net and gzipped in\nthe ./com32/hdt/$(FLOPPY_DIR) directory of the extracted Syslinux source.\n\n" MTOOLSRC=$(PWD)/$(FLOPPY_DIR)/mtools.conf $(MCOPY) $(FLOPPY_DIR)/syslinux.cfg a: MTOOLSRC=$(PWD)/$(FLOPPY_DIR)/mtools.conf $(MCOPY) $(FLOPPY_DIR)/$(MEMTEST) a: @@ -88,7 +86,6 @@ hdt.iso: hdt.c32 $(topdir)/core/isolinux.bin $(FLOPPY_DIR)/hdt.cfg memtest $(SED) -e 's/%VERSION%/$(VERSION)/g' $(FLOPPY_DIR)/hdt.cfg |\ $(SED) -e 's/%CODENAME%/$(CODENAME)/g' > $(ISO_DIR)/$(ISOLINUX_DIR)/isolinux.cfg cp hdt.c32 $(ISO_DIR)/$(ISOLINUX_DIR) - cp $(REBOOT_COM32) $(ISO_DIR)/$(ISOLINUX_DIR) cp $(FLOPPY_DIR)/$(MEMTEST) $(ISO_DIR)/$(ISOLINUX_DIR) cp $(MENU_COM32) $(ISO_DIR)/$(ISOLINUX_DIR) cp -av $(ART_DIR)/backgnd.png $(ISO_DIR)/$(ISOLINUX_DIR) diff --git a/com32/hdt/hdt-cli-hdt.c b/com32/hdt/hdt-cli-hdt.c index 65bb444..f4854e3 100644 --- a/com32/hdt/hdt-cli-hdt.c +++ b/com32/hdt/hdt-cli-hdt.c @@ -30,6 +30,7 @@ #include #include #include +#include #include "hdt-menu.h" #include "hdt-cli.h" @@ -246,11 +247,9 @@ void main_show_hdt(int argc __unused, char **argv __unused, static void do_reboot(int argc __unused, char **argv __unused, struct s_hardware *hardware) { - /* Use specific syslinux call if needed */ - if (issyslinux()) - return runsyslinuxcmd(hardware->reboot_label); - else - return csprint(hardware->reboot_label, 0x07); + (void) hardware; + /* Let's call the internal rebooting call */ + syslinux_reboot(1); } /* Default hdt mode */ diff --git a/com32/hdt/hdt-common.c b/com32/hdt/hdt-common.c index 114e6ee..5a187f2 100644 --- a/com32/hdt/hdt-common.c +++ b/com32/hdt/hdt-common.c @@ -85,10 +85,6 @@ void detect_parameters(const int argc, const char *argv[], strlcpy(hardware->memtest_label, argv[i] + 8, sizeof(hardware->memtest_label)); convert_isolinux_filename(hardware->memtest_label, hardware); - } else if (!strncmp(argv[i], "reboot=", 7)) { - strlcpy(hardware->reboot_label, argv[i] + 7, - sizeof(hardware->reboot_label)); - convert_isolinux_filename(hardware->reboot_label, hardware); } else if (!strncmp(argv[i], "vesa", 4)) { vesamode = true; max_console_lines = MAX_CLI_LINES; @@ -191,14 +187,12 @@ void init_hardware(struct s_hardware *hardware) memset(hardware->modules_alias_path, 0, sizeof hardware->modules_alias_path); memset(hardware->memtest_label, 0, sizeof hardware->memtest_label); - memset(hardware->reboot_label, 0, sizeof hardware->reboot_label); memset(hardware->auto_label, 0, sizeof hardware->auto_label); memset(hardware->vesa_background, 0, sizeof hardware->vesa_background); strcat(hardware->pciids_path, "pci.ids"); strcat(hardware->modules_pcimap_path, "modules.pcimap"); strcat(hardware->modules_alias_path, "modules.alias"); strcat(hardware->memtest_label, "memtest"); - strcat(hardware->reboot_label, "reboot.c32"); strlcpy(hardware->vesa_background, CLI_DEFAULT_BACKGROUND, sizeof(hardware->vesa_background)); } diff --git a/com32/hdt/hdt-common.h b/com32/hdt/hdt-common.h index 0a0c8c4..fd9d785 100644 --- a/com32/hdt/hdt-common.h +++ b/com32/hdt/hdt-common.h @@ -60,6 +60,9 @@ #define HDT_RETURN_TO_CLI 100 #define MAX_VESA_MODES 255 +/* This value is used for rebooting from the menu mode */ +#define HDT_REBOOT "hdt_reboot" + /* The maximum number of commands we can process */ #define MAX_NB_AUTO_COMMANDS 255 /* The maximum size of a command */ @@ -196,7 +199,6 @@ struct s_hardware { char modules_alias_path[255]; char pciids_path[255]; char memtest_label[255]; - char reboot_label[255]; char auto_label[AUTO_COMMAND_SIZE]; char vesa_background[255]; }; diff --git a/com32/hdt/hdt-menu.c b/com32/hdt/hdt-menu.c index 4629ee5..219f698 100644 --- a/com32/hdt/hdt-menu.c +++ b/com32/hdt/hdt-menu.c @@ -28,6 +28,7 @@ #include #include +#include #include "hdt-menu.h" int start_menu_mode(struct s_hardware *hardware, char *version_string) @@ -64,6 +65,10 @@ int start_menu_mode(struct s_hardware *hardware, char *version_string) (curr->data, HDT_SWITCH_TO_CLI, sizeof(HDT_SWITCH_TO_CLI))) { return HDT_RETURN_TO_CLI; } + if (!strncmp + (curr->data, HDT_REBOOT, sizeof(HDT_REBOOT))) { + syslinux_reboot(1); + } strcpy(cmd, curr->data); /* Use specific syslinux call if needed */ @@ -284,7 +289,7 @@ void compute_main_menu(struct s_hdt_menu *hdt_menu, struct s_hardware *hardware) HDT_SWITCH_TO_CLI, 0); add_item("bout", "About Menu", OPT_SUBMENU, NULL, hdt_menu->about_menu.menu); - add_item("eboot", "Reboot", OPT_RUN, hardware->reboot_label, 0); + add_item("eboot", "Reboot", OPT_RUN, HDT_REBOOT, 0); add_item("Eit", "Exit", OPT_EXITMENU, NULL, 0); hdt_menu->main_menu.items_count++; -- 2.7.4