From f0b40f9bcf9630de643691de835d18e4e22c2093 Mon Sep 17 00:00:00 2001 From: Erwan Velu Date: Fri, 20 Nov 2009 22:00:50 +0100 Subject: [PATCH] hdt: Adding background image for the CLI Impact: Visual The cli now features a background image when started in vesa mode --- com32/hdt/Makefile | 5 ++++- com32/hdt/art/backgnd.png | Bin 0 -> 10155 bytes com32/hdt/hdt-common.c | 20 ++++++++++++++++++-- com32/hdt/hdt-common.h | 7 +++++++ com32/hdt/hdt.c | 20 ++++++++------------ 5 files changed, 37 insertions(+), 15 deletions(-) create mode 100644 com32/hdt/art/backgnd.png diff --git a/com32/hdt/Makefile b/com32/hdt/Makefile index abe21f5..4851980 100644 --- a/com32/hdt/Makefile +++ b/com32/hdt/Makefile @@ -37,7 +37,8 @@ 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 +REBOOT_COM32 ?= $(com32)/modules/reboot.c32 +ART_DIR ?= art/ all: $(MODULES) $(TESTFILES) @@ -56,6 +57,7 @@ hdt.img: hdt.c32 $(FLOPPY_DIR)/hdt.cfg $(FLOPPY_DIR)/mtools.conf $(topdir)/mtool 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)/hdt.cfg a:syslinux.cfg + MTOOLSRC=$(PWD)/$(FLOPPY_DIR)/mtools.conf $(MCOPY) $(ART_DIR)/* a: hdt.img.gz: hdt.img rm -rf hdt.img.gz @@ -69,6 +71,7 @@ hdt.iso: hdt.c32 $(topdir)/core/isolinux.bin $(FLOPPY_DIR)/hdt.cfg cp $(FLOPPY_DIR)/hdt.cfg $(ISO_DIR)/$(ISOLINUX_DIR)/isolinux.cfg cp hdt.c32 $(ISO_DIR)/$(ISOLINUX_DIR) cp $(REBOOT_COM32) $(ISO_DIR)/$(ISOLINUX_DIR) + cp -av $(ART_DIR)/* $(ISO_DIR)/$(ISOLINUX_DIR) -[ ! -f $(GZ_PCI_IDS_FILE) ] && cp /usr/share/hwdata/pci.ids $(PCI_IDS_FILE) && $(GZIP) $(PCI_IDS_FILE) -[ ! -f $(GZ_PCI_IDS_FILE) ] && cp /usr/share/pci.ids $(PCI_IDS_FILE) && $(GZIP) $(PCI_IDS_FILE) -[ -f $(MODULES_ALIAS_FILE) ] && cp $(MODULES_ALIAS_FILE) $(ISO_DIR)/$(ISOLINUX_DIR)\ diff --git a/com32/hdt/art/backgnd.png b/com32/hdt/art/backgnd.png new file mode 100644 index 0000000000000000000000000000000000000000..a51efeb0bab0c999337cf952fb5cf3d84d4b3fe6 GIT binary patch literal 10155 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 literal 0 HcmV?d00001 diff --git a/com32/hdt/hdt-common.c b/com32/hdt/hdt-common.c index cdcd695..01ef8b1 100644 --- a/com32/hdt/hdt-common.c +++ b/com32/hdt/hdt-common.c @@ -37,12 +37,12 @@ #include /* ISOlinux requires a 8.3 format */ -void convert_isolinux_filename(char *filename, struct s_hardware *hardware) { +void *convert_isolinux_filename(char *filename, struct s_hardware *hardware) { /* Exit if we are not running ISOLINUX */ if (hardware->sv->filesystem != SYSLINUX_FS_ISOLINUX) return; /* Searching the dot */ char *dot=strchr(filename,'.'); - /* Exiting if not dot exists in that string */ + /* Exiting if no dot exists in that string */ if (dot==NULL) return; /* Exiting if the extension is 3 char or less */ if (strlen(dot)<=4) return; @@ -640,3 +640,19 @@ char *del_multi_spaces(char *p) { void reset_more_printf() { display_line_nb=0; } + +int draw_background(const char *what) +{ + if (!what) + return vesacon_default_background(); + else + return vesacon_load_background(what); +} + +void init_console() { + if (vesamode) { + openconsole(&dev_rawcon_r, &dev_vesaserial_w); + draw_background(CLI_BACKGROUND); + } + else console_ansi_raw(); +} diff --git a/com32/hdt/hdt-common.h b/com32/hdt/hdt-common.h index cd1dc3c..b231ad7 100644 --- a/com32/hdt/hdt-common.h +++ b/com32/hdt/hdt-common.h @@ -30,6 +30,9 @@ #define DEFINE_HDT_COMMON_H #include #include +#include +#include +#include #include "sys/pci.h" #include @@ -66,6 +69,9 @@ /* The char that surround the list of commands */ #define AUTO_DELIMITER "'" +/* Graphic to load in background when using the vesa mode */ +#define CLI_BACKGROUND "backgnd.png" + /* Defines if the cli is quiet*/ bool quiet; @@ -206,4 +212,5 @@ void detect_syslinux(struct s_hardware *hardware); void detect_parameters(const int argc, const char *argv[], struct s_hardware *hardware); int detect_vesa(struct s_hardware *hardware); +void init_console(); #endif diff --git a/com32/hdt/hdt.c b/com32/hdt/hdt.c index 6daf3ae..73cd890 100644 --- a/com32/hdt/hdt.c +++ b/com32/hdt/hdt.c @@ -33,9 +33,6 @@ */ #include -#include -#include -#include #include "hdt.h" #include "hdt-cli.h" #include "hdt-menu.h" @@ -56,23 +53,22 @@ int main(const int argc, const char *argv[]) snprintf(version_string, sizeof version_string, "%s %s (%s)", PRODUCT_NAME,VERSION, CODENAME); - /* Detecting parameters */ - detect_parameters(argc, argv, &hardware); - - /* Opening the Syslinux console */ - if (vesamode) openconsole(&dev_rawcon_r, &dev_vesaserial_w); - else console_ansi_raw(); - /* Cleaning structures */ init_hardware(&hardware); /* Detecting Syslinux version */ detect_syslinux(&hardware); - + + /* Detecting parameters */ + detect_parameters(argc, argv, &hardware); + + /* Opening the Syslinux console */ + init_console(); + /* Clear the screen and reset position of the cursor */ clear_screen(); printf("\033[1;1H"); - + printf("%s\n", version_string); if ((arg = find_argument(argv + 1, "nomenu")) || (find_argument(argv+1,"auto"))) -- 2.7.4