diff options
Diffstat (limited to 'release/sysinstall/dist.c')
-rw-r--r-- | release/sysinstall/dist.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/release/sysinstall/dist.c b/release/sysinstall/dist.c index 5c1ead2..1a9a0ce 100644 --- a/release/sysinstall/dist.c +++ b/release/sysinstall/dist.c @@ -4,7 +4,7 @@ * This is probably the last program in the `sysinstall' line - the next * generation being essentially a complete rewrite. * - * $Id: dist.c,v 1.128 1998/10/14 11:23:48 jkh Exp $ + * $Id: dist.c,v 1.129 1998/10/15 10:03:48 jkh Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -764,7 +764,7 @@ printSelected(char *buf, int selected, Distribution *me, int *col) int distExtractAll(dialogMenuItem *self) { - int retries = 0; + int old_dists, retries = 0, status = DITEM_SUCCESS; char buf[512]; /* paranoia */ @@ -776,13 +776,22 @@ distExtractAll(dialogMenuItem *self) if (!mediaVerify() || !mediaDevice->init(mediaDevice)) return DITEM_FAILURE; + old_dists = Dists; distVerifyFlags(); + dialog_clear_norefresh(); msgNotify("Attempting to install all selected distributions.."); + /* Try for 3 times around the loop, then give up. */ while (Dists && ++retries < 3) distExtract(NULL, DistTable); + /* Only do bin fixup if bin dist was successfully extracted */ + if ((old_dists & DIST_BIN) && !(Dists & DIST_BIN)) + status |= installFixupBin(self); + if (old_dists & DIST_XF86) + status |= installFixupXFree(self); + if (Dists) { int col = 0; @@ -792,7 +801,7 @@ distExtractAll(dialogMenuItem *self) msgConfirm("Couldn't extract the following distributions. This may\n" "be because they were not available on the installation\n" "media you've chosen:\n\n\t%s", buf); - return DITEM_SUCCESS | DITEM_RESTORE; + status |= DITEM_RESTORE; } - return DITEM_SUCCESS; + return status; } |