bool "xzcat"
default n
help
- usage: xzcat < file.xz
+ usage: xzcat [filename...]
- Read xz-compressed file from stdin and write decompressed file to stdout.
+ Decompress listed files to stdout. Use stdin if no files listed.
*/
#define FOR_xzcat
static uint8_t in[BUFSIZ];
static uint8_t out[BUFSIZ];
-void xzcat_main(void)
+void do_xzcat(int fd, char *name)
{
struct xz_buf b;
struct xz_dec *s;
for (;;) {
if (b.in_pos == b.in_size) {
- b.in_size = fread(in, 1, sizeof(in), stdin);
+ b.in_size = read(fd, in, sizeof(in));
b.in_pos = 0;
}
if (ret == XZ_UNSUPPORTED_CHECK)
continue;
- if (fwrite(out, 1, b.out_pos, stdout) != b.out_pos
- || fclose(stdout)) {
+ if (fwrite(out, 1, b.out_pos, stdout) != b.out_pos) {
msg = "Write error\n";
goto error;
}
error_exit("%s", msg);
}
+void xzcat_main(void)
+{
+ loopfiles(toys.optargs, do_xzcat);
+}
+
// BEGIN xz_private.h