--- /usr/src/distrib/utils/sysinst/arch/macppc/md.c-oo Sun Jan 14 20:22:26 2001 +++ md.c Sat Jun 23 09:53:02 2001 @@ -138,11 +138,25 @@ { 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 +177,8 @@ char isize[20]; int maxpart = getmaxpartitions(); + struct disklabel disklabel; + /* * Initialize global variables that track space used on this disk. * Standard 4.3BSD 8-partition labels always cover whole disk. @@ -318,10 +334,26 @@ remain = fsdsize - partstart; part++; } + case 4: /* Use Existing */ + if (get_real_geom(diskdev,&disklabel ) == 0) { + msg_display(MSG_abort); /* XXX more informative */ + } + for (i = 0; i < maxpart; i++) { +#define p disklabel.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; } - /* * OK, we have a partition table. Give the user the chance to