5 static int prow(void *f, int ncols, char **vals, char **cols) {
10 fprintf(stderr, "sqlite can't get column names\n");
12 for (i=3;i<ncols;i++) {
13 if (i>3) fprintf(out, "\t");
14 fprintf(out, "%s", vals[i]);
20 int main(int ac, char **av){
22 char *select = "select package, version, release, package||'-'||version||'-'||release as pkgid from packages";
23 char *group = "group by package having max( version||'-'||release collate vercmp) order by length(package), package, version||'-'||release collate vercmp";
25 // char *select = "select package, version, release, package||'-'||version||'-'||release as pkgid from packages";
26 // char *order = "order by package, version collate vercmp, cast(release as integer)";
30 fprintf(stderr, "usage: db path\n");
34 /* this is really just read env */
35 zpm_readopts(&pkg, ac, av);
37 /* given a package name, get the packages */
38 /* no package name, get all */
40 if (zpm_open(&pkg, av[1])) {
42 // char where[1024] = "";
44 /* TODO allow more args to nail down version and release */
46 sprintf(sql, "%s where package = '%s' %s;",
47 select, av[2], group);
49 sprintf(sql, "%s %s;", select, group);
52 /* install a collation function */
54 /* sqlite seems to need the columns in the result to
55 * do the sort right */
56 // 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);
57 // fprintf(stdout, "\n");
59 zpm_exec(&pkg, sql, prow, stdout, &errmsg);