From 70e33173922ad4e39017ab578a3fe083ecc6b794 Mon Sep 17 00:00:00 2001 From: jkh Date: Mon, 6 Nov 1995 12:49:27 +0000 Subject: Some general fixes for the package menu (still need to fix the "more than 10 items checked bug though). Now allow user to specify a PKG_TMPDIR. If not selected, we try to make one. --- usr.sbin/sysinstall/doc.c | 4 ++-- usr.sbin/sysinstall/index.c | 16 +++++++++------- usr.sbin/sysinstall/options.c | 7 +++++-- usr.sbin/sysinstall/package.c | 37 ++++++++++++++++++++++++++----------- 4 files changed, 42 insertions(+), 22 deletions(-) (limited to 'usr.sbin') diff --git a/usr.sbin/sysinstall/doc.c b/usr.sbin/sysinstall/doc.c index a52c659..187362d 100644 --- a/usr.sbin/sysinstall/doc.c +++ b/usr.sbin/sysinstall/doc.c @@ -4,7 +4,7 @@ * This is probably the last program in the `sysinstall' line - the next * generation being essentially a complete rewrite. * - * $Id: doc.c,v 1.8 1995/10/27 03:59:31 jkh Exp $ + * $Id: doc.c,v 1.9 1995/11/04 08:47:22 jkh Exp $ * * Jordan Hubbard * @@ -23,7 +23,7 @@ docBrowser(char *junk) { char *browser = variable_get(VAR_BROWSER_PACKAGE); - if (!strstr(variable_get(SYSTEM_STATE), "install")) { + if (RunningAsInit && !strstr(variable_get(SYSTEM_STATE), "install")) { msgConfirm("This option may only be used after the system is installed, sorry!"); return RET_FAIL; } diff --git a/usr.sbin/sysinstall/index.c b/usr.sbin/sysinstall/index.c index d7c9c49..11f1fa3 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.15 1995/10/22 01:32:44 jkh Exp $ + * $Id: index.c,v 1.17 1995/10/22 17:39:10 jkh Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -270,11 +270,13 @@ index_init(PkgNodePtr top, PkgNodePtr plist) top->name = "Package Selection"; top->type = PLACE; top->desc = fetch_desc(top->name); + top->data = NULL; plist->next = plist->kids = NULL; plist->name = "Package Targets"; plist->type = PLACE; plist->desc = fetch_desc(plist->name); + plist->data = NULL; } void @@ -439,7 +441,6 @@ index_menu(PkgNodePtr top, PkgNodePtr plist, int *pos, int *scroll) char result[127]; Boolean hasPackages; - curr = max = 0; hasPackages = FALSE; nitems = NULL; @@ -464,6 +465,7 @@ index_menu(PkgNodePtr top, PkgNodePtr plist, int *pos, int *scroll) dialog_clear(); while (1) { n = 0; + curr = max = 0; kp = top->kids; if (!hasPackages && kp && kp->name && plist) { nitems = item_add_pair(nitems, "UP", "", &curr, &max); @@ -491,18 +493,17 @@ index_menu(PkgNodePtr top, PkgNodePtr plist, int *pos, int *scroll) else /* It's a categories menu */ rval = dialog_menu(top->name, top->desc, -1, -1, n > MAX_MENU ? MAX_MENU : n, n, (unsigned char **)nitems, result, pos, scroll); - items_free(nitems, &curr, &max); if (!rval && plist && strcmp(result, "UP")) { for (kp = top->kids; kp; kp = kp->next) { if (kp->type == PACKAGE) { sp = index_search(plist, kp->name, NULL); if (is_selected_in(kp->name, result)) { if (!sp) { - PkgNodePtr n = (PkgNodePtr)safe_malloc(sizeof(PkgNode)); + PkgNodePtr np = (PkgNodePtr)safe_malloc(sizeof(PkgNode)); - *n = *kp; - n->next = plist->kids; - plist->kids = n; + *np = *kp; + np->next = plist->kids; + plist->kids = np; standout(); mvprintw(23, 0, "Selected packages were added to selection list\n", kp->name); standend(); @@ -547,6 +548,7 @@ index_menu(PkgNodePtr top, PkgNodePtr plist, int *pos, int *scroll) } else { dialog_clear(); + items_free(nitems, &curr, &max); return rval ? RET_FAIL : RET_SUCCESS; } } diff --git a/usr.sbin/sysinstall/options.c b/usr.sbin/sysinstall/options.c index 7aec6aa..c9c099a 100644 --- a/usr.sbin/sysinstall/options.c +++ b/usr.sbin/sysinstall/options.c @@ -4,7 +4,7 @@ * This is probably the last attempt in the `sysinstall' line, the next * generation being slated for what's essentially a complete rewrite. * - * $Id: options.c,v 1.25 1995/10/26 08:56:06 jkh Exp $ + * $Id: options.c,v 1.26 1995/11/03 12:02:44 jkh Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -52,7 +52,7 @@ varCheck(Option opt) if (opt.aux) cp = variable_get((char *)opt.aux); if (!cp) - return "NO"; + return ""; return cp; } @@ -105,6 +105,7 @@ mediaCheck(Option opt) #define BPKG_PROMPT "Please specify the name of the HTML browser package:" #define BBIN_PROMPT "Please specify a full pathname to the HTML browser binary:" #define RETRY_PROMPT "Please specify the number of times to retry an FTP request:" +#define PKG_PROMPT "Please specify a temporary directory with lots of free space:" static Option Options[] = { { "NFS Secure", "NFS server talks only on a secure port", @@ -133,6 +134,8 @@ static Option Options[] = { OPT_IS_VAR, BBIN_PROMPT, VAR_BROWSER_BINARY, varCheck }, { "Media Type", "The current installation media type.", OPT_IS_FUNC, mediaGetType, VAR_MEDIA_TYPE, mediaCheck }, +{ "Package Temp", "The directory where package temporary files should go", + OPT_IS_VAR, PKG_PROMPT, "PKG_TMPDIR", varCheck }, { "Use Defaults", "Reset all values to startup defaults", OPT_IS_FUNC, installVarDefaults, 0, resetLogo }, { NULL }, diff --git a/usr.sbin/sysinstall/package.c b/usr.sbin/sysinstall/package.c index 5da1352..34881b1 100644 --- a/usr.sbin/sysinstall/package.c +++ b/usr.sbin/sysinstall/package.c @@ -4,7 +4,7 @@ * This is probably the last program in the `sysinstall' line - the next * generation being essentially a complete rewrite. * - * $Id: package.c,v 1.21 1995/10/27 02:12:58 jkh Exp $ + * $Id: package.c,v 1.22 1995/10/27 03:07:14 jkh Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -83,6 +83,12 @@ package_extract(Device *dev, char *name) } ret = RET_FAIL; + /* Make a couple of paranoid locations for temp files to live if user specified none */ + if (!variable_get("PKG_TMPDIR")) { + Mkdir("/usr/tmp", NULL); + Mkdir("/var/tmp", NULL); + } + sprintf(path, "packages/All/%s%s", name, strstr(name, ".tgz") ? "" : ".tgz"); msgNotify("Adding %s\nfrom %s", path, dev->name); fd = dev->get(dev, path, TRUE); @@ -94,8 +100,11 @@ package_extract(Device *dev, char *name) if (vsystem("(pwd; cat +CONTENTS) | pkg_add %s-S", !strcmp(variable_get(VAR_CPIO_VERBOSITY), "high") ? "-v " : "")) { dialog_clear(); - msgConfirm("An error occurred while trying to pkg_add %s.\n" - "Please check debugging screen for possible further details.", name); + if (!variable_get(VAR_NO_CONFIRM)) + msgConfirm("An error occurred while trying to pkg_add %s.\n" + "Please check debugging screen for possible further details.", name); + else + msgNotify("An error occurred while trying to pkg_add %s.", name); } else { msgNotify("Package %s added successfully!", name); @@ -104,18 +113,24 @@ package_extract(Device *dev, char *name) } else { dialog_clear(); - msgConfirm("The package specified (%s) has no CONTENTS file. This means\n" - "that there was either a media error of some sort or the package\n" - "file itself is corrupted.\n" - "You may wish to look into this and try again.", name); + if (!variable_get(VAR_NO_CONFIRM)) + msgConfirm("The package specified (%s) has no CONTENTS file. This means\n" + "that there was either a media error of some sort or the package\n" + "file itself is corrupted.\n" + "You may wish to look into this and try again.", name); + else + msgNotify("The package specified (%s) has no CONTENTS file. Skipping.", name); } } else { ret = RET_FAIL; - msgConfirm("Unable to extract the contents of package %s. This means\n" - "that there was either a media error of some sort or the package\n" - "file itself is corrupted.\n" - "You may wish to look into this and try again.", name); + if (!variable_get(VAR_NO_CONFIRM)) + msgConfirm("Unable to extract the contents of package %s. This means\n" + "that there was either a media error of some sort or the package\n" + "file itself is corrupted.\n" + "You may wish to look into this and try again.", name); + else + msgNotify("Unable to extract the contents of package %s. Skipping.", name); } if (chdir(where) == -1) msgFatal("Unable to get back to where I was before, Jojo! (That was: %s)", where); -- cgit v1.1