diff options
| author | Jordan K. Hubbard <jkh@FreeBSD.org> | 1996-06-16 16:33:34 +0000 |
|---|---|---|
| committer | Jordan K. Hubbard <jkh@FreeBSD.org> | 1996-06-16 16:33:34 +0000 |
| commit | a6fad3a0ae7922150742251fc1cf6d9c9a5dc16b (patch) | |
| tree | d4a8e106b73d3a6baa60d57a5c6462fd708384be /usr.sbin/pkg_install | |
| parent | bde5e68a33e142ea83cc7d615ed8a396ddfd7f41 (diff) | |
Notes
Diffstat (limited to 'usr.sbin/pkg_install')
| -rw-r--r-- | usr.sbin/pkg_install/info/perform.c | 48 |
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; } |
