1 #define _POSIX_C_SOURCE 200809L
10 int zpm_script_set(struct zpm *zpm, char *pkgstr, char *phase, char *hash) {
14 char *insert = "insert into scripts (package,version,release,stage,hash) values (%Q,%Q,%d,%Q,%Q) on conflict (package,version,release,stage) do update set hash = excluded.hash ";
15 char *delete = "delete from scripts where package = ? and version = ? and release = ? and stage = ?";
17 if (!zpm || !zpm->db || !phase) {
21 if (zpm_parse_package(pkgstr, package, version, &release)) {
23 zpm_db_run(zpm, insert, package, version, release, phase, hash);
25 zpm_db_run(zpm, delete, package, version, release, phase);
33 int zpm_script_hash(struct zpm *zpm, char *pkgstr, char *phase, char *hash) {
35 char *template = "select hash from scripts_pkgid where pkgid = %Q and stage = %Q";
38 pkgid = zpm_findpkg(zpm, pkgstr);
40 st = zpm_dbquery(zpm, template, pkgid, phase);
46 zpm->errmsg = strdup(sqlite3_errmsg(zpm->db));
50 switch (sqlite3_step(st)) {
52 strncpy(hash, (const char *) sqlite3_column_text(st, 0),
54 hash[ZPM_HASH_STRLEN] = 0;
56 default: zpm->error = 1; /* fall through */
57 zpm->errmsg = strdup(sqlite3_errmsg(zpm->db));
60 return 0; break; /* not found */