ChangeLog, base_device.c, fsck.c:
  base_device.c (base_device): Add support for DAC960 device names.
  fsck.c (device_already_active): Handle the case where base_device
  	doesn't know how to interpret the device name, instead of core
  	dumping.

diff --git a/misc/ChangeLog b/misc/ChangeLog
index d6f5327..f13d499 100644
--- a/misc/ChangeLog
+++ b/misc/ChangeLog
@@ -1,3 +1,12 @@
+2000-12-28    <tytso@snap.thunk.org>
+
+	* base_device.c (base_device): Add support for DAC960 device
+		names.
+
+	* fsck.c (device_already_active): Handle the case where
+		base_device doesn't know how to interpret the device name,
+		instead of core dumping.
+
 2000-12-09    <tytso@snap.thunk.org>
 
 	* mke2fs.c (main, parse_journal_opts): Add support for creating V1
diff --git a/misc/base_device.c b/misc/base_device.c
index 03008cb..f58f2e8 100644
--- a/misc/base_device.c
+++ b/misc/base_device.c
@@ -68,6 +68,16 @@
 		return str;
 	}
 
+	/* Handle DAC 960 devices */
+	if (strncmp(cp, "rd/", 3) == 0) {
+		cp += 3;
+		if (cp[0] != 'c' || cp[2] != 'd' ||
+		    !isdigit(cp[1]) || !isdigit(cp[3]))
+			goto errout;
+		*(cp+4) = 0;
+		return str;
+	}
+
 	/* Now let's handle /dev/hd* and /dev/sd* devices.... */
 	if ((cp[0] == 'h' || cp[0] == 's') && (cp[1] == 'd')) {
 		cp += 2;
diff --git a/misc/fsck.c b/misc/fsck.c
index 8fc4610..6ff0ec2 100644
--- a/misc/fsck.c
+++ b/misc/fsck.c
@@ -698,6 +698,8 @@
 #endif
 
 	base = base_device(device);
+	if (!base)
+		return 0;
 	for (inst = instance_list; inst; inst = inst->next) {
 		if (!strcmp(base, inst->base_device)) {
 			free(base);