diff --git a/pkgscore.c b/pkgscore.c index f2a527c..5afb2de 100644 --- a/pkgscore.c +++ b/pkgscore.c @@ -113,23 +113,28 @@ void pkgscore_match_init(struct pkgscore_s *psc, struct pkg *pkg) n += n_snprintf(psc->pkgbuf, sizeof(psc->pkgbuf), "%s:", pkg->pkgdir->name); + // pkgname_off - size of pkgdir_name psc->pkgname_off = n; + // pkgbuf - "pkgdir_name:name-ver-rel.arch" - pkg_snprintf(&psc->pkgbuf[n], sizeof(psc->pkgbuf) - n, pkg); + n_snprintf(&psc->pkgbuf[n], sizeof(psc->pkgbuf) - n, "%s-%s-%s.%s", pkg->name, pkg->ver, pkg->rel, pkg_arch(pkg)); psc->pkg = pkg; } - +// return 0 if not match int pkgscore_match(struct pkgscore_s *psc, const char *mask) { + // match name if (fnmatch(mask, psc->pkg->name, 0) == 0) return 1; + // match name-version-rel.arch as string if (psc->pkgname_off && fnmatch(mask, &psc->pkgbuf[psc->pkgname_off], 0) == 0) return 1; + // match "pkgdir_name-name-version-rel.arch" as string return fnmatch(mask, psc->pkgbuf, 0) == 0; }