]> pd.if.org Git - zpackage/blob - zpm-findpkg.c
fix warnings and includes to compile on linux
[zpackage] / zpm-findpkg.c
1 #include <stdlib.h>
2 #include <stdio.h>
3 #include "zpm.h"
4
5 static int prow(void *f, int ncols, char **vals, char **cols) {
6         FILE *out = f;
7         int i;
8
9         if (cols == 0) {
10                 fprintf(stderr, "sqlite can't get column names\n");
11         }
12         for (i=3;i<ncols;i++) {
13                 if (i>3) fprintf(out, "\t");
14                 fprintf(out, "%s", vals[i]);
15         }
16         fprintf(out, "\n");
17         return 0;
18 }
19
20 int main(int ac, char **av){
21         struct zpm pkg;
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";
24
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)";
27         char sql[2048];
28
29         if (ac < 2) {
30                 fprintf(stderr, "usage: db path\n");
31                 return 1;
32         }
33
34         /* this is really just read env */
35         zpm_readopts(&pkg, ac, av);
36
37         /* given a package name, get the packages */
38         /* no package name, get all */
39
40         if (zpm_open(&pkg, av[1])) {
41                 char *errmsg;
42 //              char where[1024] = "";
43
44                 /* TODO allow more args to nail down version and release */
45                 if (ac >= 3) {
46                         sprintf(sql, "%s where package = '%s' %s;",
47                                         select, av[2], group);
48                 } else {
49                         sprintf(sql, "%s %s;", select, group);
50                 }
51
52                 /* install a collation function */
53                 zpm_addvercmp(&pkg);
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");  
58
59                 zpm_exec(&pkg, sql, prow, stdout, &errmsg);
60         }
61         zpm_close(&pkg);
62         return 0;
63 }