From e065c9fbda7a963211018afaf8f43bc2832e99e8 Mon Sep 17 00:00:00 2001 From: simonb Date: Wed, 8 Dec 1999 14:23:34 +0000 Subject: [PATCH] Store only the kernel name itself in the bootinfo BOOTPATH record, and not the full boot device specification. With this change, /etc/rc doesn't spew garbage when kvm_mkdb can't find a kernel called "3/rz0/netbsd" or some such... --- sys/arch/pmax/stand/common/boot.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/sys/arch/pmax/stand/common/boot.c b/sys/arch/pmax/stand/common/boot.c index 75450625c0e2..a05db3ddb3c3 100644 --- a/sys/arch/pmax/stand/common/boot.c +++ b/sys/arch/pmax/stand/common/boot.c @@ -1,4 +1,4 @@ -/* $NetBSD: boot.c,v 1.11 1999/11/27 07:00:35 simonb Exp $ */ +/* $NetBSD: boot.c,v 1.12 1999/12/08 14:23:34 simonb Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. @@ -106,7 +106,7 @@ char *kernelnames[] = { }; -static int devonly __P((char *)); +static char *devname __P((char *)); int main __P((int, char **)); /* @@ -123,7 +123,7 @@ main(argc, argv) int argc; char **argv; { - char *name, **namep, *dev; + char *name, **namep, *dev, *kernel; char bootname[PATH_MAX], bootpath[PATH_MAX]; int entry, win; u_long marks[MARK_MAX]; @@ -148,9 +148,9 @@ main(argc, argv) name = argv[0]; printf("Boot: %s\n", name); - /* NOTE: devonly() can modify name[]. */ + /* NOTE: devname() can modify name[]. */ strcpy(bootname, argv[0]); - if (devonly(bootname)) { + if ((kernel = devname(bootname)) == NULL) { dev = bootname; name = NULL; } @@ -162,19 +162,20 @@ main(argc, argv) win = 0; for (namep = kernelnames, win = 0; *namep != NULL && !win; namep++) { - name = *namep; + kernel = *namep; strcpy(bootpath, dev); - strcat(bootpath, name); + strcat(bootpath, kernel); printf("Loading: %s\n", bootpath); win = (loadfile(bootpath, marks, LOAD_ALL) != -1); - if (win) + if (win) { name = bootpath; + } } } if (!win) goto fail; - strncpy(bi_bpath.bootpath, name, BTINFO_BOOTPATH_LEN); + strncpy(bi_bpath.bootpath, kernel, BTINFO_BOOTPATH_LEN); bi_add(&bi_bpath, BTINFO_BOOTPATH, sizeof(bi_bpath)); entry = marks[MARK_ENTRY]; @@ -202,13 +203,13 @@ fail: * Check whether or not fname is a device name only or a full * bootpath including the kernel name. This code to do this * is copied from loadfile() in the first stage bootblocks. + * Returns the kernel name, or NULL if no kernel name specified. * * NOTE: fname will be modified if it's of the form N/rzY * without a trailing slash. */ -static -int -devonly(fname) +static char * +devname(fname) char *fname; { char c; @@ -232,5 +233,5 @@ devonly(fname) } break; } - return (*fname == '\0'); + return (*fname == '\0' ? NULL : fname); }