From afe77a15ac76058e7f1725e7ba0ccc6e9a314d87 Mon Sep 17 00:00:00 2001
From: nwhitehorn <nwhitehorn@FreeBSD.org>
Date: Tue, 25 Oct 2011 16:30:16 +0000
Subject: [PATCH] Provide an error message instead of silent failure if no
 disks are present in the system.

PR:		bin/161950
MFC after:	3 days
---
 usr.sbin/bsdinstall/partedit/partedit.c | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/usr.sbin/bsdinstall/partedit/partedit.c b/usr.sbin/bsdinstall/partedit/partedit.c
index 8a89f5208e3d..cddf7901fc5d 100644
--- a/usr.sbin/bsdinstall/partedit/partedit.c
+++ b/usr.sbin/bsdinstall/partedit/partedit.c
@@ -70,7 +70,7 @@ main(int argc, const char **argv)
 {
 	struct partition_metadata *md;
 	const char *prompt;
-	struct partedit_item *items;
+	struct partedit_item *items = NULL;
 	struct gmesh mesh;
 	int i, op, nitems, nscroll;
 	int error;
@@ -99,12 +99,21 @@ main(int argc, const char **argv)
 
 	/* Show the part editor either immediately, or to confirm wizard */
 	while (1) {
-		error = geom_gettree(&mesh);
-		items = read_geom_mesh(&mesh, &nitems);
-		get_mount_points(items, nitems);
 		dlg_clear();
 		dlg_put_backtitle();
 
+		error = geom_gettree(&mesh);
+		if (error == 0)
+			items = read_geom_mesh(&mesh, &nitems);
+		if (error || items == NULL) {
+			dialog_msgbox("Error", "No disks found. If you need to "
+			    "install a kernel driver, choose Shell at the "
+			    "installation menu.", 0, 0, TRUE);
+			break;
+		}
+			
+		get_mount_points(items, nitems);
+
 		if (i >= nitems)
 			i = nitems - 1;
 		op = diskeditor_show("Partition Editor", prompt,