X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=lib%2Fzpm.c;h=644dc9729e05ad28682e43e984101d426dd4af2f;hb=343423780e984fd9188b55b688190decda19f94c;hp=9bd973246b9f0f01e2594e211e9d8bc1af9e90d8;hpb=b2a626cb29d4eb583353d8b6ba569e31e76619e5;p=zpackage diff --git a/lib/zpm.c b/lib/zpm.c index 9bd9732..644dc97 100644 --- a/lib/zpm.c +++ b/lib/zpm.c @@ -447,14 +447,14 @@ int zpm_addvercmp(struct zpm *pkg) { ); } -int zpm_extract(struct zpm *pkg, char *hash, char *path, int mode) { +int zpm_extract(struct zpm *pkg, char *hash, char *path, mode_t mode) { int rc; int blobsize; //int64_t size; void *xzdata; int type; - FILE *out; + int out; sqlite3_stmt *ifile; /* TODO check null */ @@ -507,22 +507,21 @@ int zpm_extract(struct zpm *pkg, char *hash, char *path, int mode) { blobsize = sqlite3_column_bytes(ifile, 1); if (strcmp(path, "-")) { - out = fopen(path, "w"); + out = open(path, O_CREAT|O_WRONLY|O_TRUNC, 0600); } else { - out = stdout; + out = 1; } - if (!out) { + if (out == -1) { fprintf(stderr, "can't open output file %s: %s\n", path, strerror(errno)); sqlite3_finalize(ifile); sqlite3_close(db); return 0; } - //fwrite(xzdata, blobsize, 1, stdout); //fprintf(stderr, "uncompressing %d bytes at %p, expect %lld\n", blobsize, xzdata, (long long int)size); uncompresslzma(xzdata, blobsize, out); - fclose(out); + close(out); chmod(path, mode); sqlite3_finalize(ifile);