]> pd.if.org Git - zpackage/blobdiff - lib/script_hash.c
combined runscript and setscript
[zpackage] / lib / script_hash.c
index 60c87ede8eb4e1b23ab107f40f93de479d0f01bd..2185f77cae20a4dc22ac6ce5f06bf2cda0fac4fe 100644 (file)
@@ -7,6 +7,29 @@
 #include "sqlite3.h"
 #include "zpm.h"
 
+int zpm_script_set(struct zpm *zpm, char *pkgstr, char *phase, char *hash) {
+       char package[64];
+       char version[32];
+       int release;
+       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 ";
+       char *delete =  "delete from scripts where package = ? and version = ? and release = ? and stage = ?";
+
+       if (!zpm || !zpm->db || !phase) {
+               return 0;
+       }
+
+       if (zpm_parse_package(pkgstr, package, version, &release)) {
+               if (hash) {
+                       zpm_db_run(zpm, insert, package, version, release, phase, hash);
+               } else {
+                       zpm_db_run(zpm, delete, package, version, release, phase);
+
+               }
+       }
+
+       return !zpm->error;
+}
+
 int zpm_script_hash(struct zpm *zpm, char *pkgstr, char *phase, char *hash) {
        char *pkgid = 0;
        char *template = "select hash from scripts_pkgid where pkgid = %Q and stage = %Q";