Date: Sat, 9 Jun 2018 15:10:39 +0000 (UTC) From: Kyle Evans <kevans@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r334882 - in head/stand: common efi/loader i386/libi386 userboot/userboot Message-ID: <201806091510.w59FAdOT036763@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
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"));
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201806091510.w59FAdOT036763>