#include "zpm.h"
+static int found = 0;
+
static int prow(void *f, int ncols, char **vals, char **cols) {
FILE *out = f;
int i;
fprintf(out, "%s", vals[i]);
}
fprintf(out, "\n");
+ found++;
return 0;
}
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";
return 1;
}
+ 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 = "
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;
}