summaryrefslogtreecommitdiffstats
path: root/usr.sbin/sade
diff options
context:
space:
mode:
authorjkh <jkh@FreeBSD.org>1997-01-15 06:30:50 +0000
committerjkh <jkh@FreeBSD.org>1997-01-15 06:30:50 +0000
commit0a45d47c6d7181202cb56c9f539c4c9d7d7f9db9 (patch)
tree29e7b8dbd6d713f6ae21cbd62c9ecfa9c1abbf3e /usr.sbin/sade
parent754b3824315ef8a747c71d481aa623198b4a86e5 (diff)
downloadFreeBSD-src-0a45d47c6d7181202cb56c9f539c4c9d7d7f9db9.zip
FreeBSD-src-0a45d47c6d7181202cb56c9f539c4c9d7d7f9db9.tar.gz
Make the FTP installation codepath a lot more defensive. Trap
bogus path and FTP I/O errors much earlier, offer retry possibilities at steps along the way so you don't have to resume from the very beginning again on a hard error.
Diffstat (limited to 'usr.sbin/sade')
-rw-r--r--usr.sbin/sade/install.c36
1 files changed, 30 insertions, 6 deletions
diff --git a/usr.sbin/sade/install.c b/usr.sbin/sade/install.c
index 15059e8..0b44fcc 100644
--- a/usr.sbin/sade/install.c
+++ b/usr.sbin/sade/install.c
@@ -502,7 +502,7 @@ installNovice(dialogMenuItem *self)
break;
}
- if (!mediaDevice && !dmenuOpenSimple(&MenuMedia, FALSE))
+ if (!mediaDevice && (!dmenuOpenSimple(&MenuMedia, FALSE) || !mediaDevice))
return DITEM_FAILURE | DITEM_RECREATE;
if (DITEM_STATUS((i = installCommit(self))) == DITEM_FAILURE) {
@@ -664,8 +664,31 @@ installCommit(dialogMenuItem *self)
char *str;
Boolean need_bin = FALSE;
- if (!mediaVerify())
- return DITEM_FAILURE;
+ if (!Dists) {
+ if (!msgYesNo("No distributions are selected for installation! Do you\n"
+ "want to do this now?")) {
+ if (!dmenuOpenSimple(&MenuDistributions, FALSE) && !Dists)
+ return DITEM_FAILURE | DITEM_RECREATE;
+ }
+ else
+ return DITEM_FAILURE | DITEM_RESTORE;
+ }
+
+ if (!mediaDevice && !msgYesNo("You need to select a media type first. Do you want\n"
+ "to do this now?")) {
+ if (!dmenuOpenSimple(&MenuMedia, FALSE) || !mediaDevice)
+ return DITEM_FAILURE | DITEM_RESTORE;
+ }
+
+ if (!mediaDevice->init(mediaDevice)) {
+ if (!msgYesNo("Unable to initialize selected media. Would you like to\n"
+ "adjust your media configuration?")) {
+ if (!dmenuOpenSimple(&MenuMedia, FALSE) || !mediaDevice)
+ return DITEM_FAILURE | DITEM_RESTORE;
+ }
+ else
+ return DITEM_FAILURE | DITEM_RESTORE;
+ }
str = variable_get(SYSTEM_STATE);
if (isDebug())
@@ -682,9 +705,10 @@ installCommit(dialogMenuItem *self)
if (Dists & DIST_BIN)
need_bin = TRUE;
i = distExtractAll(self);
- if (DITEM_STATUS(i) != DITEM_FAILURE || !need_bin || !(Dists & DIST_BIN))
- i = installFixup(self);
-
+ if (DITEM_STATUS(i) == DITEM_SUCCESS) {
+ if (!need_bin || !(Dists & DIST_BIN))
+ i = installFixup(self);
+ }
variable_set2(SYSTEM_STATE, DITEM_STATUS(i) == DITEM_FAILURE ? "error-install" : "full-install");
return i | DITEM_RECREATE;
}
OpenPOWER on IntegriCloud