X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=zpm-packagehash.c;fp=zpm-packagehash.c;h=b1587801a1a5bed5254c8b1d6b59c2edb474a40b;hb=5774fe14b7203c06873e29d13c9520c9a32321cb;hp=0000000000000000000000000000000000000000;hpb=cb9584394f5d9becfbfc140a79bf83836325add2;p=zpackage diff --git a/zpm-packagehash.c b/zpm-packagehash.c new file mode 100644 index 0000000..b158780 --- /dev/null +++ b/zpm-packagehash.c @@ -0,0 +1,60 @@ +#define _POSIX_C_SOURCE 2 + +#include +#include +#include +#include + +#include "zpm.h" + +static int found = 0; + +void usage(void) { + fprintf(stderr, "zpm-findpkg [-I] [-s ...] [-S ] [package]\n"); +} + +int main(int ac, char **av){ + int opt; + struct zpm pkg; + char *dbfile; + + int set = 0; + + dbfile = getenv("ZPMDB"); + if (!dbfile) { + dbfile = "/var/lib/zpm/local.db"; + } + + while ((opt = getopt(ac, av, "f:s")) != -1) { + switch (opt) { + case 'f': dbfile = optarg; break; + case 's': set = 1; break; + default: + usage(); + exit(EXIT_FAILURE); + break; + } + } + int argn = optind; + + if (!dbfile) { + fprintf(stderr, "must specify db\n"); + return 1; + } + + char *pkgid = av[argn]; + char hash[ZPM_HASH_STRLEN+1]; + + if (zpm_open(&pkg, dbfile)) { + if (set) { + found = zpm_package_sethash(&pkg, pkgid, hash); + } else { + found = zpm_package_hash(&pkg, pkgid, hash); + } + } + zpm_close(&pkg); + if (found) { + printf("%s\n", hash); + } + return found ? 0 : 1; +}