X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=zpm-packagehash.c;h=534f6ad7de7b4eb4d958f48a6436ccb0a25d2587;hb=30aa9bfe1e9a0e682f7c942b8e68054551f14857;hp=b1587801a1a5bed5254c8b1d6b59c2edb474a40b;hpb=5774fe14b7203c06873e29d13c9520c9a32321cb;p=zpackage diff --git a/zpm-packagehash.c b/zpm-packagehash.c index b158780..534f6ad 100644 --- a/zpm-packagehash.c +++ b/zpm-packagehash.c @@ -4,6 +4,7 @@ #include #include #include +#include #include "zpm.h" @@ -19,16 +20,20 @@ int main(int ac, char **av){ char *dbfile; int set = 0; + int check = 0; + int quiet = 0; dbfile = getenv("ZPMDB"); if (!dbfile) { dbfile = "/var/lib/zpm/local.db"; } - while ((opt = getopt(ac, av, "f:s")) != -1) { + while ((opt = getopt(ac, av, "f:scq")) != -1) { switch (opt) { case 'f': dbfile = optarg; break; case 's': set = 1; break; + case 'c': check = 1; break; + case 'q': quiet = 1; break; default: usage(); exit(EXIT_FAILURE); @@ -46,14 +51,22 @@ int main(int ac, char **av){ char hash[ZPM_HASH_STRLEN+1]; if (zpm_open(&pkg, dbfile)) { - if (set) { + if (check) { + found = zpm_package_hash(&pkg, pkgid, hash); + char *ehash = zpm_db_string(&pkg, "select hash from packages_pkgid where pkgid = %Q", pkgid); + if (ehash && found && !strcmp(ehash, hash)) { + found = 1; + } else { + found = 0; + } + } else if (set) { found = zpm_package_sethash(&pkg, pkgid, hash); } else { found = zpm_package_hash(&pkg, pkgid, hash); } } zpm_close(&pkg); - if (found) { + if (found && !quiet) { printf("%s\n", hash); } return found ? 0 : 1;