diff options
author | 2015-11-18 15:31:15 +0000 | |
---|---|---|
committer | 2015-11-18 15:31:15 +0000 | |
commit | 41e4af69e7b646ca12a8a33a5a22c777738633bc (patch) | |
tree | e71ecb0d9c5fa343aab3bfd39767adb64fefebd7 | |
parent | g_flag does not need to be a global. Move it inside main(). (diff) | |
download | wireguard-openbsd-41e4af69e7b646ca12a8a33a5a22c777738633bc.tar.xz wireguard-openbsd-41e4af69e7b646ca12a8a33a5a22c777738633bc.zip |
Parse the original on-disk MBR into a local variable. Use the
partition table in this variable when doing an 'u'pdate of the MBR.
Remove now superfluous MBR_pcopy() and its re-read of the on-disk MBR.
-rw-r--r-- | sbin/fdisk/fdisk.c | 9 | ||||
-rw-r--r-- | sbin/fdisk/mbr.c | 24 | ||||
-rw-r--r-- | sbin/fdisk/mbr.h | 3 |
3 files changed, 7 insertions, 29 deletions
diff --git a/sbin/fdisk/fdisk.c b/sbin/fdisk/fdisk.c index df4ee4e8a93..9fa9da45779 100644 --- a/sbin/fdisk/fdisk.c +++ b/sbin/fdisk/fdisk.c @@ -1,4 +1,4 @@ -/* $OpenBSD: fdisk.c,v 1.92 2015/11/18 15:10:43 krw Exp $ */ +/* $OpenBSD: fdisk.c,v 1.93 2015/11/18 15:31:15 krw Exp $ */ /* * Copyright (c) 1997 Tobias Weingartner @@ -80,6 +80,7 @@ main(int argc, char *argv[]) char *mbrfile = NULL; #endif struct dos_mbr dos_mbr; + struct mbr mbr; while ((ch = getopt(argc, argv, "ieguf:c:h:s:l:b:y")) != -1) { const char *errstr; @@ -162,10 +163,10 @@ main(int argc, char *argv[]) error = MBR_read(0, &dos_mbr); if (error) errx(1, "Can't read sector 0!"); - MBR_parse(&dos_mbr, 0, 0, &initial_mbr); + MBR_parse(&dos_mbr, 0, 0, &mbr); /* Get the GPT if present. */ - if (MBR_protective_mbr(&initial_mbr) == 0) + if (MBR_protective_mbr(&mbr) == 0) GPT_get_gpt(); if (letoh64(gh.gh_sig) != GPTSIGNATURE) { @@ -214,7 +215,7 @@ main(int argc, char *argv[]) "partition table?"; } } else if (u_flag) { - MBR_pcopy(&initial_mbr); + memcpy(initial_mbr.part, mbr.part, sizeof(initial_mbr.part)); query = "Do you wish to write new MBR?"; } if (query && ask_yn(query)) diff --git a/sbin/fdisk/mbr.c b/sbin/fdisk/mbr.c index 8a713ae942e..b3000107658 100644 --- a/sbin/fdisk/mbr.c +++ b/sbin/fdisk/mbr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mbr.c,v 1.60 2015/11/13 02:27:17 krw Exp $ */ +/* $OpenBSD: mbr.c,v 1.61 2015/11/18 15:31:15 krw Exp $ */ /* * Copyright (c) 1997 Tobias Weingartner @@ -253,28 +253,6 @@ MBR_write(off_t where, struct dos_mbr *dos_mbr) } /* - * Parse the MBR partition table into 'mbr', leaving the rest of 'mbr' - * untouched. - */ -void -MBR_pcopy(struct mbr *mbr) -{ - struct dos_partition dos_parts[NDOSPART]; - struct dos_mbr dos_mbr; - int i, error; - - error = MBR_read(0, &dos_mbr); - - if (error == -1) - return; - - memcpy(dos_parts, dos_mbr.dmbr_parts, sizeof(dos_parts)); - - for (i = 0; i < NDOSPART; i++) - PRT_parse(&dos_parts[i], 0, 0, &mbr->part[i]); -} - -/* * If *dos_mbr has a 0xee or 0xef partition, nothing needs to happen. If no * such partition is present but the first or last sector on the disk has a * GPT, zero the GPT to ensure the MBR takes priority and fewer BIOSes get diff --git a/sbin/fdisk/mbr.h b/sbin/fdisk/mbr.h index 7bb8bfb6f02..25c0581797a 100644 --- a/sbin/fdisk/mbr.h +++ b/sbin/fdisk/mbr.h @@ -1,4 +1,4 @@ -/* $OpenBSD: mbr.h,v 1.27 2015/11/13 02:27:17 krw Exp $ */ +/* $OpenBSD: mbr.h,v 1.28 2015/11/18 15:31:15 krw Exp $ */ /* * Copyright (c) 1997 Tobias Weingartner @@ -36,7 +36,6 @@ void MBR_init(struct mbr *); void MBR_init_GPT(struct mbr *); int MBR_read(off_t, struct dos_mbr *); int MBR_write(off_t, struct dos_mbr *); -void MBR_pcopy(struct mbr *); void MBR_zapgpt(struct dos_mbr *, uint64_t); void MBR_init_GPT(struct mbr *); int MBR_protective_mbr(struct mbr *); |