X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=zpm-findpkg.c;h=95085d5590f3516ba21911189a2f3c5696cd40a8;hb=119f7176a2cedfe3c87417a35d91ec3b35b582b1;hp=c3ce4e4ceb80fb217373ca10b7abf32ca94071c9;hpb=7cc581729bb4b242c803299f72eed987b9fee216;p=zpackage diff --git a/zpm-findpkg.c b/zpm-findpkg.c index c3ce4e4..95085d5 100644 --- a/zpm-findpkg.c +++ b/zpm-findpkg.c @@ -4,6 +4,8 @@ #include "zpm.h" +static int found = 0; + static int prow(void *f, int ncols, char **vals, char **cols) { FILE *out = f; int i; @@ -16,6 +18,7 @@ static int prow(void *f, int ncols, char **vals, char **cols) { fprintf(out, "%s", vals[i]); } fprintf(out, "\n"); + found++; return 0; } @@ -66,6 +69,7 @@ void parse_package(char *pstr, char *name, char *ver, int *rel) { int main(int ac, char **av){ struct zpm pkg; + char *dbfile, *pkgstr; char *select = "select package, version, release, package||'-'||version||'-'||release as pkgid from packages"; char *group = "group by package having max( version||'-'||release collate vercmp) order by length(package), package, version||'-'||release collate vercmp"; @@ -78,23 +82,26 @@ int main(int ac, char **av){ return 1; } - /* this is really just read env */ - zpm_readopts(&pkg, ac, av); + dbfile = getenv("ZPMDB"); + + if (ac > 1) { + dbfile = av[1]; + } /* given a package name, get the packages */ /* no package name, get all */ - if (zpm_open(&pkg, av[1])) { + if (zpm_open(&pkg, dbfile)) { char *errmsg; -// char where[1024] = ""; - /* TODO allow more args to nail down version and release */ - if (ac >= 3) { + if (ac >= 2) { int release; char version[32]; char package[32]; - parse_package(av[2], package, version, &release); + pkgstr = av[2]; + + parse_package(pkgstr, package, version, &release); if (release != -1) { /* all three */ sprintf(sql, "%s where package = '%s' and version = " @@ -114,15 +121,8 @@ int main(int ac, char **av){ sprintf(sql, "%s %s;", select, group); } - /* install a collation function */ - zpm_addvercmp(&pkg); - /* sqlite seems to need the columns in the result to - * do the sort right */ -// zpm_exec(&pkg, "select package, version, release, package||'-'||version||'-'||release as pkgid from packages order by package, version collate vercmp, cast(release as integer)", prow, stdout, &errmsg); -// fprintf(stdout, "\n"); - zpm_exec(&pkg, sql, prow, stdout, &errmsg); } zpm_close(&pkg); - return 0; + return found ? 0 : 1; }