From 94d4455ca13c611d7700e5836ff4082a15216388 Mon Sep 17 00:00:00 2001 From: Marin Ivanov Date: Fri, 12 Apr 2024 15:31:43 +0300 Subject: add buffered reading and writing --- go.mod | 5 ++++- go.sum | 2 ++ main.go | 13 ++++++++++--- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 5bf475a..11123b7 100644 --- a/go.mod +++ b/go.mod @@ -2,4 +2,7 @@ module go.metala.org/retaart go 1.21.5 -require github.com/spf13/pflag v1.0.5 +require ( + github.com/klauspost/readahead v1.4.0 + github.com/spf13/pflag v1.0.5 +) diff --git a/go.sum b/go.sum index 287f6fa..5c12cd1 100644 --- a/go.sum +++ b/go.sum @@ -1,2 +1,4 @@ +github.com/klauspost/readahead v1.4.0 h1:w4hQ3BpdLjBnRQkZyNi+nwdHU7eGP9buTexWK9lU7gY= +github.com/klauspost/readahead v1.4.0/go.mod h1:7bolpMKhT5LKskLwYXGSDOyA2TYtMFgdgV0Y8gy7QhA= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= diff --git a/main.go b/main.go index f65b88d..89dba8d 100644 --- a/main.go +++ b/main.go @@ -2,11 +2,13 @@ package main import ( "archive/tar" + "bufio" "io" "log" "os" "path" + "github.com/klauspost/readahead" flag "github.com/spf13/pflag" ) @@ -32,14 +34,19 @@ func main() { } func process(params processParams, logger *Logger) error { - tr := tar.NewReader(os.Stdin) - tw := tar.NewWriter(os.Stdout) + in := readahead.NewReader(os.Stdin) + defer in.Close() + out := bufio.NewWriter(os.Stdout) + defer out.Flush() + + tr := tar.NewReader(in) + tw := tar.NewWriter(out) defer tw.Close() for { hdr, err := tr.Next() if err == io.EOF { if params.concatenate { - tr = tar.NewReader(os.Stdin) + tr = tar.NewReader(in) hdr, err = tr.Next() if err == io.EOF { break -- cgit v1.2.3