+#define _POSIX_C_SOURCE 2
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+
+#include <string.h>
+
+#include "sqlite3.h"
+#include "zpm.h"
+
+int zpm_foreach_path(struct zpm *zpm, char *pkgid,
+int (*callback)(void *f, int ncols, char **vals, char **cols),
+void *data, char **errmsg) {
+
+ char *files = "select * from packagefiles where"
+ " printf('%%s-%%s-%%s', package, version, release) = %Q"
+ " order by path"
+ ;
+
+ char *sql;
+
+ sql = sqlite3_mprintf(files, pkgid);
+ if (!sql) {
+ return 0;
+ zpm->error = 1;
+ }
+
+ zpm_exec(zpm, sql, callback, data, errmsg);
+ if (errmsg) {
+ zpm->error = 2;
+ return 0;
+ }
+
+ return 1;
+}