Module Name:    src
Committed By:   tsutsui
Date:           Mon Apr 21 11:06:55 UTC 2014

Modified Files:
        src/sys/arch/luna68k/stand/boot: devopen.c init_main.c samachdep.h

Log Message:
Fix stupid botches in previous.

Use a proper device unit number if a unit number or non-default device
is specified on the boot command.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/luna68k/stand/boot/devopen.c
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/luna68k/stand/boot/init_main.c
cvs rdiff -u -r1.18 -r1.19 src/sys/arch/luna68k/stand/boot/samachdep.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/luna68k/stand/boot/devopen.c
diff -u src/sys/arch/luna68k/stand/boot/devopen.c:1.7 src/sys/arch/luna68k/stand/boot/devopen.c:1.8
--- src/sys/arch/luna68k/stand/boot/devopen.c:1.7	Wed Apr 16 13:43:02 2014
+++ src/sys/arch/luna68k/stand/boot/devopen.c	Mon Apr 21 11:06:55 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: devopen.c,v 1.7 2014/04/16 13:43:02 tsutsui Exp $	*/
+/*	$NetBSD: devopen.c,v 1.8 2014/04/21 11:06:55 tsutsui Exp $	*/
 
 /*
  * Copyright (c) 1992 OMRON Corporation.
@@ -126,8 +126,9 @@ make_device(const char *str, int *devp, 
 	int dev, unit, part;
 	int i;
 	char devname[MAXDEVNAME + 1];
+	bool haveunit;
 
-	unit = default_unit;
+	unit = 0;
 	part = 0;
 
 	/*
@@ -150,11 +151,14 @@ make_device(const char *str, int *devp, 
 	}
 	dev = dp - devsw;
 	/* get mixed controller and unit number */
+	haveunit = false;
 	for (; *cp != ',' && *cp != ')'; cp++) {
 		if (*cp == '\0')
 			return -1;
-		if (*cp >= '0' && *cp <= '9')
+		if (*cp >= '0' && *cp <= '9') {
 			unit = unit * 10 + *cp - '0';
+			haveunit = true;
+		}
 	}
 	if (unit < 0 || CTLR(unit) >= 2 || TARGET(unit) > 7) {
 #ifdef DEBUG
@@ -162,6 +166,8 @@ make_device(const char *str, int *devp, 
 #endif
 		return (-1);
 	}
+	if (!haveunit && strcmp(devname, default_bootdev) == 0)
+		unit = default_unit;
 	/* get optional partition number */
 	if (*cp == ',')
 		cp++;

Index: src/sys/arch/luna68k/stand/boot/init_main.c
diff -u src/sys/arch/luna68k/stand/boot/init_main.c:1.14 src/sys/arch/luna68k/stand/boot/init_main.c:1.15
--- src/sys/arch/luna68k/stand/boot/init_main.c:1.14	Wed Apr 16 13:43:02 2014
+++ src/sys/arch/luna68k/stand/boot/init_main.c	Mon Apr 21 11:06:55 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: init_main.c,v 1.14 2014/04/16 13:43:02 tsutsui Exp $	*/
+/*	$NetBSD: init_main.c,v 1.15 2014/04/21 11:06:55 tsutsui Exp $	*/
 
 /*
  * Copyright (c) 1992 OMRON Corporation.
@@ -88,6 +88,7 @@ int cpuspeed;	/* for DELAY() macro */
 int hz = 60;
 int machtype;
 char default_file[64];
+const char *default_bootdev;
 int default_unit;
 
 #define	VERS_LOCAL	"Phase-31"
@@ -287,6 +288,7 @@ main(void)
 
 	snprintf(default_file, sizeof(default_file),
 	    "%s(%d,%d)%s", bootdev, unit, part, "netbsd");
+	default_bootdev = bootdev;
 	default_unit = unit;
 
 	howto = reorder_dipsw(dipsw2);

Index: src/sys/arch/luna68k/stand/boot/samachdep.h
diff -u src/sys/arch/luna68k/stand/boot/samachdep.h:1.18 src/sys/arch/luna68k/stand/boot/samachdep.h:1.19
--- src/sys/arch/luna68k/stand/boot/samachdep.h:1.18	Wed Apr 16 13:43:02 2014
+++ src/sys/arch/luna68k/stand/boot/samachdep.h	Mon Apr 21 11:06:55 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: samachdep.h,v 1.18 2014/04/16 13:43:02 tsutsui Exp $	*/
+/*	$NetBSD: samachdep.h,v 1.19 2014/04/21 11:06:55 tsutsui Exp $	*/
 
 /*
  * Copyright (c) 1982, 1990, 1993
@@ -103,6 +103,7 @@ extern int hz;
 extern int nplane;
 extern int machtype;
 extern char default_file[];
+extern const char *default_bootdev;
 extern int default_unit;
 
 /* kbd.c */

Reply via email to