Author: kevans Date: Sat Jun 9 15:10:39 2018 New Revision: 334882 URL: https://svnweb.freebsd.org/changeset/base/334882
Log: stand: Consolidate checking for boot flags driven by environment vars e.g. boot_mute, boot_single, boot_verbose, and friends; we checked for these in multiple places, consolidate into common/ and allow a setting of "NO" for any of these to turn them off. This allows systems with multiple loader.conf(5) or loader.conf(5) overlay systems to easily turn off variables in later processed files by setting it to NO. Reported by: Nick Wolff @ iXsystems Reviewed by: imp Modified: head/stand/common/boot.c head/stand/common/bootstrap.h head/stand/common/metadata.c head/stand/efi/loader/bootinfo.c head/stand/i386/libi386/bootinfo.c head/stand/userboot/userboot/bootinfo.c Modified: head/stand/common/boot.c ============================================================================== --- head/stand/common/boot.c Sat Jun 9 14:50:38 2018 (r334881) +++ head/stand/common/boot.c Sat Jun 9 15:10:39 2018 (r334882) @@ -32,6 +32,8 @@ __FBSDID("$FreeBSD$"); */ #include <stand.h> +#include <sys/reboot.h> +#include <sys/boot.h> #include <string.h> #include "bootstrap.h" @@ -156,6 +158,20 @@ autoboot_maybe() cp = getenv("autoboot_delay"); if ((autoboot_tried == 0) && ((cp == NULL) || strcasecmp(cp, "NO"))) autoboot(-1, NULL); /* try to boot automatically */ +} + +int +bootenv_flags() +{ + int i, howto; + char *val; + + for (howto = 0, i = 0; howto_names[i].ev != NULL; i++) { + val = getenv(howto_names[i].ev); + if (val != NULL && strcasecmp(val, "no") != 0) + howto |= howto_names[i].mask; + } + return (howto); } static int Modified: head/stand/common/bootstrap.h ============================================================================== --- head/stand/common/bootstrap.h Sat Jun 9 14:50:38 2018 (r334881) +++ head/stand/common/bootstrap.h Sat Jun 9 15:10:39 2018 (r334882) @@ -63,6 +63,7 @@ int parse(int *argc, char ***argv, const char *str); /* boot.c */ void autoboot_maybe(void); int getrootmount(char *rootdev); +int bootenv_flags(void); /* misc.c */ char *unargv(int argc, char *argv[]); Modified: head/stand/common/metadata.c ============================================================================== --- head/stand/common/metadata.c Sat Jun 9 14:50:38 2018 (r334881) +++ head/stand/common/metadata.c Sat Jun 9 15:10:39 2018 (r334882) @@ -31,9 +31,7 @@ __FBSDID("$FreeBSD$"); #include <stand.h> #include <sys/param.h> -#include <sys/reboot.h> #include <sys/linker.h> -#include <sys/boot.h> #if defined(LOADER_FDT_SUPPORT) #include <fdt_platform.h> #endif @@ -100,7 +98,6 @@ md_getboothowto(char *kargs) char *cp; int howto; int active; - int i; /* Parse kargs */ howto = 0; @@ -153,10 +150,7 @@ md_getboothowto(char *kargs) } } - /* get equivalents from the environment */ - for (i = 0; howto_names[i].ev != NULL; i++) - if (getenv(howto_names[i].ev) != NULL) - howto |= howto_names[i].mask; + howto |= bootenv_flags(); #if defined(__sparc64__) if (md_bootserial() != -1) howto |= RB_SERIAL; Modified: head/stand/efi/loader/bootinfo.c ============================================================================== --- head/stand/efi/loader/bootinfo.c Sat Jun 9 14:50:38 2018 (r334881) +++ head/stand/efi/loader/bootinfo.c Sat Jun 9 15:10:39 2018 (r334882) @@ -32,9 +32,8 @@ __FBSDID("$FreeBSD$"); #include <stand.h> #include <string.h> #include <sys/param.h> -#include <sys/reboot.h> #include <sys/linker.h> -#include <sys/boot.h> +#include <sys/reboot.h> #include <machine/cpufunc.h> #include <machine/elf.h> #include <machine/metadata.h> @@ -72,15 +71,9 @@ bi_getboothowto(char *kargs) const char *sw; char *opts; char *console; - int howto, i; + int howto; - howto = 0; - - /* Get the boot options from the environment first. */ - for (i = 0; howto_names[i].ev != NULL; i++) { - if (getenv(howto_names[i].ev) != NULL) - howto |= howto_names[i].mask; - } + howto = bootenv_flags(); console = getenv("console"); if (console != NULL) { Modified: head/stand/i386/libi386/bootinfo.c ============================================================================== --- head/stand/i386/libi386/bootinfo.c Sat Jun 9 14:50:38 2018 (r334881) +++ head/stand/i386/libi386/bootinfo.c Sat Jun 9 15:10:39 2018 (r334882) @@ -43,7 +43,6 @@ bi_getboothowto(char *kargs) char *curpos, *next, *string; int howto; int active; - int i; int vidconsole; /* Parse kargs */ @@ -96,10 +95,7 @@ bi_getboothowto(char *kargs) cp++; } } - /* get equivalents from the environment */ - for (i = 0; howto_names[i].ev != NULL; i++) - if (getenv(howto_names[i].ev) != NULL) - howto |= howto_names[i].mask; + howto |= bootenv_flags(); /* Enable selected consoles */ string = next = strdup(getenv("console")); Modified: head/stand/userboot/userboot/bootinfo.c ============================================================================== --- head/stand/userboot/userboot/bootinfo.c Sat Jun 9 14:50:38 2018 (r334881) +++ head/stand/userboot/userboot/bootinfo.c Sat Jun 9 15:10:39 2018 (r334882) @@ -43,7 +43,6 @@ bi_getboothowto(char *kargs) char *curpos, *next, *string; int howto; int active; - int i; int vidconsole; /* Parse kargs */ @@ -96,10 +95,8 @@ bi_getboothowto(char *kargs) cp++; } } - /* get equivalents from the environment */ - for (i = 0; howto_names[i].ev != NULL; i++) - if (getenv(howto_names[i].ev) != NULL) - howto |= howto_names[i].mask; + + howto |= bootenv_flags(); /* Enable selected consoles */ string = next = strdup(getenv("console")); _______________________________________________ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"