diff options
| author | Marin Ivanov <[email protected]> | 2024-04-12 15:31:43 +0300 |
|---|---|---|
| committer | Marin Ivanov <[email protected]> | 2024-04-12 15:31:43 +0300 |
| commit | 94d4455ca13c611d7700e5836ff4082a15216388 (patch) | |
| tree | 8cfa08170e548b5de3c99b3cdb7a5a7270be5b81 | |
| parent | af6c1274c233cffdc27df5cbaf29fbafb92ba5bb (diff) | |
add buffered reading and writing
| -rw-r--r-- | go.mod | 5 | ||||
| -rw-r--r-- | go.sum | 2 | ||||
| -rw-r--r-- | main.go | 13 |
3 files changed, 16 insertions, 4 deletions
@@ -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 +) @@ -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= @@ -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 |
