Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
if (!cookie)
return -1;
+ // Do not read when mode is "w"
+ if (cookie->mode == 'w')
+ return 0;
+
// Return nothing after we are done
if (cookie->done)
return 0;
}
FILE* pakfire_xzfopen(FILE* f, const char* mode) {
+ if (!f) {
+ errno = EBADFD;
+ return NULL;
+ }
+
+ if (!mode) {
+ errno = EINVAL;
+ return NULL;
+ }
+
struct xz_cookie cookie = {
.f = f,
+ .mode = *mode,
.stream = LZMA_STREAM_INIT,
.done = 0,
};
.close = xz_close,
};
- return fopencookie(&cookie, "rb", functions);
+ return fopencookie(&cookie, mode, functions);
}