Skip to content

Commit

Permalink
explicit Close() error handling
Browse files Browse the repository at this point in the history
Signed-off-by: Santiago M. Mola <santi@mola.io>
  • Loading branch information
smola committed Jul 18, 2018
1 parent a2bec54 commit e0126da
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 11 deletions.
18 changes: 9 additions & 9 deletions PublicGitArchive/pga/cmd/cache.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,20 +52,26 @@ func copy(ctx context.Context, source, dest FileSystem,
if err != nil {
return fmt.Errorf("could not create %s: %v", dest.Abs(destName), err)
}
defer checkClose(dest.Abs(destName), wc, &err)

rc, err := source.Open(sourceName)
if err != nil {
_ = wc.Close()
return err
}
defer checkClose(source.Abs(sourceName), rc, &err)

if _, err = cancelableCopy(ctx, wc, rc); err != nil {
_ = rc.Close()
_ = wc.Close()
return fmt.Errorf("could not copy %s to %s: %v",
source.Abs(sourceName), dest.Abs(destName), err)
}

return err
if err := rc.Close(); err != nil {
_ = wc.Close()
return err
}

return wc.Close()
}

const copyBufferSize = 512 * 1024
Expand Down Expand Up @@ -143,9 +149,3 @@ func getIndex(ctx context.Context) (io.ReadCloser, error) {
}
return gzip.NewReader(f)
}

func checkClose(name string, c io.Closer, err *error) {
if cerr := c.Close(); cerr != nil && *err == nil {
*err = fmt.Errorf("could not close %s: %v", name, cerr)
}
}
9 changes: 7 additions & 2 deletions PublicGitArchive/pga/cmd/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,27 +24,30 @@ var listCmd = &cobra.Command{
if err != nil {
return fmt.Errorf("could not open index file: %v", err)
}
defer checkClose("index", f, &err)

index, err := pga.IndexFromCSV(f)
if err != nil {
_ = f.Close()
return err
}

filter, err := filterFromFlags(cmd.Flags())
if err != nil {
_ = f.Close()
return err
}

formatter, err := formatterFromFlags(cmd.Flags())
if err != nil {
_ = f.Close()
return err
}

index = pga.WithFilter(index, filter)
for {
select {
case <-ctx.Done():
_ = f.Close()
return fmt.Errorf("command canceled")
default:
}
Expand All @@ -53,6 +56,7 @@ var listCmd = &cobra.Command{
if err == io.EOF {
break
} else if err != nil {
_ = f.Close()
return err
}

Expand All @@ -62,7 +66,8 @@ var listCmd = &cobra.Command{
fmt.Print(s)
}
}
return err

return f.Close()
},
}

Expand Down

0 comments on commit e0126da

Please sign in to comment.