summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkrw <krw@openbsd.org>2015-11-18 15:31:15 +0000
committerkrw <krw@openbsd.org>2015-11-18 15:31:15 +0000
commit41e4af69e7b646ca12a8a33a5a22c777738633bc (patch)
treee71ecb0d9c5fa343aab3bfd39767adb64fefebd7
parentg_flag does not need to be a global. Move it inside main(). (diff)
downloadwireguard-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.c9
-rw-r--r--sbin/fdisk/mbr.c24
-rw-r--r--sbin/fdisk/mbr.h3
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 *);