aboutsummaryrefslogtreecommitdiffstats
path: root/storage
diff options
context:
space:
mode:
authorSantiago M. Mola <santi@mola.io>2017-07-19 12:59:16 +0200
committerSantiago M. Mola <santi@mola.io>2017-07-19 14:48:46 +0200
commit87888eaab1caa52b6b073f610508e0f65b4141f6 (patch)
tree1ddaa824f7baa26350aa50607877d4bf9e207f13 /storage
parentebc25df06ce7d11afe88339af7bb097926599b7d (diff)
downloadgo-git-87888eaab1caa52b6b073f610508e0f65b4141f6.tar.gz
storage/filesystem: check all Close errors
Diffstat (limited to 'storage')
-rw-r--r--storage/filesystem/config.go11
-rw-r--r--storage/filesystem/index.go11
-rw-r--r--storage/filesystem/internal/dotgit/dotgit.go8
-rw-r--r--storage/filesystem/object.go21
-rw-r--r--storage/filesystem/shallow.go5
5 files changed, 32 insertions, 24 deletions
diff --git a/storage/filesystem/config.go b/storage/filesystem/config.go
index cad698a..a2cc173 100644
--- a/storage/filesystem/config.go
+++ b/storage/filesystem/config.go
@@ -1,11 +1,12 @@
package filesystem
import (
- "io/ioutil"
+ stdioutil "io/ioutil"
"os"
"gopkg.in/src-d/go-git.v4/config"
"gopkg.in/src-d/go-git.v4/storage/filesystem/internal/dotgit"
+ "gopkg.in/src-d/go-git.v4/utils/ioutil"
)
type ConfigStorage struct {
@@ -24,9 +25,9 @@ func (c *ConfigStorage) Config() (*config.Config, error) {
return nil, err
}
- defer f.Close()
+ defer ioutil.CheckClose(f, &err)
- b, err := ioutil.ReadAll(f)
+ b, err := stdioutil.ReadAll(f)
if err != nil {
return nil, err
}
@@ -35,7 +36,7 @@ func (c *ConfigStorage) Config() (*config.Config, error) {
return nil, err
}
- return cfg, nil
+ return cfg, err
}
func (c *ConfigStorage) SetConfig(cfg *config.Config) error {
@@ -48,7 +49,7 @@ func (c *ConfigStorage) SetConfig(cfg *config.Config) error {
return err
}
- defer f.Close()
+ defer ioutil.CheckClose(f, &err)
b, err := cfg.Marshal()
if err != nil {
diff --git a/storage/filesystem/index.go b/storage/filesystem/index.go
index 456ef0b..14ab09a 100644
--- a/storage/filesystem/index.go
+++ b/storage/filesystem/index.go
@@ -5,6 +5,7 @@ import (
"gopkg.in/src-d/go-git.v4/plumbing/format/index"
"gopkg.in/src-d/go-git.v4/storage/filesystem/internal/dotgit"
+ "gopkg.in/src-d/go-git.v4/utils/ioutil"
)
type IndexStorage struct {
@@ -17,10 +18,11 @@ func (s *IndexStorage) SetIndex(idx *index.Index) error {
return err
}
- defer f.Close()
+ defer ioutil.CheckClose(f, &err)
e := index.NewEncoder(f)
- return e.Encode(idx)
+ err = e.Encode(idx)
+ return err
}
func (s *IndexStorage) Index() (*index.Index, error) {
@@ -37,8 +39,9 @@ func (s *IndexStorage) Index() (*index.Index, error) {
return nil, err
}
- defer f.Close()
+ defer ioutil.CheckClose(f, &err)
d := index.NewDecoder(f)
- return idx, d.Decode(idx)
+ err = d.Decode(idx)
+ return idx, err
}
diff --git a/storage/filesystem/internal/dotgit/dotgit.go b/storage/filesystem/internal/dotgit/dotgit.go
index f3a2308..9bbf4e8 100644
--- a/storage/filesystem/internal/dotgit/dotgit.go
+++ b/storage/filesystem/internal/dotgit/dotgit.go
@@ -253,10 +253,10 @@ func (d *DotGit) SetRef(r *plumbing.Reference) error {
return err
}
- if _, err := f.Write([]byte(content)); err != nil {
- return err
- }
- return f.Close()
+ defer ioutil.CheckClose(f, &err)
+
+ _, err = f.Write([]byte(content))
+ return err
}
// Refs scans the git directory collecting references, which it returns.
diff --git a/storage/filesystem/object.go b/storage/filesystem/object.go
index dc88108..8bf84f2 100644
--- a/storage/filesystem/object.go
+++ b/storage/filesystem/object.go
@@ -11,6 +11,7 @@ import (
"gopkg.in/src-d/go-git.v4/plumbing/storer"
"gopkg.in/src-d/go-git.v4/storage/filesystem/internal/dotgit"
"gopkg.in/src-d/go-git.v4/storage/memory"
+ "gopkg.in/src-d/go-git.v4/utils/ioutil"
"gopkg.in/src-d/go-billy.v3"
)
@@ -53,10 +54,11 @@ func (s *ObjectStorage) loadIdxFile(h plumbing.Hash) error {
if err != nil {
return err
}
- defer idxfile.Close()
+ defer ioutil.CheckClose(idxfile, &err)
s.index[h] = make(idx)
- return s.index[h].Decode(idxfile)
+ err = s.index[h].Decode(idxfile)
+ return err
}
func (s *ObjectStorage) NewEncodedObject() plumbing.EncodedObject {
@@ -94,14 +96,14 @@ func (s *ObjectStorage) SetEncodedObject(o plumbing.EncodedObject) (plumbing.Has
return plumbing.ZeroHash, err
}
- defer ow.Close()
+ defer ioutil.CheckClose(ow, &err)
or, err := o.Reader()
if err != nil {
return plumbing.ZeroHash, err
}
- defer or.Close()
+ defer ioutil.CheckClose(or, &err)
if err := ow.WriteHeader(o.Type(), o.Size()); err != nil {
return plumbing.ZeroHash, err
@@ -111,7 +113,7 @@ func (s *ObjectStorage) SetEncodedObject(o plumbing.EncodedObject) (plumbing.Has
return plumbing.ZeroHash, err
}
- return o.Hash(), nil
+ return o.Hash(), err
}
// EncodedObject returns the object with the given hash, by searching for it in
@@ -143,7 +145,7 @@ func (s *ObjectStorage) getFromUnpacked(h plumbing.Hash) (obj plumbing.EncodedOb
return nil, err
}
- defer f.Close()
+ defer ioutil.CheckClose(f, &err)
obj = s.NewEncodedObject()
r, err := objfile.NewReader(f)
@@ -151,7 +153,7 @@ func (s *ObjectStorage) getFromUnpacked(h plumbing.Hash) (obj plumbing.EncodedOb
return nil, err
}
- defer r.Close()
+ defer ioutil.CheckClose(r, &err)
t, size, err := r.Header()
if err != nil {
@@ -186,7 +188,7 @@ func (s *ObjectStorage) getFromPackfile(h plumbing.Hash) (plumbing.EncodedObject
return nil, err
}
- defer f.Close()
+ defer ioutil.CheckClose(f, &err)
p := packfile.NewScanner(f)
d, err := packfile.NewDecoder(p, memory.NewStorage())
@@ -195,7 +197,8 @@ func (s *ObjectStorage) getFromPackfile(h plumbing.Hash) (plumbing.EncodedObject
}
d.SetOffsets(s.index[pack])
- return d.DecodeObjectAt(offset)
+ obj, err := d.DecodeObjectAt(offset)
+ return obj, err
}
func (s *ObjectStorage) findObjectInPackfile(h plumbing.Hash) (plumbing.Hash, int64) {
diff --git a/storage/filesystem/shallow.go b/storage/filesystem/shallow.go
index 107818c..394e6ed 100644
--- a/storage/filesystem/shallow.go
+++ b/storage/filesystem/shallow.go
@@ -6,6 +6,7 @@ import (
"gopkg.in/src-d/go-git.v4/plumbing"
"gopkg.in/src-d/go-git.v4/storage/filesystem/internal/dotgit"
+ "gopkg.in/src-d/go-git.v4/utils/ioutil"
)
// ShallowStorage where the shallow commits are stored, an internal to
@@ -23,14 +24,14 @@ func (s *ShallowStorage) SetShallow(commits []plumbing.Hash) error {
return err
}
- defer f.Close()
+ defer ioutil.CheckClose(f, &err)
for _, h := range commits {
if _, err := fmt.Fprintf(f, "%s\n", h); err != err {
return err
}
}
- return nil
+ return err
}
// Shallow return the shallow commits reading from shallo file from .git