type ConfirmedDir … // NewTmpConfirmedDir returns a temporary dir, else error. // The directory is cleaned, no symlinks, etc. so it's // returned as a ConfirmedDir. func NewTmpConfirmedDir() (ConfirmedDir, error) { … } // HasPrefix returns true if the directory argument // is a prefix of self (d) from the point of view of // a file system. // // I.e., it's true if the argument equals or contains // self (d) in a file path sense. // // HasPrefix emulates the semantics of strings.HasPrefix // such that the following are true: // // strings.HasPrefix("foobar", "foobar") // strings.HasPrefix("foobar", "foo") // strings.HasPrefix("foobar", "") // // d := fSys.ConfirmDir("/foo/bar") // d.HasPrefix("/foo/bar") // d.HasPrefix("/foo") // d.HasPrefix("/") // // Not contacting a file system here to check for // actual path existence. // // This is tested on linux, but will have trouble // on other operating systems. // TODO(monopole) Refactor when #golang/go/18358 closes. // See also: // https://github.com/golang/go/issues/18358 // https://github.com/golang/dep/issues/296 // https://github.com/golang/dep/blob/master/internal/fs/fs.go#L33 // https://codereview.appspot.com/5712045 func (d ConfirmedDir) HasPrefix(path ConfirmedDir) bool { … } func (d ConfirmedDir) Join(path string) string { … } func (d ConfirmedDir) String() string { … }