X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=zpm-search.c;h=290c0834c63dc76212beaeea680faf799d02f5ad;hb=c42bb61b39cceab59c17d352f2593f3a5239a27d;hp=06439253c8b38f757bc479b428b75f318372223d;hpb=622e72618da01e320a5303ef588f9220e8a78558;p=zpackage diff --git a/zpm-search.c b/zpm-search.c index 0643925..290c083 100644 --- a/zpm-search.c +++ b/zpm-search.c @@ -24,6 +24,7 @@ struct search_ctl { struct zpm *zpmdb; glob_t repos; int matchallpkgfile; + int verbose; }; char *pathcat(char *dir, char *path) { @@ -63,7 +64,7 @@ char *checkfile(char *pkgstr, char *path) { return NULL; } - pkgid = zpm_findpkg(&pkgfile, pkgstr, "hash is not null"); + pkgid = zpm_findpkg(&pkgfile, pkgstr, NULL); zpm_close(&pkgfile); return pkgid; @@ -77,7 +78,7 @@ char *checkfileforlib(char *soname, char *path) { return NULL; } - pkgid = zpm_findlib(&pkgfile, soname, "hash is not null"); + pkgid = zpm_findlib(&pkgfile, soname, NULL); if (pkgfile.error) { fprintf(stderr, "sql error: %s\n", pkgfile.errmsg); } @@ -150,20 +151,31 @@ int find_lib(char *soname, struct search_ctl *opt, struct pkgloc *pkg) { if (opt->localdb) { installed = zpm_findlib(opt->zpmdb, soname, "status = 'installed'"); if (installed) { + if (opt->verbose > 1) { + fprintf(stderr, "library %s installed via %s\n", soname, installed); + } /* we're done, the lib is installed */ return 2; } } for (i = 0; i < opt->repos.gl_pathc; i++) { + if (opt->verbose > 1) { + fprintf(stderr, "checking %s for %s\n", opt->repos.gl_pathv[i], soname); + } found = checkfileforlib(soname, opt->repos.gl_pathv[i]); if (found) { + if (opt->verbose > 1) { + fprintf(stderr, "found %s\n", found); + } rv = zpm_vercmp(found, latest); if (rv == 1) { latest = found; free(pkgfile); pkgfile = strdup(opt->repos.gl_pathv[i]); } + } else if (opt->verbose > 1) { + fprintf(stderr, "not found\n"); } } @@ -304,8 +316,14 @@ void checklibs(struct search_ctl *opts, int found; struct pkgloc pkginfo; + if (opts->verbose > 1) { + fprintf(stderr, "checking for %s\n", soname); + } /* if it's in checked_libs, we've already looked at this one */ if (jsw_afind(checked_libs, soname)) { + if (opts->verbose > 1) { + fprintf(stderr, "already checked for %s\n", soname); + } continue; } @@ -409,7 +427,7 @@ int main(int ac, char *av[]) { */ int output = 1; - while ((option = getopt(ac, av, "ljqPRDp:r:d:M")) != -1) { + while ((option = getopt(ac, av, "ljqPRDvp:r:d:M")) != -1) { switch (option) { case 'l': findlibs = 1; break; case 'j': json = 1; break; @@ -421,6 +439,7 @@ int main(int ac, char *av[]) { case 'R': opt.repodir = 0; break; case 'D': opt.localdb = 0; break; case 'M': opt.matchallpkgfile = 1; break; + case 'v': opt.verbose++; break; default: exit(EXIT_FAILURE); break; @@ -443,6 +462,15 @@ int main(int ac, char *av[]) { return 3; } + if (opt.verbose > 1) { + unsigned int i; + fprintf(stderr, "globs:"); + for (i = 0; i < opt.repos.gl_pathc; i++) { + fprintf(stderr, " %s", opt.repos.gl_pathv[i]); + } + fprintf(stderr, "\n"); + } + packages = jsw_hnew(ac,NULL,(cmp_f)strcmp,(keydup_f)strdup, (itemdup_f)strdup,free,free); check = jsw_hnew(ac,NULL,(cmp_f)strcmp,(keydup_f)strdup,