@cryptotaxi247 / kubo / commits / b45e82418

Use filepath.Walk to compute serialfile total size

License: MIT Signed-off-by: rht <rhtbot@gmail.com>

rht committed Aug 31, 2015 at 09:53 UTC b45e82418b9bb4b02d0c612786ff307632a079e2
1 file changed +9 -24
commands/files/serialfile.go
+9 -24
@@ -126,31 +126,16 @@ func (f *serialFile) Stat() os.FileInfo {
126 }
127
128 func (f *serialFile) Size() (int64, error) {
129 - return size(f.stat, f.FileName())
130 -}
131 -
132 -func size(stat os.FileInfo, filename string) (int64, error) {
133 - if !stat.IsDir() {
134 - return stat.Size(), nil
129 + if !f.stat.IsDir() {
130 + return f.stat.Size(), nil
131 }
132
137 - file, err := os.Open(filename)
138 - if err != nil {
139 - return 0, err
140 - }
141 - files, err := file.Readdir(0)
142 - if err != nil {
143 - return 0, err
144 - }
145 - file.Close()
146 -
147 - var output int64
148 - for _, child := range files {
149 - s, err := size(child, fp.Join(filename, child.Name()))
150 - if err != nil {
151 - return 0, err
133 + var du int64
134 + err := fp.Walk(f.FileName(), func(p string, fi os.FileInfo, err error) error {
135 + if fi != nil && fi.Mode()&(os.ModeSymlink|os.ModeNamedPipe) == 0 {
136 + du += fi.Size()
137 }
153 - output += s
154 - }
155 - return output, nil
138 + return nil
139 + })
140 + return du, err
141 }