summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpaul <paul@FreeBSD.org>1994-11-19 18:23:08 +0000
committerpaul <paul@FreeBSD.org>1994-11-19 18:23:08 +0000
commit433a9ec8642588439dfb6102f65b8dcf70e6790f (patch)
tree204d0141fe11a33d665b2fc2fe068e98472960c3
parentb0e421ddac39a73446a4aa3356af0392ab1ae0e6 (diff)
downloadFreeBSD-src-433a9ec8642588439dfb6102f65b8dcf70e6790f.zip
FreeBSD-src-433a9ec8642588439dfb6102f65b8dcf70e6790f.tar.gz
Changed the MBR partition type field from being a string to
a decimal value. I don't have the time to deal with users typing in partition names such as "FreeBSD" at the moment so just allow the numerical id to be specified for the moment.
-rw-r--r--sbin/sysinstall/editor.c2
-rw-r--r--sbin/sysinstall/mbr.c24
-rw-r--r--sbin/sysinstall/mbr.h8
3 files changed, 21 insertions, 13 deletions
diff --git a/sbin/sysinstall/editor.c b/sbin/sysinstall/editor.c
index cdf70ee..f4933bd 100644
--- a/sbin/sysinstall/editor.c
+++ b/sbin/sysinstall/editor.c
@@ -103,7 +103,7 @@ toggle_press(WINDOW *window, struct field field)
field.spare++;
if (!field.misc[field.spare])
field.spare = 0;
- sprintf(field.field, "%", field.misc[field.spare]);
+ sprintf(field.field, "%s", field.misc[field.spare]);
return (key);
break;
case '\n':
diff --git a/sbin/sysinstall/mbr.c b/sbin/sysinstall/mbr.c
index e7189b7..8202087 100644
--- a/sbin/sysinstall/mbr.c
+++ b/sbin/sysinstall/mbr.c
@@ -358,7 +358,7 @@ edit_mbr(int disk)
ok = 0;
while (!ok && (key != ESC)) {
for (i=0; i < NDOSPART; i++) {
- sprintf(mbr_field[(i*12)+1].field, "%s", part_type(mbr->dospart[i].dp_typ));
+ sprintf(mbr_field[(i*12)+1].field, "%d", mbr->dospart[i].dp_typ);
sprintf(mbr_field[(i*12)+2].field, "%ld", mbr->dospart[i].dp_start);
sprintf(mbr_field[(i*12)+3].field, "%d", mbr->dospart[i].dp_scyl);
sprintf(mbr_field[(i*12)+4].field, "%d", mbr->dospart[i].dp_shd);
@@ -383,6 +383,7 @@ edit_mbr(int disk)
mbr_field[cur_field].field);
/* Propagate changes to MBR */
for (i=0; i < NDOSPART; i++) {
+ mbr->dospart[i].dp_typ = atoi(mbr_field[(i*12)+1].field);
mbr->dospart[i].dp_start = atoi(mbr_field[(i*12)+2].field);
mbr->dospart[i].dp_scyl = atoi(mbr_field[(i*12)+3].field);
mbr->dospart[i].dp_shd = atoi(mbr_field[(i*12)+4].field);
@@ -417,6 +418,20 @@ edit_mbr(int disk)
cur_field = next;
}
+ /* Clear active flags */
+ for (i=0; i < NDOSPART; i++)
+ mbr->dospart[i].dp_flag = 0;
+
+ /* Find first FreeBSD partition and make it active */
+
+ disk_list[disk].inst_part = -1;
+ for (i=0; i < NDOSPART; i++)
+ if (mbr->dospart[i].dp_typ == MBR_PTYPE_FreeBSD) {
+ disk_list[disk].inst_part = i;
+ mbr->dospart[i].dp_flag = ACTIVE;
+ break;
+ }
+
sprintf(scratch, "\nWriting a new master boot record can erase the current disk contents.\n\n Are you sure you want to write the new MBR?\n");
dialog_clear_norefresh();
if (!dialog_yesno("Write new MBR?", scratch, -1, -1)) {
@@ -428,13 +443,6 @@ edit_mbr(int disk)
}
}
- /* Find first FreeBSD partition, as kernel would upon boot */
- disk_list[disk].inst_part = -1;
- for (i=0; i < NDOSPART; i++)
- if (mbr->dospart[i].dp_typ == MBR_PTYPE_FreeBSD) {
- disk_list[disk].inst_part = i;
- break;
- }
if (disk_list[disk].inst_part == -1) {
sprintf(errmsg, "\nThere is no space allocated to FreeBSD on %s\n",
diff --git a/sbin/sysinstall/mbr.h b/sbin/sysinstall/mbr.h
index 8ae2380..81e9437 100644
--- a/sbin/sysinstall/mbr.h
+++ b/sbin/sysinstall/mbr.h
@@ -1,6 +1,6 @@
struct field mbr_field[] = {
{ 0, 25, 31, -1, -1, -1, -1, -1, -1, "Master Boot Record (MBR) editor", F_TITLE, 0, 0},
- { 4, 8, 30, 30, 2, 49, 2, 50, 2, "Uknown", F_EDIT, 0, 0},
+ { 4, 8, 5, 5, 2, 49, 2, 50, 2, "000", F_EDIT, 0, 0},
{ 5, 31, 7, 10, 3, 1, 3, 1, 3, "0", F_EDIT, 0, 0},
{ 6, 5, 5, 10, 4, 2, 6, 2, 4, "0", F_EDIT, 0, 0},
{ 6, 14, 5, 10, 5, 2, 6, 3, 5, "0", F_EDIT, 0, 0},
@@ -12,7 +12,7 @@ struct field mbr_field[] = {
{ 9, 9, 6, 10, 11, 7, 12, 9, 11, "0", F_EDIT, 0, 0},
{ 9, 27, 5, 10, 12, 7, 12, 10, 12, "0", F_EDIT, 0, 0},
{10, 10, 10, 10, 13, 10, 25, 11, 13, "Not Active", F_EDIT, 0, 0},
- { 4, 47, 30, 30, 14, 50, 14, 12, 14, "Uknown", F_EDIT, 0, 0},
+ { 4, 47, 5, 5, 14, 50, 14, 12, 14, "000", F_EDIT, 0, 0},
{ 5, 70, 7, 10, 15, 13, 15, 13, 15, "0", F_EDIT, 0, 0},
{ 6, 44, 5, 10, 16, 14, 18, 14, 16, "0", F_EDIT, 0, 0},
{ 6, 54, 5, 10, 17, 14, 18, 15, 17, "0", F_EDIT, 0, 0},
@@ -24,7 +24,7 @@ struct field mbr_field[] = {
{ 9, 48, 6, 10, 23, 19, 24, 21, 23, "0", F_EDIT, 0, 0},
{ 9, 66, 5, 10, 24, 20, 24, 22, 24, "0", F_EDIT, 0, 0},
{10, 49, 10, 10, 25, 22, 37, 23, 25, "Not Active", F_EDIT, 0, 0},
- {14, 8, 30, 30, 26, 12, 26, 24, 26, "Uknown", F_EDIT, 0, 0},
+ {14, 8, 5, 5, 26, 12, 26, 24, 26, "000", F_EDIT, 0, 0},
{15, 31, 7, 10, 27, 25, 27, 25, 27, "0", F_EDIT, 0, 0},
{16, 5, 5, 10, 28, 26, 30, 26, 28, "0", F_EDIT, 0, 0},
{16, 14, 5, 10, 29, 26, 30, 27, 29, "0", F_EDIT, 0, 0},
@@ -36,7 +36,7 @@ struct field mbr_field[] = {
{19, 9, 6, 10, 35, 31, 36, 33, 35, "0", F_EDIT, 0, 0},
{19, 27, 5, 10, 36, 31, 36, 34, 36, "0", F_EDIT, 0, 0},
{20, 10, 10, 10, 37, 34, 49, 35, 37, "Not Active", F_EDIT, 0, 0},
- {14, 47, 30, 30, 38, 24, 38, 36, 38, "Uknown", F_EDIT, 0, 0},
+ {14, 47, 5, 5, 38, 24, 38, 36, 38, "000", F_EDIT, 0, 0},
{15, 70, 7, 10, 39, 37, 39, 37, 39, "0", F_EDIT, 0, 0},
{16, 44, 5, 10, 40, 38, 42, 38, 40, "0", F_EDIT, 0, 0},
{16, 54, 5, 10, 41, 38, 42, 39, 41, "0", F_EDIT, 0, 0},
OpenPOWER on IntegriCloud