Page MenuHomeFreeBSD

D43828.1793631839.diff
No OneTemporary

Authored By
Unknown
Size
1 KB
Referenced Files
None
Subscribers
None

D43828.1793631839.diff

diff --git a/sbin/reboot/reboot.c b/sbin/reboot/reboot.c
--- a/sbin/reboot/reboot.c
+++ b/sbin/reboot/reboot.c
@@ -88,7 +88,7 @@
}
static void
-write_nextboot(const char *fn, const char *kernel, const char *env, bool force)
+write_nextboot(const char *fn, const char *env, bool force)
{
FILE *fp;
struct statfs sfs;
@@ -112,12 +112,11 @@
fp = fopen(fn, "w");
if (fp == NULL)
- E("Can't create %s to boot %s", fn, kernel);
+ E("Can't create %s", fn);
- if (fprintf(fp,"%s%skernel=\"%s\"\n",
+ if (fprintf(fp,"%s%s",
supported ? "nextboot_enable=\"YES\"\n" : "",
- env ? env : "",
- kernel) < 0) {
+ env ? env : "") < 0) {
int e;
e = errno;
@@ -182,8 +181,8 @@
int ch, howto, i, sverrno;
bool Dflag, fflag, lflag, Nflag, nflag, qflag;
uint64_t pageins;
- const char *user, *kernel = NULL;
- char *env = NULL, *oldenv, *v;
+ const char *user;
+ char *kernel = NULL, *env = NULL, *oldenv, *v;
if (strstr(getprogname(), "halt") != NULL) {
@@ -291,9 +290,16 @@
errx(1, "%s is not a file", k);
free(k);
}
- write_nextboot(PATH_NEXTBOOT, env, kernel, fflag);
+ oldenv = env;
+ v = quoted(kernel);
+ asprintf(&env, "%s%s=%s\n", oldenv ? oldenv : "", "kernel", v);
+ if (env == NULL)
+ errx(1, "No memory to build env array");
+ free(v);
+ free(oldenv);
}
+ write_nextboot(PATH_NEXTBOOT, env, fflag);
/* Log the reboot. */
if (!lflag) {
if ((user = getlogin()) == NULL)

File Metadata

Mime Type
text/plain
Expires
Mon, Nov 2, 3:03 PM (11 h, 15 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
41332857
Default Alt Text
D43828.1793631839.diff (1 KB)

Event Timeline