From 8ea717e6a9ed1f5347463f494428f18f95c34816 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Motiejus=20Jak=C5=A1tys?= Date: Mon, 24 May 2021 00:11:58 +0300 Subject: [PATCH] handle stream closing better --- internal/cmdrootfs/cmdrootfs.go | 19 +++++++++++-------- internal/cmdrootfs/cmdrootfs_test.go | 1 - 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/internal/cmdrootfs/cmdrootfs.go b/internal/cmdrootfs/cmdrootfs.go index 5c560f2..4b39424 100644 --- a/internal/cmdrootfs/cmdrootfs.go +++ b/internal/cmdrootfs/cmdrootfs.go @@ -40,23 +40,26 @@ func (c *Command) Execute(args []string) (err error) { } defer func() { err = multierr.Append(err, rd.Close()) }() - var out io.WriteCloser - outf := string(c.PositionalArgs.Outfile) - if outf == "-" { - out = os.Stdout + var out io.Writer + var outf *os.File + if fname := string(c.PositionalArgs.Outfile); fname == "-" { + outf = os.Stdout } else { - out, err = os.Create(outf) + outf, err = os.Create(fname) if err != nil { return err } } - defer func() { err = multierr.Append(err, out.Close()) }() + out = outf + defer func() { err = multierr.Append(err, outf.Close()) }() if c.Xz { - if out, err = xz.NewWriter(out); err != nil { + outz, err := xz.NewWriter(out) + if err != nil { return err } - defer func() { err = multierr.Append(err, out.Close()) }() + defer func() { err = multierr.Append(err, outz.Close()) }() + out = outz } if _, err := c.rootfsNew(rd).WriteTo(out); err != nil { diff --git a/internal/cmdrootfs/cmdrootfs_test.go b/internal/cmdrootfs/cmdrootfs_test.go index bcebe32..903be9f 100644 --- a/internal/cmdrootfs/cmdrootfs_test.go +++ b/internal/cmdrootfs/cmdrootfs_test.go @@ -3,5 +3,4 @@ package cmdrootfs import "testing" func TestExecute(t *testing.T) { - }