summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkrw <krw@openbsd.org>2015-11-13 02:27:17 +0000
committerkrw <krw@openbsd.org>2015-11-13 02:27:17 +0000
commit0468c08fb6167cb97b9d5edc07c92bba65e584e4 (patch)
tree0c4b9dc84f000e307d08bc2e202fee697a9757cb
parent4-step pledge in a program noone really uses anymore. (diff)
downloadwireguard-openbsd-0468c08fb6167cb97b9d5edc07c92bba65e584e4.tar.xz
wireguard-openbsd-0468c08fb6167cb97b9d5edc07c92bba65e584e4.zip
Move from opening/closing disk for every i/o to opening the disk once
and saving the fd in the global 'disk' structure. Stop passing around fd's and just use the global. Makes pledge() feasible. Prompted by and ok deraadt@
-rw-r--r--sbin/fdisk/cmd.c19
-rw-r--r--sbin/fdisk/disk.c72
-rw-r--r--sbin/fdisk/disk.h12
-rw-r--r--sbin/fdisk/fdisk.c11
-rw-r--r--sbin/fdisk/gpt.c54
-rw-r--r--sbin/fdisk/gpt.h8
-rw-r--r--sbin/fdisk/mbr.c30
-rw-r--r--sbin/fdisk/mbr.h8
-rw-r--r--sbin/fdisk/user.c19
9 files changed, 96 insertions, 137 deletions
diff --git a/sbin/fdisk/cmd.c b/sbin/fdisk/cmd.c
index 9c2de8b3d3b..ba2feca8b37 100644
--- a/sbin/fdisk/cmd.c
+++ b/sbin/fdisk/cmd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cmd.c,v 1.84 2015/11/03 14:20:00 krw Exp $ */
+/* $OpenBSD: cmd.c,v 1.85 2015/11/13 02:27:17 krw Exp $ */
/*
* Copyright (c) 1997 Tobias Weingartner
@@ -397,7 +397,7 @@ int
Xwrite(char *args, struct mbr *mbr)
{
struct dos_mbr dos_mbr;
- int fd, i, n;
+ int i, n;
for (i = 0, n = 0; i < NDOSPART; i++)
if (mbr->part[i].id == 0xA6)
@@ -408,37 +408,28 @@ Xwrite(char *args, struct mbr *mbr)
return (CMD_CONT);
}
- fd = DISK_open(disk.name, O_RDWR);
MBR_make(mbr, &dos_mbr);
printf("Writing MBR at offset %lld.\n", (long long)mbr->offset);
- if (MBR_write(fd, mbr->offset, &dos_mbr) == -1) {
- int saved_errno = errno;
+ if (MBR_write(mbr->offset, &dos_mbr) == -1) {
warn("error writing MBR");
- close(fd);
- errno = saved_errno;
return (CMD_CONT);
}
if (letoh64(gh.gh_sig) == GPTSIGNATURE) {
printf("Writing GPT.\n");
- if (GPT_write(fd) == -1) {
- int saved_errno = errno;
+ if (GPT_write() == -1) {
warn("error writing GPT");
- close(fd);
- errno = saved_errno;
return (CMD_CONT);
}
} else if (reinited) {
/* Make sure GPT doesn't get in the way. */
- MBR_zapgpt(fd, &dos_mbr, DL_GETDSIZE(&dl) - 1);
+ MBR_zapgpt(&dos_mbr, DL_GETDSIZE(&dl) - 1);
}
/* Refresh in memory copy to reflect what was just written. */
MBR_parse(&dos_mbr, mbr->offset, mbr->reloffset, mbr);
- close(fd);
-
return (CMD_CLEAN);
}
diff --git a/sbin/fdisk/disk.c b/sbin/fdisk/disk.c
index d6829094fb3..f191e60c596 100644
--- a/sbin/fdisk/disk.c
+++ b/sbin/fdisk/disk.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: disk.c,v 1.49 2015/11/11 15:39:18 krw Exp $ */
+/* $OpenBSD: disk.c,v 1.50 2015/11/13 02:27:17 krw Exp $ */
/*
* Copyright (c) 1997 Tobias Weingartner
@@ -36,49 +36,37 @@
struct disk disk;
struct disklabel dl;
-int
-DISK_open(char *disk, int mode)
+void
+DISK_open(void)
{
struct stat st;
- int fd;
+ u_int64_t sz, spc;
- fd = opendev(disk, mode, OPENDEV_PART, NULL);
- if (fd == -1)
- err(1, "%s", disk);
- if (fstat(fd, &st) == -1)
- err(1, "%s", disk);
+ disk.fd = opendev(disk.name, O_RDWR, OPENDEV_PART, NULL);
+ if (disk.fd == -1)
+ err(1, "%s", disk.name);
+ if (fstat(disk.fd, &st) == -1)
+ err(1, "%s", disk.name);
if (!S_ISCHR(st.st_mode) && !S_ISREG(st.st_mode))
errx(1, "%s is not a character device or a regular file",
disk);
- return (fd);
-}
-
-void
-DISK_getlabelgeometry(void)
-{
- u_int64_t sz, spc;
- int fd;
-
/* Get label geometry. */
- if ((fd = DISK_open(disk.name, O_RDONLY)) != -1) {
- if (ioctl(fd, DIOCGPDINFO, &dl) == -1) {
- warn("DIOCGPDINFO");
- } else {
- disk.cylinders = dl.d_ncylinders;
- disk.heads = dl.d_ntracks;
- disk.sectors = dl.d_nsectors;
- /* MBR handles only first UINT32_MAX sectors. */
- spc = (u_int64_t)disk.heads * disk.sectors;
- sz = DL_GETDSIZE(&dl);
- if (sz > UINT32_MAX) {
- disk.cylinders = UINT32_MAX / spc;
- disk.size = disk.cylinders * spc;
- } else
- disk.size = sz;
- unit_types[SECTORS].conversion = dl.d_secsize;
- }
- close(fd);
+ if (ioctl(disk.fd, DIOCGPDINFO, &dl) == -1) {
+ warn("DIOCGPDINFO");
+ } else {
+ disk.cylinders = dl.d_ncylinders;
+ disk.heads = dl.d_ntracks;
+ disk.sectors = dl.d_nsectors;
+ /* MBR handles only first UINT32_MAX sectors. */
+ spc = (u_int64_t)disk.heads * disk.sectors;
+ sz = DL_GETDSIZE(&dl);
+ if (sz > UINT32_MAX) {
+ disk.cylinders = UINT32_MAX / spc;
+ disk.size = disk.cylinders * spc;
+ } else
+ disk.size = sz;
+ unit_types[SECTORS].conversion = dl.d_secsize;
}
}
@@ -116,7 +104,7 @@ DISK_printgeometry(char *units)
* The caller must free() the memory it gets.
*/
char *
-DISK_readsector(int fd, off_t where)
+DISK_readsector(off_t where)
{
int secsize;
char *secbuf;
@@ -126,7 +114,7 @@ DISK_readsector(int fd, off_t where)
secsize = dl.d_secsize;
where *= secsize;
- off = lseek(fd, where, SEEK_SET);
+ off = lseek(disk.fd, where, SEEK_SET);
if (off != where)
return (NULL);
@@ -134,7 +122,7 @@ DISK_readsector(int fd, off_t where)
if (secbuf == NULL)
return (NULL);
- len = read(fd, secbuf, secsize);
+ len = read(disk.fd, secbuf, secsize);
if (len == -1 || len != secsize) {
free(secbuf);
return (NULL);
@@ -149,7 +137,7 @@ DISK_readsector(int fd, off_t where)
* errno if the write fails.
*/
int
-DISK_writesector(int fd, char *secbuf, off_t where)
+DISK_writesector(char *secbuf, off_t where)
{
int secsize;
ssize_t len;
@@ -159,9 +147,9 @@ DISK_writesector(int fd, char *secbuf, off_t where)
secsize = dl.d_secsize;
where *= secsize;
- off = lseek(fd, where, SEEK_SET);
+ off = lseek(disk.fd, where, SEEK_SET);
if (off == where)
- len = write(fd, secbuf, secsize);
+ len = write(disk.fd, secbuf, secsize);
if (len == -1 || len != secsize) {
/* short read or write */
diff --git a/sbin/fdisk/disk.h b/sbin/fdisk/disk.h
index c77dc16c2f6..e65b4cfac9f 100644
--- a/sbin/fdisk/disk.h
+++ b/sbin/fdisk/disk.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: disk.h,v 1.19 2015/03/30 17:11:49 krw Exp $ */
+/* $OpenBSD: disk.h,v 1.20 2015/11/13 02:27:17 krw Exp $ */
/*
* Copyright (c) 1997 Tobias Weingartner
@@ -20,18 +20,18 @@
#define _DISK_H
struct disk {
- char *name;
+ char *name;
+ int fd;
u_int32_t cylinders;
u_int32_t heads;
u_int32_t sectors;
u_int32_t size;
};
-int DISK_open(char *, int);
-void DISK_getlabelgeometry(void);
+void DISK_open(void);
int DISK_printgeometry(char *);
-char *DISK_readsector(int, off_t);
-int DISK_writesector(int, char *, off_t);
+char *DISK_readsector(off_t);
+int DISK_writesector(char *, off_t);
extern struct disk disk;
extern struct disklabel dl;
diff --git a/sbin/fdisk/fdisk.c b/sbin/fdisk/fdisk.c
index e19396bfbc7..5646c5926a5 100644
--- a/sbin/fdisk/fdisk.c
+++ b/sbin/fdisk/fdisk.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: fdisk.c,v 1.80 2015/11/11 15:39:18 krw Exp $ */
+/* $OpenBSD: fdisk.c,v 1.81 2015/11/13 02:27:17 krw Exp $ */
/*
* Copyright (c) 1997 Tobias Weingartner
@@ -149,8 +149,7 @@ main(int argc, char *argv[])
else
disk.name = argv[0];
- /* Start with the disklabel geometry and get the sector size. */
- DISK_getlabelgeometry();
+ DISK_open();
if (b_arg > 0 && i_flag == 0) {
warnx("-b specified without -i");
@@ -199,9 +198,7 @@ main(int argc, char *argv[])
/* Create initial/default MBR. */
if (i_flag == 0) {
- fd = DISK_open(disk.name, O_RDONLY);
- error = MBR_read(fd, 0, &dos_mbr);
- close(fd);
+ error = MBR_read(0, &dos_mbr);
if (error)
errx(1, "Can't read sector 0!");
MBR_parse(&dos_mbr, 0, 0, &initial_mbr);
@@ -252,5 +249,7 @@ main(int argc, char *argv[])
if (e_flag)
USER_edit(0, 0);
+ close(disk.fd);
+
return (0);
}
diff --git a/sbin/fdisk/gpt.c b/sbin/fdisk/gpt.c
index 72a9a250b7d..a0e604ef5d8 100644
--- a/sbin/fdisk/gpt.c
+++ b/sbin/fdisk/gpt.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: gpt.c,v 1.4 2015/11/12 21:31:36 krw Exp $ */
+/* $OpenBSD: gpt.c,v 1.5 2015/11/13 02:27:17 krw Exp $ */
/*
* Copyright (c) 2015 Markus Muller <mmu@grummel.net>
* Copyright (c) 2015 Kenneth R Westerback <krw@openbsd.org>
@@ -45,14 +45,14 @@ struct gpt_header gh;
struct gpt_partition gp[NGPTPARTITIONS];
int
-GPT_get_header(int fd, off_t where)
+GPT_get_header(off_t where)
{
char *secbuf;
uint64_t partlastlba;
int partspersec;
uint32_t orig_gh_csum, new_gh_csum;
- secbuf = DISK_readsector(fd, where);
+ secbuf = DISK_readsector(where);
if (secbuf == 0)
return (1);
@@ -146,7 +146,7 @@ GPT_get_header(int fd, off_t where)
}
int
-GPT_get_partition_table(int fd, off_t where)
+GPT_get_partition_table(off_t where)
{
ssize_t len;
off_t off;
@@ -167,13 +167,13 @@ GPT_get_partition_table(int fd, off_t where)
memset(&gp, 0, sizeof(gp));
where *= dl.d_secsize;
- off = lseek(fd, where, SEEK_SET);
+ off = lseek(disk.fd, where, SEEK_SET);
if (off == -1) {
DPRINTF("seek to gpt partition table @ sector %llu failed\n",
(unsigned long long)where / dl.d_secsize);
return (1);
}
- len = read(fd, &gp, secs * dl.d_secsize);
+ len = read(disk.fd, &gp, secs * dl.d_secsize);
if (len == -1 || len != secs * dl.d_secsize) {
DPRINTF("gpt partition table read failed.\n");
return (1);
@@ -193,31 +193,23 @@ GPT_get_partition_table(int fd, off_t where)
int
GPT_get_gpt(void)
{
- int fd, privalid, altvalid;
-
- fd = DISK_open(disk.name, O_RDONLY);
+ int privalid, altvalid;
/*
* primary header && primary partition table ||
* alt header && alt partition table
*/
- privalid = GPT_get_header(fd, GPTSECTOR);
+ privalid = GPT_get_header(GPTSECTOR);
+ if (privalid == 0)
+ privalid = GPT_get_partition_table(gh.gh_part_lba);
if (privalid == 0)
- privalid = GPT_get_partition_table(fd, gh.gh_part_lba);
- if (privalid == 0) {
- close(fd);
return (0);
- }
- altvalid = GPT_get_header(fd, DL_GETDSIZE(&dl) - 1);
+ altvalid = GPT_get_header(DL_GETDSIZE(&dl) - 1);
+ if (altvalid == 0)
+ altvalid = GPT_get_partition_table(gh.gh_part_lba);
if (altvalid == 0)
- altvalid = GPT_get_partition_table(fd, gh.gh_part_lba);
- if (altvalid == 0) {
- close(fd);
return (0);
- }
-
- close(fd);
return (1);
}
@@ -383,7 +375,7 @@ GPT_init(void)
}
int
-GPT_write(int fd)
+GPT_write(void)
{
char *secbuf;
const int secsize = unit_types[SECTORS].conversion;
@@ -406,12 +398,12 @@ GPT_write(int fd)
gh.gh_csum = 0;
gh.gh_csum = crc32((unsigned char *)&gh, letoh32(gh.gh_size));
- secbuf = DISK_readsector(fd, 1);
+ secbuf = DISK_readsector(1);
if (secbuf == NULL)
return (-1);
memcpy(secbuf, &gh, sizeof(gh));
- DISK_writesector(fd, secbuf, 1);
+ DISK_writesector(secbuf, 1);
free(secbuf);
gh.gh_lba_self = htole64(altgh);
@@ -420,12 +412,12 @@ GPT_write(int fd)
gh.gh_csum = 0;
gh.gh_csum = crc32((unsigned char *)&gh, letoh32(gh.gh_size));
- secbuf = DISK_readsector(fd, altgh);
+ secbuf = DISK_readsector(altgh);
if (secbuf == NULL)
return (-1);
memcpy(secbuf, &gh, sizeof(gh));
- DISK_writesector(fd, secbuf, altgh);
+ DISK_writesector(secbuf, altgh);
free(secbuf);
/*
@@ -435,9 +427,9 @@ GPT_write(int fd)
* XXX ALWAYS NGPTPARTITIONS!
* XXX ASSUME gp is multiple of sector size!
*/
- off = lseek(fd, secsize * 2, SEEK_SET);
+ off = lseek(disk.fd, secsize * 2, SEEK_SET);
if (off == secsize * 2)
- len = write(fd, &gp, sizeof(gp));
+ len = write(disk.fd, &gp, sizeof(gp));
else
len = -1;
if (len == -1 || len != sizeof(gp)) {
@@ -445,9 +437,9 @@ GPT_write(int fd)
return (-1);
}
- off = lseek(fd, secsize * altgp, SEEK_SET);
+ off = lseek(disk.fd, secsize * altgp, SEEK_SET);
if (off == secsize * altgp)
- len = write(fd, &gp, sizeof(gp));
+ len = write(disk.fd, &gp, sizeof(gp));
else
len = -1;
@@ -457,7 +449,7 @@ GPT_write(int fd)
}
/* Refresh in-kernel disklabel from the updated disk information. */
- ioctl(fd, DIOCRLDINFO, 0);
+ ioctl(disk.fd, DIOCRLDINFO, 0);
return (0);
}
diff --git a/sbin/fdisk/gpt.h b/sbin/fdisk/gpt.h
index 1caca02305b..a428709dedc 100644
--- a/sbin/fdisk/gpt.h
+++ b/sbin/fdisk/gpt.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: gpt.h,v 1.2 2015/10/26 15:08:26 krw Exp $ */
+/* $OpenBSD: gpt.h,v 1.3 2015/11/13 02:27:17 krw Exp $ */
/*
* Copyright (c) 2015 Markus Muller <mmu@grummel.net>
* Copyright (c) 2015 Kenneth R Westerback <krw@openbsd.org>
@@ -16,11 +16,11 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-int GPT_get_hdr(int, off_t);
-int GPT_get_partition_table(int, off_t);
+int GPT_get_hdr(off_t);
+int GPT_get_partition_table(off_t);
int GPT_get_gpt(void);
int GPT_init(void);
-int GPT_write(int);
+int GPT_write(void);
void GPT_print(char *);
void GPT_print_part(int, char *);
diff --git a/sbin/fdisk/mbr.c b/sbin/fdisk/mbr.c
index 0d291481665..8a713ae942e 100644
--- a/sbin/fdisk/mbr.c
+++ b/sbin/fdisk/mbr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mbr.c,v 1.59 2015/11/12 23:49:37 krw Exp $ */
+/* $OpenBSD: mbr.c,v 1.60 2015/11/13 02:27:17 krw Exp $ */
/*
* Copyright (c) 1997 Tobias Weingartner
@@ -214,11 +214,11 @@ MBR_print(struct mbr *mbr, char *units)
}
int
-MBR_read(int fd, off_t where, struct dos_mbr *dos_mbr)
+MBR_read(off_t where, struct dos_mbr *dos_mbr)
{
char *secbuf;
- secbuf = DISK_readsector(fd, where);
+ secbuf = DISK_readsector(where);
if (secbuf == NULL)
return (-1);
@@ -229,11 +229,11 @@ MBR_read(int fd, off_t where, struct dos_mbr *dos_mbr)
}
int
-MBR_write(int fd, off_t where, struct dos_mbr *dos_mbr)
+MBR_write(off_t where, struct dos_mbr *dos_mbr)
{
char *secbuf;
- secbuf = DISK_readsector(fd, where);
+ secbuf = DISK_readsector(where);
if (secbuf == NULL)
return (-1);
@@ -242,10 +242,10 @@ MBR_write(int fd, off_t where, struct dos_mbr *dos_mbr)
* write the sector back to "disk".
*/
memcpy(secbuf, dos_mbr, sizeof(*dos_mbr));
- DISK_writesector(fd, secbuf, where);
+ DISK_writesector(secbuf, where);
/* Refresh in-kernel disklabel from the updated disk information. */
- ioctl(fd, DIOCRLDINFO, 0);
+ ioctl(disk.fd, DIOCRLDINFO, 0);
free(secbuf);
@@ -261,11 +261,9 @@ MBR_pcopy(struct mbr *mbr)
{
struct dos_partition dos_parts[NDOSPART];
struct dos_mbr dos_mbr;
- int i, fd, error;
+ int i, error;
- fd = DISK_open(disk.name, O_RDONLY);
- error = MBR_read(fd, 0, &dos_mbr);
- close(fd);
+ error = MBR_read(0, &dos_mbr);
if (error == -1)
return;
@@ -283,7 +281,7 @@ MBR_pcopy(struct mbr *mbr)
* confused.
*/
void
-MBR_zapgpt(int fd, struct dos_mbr *dos_mbr, uint64_t lastsec)
+MBR_zapgpt(struct dos_mbr *dos_mbr, uint64_t lastsec)
{
struct dos_partition dos_parts[NDOSPART];
char *secbuf;
@@ -297,25 +295,25 @@ MBR_zapgpt(int fd, struct dos_mbr *dos_mbr, uint64_t lastsec)
(dos_parts[i].dp_typ == DOSPTYP_EFISYS))
return;
- secbuf = DISK_readsector(fd, GPTSECTOR);
+ secbuf = DISK_readsector(GPTSECTOR);
if (secbuf == NULL)
return;
memcpy(&sig, secbuf, sizeof(sig));
if (letoh64(sig) == GPTSIGNATURE) {
memset(secbuf, 0, sizeof(sig));
- DISK_writesector(fd, secbuf, GPTSECTOR);
+ DISK_writesector(secbuf, GPTSECTOR);
}
free(secbuf);
- secbuf = DISK_readsector(fd, lastsec);
+ secbuf = DISK_readsector(lastsec);
if (secbuf == NULL)
return;
memcpy(&sig, secbuf, sizeof(sig));
if (letoh64(sig) == GPTSIGNATURE) {
memset(secbuf, 0, sizeof(sig));
- DISK_writesector(fd, secbuf, lastsec);
+ DISK_writesector(secbuf, lastsec);
}
free(secbuf);
}
diff --git a/sbin/fdisk/mbr.h b/sbin/fdisk/mbr.h
index 0673f87fb45..7bb8bfb6f02 100644
--- a/sbin/fdisk/mbr.h
+++ b/sbin/fdisk/mbr.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: mbr.h,v 1.26 2015/10/26 15:08:26 krw Exp $ */
+/* $OpenBSD: mbr.h,v 1.27 2015/11/13 02:27:17 krw Exp $ */
/*
* Copyright (c) 1997 Tobias Weingartner
@@ -34,10 +34,10 @@ void MBR_parse(struct dos_mbr *, off_t, off_t, struct mbr *);
void MBR_make(struct mbr *, struct dos_mbr *);
void MBR_init(struct mbr *);
void MBR_init_GPT(struct mbr *);
-int MBR_read(int, off_t, struct dos_mbr *);
-int MBR_write(int, off_t, struct dos_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(int, struct dos_mbr *, uint64_t);
+void MBR_zapgpt(struct dos_mbr *, uint64_t);
void MBR_init_GPT(struct mbr *);
int MBR_protective_mbr(struct mbr *);
diff --git a/sbin/fdisk/user.c b/sbin/fdisk/user.c
index 40d40a73253..b02b712d86a 100644
--- a/sbin/fdisk/user.c
+++ b/sbin/fdisk/user.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: user.c,v 1.45 2015/10/26 15:08:26 krw Exp $ */
+/* $OpenBSD: user.c,v 1.46 2015/11/13 02:27:17 krw Exp $ */
/*
* Copyright (c) 1997 Tobias Weingartner
@@ -24,7 +24,6 @@
#include <string.h>
#include <unistd.h>
-#include "disk.h"
#include "part.h"
#include "mbr.h"
#include "misc.h"
@@ -62,15 +61,13 @@ USER_edit(off_t offset, off_t reloff)
struct dos_mbr dos_mbr;
struct mbr mbr;
char *cmd, *args;
- int i, st, fd, error;
+ int i, st, error;
/* One level deeper */
editlevel += 1;
/* Read MBR & partition */
- fd = DISK_open(disk.name, O_RDONLY);
- error = MBR_read(fd, offset, &dos_mbr);
- close(fd);
+ error = MBR_read(offset, &dos_mbr);
if (error == -1)
goto done;
@@ -122,7 +119,6 @@ again:
if (st == CMD_SAVE) {
if (Xwrite(NULL, &mbr) == CMD_CONT)
goto again;
- close(fd);
} else
printf("Aborting changes to current MBR.\n");
}
@@ -136,15 +132,14 @@ void
USER_print_disk(void)
{
off_t offset, firstoff;
- int fd, i, error;
+ int i, error;
struct dos_mbr dos_mbr;
struct mbr mbr;
- fd = DISK_open(disk.name, O_RDONLY);
offset = firstoff = 0;
do {
- error = MBR_read(fd, offset, &dos_mbr);
+ error = MBR_read(offset, &dos_mbr);
if (error == -1)
break;
MBR_parse(&dos_mbr, offset, firstoff, &mbr);
@@ -166,8 +161,4 @@ USER_print_disk(void)
firstoff = offset;
}
} while (offset);
-
- error = close(fd);
- if (error == -1)
- err(1, "Unable to close disk");
}