diff options
Diffstat (limited to 'usr.sbin/sysinstall/index.c')
-rw-r--r-- | usr.sbin/sysinstall/index.c | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/usr.sbin/sysinstall/index.c b/usr.sbin/sysinstall/index.c index af5214f..d08f98b 100644 --- a/usr.sbin/sysinstall/index.c +++ b/usr.sbin/sysinstall/index.c @@ -4,7 +4,7 @@ * This is probably the last program in the `sysinstall' line - the next * generation being essentially a complete rewrite. * - * $Id: index.c,v 1.29 1996/05/16 11:47:29 jkh Exp $ + * $Id: index.c,v 1.30 1996/05/23 16:34:27 jkh Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -384,8 +384,15 @@ pkg_checked(dialogMenuItem *self) { PkgNodePtr kp = self->data, plist = (PkgNodePtr)self->aux; - if (kp->type == PACKAGE && plist) - return index_search(plist, kp->name, NULL) ? TRUE : FALSE; + if (kp->type == PACKAGE && kp->name && plist) { + int i; + + i = index_search(plist, kp->name, NULL) ? TRUE : FALSE; + if (!RunningAsInit) + return i || package_exists(kp->name); + else + return i; + } else return FALSE; } @@ -402,14 +409,16 @@ pkg_fire(dialogMenuItem *self) sp = index_search(plist, kp->name, NULL); /* Not already selected? */ if (!sp) { - PkgNodePtr np = (PkgNodePtr)safe_malloc(sizeof(PkgNode)); + if (RunningAsInit || !package_exists(kp->name)) { + PkgNodePtr np = (PkgNodePtr)safe_malloc(sizeof(PkgNode)); - *np = *kp; - np->next = plist->kids; - plist->kids = np; - msgInfo("Added %s to selection list", kp->name); + *np = *kp; + np->next = plist->kids; + plist->kids = np; + msgInfo("Added %s to selection list", kp->name); + } } - else if (sp) { + else { msgInfo("Removed %s from selection list", kp->name); index_delete(sp); } |