X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=lib%2Fforeach_path.c;h=ec6e07ed77866dd9984d5dc0180e806b1b19810b;hb=43308b3c6fba1bcb7f4b10e67736cd981ed23540;hp=4afc122e1d4370861a3bde8cbf34bd2c5036640c;hpb=b515d621f8cad499bd83a7df919079b2e47dcb09;p=zpackage diff --git a/lib/foreach_path.c b/lib/foreach_path.c index 4afc122..ec6e07e 100644 --- a/lib/foreach_path.c +++ b/lib/foreach_path.c @@ -18,7 +18,7 @@ void *data, char **errmsg) { if (!zpm || zpm->error || !callback) return 0; s = sqlite3_str_new(zpm->db); - sqlite3_str_appendall(s, "select * from packagefiles_pkgid where "); + sqlite3_str_appendall(s, "select * from packagefiles_status where "); if (where) { sqlite3_str_appendf(s, "%s", where); @@ -30,6 +30,38 @@ void *data, char **errmsg) { sqlite3_str_appendf(s, " and printf('%%s-%%s-%%s', package, version, release) = %Q", pkgid); } + 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) {