github.com/mheon/docker@v0.11.2-0.20150922122814-44f47903a831/pkg/directory/directory_windows.go (about)

     1  // +build windows
     2  
     3  package directory
     4  
     5  import (
     6  	"os"
     7  	"path/filepath"
     8  	"strings"
     9  
    10  	"github.com/docker/docker/pkg/longpath"
    11  )
    12  
    13  // Size walks a directory tree and returns its total size in bytes.
    14  func Size(dir string) (size int64, err error) {
    15  	fixedPath, err := filepath.Abs(dir)
    16  	if err != nil {
    17  		return
    18  	}
    19  	fixedPath = longpath.AddPrefix(fixedPath)
    20  	err = filepath.Walk(dir, func(d string, fileInfo os.FileInfo, e error) error {
    21  		// Ignore directory sizes
    22  		if fileInfo == nil {
    23  			return nil
    24  		}
    25  
    26  		s := fileInfo.Size()
    27  		if fileInfo.IsDir() || s == 0 {
    28  			return nil
    29  		}
    30  
    31  		size += s
    32  
    33  		return nil
    34  	})
    35  	return
    36  }