]> pd.if.org Git - zpackage/blob - lib/script_hash.c
c559e877dfbcaa3d72e3a6d0bedc9b983551764a
[zpackage] / lib / script_hash.c
1 #include <stdarg.h>
2 #include <stdlib.h>
3 #include <string.h>
4
5 #include "sqlite3.h"
6 #include "zpm.h"
7
8 int zpm_script_hash(struct zpm *zpm, char *pkgstr, char *phase, char *hash) {
9         char *pkgid = 0;
10         char *template = "select hash from scripts_pkgid where pkgid = %Q and phase = %Q";
11         sqlite3_stmt *st;
12
13         pkgid = zpm_findpkg(zpm, pkgstr);
14
15         st = zpm_dbquery(zpm, template, pkgid, phase);
16         free(pkgid);
17
18         if (!st) {
19                 return 0;
20         }
21
22         switch (sqlite3_step(st)) {
23                 case SQLITE_ROW:
24                         strncpy(hash, (const char *) sqlite3_column_text(st, 0),
25                                         ZPM_HASH_STRLEN);
26                         hash[ZPM_HASH_STRLEN] = 0;
27                         break;
28                 default: zpm->error = 1; /* fall through */
29                 case SQLITE_DONE:
30                         sqlite3_finalize(st);
31                         return 0; break; /* not found */
32         }
33
34         sqlite3_finalize(st);
35         return 1;
36 }