]> pd.if.org Git - zpackage/blobdiff - lib/foreach_path.c
add where clause argument to findpkg
[zpackage] / lib / foreach_path.c
index 4afc122e1d4370861a3bde8cbf34bd2c5036640c..561e24f089b1674e88de4991b2a8e1ddd919f213 100644 (file)
@@ -31,6 +31,39 @@ void *data, char **errmsg) {
        }
 
 
+       sql = sqlite3_str_value(s);
+       if (!sql) {
+               sqlite3_str_finish(s);
+               zpm->error = 1;
+               return 0;
+       }
+
+       zpm_exec(zpm, sql, callback, data, errmsg);
+       sqlite3_str_finish(s);
+       if (*errmsg) {
+               fprintf(stderr, "errmsg: %s\n", *errmsg);
+               zpm->error = 2;
+               return 0;
+       }
+
+       return 1;
+}
+
+int zpm_foreach_package(struct zpm *zpm, char *where,
+int (*callback)(void *cbdata, int ncols, char **vals, char **cols),
+void *data, char **errmsg) {
+       char *sql;
+       sqlite3_str *s;
+
+       if (!zpm || zpm->error || !callback) return 0;
+
+       s = sqlite3_str_new(zpm->db);
+       sqlite3_str_appendall(s, "select * from packages_pkgid");
+
+       if (where) {
+               sqlite3_str_appendf(s, " where %s", where);
+       }
+
        sql = sqlite3_str_value(s);
        if (!sql) {
                sqlite3_str_finish(s);