diff options
author | avg <avg@FreeBSD.org> | 2012-04-16 10:43:06 +0000 |
---|---|---|
committer | avg <avg@FreeBSD.org> | 2012-04-16 10:43:06 +0000 |
commit | 5f4b7b5e725b0681f4bb4739224ac94c8e1f3913 (patch) | |
tree | b3a0e41ffadfd3f455ad9313f8b26dd5c496a4fd /sys/boot/i386/zfsboot | |
parent | 70742a1dd8f3e2645be8e9503f7ab894b29bc816 (diff) | |
download | FreeBSD-src-5f4b7b5e725b0681f4bb4739224ac94c8e1f3913.zip FreeBSD-src-5f4b7b5e725b0681f4bb4739224ac94c8e1f3913.tar.gz |
zfsboot: honor -q if it's present in boot.config
Before r228267 the option was honored but the original content of
boot.config was not preserved. I tried to fix that but missed the idea.
Now the proper way of doing things is taken from i386/boo2.
Also, a comment is added to explain this a little bit unobvious
behavior.
Inspired by: jhb
MFC after: 5 days
Diffstat (limited to 'sys/boot/i386/zfsboot')
-rw-r--r-- | sys/boot/i386/zfsboot/zfsboot.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/boot/i386/zfsboot/zfsboot.c b/sys/boot/i386/zfsboot/zfsboot.c index afefc4e..a6be3ee 100644 --- a/sys/boot/i386/zfsboot/zfsboot.c +++ b/sys/boot/i386/zfsboot/zfsboot.c @@ -93,6 +93,7 @@ static const char *const dev_nm[NDEV] = {"ad", "da", "fd"}; static const unsigned char dev_maj[NDEV] = {30, 4, 2}; static char cmd[512]; +static char cmddup[512]; static char kname[1024]; static int comspeed = SIOSPD; static struct bootinfo bootinfo; @@ -541,10 +542,15 @@ main(void) } if (*cmd) { - if (!OPT_CHECK(RBX_QUIET)) - printf("%s: %s", PATH_CONFIG, cmd); + /* + * Note that parse() is destructive to cmd[] and we also want + * to honor RBX_QUIET option that could be present in cmd[]. + */ + memcpy(cmddup, cmd, sizeof(cmd)); if (parse()) autoboot = 0; + if (!OPT_CHECK(RBX_QUIET)) + printf("%s: %s", PATH_CONFIG, cmddup); /* Do not process this command twice */ *cmd = 0; } |