- /* this is really just read env */
- zpm_readopts(&pkg, ac, av);
-
- /* given a package name, get the packages */
- /* no package name, get all */
-
- if (zpm_open(&pkg, av[1])) {
- char *errmsg;
-// char where[1024] = "";
-
- /* TODO allow more args to nail down version and release */
- if (ac >= 3) {
- int release;
- char version[32];
- char package[32];
-
- parse_package(av[2], package, version, &release);
- if (release != -1) {
- /* all three */
- sprintf(sql, "%s where package = '%s' and version = "
- "'%s' and release = %d %s;", select,
- package, version, release, group);
- } else if (*version != 0) {
- sprintf(sql, "%s where package = '%s' and version = "
- "'%s' %s;", select,
- package, version, group);
-
- } else {
-
- sprintf(sql, "%s where package = '%s' %s;",
- select, av[2], group);
- }
- } else {
- sprintf(sql, "%s %s;", select, group);
+ if (includes) {
+ sqlite3_str_appendf(query, "status in (%s)", includes+1);
+ }
+ if (excludes) {
+ sqlite3_str_appendf(query, "%sstatus not in (%s)",
+ includes ? " and " : "",
+ excludes+1);
+ }
+
+ if (ac >= argn) {
+ pkgstr = av[argn];