static void rdcontents(void) { VFP_T *vfp; struct cfstat *dp; struct pinfo *pinfo; int n; if (vfpOpen(&vfp, contents, "r", VFP_NEEDNOW) != 0) { progerr(gettext("unable to open \"%s\" for reading"), contents); exit(1); } /* check the contents file to look for referenced packages */ while ((n = srchcfile(&entry, "*", vfp, (VFP_T *)NULL)) > 0) { for (pinfo = entry.pinfo; pinfo; pinfo = pinfo->next) { /* see if entry is used by indicated packaged */ if (pkgcnt && (selectp(pinfo->pkg) < 0)) continue; dp = fpkg(pinfo->pkg); pkgusage(dp, &entry); if (entry.npkgs > 1) dp->shared++; /* * Only objects specifically tagged with '!' event * character are considered "partial", everything * else is considered "installed" (even server * objects). */ switch (pinfo->status) { case '!' : dp->partial++; break; default : dp->installed++; break; } } } if (n < 0) { char *errstr = getErrstr(); progerr(gettext("bad entry read in contents file")); logerr(gettext("pathname: %s"), (entry.path && *entry.path) ? entry.path : "Unknown"); logerr(gettext("problem: %s"), (errstr && *errstr) ? errstr : "Unknown"); exit(1); } (void) vfpClose(&vfp); }
static void rdcontents(void) { struct cfstat *dp; struct pinfo *pinfo; int n; PKGserver server; if (!socfile(&server, B_TRUE) || pkgopenfilter(server, pkgcnt == 1 ? pkg[0] : NULL) != 0) exit(1); /* check the contents file to look for referenced packages */ while ((n = srchcfile(&entry, "*", server)) > 0) { for (pinfo = entry.pinfo; pinfo; pinfo = pinfo->next) { /* see if entry is used by indicated packaged */ if (pkgcnt && (selectp(pinfo->pkg) < 0)) continue; dp = fpkg(pinfo->pkg); pkgusage(dp, &entry); if (entry.npkgs > 1) dp->shared++; /* * Only objects specifically tagged with '!' event * character are considered "partial", everything * else is considered "installed" (even server * objects). */ switch (pinfo->status) { case '!' : dp->partial++; break; default : dp->installed++; break; } } } if (n < 0) { char *errstr = getErrstr(); progerr(gettext("bad entry read in contents file")); logerr(gettext("pathname: %s"), (entry.path && *entry.path) ? entry.path : "Unknown"); logerr(gettext("problem: %s"), (errstr && *errstr) ? errstr : "Unknown"); exit(1); } pkgcloseserver(server); }
static void look_for_installed(void) { struct dirent *drp; DIR *dirfp; char path[PATH_MAX]; if ((dirfp = opendir(pkgdir)) == NULL) return; while (drp = readdir(dirfp)) { if (drp->d_name[0] == '.') continue; if (pkgcnt && (selectp(drp->d_name) < 0)) continue; if (!pkginfofind(path, pkgdir, drp->d_name)) continue; /* doesn't appear to be a package */ (void) fpkg(drp->d_name); } (void) closedir(dirfp); }