From: Nathan Wagner Date: Fri, 3 Mar 2017 11:48:59 +0000 (-0600) Subject: treat - as stdout for zpm-extract X-Git-Tag: v0.1.6~148 X-Git-Url: https://pd.if.org/git/?p=zpackage;a=commitdiff_plain;h=0715d7b43a936dfe6696676fd6852b3f84c9eac4 treat - as stdout for zpm-extract --- diff --git a/lib/zpm.c b/lib/zpm.c index 9d62ad7..99984fb 100644 --- a/lib/zpm.c +++ b/lib/zpm.c @@ -434,12 +434,16 @@ int zpm_extract(struct zpm *pkg, char *hash, char *path, int mode) { xzdata = (void *)sqlite3_column_blob(ifile, 1); blobsize = sqlite3_column_bytes(ifile, 1); - out = fopen(path, "w"); + if (strcmp(path, "-")) { + out = fopen(path, "w"); + } else { + out = stdout; + } if (!out) { fprintf(stderr, "can't open output file %s\n", path); sqlite3_finalize(ifile); sqlite3_close(db); - return 5; + return 0; } //fwrite(xzdata, blobsize, 1, stdout); @@ -449,8 +453,7 @@ int zpm_extract(struct zpm *pkg, char *hash, char *path, int mode) { sqlite3_finalize(ifile); - return 0; - + return 1; } /* flags 0, close mmap, flags 1, return mmap fd */ diff --git a/t/extract.t b/t/extract.t index 17b2faa..52a01d3 100755 --- a/t/extract.t +++ b/t/extract.t @@ -4,7 +4,7 @@ . tap.sh -plan 4 +plan 5 PF=test.db @@ -25,6 +25,9 @@ okexit extract foo file content sha=$(zpm-hash test.foo2) okstreq $hash $sha extracted hash matches +sha=$(zpm-extract $PF $hash - | zpm-hash) +okstreq $hash $sha stdout extract hash matches + finish rm -f test.* diff --git a/zpm-extract.c b/zpm-extract.c index e050bf2..76528ab 100644 --- a/zpm-extract.c +++ b/zpm-extract.c @@ -13,14 +13,16 @@ int main(int ac, char **av){ struct zpm pkg; int mode = 0644; + int rv; if (ac < 3) { fprintf(stderr, "usage: db hash file\n"); return 1; } zpm_open(&pkg, av[1]); - zpm_extract(&pkg, av[2], av[3], mode); + rv = zpm_extract(&pkg, av[2], av[3], mode); zpm_close(&pkg); + return rv ? 0 : 1; } #else