summaryrefslogtreecommitdiff
path: root/usr.sbin/pkg_install
diff options
context:
space:
mode:
authorJordan K. Hubbard <jkh@FreeBSD.org>1996-06-16 16:33:34 +0000
committerJordan K. Hubbard <jkh@FreeBSD.org>1996-06-16 16:33:34 +0000
commita6fad3a0ae7922150742251fc1cf6d9c9a5dc16b (patch)
treed4a8e106b73d3a6baa60d57a5c6462fd708384be /usr.sbin/pkg_install
parentbde5e68a33e142ea83cc7d615ed8a396ddfd7f41 (diff)
Notes
Diffstat (limited to 'usr.sbin/pkg_install')
-rw-r--r--usr.sbin/pkg_install/info/perform.c48
1 files changed, 21 insertions, 27 deletions
diff --git a/usr.sbin/pkg_install/info/perform.c b/usr.sbin/pkg_install/info/perform.c
index ed6b259b7596..da142b993841 100644
--- a/usr.sbin/pkg_install/info/perform.c
+++ b/usr.sbin/pkg_install/info/perform.c
@@ -1,5 +1,5 @@
#ifndef lint
-static const char *rcsid = "$Id: perform.c,v 1.17 1995/07/30 01:44:38 ache Exp $";
+static const char *rcsid = "$Id: perform.c,v 1.18 1995/10/25 15:38:31 jkh Exp $";
#endif
/*
@@ -41,35 +41,29 @@ pkg_perform(char **pkgs)
if (!tmp)
tmp = DEF_LOG_DIR;
/* Overriding action? */
- if (AllInstalled || CheckPkg) {
- if (isdir(tmp)) {
- DIR *dirp;
- struct dirent *dp;
+ if (CheckPkg) {
+ char buf[FILENAME_MAX];
- dirp = opendir(tmp);
- if (dirp) {
- for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp)) {
- if (strcmp(dp->d_name, ".") && strcmp(dp->d_name, "..")) {
- if (CheckPkg) {
- if (!strcmp(dp->d_name, CheckPkg))
- return 0;
- }
- else
- err_cnt += pkg_do(dp->d_name);
- }
- }
- (void)closedir(dirp);
- if (CheckPkg)
- return 1;
- }
- else
- ++err_cnt;
- } else if (CheckPkg)
- return 1; /* no dir -> not installed! */
+ snprintf(buf, FILENAME_MAX, "%s/%s", tmp, CheckPkg);
+ return abs(access(buf, R_OK));
+ }
+ else if (AllInstalled) {
+ DIR *dirp;
+ struct dirent *dp;
+ if (!isdir(tmp))
+ return 1;
+ dirp = opendir(tmp);
+ if (dirp) {
+ for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp))
+ if (strcmp(dp->d_name, ".") && strcmp(dp->d_name, ".."))
+ err_cnt += pkg_do(dp->d_name);
+ (void)closedir(dirp);
+ }
}
- for (i = 0; pkgs[i]; i++)
- err_cnt += pkg_do(pkgs[i]);
+ else
+ for (i = 0; pkgs[i]; i++)
+ err_cnt += pkg_do(pkgs[i]);
return err_cnt;
}