summaryrefslogtreecommitdiffstats
path: root/usr.sbin/sysinstall/package.c
diff options
context:
space:
mode:
authorjkh <jkh@FreeBSD.org>1999-05-15 14:34:22 +0000
committerjkh <jkh@FreeBSD.org>1999-05-15 14:34:22 +0000
commit33daa8b33a51b3df7dd9eb1aed37b9f6717a0cbd (patch)
tree83a93f830dc3b460a0427a856def20a44eac460b /usr.sbin/sysinstall/package.c
parentf1c57e949bd50b178bb720ba816780275cda469e (diff)
downloadFreeBSD-src-33daa8b33a51b3df7dd9eb1aed37b9f6717a0cbd.zip
FreeBSD-src-33daa8b33a51b3df7dd9eb1aed37b9f6717a0cbd.tar.gz
o Prevent alpha installs from grabbing x86 bits and vice-versa, at least
on CDs and FTP sites. o Collapse some redundant code. o Fix typo'd menu. o Restrict searches properly to packages rather than categories. o Small tweaks to signal handling. All RELENG_3 candidates.
Diffstat (limited to 'usr.sbin/sysinstall/package.c')
-rw-r--r--usr.sbin/sysinstall/package.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/usr.sbin/sysinstall/package.c b/usr.sbin/sysinstall/package.c
index e66db28..3f73433 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.73 1999/05/14 14:29:50 jkh Exp $
+ * $Id: package.c,v 1.74 1999/05/14 14:57:59 jkh Exp $
*
* Copyright (c) 1995
* Jordan Hubbard. All rights reserved.
@@ -41,7 +41,7 @@
#include <sys/mount.h>
#include <sys/stat.h>
-static Boolean sigpipe_caught = FALSE;
+static Boolean sigpipe_caught;
static void
catch_pipe(int sig)
@@ -60,13 +60,18 @@ package_add(char *name)
if (!mediaVerify())
return DITEM_FAILURE;
+
+ if (!mediaDevice->init(mediaDevice))
+ return DITEM_FAILURE;
+
i = index_initialize("packages/INDEX");
if (DITEM_STATUS(i) != DITEM_SUCCESS)
return i;
- tmp3 = !strpbrk(name, "-_") ? &tmp2 : NULL;
+
+ tmp3 = strpbrk(name, "-_") ? NULL : &tmp2;
tmp = index_search(&Top, name, tmp3);
if (tmp)
- return index_extract_one(mediaDevice, &Top, tmp, FALSE);
+ return index_extract(mediaDevice, &Top, tmp, FALSE);
else {
msgConfirm("Sorry, package %s was not found in the INDEX.", name);
return DITEM_FAILURE | DITEM_RESTORE;
@@ -152,7 +157,9 @@ package_extract(Device *dev, char *name, Boolean depended)
int i = 0, tot, pfd[2];
pid_t pid;
+ sigpipe_caught = FALSE;
signal(SIGPIPE, catch_pipe);
+
msgNotify("Adding %s%s\nfrom %s", path, depended ? " (as a dependency)" : "", dev->name);
pipe(pfd);
pid = fork();
@@ -165,8 +172,6 @@ package_extract(Device *dev, char *name, Boolean depended)
i = execl("/usr/sbin/pkg_add", "/usr/sbin/pkg_add", "-v", "-", 0);
else
i = execl("/usr/sbin/pkg_add", "/usr/sbin/pkg_add", "-", 0);
- if (isDebug())
- msgDebug("pkg_add returns %d status\n", i);
}
else {
char buf[BUFSIZ];
@@ -227,7 +232,6 @@ package_extract(Device *dev, char *name, Boolean depended)
sleep(1);
restorescr(w);
- sigpipe_caught = FALSE;
}
}
else {
@@ -240,5 +244,6 @@ package_extract(Device *dev, char *name, Boolean depended)
"No package add will be done.", name);
ret = DITEM_FAILURE | DITEM_RESTORE;
}
+ signal(SIGPIPE, SIG_IGN);
return ret;
}
OpenPOWER on IntegriCloud