github.com/endocode/docker@v1.4.2-0.20160113120958-46eb4700391e/pkg/directory/directory_windows.go (about)

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