--- /usr/src/distrib/utils/sysinst/arch/macppc/md.c-oo	Sun Jan 14 20:22:26 2001
+++ md.c	Sat Jun 23 07:01:30 2001
@@ -138,11 +138,24 @@
 {
 	const char *bootfile = target_expand("/boot");	/*XXX*/
 
+	if (md_get_info()) {
+	 
+	  printf ("Proceeding for installboot.\n");
+process_menu(MENU_noyes);
+	if (!yesno) { 	msg_display(MSG_abort);
+		process_menu(MENU_ok);
+		return 0;}
 	printf (msg_string(MSG_dobootblks), diskdev);
 	cp_to_target("/usr/mdec/ofwboot", "/boot");
 	sync();
 	run_prog(RUN_DISPLAY, NULL, "/usr/mdec/installboot %s %s /dev/r%sa",
 	    bootfile,  "/usr/mdec/bootxx", diskdev);
+	 }
+	else {
+	  printf (msg_string(MSG_applelabelexists), diskdev);
+	  printf ("Label looks like Apples one. Will not run installboot\n");
+process_menu(MENU_noyes);}
+
 	return 0;
 }
 
@@ -163,6 +176,9 @@
 	char isize[20];
 	int maxpart = getmaxpartitions();
 
+	struct disklabel *disklabel;
+	struct disklabel l;
+
 	/*
 	 * Initialize global variables that track  space used on this disk.
 	 * Standard 4.3BSD 8-partition labels always cover whole disk.
@@ -318,7 +334,31 @@
 			remain = fsdsize - partstart;
 			part++;
 		}
+	case 4: /* Use Existing  */
+
+			/*	  printf("diskdev(%s)\n",diskdev); */
+
+		if (get_real_geom(diskdev,disklabel ) == 0) {
+
+			msg_display(MSG_abort);	/* XXX more informative */
+			/*			return 0; */
+		}
 
+	        l = *disklabel;
+		if (0) {
+		for (i = 0; i < maxpart; i++) {
+#define p l.d_partitions[i]
+			bsdlabel[i].pi_size = p.p_size;
+			bsdlabel[i].pi_offset = p.p_offset;
+			if (i != RAW_PART) {
+				bsdlabel[i].pi_fstype = p.p_fstype;
+				bsdlabel[i].pi_bsize = p.p_fsize * p.p_frag;
+				bsdlabel[i].pi_fsize = p.p_fsize;
+				/* menu to get fsmount[] entry */
+#undef p
+			} else
+				bsdlabel[i].pi_fstype = FS_UNUSED;
+		}}
 		break;
 	}
 
