X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=lib%2Fscript_hash.c;fp=lib%2Fscript_hash.c;h=d4f03fafbff9f4940d645cdf2033e8ce0e25e4a0;hb=7fa585701657aa1969f2116e71bfcb18c00ca7f0;hp=0000000000000000000000000000000000000000;hpb=8d423d4cd180fb22b7c4fbfe21079e30ff7154df;p=zpackage diff --git a/lib/script_hash.c b/lib/script_hash.c new file mode 100644 index 0000000..d4f03fa --- /dev/null +++ b/lib/script_hash.c @@ -0,0 +1,36 @@ +#include +#include +#include + +#include "sqlite3.h" +#include "zpm.h" + +int zpm_script_hash(struct zpm *zpm, char *pkgstr, char *phase, char *hash) { + char *pkgid; + char *template = "select hash from scripts_pkgid where pkgid = %q and phase = %q"; + sqlite3_stmt *st; + + pkgid = zpm_findpkg(zpm, pkgstr); + + st = zpm_dbquery(zpm, template, pkgid, phase); + free(pkgid); + + if (!st) { + return 0; + } + + switch (sqlite3_step(st)) { + case SQLITE_ROW: + strncpy(hash, (const char *) sqlite3_column_text(st, 0), + ZPM_HASH_STRLEN); + hash[ZPM_HASH_STRLEN] = 0; + break; + default: zpm->error = 1; /* fall through */ + case SQLITE_DONE: + sqlite3_finalize(st); + return 0; break; /* not found */ + } + + sqlite3_finalize(st); + return 1; +}