]> pd.if.org Git - zpackage/blobdiff - lib/foreach_path.c
add foreach_path to zpm library
[zpackage] / lib / foreach_path.c
diff --git a/lib/foreach_path.c b/lib/foreach_path.c
new file mode 100644 (file)
index 0000000..271ee8c
--- /dev/null
@@ -0,0 +1,36 @@
+#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;
+}