All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 8/8] fdisk: simplify device opening
@ 2012-04-16  9:44 Davidlohr Bueso
  2012-04-23 11:07 ` Karel Zak
  0 siblings, 1 reply; 2+ messages in thread
From: Davidlohr Bueso @ 2012-04-16  9:44 UTC (permalink / raw)
  To: Karel Zak; +Cc: util-linux

From: Davidlohr Bueso <dave@gnu.org>

This patch makes fdisk open(2) the device in only one place (get_boot), instead of
having to depend on user input (ie: listing -l).

Signed-off-by: Davidlohr Bueso <dave@gnu.org>
---
 fdisk/fdisk.c |   39 ++++++++++++++++-----------------------
 1 files changed, 16 insertions(+), 23 deletions(-)

diff --git a/fdisk/fdisk.c b/fdisk/fdisk.c
index 8079f11..a91187a 100644
--- a/fdisk/fdisk.c
+++ b/fdisk/fdisk.c
@@ -1096,13 +1096,18 @@ static int get_boot(int try_only) {
 	disklabel = ANY_LABEL;
 	memset(MBRbuffer, 0, 512);
 
-	if (!try_only) {
+	if (try_only && (fd = open(disk_device, O_RDONLY)) < 0) {
+		fprintf(stderr, _("Cannot open %s\n"), disk_device);
+		fatal(unable_to_open);
+	}
+	else {
 		if ((fd = open(disk_device, O_RDWR)) < 0) {
+			/* ok, can we read-only the device? */
 			if ((fd = open(disk_device, O_RDONLY)) < 0)
 				fatal(unable_to_open);
 			else
 				printf(_("You will not be able to write "
-					    "the partition table.\n"));
+					 "the partition table.\n"));
 		}
 	}
 
@@ -1113,7 +1118,6 @@ static int get_boot(int try_only) {
 	}
 
 	get_geometry(fd, NULL);
-
 	update_units();
 
 	if (!check_dos_label())
@@ -2707,26 +2711,15 @@ print_partition_table_from_option(char *device)
 	if (setjmp(listingbuf))
 		return;
 	gpt_warning(device);
-	if ((fd = open(disk_device, O_RDONLY)) >= 0) {
-		gb = get_boot(1);
-		if (gb > 0) { /* I/O error */
-		} else if (gb < 0) { /* no DOS signature */
-			list_disk_geometry();
-			if (disklabel != AIX_LABEL && disklabel != MAC_LABEL)
-				btrydev(device);
-		} else {
-			list_table(0);
-		}
-		close(fd);
-	} else {
-		/* Ignore other errors, since we try IDE
-		   and SCSI hard disks which may not be
-		   installed on the system. */
-		if (errno == EACCES) {
-			fprintf(stderr, _("Cannot open %s\n"), device);
-			return;
-		}
-	}
+	gb = get_boot(1);
+	if (gb < 0) { /* no DOS signature */
+		list_disk_geometry();
+		if (disklabel != AIX_LABEL && disklabel != MAC_LABEL)
+			btrydev(device);
+	}
+	else if (!gb)
+		list_table(0);
+	close(fd);
 }
 
 /*
-- 
1.7.4.1

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH 8/8] fdisk: simplify device opening
  2012-04-16  9:44 [PATCH 8/8] fdisk: simplify device opening Davidlohr Bueso
@ 2012-04-23 11:07 ` Karel Zak
  0 siblings, 0 replies; 2+ messages in thread
From: Karel Zak @ 2012-04-23 11:07 UTC (permalink / raw)
  To: Davidlohr Bueso; +Cc: util-linux

On Mon, Apr 16, 2012 at 11:44:52AM +0200, Davidlohr Bueso wrote:
> fdisk/fdisk.c |   39 ++++++++++++++++-----------------------
> 1 files changed, 16 insertions(+), 23 deletions(-)

 Applied, thanks.

-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2012-04-23 11:07 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-04-16  9:44 [PATCH 8/8] fdisk: simplify device opening Davidlohr Bueso
2012-04-23 11:07 ` Karel Zak

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.